From c00ba79178c971af9b32e9ef1430046264383da9 Mon Sep 17 00:00:00 2001 From: "planetrenox@protonmail.com" Date: Sat, 24 Oct 2026 03:10:04 +0000 Subject: [PATCH] Add 150 UI and page state stickers in three pending sections 404s, loaders, success, errors, empty states, confirmation, under construction, offline and more: 50 monochrome (ui), 50 colored (uicolor) and 50 with an anime girl (uianime), on /test until approved. Co-Authored-By: Claude Opus 5.5 --- gen/ui/403/door.js | 31 +++++++++++ gen/ui/404/hole.js | 46 ++++++++++++++++ gen/ui/404/magnifier.js | 37 +++++++++++++ gen/ui/404/signpost.js | 20 +++++++ gen/ui/404/tumbleweed.js | 32 +++++++++++ gen/ui/500/server.js | 20 +++++++ gen/ui/bell/quiet.js | 22 ++++++++ gen/ui/box/empty.js | 33 ++++++++++++ gen/ui/buffering/video.js | 13 +++++ gen/ui/calendar/empty.js | 23 ++++++++ gen/ui/cart/empty.js | 25 +++++++++ gen/ui/chat/crickets.js | 26 +++++++++ gen/ui/comingsoon/curtain.js | 29 ++++++++++ gen/ui/confirmed/handshake.js | 21 ++++++++ gen/ui/construction/cone.js | 21 ++++++++ gen/ui/construction/crane.js | 45 ++++++++++++++++ gen/ui/crash/browser.js | 31 +++++++++++ gen/ui/deleted/shredder.js | 32 +++++++++++ gen/ui/done/checklist.js | 24 +++++++++ gen/ui/download/tray.js | 23 ++++++++ gen/ui/error/bug.js | 26 +++++++++ gen/ui/error/cross.js | 13 +++++ gen/ui/error/robot.js | 34 ++++++++++++ gen/ui/folder/empty.js | 36 +++++++++++++ gen/ui/inbox/empty.js | 26 +++++++++ gen/ui/loading/bar.js | 15 ++++++ gen/ui/loading/blocks.js | 18 +++++++ gen/ui/loading/dots.js | 12 +++++ gen/ui/loading/orbit.js | 20 +++++++ gen/ui/loading/pulse.js | 12 +++++ gen/ui/loading/ring.js | 8 +++ gen/ui/loading/skeleton.js | 13 +++++ gen/ui/maintenance/wrench.js | 26 +++++++++ gen/ui/offline/plug.js | 34 ++++++++++++ gen/ui/offline/wifi.js | 20 +++++++ gen/ui/payment/card.js | 35 ++++++++++++ gen/ui/saved/floppy.js | 26 +++++++++ gen/ui/search/none.js | 27 ++++++++++ gen/ui/sent/plane.js | 23 ++++++++ gen/ui/signal/none.js | 21 ++++++++ gen/ui/success/confetti.js | 35 ++++++++++++ gen/ui/success/stamp.js | 24 +++++++++ gen/ui/sync/arrows.js | 16 ++++++ gen/ui/thanks/card.js | 28 ++++++++++ gen/ui/timeout/stopwatch.js | 19 +++++++ gen/ui/typing/bubble.js | 13 +++++ gen/ui/upload/cloud.js | 25 +++++++++ gen/ui/verified/badge.js | 25 +++++++++ gen/ui/warning/sign.js | 14 +++++ gen/ui/wishlist/empty.js | 11 ++++ gen/uianime/403/batsu.js | 47 +++++++++++++++++ gen/uianime/404/flashlight.js | 50 ++++++++++++++++++ gen/uianime/404/lost.js | 69 ++++++++++++++++++++++++ gen/uianime/404/peek.js | 42 +++++++++++++++ gen/uianime/404/shrug.js | 54 +++++++++++++++++++ gen/uianime/500/fix.js | 64 ++++++++++++++++++++++ gen/uianime/box/hide.js | 53 +++++++++++++++++++ gen/uianime/buffering/stare.js | 38 ++++++++++++++ gen/uianime/calendar/free.js | 53 +++++++++++++++++++ gen/uianime/cart/sigh.js | 55 +++++++++++++++++++ gen/uianime/comingsoon/shh.js | 53 +++++++++++++++++++ gen/uianime/construction/hardhat.js | 60 +++++++++++++++++++++ gen/uianime/construction/paint.js | 59 +++++++++++++++++++++ gen/uianime/download/catch.js | 61 +++++++++++++++++++++ gen/uianime/error/cry.js | 44 ++++++++++++++++ gen/uianime/error/smoke.js | 39 ++++++++++++++ gen/uianime/error/tehe.js | 51 ++++++++++++++++++ gen/uianime/folder/dust.js | 48 +++++++++++++++++ gen/uianime/loading/fishing.js | 56 ++++++++++++++++++++ gen/uianime/loading/pray.js | 37 +++++++++++++ gen/uianime/loading/push.js | 47 +++++++++++++++++ gen/uianime/loading/run.js | 57 ++++++++++++++++++++ gen/uianime/loading/sleepy.js | 32 +++++++++++ gen/uianime/loading/tea.js | 41 +++++++++++++++ gen/uianime/loading/wait.js | 61 +++++++++++++++++++++ gen/uianime/locked/key.js | 56 ++++++++++++++++++++ gen/uianime/logout/wave.js | 57 ++++++++++++++++++++ gen/uianime/mailbox/check.js | 73 ++++++++++++++++++++++++++ gen/uianime/maintenance/mechanic.js | 67 +++++++++++++++++++++++ gen/uianime/offline/antenna.js | 56 ++++++++++++++++++++ gen/uianime/offline/cable.js | 64 ++++++++++++++++++++++ gen/uianime/order/delivery.js | 65 +++++++++++++++++++++++ gen/uianime/payment/tap.js | 63 ++++++++++++++++++++++ gen/uianime/phone/waiting.js | 56 ++++++++++++++++++++ gen/uianime/plate/empty.js | 72 +++++++++++++++++++++++++ gen/uianime/refresh/pull.js | 59 +++++++++++++++++++++ gen/uianime/saved/hug.js | 49 +++++++++++++++++ gen/uianime/search/magnifier.js | 60 +++++++++++++++++++++ gen/uianime/sent/wave.js | 64 ++++++++++++++++++++++ gen/uianime/success/jump.js | 45 ++++++++++++++++ gen/uianime/success/thumbs.js | 44 ++++++++++++++++ gen/uianime/success/victory.js | 48 +++++++++++++++++ gen/uianime/sync/juggle.js | 52 ++++++++++++++++++ gen/uianime/thanks/heart.js | 47 +++++++++++++++++ gen/uianime/timeout/asleep.js | 47 +++++++++++++++++ gen/uianime/typing/chat.js | 58 ++++++++++++++++++++ gen/uianime/upload/toss.js | 64 ++++++++++++++++++++++ gen/uianime/wallet/shake.js | 55 +++++++++++++++++++ gen/uianime/warning/whistle.js | 57 ++++++++++++++++++++ gen/uianime/welcome/bow.js | 52 ++++++++++++++++++ gen/uicolor/403/stop.js | 24 +++++++++ gen/uicolor/404/ghost.js | 30 +++++++++++ gen/uicolor/404/map.js | 31 +++++++++++ gen/uicolor/404/space.js | 27 ++++++++++ gen/uicolor/404/ufo.js | 32 +++++++++++ gen/uicolor/500/fire.js | 35 ++++++++++++ gen/uicolor/achievement/star.js | 31 +++++++++++ gen/uicolor/battery/low.js | 24 +++++++++ gen/uicolor/cart/sad.js | 34 ++++++++++++ gen/uicolor/comingsoon/oven.js | 35 ++++++++++++ gen/uicolor/construction/barrier.js | 35 ++++++++++++ gen/uicolor/construction/excavator.js | 48 +++++++++++++++++ gen/uicolor/copied/clipboard.js | 29 ++++++++++ gen/uicolor/coupon/scissors.js | 23 ++++++++ gen/uicolor/download/parachute.js | 29 ++++++++++ gen/uicolor/error/cloud.js | 27 ++++++++++ gen/uicolor/error/cookie.js | 38 ++++++++++++++ gen/uicolor/error/glitch.js | 36 +++++++++++++ gen/uicolor/expired/milk.js | 35 ++++++++++++ gen/uicolor/failed/balloon.js | 37 +++++++++++++ gen/uicolor/favorites/empty.js | 13 +++++ gen/uicolor/fridge/empty.js | 38 ++++++++++++++ gen/uicolor/inbox/zero.js | 29 ++++++++++ gen/uicolor/jar/empty.js | 26 +++++++++ gen/uicolor/loading/candy.js | 31 +++++++++++ gen/uicolor/loading/cat.js | 26 +++++++++ gen/uicolor/loading/coffee.js | 33 ++++++++++++ gen/uicolor/loading/gummies.js | 24 +++++++++ gen/uicolor/loading/microwave.js | 39 ++++++++++++++ gen/uicolor/loading/pinwheel.js | 21 ++++++++ gen/uicolor/loading/pizza.js | 29 ++++++++++ gen/uicolor/loading/rainbow.js | 25 +++++++++ gen/uicolor/loading/snail.js | 39 ++++++++++++++ gen/uicolor/locked/vault.js | 41 +++++++++++++++ gen/uicolor/mailbox/empty.js | 44 ++++++++++++++++ gen/uicolor/maintenance/robot.js | 43 +++++++++++++++ gen/uicolor/offline/satellite.js | 31 +++++++++++ gen/uicolor/order/shipped.js | 41 +++++++++++++++ gen/uicolor/payment/coins.js | 33 ++++++++++++ gen/uicolor/search/sad.js | 24 +++++++++ gen/uicolor/sent/envelope.js | 21 ++++++++ gen/uicolor/success/balloons.js | 31 +++++++++++ gen/uicolor/success/check.js | 25 +++++++++ gen/uicolor/success/medal.js | 27 ++++++++++ gen/uicolor/sync/phones.js | 37 +++++++++++++ gen/uicolor/trash/empty.js | 30 +++++++++++ gen/uicolor/upload/rocket.js | 35 ++++++++++++ gen/uicolor/wallet/moth.js | 36 +++++++++++++ gen/uicolor/warning/siren.js | 25 +++++++++ gen/uicolor/welcome/door.js | 34 ++++++++++++ public/403/batsu.gif | Bin 0 -> 112835 bytes public/403/batsu.webp | Bin 0 -> 136216 bytes public/403/door.gif | Bin 0 -> 91366 bytes public/403/door.webp | Bin 0 -> 69678 bytes public/403/stop.gif | Bin 0 -> 123109 bytes public/403/stop.webp | Bin 0 -> 141636 bytes public/404/flashlight.gif | Bin 0 -> 59315 bytes public/404/flashlight.webp | Bin 0 -> 58482 bytes public/404/ghost.gif | Bin 0 -> 121876 bytes public/404/ghost.webp | Bin 0 -> 85270 bytes public/404/hole.gif | Bin 0 -> 117652 bytes public/404/hole.webp | Bin 0 -> 69150 bytes public/404/lost.gif | Bin 0 -> 94856 bytes public/404/lost.webp | Bin 0 -> 108752 bytes public/404/magnifier.gif | Bin 0 -> 145342 bytes public/404/magnifier.webp | Bin 0 -> 128040 bytes public/404/map.gif | Bin 0 -> 70437 bytes public/404/map.webp | Bin 0 -> 98290 bytes public/404/peek.gif | Bin 0 -> 72409 bytes public/404/peek.webp | Bin 0 -> 50278 bytes public/404/shrug.gif | Bin 0 -> 81528 bytes public/404/shrug.webp | Bin 0 -> 109442 bytes public/404/signpost.gif | Bin 0 -> 86340 bytes public/404/signpost.webp | Bin 0 -> 61850 bytes public/404/space.gif | Bin 0 -> 99502 bytes public/404/space.webp | Bin 0 -> 134598 bytes public/404/tumbleweed.gif | Bin 0 -> 130316 bytes public/404/tumbleweed.webp | Bin 0 -> 61432 bytes public/404/ufo.gif | Bin 0 -> 108278 bytes public/404/ufo.webp | Bin 0 -> 124364 bytes public/500/fire.gif | Bin 0 -> 121775 bytes public/500/fire.webp | Bin 0 -> 81018 bytes public/500/fix.gif | Bin 0 -> 106127 bytes public/500/fix.webp | Bin 0 -> 115184 bytes public/500/server.gif | Bin 0 -> 67018 bytes public/500/server.webp | Bin 0 -> 45054 bytes public/achievement/star.gif | Bin 0 -> 121265 bytes public/achievement/star.webp | Bin 0 -> 127196 bytes public/battery/low.gif | Bin 0 -> 120669 bytes public/battery/low.webp | Bin 0 -> 128218 bytes public/bell/quiet.gif | Bin 0 -> 86147 bytes public/bell/quiet.webp | Bin 0 -> 97166 bytes public/box/empty.gif | Bin 0 -> 63162 bytes public/box/empty.webp | Bin 0 -> 49910 bytes public/box/hide.gif | Bin 0 -> 53654 bytes public/box/hide.webp | Bin 0 -> 46232 bytes public/buffering/stare.gif | Bin 0 -> 109807 bytes public/buffering/stare.webp | Bin 0 -> 62146 bytes public/buffering/video.gif | Bin 0 -> 19816 bytes public/buffering/video.webp | Bin 0 -> 16478 bytes public/calendar/empty.gif | Bin 0 -> 52225 bytes public/calendar/empty.webp | Bin 0 -> 16430 bytes public/calendar/free.gif | Bin 0 -> 90810 bytes public/calendar/free.webp | Bin 0 -> 126016 bytes public/cart/empty.gif | Bin 0 -> 87487 bytes public/cart/empty.webp | Bin 0 -> 100244 bytes public/cart/sad.gif | Bin 0 -> 109907 bytes public/cart/sad.webp | Bin 0 -> 133362 bytes public/cart/sigh.gif | Bin 0 -> 134476 bytes public/cart/sigh.webp | Bin 0 -> 108236 bytes public/chat/crickets.gif | Bin 0 -> 119614 bytes public/chat/crickets.webp | Bin 0 -> 115660 bytes public/comingsoon/curtain.gif | Bin 0 -> 113021 bytes public/comingsoon/curtain.webp | Bin 0 -> 92708 bytes public/comingsoon/oven.gif | Bin 0 -> 72199 bytes public/comingsoon/oven.webp | Bin 0 -> 78456 bytes public/comingsoon/shh.gif | Bin 0 -> 137417 bytes public/comingsoon/shh.webp | Bin 0 -> 130522 bytes public/confirmed/handshake.gif | Bin 0 -> 77605 bytes public/confirmed/handshake.webp | Bin 0 -> 92096 bytes public/construction/barrier.gif | Bin 0 -> 79667 bytes public/construction/barrier.webp | Bin 0 -> 53410 bytes public/construction/cone.gif | Bin 0 -> 89037 bytes public/construction/cone.webp | Bin 0 -> 62030 bytes public/construction/crane.gif | Bin 0 -> 158242 bytes public/construction/crane.webp | Bin 0 -> 38586 bytes public/construction/excavator.gif | Bin 0 -> 147585 bytes public/construction/excavator.webp | Bin 0 -> 147170 bytes public/construction/hardhat.gif | Bin 0 -> 154973 bytes public/construction/hardhat.webp | Bin 0 -> 95220 bytes public/construction/paint.gif | Bin 0 -> 151178 bytes public/construction/paint.webp | Bin 0 -> 91602 bytes public/copied/clipboard.gif | Bin 0 -> 120660 bytes public/copied/clipboard.webp | Bin 0 -> 80860 bytes public/coupon/scissors.gif | Bin 0 -> 174846 bytes public/coupon/scissors.webp | Bin 0 -> 152148 bytes public/crash/browser.gif | Bin 0 -> 117820 bytes public/crash/browser.webp | Bin 0 -> 114086 bytes public/deleted/shredder.gif | Bin 0 -> 55603 bytes public/deleted/shredder.webp | Bin 0 -> 35116 bytes public/done/checklist.gif | Bin 0 -> 35118 bytes public/done/checklist.webp | Bin 0 -> 22324 bytes public/download/catch.gif | Bin 0 -> 104881 bytes public/download/catch.webp | Bin 0 -> 115398 bytes public/download/parachute.gif | Bin 0 -> 90178 bytes public/download/parachute.webp | Bin 0 -> 125600 bytes public/download/tray.gif | Bin 0 -> 38485 bytes public/download/tray.webp | Bin 0 -> 25344 bytes public/error/bug.gif | Bin 0 -> 78422 bytes public/error/bug.webp | Bin 0 -> 52372 bytes public/error/cloud.gif | Bin 0 -> 81668 bytes public/error/cloud.webp | Bin 0 -> 117678 bytes public/error/cookie.gif | Bin 0 -> 128457 bytes public/error/cookie.webp | Bin 0 -> 149718 bytes public/error/cross.gif | Bin 0 -> 72343 bytes public/error/cross.webp | Bin 0 -> 76592 bytes public/error/cry.gif | Bin 0 -> 78791 bytes public/error/cry.webp | Bin 0 -> 113196 bytes public/error/glitch.gif | Bin 0 -> 95861 bytes public/error/glitch.webp | Bin 0 -> 91754 bytes public/error/robot.gif | Bin 0 -> 91129 bytes public/error/robot.webp | Bin 0 -> 89716 bytes public/error/smoke.gif | Bin 0 -> 131277 bytes public/error/smoke.webp | Bin 0 -> 124384 bytes public/error/tehe.gif | Bin 0 -> 88501 bytes public/error/tehe.webp | Bin 0 -> 117196 bytes public/expired/milk.gif | Bin 0 -> 99974 bytes public/expired/milk.webp | Bin 0 -> 148550 bytes public/failed/balloon.gif | Bin 0 -> 77576 bytes public/failed/balloon.webp | Bin 0 -> 93882 bytes public/favorites/empty.gif | Bin 0 -> 81998 bytes public/favorites/empty.webp | Bin 0 -> 139748 bytes public/folder/dust.gif | Bin 0 -> 112314 bytes public/folder/dust.webp | Bin 0 -> 111710 bytes public/folder/empty.gif | Bin 0 -> 89065 bytes public/folder/empty.webp | Bin 0 -> 35936 bytes public/fridge/empty.gif | Bin 0 -> 78253 bytes public/fridge/empty.webp | Bin 0 -> 39892 bytes public/inbox/empty.gif | Bin 0 -> 70834 bytes public/inbox/empty.webp | Bin 0 -> 36978 bytes public/inbox/zero.gif | Bin 0 -> 112048 bytes public/inbox/zero.webp | Bin 0 -> 145760 bytes public/jar/empty.gif | Bin 0 -> 92431 bytes public/jar/empty.webp | Bin 0 -> 101592 bytes public/loading/bar.gif | Bin 0 -> 16896 bytes public/loading/bar.webp | Bin 0 -> 10210 bytes public/loading/blocks.gif | Bin 0 -> 23511 bytes public/loading/blocks.webp | Bin 0 -> 15994 bytes public/loading/candy.gif | Bin 0 -> 116980 bytes public/loading/candy.webp | Bin 0 -> 118690 bytes public/loading/cat.gif | Bin 0 -> 92481 bytes public/loading/cat.webp | Bin 0 -> 130046 bytes public/loading/coffee.gif | Bin 0 -> 44062 bytes public/loading/coffee.webp | Bin 0 -> 31644 bytes public/loading/dots.gif | Bin 0 -> 46071 bytes public/loading/dots.webp | Bin 0 -> 45328 bytes public/loading/fishing.gif | Bin 0 -> 179154 bytes public/loading/fishing.webp | Bin 0 -> 118410 bytes public/loading/gummies.gif | Bin 0 -> 129933 bytes public/loading/gummies.webp | Bin 0 -> 131924 bytes public/loading/microwave.gif | Bin 0 -> 36992 bytes public/loading/microwave.webp | Bin 0 -> 44288 bytes public/loading/orbit.gif | Bin 0 -> 115014 bytes public/loading/orbit.webp | Bin 0 -> 101620 bytes public/loading/pinwheel.gif | Bin 0 -> 86564 bytes public/loading/pinwheel.webp | Bin 0 -> 126852 bytes public/loading/pizza.gif | Bin 0 -> 113609 bytes public/loading/pizza.webp | Bin 0 -> 116988 bytes public/loading/pray.gif | Bin 0 -> 124400 bytes public/loading/pray.webp | Bin 0 -> 129838 bytes public/loading/pulse.gif | Bin 0 -> 51999 bytes public/loading/pulse.webp | Bin 0 -> 105908 bytes public/loading/push.gif | Bin 0 -> 108979 bytes public/loading/push.webp | Bin 0 -> 135240 bytes public/loading/rainbow.gif | Bin 0 -> 83972 bytes public/loading/rainbow.webp | Bin 0 -> 66428 bytes public/loading/ring.gif | Bin 0 -> 73862 bytes public/loading/ring.webp | Bin 0 -> 94958 bytes public/loading/run.gif | Bin 0 -> 105000 bytes public/loading/run.webp | Bin 0 -> 134322 bytes public/loading/skeleton.gif | Bin 0 -> 52988 bytes public/loading/skeleton.webp | Bin 0 -> 31532 bytes public/loading/sleepy.gif | Bin 0 -> 126892 bytes public/loading/sleepy.webp | Bin 0 -> 125322 bytes public/loading/snail.gif | Bin 0 -> 129499 bytes public/loading/snail.webp | Bin 0 -> 145428 bytes public/loading/tea.gif | Bin 0 -> 50603 bytes public/loading/tea.webp | Bin 0 -> 59160 bytes public/loading/wait.gif | Bin 0 -> 115652 bytes public/loading/wait.webp | Bin 0 -> 81440 bytes public/locked/key.gif | Bin 0 -> 112144 bytes public/locked/key.webp | Bin 0 -> 92812 bytes public/locked/vault.gif | Bin 0 -> 59312 bytes public/locked/vault.webp | Bin 0 -> 80112 bytes public/logout/wave.gif | Bin 0 -> 170265 bytes public/logout/wave.webp | Bin 0 -> 80560 bytes public/mailbox/check.gif | Bin 0 -> 146114 bytes public/mailbox/check.webp | Bin 0 -> 153076 bytes public/mailbox/empty.gif | Bin 0 -> 123049 bytes public/mailbox/empty.webp | Bin 0 -> 113338 bytes public/maintenance/mechanic.gif | Bin 0 -> 139997 bytes public/maintenance/mechanic.webp | Bin 0 -> 175846 bytes public/maintenance/robot.gif | Bin 0 -> 132638 bytes public/maintenance/robot.webp | Bin 0 -> 129454 bytes public/maintenance/wrench.gif | Bin 0 -> 115634 bytes public/maintenance/wrench.webp | Bin 0 -> 120926 bytes public/offline/antenna.gif | Bin 0 -> 129661 bytes public/offline/antenna.webp | Bin 0 -> 154186 bytes public/offline/cable.gif | Bin 0 -> 141490 bytes public/offline/cable.webp | Bin 0 -> 141610 bytes public/offline/plug.gif | Bin 0 -> 106405 bytes public/offline/plug.webp | Bin 0 -> 75590 bytes public/offline/satellite.gif | Bin 0 -> 99512 bytes public/offline/satellite.webp | Bin 0 -> 133252 bytes public/offline/wifi.gif | Bin 0 -> 67649 bytes public/offline/wifi.webp | Bin 0 -> 62638 bytes public/order/delivery.gif | Bin 0 -> 122690 bytes public/order/delivery.webp | Bin 0 -> 50110 bytes public/order/shipped.gif | Bin 0 -> 100627 bytes public/order/shipped.webp | Bin 0 -> 83942 bytes public/payment/card.gif | Bin 0 -> 56095 bytes public/payment/card.webp | Bin 0 -> 14696 bytes public/payment/coins.gif | Bin 0 -> 116889 bytes public/payment/coins.webp | Bin 0 -> 125946 bytes public/payment/tap.gif | Bin 0 -> 178108 bytes public/payment/tap.webp | Bin 0 -> 94470 bytes public/phone/waiting.gif | Bin 0 -> 83577 bytes public/phone/waiting.webp | Bin 0 -> 92660 bytes public/plate/empty.gif | Bin 0 -> 131737 bytes public/plate/empty.webp | Bin 0 -> 135802 bytes public/refresh/pull.gif | Bin 0 -> 116895 bytes public/refresh/pull.webp | Bin 0 -> 152464 bytes public/saved/floppy.gif | Bin 0 -> 57223 bytes public/saved/floppy.webp | Bin 0 -> 28666 bytes public/saved/hug.gif | Bin 0 -> 165838 bytes public/saved/hug.webp | Bin 0 -> 150764 bytes public/search/magnifier.gif | Bin 0 -> 148378 bytes public/search/magnifier.webp | Bin 0 -> 149306 bytes public/search/none.gif | Bin 0 -> 105478 bytes public/search/none.webp | Bin 0 -> 109938 bytes public/search/sad.gif | Bin 0 -> 94016 bytes public/search/sad.webp | Bin 0 -> 142888 bytes public/sent/envelope.gif | Bin 0 -> 79358 bytes public/sent/envelope.webp | Bin 0 -> 109470 bytes public/sent/plane.gif | Bin 0 -> 36292 bytes public/sent/plane.webp | Bin 0 -> 49704 bytes public/sent/wave.gif | Bin 0 -> 167994 bytes public/sent/wave.webp | Bin 0 -> 127092 bytes public/signal/none.gif | Bin 0 -> 14681 bytes public/signal/none.webp | Bin 0 -> 9470 bytes public/success/balloons.gif | Bin 0 -> 97908 bytes public/success/balloons.webp | Bin 0 -> 152340 bytes public/success/check.gif | Bin 0 -> 95601 bytes public/success/check.webp | Bin 0 -> 123556 bytes public/success/confetti.gif | Bin 0 -> 103474 bytes public/success/confetti.webp | Bin 0 -> 125228 bytes public/success/jump.gif | Bin 0 -> 91512 bytes public/success/jump.webp | Bin 0 -> 153238 bytes public/success/medal.gif | Bin 0 -> 104584 bytes public/success/medal.webp | Bin 0 -> 141074 bytes public/success/stamp.gif | Bin 0 -> 74947 bytes public/success/stamp.webp | Bin 0 -> 48918 bytes public/success/thumbs.gif | Bin 0 -> 66496 bytes public/success/thumbs.webp | Bin 0 -> 54704 bytes public/success/victory.gif | Bin 0 -> 116014 bytes public/success/victory.webp | Bin 0 -> 138880 bytes public/sync/arrows.gif | Bin 0 -> 77837 bytes public/sync/arrows.webp | Bin 0 -> 103160 bytes public/sync/juggle.gif | Bin 0 -> 94281 bytes public/sync/juggle.webp | Bin 0 -> 150590 bytes public/sync/phones.gif | Bin 0 -> 179334 bytes public/sync/phones.webp | Bin 0 -> 116734 bytes public/thanks/card.gif | Bin 0 -> 57753 bytes public/thanks/card.webp | Bin 0 -> 32336 bytes public/thanks/heart.gif | Bin 0 -> 127897 bytes public/thanks/heart.webp | Bin 0 -> 147800 bytes public/timeout/asleep.gif | Bin 0 -> 118268 bytes public/timeout/asleep.webp | Bin 0 -> 130580 bytes public/timeout/stopwatch.gif | Bin 0 -> 78737 bytes public/timeout/stopwatch.webp | Bin 0 -> 86866 bytes public/trash/empty.gif | Bin 0 -> 99284 bytes public/trash/empty.webp | Bin 0 -> 123730 bytes public/typing/bubble.gif | Bin 0 -> 47997 bytes public/typing/bubble.webp | Bin 0 -> 44748 bytes public/typing/chat.gif | Bin 0 -> 78652 bytes public/typing/chat.webp | Bin 0 -> 133254 bytes public/upload/cloud.gif | Bin 0 -> 55330 bytes public/upload/cloud.webp | Bin 0 -> 42850 bytes public/upload/rocket.gif | Bin 0 -> 99574 bytes public/upload/rocket.webp | Bin 0 -> 143184 bytes public/upload/toss.gif | Bin 0 -> 106802 bytes public/upload/toss.webp | Bin 0 -> 74666 bytes public/verified/badge.gif | Bin 0 -> 129671 bytes public/verified/badge.webp | Bin 0 -> 140550 bytes public/wallet/moth.gif | Bin 0 -> 111806 bytes public/wallet/moth.webp | Bin 0 -> 62680 bytes public/wallet/shake.gif | Bin 0 -> 130205 bytes public/wallet/shake.webp | Bin 0 -> 139386 bytes public/warning/sign.gif | Bin 0 -> 85533 bytes public/warning/sign.webp | Bin 0 -> 89936 bytes public/warning/siren.gif | Bin 0 -> 89413 bytes public/warning/siren.webp | Bin 0 -> 56500 bytes public/warning/whistle.gif | Bin 0 -> 97960 bytes public/warning/whistle.webp | Bin 0 -> 67528 bytes public/welcome/bow.gif | Bin 0 -> 120829 bytes public/welcome/bow.webp | Bin 0 -> 148324 bytes public/welcome/door.gif | Bin 0 -> 133719 bytes public/welcome/door.webp | Bin 0 -> 112580 bytes public/wishlist/empty.gif | Bin 0 -> 60020 bytes public/wishlist/empty.webp | Bin 0 -> 86596 bytes 450 files changed, 5481 insertions(+) create mode 100644 gen/ui/403/door.js create mode 100644 gen/ui/404/hole.js create mode 100644 gen/ui/404/magnifier.js create mode 100644 gen/ui/404/signpost.js create mode 100644 gen/ui/404/tumbleweed.js create mode 100644 gen/ui/500/server.js create mode 100644 gen/ui/bell/quiet.js create mode 100644 gen/ui/box/empty.js create mode 100644 gen/ui/buffering/video.js create mode 100644 gen/ui/calendar/empty.js create mode 100644 gen/ui/cart/empty.js create mode 100644 gen/ui/chat/crickets.js create mode 100644 gen/ui/comingsoon/curtain.js create mode 100644 gen/ui/confirmed/handshake.js create mode 100644 gen/ui/construction/cone.js create mode 100644 gen/ui/construction/crane.js create mode 100644 gen/ui/crash/browser.js create mode 100644 gen/ui/deleted/shredder.js create mode 100644 gen/ui/done/checklist.js create mode 100644 gen/ui/download/tray.js create mode 100644 gen/ui/error/bug.js create mode 100644 gen/ui/error/cross.js create mode 100644 gen/ui/error/robot.js create mode 100644 gen/ui/folder/empty.js create mode 100644 gen/ui/inbox/empty.js create mode 100644 gen/ui/loading/bar.js create mode 100644 gen/ui/loading/blocks.js create mode 100644 gen/ui/loading/dots.js create mode 100644 gen/ui/loading/orbit.js create mode 100644 gen/ui/loading/pulse.js create mode 100644 gen/ui/loading/ring.js create mode 100644 gen/ui/loading/skeleton.js create mode 100644 gen/ui/maintenance/wrench.js create mode 100644 gen/ui/offline/plug.js create mode 100644 gen/ui/offline/wifi.js create mode 100644 gen/ui/payment/card.js create mode 100644 gen/ui/saved/floppy.js create mode 100644 gen/ui/search/none.js create mode 100644 gen/ui/sent/plane.js create mode 100644 gen/ui/signal/none.js create mode 100644 gen/ui/success/confetti.js create mode 100644 gen/ui/success/stamp.js create mode 100644 gen/ui/sync/arrows.js create mode 100644 gen/ui/thanks/card.js create mode 100644 gen/ui/timeout/stopwatch.js create mode 100644 gen/ui/typing/bubble.js create mode 100644 gen/ui/upload/cloud.js create mode 100644 gen/ui/verified/badge.js create mode 100644 gen/ui/warning/sign.js create mode 100644 gen/ui/wishlist/empty.js create mode 100644 gen/uianime/403/batsu.js create mode 100644 gen/uianime/404/flashlight.js create mode 100644 gen/uianime/404/lost.js create mode 100644 gen/uianime/404/peek.js create mode 100644 gen/uianime/404/shrug.js create mode 100644 gen/uianime/500/fix.js create mode 100644 gen/uianime/box/hide.js create mode 100644 gen/uianime/buffering/stare.js create mode 100644 gen/uianime/calendar/free.js create mode 100644 gen/uianime/cart/sigh.js create mode 100644 gen/uianime/comingsoon/shh.js create mode 100644 gen/uianime/construction/hardhat.js create mode 100644 gen/uianime/construction/paint.js create mode 100644 gen/uianime/download/catch.js create mode 100644 gen/uianime/error/cry.js create mode 100644 gen/uianime/error/smoke.js create mode 100644 gen/uianime/error/tehe.js create mode 100644 gen/uianime/folder/dust.js create mode 100644 gen/uianime/loading/fishing.js create mode 100644 gen/uianime/loading/pray.js create mode 100644 gen/uianime/loading/push.js create mode 100644 gen/uianime/loading/run.js create mode 100644 gen/uianime/loading/sleepy.js create mode 100644 gen/uianime/loading/tea.js create mode 100644 gen/uianime/loading/wait.js create mode 100644 gen/uianime/locked/key.js create mode 100644 gen/uianime/logout/wave.js create mode 100644 gen/uianime/mailbox/check.js create mode 100644 gen/uianime/maintenance/mechanic.js create mode 100644 gen/uianime/offline/antenna.js create mode 100644 gen/uianime/offline/cable.js create mode 100644 gen/uianime/order/delivery.js create mode 100644 gen/uianime/payment/tap.js create mode 100644 gen/uianime/phone/waiting.js create mode 100644 gen/uianime/plate/empty.js create mode 100644 gen/uianime/refresh/pull.js create mode 100644 gen/uianime/saved/hug.js create mode 100644 gen/uianime/search/magnifier.js create mode 100644 gen/uianime/sent/wave.js create mode 100644 gen/uianime/success/jump.js create mode 100644 gen/uianime/success/thumbs.js create mode 100644 gen/uianime/success/victory.js create mode 100644 gen/uianime/sync/juggle.js create mode 100644 gen/uianime/thanks/heart.js create mode 100644 gen/uianime/timeout/asleep.js create mode 100644 gen/uianime/typing/chat.js create mode 100644 gen/uianime/upload/toss.js create mode 100644 gen/uianime/wallet/shake.js create mode 100644 gen/uianime/warning/whistle.js create mode 100644 gen/uianime/welcome/bow.js create mode 100644 gen/uicolor/403/stop.js create mode 100644 gen/uicolor/404/ghost.js create mode 100644 gen/uicolor/404/map.js create mode 100644 gen/uicolor/404/space.js create mode 100644 gen/uicolor/404/ufo.js create mode 100644 gen/uicolor/500/fire.js create mode 100644 gen/uicolor/achievement/star.js create mode 100644 gen/uicolor/battery/low.js create mode 100644 gen/uicolor/cart/sad.js create mode 100644 gen/uicolor/comingsoon/oven.js create mode 100644 gen/uicolor/construction/barrier.js create mode 100644 gen/uicolor/construction/excavator.js create mode 100644 gen/uicolor/copied/clipboard.js create mode 100644 gen/uicolor/coupon/scissors.js create mode 100644 gen/uicolor/download/parachute.js create mode 100644 gen/uicolor/error/cloud.js create mode 100644 gen/uicolor/error/cookie.js create mode 100644 gen/uicolor/error/glitch.js create mode 100644 gen/uicolor/expired/milk.js create mode 100644 gen/uicolor/failed/balloon.js create mode 100644 gen/uicolor/favorites/empty.js create mode 100644 gen/uicolor/fridge/empty.js create mode 100644 gen/uicolor/inbox/zero.js create mode 100644 gen/uicolor/jar/empty.js create mode 100644 gen/uicolor/loading/candy.js create mode 100644 gen/uicolor/loading/cat.js create mode 100644 gen/uicolor/loading/coffee.js create mode 100644 gen/uicolor/loading/gummies.js create mode 100644 gen/uicolor/loading/microwave.js create mode 100644 gen/uicolor/loading/pinwheel.js create mode 100644 gen/uicolor/loading/pizza.js create mode 100644 gen/uicolor/loading/rainbow.js create mode 100644 gen/uicolor/loading/snail.js create mode 100644 gen/uicolor/locked/vault.js create mode 100644 gen/uicolor/mailbox/empty.js create mode 100644 gen/uicolor/maintenance/robot.js create mode 100644 gen/uicolor/offline/satellite.js create mode 100644 gen/uicolor/order/shipped.js create mode 100644 gen/uicolor/payment/coins.js create mode 100644 gen/uicolor/search/sad.js create mode 100644 gen/uicolor/sent/envelope.js create mode 100644 gen/uicolor/success/balloons.js create mode 100644 gen/uicolor/success/check.js create mode 100644 gen/uicolor/success/medal.js create mode 100644 gen/uicolor/sync/phones.js create mode 100644 gen/uicolor/trash/empty.js create mode 100644 gen/uicolor/upload/rocket.js create mode 100644 gen/uicolor/wallet/moth.js create mode 100644 gen/uicolor/warning/siren.js create mode 100644 gen/uicolor/welcome/door.js create mode 100644 public/403/batsu.gif create mode 100644 public/403/batsu.webp create mode 100644 public/403/door.gif create mode 100644 public/403/door.webp create mode 100644 public/403/stop.gif create mode 100644 public/403/stop.webp create mode 100644 public/404/flashlight.gif create mode 100644 public/404/flashlight.webp create mode 100644 public/404/ghost.gif create mode 100644 public/404/ghost.webp create mode 100644 public/404/hole.gif create mode 100644 public/404/hole.webp create mode 100644 public/404/lost.gif create mode 100644 public/404/lost.webp create mode 100644 public/404/magnifier.gif create mode 100644 public/404/magnifier.webp create mode 100644 public/404/map.gif create mode 100644 public/404/map.webp create mode 100644 public/404/peek.gif create mode 100644 public/404/peek.webp create mode 100644 public/404/shrug.gif create mode 100644 public/404/shrug.webp create mode 100644 public/404/signpost.gif create mode 100644 public/404/signpost.webp create mode 100644 public/404/space.gif create mode 100644 public/404/space.webp create mode 100644 public/404/tumbleweed.gif create mode 100644 public/404/tumbleweed.webp create mode 100644 public/404/ufo.gif create mode 100644 public/404/ufo.webp create mode 100644 public/500/fire.gif create mode 100644 public/500/fire.webp create mode 100644 public/500/fix.gif create mode 100644 public/500/fix.webp create mode 100644 public/500/server.gif create mode 100644 public/500/server.webp create mode 100644 public/achievement/star.gif create mode 100644 public/achievement/star.webp create mode 100644 public/battery/low.gif create mode 100644 public/battery/low.webp create mode 100644 public/bell/quiet.gif create mode 100644 public/bell/quiet.webp create mode 100644 public/box/empty.gif create mode 100644 public/box/empty.webp create mode 100644 public/box/hide.gif create mode 100644 public/box/hide.webp create mode 100644 public/buffering/stare.gif create mode 100644 public/buffering/stare.webp create mode 100644 public/buffering/video.gif create mode 100644 public/buffering/video.webp create mode 100644 public/calendar/empty.gif create mode 100644 public/calendar/empty.webp create mode 100644 public/calendar/free.gif create mode 100644 public/calendar/free.webp create mode 100644 public/cart/empty.gif create mode 100644 public/cart/empty.webp create mode 100644 public/cart/sad.gif create mode 100644 public/cart/sad.webp create mode 100644 public/cart/sigh.gif create mode 100644 public/cart/sigh.webp create mode 100644 public/chat/crickets.gif create mode 100644 public/chat/crickets.webp create mode 100644 public/comingsoon/curtain.gif create mode 100644 public/comingsoon/curtain.webp create mode 100644 public/comingsoon/oven.gif create mode 100644 public/comingsoon/oven.webp create mode 100644 public/comingsoon/shh.gif create mode 100644 public/comingsoon/shh.webp create mode 100644 public/confirmed/handshake.gif create mode 100644 public/confirmed/handshake.webp create mode 100644 public/construction/barrier.gif create mode 100644 public/construction/barrier.webp create mode 100644 public/construction/cone.gif create mode 100644 public/construction/cone.webp create mode 100644 public/construction/crane.gif create mode 100644 public/construction/crane.webp create mode 100644 public/construction/excavator.gif create mode 100644 public/construction/excavator.webp create mode 100644 public/construction/hardhat.gif create mode 100644 public/construction/hardhat.webp create mode 100644 public/construction/paint.gif create mode 100644 public/construction/paint.webp create mode 100644 public/copied/clipboard.gif create mode 100644 public/copied/clipboard.webp create mode 100644 public/coupon/scissors.gif create mode 100644 public/coupon/scissors.webp create mode 100644 public/crash/browser.gif create mode 100644 public/crash/browser.webp create mode 100644 public/deleted/shredder.gif create mode 100644 public/deleted/shredder.webp create mode 100644 public/done/checklist.gif create mode 100644 public/done/checklist.webp create mode 100644 public/download/catch.gif create mode 100644 public/download/catch.webp create mode 100644 public/download/parachute.gif create mode 100644 public/download/parachute.webp create mode 100644 public/download/tray.gif create mode 100644 public/download/tray.webp create mode 100644 public/error/bug.gif create mode 100644 public/error/bug.webp create mode 100644 public/error/cloud.gif create mode 100644 public/error/cloud.webp create mode 100644 public/error/cookie.gif create mode 100644 public/error/cookie.webp create mode 100644 public/error/cross.gif create mode 100644 public/error/cross.webp create mode 100644 public/error/cry.gif create mode 100644 public/error/cry.webp create mode 100644 public/error/glitch.gif create mode 100644 public/error/glitch.webp create mode 100644 public/error/robot.gif create mode 100644 public/error/robot.webp create mode 100644 public/error/smoke.gif create mode 100644 public/error/smoke.webp create mode 100644 public/error/tehe.gif create mode 100644 public/error/tehe.webp create mode 100644 public/expired/milk.gif create mode 100644 public/expired/milk.webp create mode 100644 public/failed/balloon.gif create mode 100644 public/failed/balloon.webp create mode 100644 public/favorites/empty.gif create mode 100644 public/favorites/empty.webp create mode 100644 public/folder/dust.gif create mode 100644 public/folder/dust.webp create mode 100644 public/folder/empty.gif create mode 100644 public/folder/empty.webp create mode 100644 public/fridge/empty.gif create mode 100644 public/fridge/empty.webp create mode 100644 public/inbox/empty.gif create mode 100644 public/inbox/empty.webp create mode 100644 public/inbox/zero.gif create mode 100644 public/inbox/zero.webp create mode 100644 public/jar/empty.gif create mode 100644 public/jar/empty.webp create mode 100644 public/loading/bar.gif create mode 100644 public/loading/bar.webp create mode 100644 public/loading/blocks.gif create mode 100644 public/loading/blocks.webp create mode 100644 public/loading/candy.gif create mode 100644 public/loading/candy.webp create mode 100644 public/loading/cat.gif create mode 100644 public/loading/cat.webp create mode 100644 public/loading/coffee.gif create mode 100644 public/loading/coffee.webp create mode 100644 public/loading/dots.gif create mode 100644 public/loading/dots.webp create mode 100644 public/loading/fishing.gif create mode 100644 public/loading/fishing.webp create mode 100644 public/loading/gummies.gif create mode 100644 public/loading/gummies.webp create mode 100644 public/loading/microwave.gif create mode 100644 public/loading/microwave.webp create mode 100644 public/loading/orbit.gif create mode 100644 public/loading/orbit.webp create mode 100644 public/loading/pinwheel.gif create mode 100644 public/loading/pinwheel.webp create mode 100644 public/loading/pizza.gif create mode 100644 public/loading/pizza.webp create mode 100644 public/loading/pray.gif create mode 100644 public/loading/pray.webp create mode 100644 public/loading/pulse.gif create mode 100644 public/loading/pulse.webp create mode 100644 public/loading/push.gif create mode 100644 public/loading/push.webp create mode 100644 public/loading/rainbow.gif create mode 100644 public/loading/rainbow.webp create mode 100644 public/loading/ring.gif create mode 100644 public/loading/ring.webp create mode 100644 public/loading/run.gif create mode 100644 public/loading/run.webp create mode 100644 public/loading/skeleton.gif create mode 100644 public/loading/skeleton.webp create mode 100644 public/loading/sleepy.gif create mode 100644 public/loading/sleepy.webp create mode 100644 public/loading/snail.gif create mode 100644 public/loading/snail.webp create mode 100644 public/loading/tea.gif create mode 100644 public/loading/tea.webp create mode 100644 public/loading/wait.gif create mode 100644 public/loading/wait.webp create mode 100644 public/locked/key.gif create mode 100644 public/locked/key.webp create mode 100644 public/locked/vault.gif create mode 100644 public/locked/vault.webp create mode 100644 public/logout/wave.gif create mode 100644 public/logout/wave.webp create mode 100644 public/mailbox/check.gif create mode 100644 public/mailbox/check.webp create mode 100644 public/mailbox/empty.gif create mode 100644 public/mailbox/empty.webp create mode 100644 public/maintenance/mechanic.gif create mode 100644 public/maintenance/mechanic.webp create mode 100644 public/maintenance/robot.gif create mode 100644 public/maintenance/robot.webp create mode 100644 public/maintenance/wrench.gif create mode 100644 public/maintenance/wrench.webp create mode 100644 public/offline/antenna.gif create mode 100644 public/offline/antenna.webp create mode 100644 public/offline/cable.gif create mode 100644 public/offline/cable.webp create mode 100644 public/offline/plug.gif create mode 100644 public/offline/plug.webp create mode 100644 public/offline/satellite.gif create mode 100644 public/offline/satellite.webp create mode 100644 public/offline/wifi.gif create mode 100644 public/offline/wifi.webp create mode 100644 public/order/delivery.gif create mode 100644 public/order/delivery.webp create mode 100644 public/order/shipped.gif create mode 100644 public/order/shipped.webp create mode 100644 public/payment/card.gif create mode 100644 public/payment/card.webp create mode 100644 public/payment/coins.gif create mode 100644 public/payment/coins.webp create mode 100644 public/payment/tap.gif create mode 100644 public/payment/tap.webp create mode 100644 public/phone/waiting.gif create mode 100644 public/phone/waiting.webp create mode 100644 public/plate/empty.gif create mode 100644 public/plate/empty.webp create mode 100644 public/refresh/pull.gif create mode 100644 public/refresh/pull.webp create mode 100644 public/saved/floppy.gif create mode 100644 public/saved/floppy.webp create mode 100644 public/saved/hug.gif create mode 100644 public/saved/hug.webp create mode 100644 public/search/magnifier.gif create mode 100644 public/search/magnifier.webp create mode 100644 public/search/none.gif create mode 100644 public/search/none.webp create mode 100644 public/search/sad.gif create mode 100644 public/search/sad.webp create mode 100644 public/sent/envelope.gif create mode 100644 public/sent/envelope.webp create mode 100644 public/sent/plane.gif create mode 100644 public/sent/plane.webp create mode 100644 public/sent/wave.gif create mode 100644 public/sent/wave.webp create mode 100644 public/signal/none.gif create mode 100644 public/signal/none.webp create mode 100644 public/success/balloons.gif create mode 100644 public/success/balloons.webp create mode 100644 public/success/check.gif create mode 100644 public/success/check.webp create mode 100644 public/success/confetti.gif create mode 100644 public/success/confetti.webp create mode 100644 public/success/jump.gif create mode 100644 public/success/jump.webp create mode 100644 public/success/medal.gif create mode 100644 public/success/medal.webp create mode 100644 public/success/stamp.gif create mode 100644 public/success/stamp.webp create mode 100644 public/success/thumbs.gif create mode 100644 public/success/thumbs.webp create mode 100644 public/success/victory.gif create mode 100644 public/success/victory.webp create mode 100644 public/sync/arrows.gif create mode 100644 public/sync/arrows.webp create mode 100644 public/sync/juggle.gif create mode 100644 public/sync/juggle.webp create mode 100644 public/sync/phones.gif create mode 100644 public/sync/phones.webp create mode 100644 public/thanks/card.gif create mode 100644 public/thanks/card.webp create mode 100644 public/thanks/heart.gif create mode 100644 public/thanks/heart.webp create mode 100644 public/timeout/asleep.gif create mode 100644 public/timeout/asleep.webp create mode 100644 public/timeout/stopwatch.gif create mode 100644 public/timeout/stopwatch.webp create mode 100644 public/trash/empty.gif create mode 100644 public/trash/empty.webp create mode 100644 public/typing/bubble.gif create mode 100644 public/typing/bubble.webp create mode 100644 public/typing/chat.gif create mode 100644 public/typing/chat.webp create mode 100644 public/upload/cloud.gif create mode 100644 public/upload/cloud.webp create mode 100644 public/upload/rocket.gif create mode 100644 public/upload/rocket.webp create mode 100644 public/upload/toss.gif create mode 100644 public/upload/toss.webp create mode 100644 public/verified/badge.gif create mode 100644 public/verified/badge.webp create mode 100644 public/wallet/moth.gif create mode 100644 public/wallet/moth.webp create mode 100644 public/wallet/shake.gif create mode 100644 public/wallet/shake.webp create mode 100644 public/warning/sign.gif create mode 100644 public/warning/sign.webp create mode 100644 public/warning/siren.gif create mode 100644 public/warning/siren.webp create mode 100644 public/warning/whistle.gif create mode 100644 public/warning/whistle.webp create mode 100644 public/welcome/bow.gif create mode 100644 public/welcome/bow.webp create mode 100644 public/welcome/door.gif create mode 100644 public/welcome/door.webp create mode 100644 public/wishlist/empty.gif create mode 100644 public/wishlist/empty.webp diff --git a/gen/ui/403/door.js b/gen/ui/403/door.js new file mode 100644 index 0000000..81f69c6 --- /dev/null +++ b/gen/ui/403/door.js @@ -0,0 +1,31 @@ +// a closed door chained shut with a big padlock, it rattles as someone tries it but the lock just swings and holds +const{sin,cos,PI,min,max,exp,hypot,atan2}=Math,T=2*PI +export const frames=20,delay=70 +const chain=(c,x0,y0,x1,y1,j)=>{ + const L=hypot(x1-x0,y1-y0),n=Math.round(L/17),a=atan2(y1-y0,x1-x0) + for(const odd of[1,0])for(let k=odd;k<=n;k+=2){ + const v=k/n,x=x0+(x1-x0)*v,y=y0+(y1-y0)*v+j*sin(PI*v) + c.save();c.translate(x,y);c.rotate(a) + if(odd){c.lineWidth=13;c.beginPath();c.moveTo(-8,0);c.lineTo(8,0);c.stroke()} + else{c.lineWidth=5;c.beginPath();c.ellipse(0,0,12,8,0,0,T);c.fill();c.stroke();c.lineWidth=4;c.beginPath();c.moveTo(-4,0);c.lineTo(4,0);c.stroke()} + c.restore() + } +} +export default(c,t,i)=>{ + const u=t*2%1,sh=u<.3?(i%2?3:-3):0,a=.34*sin(3*T*t)*exp(-2.6*u),j=sh*.7 + if(sh)for(const d of[-1,1])for(const y of[84,112,140])for(const[w,k]of[[11,'#111'],[4,'#fff']])c.lineWidth=w,c.strokeStyle=k,c.beginPath(),c.moveTo(128+d*(100+(i%2)*3),y),c.lineTo(128+d*(114+(i%2)*3),y-6),c.stroke() + c.lineWidth=7;c.strokeStyle='#111' + c.beginPath();c.roundRect(46,12,164,232,[30,30,4,4]);c.fill();c.stroke() + c.save();c.translate(sh,0) + c.beginPath();c.roundRect(60,26,136,218,[20,20,2,2]);c.fill();c.stroke() + c.lineWidth=5;c.beginPath();c.roundRect(76,44,104,64,10);c.roundRect(76,124,104,100,10);c.stroke() + c.lineWidth=7;c.beginPath();c.arc(176,140,9,0,T);c.fill();c.stroke() + chain(c,72,52,184,214,j);chain(c,184,52,72,214,-j) + c.fillStyle='#111';for(const[x,y]of[[72,52],[184,52],[72,214],[184,214]])c.beginPath(),c.arc(x,y,7,0,T),c.fill() + c.fillStyle='#fff';c.restore() + c.save();c.translate(128+sh,128);c.rotate(a) + for(const[w,k]of[[30,'#111'],[16,'#fff']])c.lineWidth=w,c.strokeStyle=k,c.beginPath(),c.moveTo(-20,34),c.lineTo(-20,20),c.arc(0,20,20,PI,0),c.lineTo(20,34),c.stroke() + c.lineWidth=7;c.strokeStyle='#111';c.beginPath();c.roundRect(-36,30,72,58,14);c.fill();c.stroke() + c.fillStyle='#111';c.beginPath();c.arc(0,52,9,0,T);c.moveTo(-5,56);c.lineTo(-8,76);c.lineTo(8,76);c.lineTo(5,56);c.fill() + c.restore() +} diff --git a/gen/ui/404/hole.js b/gen/ui/404/hole.js new file mode 100644 index 0000000..c366e40 --- /dev/null +++ b/gen/ui/404/hole.js @@ -0,0 +1,46 @@ +// a little 404 signpost stands by a hole; a mole pops up, looks left and right, shrugs and ducks back down +const{sin,cos,PI,min,max}=Math,T=2*PI +export const frames=32,delay=70 +const cl=u=>min(1,max(0,u)),io=u=>(u=cl(u),u<.5?2*u*u:1-2*(1-u)**2),bk=u=>(u=cl(u),1+2.7*(u-1)**3+1.7*(u-1)**2) +const HX=172,HY=198 +const Q=(c,x,y,s)=>{ + c.save();c.translate(x,y);c.scale(s,s) + for(const[w,st]of[[18,'#111'],[7,'#fff']])c.lineWidth=w,c.strokeStyle=st,c.beginPath(),c.arc(0,-10,10,PI,PI*2.3),c.quadraticCurveTo(0,3,0,8),c.stroke() + c.lineWidth=5;c.strokeStyle='#111';c.beginPath();c.arc(0,22,5.5,0,T);c.fill();c.stroke();c.restore() +} +export default(c,t)=>{ + const up=bk((t-.08)/.12)-io((t-.8)/.08),lk=sin(T*cl((t-.24)/.24)),sh=min(1,2.2*sin(PI*cl((t-.52)/.24))),u0=cl((t-.1)/.3),wb=.05*sin(T*2*u0)*(1-u0) + c.beginPath();c.roundRect(10,178,236,54,27);c.fill();c.stroke() + c.fillStyle='#111';for(const[x,y]of[[32,214],[58,222],[112,218],[228,214]])c.beginPath(),c.arc(x,y,3.5,0,T),c.fill() + c.beginPath();c.ellipse(HX,HY,48,13,0,0,T);c.fill();c.fillStyle='#fff' + c.lineWidth=6;for(const[x,r]of[[HX-56,13],[HX+57,10]])c.beginPath(),c.arc(x,HY+4,r,PI,0),c.closePath(),c.fill(),c.stroke() + c.lineWidth=7 + c.save();c.translate(72,204);c.rotate(.02+wb);c.translate(-72,-204) + c.beginPath();c.roundRect(65,110,14,96,4);c.fill();c.stroke() + c.beginPath();c.roundRect(20,62,104,56,10);c.fill();c.stroke() + c.lineWidth=9;for(const x of[42,102])c.beginPath(),c.moveTo(x+7,104),c.lineTo(x+7,76),c.lineTo(x-11,96),c.lineTo(x+11,96),c.stroke() + c.beginPath();c.ellipse(72,90,8,14,0,0,T);c.stroke() + c.restore() + const v=cl((t-.08)/.2) + if(v>0&&v<1){c.lineWidth=4;for(const[d,h]of[[-1,40],[1,52],[-.5,58],[.6,34]])c.beginPath(),c.arc(HX+d*(26+34*v),HY-4-h*sin(PI*v)+20*v*v,6*(1-v**3),0,T),c.fill(),c.stroke()} + if(up>.01){ + c.save();c.beginPath();c.rect(0,0,256,HY);c.ellipse(HX,HY,48,13,0,0,T);c.clip() + c.translate(HX,HY+20+96*(1-up));c.rotate(.08*sh) + c.lineWidth=7;c.beginPath();c.roundRect(-32,-106,64,130,32);c.fill();c.stroke() + const e=7*lk + c.fillStyle='#111';for(const d of[-1,1])c.beginPath(),c.arc(d*12+e,-72,4.5,0,T),c.fill() + c.beginPath();c.ellipse(e*1.3,-58,11,8,0,0,T);c.fill() + c.fillStyle='#fff';c.beginPath();c.arc(e*1.3-4,-61,2.5,0,T);c.fill() + c.lineWidth=3;c.beginPath();c.roundRect(e-6,-50,12,9,2);c.fill();c.stroke();c.beginPath();c.moveTo(e,-50);c.lineTo(e,-41);c.stroke() + for(const d of[-1,1])for(const a of[-.15,.15])c.beginPath(),c.moveTo(e*1.3+d*14,-58+a*20),c.lineTo(e*1.3+d*26,-58+a*44),c.stroke() + if(sh>.1){c.lineWidth=4;for(const d of[-1,1])c.beginPath(),c.arc(d*12+e,-80-4*sh,6,PI*1.2,PI*1.8),c.stroke()} + for(const d of[-1,1]){ + c.save();c.translate(d*(30+14*sh),-10-38*sh);c.rotate(d*(-.2-.9*sh));c.lineWidth=5 + c.beginPath();c.ellipse(0,0,14,10,0,0,T);c.fill();c.stroke() + c.lineWidth=3;for(const k of[-5,0,5])c.beginPath(),c.moveTo(k,-9),c.lineTo(k,-15),c.stroke() + c.restore() + } + c.restore() + } + if(sh>.05)Q(c,HX+50,74,sh) +} diff --git a/gen/ui/404/magnifier.js b/gen/ui/404/magnifier.js new file mode 100644 index 0000000..d679de3 --- /dev/null +++ b/gen/ui/404/magnifier.js @@ -0,0 +1,37 @@ +// a magnifying glass sweeps back and forth over 404, and when it hovers the 0 it swells up big with a confused little face +const{sin,PI,max,abs}=Math,T=2*PI +export const frames=24,delay=70 +const N=(c,g)=>{for(const[w,s]of[[28,'#111'],[14,'#fff']]){ + c.lineWidth=w;c.strokeStyle=s + for(const x of[60,196])c.beginPath(),c.moveTo(x+8,150),c.lineTo(x+8,78),c.lineTo(x-20,126),c.lineTo(x+20,126),c.stroke() + c.beginPath();c.ellipse(128,114,22+14*g,36+6*g,0,0,T);c.stroke() +}} +const Q=(c,x,y,s,a)=>{ + c.save();c.translate(x,y);c.rotate(a);c.scale(s,s) + for(const[w,st]of[[20,'#111'],[8,'#fff']])c.lineWidth=w,c.strokeStyle=st,c.beginPath(),c.arc(0,-10,11,PI,PI*2.3),c.quadraticCurveTo(0,4,0,9),c.stroke() + c.lineWidth=5;c.strokeStyle='#111';c.beginPath();c.arc(0,24,6,0,T);c.fill();c.stroke();c.restore() +} +export default(c,t)=>{ + const s=sin(T*t)**3,lx=128+58*s,ly=112,g=max(0,1-abs(lx-128)/30)**1.5,m=1.6 + N(c,0) + c.lineWidth=7;c.strokeStyle='#111' + c.save();c.translate(lx,ly);c.rotate(1.25+.3*s) + c.beginPath();c.roundRect(56,-9,20,18,3);c.fill();c.stroke() + c.beginPath();c.roundRect(74,-15,52,30,13);c.fill();c.stroke() + c.lineWidth=4;for(const u of[90,104])c.beginPath(),c.moveTo(u,-8),c.lineTo(u,8),c.stroke() + c.restore() + c.save();c.beginPath();c.arc(lx,ly,52,0,T);c.fill();c.clip() + c.translate(lx,ly);c.scale(m,m);c.translate(-lx,-ly);N(c,g) + if(g>.05){ + c.translate(128,114);c.scale(1.25*g,1.25*g);c.fillStyle='#111' + for(const d of[-1,1])c.beginPath(),c.arc(d*7,-5,3.5,0,T),c.fill() + c.lineWidth=2.5;c.strokeStyle='#111' + c.beginPath();c.moveTo(-11,-14);c.lineTo(-4,-17);c.moveTo(4,-12);c.lineTo(11,-12);c.stroke() + c.beginPath();c.moveTo(-8,9);c.lineTo(-4,6);c.lineTo(0,9);c.lineTo(4,6);c.lineTo(8,9);c.stroke() + } + c.restore() + c.strokeStyle='#111';c.lineWidth=18;c.beginPath();c.arc(lx,ly,52,0,T);c.stroke() + c.strokeStyle='#fff';c.lineWidth=6;c.stroke() + c.strokeStyle='#ddd';c.lineWidth=7;c.beginPath();c.arc(lx,ly,38,PI*1.1,PI*1.4);c.stroke() + if(g>.3)Q(c,lx+52,ly-62,(g-.3)/.7,.2*sin(T*t*2)) +} diff --git a/gen/ui/404/signpost.js b/gen/ui/404/signpost.js new file mode 100644 index 0000000..419ca4c --- /dev/null +++ b/gen/ui/404/signpost.js @@ -0,0 +1,20 @@ +// a signpost whose arrow boards keep swinging round to point every which way, while a question mark bobs on top +const{sin,cos,PI,min,max}=Math,T=2*PI +export const frames=24,delay=70 +const bk=u=>(u=min(1,max(0,u)),1+2.7*(u-1)**3+1.7*(u-1)**2) +const B=[[112,94,0,-.12,[[.02,1],[.5,1]]],[154,82,PI,.1,[[.18,2],[.66,-2]]],[196,90,0,-.05,[[.34,1],[.84,1]]]] +export default(c,t)=>{ + const bs=B.map(([y,L,b,tl,S])=>[y,L,b+S.reduce((a,[t0,n])=>a+n*PI*bk((t-t0)/.14),0),tl]) + const board=([y,L,a,tl])=>{ + const k=cos(a),P=[[-14,-16],[L-22,-16],[L,0],[L-22,16],[-14,16]] + c.lineWidth=7;c.beginPath();for(const[u,v]of P)c.lineTo(128+u*k,y+v+u*k*tl);c.closePath();c.fill();c.stroke() + c.lineWidth=4;c.beginPath();c.moveTo(128+16*k,y+16*k*tl);c.lineTo(128+(L-34)*k,y+(L-34)*k*tl);c.stroke() + } + c.beginPath();c.roundRect(52,214,152,24,12);c.fill();c.stroke() + for(const b of bs)if(sin(b[2])<0)board(b) + c.lineWidth=7;c.beginPath();c.roundRect(118,86,20,140,6);c.fill();c.stroke() + for(const b of bs)if(sin(b[2])>=0)board(b) + c.save();c.translate(128,50+5*sin(T*t*2));c.rotate(.18*sin(T*t));c.scale(.88,.88) + for(const[w,st]of[[24,'#111'],[11,'#fff']])c.lineWidth=w,c.strokeStyle=st,c.beginPath(),c.arc(0,-12,12,PI,PI*2.3),c.quadraticCurveTo(0,2,0,8),c.stroke() + c.lineWidth=6;c.strokeStyle='#111';c.beginPath();c.arc(0,24,7,0,T);c.fill();c.stroke();c.restore() +} diff --git a/gen/ui/404/tumbleweed.js b/gen/ui/404/tumbleweed.js new file mode 100644 index 0000000..2d6595d --- /dev/null +++ b/gen/ui/404/tumbleweed.js @@ -0,0 +1,32 @@ +// chunky 404 digits stand in the desert like rocks under a hot sun while a tumbleweed bounces across in front, kicking up dust puffs +const{sin,cos,PI,min}=Math,T=2*PI +export const frames=18,delay=70 +const X=t=>-46+348*t +const weed=(c,x,y,r,a,s)=>{ + c.save();c.translate(x,y+r);c.scale(2-s,s);c.translate(0,-r);c.rotate(a) + c.beginPath();for(let k=0;k<36;k++){const b=k*T/36,q=r*(1+.05*sin(b*7));c.lineTo(cos(b)*q,sin(b)*q)} + c.closePath();c.fill();c.stroke() + c.lineWidth=4;for(const[u,v,R,a]of[[.25,.15,.55,0],[-.3,.1,.5,2.2],[.05,-.3,.5,4],[-.1,.3,.42,1],[.1,0,.72,3.4]])c.beginPath(),c.arc(u*r,v*r,R*r,a,a+3),c.stroke() + c.lineWidth=5;for(const b of[.4,2.3,4.1,5.4])c.beginPath(),c.moveTo(cos(b)*r,sin(b)*r),c.lineTo(cos(b+.25)*(r+8),sin(b+.25)*(r+8)),c.stroke() + c.restore() +} +export default(c,t)=>{ + c.save();c.translate(210,42) + for(let k=0;k<8;k++){const a=k*T/8;for(const[w,s]of[[11,'#111'],[4,'#fff']])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),c.moveTo(cos(a)*21,sin(a)*21),c.lineTo(cos(a)*27,sin(a)*27),c.stroke()} + c.lineWidth=6;c.strokeStyle='#111';c.beginPath();c.arc(0,0,14,0,T);c.fill();c.stroke();c.restore() + c.lineWidth=7;c.beginPath();c.roundRect(10,190,236,46,23);c.fill();c.stroke() + c.fillStyle='#111';for(const[x,y]of[[30,214],[92,226],[160,222],[228,214]])c.beginPath(),c.arc(x,y,3.5,0,T),c.fill() + c.fillStyle='#fff' + for(const[x,a,z]of[[50,-.07,0],[128,.03,1],[206,.07,0]]){ + c.save();c.translate(x,202);c.rotate(a) + for(const[w,s]of[[34,'#111'],[20,'#fff']]){c.lineWidth=w;c.strokeStyle=s;c.beginPath();z?c.ellipse(0,-52,22,52,0,0,T):(c.moveTo(12,0),c.lineTo(12,-104),c.lineTo(-24,-36),c.lineTo(24,-36));c.stroke()} + c.restore() + } + c.lineWidth=7;c.strokeStyle='#111' + const q=t*3%1,x=X(t),r=30,y=230-r-76*4*q*(1-q),e=min(q,1-q),s=e<.07?.8+.2*e/.07:1 + const lx=X(Math.floor(t*3)/3),p=q/.5 + if(p<1){c.lineWidth=5;for(const d of[-1,1])for(const[o,v,R]of[[16,30,12],[30,44,8]])c.beginPath(),c.arc(lx+d*(o+v*p),226-(R+4)*p,R*(1-p)+1,0,T),c.fill(),c.stroke()} + for(const[dy,L]of[[-10,24],[8,16]])for(const[w,st]of[[11,'#111'],[4,'#fff']])c.lineWidth=w,c.strokeStyle=st,c.beginPath(),c.moveTo(x-r-14,y+dy),c.lineTo(x-r-14-L,y+dy),c.stroke() + c.lineWidth=6;c.strokeStyle='#111' + weed(c,x,y,r,x/r,s) +} diff --git a/gen/ui/500/server.js b/gen/ui/500/server.js new file mode 100644 index 0000000..c316263 --- /dev/null +++ b/gen/ui/500/server.js @@ -0,0 +1,20 @@ +// overheated server tower with dizzy x eyes, its lights blinking erratically, trembling while puffs of smoke rise from the top +const{sin,PI}=Math,T=2*PI +export const frames=16,delay=90 +export default(c,t,i)=>{ + const P=[0,1,2].map(k=>{const p=(t+k/3)%1,r=19*sin(PI*p)**.7;return[(k%2?150:110)+16*sin(T*p+k*2)*p,76-54*p,r]}) + for(const f of[0,1])for(const[x,y,r]of P)if(r>1)for(const[dx,dy,q]of[[-r*.6,r*.15,.7],[r*.6,r*.15,.7],[0,-r*.2,.9]]){c.beginPath();c.arc(x+dx,y+dy,r*q,0,T);f?(c.fillStyle='#ddd',c.fill()):(c.lineWidth=14,c.stroke())} + c.lineWidth=7;c.fillStyle='#fff' + c.translate(i%2?1.5:-1.5,0) + for(const x of[84,172])c.beginPath(),c.roundRect(x-12,214,24,20,6),c.fill(),c.stroke() + c.beginPath();c.roundRect(62,74,132,150,16);c.fill();c.stroke() + for(let k=0;k<2;k++){ + const y=88+k*38 + c.beginPath();c.roundRect(76,y,104,28,8);c.fill();c.stroke() + c.lineWidth=5;c.beginPath();c.moveTo(88,y+14);c.lineTo(124,y+14);c.stroke() + for(let j=0;j<2;j++){c.beginPath();c.arc(146+j*18,y+14,5.5,0,T);c.fillStyle=(i*7+k*5+j*3)%5<2?'#111':'#fff';c.fill();c.stroke()} + c.fillStyle='#fff';c.lineWidth=7 + } + c.lineWidth=6;for(const x of[106,150])c.beginPath(),c.moveTo(x-8,170),c.lineTo(x+8,186),c.moveTo(x+8,170),c.lineTo(x-8,186),c.stroke() + c.lineWidth=5;c.beginPath();for(let k=0;k<=6;k++)c.lineTo(110+k*6,204+(k%2?-4:3));c.stroke() +} diff --git a/gen/ui/bell/quiet.js b/gen/ui/bell/quiet.js new file mode 100644 index 0000000..69ad351 --- /dev/null +++ b/gen/ui/bell/quiet.js @@ -0,0 +1,22 @@ +// notification bell fast asleep, no badge, gently rocking and breathing with a snot bubble while Zzz float up +const{sin,PI,max}=Math,T=2*PI +export const frames=20,delay=90 +export default(c,t)=>{ + const D=(f,a=13,b=5)=>{for(const[w,s]of[[a,'#111'],[b,'#fff']])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),f(),c.stroke();c.lineWidth=7;c.strokeStyle='#111'} + for(const k of[0,1,2]){ + const p=(t+k/3)%1,s=(6+10*p)*max(0,sin(PI*p))**.4,x=164+54*p+6*sin(T*p),y=108-84*p + if(s>1)D(()=>{c.moveTo(x-s,y-s);c.lineTo(x+s,y-s);c.lineTo(x-s,y+s);c.lineTo(x+s,y+s)},s>8?14:12,s>8?6:5) + } + const br=sin(T*t),S=1.1 + c.translate(108,36);c.rotate(.04*br);c.scale(S,S*(1+.02*br));c.lineWidth=7/S + c.beginPath();c.arc(0,160,13,0,T);c.fill();c.stroke() + c.beginPath();c.arc(0,4,10,0,T);c.fill();c.stroke() + c.beginPath();c.moveTo(-46,128);c.bezierCurveTo(-46,86,-42,16,0,14);c.bezierCurveTo(42,16,46,86,46,128);c.closePath();c.fill();c.stroke() + c.beginPath();c.roundRect(-60,122,120,20,10);c.fill();c.stroke() + c.lineWidth=5/S;c.beginPath();c.moveTo(-28,40);c.quadraticCurveTo(-34,62,-35,84);c.stroke() + for(const d of[-1,1])c.beginPath(),c.arc(d*16,78,7,.1*PI,.9*PI),c.stroke() + c.fillStyle='#ddd';for(const d of[-1,1])c.beginPath(),c.ellipse(d*25,92,6,4,0,0,T),c.fill() + c.fillStyle='#111';c.beginPath();c.ellipse(0,100,4.5,3.5+.8*br,0,0,T);c.fill() + const b=5+6*(1+br)/2;c.fillStyle='#fff';c.lineWidth=4/S;c.beginPath();c.arc(8+b*.8,102,b,0,T);c.fill();c.stroke() + c.lineWidth=2.5/S;c.beginPath();c.arc(8+b*.8-b*.35,102-b*.35,b*.35,PI,1.5*PI);c.stroke() +} diff --git a/gen/ui/box/empty.js b/gen/ui/box/empty.js new file mode 100644 index 0000000..f0e3a0a --- /dev/null +++ b/gen/ui/box/empty.js @@ -0,0 +1,33 @@ +// cardboard box flaps pop open on an empty box, a spider drops in on its thread and dangles inside, climbs back out and the flaps close +const{sin,cos,PI,min,max}=Math,T=2*PI +export const frames=24,delay=70 +const cl=u=>min(1,max(0,u)),ease=u=>(u=cl(u),u<.5?2*u*u:1-2*(1-u)**2),back=u=>(u=cl(u),1+2.6*(u-1)**3+1.6*(u-1)**2) +const G=232,W=72,H=84,Z=70,F=36,S=42,P=(x,y,z)=>[116+x+z*.32,G-y-z*.5] +export default(c,t)=>{ + const o=back((t-.02)/.12)-ease((t-.86)/.12),dn=back((t-.14)/.16)-cl((t-.7)/.14)**2,sx=127,sy=-36+164*dn+6*sin(2*T*t)*dn + const q=Q=>{c.beginPath();for(const p of Q)c.lineTo(...P(...p));c.closePath();c.fill();c.stroke()} + const fb=(z,d,a)=>{const y=H+sin(a)*F,w=z+d*cos(a)*F;q([[-W,H,z],[W,H,z],[W,y,w],[-W,y,w]])} + const fs=(d,a)=>{const x=d*W-d*cos(a)*S,y=H+sin(a)*S;q([[d*W,H,0],[d*W,H,Z],[x,y,Z],[x,y,0]])} + fb(Z,-1,o*1.9) + c.fillStyle='#999';q([[-W,H,0],[W,H,0],[W,H,Z],[-W,H,Z]]);c.fillStyle='#fff' + if(dn>0){ + for(const[l,s]of[[6,'#111'],[2,'#fff']])c.lineWidth=l,c.strokeStyle=s,c.beginPath(),c.moveTo(sx,0),c.lineTo(sx,sy-18),c.stroke() + const L=[] + for(const d of[-1,1])for(let k=0;k<4;k++){const wg=5*sin(2*T*t+k*1.3+(d>0?1:0)),by=sy-8+k*6;L.push([[sx+d*14,by],[sx+d*(38+k*2),sy-24+k*12+wg*.5],[sx+d*(54-k*2),sy-6+k*16+wg]])} + const pl=p=>{c.beginPath();c.moveTo(...p[0]);c.lineTo(...p[1]);c.lineTo(...p[2])} + c.strokeStyle='#fff';c.lineWidth=14;for(const p of L)pl(p),c.stroke() + c.beginPath();c.ellipse(sx,sy,24,21,0,0,T);c.stroke() + c.strokeStyle='#111';c.lineWidth=6;for(const p of L)pl(p),c.stroke() + c.fillStyle='#111';c.beginPath();c.ellipse(sx,sy,24,21,0,0,T);c.fill() + c.fillStyle='#fff';for(const d of[-1,1])c.beginPath(),c.arc(sx+d*9,sy-3,7,0,T),c.fill() + c.fillStyle='#111';for(const d of[-1,1])c.beginPath(),c.arc(sx+d*8,sy-1,4,0,T),c.fill() + c.strokeStyle='#fff';c.lineWidth=3;c.beginPath();c.arc(sx,sy+6,5,.15*PI,.85*PI);c.stroke() + c.strokeStyle='#111';c.fillStyle='#fff';c.lineWidth=7 + } + q([[W,0,0],[W,0,Z],[W,H,Z],[W,H,0]]) + q([[-W,0,0],[W,0,0],[W,H,0],[-W,H,0]]) + c.fillStyle='#111';for(const d of[-1,1])c.beginPath(),c.arc(116+d*26,G-30,6.5,0,T),c.fill() + c.lineWidth=5;c.beginPath();dn>.3?c.ellipse(116,G-14,6,7,0,0,T):c.arc(116,G-21,9,.15*PI,.85*PI);c.stroke();c.lineWidth=7;c.fillStyle='#fff' + fb(0,1,o*3.6) + for(const d of[-1,1])fs(d,o*2.2) +} diff --git a/gen/ui/buffering/video.js b/gen/ui/buffering/video.js new file mode 100644 index 0000000..e24c162 --- /dev/null +++ b/gen/ui/buffering/video.js @@ -0,0 +1,13 @@ +// video player stuck buffering: a ring of dots spins where the play button would be while the scrubber sits frozen partway +const{cos,sin,PI}=Math,T=2*PI +export const frames=16,delay=70 +export default(c,t)=>{ + c.beginPath();c.roundRect(14,36,228,184,20);c.fill();c.stroke() + c.fillStyle='#111';c.beginPath();c.roundRect(28,50,200,124,10);c.fill() + c.fillStyle='#fff' + for(let k=0;k<8;k++){const a=k*T/8-PI/2,g=((t-k/8)%1+1)%1;c.beginPath();c.arc(128+cos(a)*34,112+sin(a)*34,4+8*(1-g)**1.6,0,T);c.fill()} + c.lineWidth=5;c.beginPath();c.moveTo(34,186);c.lineTo(34,208);c.lineTo(53,197);c.closePath();c.fill();c.stroke() + c.lineCap='round';c.lineWidth=12 + for(const[a,b,s]of[[74,222,'#ddd'],[74,168,'#999'],[74,132,'#111']])c.strokeStyle=s,c.beginPath(),c.moveTo(a,197),c.lineTo(b,197),c.stroke() + c.strokeStyle='#111';c.lineWidth=6;c.beginPath();c.arc(132,197,11,0,T);c.fill();c.stroke() +} diff --git a/gen/ui/calendar/empty.js b/gen/ui/calendar/empty.js new file mode 100644 index 0000000..fb9ad9e --- /dev/null +++ b/gen/ui/calendar/empty.js @@ -0,0 +1,23 @@ +// tear-off calendar pad, the top page flips up over the binding and away, but every page underneath is blank too +const{sin,cos,PI,min,max}=Math +export const frames=32,delay=55 +const ease=u=>(u=min(1,max(0,u)),u<.5?2*u*u:1-2*(1-u)**2) +const X=128,Y=102,W=160,H=124 +const flip=(c,a)=>{ + const k=cos(a),y=Y+H*k*(k>0?1:.62),w=W/2*(1+.2*sin(a)),y0=k>0?Y-20:Y + c.fillStyle=k>0?'#fff':'#ddd' + c.beginPath();c.moveTo(X-W/2,y0);c.lineTo(X-w,y);c.lineTo(X+w,y);c.lineTo(X+W/2,y0);c.closePath();c.fill();c.stroke() + c.fillStyle='#fff' +} +export default(c,t)=>{ + const a=1.5*PI*ease((t*2%1)/.78) + if(a>PI)flip(c,a) + c.beginPath();c.rect(X-W/2+5,Y-10,W-10,H+20);c.fill();c.stroke() + c.beginPath();c.rect(X-W/2,Y-20,W,H+20);c.fill();c.stroke() + if(a=PI/2&&a<=PI)flip(c,a) +} diff --git a/gen/ui/cart/empty.js b/gen/ui/cart/empty.js new file mode 100644 index 0000000..593a38a --- /dev/null +++ b/gen/ui/cart/empty.js @@ -0,0 +1,25 @@ +// empty shopping cart rolling back and forth on its own, wheels spinning, leaving little dust puffs behind its wheels +const{sin,cos,PI,min}=Math,T=2*PI +export const frames=20,delay=80 +export default(c,t)=>{ + const D=(f,a=12,b=5)=>{for(const[w,s]of[[a,'#111'],[b,'#fff']])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),f(),c.stroke();c.lineWidth=7;c.strokeStyle='#111'} + const S=.94,x=140+14*sin(T*t),G=216,a=(x-140)/(15*S) + D(()=>{c.moveTo(18,G+6);c.lineTo(238,G+6)},11,4) + c.translate(x,G);c.rotate(.03*sin(T*t));c.scale(S,S);const w=7/S;c.lineWidth=w + const D2=(f)=>D(f,20/S,7/S) + D2(()=>{c.moveTo(-52,-78);c.lineTo(-56,-44);c.lineTo(70,-44)}) + D2(()=>{c.moveTo(-64,-140);c.lineTo(-86,-166)}) + c.lineWidth=w;c.beginPath();c.roundRect(-106,-176,32,16,8);c.fill();c.stroke() + c.beginPath();c.moveTo(-66,-140);c.lineTo(80,-140);c.lineTo(64,-78);c.lineTo(-52,-78);c.closePath();c.fill();c.stroke() + c.lineWidth=5/S;for(const u of[.25,.5,.75])c.beginPath(),c.moveTo(-66+146*u,-140),c.lineTo(-52+116*u,-78),c.stroke() + c.beginPath();c.moveTo(-59,-109);c.lineTo(72,-109);c.stroke() + for(const wx of[-38,54]){ + c.lineWidth=w;c.beginPath();c.arc(wx,-17,15,0,T);c.fill();c.stroke() + c.lineWidth=4/S;c.beginPath();for(const k of[0,1])c.moveTo(wx+cos(a+k*PI/2)*9,-17+sin(a+k*PI/2)*9),c.lineTo(wx-cos(a+k*PI/2)*9,-17-sin(a+k*PI/2)*9);c.stroke() + } + c.setTransform(1,0,0,1,0,0);c.strokeStyle='#111';c.fillStyle='#fff' + for(const[o,d]of[[0,1],[.5,-1]]){ + const q=((t-o)%1+1)%1/.4,g=sin(PI*min(1,q)),wx=140+(d>0?-44:59) + if(q<1)for(const[k,r]of[[0,14],[1,10],[2,8]])if(r*g>1)c.lineWidth=5,c.beginPath(),c.arc(wx-d*(k*12+8*q),G-6-(k==1?9:0)-8*q,r*g,0,T),c.fill(),c.stroke() + } +} diff --git a/gen/ui/chat/crickets.js b/gen/ui/chat/crickets.js new file mode 100644 index 0000000..31fc028 --- /dev/null +++ b/gen/ui/chat/crickets.js @@ -0,0 +1,26 @@ +// an empty speech bubble hangs in awkward silence while a little cricket beside it rubs its wings and chirps +const{sin,cos,PI}=Math,T=2*PI +export const frames=20,delay=70 +const ln=(c,w,f)=>{for(const[l,s]of[[w,'#111'],[w-7,'#fff']])c.lineWidth=l,c.strokeStyle=s,c.beginPath(),f(),c.stroke();c.lineWidth=7;c.strokeStyle='#111'} +export default(c,t,i)=>{ + const ch=t*2%1<.4,j=ch?(i%2?1:-1):0,b=3*sin(t*T) + c.save();c.translate(92,68+b);c.rotate(.03*sin(t*T)) + c.beginPath();c.moveTo(-36,-50);c.arcTo(76,-50,76,50,36);c.arcTo(76,50,-76,50,36);c.lineTo(-12,50);c.lineTo(-50,86);c.lineTo(-38,50);c.arcTo(-76,50,-76,-50,36);c.arcTo(-76,-50,76,-50,36);c.closePath();c.fill();c.stroke() + c.restore() + c.save();c.translate(142,198-(ch&&i%2?2:0));c.scale(1.15,1.15) + if(ch)for(const a of[-1.5,-1.05,-.6])ln(c,10,()=>{const r=j>0?4:0;c.moveTo(46+cos(a)*(42+r),-32+sin(a)*(42+r));c.lineTo(46+cos(a)*(56+r),-32+sin(a)*(56+r))}) + for(const o of[0,1])ln(c,9,()=>{c.moveTo(-36-o*8,-22);c.quadraticCurveTo(-30+o*14,-80,10+o*22+5*sin(t*T*2+o*2),-92+o*12)}) + for(const[x,y,fx,fy]of[[-22,10,-36,30],[2,14,-6,30]])ln(c,11,()=>{c.moveTo(x,y);c.lineTo(fx,fy);c.lineTo(fx-10,fy)}) + c.beginPath();c.ellipse(20,0,46,24,0,0,T);c.fill();c.stroke() + c.save();c.translate(-12,-16);c.rotate(ch?-.32+.1*j:-.06) + c.beginPath();c.moveTo(0,0);c.quadraticCurveTo(40,-24,78,6);c.quadraticCurveTo(40,4,0,0);c.fill();c.stroke() + c.lineWidth=4;c.beginPath();c.moveTo(14,-2);c.quadraticCurveTo(40,-10,62,2);c.stroke() + c.restore() + ln(c,11,()=>{c.moveTo(58,-30);c.lineTo(74,26);c.lineTo(84,26)}) + c.save();c.translate(40,-10);c.rotate(-.55);c.beginPath();c.ellipse(0,0,32,13,0,0,T);c.fill();c.stroke();c.restore() + c.beginPath();c.arc(-36,-4,25,0,T);c.fill();c.stroke() + c.fillStyle='#111';c.beginPath();c.arc(-44,-10,7,0,T);c.fill() + c.fillStyle='#fff';c.beginPath();c.arc(-46,-12,2.5,0,T);c.fill() + c.lineWidth=4;c.beginPath();c.arc(-46,4,7,.2*PI,.8*PI);c.stroke() + c.restore() +} diff --git a/gen/ui/comingsoon/curtain.js b/gen/ui/comingsoon/curtain.js new file mode 100644 index 0000000..31ffa4e --- /dev/null +++ b/gen/ui/comingsoon/curtain.js @@ -0,0 +1,29 @@ +// closed stage curtains sway and twitch as if they're about to part, while a spotlight wobbles across them +const{sin,cos,PI,max}=Math,T=2*PI +export const frames=20,delay=80 +export default(c,t)=>{ + const g=3+9*max(0,sin(T*t))**3,sp=[128+34*sin(T*t),132+18*sin(2*T*t+1),50+4*sin(3*T*t)] + const cur=d=>{ + c.beginPath();c.moveTo(128+d*118,44);c.lineTo(128+d*118,222) + const ix=y=>128+d*(g+(y-44)/178*10*(1+sin(T*t))+3*sin(y/26-T*t*2)) + c.lineTo(128+d*118,224);c.quadraticCurveTo(128+d*(g+60),232,ix(222),222) + for(let y=222;y>=44;y-=6)c.lineTo(ix(y),y) + c.closePath() + } + c.fillStyle='#111';c.fillRect(20,40,216,184) + for(const d of[-1,1]){ + cur(d);c.fillStyle='#bbb';c.fill() + c.save();c.clip() + c.fillStyle='#fff';c.beginPath();c.ellipse(sp[0],sp[1],sp[2],sp[2]*1.1,0,0,T);c.fill() + c.strokeStyle='#888';c.lineWidth=8 + for(const f of[.3,.58,.84]){c.beginPath();for(let y=44;y<=230;y+=6)c.lineTo(128+d*(g+f*108+(y-44)*.04*(1+sin(T*t))+3*sin(y/26-T*t*2+f*5)),y);c.stroke()} + c.restore();c.strokeStyle='#111';c.lineWidth=7;cur(d);c.stroke() + } + c.fillStyle='#fff' + c.beginPath();c.roundRect(8,218,240,28,8);c.fill();c.stroke() + c.lineWidth=5;c.beginPath();c.moveTo(18,230);c.lineTo(238,230);c.stroke();c.lineWidth=7 + c.beginPath();c.moveTo(8,14);c.lineTo(248,14);c.lineTo(248,50) + for(let k=0;k<5;k++)c.arc(248-24-k*48,50,24,0,PI) + c.closePath();c.fill();c.stroke() + c.lineWidth=5;c.beginPath();c.moveTo(16,30);c.lineTo(240,30);c.stroke() +} diff --git a/gen/ui/confirmed/handshake.js b/gen/ui/confirmed/handshake.js new file mode 100644 index 0000000..8cfd7e8 --- /dev/null +++ b/gen/ui/confirmed/handshake.js @@ -0,0 +1,21 @@ +// two hands clasped in a handshake, pumping up and down, with little shake lines above and below +const{sin,cos,PI,atan2,hypot}=Math,T=2*PI +export const frames=16,delay=70 +export default(c,t)=>{ + const D=(f,a=12,b=5)=>{for(const[w,s]of[[a,'#111'],[b,'#fff']])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),f(),c.stroke();c.lineWidth=7;c.strokeStyle='#111'} + const v=sin(2*T*t),cx=128,cy=108+14*v,S=1.35,w=7/S + for(const s of[-1,1])if(s*cos(2*T*t)<-.3)for(const k of[0,1])D(()=>{const y=cy+s*(s<0?56:62)+s*k*14;c.moveTo(cx-24+k*6,y+s*6);c.quadraticCurveTo(cx,y-s*4,cx+24-k*6,y+s*6)},11,4) + for(const d of[-1,1]){ + const wx=cx+d*66,wy=cy+12,ex=128+d*88,ey=224,r=atan2(ey-wy,ex-wx),l=hypot(ex-wx,ey-wy) + c.save();c.translate(wx,wy);c.rotate(r) + c.fillStyle=d<0?'#777':'#fff';c.beginPath();c.roundRect(6,-25,l,50,14);c.fill();c.stroke() + c.fillStyle='#fff';c.beginPath();c.roundRect(-6,-30,18,60,7);c.fill();c.stroke() + c.restore() + } + c.save();c.translate(cx,cy);c.rotate(.05*v);c.scale(S,S);c.lineWidth=w + c.beginPath();c.roundRect(-14,-22,62,46,20);c.fill();c.stroke() + c.beginPath();c.roundRect(-52,-24,52,46,20);c.fill();c.stroke() + for(const[y,l]of[[16,22],[6,32],[-4,36],[-14,32]])c.beginPath(),c.roundRect(-10,y-6,l,12,6),c.fill(),c.stroke() + c.beginPath();c.roundRect(-40,-31,48,15,7.5);c.fill();c.stroke();c.lineWidth=w*.7;c.beginPath();c.moveTo(-31,-27);c.lineTo(-31,-20);c.stroke() + c.restore() +} diff --git a/gen/ui/construction/cone.js b/gen/ui/construction/cone.js new file mode 100644 index 0000000..0c2479c --- /dev/null +++ b/gen/ui/construction/cone.js @@ -0,0 +1,21 @@ +// a little traffic cone sways beside a striped road barrier while the warning lamp on top blinks on and off +const{sin,cos,PI}=Math,T=2*PI +export const frames=16,delay=80 +const ln=(c,w,f)=>{for(const[l,s]of[[w,'#111'],[w-7,'#fff']])c.lineWidth=l,c.strokeStyle=s,c.beginPath(),f(),c.stroke();c.lineWidth=7;c.strokeStyle='#111'} +export default(c,t,i)=>{ + const on=i%8<4,sw=.05*sin(t*T*2),cx=(y,d)=>70+d*(10+(y-46)*.17) + for(const[x,d]of[[122,-1],[214,1]])ln(c,18,()=>{c.moveTo(x,130);c.lineTo(x+d*14,234)}) + c.save();c.beginPath();c.roundRect(94,104,150,40,10);c.fill();c.clip() + c.fillStyle='#111';for(let x=80;x<260;x+=36)c.beginPath(),c.moveTo(x,104),c.lineTo(x+18,104),c.lineTo(x-4,144),c.lineTo(x-22,144),c.fill() + c.restore();c.beginPath();c.roundRect(94,104,150,40,10);c.stroke() + if(on)for(const a of[-2.8,-2.2,-1.57,-.94,-.34])ln(c,11,()=>{c.moveTo(208+cos(a)*32,80+sin(a)*32);c.lineTo(208+cos(a)*46,80+sin(a)*46)}) + c.fillStyle=on?'#fff':'#888';c.beginPath();c.arc(208,84,20,PI,0);c.lineTo(228,92);c.lineTo(188,92);c.closePath();c.fill();c.stroke() + c.fillStyle='#fff';c.beginPath();c.roundRect(184,90,48,16,5);c.fill();c.stroke() + if(on){c.lineWidth=5;c.beginPath();c.arc(208,84,11,PI*1.15,PI*1.45);c.stroke();c.lineWidth=7} + c.translate(70,228);c.rotate(sw);c.translate(-70,-228) + c.beginPath();c.roundRect(14,212,112,22,8);c.fill();c.stroke() + c.beginPath();c.moveTo(cx(46,-1),46);c.lineTo(cx(46,1),46);c.lineTo(cx(214,1),214);c.lineTo(cx(214,-1),214);c.closePath();c.fill();c.stroke() + c.fillStyle='#111';c.beginPath();c.moveTo(cx(90,-1),90);c.lineTo(cx(90,1),90);c.lineTo(cx(118,1),118);c.lineTo(cx(118,-1),118);c.fill() + const e=on?2:-1;for(const d of[-1,1])c.beginPath(),c.arc(70+d*13+e,160-(on?2:0),5.5,0,T),c.fill() + c.lineWidth=5;c.beginPath();c.arc(70+e,172,9,.15*PI,.85*PI);c.stroke() +} diff --git a/gen/ui/construction/crane.js b/gen/ui/construction/crane.js new file mode 100644 index 0000000..73dede0 --- /dev/null +++ b/gen/ui/construction/crane.js @@ -0,0 +1,45 @@ +// a tower crane lowers a content block into the empty slot of a half-built web page, the page scrolls down to make room and a fresh block pops onto the hook +const{sin,PI,min,max}=Math,T=2*PI +export const frames=28,delay=70 +const ease=u=>(u=min(1,max(0,u)),u<.5?2*u*u:1-2*(1-u)**2) +const back=u=>(u=min(1,max(0,u)),1+2.7*(u-1)**3+1.7*(u-1)**2) +const ln=(c,w,f)=>{for(const[l,s]of[[w,'#111'],[w-7,'#fff']])c.lineWidth=l,c.strokeStyle=s,c.beginPath(),f(),c.stroke();c.lineWidth=7;c.strokeStyle='#111'} +const brick=(c,x,y)=>{ + c.lineWidth=5;c.beginPath();c.roundRect(x,y,124,26,6);c.fill();c.stroke() + c.fillStyle='#bbb';c.beginPath();c.roundRect(x+8,y+6,24,14,3);c.fill();c.fillStyle='#fff' + c.strokeStyle='#bbb';for(const[d,w]of[[9,72],[17,48]])c.beginPath(),c.moveTo(x+42,y+d),c.lineTo(x+42+w,y+d),c.stroke() + c.strokeStyle='#111';c.lineWidth=7 +} +export default(c,t)=>{ + const p=ease(t/.42),land=t>=.5,o=32*ease((t-.54)/.28),sx=land?0:6*sin(T*t/.42*1.5)*(1-p) + const hy=land?114-56*ease((t-.5)/.3):58+56*p,sc=t>.82?back((t-.82)/.16):1 + c.beginPath();c.roundRect(14,100,152,138,12);c.fill();c.stroke() + c.lineWidth=5;c.beginPath();c.moveTo(14,122);c.lineTo(166,122);c.stroke() + c.fillStyle='#111';for(const x of[30,44,58])c.beginPath(),c.arc(x,111,4,0,T),c.fill() + c.fillStyle='#fff';c.save();c.beginPath();c.rect(18,124,144,110);c.clip() + for(let k=-2;k<4;k++){ + const y=132+32*k+o + if(k>0||k==0&&land)brick(c,28,y) + else c.setLineDash([8,7]),c.lineWidth=4,c.strokeStyle='#888',c.beginPath(),c.roundRect(28,y,124,26,6),c.stroke(),c.setLineDash([]),c.strokeStyle='#111' + } + c.restore() + if(t>.42&&t<.56)for(const d of[-1,1]){const u=(t-.42)/.14;c.lineWidth=5;c.beginPath();c.arc(90+d*(66+10*u),156-6*u,7*(1-u)+3,0,T);c.fill();c.stroke()} + c.lineWidth=7 + ln(c,9,()=>{c.moveTo(24,34);c.lineTo(200,14);c.lineTo(244,34)}) + c.beginPath();c.roundRect(188,40,24,196,4);c.fill();c.stroke() + c.lineWidth=4;c.beginPath();for(let y=40;y<230;y+=24)c.moveTo(188,y),c.lineTo(212,y+12),c.lineTo(188,y+24);c.stroke() + c.lineWidth=7;c.beginPath();c.roundRect(172,226,56,14,5);c.fill();c.stroke() + c.beginPath();c.roundRect(20,30,228,14,4);c.fill();c.stroke() + c.lineWidth=4;c.beginPath();for(let x=26;x<240;x+=16)c.moveTo(x,31),c.lineTo(x+8,43),c.lineTo(x+16,31);c.stroke() + c.lineWidth=7;c.beginPath();c.roundRect(220,44,24,26,4);c.fill();c.stroke() + c.beginPath();c.moveTo(200,12);c.lineTo(212,30);c.lineTo(188,30);c.closePath();c.fill();c.stroke() + const hx=90+sx + ln(c,9,()=>{c.moveTo(90,52);c.lineTo(hx,hy-10)}) + c.beginPath();c.roundRect(78,42,24,12,4);c.fill();c.stroke() + if(!land||t>.82){ + c.save();c.translate(hx,hy+31);c.scale(sc,sc);c.translate(-hx,-hy-31) + ln(c,8,()=>{c.moveTo(hx-50,hy+18);c.lineTo(hx,hy);c.lineTo(hx+50,hy+18)}) + brick(c,hx-62,hy+18);c.restore() + } + ln(c,11,()=>{c.moveTo(hx,hy-12);c.lineTo(hx,hy);c.arc(hx-6,hy,6,0,PI*.9)}) +} diff --git a/gen/ui/crash/browser.js b/gen/ui/crash/browser.js new file mode 100644 index 0000000..960ff2b --- /dev/null +++ b/gen/ui/crash/browser.js @@ -0,0 +1,31 @@ +// browser window with a dizzy sad face: a crack zigzags down it while it shakes, both halves sag apart, then it blinks off and reloads +const{sin,PI,min,max,hypot}=Math,T=2*PI +export const frames=24,delay=70 +const cl=u=>min(1,max(0,u)),ease=u=>(u=cl(u),u<.5?2*u*u:1-2*(1-u)**2),back=u=>(u=cl(u),1+3*(u-1)**3+2*(u-1)**2) +const K=[[150,30],[150,44],[140,70],[154,96],[134,122],[148,148],[128,174],[140,212],[140,240]],B=[[[154,96],[178,90],[194,104]],[[134,122],[110,128],[96,118]],[[148,148],[170,160],[176,180]]] +const len=P=>P.slice(1).reduce((s,p,k)=>s+hypot(p[0]-P[k][0],p[1]-P[k][1]),0),LK=len(K.slice(1,8)) +export default(c,t,i)=>{ + const r=t<.9,p=r?cl((t-.08)/.26):0,g=r?ease((t-.36)/.1):0,wb=t>.36&&t<.84?.02*sin((t-.36)*T*4)*(1-cl((t-.4)/.4)):0,off=cl((t-.84)/.06),on=back((t-.9)/.1) + const pl=P=>{c.beginPath();for(const q of P)c.lineTo(...q)} + const W=()=>{ + c.beginPath();c.roundRect(24,44,208,168,14);c.fill();c.stroke() + c.beginPath();c.moveTo(24,72);c.lineTo(232,72);c.stroke() + c.lineWidth=4;for(const k of[0,1,2])c.beginPath(),c.arc(42+k*16,58,5,0,T),c.stroke() + c.beginPath();c.roundRect(96,51,122,14,7);c.stroke() + c.lineWidth=7;for(const x of[96,162])c.beginPath(),c.moveTo(x-11,113),c.lineTo(x+11,135),c.moveTo(x+11,113),c.lineTo(x-11,135),c.stroke() + c.lineWidth=6;c.beginPath();c.arc(129,194,24,1.2*PI,1.8*PI);c.stroke() + if(p>0){ + c.lineWidth=9;c.setLineDash([LK*p,999]);pl(K.slice(1,8));c.stroke() + B.forEach((b,k)=>{const q=cl((p-[.29,.46,.62][k])/.25);if(q>0)c.lineWidth=5,c.setLineDash([len(b)*q,999]),pl(b),c.stroke()}) + c.setLineDash([]);c.lineWidth=7 + } + } + if(t>=.9&&on<.02||t>.84&&t<.9&&off>.98)return + const s=t<.84?1:t<.9?1-off:on,sy=t<.84||t>=.9?s:max(.03,1-off),sx=t<.84||t>=.9?s:1+.05*off + c.translate(128+(t>.08&&t<.36?(i%2?3:-3):0),128);c.scale(sx*.94,sy*.94);c.translate(-128,-128) + if(!g&&!wb)return W() + for(const[d,px,py,a]of[[-1,24,44,.07*g+wb],[1,232,44,-.08*g-wb]]){ + c.save();c.translate(px,py);c.rotate(a);c.translate(-px,-py) + pl([[d*999+128,0],...K,[d*999+128,256]]);c.clip();W();c.restore() + } +} diff --git a/gen/ui/deleted/shredder.js b/gen/ui/deleted/shredder.js new file mode 100644 index 0000000..6876798 --- /dev/null +++ b/gen/ui/deleted/shredder.js @@ -0,0 +1,32 @@ +// a sheet of paper pops up and feeds into a chomping shredder, and thin wavy strips stream out the bottom into the bin +const{sin,cos,PI,min,max}=Math,T=2*PI +export const frames=24,delay=70 +const back=u=>(u=min(1,max(0,u)),1+2.7*(u-1)**3+1.7*(u-1)**2) +export default(c,t,i)=>{ + const H=84,s=back(t/.16),f=t<.2?0:min(210,(t-.2)/.58*210),go=t>.2&&t<.8,j=go?(i%2?2:-2):0 + if(f2*sin(y*.1+k*2.1-T*t*3) + if(y1<146||y0>216)continue + c.beginPath();for(let y=max(y0,142);y<=min(y1,218);y+=4)c.lineTo(x+w(y),y);for(let y=min(y1,218);y>=max(y0,142);y-=4)c.lineTo(x+12+w(y),y);c.closePath();c.fill();c.stroke() + } + c.restore();c.lineWidth=5 + for(const[x,a]of[[86,-.6],[116,.3],[146,-.25],[172,.5]])c.save(),c.translate(x,216),c.rotate(a),c.beginPath(),c.roundRect(-5,-16,10,20,4),c.fill(),c.stroke(),c.restore() + c.lineWidth=7 + c.beginPath();c.moveTo(48,208);c.lineTo(208,208);c.lineTo(196,244);c.lineTo(60,244);c.closePath();c.fill();c.stroke() + c.lineWidth=5;for(const x of[96,128,160])c.beginPath(),c.moveTo(x,218),c.lineTo(x,234),c.stroke() + c.translate(j,0);c.lineWidth=7 + c.beginPath();c.roundRect(22,96,212,56,18);c.fill();c.stroke() + c.lineWidth=8;c.beginPath();c.moveTo(66,106);c.lineTo(190,106);c.stroke() + c.fillStyle='#111' + if(go){c.lineWidth=5;for(const d of[-1,1])c.beginPath(),c.moveTo(128+d*36,120),c.lineTo(128+d*26,126),c.lineTo(128+d*36,132),c.stroke() + c.beginPath();c.ellipse(128,138,9,i%2?7:3,0,0,T);c.fill()} + else{for(const d of[-1,1])c.beginPath(),c.arc(128+d*28,124,6,0,T),c.fill();c.lineWidth=5;c.beginPath();c.arc(128,132,9,PI*.15,PI*.85);c.stroke()} +} diff --git a/gen/ui/done/checklist.js b/gen/ui/done/checklist.js new file mode 100644 index 0000000..486b225 --- /dev/null +++ b/gen/ui/done/checklist.js @@ -0,0 +1,24 @@ +// clipboard checklist: the three boxes get ticked one by one, the clipboard does a happy hop, then the ticks pop away +const{sin,PI,min,max,hypot}=Math,T=2*PI +export const frames=24,delay=70 +const cl=u=>min(1,max(0,u)),L=hypot(9,10)+hypot(21,27) +export default(c,t)=>{ + const h=t>.66&&t<.82?sin((t-.66)/.16*PI):0,out=1-cl((t-.88)/.08) + c.translate(128,234-10*h);c.scale(1-.03*h,1+.02*h);c.translate(-128,-234) + c.fillStyle='#ddd';c.beginPath();c.roundRect(50,52,156,182,16);c.fill();c.stroke() + c.fillStyle='#fff';c.lineWidth=5;c.beginPath();c.roundRect(66,70,124,148,6);c.fill();c.stroke() + c.lineWidth=7;c.beginPath();c.arc(128,40,16,0,T);c.fill();c.stroke() + c.beginPath();c.roundRect(92,44,72,26,9);c.fill();c.stroke() + c.lineWidth=5;c.beginPath();c.arc(128,38,5,0,T);c.stroke() + for(let k=0;k<3;k++){ + const y=104+k*48,s=.06+k*.18,p=cl((t-s)/.12),q=cl((t-s-.12)/.1),b=1+.22*sin(q*PI) + c.save();c.translate(96,y);c.scale(b,b) + c.lineWidth=6;c.beginPath();c.roundRect(-15,-15,30,30,7);c.fill();c.stroke();c.restore() + c.lineWidth=10;c.strokeStyle='#bbb';c.beginPath();c.moveTo(126,y-6);c.lineTo([168,154,174][k],y-6);c.moveTo(126,y+8);c.lineTo([150,166,140][k],y+8);c.stroke() + c.strokeStyle='#111' + if(p>0&&out>0){ + c.save();c.translate(96,y);c.scale(out,out);c.lineWidth=11;c.setLineDash([L*p,999]) + c.beginPath();c.moveTo(-10,-1);c.lineTo(-1,9);c.lineTo(20,-18);c.stroke();c.restore() + } + } +} diff --git a/gen/ui/download/tray.js b/gen/ui/download/tray.js new file mode 100644 index 0000000..fdf37a2 --- /dev/null +++ b/gen/ui/download/tray.js @@ -0,0 +1,23 @@ +// a down arrow pops up and drops into a smiling tray, which squashes and bounces as it catches it +const{sin,cos,PI,min,max,exp}=Math,T=2*PI +export const frames=18,delay=70 +const back=u=>(u=min(1,max(0,u)),1+2.7*(u-1)**3+1.7*(u-1)**2) +const ln=(c,w,f)=>{for(const[l,s]of[[w,'#111'],[w-7,'#fff']])c.lineWidth=l,c.strokeStyle=s,c.beginPath(),f(),c.stroke();c.lineWidth=7;c.strokeStyle='#111'} +export default(c,t)=>{ + const s=back(t/.16),v=max(0,(t-.14)/.3),y=58+142*v*v,h=t-.44,b=h>0?.16*exp(-7*h)*cos(h*T*3):0,hit=h>0&&h<.16 + c.translate(128,238);c.scale(1+b*.6,1-b);c.translate(-128,-238) + c.fillStyle='#ddd';c.beginPath();c.roundRect(36,132,184,34,14);c.fill();c.stroke();c.fillStyle='#fff' + if(v<1){ + c.save();c.beginPath();c.rect(0,0,256,226);c.clip() + if(v>.25)for(const x of[-12,12])ln(c,11,()=>{c.moveTo(128+x,y-46);c.lineTo(128+x,y-46-34*v)}) + c.translate(128,y);c.scale(s,s) + c.beginPath();c.moveTo(0,40);c.lineTo(36,2);c.lineTo(15,2);c.lineTo(15,-38);c.lineTo(-15,-38);c.lineTo(-15,2);c.lineTo(-36,2);c.closePath();c.fill();c.stroke() + c.restore() + } + if(hit)for(const d of[-1,1])for(const a of[-.5,0,.5])ln(c,11,()=>{const q=-PI/2+d*(.9+a*.45);c.moveTo(128+d*96+cos(q)*14,134+sin(q)*14);c.lineTo(128+d*96+cos(q)*30,134+sin(q)*30)}) + c.beginPath();c.moveTo(24,150);c.lineTo(232,150);c.lineTo(214,236);c.lineTo(42,236);c.closePath();c.fill();c.stroke() + c.fillStyle='#111';c.lineWidth=6 + if(hit)for(const d of[-1,1])c.beginPath(),c.arc(128+d*26,192,9,PI*1.15,PI*1.85),c.stroke() + else for(const d of[-1,1])c.beginPath(),c.arc(128+d*26,188,7,0,T),c.fill() + c.beginPath();if(hit)c.arc(128,200,11,0,PI),c.closePath(),c.fill();else c.arc(128,198,11,PI*.15,PI*.85),c.stroke() +} diff --git a/gen/ui/error/bug.js b/gen/ui/error/bug.js new file mode 100644 index 0000000..f4b6227 --- /dev/null +++ b/gen/ui/error/bug.js @@ -0,0 +1,26 @@ +// a little beetle scuttles in a figure eight over a code editor, the line it's crawling on lights up as the buggy one +const{sin,cos,PI,atan2,round,min,max}=Math,T=2*PI +export const frames=24,delay=70 +const C=[[0,[28,1],[40,0],[22,0]],[1,[22,1],[58,0]],[2,[30,0],[18,1],[36,0]],[2,[46,0],[26,0]],[1,[16,1],[40,0]],[0,[12,1]],[0,[34,1],[50,0]]] +export default(c,t)=>{ + const x=128+74*sin(T*t),y=148+44*sin(2*T*t),h=atan2(88*cos(2*T*t),74*cos(T*t)),r=min(6,max(0,round((y-88)/20))),st=sin(T*t*8) + c.beginPath();c.roundRect(16,36,224,188,14);c.fill();c.stroke() + c.beginPath();c.moveTo(16,64);c.lineTo(240,64);c.stroke() + c.lineWidth=4;for(const k of[0,1,2])c.beginPath(),c.arc(36+k*18,50,5,0,T),k?c.stroke():(c.fillStyle='#111',c.fill(),c.stroke()) + c.fillStyle='#ddd';c.beginPath();c.roundRect(26,79+r*20,204,18,5);c.fill() + C.forEach(([n,...s],k)=>{ + const y=88+k*20;let x=60+n*18 + c.lineWidth=8;c.strokeStyle='#bbb';c.beginPath();c.moveTo(34,y);c.lineTo(42,y);c.stroke() + for(const[l,d]of s)c.strokeStyle=d?'#111':'#aaa',c.beginPath(),c.moveTo(x,y),c.lineTo(x+l,y),c.stroke(),x+=l+12 + }) + c.strokeStyle='#111';c.lineWidth=3;c.beginPath();for(let k=0;k<=30;k++)c.lineTo(60+k*4,88+r*20+10+(k%2?2:-2));c.stroke() + c.translate(x,y);c.rotate(h);c.scale(1.25,1.25) + c.lineWidth=4.5 + for(const s of[-1,1])for(const k of[-1,0,1]){const g=(k+s)%2?st:-st;c.beginPath();c.moveTo(k*9,s*10);c.lineTo(k*12+g*6,s*22);c.lineTo(k*16+g*7,s*28);c.stroke()} + for(const s of[-1,1]){c.beginPath();c.moveTo(26,s*5);c.quadraticCurveTo(36,s*8,40,s*16+st*2*s);c.stroke()} + c.fillStyle='#111';c.lineWidth=6;c.beginPath();c.arc(22,0,11,0,T);c.fill();c.stroke() + c.beginPath();c.ellipse(-2,0,23,18,0,0,T);c.fill();c.stroke() + c.strokeStyle='#fff';c.lineWidth=3;c.beginPath();c.moveTo(14,0);c.lineTo(-22,0);c.stroke() + c.fillStyle='#fff';for(const[a,b,r]of[[2,-9,4],[-12,-8,3],[2,9,4],[-12,8,3]])c.beginPath(),c.arc(a,b,r,0,T),c.fill() + for(const s of[-1,1])c.beginPath(),c.arc(26,s*5,4,0,T),c.fill();c.fillStyle='#111';for(const s of[-1,1])c.beginPath(),c.arc(28,s*5,2,0,T),c.fill() +} diff --git a/gen/ui/error/cross.js b/gen/ui/error/cross.js new file mode 100644 index 0000000..7fb2ec5 --- /dev/null +++ b/gen/ui/error/cross.js @@ -0,0 +1,13 @@ +// round error badge with a big X shaking its head side to side like "nope nope", then pausing +const{sin,PI,abs,min}=Math,T=2*PI +export const frames=20,delay=60 +export default(c,t)=>{ + const D=(f,a=12,b=5)=>{for(const[w,s]of[[a,'#111'],[b,'#fff']])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),f(),c.stroke();c.lineWidth=7;c.strokeStyle='#111'} + const u=min(1,t/.6),s=sin(T*u*3)*sin(PI*u)**.6 + if(abs(s)>.6){const d=s>0?-1:1;for(const r of[96,114])D(()=>c.arc(128+16*s,128,r,d>0?-.4:PI-.4,d>0?.4:PI+.4),11,4)} + c.translate(128+16*s,128);c.rotate(.1*s);c.scale(1-.06*abs(s),1) + c.beginPath();c.arc(0,0,84,0,T);c.fill();c.stroke() + c.lineWidth=5;c.beginPath();c.arc(0,0,70,0,T);c.stroke() + c.translate(18*s,0);c.scale(1-.2*abs(s),1);c.lineWidth=26 + c.beginPath();c.moveTo(-30,-30);c.lineTo(30,30);c.moveTo(30,-30);c.lineTo(-30,30);c.stroke() +} diff --git a/gen/ui/error/robot.js b/gen/ui/error/robot.js new file mode 100644 index 0000000..2e61c4f --- /dev/null +++ b/gen/ui/error/robot.js @@ -0,0 +1,34 @@ +// broken robot slumped on the floor: head drooping, bent antenna sparking, one eye flickering, a loose spring boinging out of its head +const{sin,cos,PI}=Math,T=2*PI +export const frames=16,delay=90 +const FL=[1,1,0,1,0,0,1,1,1,1,0,1,1,0,1,1],SP=[1,0,0,1,1,0,0,0,1,0,1,1,0,0,0,0] +export default(c,t,i)=>{ + const D=(f,a=20,b=8)=>{for(const[l,s]of[[a,'#111'],[b,'#fff']])c.lineWidth=l,c.strokeStyle=s,c.beginPath(),f(),c.stroke();c.lineWidth=7;c.strokeStyle='#111'} + c.translate(-8,0) + const br=2*sin(T*t),ha=.5+.04*sin(T*t-.6) + for(const d of[-1,1]){D(()=>{c.moveTo(118+d*24,206);c.lineTo(118+d*44,220)});c.beginPath();c.roundRect(118+d*50-18,210,36,22,9);c.fill();c.stroke()} + for(const d of[-1,1]){ + D(()=>{c.moveTo(118+d*44,160+br);c.quadraticCurveTo(118+d*66,176,118+d*66,206)}) + c.lineWidth=6;c.beginPath();c.arc(118+d*66,214,10,0,T);c.fill();c.stroke();c.lineWidth=7 + } + c.beginPath();c.roundRect(72,144+br,92,70-br,14);c.fill();c.stroke() + c.fillStyle='#111';c.beginPath();c.arc(100,168+br,6,0,T);c.fill() + c.lineWidth=4;c.beginPath();c.arc(118,168+br,6,0,T);c.stroke() + c.beginPath();c.moveTo(131,162+br);c.lineTo(141,172+br);c.moveTo(141,162+br);c.lineTo(131,172+br);c.stroke() + for(const y of[188,198])c.beginPath(),c.moveTo(98,y+br*.5),c.lineTo(138,y+br*.5),c.stroke() + c.fillStyle='#fff';c.lineWidth=7 + c.translate(126,146+br);c.rotate(ha) + c.beginPath();c.rect(-8,-10,16,12);c.fill();c.stroke() + c.save();c.translate(-44,-48);c.rotate(-1.75+.35*sin(2*T*t)) + D(()=>{for(let k=0;k<=60;k++){const u=k/60;c.lineTo(9*sin(u*T*4.5),-u*46)}},13,5) + c.beginPath();c.arc(0,-52,9,0,T);c.fill();c.stroke();c.restore() + D(()=>{c.moveTo(16,-70);c.lineTo(26,-92);c.lineTo(50,-90)},12,5) + if(SP[i])for(let k=0;k<4;k++){const a=-1.6+k*1.05+(i%3)*.25,x=55+cos(a)*13,y=-90+sin(a)*13,p=a+1.4;D(()=>{c.moveTo(x,y);c.lineTo(x+cos(a)*10+cos(p)*5,y+sin(a)*10+sin(p)*5);c.lineTo(x+cos(a)*12-cos(p)*5,y+sin(a)*12-sin(p)*5);c.lineTo(x+cos(a)*19,y+sin(a)*19)},10,4)} + c.beginPath();c.arc(55,-90,8,0,T);c.fill();c.stroke() + c.beginPath();c.roundRect(-46,-72,92,64,15);c.fill();c.stroke() + c.fillStyle='#111' + if(FL[i])c.beginPath(),c.roundRect(-28,-52,14,20,7),c.fill() + else c.lineWidth=5,c.beginPath(),c.moveTo(-28,-41),c.lineTo(-14,-41),c.stroke() + c.lineWidth=6;c.beginPath();c.moveTo(13,-51);c.lineTo(27,-35);c.moveTo(27,-51);c.lineTo(13,-35);c.stroke() + c.lineWidth=5;c.beginPath();for(let k=0;k<=4;k++)c.lineTo(-14+k*7,-20+(k%2?-4:2));c.stroke() +} diff --git a/gen/ui/folder/empty.js b/gen/ui/folder/empty.js new file mode 100644 index 0000000..67b727d --- /dev/null +++ b/gen/ui/folder/empty.js @@ -0,0 +1,36 @@ +// folder flap swings open showing nothing inside, a little moth flutters out and flies off, then the flap closes +const{sin,cos,PI,min,max,abs}=Math,T=2*PI +export const frames=24,delay=70 +const cl=u=>min(1,max(0,u)),ease=u=>(u=cl(u),u<.5?2*u*u:1-2*(1-u)**2) +const moth=(c,f)=>{ + for(const d of[-1,1]){ + for(const[w,s]of[[11,'#111'],[4,'#fff']]){c.lineWidth=w;c.strokeStyle=s;c.beginPath();c.moveTo(d*3,-14);c.quadraticCurveTo(d*6,-26,d*16,-31);for(const k of[0,1,2]){const x=d*(6+k*4),y=-22-k*3.5;c.moveTo(x,y);c.lineTo(x+d*5,y+4)}c.stroke()} + c.strokeStyle='#111';c.lineWidth=5 + c.save();c.scale(d*f,1) + c.beginPath();c.moveTo(4,2);c.quadraticCurveTo(30,4,26,22);c.quadraticCurveTo(12,26,4,12);c.closePath();c.fill();c.stroke() + c.beginPath();c.moveTo(4,-8);c.lineTo(48,-20);c.quadraticCurveTo(48,2,8,6);c.closePath();c.fill();c.stroke() + c.fillStyle='#bbb';c.beginPath();c.arc(30,-9,5,0,T);c.fill();c.fillStyle='#fff' + c.lineWidth=3.5;c.beginPath();c.moveTo(14,-2);c.lineTo(40,-12);c.stroke() + c.restore() + } + c.lineWidth=5;c.beginPath();c.ellipse(0,2,8,18,0,0,T);c.fill();c.stroke() + c.beginPath();c.arc(0,-11,9,0,T);c.fill();c.stroke() + c.lineWidth=3.5;for(const y of[6,13])c.beginPath(),c.moveTo(-6,y),c.lineTo(6,y),c.stroke() + c.fillStyle='#111';for(const d of[-1,1])c.beginPath(),c.arc(d*3.5,-12,2.3,0,T),c.fill() +} +export default(c,t)=>{ + const o=ease((t-.04)/.16)-ease((t-.84)/.12),u=(t-.2)/.6 + c.beginPath();c.roundRect(32,56,80,34,11);c.fill();c.stroke() + c.beginPath();c.roundRect(32,74,192,150,12);c.fill();c.stroke() + if(o>0)c.fillStyle='#ddd',c.beginPath(),c.roundRect(40,84,176,136,8),c.fill(),c.fillStyle='#fff' + const mo=()=>{if(u>0&&u<1){const s=cl(u/.1)*(1-.45*u)*(u>.9?1-(u-.9)/.1:1),x=128+34*sin(u*T*1.5)+40*u,y=150-112*u**.9 + c.save();c.translate(x,y);c.rotate(.25*sin(u*T*1.5+1));c.scale(s*1.25,s*1.25);moth(c,.3+.7*abs(cos(T*t*5)));c.restore();c.lineWidth=7}} + if(u<.12)mo() + const fy=1-.36*o + c.save();c.translate(128,224);c.transform(1,0,-.12*o,fy,0,0) + c.beginPath();c.roundRect(-96,-128,192,128,12);c.fill();c.stroke() + c.fillStyle='#111';for(const d of[-1,1])c.beginPath(),o>.5?c.ellipse(d*26,-68,7,9,0,0,T):c.ellipse(d*26,-64,7,7,0,0,T),c.fill() + c.lineWidth=5;c.beginPath();o>.5?c.ellipse(0,-46,7,8,0,0,T):c.arc(0,-52,9,.15*PI,.85*PI);c.stroke() + c.restore() + if(u>=.12)mo() +} diff --git a/gen/ui/inbox/empty.js b/gen/ui/inbox/empty.js new file mode 100644 index 0000000..75eb4b1 --- /dev/null +++ b/gen/ui/inbox/empty.js @@ -0,0 +1,26 @@ +// empty inbox tray looking bored while a fly buzzes loop-de-loops around it, leaving a dotted trail +const{sin,cos,PI,atan2}=Math,T=2*PI +export const frames=24,delay=70 +const F=u=>{const a=T*u;return[128+80*cos(a)+16*cos(4*a),116+60*sin(a)+18*sin(4*a)]} +export default(c,t,i)=>{ + const fly=(u,back)=>{ + for(let j=12;j>0;j--){const v=u-j*.012;if((sin(T*v)<0)!=back)continue;const[x,y]=F(v);c.lineWidth=3;c.beginPath();c.arc(x,y,3.2,0,T);c.fill();c.stroke()} + if((sin(T*u)<0)!=back)return + const[x,y]=F(u),[px,py]=F(u-.004),h=atan2(y-py,x-px),f=i%2 + c.save();c.translate(x,y);c.rotate(h);c.scale(1.45,1.45) + c.lineWidth=3.5;for(const d of[-1,1])c.save(),c.translate(-3,d*5),c.rotate(d*(f?.5:1.1)),c.beginPath(),c.ellipse(-8,0,11,6,0,0,T),c.fill(),c.stroke(),c.restore() + c.strokeStyle='#fff';c.lineWidth=5;c.beginPath();c.ellipse(-2,0,11,7.5,0,0,T);c.stroke();c.beginPath();c.arc(10,0,6.5,0,T);c.stroke() + c.fillStyle='#111';c.beginPath();c.ellipse(-2,0,11,7.5,0,0,T);c.fill();c.beginPath();c.arc(10,0,6.5,0,T);c.fill() + c.fillStyle='#fff';for(const d of[-1,1])c.beginPath(),c.arc(12,d*3.5,3,0,T),c.fill() + c.restore();c.fillStyle='#fff';c.strokeStyle='#111';c.lineWidth=7 + } + fly(t,1) + c.lineWidth=7 + c.fillStyle='#ddd';c.beginPath();c.moveTo(64,100);c.lineTo(192,100);c.lineTo(222,138);c.lineTo(34,138);c.closePath();c.fill();c.stroke() + c.fillStyle='#fff';c.beginPath();c.moveTo(34,138);c.lineTo(82,138);c.lineTo(94,162);c.lineTo(162,162);c.lineTo(174,138);c.lineTo(222,138);c.lineTo(222,208);c.quadraticCurveTo(222,224,206,224);c.lineTo(50,224);c.quadraticCurveTo(34,224,34,208);c.closePath();c.fill();c.stroke() + c.fillStyle='#111';for(const x of[106,150])c.beginPath(),c.arc(x,188,7,0,PI),c.fill() + c.lineWidth=5;for(const x of[106,150])c.beginPath(),c.moveTo(x-10,188),c.lineTo(x+10,188),c.stroke() + c.beginPath();c.moveTo(119,206);c.lineTo(137,206);c.stroke() + c.fillStyle='#fff';c.lineWidth=7 + fly(t,0) +} diff --git a/gen/ui/loading/bar.js b/gen/ui/loading/bar.js new file mode 100644 index 0000000..11f9725 --- /dev/null +++ b/gen/ui/loading/bar.js @@ -0,0 +1,15 @@ +// rounded progress bar: the striped fill eases out to full while its stripes slide, then slips off the end and wraps round to start again +const{min,max}=Math +export const frames=24,delay=70 +const io=u=>(u=min(1,max(0,u)),u<.5?2*u*u:1-2*(1-u)**2) +export default(c,t)=>{ + const X=32,W=192,b=X+W*io(t/.7),a=X+W*io((t-.72)/.26) + c.beginPath();c.roundRect(18,92,220,72,36);c.fill();c.stroke() + if(b-a<1)return + c.save();c.beginPath();c.roundRect(32,106,192,44,22);c.clip() + c.beginPath();c.roundRect(a,106,b-a,44,22);c.clip() + c.fillStyle='#111';c.fillRect(0,0,256,256) + c.fillStyle='#888';const o=t*72%24 + for(let x=-48+o;x<256;x+=24)c.beginPath(),c.moveTo(x,150),c.lineTo(x+12,150),c.lineTo(x+34,106),c.lineTo(x+22,106),c.fill() + c.restore() +} diff --git a/gen/ui/loading/blocks.js b/gen/ui/loading/blocks.js new file mode 100644 index 0000000..8f60f1a --- /dev/null +++ b/gen/ui/loading/blocks.js @@ -0,0 +1,18 @@ +// sliding puzzle loader: rounded blocks in a 2x2 tray take turns sliding into the one empty slot, so the gap walks round and round +const{min,max}=Math +export const frames=24,delay=70 +const S=[[44,44],[132,44],[132,132],[44,132]],io=u=>(u=min(1,max(0,u)),u<.5?2*u*u:1-2*(1-u)**2) +export default(c,t)=>{ + const n=Math.floor(t*4),p=io((t*4%1)/.6),g=(7-n)%4 + c.beginPath();c.roundRect(28,28,200,200,28);c.fill();c.stroke() + c.fillStyle='#ddd';for(const[x,y]of S)c.beginPath(),c.roundRect(x+6,y+6,68,68,14),c.fill() + c.fillStyle='#fff' + for(let k=0;k<4;k++){ + if(k==g)continue + const m=k==(g+3)%4,[x0,y0]=S[k],[x1,y1]=S[g],x=m?x0+(x1-x0)*p:x0,y=m?y0+(y1-y0)*p:y0 + c.beginPath();c.roundRect(x,y,80,80,18);c.fill();c.stroke() + const dx=m&&p<1?(x1-x0)/88*6:0,dy=m&&p<1?(y1-y0)/88*6:0 + c.fillStyle='#111';for(const d of[-1,1])c.beginPath(),c.arc(x+40+d*13+dx,y+38+dy,5,0,2*Math.PI),c.fill() + c.fillStyle='#fff' + } +} diff --git a/gen/ui/loading/dots.js b/gen/ui/loading/dots.js new file mode 100644 index 0000000..97ebe57 --- /dev/null +++ b/gen/ui/loading/dots.js @@ -0,0 +1,12 @@ +// three chunky dots hop up one after another in a wave, stretching as they fly and squashing as they land +const{sin,cos,PI,max,abs}=Math,T=2*PI +export const frames=20,delay=60 +export default(c,t)=>{ + for(let k=0;k<3;k++){ + const x=54+k*74,u=((t-k*.13)%1+1)%1,h=u<.5?sin(T*u):0,v=u<.5?abs(sin(2*T*u)):0,q=u>.5&&u<.62?sin(PI*(u-.5)/.12):0 + const sx=1-.05*v+.16*q,sy=1+.07*v-.18*q,r=31,y=196-80*h + c.fillStyle='#bbb';c.beginPath();c.ellipse(x,200,24*(1-.45*h)*sx,5*(1-.4*h),0,0,T);c.fill() + c.fillStyle='#fff';c.save();c.translate(x,y);c.scale(sx,sy) + c.lineWidth=7/((sx+sy)/2);c.beginPath();c.arc(0,-r,r,0,T);c.fill();c.stroke();c.restore() + } +} diff --git a/gen/ui/loading/orbit.js b/gen/ui/loading/orbit.js new file mode 100644 index 0000000..37a7b00 --- /dev/null +++ b/gen/ui/loading/orbit.js @@ -0,0 +1,20 @@ +// a little smiling planet while two moons circle it at different speeds along dashed orbit paths +const{sin,cos,PI}=Math,T=2*PI +export const frames=24,delay=70 +const O=[[72,38,-.42,2,12],[102,58,.3,1,15]] +export default(c,t)=>{ + const pt=([rx,ry,a],f)=>[128+rx*cos(f)*cos(a)-ry*sin(f)*sin(a),128+rx*cos(f)*sin(a)+ry*sin(f)*cos(a)] + const orb=(o,a0,a1)=>{for(const[w,s]of[[9,'#111'],[3.5,'#fff']]){c.lineWidth=w;c.strokeStyle=s;c.setLineDash([9,18]);c.beginPath();c.ellipse(128,128,o[0],o[1],o[2],a0,a1);c.stroke()}c.setLineDash([])} + const M=O.map(o=>{const f=o[3]*T*t+o[3];return[...pt(o,f),o[4]*(1+.15*sin(f)),sin(f)]}) + const moon=([x,y,r])=>{c.lineWidth=6;c.strokeStyle='#111';c.beginPath();c.arc(x,y,r,0,T);c.fill();c.stroke();c.fillStyle='#ccc';c.beginPath();c.arc(x+r*.3,y-r*.25,r*.28,0,T);c.fill();c.fillStyle='#fff'} + for(const o of O)orb(o,PI,T) + for(const m of M)if(m[3]<0)moon(m) + const b=3*sin(T*t*2) + c.lineWidth=7;c.strokeStyle='#111';c.beginPath();c.arc(128,128+b,40,0,T);c.fill() + c.save();c.clip();c.fillStyle='#ddd';c.beginPath();c.ellipse(128,152+b,52,10,-.12,0,T);c.fill();c.restore() + c.beginPath();c.arc(128,128+b,40,0,T);c.stroke() + c.fillStyle='#111';for(const d of[-1,1])c.beginPath(),c.arc(128+d*12,122+b,4.5,0,T),c.fill() + c.lineWidth=4;c.beginPath();c.arc(128,130+b,7,.15*PI,.85*PI);c.stroke();c.fillStyle='#fff' + for(const o of O)orb(o,0,PI) + for(const m of M)if(m[3]>=0)moon(m) +} diff --git a/gen/ui/loading/pulse.js b/gen/ui/loading/pulse.js new file mode 100644 index 0000000..054b91b --- /dev/null +++ b/gen/ui/loading/pulse.js @@ -0,0 +1,12 @@ +// a dot sends out radar ripple rings that grow wider and thinner until they fade away +const{cos,PI}=Math,T=2*PI +export const frames=15,delay=80 +export default(c,t)=>{ + for(let k=0;k<3;k++){ + const p=(t+k/3)%1,r=28+88*p + c.lineWidth=16*(1-p)**.7;c.strokeStyle='#999';c.beginPath();c.arc(128,128,r,0,T);c.stroke() + } + const s=1+.08*cos(T*3*t) + c.lineWidth=7;c.strokeStyle='#111';c.beginPath();c.arc(128,128,30*s,0,T);c.fill();c.stroke() + c.fillStyle='#111';c.beginPath();c.arc(128,128,13*s,0,T);c.fill() +} diff --git a/gen/ui/loading/ring.js b/gen/ui/loading/ring.js new file mode 100644 index 0000000..a5737e4 --- /dev/null +++ b/gen/ui/loading/ring.js @@ -0,0 +1,8 @@ +// material style spinner: one thick arc spins round, stretching long and then shrinking short as it goes +const{PI,min,max,floor}=Math,T=2*PI +export const frames=30,delay=50 +const e=u=>(u=min(1,max(0,u)),u<.5?4*u**3:1-4*(1-u)**3) +export default(c,t)=>{ + const q=t*2%1,G=1.5*PI,o=T*t*1.5+floor(t*2)*G-PI/2,a=o+G*e(q*2-1),b=o+.6+G*e(q*2) + for(const[w,s]of[[42,'#111'],[28,'#fff']])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),c.arc(128,128,86,a,b),c.stroke() +} diff --git a/gen/ui/loading/skeleton.js b/gen/ui/loading/skeleton.js new file mode 100644 index 0000000..c5920ae --- /dev/null +++ b/gen/ui/loading/skeleton.js @@ -0,0 +1,13 @@ +// skeleton placeholder card: gray avatar, text lines and image box with a soft shimmer band sweeping across them +const T=2*Math.PI +export const frames=20,delay=70 +export default(c,t)=>{ + c.beginPath();c.roundRect(22,22,212,212,22);c.fill();c.stroke() + const x=-70+t*400,g=c.createLinearGradient(x-56,150,x+56,106) + for(const[o,s]of[[0,'#d6d6d6'],[.5,'#f4f4f4'],[1,'#d6d6d6']])g.addColorStop(o,s) + c.fillStyle=g;c.beginPath();c.arc(68,68,24,0,T) + for(const[x,y,w]of[[104,52,104],[104,74,70],[42,188,172],[42,208,116]])c.roundRect(x,y,w,13,6.5) + c.roundRect(42,106,172,70,12);c.fill() + c.fillStyle='#c4c4c4';c.beginPath();c.moveTo(96,166);c.lineTo(122,132);c.lineTo(140,152);c.lineTo(152,140);c.lineTo(172,166);c.fill() + c.beginPath();c.arc(170,128,9,0,T);c.fill() +} diff --git a/gen/ui/maintenance/wrench.js b/gen/ui/maintenance/wrench.js new file mode 100644 index 0000000..89fcb72 --- /dev/null +++ b/gen/ui/maintenance/wrench.js @@ -0,0 +1,26 @@ +// a ring wrench cranks a hex bolt a sixth of a turn and ratchets back for another go, while a big gear turns behind them +const{sin,cos,PI,min,max}=Math,T=2*PI +export const frames=16,delay=80 +const ease=u=>(u=min(1,max(0,u)),u<.5?2*u*u:1-2*(1-u)**2) +const ln=(c,w,f)=>{for(const[l,s]of[[w,'#111'],[w-7,'#fff']])c.lineWidth=l,c.strokeStyle=s,c.beginPath(),f(),c.stroke();c.lineWidth=7;c.strokeStyle='#111'} +const gear=(c,x,y,n,R,th)=>{ + const p=T/n,ri=R-10,ro=R+9 + c.beginPath();for(let k=0;k{ + const p=ease(t/.5),q=ease((t-.6)/.32),a=-.55+(p-q)*PI/3,b=p*PI/3,X=112,Y=160 + gear(c,82,92,10,54,-t*T/5) + if(p>.15&&p<.95)for(const r of[128,110])ln(c,11,()=>c.arc(X,Y,r,a-.42,a-.16)) + c.save();c.translate(X,Y);c.rotate(a) + const sh=()=>{c.beginPath();c.roundRect(20,-15,104,30,15);c.moveTo(38,0);c.arc(0,0,38,0,T)} + c.lineWidth=14;sh();c.stroke();sh();c.fill() + c.lineWidth=4;c.beginPath();c.roundRect(52,-5,52,10,5);c.stroke() + c.lineWidth=6;c.beginPath();c.arc(0,0,27,0,T);c.stroke() + c.restore() + c.lineWidth=6;c.beginPath();for(let k=0;k<6;k++)c.lineTo(X+cos(b+k*PI/3)*21,Y+sin(b+k*PI/3)*21);c.closePath();c.fill();c.stroke() + c.lineWidth=5;c.beginPath();c.arc(X,Y,10,0,T);c.stroke() +} diff --git a/gen/ui/offline/plug.js b/gen/ui/offline/plug.js new file mode 100644 index 0000000..ebc76ea --- /dev/null +++ b/gen/ui/offline/plug.js @@ -0,0 +1,34 @@ +// a plug gets yanked out of the wall socket with a tiny spark, it dangles sadly while its cord wiggles, then slides back in +const{sin,cos,PI,min,max}=Math,T=2*PI +export const frames=24,delay=70 +const ease=u=>(u=min(1,max(0,u)),u<.5?2*u*u:1-2*(1-u)**2) +const ln=(c,w,f)=>{for(const[l,s]of[[w,'#111'],[w-8,'#fff']])c.lineWidth=l,c.strokeStyle=s,c.beginPath(),f(),c.stroke();c.lineWidth=7;c.strokeStyle='#111'} +export default(c,t,i)=>{ + const u=min(1,max(0,(t-.1)/.1)),d=56*(1-(1-u)**2)-56*ease((t-.78)/.16),out=d>4,w=out?max(0,1-(t-.2)/.5):0 + const dy=out?5*sin(T*t*3)*w:0,a=out?.07*sin(T*t*3+1)*w:0,A=2+9*w + ln(c,18,()=>{ + const x0=168+d,y0=128+dy + c.moveTo(x0,y0) + for(let k=1;k<=24;k++){ + const v=k/24,m=1-v,bx=m**3*x0+3*m*m*v*(x0+56)+3*m*v*v*230+v**3*202,by=m**3*y0+3*m*m*v*y0+3*m*v*v*200+v**3*244 + c.lineTo(bx+A*sin(v*12-T*t*4)*v*m*4,by) + } + }) + c.beginPath();c.roundRect(12,14,26,232,8);c.fill();c.stroke() + c.save();c.translate(116+d,128+dy);c.rotate(a) + for(const y of[-18,18])c.beginPath(),c.roundRect(-58,y-5,30,10,3),c.fill(),c.stroke() + c.beginPath();c.roundRect(48,-16,16,32,6);c.fill();c.stroke() + c.beginPath();c.roundRect(-30,-38,80,76,18);c.fill();c.stroke() + c.fillStyle='#111' + if(out){c.lineWidth=5;for(const x of[-6,26])c.beginPath(),c.moveTo(x-6,-12),c.lineTo(x+6,-6),c.moveTo(x-6,-6),c.lineTo(x+6,-12),c.stroke();c.beginPath();c.ellipse(10,14,7,8,0,0,T);c.fill()} + else{for(const x of[-6,26])c.beginPath(),c.arc(x,-8,5.5,0,T),c.fill();c.lineWidth=5;c.beginPath();c.arc(10,6,10,.15*PI,.85*PI);c.stroke()} + c.restore();c.fillStyle='#fff';c.lineWidth=7 + c.beginPath();c.roundRect(32,70,58,116,14);c.fill();c.stroke() + c.fillStyle='#111';for(const y of[110,146])c.beginPath(),c.roundRect(76,y-7,14,14,3),c.fill() + c.fillStyle='#fff' + if(t>.1&&t<.24){ + const s=1-(t-.1)/.14 + for(const a of[-2.3,-1.57,-.84,.84,1.57,2.3])ln(c,11,()=>{c.moveTo(98+cos(a)*16,128+sin(a)*16);c.lineTo(98+cos(a)*(16+18*s),128+sin(a)*(16+18*s))}) + c.lineWidth=5;c.beginPath();for(let k=0;k<8;k++){const r=k%2?5:13*s+4;c.lineTo(98+cos(k*PI/4)*r,128+sin(k*PI/4)*r)};c.closePath();c.fill();c.stroke() + } +} diff --git a/gen/ui/offline/wifi.js b/gen/ui/offline/wifi.js new file mode 100644 index 0000000..9f31653 --- /dev/null +++ b/gen/ui/offline/wifi.js @@ -0,0 +1,20 @@ +// wifi arcs flicker out one by one from the outside in, a big X pops up and shakes, then the arcs flicker back on +const{sin,cos,PI,min,max}=Math,T=2*PI +export const frames=28,delay=70 +const back=u=>(u=min(1,max(0,u)),1+2.7*(u-1)**3+1.7*(u-1)**2) +export default(c,t,i)=>{ + const R=[50,94,138],O=[9,6,3],N=[20,22,24] + for(let k=2;k>=0;k--){ + const o=O[k],n=N[k],on=i=n+2 + if(on)for(const[w,s]of[[32,'#111'],[18,'#fff']])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),c.arc(128,206,R[k],-PI*.75,-PI*.25),c.stroke() + else{c.setLineDash([1,15]);for(const[w,s]of[[11,'#111'],[4,'#bbb']])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),c.arc(128,206,R[k],-PI*.75,-PI*.25),c.stroke();c.setLineDash([])} + } + c.lineWidth=7;c.strokeStyle='#111' + c.beginPath();c.arc(128,206,20,0,T);c.fill();c.stroke() + if(i>=12&&i<20){ + const s=i<19?back((i-11)/3):.45,r=i>13&&i<19?(i%2?.14:-.14):0 + c.save();c.translate(128,112);c.rotate(r);c.scale(s,s) + for(const[w,k]of[[40,'#111'],[24,'#fff']])c.lineWidth=w,c.strokeStyle=k,c.beginPath(),c.moveTo(-36,-36),c.lineTo(36,36),c.moveTo(36,-36),c.lineTo(-36,36),c.stroke() + c.restore() + } +} diff --git a/gen/ui/payment/card.js b/gen/ui/payment/card.js new file mode 100644 index 0000000..dc8be50 --- /dev/null +++ b/gen/ui/payment/card.js @@ -0,0 +1,35 @@ +// a credit card pops in and swipes down the side slot of a card terminal, the screen thinks, then a check pops up with a beep +const{sin,cos,PI,min,max,hypot}=Math,T=2*PI +export const frames=24,delay=70 +const cl=u=>min(1,max(0,u)),ease=u=>(u=cl(u),u<.5?2*u*u:1-2*(1-u)**2),back=u=>(u=cl(u),1+3*(u-1)**3+2*(u-1)**2) +const L=hypot(11,11)+hypot(24,26) +export default(c,t)=>{ + const D=(f,a=12,b=5)=>{for(const[w,s]of[[a,'#111'],[b,'#fff']])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),f(),c.stroke();c.lineWidth=7;c.strokeStyle='#111'} + const sw=ease((t-.12)/.2),cy=72+96*sw,cs=back(t/.1)*(1-ease((t-.8)/.08)),ck=cl((t-.42)/.12),v=sin(cl((t-.12)/.2)*PI) + c.beginPath();c.roundRect(112,56,104,180,18);c.fill();c.stroke() + c.fillStyle='#111';c.beginPath();c.roundRect(126,72,76,60,9);c.fill() + c.fillStyle='#fff';c.lineWidth=4 + for(let r=0;r<3;r++)for(let k=0;k<3;k++)c.beginPath(),c.arc(140+k*24,156+r*24,8,0,T),c.fill(),c.stroke() + c.lineWidth=7 + if(ck>0&&t<.94){ + const s=t>.88?1-(t-.88)/.06:1;c.save();c.translate(164,102);c.scale(s,s) + c.strokeStyle='#fff';c.lineWidth=10;c.setLineDash([L*ck,999]);c.beginPath();c.moveTo(-17,0);c.lineTo(-6,11);c.lineTo(18,-15);c.stroke();c.restore() + }else for(let k=0;k<3;k++){ + const j=t>.12&&t<.42?max(0,sin(T*(t*5-k*.25))):0 + c.fillStyle='#fff';c.beginPath();c.arc(146+k*18,104-9*j,5,0,T);c.fill() + } + c.fillStyle='#fff' + if(ck>.5&&t<.66)for(const a of[-1.65,-.95,-.25])D(()=>{c.moveTo(210+cos(a)*20,60+sin(a)*20);c.lineTo(210+cos(a)*32,60+sin(a)*32)},11,4) + if(cs>.01){ + if(v>.2)for(const x of[50,70,90])D(()=>{c.moveTo(x,cy-58-6*v);c.lineTo(x,max(12,cy-58-40*v))},11,4) + c.save();c.translate(70,cy);c.scale(cs,cs) + c.beginPath();c.roundRect(-34,-52,68,104,10);c.fill();c.stroke() + c.fillStyle='#111';c.fillRect(14,-48,12,96) + c.fillStyle='#fff';c.lineWidth=4;c.beginPath();c.roundRect(-24,-34,22,26,5);c.fill();c.stroke() + c.beginPath();c.moveTo(-24,-21);c.lineTo(-2,-21);c.moveTo(-13,-34);c.lineTo(-13,-8);c.stroke() + c.lineWidth=6;for(const y of[12,30])c.beginPath(),c.moveTo(-18,y),c.lineTo(-18,y+10),c.stroke() + c.restore() + } + c.lineWidth=7;c.beginPath();c.roundRect(98,36,22,184,10);c.fill();c.stroke() + c.lineWidth=4;c.beginPath();c.moveTo(109,48);c.lineTo(109,208);c.stroke() +} diff --git a/gen/ui/saved/floppy.js b/gen/ui/saved/floppy.js new file mode 100644 index 0000000..3d319d4 --- /dev/null +++ b/gen/ui/saved/floppy.js @@ -0,0 +1,26 @@ +// a floppy disk squishes as it saves, then a check badge pops onto its corner, the check draws itself and the disk smiles +const{sin,cos,PI,min,max,hypot}=Math,T=2*PI +export const frames=24,delay=70 +const cl=u=>min(1,max(0,u)),bk=u=>(u=cl(u),1+2.7*(u-1)**3+1.7*(u-1)**2) +const P=[[-17,1],[-5,13],[18,-12]],LL=hypot(12,12)+hypot(23,25) +export default(c,t)=>{ + const q=sin(PI*cl(t/.16)),s=t<.86?bk((t-.16)/.14):1-cl((t-.86)/.12)**2,p=cl((t-.26)/.16),b=(t-.42)/.18,hp=t>.36&&t<.92 + c.save();c.translate(116,198);c.scale(1+.07*q,1-.09*q);c.translate(-116,-198) + c.beginPath();c.moveTo(30,46);c.quadraticCurveTo(30,30,46,30);c.lineTo(174,30);c.lineTo(202,58);c.lineTo(202,182);c.quadraticCurveTo(202,198,186,198);c.lineTo(46,198);c.quadraticCurveTo(30,198,30,182);c.closePath();c.fill();c.stroke() + c.fillStyle='#ddd';c.beginPath();c.roundRect(66,30,100,58,[0,0,8,8]);c.fill();c.stroke() + c.fillStyle='#111';c.beginPath();c.roundRect(132,42,18,34,3);c.fill() + c.fillStyle='#fff';c.beginPath();c.roundRect(56,112,120,86,[12,12,0,0]);c.fill();c.stroke() + c.fillStyle='#111';c.lineWidth=5 + if(hp)for(const d of[-1,1])c.beginPath(),c.arc(116+d*20,152,7,PI*1.1,PI*1.9),c.stroke() + else for(const d of[-1,1])c.beginPath(),c.arc(116+d*20,148,6,0,T),c.fill() + c.beginPath();c.arc(116,160,hp?14:9,.15*PI,.85*PI);c.stroke() + c.restore() + c.fillStyle='#fff';c.strokeStyle='#111' + if(b>0&&b<1)for(let k=0;k<8;k++){const a=k*T/8+PI/8,r1=44+12*b,r2=r1+12*(1-b);for(const[w,st]of[[11,'#111'],[4,'#fff']])c.lineWidth=w,c.strokeStyle=st,c.beginPath(),c.moveTo(190+cos(a)*r1,190+sin(a)*r1),c.lineTo(190+cos(a)*r2,190+sin(a)*r2),c.stroke()} + if(s>.01){ + c.strokeStyle='#111';c.save();c.translate(190,190);c.scale(s,s);c.lineWidth=7/s + c.beginPath();c.arc(0,0,36,0,T);c.fill();c.stroke() + if(p>0){c.lineWidth=11;c.setLineDash([LL*p,999]);c.beginPath();for(const[x,y]of P)c.lineTo(x,y);c.stroke()} + c.restore() + } +} diff --git a/gen/ui/search/none.js b/gen/ui/search/none.js new file mode 100644 index 0000000..31013b5 --- /dev/null +++ b/gen/ui/search/none.js @@ -0,0 +1,27 @@ +// binoculars with big worried eyes in the lenses sweep left and right looking for something, find nothing, and break a sweat +const{sin,PI,min,max}=Math,T=2*PI +export const frames=20,delay=90 +const cl=u=>min(1,max(0,u)) +export default(c,t)=>{ + const s=sin(T*t),x=128+27*s,y=130,lk=sin(T*t+.5),S=1.04 + c.save();c.translate(x,y);c.rotate(.1*s);c.scale(S,S);c.lineWidth=7/S + c.beginPath();c.roundRect(-24,-30,48,40,9);c.fill();c.stroke() + c.beginPath();c.arc(0,-40,11,0,T);c.fill();c.stroke() + for(const d of[-1,1]){ + const cx=d*44 + c.beginPath();c.roundRect(cx-17,-66,34,24,7);c.fill();c.stroke() + c.beginPath();c.roundRect(cx-34,-48,68,100,30);c.fill();c.stroke() + c.beginPath();c.arc(cx,18,28,0,T);c.fill();c.stroke() + const px=cx+9*lk,py=20 + c.fillStyle='#111';c.beginPath();c.arc(px,py,13,0,T);c.fill() + c.fillStyle='#fff';c.beginPath();c.arc(px-4,py-5,4.5,0,T);c.fill() + c.lineWidth=5/S;c.beginPath();c.moveTo(cx-18,-16-d*3);c.lineTo(cx+18,-16+d*3);c.stroke();c.lineWidth=7/S + } + c.restore() + const g=cl((t-.12)/.1)*(1-cl((t-.74)/.1)),dy=50*cl((t-.22)/.52)**1.4 + if(g>0){ + c.save();c.translate(x+64+4*s,y-62+dy*.8);c.scale(g,g);c.lineWidth=6 + c.beginPath();c.moveTo(0,-20);c.bezierCurveTo(4,-8,14,0,14,9);c.arc(0,9,14,0,PI);c.bezierCurveTo(-14,0,-4,-8,0,-20);c.fill();c.stroke() + c.restore() + } +} diff --git a/gen/ui/sent/plane.js b/gen/ui/sent/plane.js new file mode 100644 index 0000000..1dc758a --- /dev/null +++ b/gen/ui/sent/plane.js @@ -0,0 +1,23 @@ +// a paper plane swoops in, flies a loop-the-loop and zooms off the other side, leaving a dashed trail behind it +const{sin,cos,PI,atan2,min,max,hypot}=Math,T=2*PI +export const frames=24,delay=60 +const sm=u=>(u=min(1,max(0,u)),u*u*(3-2*u)) +const P=s=>{const w=sm((s-.28)/.38);return[-52+360*s-56*sin(T*w),176-56*(1-cos(T*w))-22*sin(PI*min(1,max(0,s)))]} +const Q=[];{let l=0,q=P(-1);for(let s=-1;s<=2.001;s+=.004){const p=P(s);l+=hypot(p[0]-q[0],p[1]-q[1]);Q.push([s,...p,l]);q=p}} +const L=.46 +const trail=(c,h)=>{ + const D=[];let cur=null + for(const[s,x,y,l]of Q){if(sh-.06){cur=null;continue}if(l%30<17){if(!cur)D.push(cur=[]);cur.push([x,y,s])}else cur=null} + for(const k of[0,1])for(const d of D){const f=(d[0][2]-h+L)/L;c.lineWidth=k?max(0,9*f-1):4+9*f;c.strokeStyle=k?'#fff':'#111';c.beginPath();for(const[x,y]of d)c.lineTo(x,y);c.stroke()} +} +const plane=(c,h)=>{ + const[x,y]=P(h),[a,b]=P(h-.01),[e,f]=P(h+.01) + c.save();c.translate(x,y);c.rotate(atan2(f-b,e-a));c.scale(1.4,1.4);c.strokeStyle='#111';c.lineWidth=5 + c.fillStyle='#ddd';c.beginPath();c.moveTo(32,0);c.lineTo(-14,4);c.lineTo(-22,18);c.closePath();c.fill();c.stroke() + c.fillStyle='#fff';c.beginPath();c.moveTo(32,0);c.lineTo(-30,-20);c.lineTo(-14,4);c.closePath();c.fill();c.stroke() + c.restore() +} +export default(c,t)=>{ + for(const h of[t,t+1])trail(c,h) + for(const h of[t,t+1])plane(c,h) +} diff --git a/gen/ui/signal/none.js b/gen/ui/signal/none.js new file mode 100644 index 0000000..9253b72 --- /dev/null +++ b/gen/ui/signal/none.js @@ -0,0 +1,21 @@ +// a phone with no signal, its empty bars light up one by one as it searches and then blink, while its little face looks round sadly +const{sin,PI}=Math,T=2*PI +export const frames=16,delay=90 +export default(c,t,i)=>{ + c.beginPath();c.roundRect(58,10,140,236,28);c.fill();c.stroke() + c.lineWidth=5;c.beginPath();c.roundRect(72,38,112,176,12);c.stroke() + c.lineWidth=6;c.beginPath();c.moveTo(112,24);c.lineTo(144,24);c.stroke() + c.lineWidth=5;c.beginPath();c.arc(128,230,7,0,T);c.stroke() + const scan=i<8?i>>1:-1,dim=i>=8&&i%4>1 + for(let k=0;k<4;k++){ + const h=18+16*k,x=82+k*24 + c.fillStyle=k==scan?'#bbb':'#fff';c.strokeStyle=dim?'#bbb':'#111';c.lineWidth=5 + c.beginPath();c.roundRect(x,126-h,18,h,4);c.fill();c.stroke() + } + c.fillStyle='#111';c.strokeStyle='#111' + const e=i<8?(scan-1.5)*3:0 + for(const d of[-1,1])c.beginPath(),c.arc(128+d*16+e,160,6,0,T),c.fill() + c.lineWidth=5;c.beginPath();c.arc(128+e*.5,192,12,PI*1.15,PI*1.85);c.stroke() + c.lineWidth=4;c.beginPath();c.moveTo(100+e,151);c.lineTo(112+e,145);c.moveTo(156+e,151);c.lineTo(144+e,145);c.stroke() + c.fillStyle='#fff';c.lineWidth=4;c.beginPath();c.moveTo(164,140+(i%8));c.bezierCurveTo(158,152+(i%8),160,160+(i%8),166,160+(i%8));c.bezierCurveTo(172,160+(i%8),174,152+(i%8),164,140+(i%8));c.fill();c.stroke() +} diff --git a/gen/ui/success/confetti.js b/gen/ui/success/confetti.js new file mode 100644 index 0000000..dcb3cdf --- /dev/null +++ b/gen/ui/success/confetti.js @@ -0,0 +1,35 @@ +// a party popper shakes, then bursts with a bang and confetti pieces and streamers flutter down, spinning as they fall +const{sin,cos,PI,min,max,exp}=Math,T=2*PI +export const frames=28,delay=70 +let z=11;const R=()=>(z=z*16807%2147483647)/2147483647 +const C=[...Array(14)].map((_,k)=>[-PI/4+(R()-.5)*1.7,90+R()*120,k%4,R()<.3?'#bbb':'#fff',R()*T,1+R()*2,R()*T,.7+R()*.6]) +const t0=.12 +export default(c,t)=>{ + const s=t-t0,mx=110,my=150 + if(s>0){ + const sc=min(1,(1-t)/.07),fall=u=>320*max(0,u-.12)**1.5 + for(const[a,d,k,f,r0,sp,ph,fz]of C){ + const e=1-exp(-11*s),x=mx+cos(a)*d*e+14*sin(T*s*2*fz+ph)*min(1,s*4),y=my+sin(a)*d*e+fall(s)*fz + c.save();c.translate(x,y);c.rotate(r0+s*sp*T);c.scale(cos(T*s*3*fz+ph)*sc,sc);c.beginPath() + if(k==0)c.rect(-11,-7,22,14);else if(k==1)c.arc(0,0,9,0,T);else if(k==2)c.moveTo(0,-11),c.lineTo(10,7),c.lineTo(-10,7),c.closePath();else c.ellipse(0,0,13,6,0,0,T) + c.restore();c.lineWidth=5;c.fillStyle=f;c.fill();c.stroke() + } + c.fillStyle='#fff' + for(const[a,d,o]of[[-1.15,120,0],[-.5,130,2]]){ + const e=1-exp(-9*s);for(const[w,st]of[[10,'#111'],[4,'#fff']]){c.lineWidth=w*sc;c.strokeStyle=st;c.beginPath() + for(let u=0;u<=1;u+=.05){const L=d*e*(.35+.65*u),n=7*sin(u*12+s*20+o)*min(1,s*6);c.lineTo(mx+cos(a)*L-sin(a)*n,my+sin(a)*L+cos(a)*n+fall(s)*(1.1-.4*u)+40*s*u*u)}c.stroke()} + } + c.strokeStyle='#111' + if(s<.12){const b=s/.12;for(let k=0;k<7;k++){const a=-PI/4+(k-3)*.42,r1=24+40*b,r2=r1+20*(1-b);for(const[w,st]of[[12,'#111'],[5,'#fff']])c.lineWidth=w,c.strokeStyle=st,c.beginPath(),c.moveTo(mx+cos(a)*r1,my+sin(a)*r1),c.lineTo(mx+cos(a)*r2,my+sin(a)*r2),c.stroke()}} + } + const sh=t.9?.05*sin(T*t*20)*(t-.9)/.1:0,rc=s>0&&s<.15?sin(PI*s/.15):0 + c.strokeStyle='#111';c.lineWidth=7 + c.save();c.translate(42-8*rc,222+8*rc);c.rotate(PI/4+sh) + const cone=()=>{c.beginPath();c.moveTo(-9,6);c.lineTo(-38,-92);c.lineTo(38,-92);c.lineTo(9,6);c.quadraticCurveTo(0,11,-9,6)} + cone();c.fill();c.save();cone();c.clip();c.fillStyle='#111' + for(const v of[-70,-36])c.beginPath(),c.moveTo(-40,v),c.lineTo(40,v-20),c.lineTo(40,v-6),c.lineTo(-40,v+14),c.fill() + c.restore();cone();c.stroke() + c.beginPath();c.ellipse(0,-92,38,12,0,0,T);c.fill();c.stroke() + if(s<0||s>.5){c.fillStyle='#111';c.beginPath();c.ellipse(0,-92,27,6,0,0,T);c.fill()} + c.restore() +} diff --git a/gen/ui/success/stamp.js b/gen/ui/success/stamp.js new file mode 100644 index 0000000..993b7d6 --- /dev/null +++ b/gen/ui/success/stamp.js @@ -0,0 +1,24 @@ +// a rubber stamp winds up, slams down on a sheet of paper and bounces back up leaving a check mark imprint, then the sheet slides away for a fresh one +const{sin,cos,PI,min,max}=Math,T=2*PI +export const frames=28,delay=70 +const cl=u=>min(1,max(0,u)),io=u=>(u=cl(u),u<.5?2*u*u:1-2*(1-u)**2),bk=u=>(u=cl(u),1+2.4*(u-1)**3+1.4*(u-1)**2) +const paper=(c,x)=>{c.beginPath();c.moveTo(62+x,162);c.lineTo(194+x,162);c.lineTo(224+x,230);c.lineTo(32+x,230);c.closePath();c.fill();c.stroke()} +const ink=(c,x)=>{c.save();c.translate(128+x,196);c.scale(1,.42);c.lineWidth=10;c.beginPath();c.arc(0,0,44,0,T);c.stroke();c.lineWidth=14;c.beginPath();c.moveTo(-20,0);c.lineTo(-6,16);c.lineTo(22,-16);c.stroke();c.restore()} +export default(c,t)=>{ + const sl=-264*io((t-.74)/.22),q=sin(PI*cl((t-.31)/.11)) + const y=t<.24?124-10*io((t-.06)/.18):t<.31?114+82*cl((t-.24)/.07)**2:t<.42?196:196-72*bk((t-.42)/.16) + paper(c,sl);paper(c,sl+264) + const h=(y-124)/72 + if(t<.31||t>.42&&t<.74||t>.96){c.fillStyle='#ccc';c.beginPath();c.ellipse(128,196,30+22*h,9+4*h,0,0,T);c.fill();c.fillStyle='#fff'} + if(t>.31)ink(c,sl) + if(t>.6&&t<.74){const p=(t-.6)/.14;c.lineWidth=5;for(const[x,yy,r]of[[52,146,12],[206,154,10]]){const s=sin(PI*p)*r;c.beginPath();c.moveTo(x,yy-s*2);c.quadraticCurveTo(x,yy,x+s*2,yy);c.quadraticCurveTo(x,yy,x,yy+s*2);c.quadraticCurveTo(x,yy,x-s*2,yy);c.quadraticCurveTo(x,yy,x,yy-s*2);c.fill();c.stroke()}} + if(q>.01)for(const d of[-1,1])for(const a of[-.5,0,.5]){const r1=72+14*q,r2=r1+16*q;for(const[w,s]of[[11,'#111'],[4,'#fff']])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),c.moveTo(128+d*r1*cos(a),188-r1*.5*sin(a+.4)),c.lineTo(128+d*r2*cos(a),188-r2*.5*sin(a+.4)),c.stroke()} + c.strokeStyle='#111';c.lineWidth=7 + c.save();c.translate(128,y);c.scale(1+.08*q,1-.12*q) + c.fillStyle='#888';c.beginPath();c.roundRect(-48,-12,96,12,3);c.fill();c.stroke();c.fillStyle='#fff' + c.beginPath();c.roundRect(-58,-38,116,28,9);c.fill();c.stroke() + c.beginPath();c.roundRect(-14,-62,28,26,4);c.fill();c.stroke() + c.beginPath();c.ellipse(0,-82,31,19,0,0,T);c.fill();c.stroke() + c.lineWidth=5;c.beginPath();c.arc(0,-82,14,PI*1.15,PI*1.5);c.stroke() + c.restore() +} diff --git a/gen/ui/sync/arrows.js b/gen/ui/sync/arrows.js new file mode 100644 index 0000000..1c00c99 --- /dev/null +++ b/gen/ui/sync/arrows.js @@ -0,0 +1,16 @@ +// two curved arrows chase each other round and round a little face that watches them go +const{sin,cos,PI}=Math,T=2*PI +export const frames=16,delay=60 +export default(c,t)=>{ + const a0=PI*t+.2*sin(T*t),R=80,S=2.15 + for(const[w,k]of[[34,'#111'],[20,'#fff']])for(const o of[0,PI]){ + const a=a0+o,e=a+S,px=128+R*cos(e),py=128+R*sin(e),tx=-sin(e),ty=cos(e),nx=cos(e),ny=sin(e) + c.lineWidth=w;c.strokeStyle=k;c.beginPath();c.arc(128,128,R,a,e);c.stroke() + c.fillStyle=k;c.lineWidth=w>30?14:0;c.beginPath();c.moveTo(px+nx*28,py+ny*28);c.lineTo(px+tx*34,py+ty*34);c.lineTo(px-nx*28,py-ny*28);c.closePath();c.fill();if(w>30)c.stroke() + } + c.lineWidth=7;c.strokeStyle='#111';c.fillStyle='#fff' + c.beginPath();c.arc(128,128,38,0,T);c.fill();c.stroke() + const ex=4*sin(T*t*2) + c.fillStyle='#111';for(const d of[-1,1])c.beginPath(),c.arc(128+d*13+ex,121,6,0,T),c.fill() + c.lineWidth=5;c.beginPath();c.arc(128+ex*.5,132,9,PI*.15,PI*.85);c.stroke() +} diff --git a/gen/ui/thanks/card.js b/gen/ui/thanks/card.js new file mode 100644 index 0000000..71293ab --- /dev/null +++ b/gen/ui/thanks/card.js @@ -0,0 +1,28 @@ +// a folded thank-you card swings open, a smiling heart pops out and floats up, bursts into lines, and the card closes again +const{sin,cos,PI,min,max}=Math,T=2*PI +export const frames=24,delay=70 +const cl=u=>min(1,max(0,u)),ease=u=>(u=cl(u),u<.5?2*u*u:1-2*(1-u)**2),back=u=>(u=cl(u),1+3*(u-1)**3+2*(u-1)**2) +const heart=(c,r)=>{c.beginPath();c.moveTo(0,r);c.bezierCurveTo(-r*1.7,-r*.1,-r*.9,-r*1.45,0,-r*.6);c.bezierCurveTo(r*.9,-r*1.45,r*1.7,-r*.1,0,r);c.closePath()} +export default(c,t)=>{ + const D=(f,a=12,b=5)=>{for(const[w,s]of[[a,'#111'],[b,'#fff']])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),f(),c.stroke();c.lineWidth=7;c.strokeStyle='#111'} + const o=ease((t-.04)/.2)-ease((t-.84)/.14),th=o*PI,hx=76+52*o,Y=102,H=132,W=104 + c.beginPath();c.roundRect(hx,Y,W,H,6);c.fill();c.stroke() + c.lineWidth=8;c.strokeStyle='#bbb';for(const[y,l]of[[Y+76,56],[Y+94,70],[Y+112,44]])c.beginPath(),c.moveTo(hx+16,y),c.lineTo(hx+16+l,y),c.stroke() + c.strokeStyle='#111';c.lineWidth=7 + const k=cos(th),lift=.1*sin(th) + c.save();c.transform(k,-lift,0,1,hx,0);c.beginPath();c.roundRect(0,Y,W,H,6);c.fill();c.lineWidth=7;c.stroke() + if(k>0){ + c.save();c.translate(W/2,Y+54);c.lineWidth=6;heart(c,22);c.stroke();c.restore() + c.lineWidth=7;c.strokeStyle='#bbb';for(const[y,l]of[[Y+96,48],[Y+111,32]])c.beginPath(),c.moveTo(W/2-l/2,y),c.lineTo(W/2+l/2,y),c.stroke() + }else{c.translate(W/2,Y+H-30);c.scale(-1,1);c.lineWidth=5;c.strokeStyle='#bbb';heart(c,10);c.stroke();c.beginPath();c.moveTo(-36,26);c.lineTo(36,26);c.stroke()} + c.restore() + const P=u=>[128+14*sin(u*T),170-108*u],u=min((t-.26)/.54,.96),b=cl((t-.78)/.08),[x,y]=P(u) + if(u>0&&b<1){ + const s=back((t-.26)/.08)*(1-b) + c.save();c.translate(x,y);c.rotate(.16*sin(u*T+1));c.scale(s,s);c.lineWidth=7/max(s,.2) + heart(c,32);c.fill();c.stroke() + c.fillStyle='#111';for(const d of[-1,1])c.beginPath(),c.arc(d*11,-4,4.5,0,T),c.fill() + c.lineWidth=4.5/max(s,.2);c.beginPath();c.arc(0,4,7,.15*PI,.85*PI);c.stroke();c.restore() + } + if(b>0&&b<1)for(let i=0;i<8;i++){const a=i*T/8,r1=22+26*b,r2=r1+14*(1-b);D(()=>{c.moveTo(x+cos(a)*r1,y+sin(a)*r1);c.lineTo(x+cos(a)*r2,y+sin(a)*r2)},11,4)} +} diff --git a/gen/ui/timeout/stopwatch.js b/gen/ui/timeout/stopwatch.js new file mode 100644 index 0000000..27a01d0 --- /dev/null +++ b/gen/ui/timeout/stopwatch.js @@ -0,0 +1,19 @@ +// a stopwatch hand ticks round to zero as the time left shrinks away, then it rings and shakes, and winds back for another go +const{sin,cos,PI,min,max}=Math,T=2*PI +export const frames=24,delay=70 +const ease=u=>(u=min(1,max(0,u)),u<.5?2*u*u:1-2*(1-u)**2) +const ln=(c,w,f)=>{for(const[l,s]of[[w,'#111'],[w-7,'#fff']])c.lineWidth=l,c.strokeStyle=s,c.beginPath(),f(),c.stroke();c.lineWidth=7;c.strokeStyle='#111'} +export default(c,t,i)=>{ + const X=128,Y=146,ring=t>=.5&&t<.8,f=T*(.25+.75*(min(1,t/.5)-ease((t-.8)/.18)))-PI/2 + if(ring)for(const d of[-1,1])for(const a of[-.5,0,.5])ln(c,11,()=>{const b=-PI/2+d*(.72+a*.5),r=i%2?4:0;c.moveTo(X+cos(b)*(106+r),Y+sin(b)*(106+r));c.lineTo(X+cos(b)*(122+r),Y+sin(b)*(122+r))}) + c.translate(X,Y);if(ring)c.rotate(i%2?.09:-.09),c.translate(i%2?2:-2,0);c.translate(-X,-Y) + c.save();c.translate(X,Y);c.rotate(PI/4);c.beginPath();c.roundRect(-9,-100,18,22,5);c.fill();c.stroke();c.restore() + c.beginPath();c.roundRect(X-10,48,20,24,4);c.fill();c.stroke() + c.beginPath();c.roundRect(X-28,ring&&i%2?34:28,56,20,8);c.fill();c.stroke() + c.beginPath();c.arc(X,Y,86,0,T);c.fill();c.stroke() + c.fillStyle='#ddd';c.beginPath();c.moveTo(X,Y);c.arc(X,Y,64,f,PI*1.5);c.closePath();c.fill();c.fillStyle='#fff' + c.lineWidth=5;c.beginPath();c.arc(X,Y,72,0,T);c.stroke() + for(let k=0;k<12;k++){const a=k*T/12,r=k%3?62:56;c.lineWidth=k%3?4:6;c.beginPath();c.moveTo(X+cos(a)*r,Y+sin(a)*r);c.lineTo(X+cos(a)*68,Y+sin(a)*68);c.stroke()} + c.lineWidth=8;c.beginPath();c.moveTo(X-cos(f)*12,Y-sin(f)*12);c.lineTo(X+cos(f)*60,Y+sin(f)*60);c.stroke() + c.fillStyle='#111';c.beginPath();c.arc(X,Y,9,0,T);c.fill() +} diff --git a/gen/ui/typing/bubble.js b/gen/ui/typing/bubble.js new file mode 100644 index 0000000..0273cbb --- /dev/null +++ b/gen/ui/typing/bubble.js @@ -0,0 +1,13 @@ +// chat speech bubble gently bobbing while three typing dots pulse up and darken one after another +const{sin,PI,max}=Math,T=2*PI +export const frames=18,delay=70 +export default(c,t)=>{ + c.translate(0,3*sin(T*t)) + const B=()=>{c.beginPath();c.roundRect(22,56,212,128,44)},K=()=>{c.beginPath();c.moveTo(58,168);c.quadraticCurveTo(58,204,30,218);c.quadraticCurveTo(84,214,100,176);c.closePath()} + c.lineWidth=14;B();c.stroke();K();c.stroke();B();c.fill();K();c.fill() + for(let k=0;k<3;k++){ + const u=((t-k*.16)%1+1)%1,p=u<.42?sin(PI*u/.42):0 + c.fillStyle=p>.6?'#111':p>.25?'#555':'#999' + c.beginPath();c.arc(84+k*44,120-12*p,14+4*p,0,T);c.fill() + } +} diff --git a/gen/ui/upload/cloud.js b/gen/ui/upload/cloud.js new file mode 100644 index 0000000..0f9a0fa --- /dev/null +++ b/gen/ui/upload/cloud.js @@ -0,0 +1,25 @@ +// arrows pop up, crouch and shoot one after another into a happy cloud, which puffs up each time one zips inside +const{sin,PI,min,max}=Math,T=2*PI +export const frames=24,delay=60 +const back=u=>(u=min(1,max(0,u)),1+2.7*(u-1)**3+1.7*(u-1)**2) +const ln=(c,w,f)=>{for(const[l,s]of[[w,'#111'],[w-7,'#fff']])c.lineWidth=l,c.strokeStyle=s,c.beginPath(),f(),c.stroke();c.lineWidth=7;c.strokeStyle='#111'} +export default(c,t)=>{ + const u=t*2%1,s=1.1*back(u/.14),q=max(0,(u-.3)/.2),k=u>.14&&u<.3?sin(PI*(u-.14)/.16):0,y=196+6*k-110*q*q,pf=u>.42&&u<.82?sin(PI*(u-.42)/.4):0 + if(q<1){ + if(q>0)for(const x of[-30,0,30])ln(c,11,()=>{c.moveTo(128+x,y+(x?16:58));c.lineTo(128+x,y+(x?16:58)+56*q)}) + c.save();c.translate(128,y+40);c.scale(s*(1+.1*k),s*(1-.14*k));c.translate(0,-40) + c.beginPath();c.moveTo(0,-40);c.lineTo(36,-2);c.lineTo(15,-2);c.lineTo(15,38);c.lineTo(-15,38);c.lineTo(-15,-2);c.lineTo(-36,-2);c.closePath();c.fill();c.stroke() + c.restore() + } + if(pf>.3)for(const d of[-1,1])for(const[y,q]of[[66,-10],[100,0]])ln(c,11,()=>{c.moveTo(128+d*(102+6*pf),y);c.lineTo(128+d*(116+6*pf),y+q)}) + c.translate(128,110);c.scale(1+.08*pf,1+.06*pf);c.translate(-128,-110) + const P=[[80,96,38],[128,72,50],[178,94,40]],base=()=>c.roundRect(42,92,172,56,28) + c.lineWidth=14;for(const[x,yy,r]of P)c.beginPath(),c.arc(x,yy,r,0,T),c.stroke() + c.beginPath();base();c.stroke() + for(const[x,yy,r]of P)c.beginPath(),c.arc(x,yy,r,0,T),c.fill() + c.beginPath();base();c.fill() + c.lineWidth=6 + if(pf>.3)for(const x of[106,150])c.beginPath(),c.arc(x,114,8,PI*1.15,PI*1.85),c.stroke() + else{c.fillStyle='#111';for(const x of[106,150])c.beginPath(),c.arc(x,110,6,0,T),c.fill()} + c.beginPath();c.arc(128,120,10,PI*.15,PI*.85);c.stroke() +} diff --git a/gen/ui/verified/badge.js b/gen/ui/verified/badge.js new file mode 100644 index 0000000..4dcc865 --- /dev/null +++ b/gen/ui/verified/badge.js @@ -0,0 +1,25 @@ +// scalloped seal badge with a big check, gently wobbling, a shine sweeps across it and little sparkles twinkle +const{sin,cos,PI,abs,min,max}=Math,T=2*PI +export const frames=20,delay=80 +const cl=u=>min(1,max(0,u)) +const star=(c,x,y,r)=>{c.beginPath();for(let k=0;k<8;k++){const a=k*PI/4,q=k%2?r*.42:r;c.lineTo(x+cos(a)*q,y+sin(a)*q)}c.closePath();c.fill();c.stroke()} +export default(c,t)=>{ + const a=.1*sin(T*t),sh=cl((t-.12)/.3) + for(const d of[-1,1]){ + c.save();c.translate(128+d*26,150);c.rotate(d*.32+a*.5) + c.beginPath();c.moveTo(-20,0);c.lineTo(-20,82);c.lineTo(0,68);c.lineTo(20,82);c.lineTo(20,0);c.closePath();c.fill();c.stroke() + c.restore() + } + c.translate(128,110);c.rotate(a) + const seal=()=>{c.beginPath();for(let k=0;k<=320;k++){const th=k*T/320,r=80+11*(1-(1-abs(cos(8*th)))**2);c.lineTo(cos(th)*r,sin(th)*r)}c.closePath()} + seal();c.fill();c.stroke() + c.fillStyle='#111';c.beginPath();c.arc(0,0,62,0,T);c.fill() + if(sh>0&&sh<1){ + c.save();c.beginPath();c.arc(0,0,62,0,T);c.clip();c.rotate(.6);c.fillStyle='#666' + const x=-110+220*sh;c.fillRect(x-14,-80,22,160);c.fillRect(x+16,-80,8,160);c.restore() + } + c.strokeStyle='#fff';c.lineWidth=4;c.beginPath();c.arc(0,0,52,0,T);c.stroke() + c.lineWidth=20;c.beginPath();c.moveTo(-26,2);c.lineTo(-8,20);c.lineTo(28,-20);c.stroke() + c.setTransform(1,0,0,1,0,0);c.strokeStyle='#111';c.fillStyle='#fff';c.lineWidth=5 + for(const[x,y,o,r]of[[214,40,.42,22],[40,60,.56,18],[222,150,.7,16]]){const g=cl((t-o)/.22),s=sin(g*PI);if(s>0)star(c,x,y,r*s)} +} diff --git a/gen/ui/warning/sign.js b/gen/ui/warning/sign.js new file mode 100644 index 0000000..446a608 --- /dev/null +++ b/gen/ui/warning/sign.js @@ -0,0 +1,14 @@ +// warning triangle with a big "!" wobbling on its corner, the "!" jiggling along, alert lines flashing on both sides +const{sin,cos,PI}=Math,T=2*PI +export const frames=16,delay=70 +export default(c,t,i)=>{ + const D=(f,a=12,b=5)=>{for(const[w,s]of[[a,'#111'],[b,'#fff']])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),f(),c.stroke();c.lineWidth=7;c.strokeStyle='#111'} + const a=.1*sin(2*T*t),b=.14*sin(2*T*t-1.2),fl=i%4<2 + if(fl)for(const d of[-1,1])for(const k of[0,1,2]){const g=-PI/2+d*(.62+k*.3),r=96+(k==1?8:0);D(()=>{c.moveTo(128+cos(g)*r,130+sin(g)*r);c.lineTo(128+cos(g)*(r+20),130+sin(g)*(r+20))},12,5)} + c.translate(128,214);c.rotate(a);c.translate(-128,-214) + const tri=()=>{c.beginPath();c.moveTo(128,44);c.lineTo(222,206);c.lineTo(34,206);c.closePath()} + tri();c.lineWidth=34;c.stroke();c.lineWidth=20;c.strokeStyle='#fff';c.stroke();c.fill() + c.strokeStyle='#111';c.lineWidth=5;c.beginPath();c.moveTo(128,62);c.lineTo(207,198);c.lineTo(49,198);c.closePath();c.stroke() + c.translate(128,188);c.rotate(b);c.lineWidth=24;c.beginPath();c.moveTo(0,-90);c.lineTo(0,-46);c.stroke() + c.fillStyle='#111';c.beginPath();c.arc(0,-12,13,0,T);c.fill() +} diff --git a/gen/ui/wishlist/empty.js b/gen/ui/wishlist/empty.js new file mode 100644 index 0000000..21f4fe9 --- /dev/null +++ b/gen/ui/wishlist/empty.js @@ -0,0 +1,11 @@ +// an empty wishlist heart drawn as a chunky dashed outline, gently breathing in and out +const{sin,cos,PI,hypot}=Math,T=2*PI +export const frames=16,delay=80 +const P=[...Array(161)].map((_,k)=>{const s=k/160*T;return[16*sin(s)**3,-(13*cos(s)-5*cos(2*s)-2*cos(3*s)-cos(4*s))]}) +const L=P.reduce((a,p,k)=>k?a+hypot(p[0]-P[k-1][0],p[1]-P[k-1][1]):0,0),D=L/12 +export default(c,t)=>{ + const s=6.1*(1+.06*sin(t*T)) + c.translate(128,114);c.scale(s,s*(1-.02*sin(t*T))) + c.setLineDash([D*.46,D*.54]);c.lineDashOffset=D*.73 + for(const[w,k]of[[22,'#111'],[10,'#fff']]){c.lineWidth=w/s;c.strokeStyle=k;c.beginPath();for(const[x,y]of P)c.lineTo(x,y);c.stroke()} +} diff --git a/gen/uianime/403/batsu.js b/gen/uianime/403/batsu.js new file mode 100644 index 0000000..968a3b9 --- /dev/null +++ b/gen/uianime/403/batsu.js @@ -0,0 +1,47 @@ +// stern silver-haired student council girl slamming her white sleeves into a big batsu X, frowning as red impact lines pop +const{sin,cos,PI,max,min}=Math,T=2*PI +export const frames=12,delay=90 +const SKIN='#ffe3d1',HAIR='#e9ecef',HD='#adb5bd',EYE='#5c7cfa',ED='#364fc7',BZ='#364fc7',SL='#fff',TIE='#f03e3e',BL='#ffa8a8',RD='#ff6b6b',Z=.84 +const O=[0,0,0,0,0,0,0,0,.35,.75,.95,.55] +const eye=(c,L,x,y,d)=>{ + c.fillStyle='#fff';c.beginPath();c.ellipse(x,y,14,17,0,0,T);c.fill() + c.save();c.beginPath();c.ellipse(x,y+2,11.5,15,0,0,T);c.clip();c.fillStyle=EYE;c.fill();c.fillStyle=ED;c.beginPath();c.ellipse(x,y-8,13,10,0,0,T);c.fill();c.restore() + L(2.5);c.beginPath();c.ellipse(x,y+2,11.5,15,0,0,T);c.stroke() + c.fillStyle='#111';c.beginPath();c.ellipse(x,y+4,5,6.5,0,0,T);c.fill() + c.fillStyle='#fff';c.beginPath();c.arc(x-4,y-1,3.5,0,T);c.fill() + c.fillStyle=SKIN;c.beginPath();c.moveTo(x-d*20,y-26);c.lineTo(x-d*20,y-6);c.lineTo(x+d*20,y-16);c.lineTo(x+d*20,y-26);c.fill() + L(6);c.beginPath();c.moveTo(x-d*18,y-6);c.lineTo(x+d*17,y-15);c.stroke() +} +export default(c,t,i)=>{ + const o=O[i],L=v=>c.lineWidth=v/Z,sh=i>1&&i<8?.04*sin(T*(i-2)/3):0 + const head=f=>{c.save();c.translate(128,104);c.rotate(sh);c.scale(Z,Z);c.translate(-128,-128);f();c.restore()} + head(()=>{L(6);c.fillStyle=HD;c.beginPath();c.moveTo(128,34);c.bezierCurveTo(200,34,214,96,206,150);c.lineTo(214,330);c.lineTo(42,330);c.lineTo(50,150);c.bezierCurveTo(42,96,56,34,128,34);c.fill();c.stroke()}) + c.save();c.translate(128,104);c.scale(Z,Z);c.translate(-128,-128) + L(6);c.fillStyle=BZ;c.beginPath();c.moveTo(100,190);c.quadraticCurveTo(56,196,44,330);c.lineTo(212,330);c.quadraticCurveTo(200,196,156,190);c.closePath();c.fill();c.stroke() + c.fillStyle='#fff';c.beginPath();c.moveTo(104,188);c.lineTo(128,250);c.lineTo(152,188);c.closePath();c.fill();c.stroke() + c.fillStyle=TIE;L(4.5);c.beginPath();c.moveTo(120,204);c.lineTo(136,204);c.lineTo(132,212);c.lineTo(138,240);c.lineTo(128,250);c.lineTo(118,240);c.lineTo(124,212);c.closePath();c.fill();c.stroke() + c.fillStyle=SKIN;L(5);c.beginPath();c.moveTo(116,166);c.lineTo(116,194);c.lineTo(128,204);c.lineTo(140,194);c.lineTo(140,166);c.fill();c.beginPath();c.moveTo(116,166);c.lineTo(116,190);c.moveTo(140,166);c.lineTo(140,190);c.stroke() + c.restore() + head(()=>{ + L(6);c.fillStyle=SKIN;c.beginPath();c.moveTo(74,96);c.bezierCurveTo(70,152,100,184,128,186);c.bezierCurveTo(156,184,186,152,182,96);c.bezierCurveTo(182,44,74,44,74,96);c.fill();c.stroke() + eye(c,L,103,142,-1);eye(c,L,153,142,1) + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*42,163,11,5,0,0,T),c.fill() + L(4);c.beginPath();c.moveTo(118,174);c.quadraticCurveTo(128,166,138,174);c.stroke() + L(6);c.fillStyle=HAIR;c.beginPath();c.moveTo(64,204);c.lineTo(66,150) + c.bezierCurveTo(52,74,88,36,128,36);c.bezierCurveTo(168,36,204,74,190,150);c.lineTo(192,204);c.lineTo(174,196);c.lineTo(176,120) + c.lineTo(176,108);c.lineTo(166,114);c.lineTo(156,100);c.lineTo(146,112);c.lineTo(136,98);c.lineTo(128,112);c.lineTo(120,98);c.lineTo(110,112);c.lineTo(100,100);c.lineTo(90,114);c.lineTo(80,108) + c.lineTo(80,120);c.lineTo(82,196);c.closePath();c.fill();c.stroke() + c.strokeStyle=HD;L(5);for(const[a,e]of[[1.24,1.36],[1.44,1.52],[1.62,1.74]])c.beginPath(),c.arc(128,104,56,PI*a,PI*e),c.stroke() + c.strokeStyle='#111';c.fillStyle='#212529';L(5);c.beginPath();c.moveTo(70,92);c.bezierCurveTo(70,40,186,40,186,92);c.lineTo(180,84);c.bezierCurveTo(170,52,86,52,76,84);c.closePath();c.fill();c.stroke() + }) + for(const d of[1,-1]){ + const ex=128-d*58,ey=226,a=(d>0?-.58:PI+.58)-d*1.05*o,fx=ex+130*cos(a),fy=ey+130*sin(a) + for(const[w,s]of[[32,'#111'],[21,SL]])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),c.moveTo(ex-d*10,ey+40),c.lineTo(ex,ey),c.lineTo(fx-cos(a)*16,fy-sin(a)*16),c.stroke() + c.strokeStyle='#111';c.save();c.translate(fx,fy);c.rotate(a) + c.lineWidth=5;c.fillStyle=BZ;c.beginPath();c.roundRect(-24,-14,10,28,4);c.fill();c.stroke() + c.fillStyle=SKIN;c.beginPath();c.roundRect(-14,-15,30,30,12);c.fill();c.stroke() + c.lineWidth=2.5;c.beginPath();for(const k of[-6,1,8])c.moveTo(14,k*d),c.lineTo(6,k*d);c.stroke() + c.restore() + } + if(i<3)for(const[w,s]of[[9,'#111'],[4,RD]]){c.lineWidth=w;c.strokeStyle=s;const r=i*8;for(const a of[-2.6,-2.1,-1,-.5,.5,2.6]){const x=128+cos(a)*(84+r),y=176+sin(a)*(64+r);c.beginPath();c.moveTo(x,y);c.lineTo(x+cos(a)*16,y+sin(a)*16);c.stroke()}} +} diff --git a/gen/uianime/404/flashlight.js b/gen/uianime/404/flashlight.js new file mode 100644 index 0000000..78649ed --- /dev/null +++ b/gen/uianime/404/flashlight.js @@ -0,0 +1,50 @@ +// nervous orange-haired girl in pajamas standing in a dark room, sweeping her flashlight beam back and forth and lighting up a "404" on the wall +const{sin,cos,PI,max,min}=Math,T=2*PI +export const frames=16,delay=90 +const SKIN='#ffe3d1',HAIR='#ff922b',HD='#e8590c',HL='#ffe8cc',EYE='#4dabf7',PJ='#a5d8ff',PD='#74c0fc',DARK='#232946',DIM='#2f3866',BEAM='#fff3bf',DIG='#ff8787',FL='#ff6b6b',BL='#ffa8a8',SW='#a5d8ff',Z=.74 +const eye=(c,x,y,d,lx)=>{ + c.fillStyle='#fff';c.beginPath();c.ellipse(x,y,14,17,0,0,T);c.fill() + c.fillStyle=EYE;c.beginPath();c.arc(x+lx,y+2,7.5,0,T);c.fill();c.fillStyle='#111';c.beginPath();c.arc(x+lx,y+2,3.5,0,T);c.fill() + c.fillStyle='#fff';c.beginPath();c.arc(x+lx-2.5,y-1,2,0,T);c.fill() + c.lineWidth=3.5;c.beginPath();c.ellipse(x,y,14,17,0,0,T);c.stroke() + c.lineWidth=7;c.beginPath();c.moveTo(x-16,y-8);c.quadraticCurveTo(x,y-22,x+16,y-8);c.moveTo(x+d*15,y-9);c.lineTo(x+d*21,y-14);c.stroke() +} +const four=(c,x,y)=>{c.moveTo(x+7,y-24);c.lineTo(x-15,y+6);c.lineTo(x+17,y+6);c.moveTo(x+7,y-24);c.lineTo(x+7,y+24)} +const digits=(c,col,w)=>{for(const[l,s]of[[w,'#111'],[w-12,col]]){c.lineWidth=l;c.strokeStyle=s;c.beginPath();four(c,96,64);four(c,204,64);c.moveTo(164,64);c.ellipse(150,64,14,23,0,0,T);c.stroke()}c.strokeStyle='#111'} +export default(c,t)=>{ + const a=-1.62+.6*sin(T*t),hx=150,hy=196,lx=hx+40*cos(a),ly=hy+40*sin(a),ex=4*cos(a+.6) + c.save();c.beginPath();c.roundRect(8,8,240,240,40);c.fillStyle=DARK;c.fill();c.clip() + c.globalAlpha=.6;digits(c,DIM,24);c.globalAlpha=1 + c.save();c.beginPath();c.moveTo(lx,ly);c.arc(lx,ly,300,a-.34,a+.34);c.closePath();c.fillStyle=BEAM;c.fill();c.clip() + digits(c,DIG,24);c.strokeStyle='#fff';c.lineWidth=4;c.beginPath();c.arc(150,64,9,PI*1.1,PI*1.4);c.stroke();c.strokeStyle='#111' + c.restore() + c.save();c.translate(82,262);c.scale(Z,Z);c.translate(-128,-256) + c.lineWidth=7;c.fillStyle=HD;c.beginPath();c.moveTo(128,36);c.bezierCurveTo(200,36,212,100,204,170);c.quadraticCurveTo(200,190,180,186);c.lineTo(76,186);c.quadraticCurveTo(56,190,52,170);c.bezierCurveTo(44,100,56,36,128,36);c.fill();c.stroke() + c.fillStyle=PJ;c.beginPath();c.moveTo(100,190);c.quadraticCurveTo(60,198,52,262);c.lineTo(204,262);c.quadraticCurveTo(196,198,156,190);c.closePath();c.fill();c.stroke() + c.fillStyle='#fff';for(const d of[-1,1])c.beginPath(),c.moveTo(128,212),c.lineTo(128+d*30,190),c.lineTo(128+d*34,212),c.closePath(),c.fill(),c.stroke() + c.fillStyle=PD;c.lineWidth=5;for(const y of[226,248])c.beginPath(),c.arc(128,y,5,0,T),c.fill(),c.stroke() + c.fillStyle=SKIN;c.lineWidth=7;c.beginPath();c.moveTo(116,168);c.lineTo(116,194);c.lineTo(128,210);c.lineTo(140,194);c.lineTo(140,168);c.fill();c.beginPath();c.moveTo(116,168);c.lineTo(116,192);c.moveTo(140,168);c.lineTo(140,192);c.stroke() + c.fillStyle=SKIN;c.beginPath();c.moveTo(74,96);c.bezierCurveTo(70,152,100,184,128,186);c.bezierCurveTo(156,184,186,152,182,96);c.bezierCurveTo(182,44,74,44,74,96);c.fill();c.stroke() + eye(c,103,142,-1,ex);eye(c,153,142,1,ex) + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*44,165,12,6,0,0,T),c.fill() + c.lineWidth=4;c.beginPath();c.moveTo(116,174);for(let k=1;k<=6;k++)c.lineTo(116+k*4,174+(k%2?-3:3));c.stroke() + c.lineWidth=7;c.fillStyle=HAIR;c.beginPath();c.moveTo(62,176) + c.bezierCurveTo(44,74,88,36,128,36);c.bezierCurveTo(168,36,212,74,194,176);c.quadraticCurveTo(184,182,180,172) + c.quadraticCurveTo(186,126,176,104);c.quadraticCurveTo(168,106,164,116);c.quadraticCurveTo(158,98,146,92);c.quadraticCurveTo(140,106,130,110) + c.quadraticCurveTo(124,96,114,94);c.quadraticCurveTo(108,106,100,110);c.quadraticCurveTo(94,98,86,100);c.quadraticCurveTo(80,108,78,108) + c.quadraticCurveTo(70,130,76,172);c.quadraticCurveTo(70,182,62,176);c.closePath();c.fill();c.stroke() + c.strokeStyle=HL;c.lineWidth=6;for(const[s,e]of[[1.22,1.34],[1.42,1.5],[1.62,1.74]])c.beginPath(),c.arc(128,104,56,PI*s,PI*e),c.stroke() + c.strokeStyle='#111';c.lineWidth=5;c.beginPath();c.moveTo(88,122);c.lineTo(112,116);c.moveTo(144,116);c.lineTo(168,122);c.stroke() + c.fillStyle='#ffd43b';c.lineWidth=5;c.beginPath();c.roundRect(60,80,28,11,5);c.fill();c.stroke() + c.fillStyle=SW;c.lineWidth=5;c.beginPath();c.moveTo(196,96);c.quadraticCurveTo(208,112,196,120);c.quadraticCurveTo(184,112,196,96);c.fill();c.stroke() + c.restore() + for(const[w,s]of[[24,'#111'],[14,PJ]])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),c.moveTo(108,238),c.lineTo(128,222),c.lineTo(hx,hy+4),c.stroke() + c.strokeStyle='#111';c.save();c.translate(hx,hy);c.rotate(a) + c.lineWidth=5;c.fillStyle=FL;c.beginPath();c.roundRect(-14,-7,40,14,4);c.fill();c.stroke() + c.fillStyle='#ced4da';c.beginPath();c.moveTo(24,-8);c.lineTo(40,-13);c.lineTo(40,13);c.lineTo(24,8);c.closePath();c.fill();c.stroke() + c.fillStyle='#fff9db';c.beginPath();c.ellipse(40,0,4,13,0,0,T);c.fill();c.stroke() + c.restore() + c.lineWidth=5;c.fillStyle=SKIN;c.beginPath();c.ellipse(hx,hy,10,11,0,0,T);c.fill();c.stroke() + c.restore() + c.lineWidth=7;c.beginPath();c.roundRect(8,8,240,240,40);c.stroke() +} diff --git a/gen/uianime/404/lost.js b/gen/uianime/404/lost.js new file mode 100644 index 0000000..b7de9bf --- /dev/null +++ b/gen/uianime/404/lost.js @@ -0,0 +1,69 @@ +// lost explorer girl with honey pigtails and a safari hat holding her map upside down, looking left and right in confusion while question marks pop up +const{sin,PI,min,max}=Math,T=2*PI +export const frames=12,delay=120 +const SKIN='#ffe3d1',HAIR='#ffd43b',HD='#f08c00',HL='#fff9db',EYE='#a9744f',ED='#6f4518',HAT='#e9cf96',HB='#a9744f',SH='#8ce99a',SD='#40c057',MAP='#fff3bf',MP='#ffe699',MT='#91a7ff',PINE='#51cf66',BL='#ffa8a8',SW='#a5d8ff',QC=['#ff8787','#74c0fc','#b197fc'],Z=.84 +const eye=(c,x,y,d,lx)=>{ + c.fillStyle='#fff';c.beginPath();c.ellipse(x,y,14,17,0,0,T);c.fill() + c.save();c.beginPath();c.ellipse(x,y,14,17,0,0,T);c.clip();c.beginPath();c.ellipse(x+lx,y+2,11.5,15,0,0,T);c.fillStyle=EYE;c.fill();c.lineWidth=2.5;c.stroke() + c.fillStyle=ED;c.beginPath();c.ellipse(x+lx,y-8,13,10,0,0,T);c.fill() + c.fillStyle='#111';c.beginPath();c.ellipse(x+lx,y+3,5.5,7.5,0,0,T);c.fill() + c.fillStyle='#fff';c.beginPath();c.arc(x+lx-4,y-5,4.5,0,T);c.fill();c.beginPath();c.arc(x+lx+5,y+8,2,0,T);c.fill();c.restore() + c.lineWidth=7;c.beginPath();c.moveTo(x-16,y-6);c.quadraticCurveTo(x,y-20,x+16,y-6);c.moveTo(x+d*15,y-7);c.lineTo(x+d*21,y-12);c.stroke() +} +const qm=(c,x,y,s,col,a)=>{ + c.save();c.translate(x,y);c.rotate(a);c.scale(s,s) + for(const[w,st]of[[14,'#111'],[6.5,col]])c.lineWidth=w,c.strokeStyle=st,c.beginPath(),c.moveTo(-9,-10),c.bezierCurveTo(-9,-24,11,-24,11,-11),c.bezierCurveTo(11,-2,0,-2,0,8),c.stroke() + c.strokeStyle='#111';c.fillStyle=col;c.lineWidth=4;c.beginPath();c.arc(0,20,5,0,T);c.fill();c.stroke();c.restore() +} +export default(c,t)=>{ + // s saturates so she holds each glance, and held frames come out identical + const s=max(-1,min(1,1.8*sin(T*t))),lx=5*s,fx=3*s + for(const[x,y,d,k]of[[26,70,-1,0],[230,70,1,1],[58,22,-1,2],[198,22,1,2]]){const sc=2*(d*s-.5);if(sc>0)qm(c,x,y,sc*(y<40?.75:1.15),QC[k],d*.25)} + c.save();c.translate(128,12);c.scale(Z,Z);c.translate(-128,-20) + const head=f=>{c.save();c.translate(128,180);c.rotate(.06*s);c.translate(-128,-180);f();c.restore()} + head(()=>{ + c.lineWidth=7;c.fillStyle=HD;c.beginPath();c.moveTo(128,36);c.bezierCurveTo(196,36,206,96,198,150);c.lineTo(58,150);c.bezierCurveTo(50,96,60,36,128,36);c.fill();c.stroke() + for(const d of[-1,1]){ + c.save();c.translate(128+d*62,126);c.scale(d,1);c.rotate(-.15-.12*d*s) + c.fillStyle=HAIR;c.beginPath();c.moveTo(0,-12);c.bezierCurveTo(40,-16,52,40,32,74);c.quadraticCurveTo(26,60,14,68);c.bezierCurveTo(22,40,12,12,0,12);c.closePath();c.fill();c.stroke() + c.strokeStyle=HL;c.lineWidth=5;c.beginPath();c.moveTo(14,-4);c.bezierCurveTo(30,4,36,26,32,44);c.stroke();c.strokeStyle='#111' + c.fillStyle='#ff8787';c.lineWidth=6;c.beginPath();c.arc(2,0,10,0,T);c.fill();c.stroke() + c.restore() + } + }) + c.lineWidth=7;c.fillStyle=SH;c.beginPath();c.moveTo(100,190);c.quadraticCurveTo(62,198,54,250);c.lineTo(202,250);c.quadraticCurveTo(194,198,156,190);c.closePath();c.fill();c.stroke() + c.fillStyle=SKIN;c.beginPath();c.moveTo(116,168);c.lineTo(116,194);c.lineTo(128,206);c.lineTo(140,194);c.lineTo(140,168);c.fill();c.lineWidth=6;c.beginPath();c.moveTo(116,168);c.lineTo(116,192);c.moveTo(140,168);c.lineTo(140,192);c.stroke() + head(()=>{ + c.lineWidth=7;c.fillStyle=SKIN;c.beginPath();c.moveTo(74,96);c.bezierCurveTo(70,152,100,184,128,186);c.bezierCurveTo(156,184,186,152,182,96);c.bezierCurveTo(182,44,74,44,74,96);c.fill();c.stroke() + eye(c,103+fx,140,-1,lx);eye(c,153+fx,140,1,lx) + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+fx+d*42,162,12,6,0,0,T),c.fill() + c.lineWidth=3;for(const d of[-1,1])for(const k of[-5,0,5])c.beginPath(),c.moveTo(128+fx+d*42+k-2,165),c.lineTo(128+fx+d*42+k+2,159),c.stroke() + c.lineWidth=4;c.beginPath();c.moveTo(117+fx,171);c.quadraticCurveTo(120.5+fx,165,124+fx,171);c.quadraticCurveTo(127.5+fx,177,131+fx,171);c.quadraticCurveTo(134.5+fx,165,138+fx,171);c.stroke() + c.lineWidth=7;c.fillStyle=HAIR;c.beginPath();c.moveTo(70,146) + c.bezierCurveTo(54,74,88,36,128,36);c.bezierCurveTo(168,36,202,74,186,146) + c.quadraticCurveTo(184,116,176,102);c.quadraticCurveTo(168,104,162,112);c.quadraticCurveTo(156,98,146,92);c.quadraticCurveTo(140,104,132,110) + c.quadraticCurveTo(126,96,116,92);c.quadraticCurveTo(110,104,102,110);c.quadraticCurveTo(96,98,88,98);c.quadraticCurveTo(82,108,80,104) + c.quadraticCurveTo(72,122,70,146);c.closePath();c.fill();c.stroke() + c.strokeStyle=HL;c.lineWidth=6;for(const[a,e]of[[1.1,1.18],[1.82,1.9]])c.beginPath(),c.arc(128,110,54,PI*a,PI*e),c.stroke() + c.strokeStyle='#111';c.lineWidth=5;c.beginPath();c.moveTo(90+fx,113);c.lineTo(112+fx,119);c.moveTo(144+fx,112);c.lineTo(166+fx,103);c.stroke() + c.lineWidth=7;c.fillStyle=HAT;c.beginPath();c.ellipse(128,70,84,15,0,0,T);c.fill();c.stroke() + c.beginPath();c.moveTo(76,72);c.bezierCurveTo(74,10,182,10,180,72);c.quadraticCurveTo(128,82,76,72);c.fill();c.stroke() + c.fillStyle=HB;c.lineWidth=6;c.beginPath();c.moveTo(77,58);c.quadraticCurveTo(128,68,179,58);c.lineTo(180,70);c.quadraticCurveTo(128,80,76,70);c.closePath();c.fill();c.stroke() + c.strokeStyle='#fff';c.lineWidth=6;c.beginPath();c.arc(128,64,40,PI*1.25,PI*1.42);c.stroke();c.strokeStyle='#111' + c.fillStyle=SW;c.lineWidth=5;const sy=106;c.beginPath();c.moveTo(198,sy-14);c.quadraticCurveTo(208,sy,198,sy+7);c.quadraticCurveTo(188,sy,198,sy-14);c.fill();c.stroke() + }) + c.restore() + c.save();c.translate(128,202) + for(const[k,a,b]of[[0,-102,-34],[1,-34,34],[2,34,102]]){const u=k%2?-4:0,v=k%2?0:-4;c.fillStyle=k%2?MP:MAP;c.beginPath();c.moveTo(a,-42-u);c.lineTo(b,-42-v);c.lineTo(b,42+v);c.lineTo(a,42+u);c.closePath();c.fill();c.lineWidth=6;c.stroke()} + c.save();c.rotate(PI) + c.strokeStyle='#ff6b6b';c.lineWidth=4.5;c.setLineDash([7,7]);c.beginPath();c.moveTo(-34,26);c.bezierCurveTo(0,30,20,-6,58,-4);c.stroke();c.setLineDash([]);c.strokeStyle='#111' + c.lineWidth=4.5;for(const[x,h,w]of[[-70,34,24],[-44,26,20]]){c.fillStyle=MT;c.beginPath();c.moveTo(x-w,26);c.lineTo(x,26-h);c.lineTo(x+w,26);c.closePath();c.fill();c.stroke();c.fillStyle='#fff';c.beginPath();c.moveTo(x-w*.35,26-h*.65);c.lineTo(x,26-h);c.lineTo(x+w*.35,26-h*.65);c.lineTo(x,26-h*.55);c.closePath();c.fill();c.stroke()} + c.strokeStyle=HB;c.lineWidth=5;c.beginPath();c.moveTo(-8,30);c.lineTo(-8,22);c.stroke();c.strokeStyle='#111';c.lineWidth=4.5;c.fillStyle=PINE + for(const[y,w]of[[22,15],[10,12],[-2,9]])c.beginPath(),c.moveTo(-8-w,y),c.lineTo(-8,y-16),c.lineTo(-8+w,y),c.closePath(),c.fill(),c.stroke() + c.fillStyle='#fff';c.beginPath();c.rect(22,-24,24,18);c.fill();c.stroke();c.fillStyle='#ff8787';c.beginPath();c.moveTo(17,-22);c.lineTo(34,-38);c.lineTo(51,-22);c.closePath();c.fill();c.stroke() + for(const[w,st]of[[12,'#111'],[5.5,'#fa5252']])c.lineWidth=w,c.strokeStyle=st,c.beginPath(),c.moveTo(60,-14),c.lineTo(78,4),c.moveTo(78,-14),c.lineTo(60,4),c.stroke() + c.restore() + c.strokeStyle='#111';c.lineWidth=5;c.fillStyle=SKIN + for(const d of[-1,1]){c.beginPath();c.ellipse(d*96,-34,11,14,0,0,T);c.fill();c.stroke();c.beginPath();c.ellipse(d*87,-41,6,9,d*.6,0,T);c.fill();c.stroke()} + c.restore() +} diff --git a/gen/uianime/404/peek.js b/gen/uianime/404/peek.js new file mode 100644 index 0000000..f437338 --- /dev/null +++ b/gen/uianime/404/peek.js @@ -0,0 +1,42 @@ +// shy girl with long pink hair peeking over the top of a big "404" sign, eyes darting left and right with a nervous sweatdrop, then ducking back down +const{sin,PI}=Math,T=2*PI +export const frames=16,delay=90 +const SKIN='#ffe3d1',HAIR='#f783ac',HD='#e64980',HL='#ffdeeb',EYE='#51cf66',ED='#2b8a3e',WOOD='#e8b07a',WD='#c47f45',PANEL='#fff9db',DIG='#ff8787',BL='#ffa8a8',SW='#a5d8ff',CLIP='#ffd43b' +const ease=x=>x<=0?0:x>=1?1:x*x*(3-2*x) +const eye=(c,x,y,d,lx)=>{ + c.fillStyle='#fff';c.beginPath();c.ellipse(x,y,14,17,0,0,T);c.fill() + c.save();c.beginPath();c.ellipse(x,y,14,17,0,0,T);c.clip();c.beginPath();c.ellipse(x+lx,y+2,11.5,15,0,0,T);c.fillStyle=EYE;c.fill();c.lineWidth=2.5;c.stroke() + c.fillStyle=ED;c.beginPath();c.ellipse(x+lx,y-8,13,10,0,0,T);c.fill() + c.fillStyle='#111';c.beginPath();c.ellipse(x+lx,y+3,5.5,7.5,0,0,T);c.fill() + c.fillStyle='#fff';c.beginPath();c.arc(x+lx-4,y-5,4.5,0,T);c.fill();c.beginPath();c.arc(x+lx+5,y+8,2,0,T);c.fill();c.restore() + c.lineWidth=6;c.beginPath();c.moveTo(x-16,y-6);c.quadraticCurveTo(x,y-20,x+16,y-6);c.moveTo(x+d*15,y-7);c.lineTo(x+d*21,y-12);c.stroke() +} +export default(c,t,i)=>{ + const up=ease((t-.06)/.16)-ease((t-.78)/.14),lx=t>.24&&t<.48?-5:t>=.48&&t<.76?5:0,bk=i==9 + c.save();c.beginPath();c.rect(0,0,256,200);c.clip();c.translate(128,117+40*(1-up));c.rotate(.06*up);c.scale(.88,.88);c.translate(-128,-140) + c.lineWidth=6;c.fillStyle=HD;c.beginPath();c.moveTo(128,36);c.bezierCurveTo(200,36,214,110,210,250);c.lineTo(46,250);c.bezierCurveTo(42,110,56,36,128,36);c.fill();c.stroke() + c.fillStyle=SKIN;c.beginPath();c.moveTo(74,96);c.bezierCurveTo(70,152,100,184,128,186);c.bezierCurveTo(156,184,186,152,182,96);c.bezierCurveTo(182,44,74,44,74,96);c.fill();c.stroke() + if(bk){c.lineWidth=5;for(const x of[103,153])c.beginPath(),c.moveTo(x-14,142),c.quadraticCurveTo(x,149,x+14,142),c.stroke()} + else{eye(c,103,140,-1,lx);eye(c,153,140,1,lx)} + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*42,163,12,6,0,0,T),c.fill() + c.lineWidth=2.5;for(const d of[-1,1])for(const k of[-5,0,5])c.beginPath(),c.moveTo(128+d*42+k-2,166),c.lineTo(128+d*42+k+2,160),c.stroke() + c.lineWidth=6;c.fillStyle=HAIR;c.beginPath();c.moveTo(60,200);c.bezierCurveTo(44,76,86,36,128,36);c.bezierCurveTo(170,36,212,76,196,200) + c.lineTo(180,200);c.quadraticCurveTo(184,140,176,106);c.quadraticCurveTo(168,106,162,114);c.quadraticCurveTo(156,98,146,92);c.quadraticCurveTo(140,104,132,110) + c.quadraticCurveTo(126,96,116,92);c.quadraticCurveTo(110,104,102,110);c.quadraticCurveTo(96,98,88,98);c.quadraticCurveTo(84,106,80,106) + c.quadraticCurveTo(72,140,76,200);c.closePath();c.fill();c.stroke() + c.beginPath();c.moveTo(124,38);c.quadraticCurveTo(118,8,152,12);c.quadraticCurveTo(128,20,136,38);c.fill();c.stroke() + c.strokeStyle=HL;c.lineWidth=5;for(const[a,e]of[[1.24,1.36],[1.44,1.52],[1.62,1.74]])c.beginPath(),c.arc(128,104,56,PI*a,PI*e),c.stroke() + c.strokeStyle='#111';c.lineWidth=4;c.beginPath();c.moveTo(90,118);c.lineTo(112,112);c.moveTo(144,112);c.lineTo(166,118);c.stroke() + c.fillStyle=CLIP;c.lineWidth=4;for(const y of[80,96])c.beginPath(),c.roundRect(170,y-4,22,8,4),c.fill(),c.stroke() + if(up>.9){c.fillStyle=SW;c.lineWidth=4.5;c.beginPath();c.moveTo(68,104);c.quadraticCurveTo(78,118,68,124);c.quadraticCurveTo(58,118,68,104);c.fill();c.stroke()} + c.restore() + c.lineWidth=6;c.fillStyle=WOOD;c.beginPath();c.roundRect(12,134,232,114,18);c.fill();c.stroke() + c.fillStyle=PANEL;c.lineWidth=5;c.beginPath();c.roundRect(28,149,200,84,10);c.fill();c.stroke() + c.strokeStyle=WD;c.lineWidth=4;c.beginPath();c.moveTo(34,142);c.lineTo(90,142);c.moveTo(166,241);c.lineTo(224,241);c.stroke() + for(const[w,s]of[[26,'#111'],[13,DIG]]){c.lineWidth=w;c.strokeStyle=s;c.beginPath() + for(const x of[68,188])c.moveTo(x+9,166),c.lineTo(x-18,202),c.lineTo(x+21,202),c.moveTo(x+9,166),c.lineTo(x+9,219) + c.moveTo(145,192);c.ellipse(128,192,17,26,0,0,T);c.stroke()} + c.strokeStyle='#fff';c.lineWidth=4;c.beginPath();c.arc(128,192,16,PI*1.1,PI*1.35);c.moveTo(70,172);c.lineTo(63,182);c.moveTo(190,172);c.lineTo(183,182);c.stroke() + c.strokeStyle='#111';c.fillStyle=SKIN;c.lineWidth=4.5 + for(const x of[64,192])for(const k of[-1.5,-.5,.5,1.5])c.beginPath(),c.ellipse(x+k*9,136,5,9,0,0,T),c.fill(),c.stroke() +} diff --git a/gen/uianime/404/shrug.js b/gen/uianime/404/shrug.js new file mode 100644 index 0000000..18e761a --- /dev/null +++ b/gen/uianime/404/shrug.js @@ -0,0 +1,54 @@ +// teal bob girl in a yellow hoodie giving a big "dunno" shrug: shoulders up, palms out, head tilted with half-lidded eyes while a question mark pops over her +const{sin,PI,min}=Math,T=2*PI +export const frames=12,delay=100 +const SKIN='#ffe3d1',HAIR='#3bc9db',HD='#1098ad',HL='#c5f6fa',EYE='#9775fa',ED='#6741d9',HO='#ffd43b',HOD='#f59f00',BL='#ffa8a8',Q='#ff8787',Z=.9 +const ease=x=>x<=0?0:x>=1?1:x*x*(3-2*x) +const eye=(c,x,y,d,lx)=>{ + c.fillStyle='#fff';c.beginPath();c.ellipse(x,y,14,17,0,0,T);c.fill() + c.save();c.beginPath();c.ellipse(x,y,14,17,0,0,T);c.clip();c.beginPath();c.ellipse(x+lx,y+2,11.5,15,0,0,T);c.fillStyle=EYE;c.fill();c.lineWidth=2.5;c.stroke() + c.fillStyle='#111';c.beginPath();c.ellipse(x+lx,y+4,5.5,7.5,0,0,T);c.fill() + c.fillStyle='#fff';c.beginPath();c.arc(x+lx-4,y+1,4,0,T);c.fill();c.beginPath();c.arc(x+lx+5,y+10,2,0,T);c.fill() + c.fillStyle=SKIN;c.fillRect(x-16,y-20,32,18);c.restore() + c.lineWidth=6;c.beginPath();c.moveTo(x-17,y-2);c.lineTo(x+16,y-2);c.lineTo(x+d*16+(d>0?4:-4),y-7);c.stroke() + c.lineWidth=2.5;c.beginPath();c.moveTo(x-8,y+19);c.lineTo(x+8,y+19);c.stroke() +} +export default(c,t)=>{ + const u=ease((t-.04)/.14)-ease((t-.66)/.14),sh=-8*u,lx=5*u-1 + if(u>.05){const sc=min(1,u*1.2)*(1+.25*ease(1-(t-.18)/.1)*(t>.18));c.save();c.translate(212,44);c.rotate(.2);c.scale(sc,sc) + for(const[w,s]of[[15,'#111'],[7,Q]])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),c.moveTo(-11,-12),c.bezierCurveTo(-11,-29,13,-29,13,-13),c.bezierCurveTo(13,-2,0,-2,0,10),c.stroke() + c.strokeStyle='#111';c.fillStyle=Q;c.lineWidth=4.5;c.beginPath();c.arc(0,24,6,0,T);c.fill();c.stroke();c.restore()} + c.translate(128,250);c.scale(Z,Z);c.translate(-128,-252) + const head=f=>{c.save();c.translate(128,190+sh*.6);c.rotate(-.12*u);c.translate(-128,-190);f();c.restore()} + head(()=>{c.lineWidth=6;c.fillStyle=HD;c.beginPath();c.moveTo(128,36);c.bezierCurveTo(200,36,214,100,204,160);c.quadraticCurveTo(200,178,184,176);c.lineTo(72,176);c.quadraticCurveTo(56,178,52,160);c.bezierCurveTo(42,100,56,36,128,36);c.fill();c.stroke()}) + c.lineWidth=6;c.fillStyle=HOD;c.beginPath();c.ellipse(128,196+sh,58,20,0,0,T);c.fill();c.stroke() + c.fillStyle=HO;c.beginPath();c.moveTo(98,190+sh);c.quadraticCurveTo(58,196+sh,50,252);c.lineTo(206,252);c.quadraticCurveTo(198,196+sh,158,190+sh);c.closePath();c.fill();c.stroke() + c.fillStyle=SKIN;c.beginPath();c.moveTo(116,168);c.lineTo(116,192+sh);c.quadraticCurveTo(128,204+sh,140,192+sh);c.lineTo(140,168);c.fill();c.lineWidth=5;c.beginPath();c.moveTo(116,168);c.lineTo(116,190+sh);c.moveTo(140,168);c.lineTo(140,190+sh);c.stroke() + c.lineWidth=5;c.beginPath();c.moveTo(104,192+sh);c.quadraticCurveTo(128,214+sh,152,192+sh);c.stroke() + c.lineWidth=4;c.fillStyle='#fff';for(const d of[-1,1])c.beginPath(),c.moveTo(128+d*14,206+sh),c.lineTo(128+d*16,232+sh),c.stroke(),c.beginPath(),c.arc(128+d*16,236+sh,4,0,T),c.fill(),c.stroke() + c.strokeStyle=HOD;c.lineWidth=4;c.beginPath();c.moveTo(96,240);c.lineTo(160,240);c.stroke();c.strokeStyle='#111' + head(()=>{ + c.lineWidth=6;c.fillStyle=SKIN;c.beginPath();c.moveTo(74,96);c.bezierCurveTo(70,152,100,184,128,186);c.bezierCurveTo(156,184,186,152,182,96);c.bezierCurveTo(182,44,74,44,74,96);c.fill();c.stroke() + eye(c,103,142,-1,lx);eye(c,153,142,1,lx) + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*42,164,12,6,0,0,T),c.fill() + c.lineWidth=2.5;for(const d of[-1,1])for(const k of[-5,0,5])c.beginPath(),c.moveTo(128+d*42+k-2,167),c.lineTo(128+d*42+k+2,161),c.stroke() + c.lineWidth=3.5;c.beginPath();c.moveTo(120,171);c.quadraticCurveTo(126,168,129,171);c.quadraticCurveTo(132,174,137,169);c.stroke() + c.lineWidth=6;c.fillStyle=HAIR;c.beginPath();c.moveTo(60,170) + c.bezierCurveTo(42,74,88,36,128,36);c.bezierCurveTo(168,36,214,74,196,170);c.quadraticCurveTo(186,176,178,166) + c.quadraticCurveTo(186,124,178,104);c.lineTo(170,112);c.quadraticCurveTo(164,98,154,92);c.quadraticCurveTo(150,104,142,110) + c.quadraticCurveTo(136,96,124,90);c.quadraticCurveTo(120,102,112,110);c.quadraticCurveTo(106,98,96,96);c.quadraticCurveTo(92,104,86,110) + c.quadraticCurveTo(80,104,78,102);c.quadraticCurveTo(70,124,78,166);c.quadraticCurveTo(70,176,60,170);c.closePath();c.fill();c.stroke() + c.strokeStyle=HL;c.lineWidth=5;for(const[a,b]of[[1.22,1.34],[1.42,1.5],[1.62,1.74]])c.beginPath(),c.arc(128,104,56,PI*a,PI*b),c.stroke() + c.strokeStyle='#111';c.lineWidth=4.5;for(const d of[-1,1])c.beginPath(),c.arc(128+d*25,124-6*u,13,PI*1.2,PI*1.8),c.stroke() + c.fillStyle='#ff6b6b';c.lineWidth=4;c.beginPath();c.moveTo(70,92);c.lineTo(92,82);c.lineTo(88,96);c.closePath();c.fill();c.stroke() + }) + for(const d of[-1,1]){ + const sx=128+d*52,sy=214+sh,ex=128+d*90,ey=236+sh*.5,hx=128+d*(98+10*u),hy=222-50*u + for(const[w,s]of[[30,'#111'],[19,HO]])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),c.moveTo(sx,sy),c.lineTo(ex,ey),c.lineTo(hx,hy+12),c.stroke() + c.strokeStyle='#111';c.lineWidth=5;c.fillStyle=SKIN + c.save();c.translate(hx,hy);c.rotate(d*(.45+.55*u)) + const P=[[0,0,13,12,0],[-d*13,-4,4.5,9,-d*.8],...[-9,-3,3,9].map(k=>[k,-15,3.8,9,k*.02])] + for(const[l,st]of[[10,'#111'],[0,SKIN]])for(const[x,y,a,b2,r]of P){c.beginPath();c.ellipse(x,y,a,b2,r,0,T);if(l)c.lineWidth=l,c.stroke();else c.fill()} + c.lineWidth=2.5;c.beginPath();for(const k of[-6,0,6])c.moveTo(k,-20),c.lineTo(k,-9);c.stroke() + c.restore() + } +} diff --git a/gen/uianime/500/fix.js b/gen/uianime/500/fix.js new file mode 100644 index 0000000..7dc4c81 --- /dev/null +++ b/gen/uianime/500/fix.js @@ -0,0 +1,64 @@ +// red-haired mechanic girl in a bandana whacking a broken 500 server with a big wrench, sparks flying off it +const{sin,cos,PI,max,min}=Math,T=2*PI +export const frames=10,delay=80 +const SKIN='#ffe3d1',HAIR='#ff8787',HD='#e03131',EYE='#fab005',ED='#e67700',OV='#4dabf7',TS='#ffe066',BN='#ffd43b',BL='#ffa8a8',SV='#ced4da',SD='#868e96',RD='#fa5252',SP='#ffd43b',Z=.72 +const S=[0,0,.2,.45,.7,.9,1,1,.55,.15] +const eye=(c,L,x,y,d)=>{ + c.fillStyle='#fff';c.beginPath();c.ellipse(x,y,14,17,0,0,T);c.fill() + c.save();c.beginPath();c.ellipse(x,y+2,11.5,15,0,0,T);c.clip();c.fillStyle=EYE;c.fill();c.fillStyle=ED;c.beginPath();c.ellipse(x,y-8,13,10,0,0,T);c.fill();c.restore() + L(2.5);c.beginPath();c.ellipse(x,y+2,11.5,15,0,0,T);c.stroke() + c.fillStyle='#111';c.beginPath();c.ellipse(x,y+3,5.5,7.5,0,0,T);c.fill() + c.fillStyle='#fff';c.beginPath();c.arc(x-4,y-5,4.5,0,T);c.fill();c.beginPath();c.arc(x+5,y+8,2,0,T);c.fill() + c.fillStyle=SKIN;c.beginPath();c.moveTo(x-d*20,y-26);c.lineTo(x-d*20,y-5);c.lineTo(x+d*20,y-19);c.lineTo(x+d*20,y-26);c.fill() + L(6);c.beginPath();c.moveTo(x-d*18,y-5);c.lineTo(x+d*17,y-17);c.stroke() +} +const dig=(c,x,y,n)=>{c.beginPath();if(n)c.ellipse(x,y,7,11,0,0,T);else c.moveTo(x+7,y-11),c.lineTo(x-6,y-11),c.lineTo(x-7,y-1),c.quadraticCurveTo(x+8,y-5,x+7,y+4),c.quadraticCurveTo(x+6,y+12,x-7,y+9);c.stroke()} +export default(c,t,i)=>{ + const s=S[i],hit=i<2,L=v=>c.lineWidth=v/Z,hx=100-4*s,hy=140-66*s,a=-2.55+.85*s,wx=hx+58*cos(a),wy=hy+58*sin(a) + const head=f=>{c.save();c.translate(168,108);c.scale(Z,Z);c.translate(-128,-128);f();c.restore()} + head(()=>{ + c.save();c.translate(186,74);c.rotate(.5+.12*s) + L(6);c.fillStyle=HAIR;c.beginPath();c.moveTo(-8,0);c.bezierCurveTo(40,-8,62,50,50,112);c.quadraticCurveTo(44,132,28,138);c.quadraticCurveTo(38,96,20,56);c.quadraticCurveTo(10,28,-8,14);c.closePath();c.fill();c.stroke() + c.strokeStyle=HD;L(3);c.beginPath();c.moveTo(12,12);c.bezierCurveTo(30,30,40,70,38,108);c.stroke();c.strokeStyle='#111';c.restore() + L(6);c.fillStyle=HD;c.beginPath();c.moveTo(128,34);c.bezierCurveTo(196,34,206,96,198,160);c.lineTo(58,160);c.bezierCurveTo(50,96,60,34,128,34);c.fill();c.stroke() + c.fillStyle=TS;c.beginPath();c.moveTo(100,190);c.quadraticCurveTo(58,196,46,330);c.lineTo(210,330);c.quadraticCurveTo(198,196,156,190);c.closePath();c.fill();c.stroke() + c.fillStyle=OV;c.beginPath();c.moveTo(84,236);c.lineTo(172,236);c.lineTo(180,330);c.lineTo(76,330);c.closePath();c.fill();c.stroke() + for(const d of[-1,1])c.beginPath(),c.moveTo(128+d*42,240),c.lineTo(128+d*52,196),c.lineTo(128+d*38,194),c.lineTo(128+d*28,240),c.fill(),c.stroke() + c.fillStyle=BN;for(const d of[-1,1])c.beginPath(),c.arc(128+d*36,246,6,0,T),c.fill(),c.stroke() + c.fillStyle=SKIN;c.beginPath();c.moveTo(116,166);c.lineTo(116,194);c.lineTo(128,204);c.lineTo(140,194);c.lineTo(140,166);c.fill();L(5);c.beginPath();c.moveTo(116,166);c.lineTo(116,192);c.moveTo(140,166);c.lineTo(140,192);c.stroke() + L(6);c.fillStyle=SKIN;c.beginPath();c.moveTo(74,96);c.bezierCurveTo(70,152,100,184,128,186);c.bezierCurveTo(156,184,186,152,182,96);c.bezierCurveTo(182,44,74,44,74,96);c.fill();c.stroke() + eye(c,L,103,142,-1);eye(c,L,153,142,1) + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*44,164,11,5.5,0,0,T),c.fill() + const m=()=>{c.beginPath();c.moveTo(110,163);c.quadraticCurveTo(128,170,148,160);c.quadraticCurveTo(142,186,126,184);c.quadraticCurveTo(110,182,110,163)} + c.fillStyle='#c92a2a';m();c.fill();c.save();c.clip();c.fillStyle='#fff';c.fillRect(100,150,60,21);c.restore();L(4);m();c.stroke() + L(6);c.fillStyle=HAIR;c.beginPath();c.moveTo(70,150) + c.bezierCurveTo(54,74,88,36,128,36);c.bezierCurveTo(168,36,202,74,186,150) + c.quadraticCurveTo(186,118,178,104);c.lineTo(170,112);c.lineTo(160,96);c.lineTo(150,110);c.lineTo(138,92);c.lineTo(126,108) + c.lineTo(114,92);c.lineTo(104,108);c.lineTo(94,96);c.lineTo(84,112);c.lineTo(78,104);c.quadraticCurveTo(70,124,70,150);c.closePath();c.fill();c.stroke() + c.fillStyle=BN;c.beginPath();c.moveTo(70,92);c.bezierCurveTo(70,40,186,40,186,92);c.lineTo(182,74);c.bezierCurveTo(170,46,86,46,74,74);c.closePath();c.fill();c.stroke() + c.beginPath();c.moveTo(184,78);c.lineTo(214,62);c.lineTo(206,86);c.closePath();c.moveTo(184,80);c.lineTo(216,96);c.lineTo(194,100);c.closePath();c.fill();c.stroke() + c.fillStyle=RD;for(const[x,y]of[[100,56],[128,50],[156,56]])c.beginPath(),c.arc(x,y,4,0,T),c.fill() + c.save();c.translate(84,60);c.scale(hit?1.6:1.3,hit?1.6:1.3) + for(const[w,k]of[[11,'#111'],[5,RD]]){c.lineWidth=w;c.strokeStyle=k;c.beginPath();for(let k=0;k<4;k++){const a=k*PI/2+PI/4,ca=cos(a),sa=sin(a),q=(x,y)=>[x*ca-y*sa,x*sa+y*ca];const[a1,b1]=q(5,-11),[a2,b2]=q(5,-4),[a3,b3]=q(11,-4);c.moveTo(a1,b1);c.quadraticCurveTo(a2,b2,a3,b3)}c.stroke()} + c.restore();c.strokeStyle='#111' + }) + c.save();c.translate(hit?-3*(1-i):0,0) + c.lineWidth=6;c.fillStyle=SV;c.beginPath();c.roundRect(8,116,98,132,10);c.fill();c.stroke() + c.fillStyle='#343a40';c.beginPath();c.roundRect(17,126,80,36,6);c.fill();c.lineWidth=4;c.stroke() + for(const[w,k]of[[8,'#111'],[4,RD]])c.lineWidth=w,c.strokeStyle=k,dig(c,37,144,0),dig(c,58,144,1),dig(c,78,144,1) + c.strokeStyle='#111';c.lineWidth=4 + for(const y of[170,196,222]){c.fillStyle=SD;c.beginPath();c.roundRect(17,y,80,20,5);c.fill();c.stroke();c.fillStyle=(i+y/26)%3<1.5?RD:'#495057';c.beginPath();c.arc(85,y+10,5,0,T);c.fill();c.stroke() + c.lineWidth=3;c.beginPath();for(const x of[28,40,52])c.moveTo(x,y+5),c.lineTo(x,y+15);c.stroke();c.lineWidth=4} + c.restore() + for(const[w,k]of[[26,'#111'],[16,SKIN]])c.lineWidth=w,c.strokeStyle=k,c.beginPath(),c.moveTo(122,186),c.quadraticCurveTo(106-8*s,168-40*s,hx,hy),c.stroke() + c.strokeStyle='#111';c.fillStyle=TS;c.lineWidth=5;c.beginPath();c.ellipse(122,190,15,17,.3,0,T);c.fill();c.stroke() + c.save();c.translate(hx,hy);c.rotate(a) + c.lineWidth=5;c.fillStyle='#adb5bd';c.beginPath();c.roundRect(-14,-6,62,12,5);c.fill();c.stroke() + c.beginPath();c.moveTo(46,-6);c.lineTo(48,-18);c.quadraticCurveTo(52,-24,60,-20);c.lineTo(58,-8);c.lineTo(68,-6);c.lineTo(70,8);c.lineTo(58,10);c.lineTo(58,22);c.quadraticCurveTo(52,24,48,18);c.lineTo(46,6);c.closePath();c.fill();c.stroke() + c.restore() + c.fillStyle=SKIN;c.lineWidth=5;c.beginPath();c.ellipse(hx,hy,13,12,a,0,T);c.fill();c.stroke() + if(i<3){const q=i/3;c.fillStyle=SP;c.lineWidth=4 + c.beginPath();for(let k=0;k<16;k++){const r=k%2?10:28*(1-q*.5),b=k*PI/8;c.lineTo(wx-6+cos(b)*r,wy-4+sin(b)*r)}c.closePath();if(i<2)c.fill(),c.stroke() + for(const b of[-2.4,-1.8,-1.2,-.6,2.5]){const r=30+24*q,x=wx-6+cos(b)*r,y=wy-4+sin(b)*r;for(const[w,k]of[[9,'#111'],[4,SP]])c.lineWidth=w,c.strokeStyle=k,c.beginPath(),c.moveTo(x,y),c.lineTo(x+cos(b)*12,y+sin(b)*12),c.stroke()} + c.strokeStyle='#111'} +} diff --git a/gen/uianime/box/hide.js b/gen/uianime/box/hide.js new file mode 100644 index 0000000..5f7981f --- /dev/null +++ b/gen/uianime/box/hide.js @@ -0,0 +1,53 @@ +// white haired catgirl hiding in an empty cardboard box: ears poke out, she peeks left and right, pops up with a cat smile, then ducks back in +const{sin,cos,PI}=Math,T=2*PI +export const frames=20,delay=80 +const SKIN='#ffe3d1',HAIR='#f8f9fa',HD='#ced4da',EAR='#ffc9d6',EYE='#4dabf7',ED='#1864ab',BL='#ffa8a8',BX='#e0a96d',BXD='#c08552',BXL='#f1c48a',IN='#8d6346',TP='#ffe8cc' +const E=x=>x<=0?0:x>=1?1:x*x*(3-2*x) +const poly=(c,...p)=>{c.beginPath();for(const[x,y]of p)c.lineTo(x,y);c.closePath();c.fill();c.stroke()} +const eye=(c,x,y,d,o)=>{ + c.fillStyle='#fff';c.beginPath();c.ellipse(x,y,14,17,0,0,T);c.fill() + c.save();c.clip();c.beginPath();c.ellipse(x+o,y+3,11.5,15,0,0,T);c.fillStyle=EYE;c.fill();c.lineWidth=2.5;c.stroke() + c.fillStyle=ED;c.beginPath();c.ellipse(x+o,y-7,13,9,0,0,T);c.fill() + c.fillStyle='#111';c.beginPath();c.ellipse(x+o,y+4,4,8.5,0,0,T);c.fill() + c.fillStyle='#fff';c.beginPath();c.arc(x+o-4,y-3,4.5,0,T);c.fill();c.beginPath();c.arc(x+o+5,y+9,2,0,T);c.fill();c.restore() + c.lineWidth=7;c.beginPath();c.moveTo(x-16,y-6);c.quadraticCurveTo(x,y-20,x+16,y-6);c.moveTo(x+d*15,y-7);c.lineTo(x+d*21,y-12);c.stroke() +} +export default(c,t)=>{ + const pk=E((t-.12)/.1),up=E((t-.5)/.07),dn=E((t-.7)/.07),cy=236-(73*pk+23*up)*(1-dn),o=t>.24&&t<.48?-6*cos(PI*(t-.24)/.24):0,hp=up>.5&&dn<.5 + const fw=t>.76?5*sin(T*4*(t-.76))*(1-(t-.76)/.24):0,tw=(t>.04&&t<.1)||(t>.88&&t<.94)?.35:0 + // flaps behind and the dark inside + c.lineWidth=6;c.fillStyle=BXD;poly(c,[44,122],[222,122],[214,98+fw],[52,98+fw]) + c.fillStyle=BXL;poly(c,[26,140],[44,122],[20,104-fw],[8,126-fw]);poly(c,[204,140],[222,122],[242,104+fw],[236,130+fw]) + c.fillStyle=IN;poly(c,[26,140],[204,140],[222,122],[44,122]) + // the girl, only what is above the front rim shows + c.save();c.beginPath();c.rect(0,0,256,140);c.clip() + c.translate(124,cy);c.scale(.76,.76);c.translate(-128,-186) + for(const[d,r]of[[-1,-tw],[1,0]]){ + c.save();c.translate(128+d*36,62);c.rotate(r*d) + c.lineWidth=8;c.fillStyle=HAIR;c.beginPath();c.moveTo(d*-26,8);c.lineTo(d*12,-48);c.lineTo(d*24,12);c.closePath();c.fill();c.stroke() + c.fillStyle=EAR;c.beginPath();c.moveTo(d*-12,4);c.lineTo(d*11,-32);c.lineTo(d*15,6);c.closePath();c.fill() + c.restore() + } + c.lineWidth=8;c.fillStyle=HD;c.beginPath();c.moveTo(128,36);c.bezierCurveTo(198,36,212,100,204,190);c.lineTo(52,190);c.bezierCurveTo(44,100,58,36,128,36);c.fill();c.stroke() + c.fillStyle=SKIN;c.beginPath();c.moveTo(74,96);c.bezierCurveTo(70,152,100,184,128,186);c.bezierCurveTo(156,184,186,152,182,96);c.bezierCurveTo(182,44,74,44,74,96);c.fill();c.stroke() + if(hp){c.lineWidth=8;for(const x of[103,153])c.beginPath(),c.arc(x,148,13,PI*1.15,PI*1.85),c.stroke()} + else eye(c,103,140,-1,o),eye(c,153,140,1,o) + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*44,162,13,7,0,0,T),c.fill() + c.lineWidth=3;for(const d of[-1,1])for(const k of[-5,0,5])c.beginPath(),c.moveTo(128+d*44+k-2,165),c.lineTo(128+d*44+k+2,159),c.stroke() + c.lineWidth=5;c.beginPath();c.moveTo(116,168);c.quadraticCurveTo(122,176,128,169);c.quadraticCurveTo(134,176,140,168);c.stroke() + c.lineWidth=8;c.fillStyle=HAIR;c.beginPath();c.moveTo(66,160) + c.bezierCurveTo(48,74,88,38,128,38);c.bezierCurveTo(168,38,208,74,190,160) + c.quadraticCurveTo(188,120,180,104);c.quadraticCurveTo(170,104,164,96);c.quadraticCurveTo(156,108,144,110);c.quadraticCurveTo(140,98,130,92) + c.quadraticCurveTo(122,106,108,110);c.quadraticCurveTo(104,98,96,94);c.quadraticCurveTo(88,106,78,106);c.quadraticCurveTo(68,128,66,160);c.closePath();c.fill();c.stroke() + c.strokeStyle=HD;c.lineWidth=6;for(const[a,e]of[[1.24,1.36],[1.44,1.52],[1.62,1.74]])c.beginPath(),c.arc(128,104,56,PI*a,PI*e),c.stroke() + c.strokeStyle='#111';c.restore() + // box sides, front with a paw print, folded front flap + c.lineWidth=6;c.fillStyle=BXD;poly(c,[204,140],[222,122],[222,230],[204,248]) + c.fillStyle=BX;c.beginPath();c.rect(26,140,178,108);c.fill();c.stroke() + c.fillStyle=BXL;poly(c,[26,140],[204,140],[198,164+fw*.6],[32,164+fw*.6]) + c.fillStyle=TP;c.lineWidth=4;c.beginPath();c.rect(104,164+fw*.6,22,30);c.fill();c.stroke() + c.fillStyle=BXD;c.beginPath();c.ellipse(115,224,16,12,0,0,T);c.fill();for(const[x,y]of[[95,208],[107,199],[123,199],[135,208]])c.beginPath(),c.ellipse(x,y,5.5,7,(x-115)*.03,0,T),c.fill() + if(up>.3&&dn<.6){c.fillStyle='#fff';c.lineWidth=5;for(const d of[-1,1])c.beginPath(),c.ellipse(124+d*34,140,13,10,0,0,T),c.fill(),c.stroke() + c.lineWidth=2.5;c.beginPath();for(const d of[-1,1])for(const k of[-4,4])c.moveTo(124+d*34+k,134),c.lineTo(124+d*34+k,140);c.stroke() + c.fillStyle='#ffd43b';c.lineWidth=3.5;for(const[x,y]of[[210,40],[38,62]])c.beginPath(),c.moveTo(x,y-11),[[1,0],[0,1],[-1,0],[0,-1]].forEach(([a,b])=>c.quadraticCurveTo(x+(a+b)*2,y+(b-a)*2,x+a*11,y+b*11)),c.fill(),c.stroke()} +} diff --git a/gen/uianime/buffering/stare.js b/gen/uianime/buffering/stare.js new file mode 100644 index 0000000..70c4097 --- /dev/null +++ b/gen/uianime/buffering/stare.js @@ -0,0 +1,38 @@ +// periwinkle haired girl in round glasses staring blankly at her laptop, a buffering ring spinning in both lenses while three dots pile up above her +const{sin,cos,PI,min}=Math,T=2*PI +export const frames=12,delay=85 +const SKIN='#ffe3d1',HAIR='#748ffc',HD='#4c6ef5',HL='#dbe4ff',SWT='#ffd8a8',SWD='#ffa94d',LAP='#ced4da',LD='#868e96',LENS='#e7f5ff',RING='#4dabf7',BL='#ffc9c9' +export default(c,t,i)=>{ + c.lineWidth=6;c.fillStyle=HD;c.beginPath();c.moveTo(128,34);c.bezierCurveTo(198,34,214,100,206,160);c.quadraticCurveTo(212,190,196,200);c.lineTo(60,200);c.quadraticCurveTo(44,190,50,160);c.bezierCurveTo(42,100,58,34,128,34);c.fill();c.stroke() + c.fillStyle=SWT;c.beginPath();c.moveTo(100,190);c.quadraticCurveTo(62,198,54,250);c.lineTo(202,250);c.quadraticCurveTo(194,198,156,190);c.closePath();c.fill();c.stroke() + c.fillStyle=SKIN;c.beginPath();c.moveTo(116,168);c.lineTo(116,186);c.lineTo(140,186);c.lineTo(140,168);c.fill();c.lineWidth=5;c.beginPath();c.moveTo(116,168);c.lineTo(116,186);c.moveTo(140,168);c.lineTo(140,186);c.stroke() + c.fillStyle=SWT;c.beginPath();c.roundRect(106,182,44,20,9);c.fill();c.stroke() + c.strokeStyle=SWD;c.lineWidth=3;for(const x of[116,128,140])c.beginPath(),c.moveTo(x,187),c.lineTo(x,197),c.stroke();c.strokeStyle='#111' + c.lineWidth=6;c.fillStyle=SKIN;c.beginPath();c.moveTo(74,96);c.bezierCurveTo(70,152,100,184,128,186);c.bezierCurveTo(156,184,186,152,182,96);c.bezierCurveTo(182,44,74,44,74,96);c.fill();c.stroke() + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*44,164,10,5,0,0,T),c.fill() + c.lineWidth=3.5;c.fillStyle='#fff';c.beginPath();c.roundRect(122,168,12,6,2);c.fill();c.stroke() + // glasses: opaque glare with the buffering ring reflected in each lens + const a=T*t + for(const x of[103,153]){ + c.fillStyle=LENS;c.beginPath();c.arc(x,140,21,0,T);c.fill() + c.strokeStyle='#d0ebff';c.lineWidth=6;c.beginPath();c.arc(x,140,11,0,T);c.stroke() + c.strokeStyle=RING;c.beginPath();c.arc(x,140,11,a,a+PI*1.1);c.stroke() + c.strokeStyle='#fff';c.lineWidth=3.5;c.beginPath();c.arc(x,140,17,PI*1.1,PI*1.4);c.stroke() + } + c.strokeStyle='#111';c.lineWidth=6;for(const x of[103,153])c.beginPath(),c.arc(x,140,21,0,T),c.stroke() + c.beginPath();c.moveTo(124,138);c.quadraticCurveTo(128,134,132,138);c.moveTo(82,136);c.lineTo(74,132);c.moveTo(174,136);c.lineTo(182,132);c.stroke() + c.lineWidth=6;c.fillStyle=HAIR;c.beginPath();c.moveTo(66,170) + c.bezierCurveTo(48,74,88,36,128,36);c.bezierCurveTo(168,36,208,74,190,170);c.quadraticCurveTo(184,160,180,170) + c.quadraticCurveTo(184,124,178,104);c.quadraticCurveTo(170,108,166,114);c.quadraticCurveTo(162,100,152,90);c.quadraticCurveTo(146,104,140,112) + c.quadraticCurveTo(134,98,126,90);c.quadraticCurveTo(120,104,112,110);c.quadraticCurveTo(108,98,98,92);c.quadraticCurveTo(92,106,86,112) + c.quadraticCurveTo(82,106,78,104);c.quadraticCurveTo(72,130,76,170);c.quadraticCurveTo(72,160,66,170);c.closePath();c.fill();c.stroke() + c.strokeStyle=HL;c.lineWidth=5;for(const[s,e]of[[1.24,1.36],[1.44,1.52],[1.62,1.74]])c.beginPath(),c.arc(128,104,56,PI*s,PI*e),c.stroke() + c.strokeStyle='#111';c.fillStyle=HAIR;c.lineWidth=5;c.save();c.translate(128,38);c.rotate(1.1*(i<9?i/8:(11-i)/3));c.beginPath();c.moveTo(-6,0);c.bezierCurveTo(-12,-22,10,-32,22,-22);c.bezierCurveTo(10,-24,2,-16,6,0);c.closePath();c.fill();c.stroke();c.restore() + // laptop lid seen from behind + c.lineWidth=6;c.fillStyle=LAP;c.beginPath();c.moveTo(62,196);c.lineTo(194,196);c.quadraticCurveTo(204,196,206,206);c.lineTo(214,262);c.lineTo(42,262);c.lineTo(50,206);c.quadraticCurveTo(52,196,62,196);c.fill();c.stroke() + c.strokeStyle='#fff';c.lineWidth=4;c.beginPath();c.moveTo(62,206);c.lineTo(194,206);c.stroke();c.strokeStyle='#111' + c.fillStyle='#fff';c.lineWidth=4;c.beginPath();c.moveTo(128,240);c.bezierCurveTo(112,230,114,216,128,222);c.bezierCurveTo(142,216,144,230,128,240);c.fill();c.stroke() + c.fillStyle='#ffd43b';c.beginPath();for(let k=0;k<10;k++){const r=k%2?5.5:12,b=k*PI/5-PI/2-.3;c.lineTo(76+cos(b)*r,234+sin(b)*r)}c.closePath();c.fill();c.stroke() + // dots piling up + c.fillStyle='#fff';c.lineWidth=4;for(let k=0;kx<=0?0:x>=1?1:x*x*(3-2*x) +const ds=(c,a,b,s,f)=>{for(const[l,k]of[[a,'#111'],[b,s]])c.lineWidth=l,c.strokeStyle=k,c.beginPath(),f(),c.stroke();c.strokeStyle='#111'} +const sp=(c,x,y,r)=>{c.beginPath();c.moveTo(x,y-r);for(const[a,b]of[[1,0],[0,1],[-1,0],[0,-1]])c.quadraticCurveTo(x+(a+b)*r*.16,y+(b-a)*r*.16,x+a*r,y+b*r);c.fill();c.stroke()} +const page=c=>{c.fillStyle='#fff';c.lineWidth=5;c.beginPath();c.rect(-50,-30,100,74);c.fill();c.stroke() + c.strokeStyle=GR;c.lineWidth=3;c.beginPath();for(let k=1;k<5;k++)c.moveTo(-50+k*20,-26),c.lineTo(-50+k*20,40);for(let k=1;k<4;k++)c.moveTo(-46,-30+k*18.5),c.lineTo(46,-30+k*18.5);c.stroke();c.strokeStyle='#111'} +export default(c,t)=>{ + const hp=t<.25?abs(sin(8*PI*t)):t>=.625&&t<.875?.8*abs(sin(8*PI*t)):0,b=-10*hp,sw=t%.25<.125?.06*hp:-.06*hp,fl=(t-.4)/.2 + // side ponytail swinging behind + c.save();c.translate(0,b);c.save();c.translate(148,72);c.rotate(.25-.2*hp) + c.lineWidth=6;c.fillStyle=HAIR;c.beginPath();c.moveTo(-6,0);c.bezierCurveTo(30,-4,50,40,40,100);c.quadraticCurveTo(34,124,18,128);c.quadraticCurveTo(30,80,0,18);c.closePath();c.fill();c.stroke() + c.strokeStyle=HD;c.lineWidth=3;c.beginPath();c.moveTo(12,12);c.bezierCurveTo(30,30,38,64,32,100);c.stroke();c.strokeStyle='#111';c.restore() + c.save();c.translate(92,170);c.scale(.74,.74);c.translate(-128,-186) + c.lineWidth=8;c.fillStyle=HD;c.beginPath();c.moveTo(128,36);c.bezierCurveTo(198,36,210,100,202,164);c.lineTo(54,164);c.bezierCurveTo(46,100,58,36,128,36);c.fill();c.stroke() + c.fillStyle=TOP;c.beginPath();c.moveTo(100,190);c.quadraticCurveTo(54,198,44,300);c.lineTo(212,300);c.quadraticCurveTo(202,198,156,190);c.closePath();c.fill();c.stroke() + c.strokeStyle=TD;c.lineWidth=5;for(const y of[246,276])c.beginPath(),c.moveTo(56,y),c.lineTo(200,y),c.stroke();c.strokeStyle='#111' + c.fillStyle=SKIN;c.beginPath();c.moveTo(116,166);c.lineTo(116,194);c.lineTo(128,206);c.lineTo(140,194);c.lineTo(140,166);c.fill();c.beginPath();c.moveTo(116,166);c.lineTo(116,192);c.moveTo(140,166);c.lineTo(140,192);c.stroke() + c.fillStyle='#fff';for(const d of[-1,1])c.beginPath(),c.moveTo(128,206),c.quadraticCurveTo(128+d*34,212,128+d*30,190),c.quadraticCurveTo(128+d*16,192,128,206),c.fill(),c.stroke() + c.save();c.translate(128,186);c.rotate(sw);c.translate(-128,-186) + c.lineWidth=8;c.fillStyle=SKIN;c.beginPath();c.moveTo(74,96);c.bezierCurveTo(70,152,100,184,128,186);c.bezierCurveTo(156,184,186,152,182,96);c.bezierCurveTo(182,44,74,44,74,96);c.fill();c.stroke() + for(const x of[103,153])c.beginPath(),c.arc(x,148,14,PI*1.15,PI*1.85),c.stroke() + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*44,160,14,8,0,0,T),c.fill() + c.lineWidth=3;for(const d of[-1,1])for(const k of[-6,0,6])c.beginPath(),c.moveTo(128+d*44+k-2,164),c.lineTo(128+d*44+k+2,157),c.stroke() + c.lineWidth=5;c.fillStyle=MO;c.beginPath();c.moveTo(110,164);c.quadraticCurveTo(128,168,146,164);c.quadraticCurveTo(144,188,128,188);c.quadraticCurveTo(112,188,110,164);c.fill();c.stroke() + c.save();c.clip();c.fillStyle=TG;c.beginPath();c.ellipse(128,190,10,7,0,0,T);c.fill();c.restore() + c.lineWidth=8;c.fillStyle=HAIR;c.beginPath();c.moveTo(66,158) + c.bezierCurveTo(48,74,88,38,128,38);c.bezierCurveTo(168,38,208,74,190,158) + c.quadraticCurveTo(188,120,180,104);c.quadraticCurveTo(172,100,166,92);c.quadraticCurveTo(158,106,146,108);c.quadraticCurveTo(140,96,132,90) + c.quadraticCurveTo(124,104,112,108);c.quadraticCurveTo(106,98,98,94);c.quadraticCurveTo(90,106,78,106);c.quadraticCurveTo(68,128,66,158);c.closePath();c.fill();c.stroke() + c.strokeStyle=HL;c.lineWidth=7;for(const[a,e]of[[1.24,1.36],[1.44,1.52],[1.62,1.74]])c.beginPath(),c.arc(128,104,56,PI*a,PI*e),c.stroke() + c.strokeStyle='#111';c.fillStyle='#f783ac';c.lineWidth=6;c.beginPath();c.ellipse(180,62,10,15,.5,0,T);c.fill();c.stroke() + c.restore();c.restore() + // peace sign + const hx=40,hy=150 + ds(c,22,13,TOP,()=>{c.moveTo(62,200);c.quadraticCurveTo(34,196,hx,hy+14)}) + for(const[fx,fy]of[[-12,-30],[5,-33]])ds(c,14,7,SKIN,()=>{c.moveTo(hx,hy);c.lineTo(hx+fx,hy+fy)}) + c.lineWidth=5;c.fillStyle=SKIN;c.beginPath();c.ellipse(hx,hy+4,13,12,0,0,T);c.fill();c.stroke() + // calendar held up high, swaying, flipping to another blank page + c.save();c.translate(188,92);c.rotate(-sw*.8) + c.lineWidth=6;c.fillStyle=CAL;c.beginPath();c.roundRect(-54,-52,108,98,8);c.fill();c.stroke() + page(c) + if(fl>0&&fl<1){const s=cos(PI*fl*.67);c.save();c.translate(0,-30);c.scale(1,s);c.translate(0,30);if(s>0)page(c),c.restore();else{c.beginPath();c.rect(-50,-30,100,74);c.restore();c.fillStyle='#f1f3f5';c.lineWidth=5;c.fill();c.stroke()}} + c.strokeStyle=CD;c.lineWidth=4;c.beginPath();c.moveTo(-50,-38);c.lineTo(50,-38);c.stroke();c.strokeStyle='#111' + for(const x of[-30,0,30])ds(c,10,4,RG,()=>{c.moveTo(x,-58);c.lineTo(x,-44)}) + c.restore() + ds(c,22,13,TOP,()=>{c.moveTo(124,198);c.quadraticCurveTo(140,180,148,140)}) + c.fillStyle=SKIN;c.lineWidth=5;c.beginPath();c.ellipse(148,136,11,12,0,0,T);c.fill();c.stroke() + c.restore() + c.fillStyle=SP;c.lineWidth=3.5;for(const[x,y,o,r]of[[238,28,0,13],[124,30,.33,11],[240,150,.66,12],[22,94,.5,10]]){const s=.6+.4*sin(PI*min(1,hp+o));sp(c,x,y,r*s)} +} diff --git a/gen/uianime/cart/sigh.js b/gen/uianime/cart/sigh.js new file mode 100644 index 0000000..55b9365 --- /dev/null +++ b/gen/uianime/cart/sigh.js @@ -0,0 +1,55 @@ +// brown-haired girl with a side braid leaning on an empty shopping cart, peering in and letting out a long gloomy sigh +const{sin,cos,PI,max,min}=Math,T=2*PI +export const frames=16,delay=90 +const SKIN='#ffe3d1',HAIR='#b5835a',HD='#8d5a3b',HL='#f1d2b6',EYE='#3bc9db',ED='#0b7285',CD='#fab005',BL='#ffa8a8',GL='#9775fa',CW='#e7f5ff',WR='#74c0fc',HN='#fa5252',Z=.72 +const ez=(t,a,b)=>{const x=min(1,max(0,(t-a)/(b-a)));return x*x*(3-2*x)} +const puff=(c,x,y,r)=>{c.beginPath();for(const[a,b,s]of[[-.8,0,.7],[0,-.5,.8],[.8,0,.7],[0,.3,.75]])c.moveTo(x+a*r+s*r,y+b*r),c.arc(x+a*r,y+b*r,s*r,0,T);c.lineWidth=8;c.strokeStyle='#111';c.stroke();c.fillStyle='#fff';c.fill()} +export default(c,t)=>{ + const up=ez(t,.05,.3)-ez(t,.38,.55),dr=ez(t,.38,.55)-ez(t,.85,1),L=v=>c.lineWidth=v/Z,so=t>.36&&t<.8 + const head=f=>{c.save();c.translate(150,88-5*up+6*dr);c.rotate(-.1-.08*dr);c.scale(Z,Z);c.translate(-128,-128);f();c.restore()} + head(()=>{ + L(6);c.fillStyle=HD;c.beginPath();c.moveTo(128,34);c.bezierCurveTo(196,34,206,96,198,150);c.lineTo(58,150);c.bezierCurveTo(50,96,60,34,128,34);c.fill();c.stroke() + }) + c.save();c.translate(150,88-3*up+3*dr);c.scale(Z,Z);c.translate(-128,-128) + L(6);c.fillStyle=CD;c.beginPath();c.moveTo(100,190);c.quadraticCurveTo(56,196,52,270);c.lineTo(204,270);c.quadraticCurveTo(200,196,156,190);c.closePath();c.fill();c.stroke() + c.fillStyle='#fff';c.beginPath();c.moveTo(106,190);c.lineTo(128,226);c.lineTo(150,190);c.closePath();c.fill();L(5);c.stroke() + c.fillStyle=SKIN;c.beginPath();c.moveTo(116,166);c.lineTo(116,194);c.lineTo(128,206);c.lineTo(140,194);c.lineTo(140,166);c.fill();c.beginPath();c.moveTo(116,166);c.lineTo(116,192);c.moveTo(140,166);c.lineTo(140,192);c.stroke() + c.restore() + head(()=>{ + L(6);c.fillStyle=SKIN;c.beginPath();c.moveTo(74,96);c.bezierCurveTo(70,152,100,184,128,186);c.bezierCurveTo(156,184,186,152,182,96);c.bezierCurveTo(182,44,74,44,74,96);c.fill();c.stroke() + for(const[x,d]of[[103,-1],[153,1]]){ + c.save();c.beginPath();c.ellipse(x,140,14,17,0,0,T);c.clip() + c.fillStyle='#fff';c.fill();c.fillStyle=EYE;c.beginPath();c.ellipse(x,150,11.5,15,0,0,T);c.fill();c.fillStyle=ED;c.beginPath();c.ellipse(x,141,13,9,0,0,T);c.fill() + c.fillStyle='#111';c.beginPath();c.ellipse(x,152,5,6.5,0,0,T);c.fill();c.fillStyle='#fff';c.beginPath();c.arc(x-4,148,3.5,0,T);c.fill() + c.fillStyle=SKIN;c.fillRect(x-16,118,32,20);c.restore() + L(6);c.beginPath();c.moveTo(x-16,137);c.quadraticCurveTo(x,132,x+16,137);c.moveTo(x+d*15,136);c.lineTo(x+d*20,140);c.stroke() + L(4);c.beginPath();c.moveTo(x-d*14,118);c.lineTo(x+d*12,126);c.stroke() + } + c.strokeStyle=GL;L(3.5);for(const x of[96,108,120,136,148,160])c.beginPath(),c.moveTo(x,106),c.lineTo(x,118+(x%24?4:0)),c.stroke() + c.strokeStyle='#111';c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*42,163,11,5,0,0,T),c.fill() + L(3.5);c.beginPath();if(so)c.ellipse(128,172,5,6.5,0,0,T);else c.moveTo(120,172),c.quadraticCurveTo(124,168,128,172),c.quadraticCurveTo(132,176,136,172);c.stroke() + L(6);c.fillStyle=HAIR;c.beginPath();c.moveTo(70,146) + c.bezierCurveTo(54,74,88,36,128,36);c.bezierCurveTo(168,36,202,74,186,146) + c.quadraticCurveTo(186,116,178,102);c.quadraticCurveTo(170,104,164,112);c.quadraticCurveTo(160,98,150,92);c.quadraticCurveTo(144,104,136,110) + c.quadraticCurveTo(132,96,124,90);c.quadraticCurveTo(118,102,110,108);c.quadraticCurveTo(106,96,96,94);c.quadraticCurveTo(90,104,86,112) + c.quadraticCurveTo(80,104,78,102);c.quadraticCurveTo(70,120,70,146);c.closePath();c.fill();c.stroke() + c.strokeStyle=HL;L(5);for(const[a,e]of[[1.24,1.36],[1.44,1.52],[1.62,1.74]])c.beginPath(),c.arc(128,104,56,PI*a,PI*e),c.stroke() + c.strokeStyle='#111' + for(let k=0;k<4;k++){c.fillStyle=k%2?HAIR:HD;L(5);c.beginPath();c.ellipse(186+k*2,150+k*17,12,11,.2,0,T);c.fill();c.stroke()} + c.fillStyle=HN;L(4);c.beginPath();c.ellipse(194,218,9,6,0,0,T);c.fill();c.stroke() + }) + c.lineWidth=6;c.strokeStyle='#111' + for(const x of[50,178]){c.fillStyle='#868e96';c.beginPath();c.arc(x,236,10,0,T);c.fill();c.stroke();c.fillStyle='#dee2e6';c.beginPath();c.arc(x,236,3.5,0,T);c.fill()} + c.lineWidth=6;c.beginPath();c.moveTo(36,220);c.lineTo(50,236);c.moveTo(192,220);c.lineTo(178,236);c.moveTo(40,226);c.lineTo(190,226);c.stroke() + c.strokeStyle='#adb5bd';c.lineWidth=3;c.beginPath();c.moveTo(42,226);c.lineTo(188,226);c.stroke();c.strokeStyle='#111' + const bk=()=>{c.beginPath();c.moveTo(12,152);c.lineTo(214,152);c.lineTo(196,220);c.lineTo(32,220);c.closePath()} + c.fillStyle=CW;bk();c.fill() + c.save();bk();c.clip();c.strokeStyle=WR;c.lineWidth=4;c.beginPath();for(let x=20;x<214;x+=22)c.moveTo(x,150),c.lineTo(x+(x<113?6:-6),222);for(const y of[175,198])c.moveTo(0,y),c.lineTo(256,y);c.stroke();c.restore() + c.lineWidth=6;c.strokeStyle='#111';bk();c.stroke() + c.lineWidth=11;c.beginPath();c.moveTo(10,152);c.lineTo(216,152);c.stroke();c.strokeStyle='#dee2e6';c.lineWidth=4;c.stroke();c.strokeStyle='#111' + c.lineWidth=6;c.beginPath();c.moveTo(214,152);c.lineTo(230,136);c.stroke() + c.fillStyle=HN;c.save();c.translate(232,132);c.rotate(-.8);c.beginPath();c.roundRect(-16,-7,32,14,7);c.fill();c.stroke();c.restore() + c.strokeStyle='#868e96';c.lineWidth=3;c.beginPath();for(const r of[12,22])c.moveTo(18+r,156),c.arc(18,156,r,0,PI/2);for(const a of[.15,.78,1.4])c.moveTo(18,156),c.lineTo(18+30*cos(a),156+30*sin(a));c.stroke();c.strokeStyle='#111' + c.lineWidth=5;c.fillStyle=SKIN;for(const[x,y]of[[104,150],[188,150]])c.beginPath(),c.ellipse(x,y-1-3*up+3*dr,13,10,0,0,T),c.fill(),c.stroke() + if(t>.38){const p=(t-.38)/.62,x=116-62*p,y=124+18*p;puff(c,x,y,(7+13*sin(PI*min(1,p*1.3)))*min(1,(1-p)*5))} +} diff --git a/gen/uianime/comingsoon/shh.js b/gen/uianime/comingsoon/shh.js new file mode 100644 index 0000000..9b6e6c7 --- /dev/null +++ b/gen/uianime/comingsoon/shh.js @@ -0,0 +1,53 @@ +// girl with long plum hair holding a finger to her lips and winking "it's a secret", a little shh bubble puffing beside her +const{sin,PI,max,min}=Math,T=2*PI +export const frames=16,delay=85 +const SKIN='#ffe3d1',HAIR='#da77f2',HD='#ae3ec9',HL='#f8f0fc',EYE='#20c997',ED='#087f5b',CARD='#96f2d7',CD='#38d9a9',BL='#ffa8a8',STAR='#ffd43b' +const ds=(c,a,b,s,f)=>{for(const[l,k]of[[a,'#111'],[b,s]])c.lineWidth=l,c.strokeStyle=k,c.beginPath(),f(),c.stroke();c.strokeStyle='#111'} +const eye=(c,x,y,d)=>{ + c.fillStyle='#fff';c.beginPath();c.ellipse(x,y,14,17,0,0,T);c.fill() + c.save();c.beginPath();c.ellipse(x,y+2,11.5,15,0,0,T);c.clip();c.fillStyle=EYE;c.fill();c.fillStyle=ED;c.beginPath();c.ellipse(x,y-8,13,10,0,0,T);c.fill();c.restore() + c.lineWidth=2.5;c.beginPath();c.ellipse(x,y+2,11.5,15,0,0,T);c.stroke() + c.fillStyle='#111';c.beginPath();c.ellipse(x,y+3,5.5,7.5,0,0,T);c.fill() + c.fillStyle='#fff';c.beginPath();c.arc(x-4,y-5,4.5,0,T);c.fill();c.beginPath();c.arc(x+5,y+8,2,0,T);c.fill() + c.lineWidth=6;c.beginPath();c.moveTo(x-16,y-6);c.quadraticCurveTo(x,y-20,x+16,y-6);c.moveTo(x+d*15,y-7);c.lineTo(x+d*21,y-12);c.stroke() + c.lineWidth=2.5;c.beginPath();c.moveTo(x-8,y+18);c.lineTo(x+8,y+18);c.stroke() +} +const spark=(c,x,y,r)=>{c.beginPath();c.moveTo(x,y-r);for(const[a,b]of[[1,0],[0,1],[-1,0],[0,-1]])c.quadraticCurveTo(x+(a+b)*r*.15,y+(b-a)*r*.15,x+a*r,y+b*r);c.fill();c.stroke()} +export default(c,t,i)=>{ + const w=t>=.375&&t<.75,tilt=.08*min(1,max(0,min(i-4,13-i)/2)),pf=1+.1*sin(2*T*t) + const head=f=>{c.save();c.translate(128,186);c.rotate(tilt);c.translate(-128,-186);f();c.restore()} + head(()=>{c.lineWidth=6;c.fillStyle=HD;c.beginPath();c.moveTo(128,34);c.bezierCurveTo(200,34,214,96,206,150);c.quadraticCurveTo(212,200,200,228);c.lineTo(56,228);c.quadraticCurveTo(44,200,50,150);c.bezierCurveTo(42,96,56,34,128,34);c.fill();c.stroke()}) + c.lineWidth=6;c.fillStyle=CARD;c.beginPath();c.moveTo(100,190);c.quadraticCurveTo(62,198,54,250);c.lineTo(202,250);c.quadraticCurveTo(194,198,156,190);c.closePath();c.fill();c.stroke() + c.fillStyle='#fff';c.beginPath();c.moveTo(104,190);c.lineTo(128,250);c.lineTo(152,190);c.closePath();c.fill();c.lineWidth=5;c.stroke() + c.fillStyle=CD;for(const y of[226,242])c.beginPath(),c.arc(162,y,4,0,T),c.fill(),c.stroke() + c.fillStyle=SKIN;c.beginPath();c.moveTo(116,168);c.lineTo(116,192);c.quadraticCurveTo(128,204,140,192);c.lineTo(140,168);c.fill();c.beginPath();c.moveTo(116,168);c.lineTo(116,190);c.moveTo(140,168);c.lineTo(140,190);c.stroke() + head(()=>{ + c.lineWidth=6;c.fillStyle=SKIN;c.beginPath();c.moveTo(74,96);c.bezierCurveTo(70,152,100,184,128,186);c.bezierCurveTo(156,184,186,152,182,96);c.bezierCurveTo(182,44,74,44,74,96);c.fill();c.stroke() + eye(c,103,140,-1) + if(w){c.lineWidth=6;c.beginPath();c.arc(153,146,13,PI*1.12,PI*1.88);c.moveTo(166,140);c.lineTo(172,135);c.stroke()}else eye(c,153,140,1) + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*44,162,13,7,0,0,T),c.fill() + c.lineWidth=2.5;for(const d of[-1,1])for(const k of[-5,0,5])c.beginPath(),c.moveTo(128+d*44+k-2,165),c.lineTo(128+d*44+k+2,159),c.stroke() + c.lineWidth=3.5;c.fillStyle='#e8590c';c.beginPath();c.ellipse(130,169,6,5,0,0,T);c.fill();c.stroke() + c.lineWidth=6;c.fillStyle=HAIR;c.beginPath();c.moveTo(70,150) + c.bezierCurveTo(54,74,88,36,128,36);c.bezierCurveTo(168,36,202,74,186,150) + c.quadraticCurveTo(184,118,178,104);c.quadraticCurveTo(170,106,164,112);c.quadraticCurveTo(158,98,148,92);c.quadraticCurveTo(142,104,134,110) + c.quadraticCurveTo(128,98,120,92);c.quadraticCurveTo(114,104,106,110);c.quadraticCurveTo(100,98,92,96);c.quadraticCurveTo(88,106,84,112) + c.quadraticCurveTo(80,104,78,104);c.quadraticCurveTo(72,124,70,150);c.closePath();c.fill();c.stroke() + c.strokeStyle=HL;c.lineWidth=5;for(const[a,e]of[[1.24,1.36],[1.44,1.52],[1.62,1.74]])c.beginPath(),c.arc(128,104,56,PI*a,PI*e),c.stroke() + c.strokeStyle='#111';c.fillStyle=STAR;c.lineWidth=4;spark(c,174,70,14) + }) + if(w){const p=(t-.375)/.375;c.fillStyle=STAR;c.lineWidth=3.5;spark(c,178+40*p,124-50*p,12*sin(PI*p))} + for(const[x,y,o]of[[30,60,0],[226,190,.5]]){const s=max(0,sin(T*(t+o)));if(s>.1)c.fillStyle='#fff',c.lineWidth=3.5,spark(c,x,y,13*s)} + c.save();c.translate(212,40);c.scale(pf,pf) + c.fillStyle='#fff';c.lineWidth=5;c.beginPath();c.ellipse(0,0,34,22,0,0,T);c.fill();c.stroke() + c.beginPath();c.moveTo(-22,14);c.lineTo(-34,32);c.lineTo(-8,20);c.fill();c.stroke() + c.beginPath();c.ellipse(0,0,31.5,19.5,0,0,T);c.fill() + c.lineWidth=4.5;c.strokeStyle=HD;c.beginPath() + c.moveTo(-12,-6);c.quadraticCurveTo(-22,-8,-21,-2);c.quadraticCurveTo(-20,2,-14,3);c.quadraticCurveTo(-8,5,-11,10);c.quadraticCurveTo(-15,13,-22,9) + for(const x of[-2,14]){c.moveTo(x,-11);c.lineTo(x,10);c.moveTo(x,2);c.quadraticCurveTo(x+8,-8,x+9,3);c.lineTo(x+9,10)} + c.stroke();c.restore();c.strokeStyle='#111' + ds(c,30,19,CARD,()=>{c.moveTo(70,252);c.lineTo(92,234);c.lineTo(114,214)}) + ds(c,14,7,SKIN,()=>{c.moveTo(127,198);c.lineTo(127,162)}) + c.lineWidth=5;c.fillStyle=SKIN;c.beginPath();c.ellipse(122,208,13,12,-.3,0,T);c.fill();c.stroke() + c.lineWidth=2.5;c.beginPath();for(const y of[204,211])c.moveTo(114,y),c.lineTo(122,y-1);c.stroke() +} diff --git a/gen/uianime/construction/hardhat.js b/gen/uianime/construction/hardhat.js new file mode 100644 index 0000000..83071da --- /dev/null +++ b/gen/uianime/construction/hardhat.js @@ -0,0 +1,60 @@ +// teal braided girl in a yellow hard hat and safety vest hammering a nail into a striped under construction sign, tongue out, sparks on every bonk +const{sin,cos,PI}=Math,T=2*PI +export const frames=16,delay=75 +const SKIN='#ffe3d1',HAIR='#38d9a9',EYE='#20c997',ED='#087f5b',BL='#ffa8a8',HAT='#ffd43b',HTD='#f59f00',VS='#ff922b',SH='#74c0fc',RF='#e9ecef',WD='#c98a52',ST='#ff922b',MT='#adb5bd',TG='#ff8fab',SP='#ffd43b' +const A=[-.45,-.6,-.95,-1.35,-1.65,-1.75,-1.1,-.45] +const ds=(c,a,b,s,f)=>{for(const[l,k]of[[a,'#111'],[b,s]])c.lineWidth=l,c.strokeStyle=k,c.beginPath(),f(),c.stroke();c.strokeStyle='#111'} +const eye=(c,x,y,d)=>{ + c.fillStyle='#fff';c.beginPath();c.ellipse(x,y,14,16,0,0,T);c.fill() + c.save();c.clip();c.beginPath();c.ellipse(x+5,y+3,11.5,14,0,0,T);c.fillStyle=EYE;c.fill();c.lineWidth=2.5;c.stroke() + c.fillStyle=ED;c.beginPath();c.ellipse(x+5,y-6,13,8,0,0,T);c.fill() + c.fillStyle='#111';c.beginPath();c.ellipse(x+6,y+4,5.5,7.5,0,0,T);c.fill() + c.fillStyle='#fff';c.beginPath();c.arc(x+1,y-2,4.5,0,T);c.fill();c.restore() + c.lineWidth=7;c.beginPath();c.moveTo(x-16,y-4);c.quadraticCurveTo(x,y-14,x+16,y-4);c.moveTo(x+d*15,y-5);c.lineTo(x+d*21,y-10);c.stroke() +} +export default(c,t,i)=>{ + const k=i%8,a=A[k],hit=k==7||k==0,jx=hit?3:0 + // sign on its post + c.save();c.translate(jx,0) + c.lineWidth=6;c.fillStyle=WD;c.beginPath();c.rect(190,140,18,110);c.fill();c.stroke() + c.save();c.translate(198,104);c.rotate(hit?.04:0) + const bd=()=>{c.beginPath();c.roundRect(-46,-40,92,82,6)} + c.fillStyle='#fff';bd();c.fill();c.save();bd();c.clip();c.fillStyle=ST;for(let x=-90;x<70;x+=30)c.beginPath(),c.moveTo(x,-50),c.lineTo(x+16,-50),c.lineTo(x+56,40),c.lineTo(x+40,40),c.closePath(),c.fill();c.restore() + c.lineWidth=6;bd();c.stroke() + c.fillStyle=MT;c.lineWidth=3.5;for(const[x,y]of[[-34,-28],[34,-28],[34,30],[-14,28]])c.beginPath(),c.arc(x,y,4.5,0,T),c.fill(),c.stroke() + c.restore();c.restore() + // girl + c.save();c.translate(74,170);c.scale(.72,.72);c.translate(-128,-186) + c.lineWidth=8;c.fillStyle=HAIR;for(const d of[-1,1])for(let j=4;j>=0;j--)c.beginPath(),c.ellipse(128+d*(64+j*1.5),156+j*20,14-j*.8,12,d*.4*(j%2?1:-1),0,T),c.fill(),c.stroke() + c.fillStyle=SH;c.beginPath();c.moveTo(100,190);c.quadraticCurveTo(54,198,44,300);c.lineTo(212,300);c.quadraticCurveTo(202,198,156,190);c.closePath();c.fill();c.stroke() + c.fillStyle=VS;c.beginPath();c.moveTo(94,194);c.quadraticCurveTo(58,204,52,300);c.lineTo(112,300);c.lineTo(112,232);c.lineTo(104,198);c.closePath();c.fill();c.stroke() + c.beginPath();c.moveTo(162,194);c.quadraticCurveTo(198,204,204,300);c.lineTo(144,300);c.lineTo(144,232);c.lineTo(152,198);c.closePath();c.fill();c.stroke() + c.strokeStyle=RF;c.lineWidth=9;c.beginPath();c.moveTo(56,262);c.lineTo(110,262);c.moveTo(146,262);c.lineTo(200,262);c.stroke();c.strokeStyle='#111' + c.fillStyle=SKIN;c.beginPath();c.moveTo(116,166);c.lineTo(116,194);c.quadraticCurveTo(128,204,140,194);c.lineTo(140,166);c.fill();c.beginPath();c.moveTo(116,166);c.lineTo(116,192);c.moveTo(140,166);c.lineTo(140,192);c.stroke() + c.fillStyle=SKIN;c.beginPath();c.moveTo(74,96);c.bezierCurveTo(70,152,100,184,128,186);c.bezierCurveTo(156,184,186,152,182,96);c.bezierCurveTo(182,44,74,44,74,96);c.fill();c.stroke() + if(hit){c.lineWidth=7;c.beginPath();c.moveTo(92,130);c.lineTo(114,141);c.lineTo(92,151);c.moveTo(164,130);c.lineTo(142,141);c.lineTo(164,151);c.stroke()} + else eye(c,103,140,-1),eye(c,153,140,1) + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*44,162,13,7,0,0,T),c.fill() + c.lineWidth=3;for(const d of[-1,1])for(const j of[-5,0,5])c.beginPath(),c.moveTo(128+d*44+j-2,165),c.lineTo(128+d*44+j+2,159),c.stroke() + c.lineWidth=5;c.beginPath();c.moveTo(116,168);c.quadraticCurveTo(128,176,142,166);c.stroke() + c.fillStyle=TG;c.lineWidth=4;c.beginPath();c.ellipse(140,174,5,6,-.5,0,T);c.fill();c.stroke() + c.lineWidth=8;c.fillStyle=HAIR;c.beginPath();c.moveTo(68,154) + c.bezierCurveTo(52,90,84,60,128,60);c.bezierCurveTo(172,60,204,90,188,154) + c.quadraticCurveTo(186,120,180,106);c.quadraticCurveTo(170,108,162,98);c.quadraticCurveTo(154,110,142,110);c.quadraticCurveTo(138,100,130,94) + c.quadraticCurveTo(122,106,110,110);c.quadraticCurveTo(104,100,96,96);c.quadraticCurveTo(88,108,78,106);c.quadraticCurveTo(70,126,68,154);c.closePath();c.fill();c.stroke() + // hard hat + c.fillStyle=HAT;c.beginPath();c.moveTo(60,86);c.bezierCurveTo(56,20,200,20,196,86);c.closePath();c.fill();c.stroke() + c.beginPath();c.moveTo(44,90);c.quadraticCurveTo(128,72,212,90);c.quadraticCurveTo(216,100,206,100);c.quadraticCurveTo(128,86,50,100);c.quadraticCurveTo(40,100,44,90);c.fill();c.stroke() + c.fillStyle=HTD;c.beginPath();c.moveTo(116,34);c.quadraticCurveTo(128,28,140,34);c.lineTo(142,80);c.quadraticCurveTo(128,78,114,80);c.closePath();c.fill();c.stroke() + c.strokeStyle='#fff';c.lineWidth=7;c.beginPath();c.arc(128,90,58,PI*1.2,PI*1.34);c.stroke();c.strokeStyle='#111' + c.restore() + // arm and hammer + const hx=hit?138:134,hy=hit?166:162,ex=hx+54*cos(a),ey=hy+54*sin(a) + ds(c,20,11,SH,()=>{c.moveTo(106,196);c.quadraticCurveTo(128,204,hx,hy+4)}) + ds(c,12,6,WD,()=>{c.moveTo(hx-10*cos(a),hy-10*sin(a));c.lineTo(ex,ey)}) + c.save();c.translate(ex,ey);c.rotate(a);c.fillStyle='#868e96';c.lineWidth=5;c.beginPath();c.roundRect(-10,-22,20,38,4);c.fill();c.stroke();c.fillStyle='#ced4da';c.beginPath();c.rect(-10,10,20,6);c.fill();c.stroke();c.restore() + c.fillStyle=SKIN;c.lineWidth=5;c.beginPath();c.ellipse(hx,hy+2,11,10,0,0,T);c.fill();c.stroke() + if(k==6)for(const j of[0,1])ds(c,7,3,'#fff',()=>{c.arc(hx,hy,66+j*11,-1.7+j*.1,-.9)}) + if(hit){const s=k==7?1:.7;c.fillStyle=SP;c.lineWidth=4;c.beginPath();for(let j=0;j<16;j++){const r=j%2?8*s:20*s,b=j*PI/8;c.lineTo(174+cos(b)*r,124+sin(b)*r)}c.closePath();c.fill();c.stroke() + for(const[d,e]of[[-1.6,1],[-.6,1],[.5,1]])ds(c,7,3,'#fff',()=>{c.moveTo(174+cos(d)*24*s,124+sin(d)*24*s);c.lineTo(174+cos(d)*34*s,124+sin(d)*34*s)})} +} diff --git a/gen/uianime/construction/paint.js b/gen/uianime/construction/paint.js new file mode 100644 index 0000000..ccc6fef --- /dev/null +++ b/gen/uianime/construction/paint.js @@ -0,0 +1,59 @@ +// coral ponytail girl in a paper hat and splattered overalls rolling fresh paint up and down a wall, stripe by stripe +const{cos,PI,max,min,hypot}=Math,T=2*PI +export const frames=20,delay=85 +const SKIN='#ffe3d1',HAIR='#ff8787',HD='#f03e3e',EYE='#339af0',ED='#1864ab',BL='#ffa8a8',OV='#f8f9fa',OVD='#ced4da',TS='#ffd43b',PA='#fff3bf',PB='#a5d8ff',PBD='#74c0fc',HN='#ff922b',MT='#868e96' +const ds=(c,a,b,s,f)=>{for(const[l,k]of[[a,'#111'],[b,s]])c.lineWidth=l,c.strokeStyle=k,c.beginPath(),f(),c.stroke();c.strokeStyle='#111'} +const eye=(c,x,y,d)=>{ + c.fillStyle='#fff';c.beginPath();c.ellipse(x,y,14,17,0,0,T);c.fill() + c.save();c.clip();c.beginPath();c.ellipse(x+4,y+1,11.5,15,0,0,T);c.fillStyle=EYE;c.fill();c.lineWidth=2.5;c.stroke() + c.fillStyle=ED;c.beginPath();c.ellipse(x+4,y-9,13,9,0,0,T);c.fill() + c.fillStyle='#111';c.beginPath();c.ellipse(x+5,y+2,5.5,7.5,0,0,T);c.fill() + c.fillStyle='#fff';c.beginPath();c.arc(x,y-5,4.5,0,T);c.fill();c.beginPath();c.arc(x+8,y+8,2,0,T);c.fill();c.restore() + c.lineWidth=7;c.beginPath();c.moveTo(x-16,y-6);c.quadraticCurveTo(x,y-20,x+16,y-6);c.moveTo(x+d*15,y-7);c.lineTo(x+d*21,y-12);c.stroke() +} +export default(c,t,i)=>{ + // 4 strokes a loop: blue over yellow on both columns, then yellow back over blue + const j=(t*4)|0,u=t*4-j,col=j%2,nw=j<2?PB:PA,dn=u<.5,ry=36+70*(1-cos(T*u)),cx=157.5+col*59 + const pr=k=>min(1,max(0,(t*4-k)*2)) + for(const k of[0,1]){const x=128+k*59,a=pr(k),b=pr(k+2),[bs,ov,h]=b>0?[PB,PA,b]:[PA,PB,a] + c.fillStyle=bs;c.fillRect(x,10,59,194);if(h>0)c.fillStyle=ov,c.fillRect(x,10,59,h<1?ry-8:194)} + c.lineWidth=6;c.beginPath();c.rect(128,10,118,194);c.stroke() + // paint bucket + c.fillStyle='#e9ecef';c.beginPath();c.moveTo(170,214);c.lineTo(240,214);c.lineTo(232,250);c.lineTo(178,250);c.closePath();c.fill();c.stroke() + c.fillStyle=PBD;c.beginPath();c.moveTo(172,222);c.lineTo(238,222);c.lineTo(236,232);c.quadraticCurveTo(226,240,222,232);c.quadraticCurveTo(204,236,190,232);c.quadraticCurveTo(184,242,176,234);c.closePath();c.fill();c.lineWidth=4;c.stroke() + c.lineWidth=6;c.fillStyle='#ced4da';c.beginPath();c.ellipse(205,214,36,7,0,0,T);c.fill();c.stroke() + // girl + c.save();c.translate(64,168);c.scale(.72,.72);c.translate(-128,-186) + c.save();c.translate(70,70);c.rotate(-.4) + c.lineWidth=8;c.fillStyle=HAIR;c.beginPath();c.moveTo(10,0);c.bezierCurveTo(-30,-10,-70,40,-64,120);c.quadraticCurveTo(-58,140,-44,148);c.quadraticCurveTo(-48,90,-4,22);c.closePath();c.fill();c.stroke() + c.strokeStyle=HD;c.lineWidth=4;c.beginPath();c.moveTo(-12,10);c.bezierCurveTo(-40,30,-54,70,-52,118);c.stroke();c.strokeStyle='#111';c.restore() + c.lineWidth=8;c.fillStyle=HD;c.beginPath();c.moveTo(128,36);c.bezierCurveTo(198,36,210,100,202,160);c.lineTo(54,160);c.bezierCurveTo(46,100,58,36,128,36);c.fill();c.stroke() + c.fillStyle=TS;c.beginPath();c.moveTo(100,190);c.quadraticCurveTo(54,198,44,300);c.lineTo(212,300);c.quadraticCurveTo(202,198,156,190);c.closePath();c.fill();c.stroke() + c.fillStyle=OV;c.beginPath();c.moveTo(80,300);c.lineTo(84,238);c.lineTo(172,238);c.lineTo(176,300);c.closePath();c.fill();c.stroke() + for(const d of[-1,1])c.beginPath(),c.moveTo(128+d*44,240),c.lineTo(128+d*34,196),c.lineTo(128+d*22,196),c.lineTo(128+d*30,240),c.closePath(),c.fill(),c.stroke() + c.fillStyle=PBD;c.lineWidth=4;for(const[x,y,r]of[[104,262,7],[150,276,5],[160,254,4]])c.beginPath(),c.arc(x,y,r,0,T),c.fill(),c.stroke() + c.fillStyle=SKIN;c.lineWidth=8;c.beginPath();c.moveTo(116,166);c.lineTo(116,194);c.quadraticCurveTo(128,204,140,194);c.lineTo(140,166);c.fill();c.beginPath();c.moveTo(116,166);c.lineTo(116,192);c.moveTo(140,166);c.lineTo(140,192);c.stroke() + c.fillStyle=SKIN;c.beginPath();c.moveTo(74,96);c.bezierCurveTo(70,152,100,184,128,186);c.bezierCurveTo(156,184,186,152,182,96);c.bezierCurveTo(182,44,74,44,74,96);c.fill();c.stroke() + eye(c,103,140,-1);eye(c,153,140,1) + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*44,162,13,7,0,0,T),c.fill() + c.lineWidth=3;for(const d of[-1,1])for(const k of[-5,0,5])c.beginPath(),c.moveTo(128+d*44+k-2,165),c.lineTo(128+d*44+k+2,159),c.stroke() + c.fillStyle=PBD;c.lineWidth=4;c.beginPath();c.ellipse(90,152,6,5,.3,0,T);c.fill();c.stroke() + c.lineWidth=5;c.fillStyle='#c92a2a';c.beginPath();c.moveTo(118,166);c.quadraticCurveTo(128,170,138,166);c.quadraticCurveTo(136,180,128,180);c.quadraticCurveTo(120,180,118,166);c.fill();c.stroke() + c.lineWidth=8;c.fillStyle=HAIR;c.beginPath();c.moveTo(66,156) + c.bezierCurveTo(50,80,88,46,128,46);c.bezierCurveTo(168,46,206,80,190,156) + c.quadraticCurveTo(188,120,180,104);c.quadraticCurveTo(170,104,164,96);c.quadraticCurveTo(156,108,144,110);c.quadraticCurveTo(140,98,130,92) + c.quadraticCurveTo(122,106,108,110);c.quadraticCurveTo(104,98,96,94);c.quadraticCurveTo(88,106,78,106);c.quadraticCurveTo(68,128,66,156);c.closePath();c.fill();c.stroke() + // folded newspaper hat + c.fillStyle='#fff';c.beginPath();c.moveTo(62,82);c.lineTo(128,18);c.lineTo(194,82);c.closePath();c.fill();c.stroke() + c.strokeStyle=OVD;c.lineWidth=5;c.beginPath();for(const y of[50,64])c.moveTo(128-(y-18)*.8+14,y),c.lineTo(128+(y-18)*.8-14,y);c.stroke();c.strokeStyle='#111' + c.fillStyle=HN;c.beginPath();c.moveTo(56,80);c.lineTo(200,80);c.lineTo(198,98);c.lineTo(58,98);c.closePath();c.fill();c.stroke() + c.restore() + // roller on its pole, hands on the handle + const fx=cx-18,fy=ry+24,L=hypot(124-fx,210-fy),dx=(124-fx)/L,dy=(210-fy)/L,ax=124,ay=210 + ds(c,8,3,MT,()=>{c.moveTo(cx-24,ry);c.lineTo(cx-30,ry);c.lineTo(cx-30,ry+16);c.lineTo(fx,fy)}) + ds(c,14,8,HN,()=>{c.moveTo(fx,fy);c.lineTo(fx+dx*(L+26),fy+dy*(L+26))}) + c.fillStyle=nw;c.lineWidth=5;c.beginPath();c.roundRect(cx-25,ry-12,50,24,8);c.fill();c.stroke() + c.strokeStyle='#fff';c.lineWidth=3.5;c.beginPath();c.moveTo(cx-18,ry-5);c.lineTo(cx+8,ry-5);c.stroke();c.strokeStyle='#111' + ds(c,20,11,TS,()=>{c.moveTo(98,194);c.quadraticCurveTo(114,192,ax,ay)}) + c.fillStyle=SKIN;c.lineWidth=5;c.beginPath();c.ellipse(ax,ay,11,10,0,0,T);c.fill();c.stroke() +} diff --git a/gen/uianime/download/catch.js b/gen/uianime/download/catch.js new file mode 100644 index 0000000..cfce215 --- /dev/null +++ b/gen/uianime/download/catch.js @@ -0,0 +1,61 @@ +// blonde girl with her arms up catching a falling file box with a down arrow, oof squash, a happy beam, then the box poofs into sparkles and she looks up for the next one +const{sin,cos,PI,max,min}=Math,T=2*PI +export const frames=16,delay=80 +const SKIN='#ffe3d1',HAIR='#ffe066',HD='#f59f00',HL='#fff9db',EYE='#20c997',ED='#087f5b',TEE='#b2f2bb',TD='#40c057',BL='#ffa8a8',BAND='#ff6b6b',BOX='#e8b07a',BD='#c47f45',AR='#4dabf7',SP='#ffd43b' +const ds=(c,a,b,s,f)=>{for(const[l,k]of[[a,'#111'],[b,s]])c.lineWidth=l,c.strokeStyle=k,c.beginPath(),f(),c.stroke();c.strokeStyle='#111'} +const eye=(c,x,y,d,gx,gy)=>{ + c.fillStyle='#fff';c.beginPath();c.ellipse(x,y,14,17,0,0,T);c.fill() + c.save();c.beginPath();c.ellipse(x,y,14,17,0,0,T);c.clip();c.beginPath();c.ellipse(x+gx,y+gy,11.5,15,0,0,T);c.fillStyle=EYE;c.fill();c.lineWidth=2.5;c.stroke() + c.fillStyle=ED;c.beginPath();c.ellipse(x+gx,y+gy-10,13,9,0,0,T);c.fill() + c.fillStyle='#111';c.beginPath();c.ellipse(x+gx,y+gy+1,5.5,7.5,0,0,T);c.fill() + c.fillStyle='#fff';c.beginPath();c.arc(x+gx-4,y+gy-6,4.5,0,T);c.fill();c.beginPath();c.arc(x+gx+5,y+gy+7,2,0,T);c.fill();c.restore() + c.lineWidth=6;c.beginPath();c.moveTo(x-16,y-6);c.quadraticCurveTo(x,y-20,x+16,y-6);c.moveTo(x+d*15,y-7);c.lineTo(x+d*21,y-12);c.stroke() +} +const box=(c,x,y,sq)=>{c.save();c.translate(x,y);c.scale(1.2/sq,1.2*sq) + c.fillStyle=BOX;c.lineWidth=6;c.beginPath();c.roundRect(-34,-28,68,56,5);c.fill();c.stroke() + c.fillStyle=BD;c.lineWidth=4;c.beginPath();c.rect(-8,-28,16,18);c.fill();c.stroke() + c.beginPath();c.moveTo(-34,-14);c.lineTo(34,-14);c.stroke() + c.fillStyle='#fff';c.beginPath();c.roundRect(-18,-6,36,28,5);c.fill();c.stroke() + c.fillStyle=AR;c.lineWidth=3.5;c.beginPath();c.moveTo(0,19);c.lineTo(11,8);c.lineTo(4,8);c.lineTo(4,-2);c.lineTo(-4,-2);c.lineTo(-4,8);c.lineTo(-11,8);c.closePath();c.fill();c.stroke() + c.restore()} +const spark=(c,x,y,r)=>{c.beginPath();c.moveTo(x,y-r);for(const[a,b]of[[1,0],[0,1],[-1,0],[0,-1]])c.quadraticCurveTo(x+(a+b)*r*.15,y+(b-a)*r*.15,x+a*r,y+b*r);c.fill();c.stroke()} +export default(c,t)=>{ + const CY=56,u=((t+.1875)%1)/.375,fall=u<1,fy=-45+(CY+45)*(.4*u+.6*u*u) + const oof=t>=.1875&&t<.3125,imp=oof?sin(PI*(t-.1875)/.125):0,hap=t>=.3125&&t<.625,pf=t>=.625&&t<.75?(t-.625)/.125:-1 + const hop=hap?-5*max(0,sin(2*T*(t-.3125)/.3125)):0,by=CY+10*imp+hop,bob=4*imp,look=t<.1875||t>=.75 + const H=f=>{c.save();c.translate(128,200+bob);c.scale(.7,.7);c.translate(-128,-186);f();c.restore()} + H(()=>{ + c.lineWidth=8;c.fillStyle=HD;c.beginPath();c.moveTo(128,34);c.bezierCurveTo(200,34,214,96,206,150);c.quadraticCurveTo(214,200,196,236);c.lineTo(60,236);c.quadraticCurveTo(42,200,50,150);c.bezierCurveTo(42,96,56,34,128,34);c.fill();c.stroke() + c.fillStyle=TEE;c.beginPath();c.moveTo(100,190);c.quadraticCurveTo(52,198,40,330);c.lineTo(216,330);c.quadraticCurveTo(204,198,156,190);c.closePath();c.fill();c.stroke() + c.fillStyle='#fff';c.beginPath();c.moveTo(104,190);c.quadraticCurveTo(128,214,152,190);c.closePath();c.fill();c.stroke() + c.fillStyle=SKIN;c.lineWidth=8;c.beginPath();c.moveTo(114,168);c.lineTo(114,194);c.quadraticCurveTo(128,206,142,194);c.lineTo(142,168);c.fill();c.beginPath();c.moveTo(114,168);c.lineTo(114,192);c.moveTo(142,168);c.lineTo(142,192);c.stroke() + c.fillStyle='#fff';c.beginPath();c.arc(128,262,14,0,T);c.fill();c.stroke();c.fillStyle=TD;c.beginPath();c.arc(128,262,6,0,T);c.fill() + c.lineWidth=8;c.fillStyle=SKIN;c.beginPath();c.moveTo(74,96);c.bezierCurveTo(70,152,100,184,128,186);c.bezierCurveTo(156,184,186,152,182,96);c.bezierCurveTo(182,44,74,44,74,96);c.fill();c.stroke() + if(oof){c.lineWidth=8;for(const d of[-1,1])c.beginPath(),c.moveTo(128+d*38,128),c.lineTo(128+d*18,140),c.lineTo(128+d*38,152),c.stroke()} + else if(hap){c.lineWidth=8;for(const x of[103,153])c.beginPath(),c.arc(x,148,15,1.15*PI,1.85*PI),c.stroke()} + else{const g=look?[5,-4]:[6,3];eye(c,103,140,-1,...g);eye(c,153,140,1,...g)} + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*44,162,14,8,0,0,T),c.fill() + c.lineWidth=4;for(const d of[-1,1])for(const k of[-6,0,6])c.beginPath(),c.moveTo(128+d*44+k-2,166),c.lineTo(128+d*44+k+2,158),c.stroke() + c.lineWidth=6;c.fillStyle='#c92a2a' + if(oof){c.beginPath();c.ellipse(128,170,9,6,0,0,T);c.fill();c.stroke()} + else if(look){c.beginPath();c.ellipse(128,170,6,7,0,0,T);c.fill();c.stroke()} + else{c.beginPath();c.moveTo(114,164);c.quadraticCurveTo(128,188,142,164);c.closePath();c.fill();c.stroke();c.save();c.clip();c.fillStyle='#ff8fab';c.beginPath();c.ellipse(128,180,8,6,0,0,T);c.fill();c.restore()} + c.lineWidth=8;c.fillStyle=HAIR;c.beginPath();c.moveTo(66,154) + c.bezierCurveTo(50,74,88,36,128,36);c.bezierCurveTo(168,36,206,74,190,154) + c.quadraticCurveTo(188,120,180,104);c.quadraticCurveTo(170,96,160,100);c.quadraticCurveTo(152,108,140,108);c.quadraticCurveTo(132,98,128,90) + c.quadraticCurveTo(122,100,114,108);c.quadraticCurveTo(102,108,96,100);c.quadraticCurveTo(86,96,78,104);c.quadraticCurveTo(70,124,66,154);c.closePath();c.fill();c.stroke() + c.strokeStyle=HL;c.lineWidth=7;for(const[s,e]of[[1.24,1.36],[1.44,1.52],[1.62,1.74]])c.beginPath(),c.arc(128,104,56,PI*s,PI*e),c.stroke() + c.strokeStyle='#111';c.fillStyle=BAND;c.lineWidth=7;c.beginPath();c.moveTo(66,96);c.bezierCurveTo(70,44,186,44,190,96);c.lineTo(180,98);c.bezierCurveTo(176,58,80,58,76,98);c.closePath();c.fill();c.stroke() + if(oof){c.fillStyle='#a5d8ff';c.lineWidth=6;c.beginPath();c.moveTo(196,110);c.quadraticCurveTo(208,128,196,134);c.quadraticCurveTo(184,128,196,110);c.fill();c.stroke()} + }) + const sq=oof?1-.14*imp:1 + if(fall){box(c,128,fy,1);if(u>.2)for(const k of[-1,0,1])ds(c,8,3.5,'#fff',()=>{c.moveTo(128+k*24,fy-46+k*k*8);c.lineTo(128+k*24,fy-70+k*k*8)})} + else if(t<.625)box(c,128,by,sq) + else if(pf>=0){c.save();c.translate(128,CY);c.scale(1-pf,1-pf);box(c,0,0,1);c.restore()} + const hy=fall||pf>=0||look?CY+6:by+6 + for(const d of[-1,1])ds(c,20,11,TEE,()=>{c.moveTo(128+d*44,222+bob);c.quadraticCurveTo(128+d*66,140,128+d*48,hy+8)}) + c.fillStyle=SKIN;c.lineWidth=5;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*48,hy,11,12,0,0,T),c.fill(),c.stroke() + if(oof)for(let k=0;k<5;k++){const a=PI+k*PI/4,r=56+12*imp;ds(c,7,3,'#fff',()=>{c.moveTo(128+cos(a)*r,CY+sin(a)*r*.6);c.lineTo(128+cos(a)*(r+12),CY+sin(a)*(r+12)*.6)})} + if(pf>=0){c.fillStyle=SP;c.lineWidth=3.5;for(let k=0;k<6;k++){const a=k*PI/3+.3,r=20+48*pf;spark(c,128+cos(a)*r,CY+sin(a)*r*.8,13*sin(PI*min(1,pf*1.2+.15)))}} + if(hap){const q=(t-.375)/.3125;c.fillStyle=SP;c.lineWidth=3.5;for(const[x,y,o]of[[208,40,0],[48,62,.2],[214,104,.4]]){const r=sin(PI*min(1,max(0,q*1.4-o)));if(r>.1)spark(c,x,y,12*r)}} +} diff --git a/gen/uianime/error/cry.js b/gen/uianime/error/cry.js new file mode 100644 index 0000000..4a09511 --- /dev/null +++ b/gen/uianime/error/cry.js @@ -0,0 +1,44 @@ +// orange-haired girl bawling over her laptop as a big red X error flashes on the screen, tears gushing into puddles +const{sin,cos,PI,max,abs}=Math,T=2*PI +export const frames=8,delay=90 +const SKIN='#ffe3d1',HAIR='#ffa94d',HD='#e8590c',HL='#fff4e6',HO='#b197fc',HOD='#7950f2',BL='#ffa8a8',MO='#c92a2a',TG='#ff8fab',WA='#74c0fc',LT='#dee2e6',LD='#adb5bd',RD='#fa5252',CL='#ff6b6b',Z=.8 +export default(c,t,i)=>{ + const b=i%2*2,w=sin(2*T*t),L=v=>c.lineWidth=v/Z,fl=i%4<2 + const head=f=>{c.save();c.translate(128,96+b);c.scale(Z,Z);c.translate(-128,-128);f();c.restore()} + head(()=>{ + L(6);c.fillStyle=HD;c.beginPath();c.moveTo(128,34);c.bezierCurveTo(198,34,212,100,204,160);c.quadraticCurveTo(196,180,176,176);c.lineTo(80,176);c.quadraticCurveTo(60,180,52,160);c.bezierCurveTo(44,100,58,34,128,34);c.fill();c.stroke() + c.fillStyle=HO;c.beginPath();c.moveTo(100,190);c.quadraticCurveTo(58,196,48,262);c.lineTo(208,262);c.quadraticCurveTo(198,196,156,190);c.closePath();c.fill();c.stroke() + c.fillStyle=HOD;for(const d of[-1,1])c.beginPath(),c.moveTo(128+d*8,196),c.quadraticCurveTo(128+d*34,190,128+d*46,206),c.quadraticCurveTo(128+d*30,218,128+d*8,210),c.closePath(),c.fill(),c.stroke() + c.fillStyle=SKIN;c.beginPath();c.moveTo(116,166);c.lineTo(116,194);c.lineTo(128,204);c.lineTo(140,194);c.lineTo(140,166);c.fill();L(5);c.beginPath();c.moveTo(116,166);c.lineTo(116,192);c.moveTo(140,166);c.lineTo(140,192);c.stroke() + L(6);c.fillStyle=SKIN;c.beginPath();c.moveTo(74,96);c.bezierCurveTo(70,152,100,184,128,186);c.bezierCurveTo(156,184,186,152,182,96);c.bezierCurveTo(182,44,74,44,74,96);c.fill();c.stroke() + L(6.5);for(const d of[-1,1]){const x=128+d*25;c.beginPath();c.moveTo(x-d*14,128);c.lineTo(x+d*9,140);c.lineTo(x-d*14,152);c.stroke()} + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*44,162,11,5.5,0,0,T),c.fill() + c.save();c.translate(128,170);c.scale(1.2,1.2);c.translate(-128,-170);c.fillStyle=MO;L(3.5);c.beginPath();c.moveTo(114,170+w);c.quadraticCurveTo(118,164-w,121,168+w);c.quadraticCurveTo(124.5,164+w,128,168-w);c.quadraticCurveTo(131.5,164+w,135,168+w);c.quadraticCurveTo(138,164-w,142,170+w);c.quadraticCurveTo(140,184,128,184);c.quadraticCurveTo(116,184,114,170+w);c.fill();c.stroke() + c.save();c.clip();c.fillStyle=TG;c.beginPath();c.ellipse(128,184,8,5,0,0,T);c.fill();c.restore();c.restore() + L(6);c.fillStyle=HAIR;c.beginPath();c.moveTo(66,160) + c.bezierCurveTo(50,74,88,36,128,36);c.bezierCurveTo(168,36,206,74,190,160);c.quadraticCurveTo(182,130,180,108) + c.quadraticCurveTo(172,104,166,112);c.quadraticCurveTo(160,98,150,94);c.quadraticCurveTo(144,104,136,108) + c.quadraticCurveTo(130,96,120,92);c.quadraticCurveTo(114,104,104,108);c.quadraticCurveTo(98,98,88,100);c.quadraticCurveTo(84,108,78,112) + c.quadraticCurveTo(74,134,66,160);c.closePath();c.fill();c.stroke() + c.strokeStyle=HL;L(5);for(const[a,e]of[[1.24,1.36],[1.44,1.52],[1.62,1.74]])c.beginPath(),c.arc(128,104,56,PI*a,PI*e),c.stroke() + c.strokeStyle='#111';L(5);c.beginPath();c.moveTo(88,118);c.lineTo(114,110);c.moveTo(168,118);c.lineTo(142,110);c.stroke() + c.fillStyle=CL;L(4);c.save();c.translate(170,72);c.rotate(.6);c.beginPath();c.roundRect(-13,-5,26,10,5);c.fill();c.stroke();c.restore() + }) + c.fillStyle=WA;c.lineWidth=5;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*96,240,26,9,0,0,T),c.fill(),c.stroke() + c.lineWidth=6;c.fillStyle=LD;c.beginPath();c.moveTo(48,236);c.lineTo(208,236);c.lineTo(216,250);c.lineTo(40,250);c.closePath();c.fill();c.stroke() + c.fillStyle=LT;c.beginPath();c.roundRect(60,146,136,94,10);c.fill();c.stroke() + c.fillStyle=fl?'#fff5f5':'#fff';c.beginPath();c.roundRect(72,156,112,72,4);c.fill();c.lineWidth=4;c.stroke() + const s=fl?1.08:1;c.save();c.translate(128,192);c.scale(s,s) + for(const[l,k]of[[22,'#111'],[12,RD]])c.lineWidth=l,c.strokeStyle=k,c.beginPath(),c.moveTo(-22,-22),c.lineTo(22,22),c.moveTo(22,-22),c.lineTo(-22,22),c.stroke() + c.restore();c.strokeStyle='#111' + for(const d of[-1,1]){c.fillStyle=SKIN;c.lineWidth=5;c.beginPath();c.ellipse(128+d*66,150,11,14,d*.3,0,T);c.fill();c.stroke()} + head(()=>{ + for(const d of[-1,1]){ + const arc=()=>{c.beginPath();c.moveTo(128+d*40,146);c.bezierCurveTo(128+d*90,104,128+d*128,150,128+d*120,240)} + for(const[lw,s]of[[17,'#111'],[9,WA]])L(lw*Z),c.strokeStyle=s,arc(),c.stroke() + c.strokeStyle='#fff';L(3*Z);c.setLineDash([8,16]);c.lineDashOffset=-t*48;arc();c.stroke();c.setLineDash([]) + } + }) + c.strokeStyle='#111';c.fillStyle=WA;c.lineWidth=3.5 + for(const d of[-1,1])for(const o of[0,.33,.66]){const p=(t*2+o)%1,x=128+d*(96+(o>.5?-1:1)*22*p),y=234-34*p+40*p*p;c.beginPath();c.arc(x,y,5*(1-p*.5),0,T);c.fill();c.stroke()} +} diff --git a/gen/uianime/error/smoke.js b/gen/uianime/error/smoke.js new file mode 100644 index 0000000..2b003ab --- /dev/null +++ b/gen/uianime/error/smoke.js @@ -0,0 +1,39 @@ +// blue-haired girl in glasses and a lab coat coughing into her fist as gray smoke billows out of her crashed computer +const{sin,cos,PI,max,min}=Math,T=2*PI +export const frames=12,delay=90 +const SKIN='#ffe3d1',HAIR='#5c7cfa',HD='#3b5bdb',HL='#dbe4ff',CO='#fff',SH='#a5d8ff',BL='#ffa8a8',PC='#e9d8a6',PD='#c9b37e',SC='#495057',SM='#ced4da',SMD='#adb5bd',SW='#a5d8ff',SP='#ffd43b',Z=.76 +const puff=(c,x,y,r,f)=>{c.beginPath();for(const[a,b,s]of[[-.8,0,.7],[0,-.5,.8],[.8,0,.7],[0,.3,.75]])c.moveTo(x+a*r+s*r,y+b*r),c.arc(x+a*r,y+b*r,s*r,0,T);c.lineWidth=9;c.strokeStyle='#111';c.stroke();c.fillStyle=f;c.fill()} +export default(c,t,i)=>{ + const k=max(0,sin(2*T*t))**2,L=v=>c.lineWidth=v/Z,fl=i%3==0 + const head=f=>{c.save();c.translate(158,112+5*k);c.rotate(-.12*k);c.scale(Z,Z);c.translate(-128,-128);f();c.restore()} + head(()=>{ + L(6);c.fillStyle=HD;c.beginPath();c.moveTo(128,34);c.bezierCurveTo(198,34,212,96,206,150);c.lineTo(212,320);c.lineTo(44,320);c.lineTo(50,150);c.bezierCurveTo(44,96,58,34,128,34);c.fill();c.stroke() + c.fillStyle=CO;c.beginPath();c.moveTo(100,190);c.quadraticCurveTo(58,196,46,320);c.lineTo(210,320);c.quadraticCurveTo(198,196,156,190);c.closePath();c.fill();c.stroke() + c.fillStyle=SH;c.beginPath();c.moveTo(108,190);c.lineTo(128,236);c.lineTo(148,190);c.closePath();c.fill();c.stroke() + L(5);for(const d of[-1,1])c.beginPath(),c.moveTo(128+d*20,188),c.lineTo(128+d*34,214),c.lineTo(128+d*22,218),c.lineTo(128,250),c.stroke() + c.fillStyle=SKIN;c.beginPath();c.moveTo(116,166);c.lineTo(116,194);c.lineTo(128,206);c.lineTo(140,194);c.lineTo(140,166);c.fill();L(5);c.beginPath();c.moveTo(116,166);c.lineTo(116,192);c.moveTo(140,166);c.lineTo(140,192);c.stroke() + L(6);c.fillStyle=SKIN;c.beginPath();c.moveTo(74,96);c.bezierCurveTo(70,152,100,184,128,186);c.bezierCurveTo(156,184,186,152,182,96);c.bezierCurveTo(182,44,74,44,74,96);c.fill();c.stroke() + L(6.5);for(const d of[-1,1]){const x=128+d*25;c.beginPath();c.moveTo(x-d*13,130);c.lineTo(x+d*9,140);c.lineTo(x-d*13,150);c.stroke()} + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*44,162,11,5.5,0,0,T),c.fill() + for(const[w,s]of[[8,'#111'],[3.5,'#fab005']]){c.strokeStyle=s;L(w);for(const x of[103,153])c.beginPath(),c.arc(x,140,22,0,T),c.stroke();c.beginPath();c.moveTo(123,136);c.quadraticCurveTo(128,131,133,136);c.stroke()} + c.strokeStyle='#111';L(6);c.fillStyle=HAIR;c.beginPath();c.moveTo(66,170) + c.bezierCurveTo(50,74,88,36,128,36);c.bezierCurveTo(168,36,206,74,190,170) + c.quadraticCurveTo(184,130,180,104);c.quadraticCurveTo(172,100,164,112);c.quadraticCurveTo(158,96,146,92);c.quadraticCurveTo(140,104,130,108) + c.quadraticCurveTo(124,96,112,92);c.quadraticCurveTo(106,104,96,108);c.quadraticCurveTo(90,98,82,102) + c.quadraticCurveTo(72,130,66,170);c.closePath();c.fill();c.stroke() + c.strokeStyle=HL;L(5);for(const[a,e]of[[1.24,1.36],[1.44,1.52],[1.62,1.74]])c.beginPath(),c.arc(128,104,56,PI*a,PI*e),c.stroke() + c.strokeStyle='#111';L(4.5);c.beginPath();c.moveTo(88,112);c.lineTo(114,118);c.moveTo(168,112);c.lineTo(142,118);c.stroke() + c.fillStyle=SW;L(4);const sy=96+4*k;c.beginPath();c.moveTo(196,sy-14);c.quadraticCurveTo(206,sy,196,sy+7);c.quadraticCurveTo(186,sy,196,sy-14);c.fill();c.stroke() + }) + for(const[w,s]of[[28,'#111'],[17,CO]])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),c.moveTo(118,262),c.quadraticCurveTo(110,200,140,170+4*k),c.stroke() + c.strokeStyle='#111';c.lineWidth=5;c.fillStyle=SKIN;c.beginPath();c.roundRect(130,146+4*k,28,26,10);c.fill();c.stroke() + c.lineWidth=2.5;c.beginPath();for(const y of[154,161])c.moveTo(150,y+4*k),c.lineTo(158,y+4*k);c.stroke() + if(k>.2)for(const[w,s]of[[9,'#111'],[4,'#fff']]){c.lineWidth=w;c.strokeStyle=s;for(const a of[-.6,0,.6])c.beginPath(),c.moveTo(144-22*cos(a),160+4*k+22*sin(a)),c.lineTo(144-(26+16*k)*cos(a),160+4*k+(26+16*k)*sin(a)),c.stroke()} + c.strokeStyle='#111' + c.lineWidth=6;c.fillStyle=PD;c.beginPath();c.moveTo(44,226);c.lineTo(92,226);c.lineTo(104,248);c.lineTo(32,248);c.closePath();c.fill();c.stroke() + c.fillStyle=PC;c.beginPath();c.roundRect(10,122,116,106,12);c.fill();c.stroke() + c.fillStyle=fl?'#868e96':SC;c.beginPath();c.roundRect(24,136,88,70,8);c.fill();c.lineWidth=5;c.stroke() + for(const[w,s]of[[9,'#111'],[4,'#fff']])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),c.moveTo(44,140),c.lineTo(58,160),c.lineTo(50,172),c.lineTo(66,202),c.stroke() + c.strokeStyle='#111';c.lineWidth=4;c.fillStyle=SP;for(const[x,y]of[[96,130],[22,140]])if((i+(x>50?0:1))%2)c.beginPath(),c.moveTo(x,y-11),c.lineTo(x+4,y-3),c.lineTo(x+12,y),c.lineTo(x+4,y+3),c.lineTo(x,y+11),c.lineTo(x-4,y+3),c.lineTo(x-12,y),c.lineTo(x-4,y-3),c.closePath(),c.fill(),c.stroke() + for(let n=3;n>=0;n--){const p=(t+n/4)%1;puff(c,56+96*p+10*sin(T*p),108-90*p,(12+18*p)*min(1,(1-p)*5),n%2?SM:SMD)} +} diff --git a/gen/uianime/error/tehe.js b/gen/uianime/error/tehe.js new file mode 100644 index 0000000..df79a03 --- /dev/null +++ b/gen/uianime/error/tehe.js @@ -0,0 +1,51 @@ +// blonde girl with twin buns doing a tehepero oops: winking, tongue out, bonking her own head with her fist so little stars pop +const{sin,cos,PI,abs,max}=Math,T=2*PI +export const frames=8,delay=100 +const SKIN='#ffe3d1',HAIR='#ffe066',HD='#f59f00',HL='#fff9db',EYE='#f783ac',ED='#c2255c',UN='#fff',COL='#364fc7',RB='#fa5252',BL='#ffa8a8',TG='#ff8fab',ST='#ffd43b' +const eye=(c,x,y,d)=>{ + c.fillStyle='#fff';c.beginPath();c.ellipse(x,y,14,17,0,0,T);c.fill() + c.save();c.beginPath();c.ellipse(x,y+2,11.5,15,0,0,T);c.clip();c.fillStyle=EYE;c.fill();c.fillStyle=ED;c.beginPath();c.ellipse(x,y-8,13,10,0,0,T);c.fill();c.restore() + c.lineWidth=2.5;c.beginPath();c.ellipse(x,y+2,11.5,15,0,0,T);c.stroke() + c.fillStyle='#111';c.beginPath();c.ellipse(x,y+3,5.5,7.5,0,0,T);c.fill() + c.fillStyle='#fff';c.beginPath();c.arc(x-4,y-5,4.5,0,T);c.fill();c.beginPath();c.arc(x+5,y+8,2,0,T);c.fill() + c.lineWidth=6;c.beginPath();c.moveTo(x-16,y-6);c.quadraticCurveTo(x,y-20,x+16,y-6);c.moveTo(x+d*15,y-7);c.lineTo(x+d*21,y-12);c.stroke() +} +const star=(c,x,y,r,a)=>{c.save();c.translate(x,y);c.rotate(a);c.beginPath();for(let k=0;k<10;k++){const rr=k%2?r*.45:r,b=k*PI/5-PI/2;c.lineTo(cos(b)*rr,sin(b)*rr)}c.closePath();c.restore();c.fill();c.stroke()} +export default(c,t)=>{ + const u=abs(sin(2*PI*t)),hit=u<.5,tl=.07*(1-u) + const head=f=>{c.save();c.translate(128,186);c.rotate(-tl);c.translate(-128,-186);f();c.restore()} + head(()=>{ + c.lineWidth=6;c.fillStyle=HD;c.beginPath();c.moveTo(128,34);c.bezierCurveTo(196,34,208,100,200,156);c.quadraticCurveTo(196,178,178,176);c.lineTo(78,176);c.quadraticCurveTo(60,178,56,156);c.bezierCurveTo(48,100,60,34,128,34);c.fill();c.stroke() + c.fillStyle=HAIR;for(const d of[-1,1])c.beginPath(),c.arc(128+d*54,52,25,0,T),c.fill(),c.stroke() + c.strokeStyle=HD;c.lineWidth=3.5;for(const d of[-1,1])c.beginPath(),c.arc(128+d*54,52,14,PI*1.1,PI*1.7),c.stroke();c.strokeStyle='#111' + }) + c.lineWidth=6;c.fillStyle=UN;c.beginPath();c.moveTo(100,188);c.quadraticCurveTo(62,196,54,250);c.lineTo(202,250);c.quadraticCurveTo(194,196,156,188);c.closePath();c.fill();c.stroke() + c.fillStyle=COL;c.beginPath();c.moveTo(98,189);c.lineTo(128,228);c.lineTo(158,189);c.lineTo(172,197);c.lineTo(128,248);c.lineTo(84,197);c.closePath();c.fill();c.lineWidth=5;c.stroke() + c.strokeStyle='#fff';c.lineWidth=3;c.beginPath();c.moveTo(90,198);c.lineTo(128,240);c.lineTo(166,198);c.stroke();c.strokeStyle='#111' + c.fillStyle=SKIN;c.beginPath();c.moveTo(116,166);c.lineTo(116,192);c.lineTo(128,206);c.lineTo(140,192);c.lineTo(140,166);c.fill();c.beginPath();c.moveTo(116,166);c.lineTo(116,190);c.moveTo(140,166);c.lineTo(140,190);c.stroke() + c.fillStyle=RB;for(const d of[-1,1])c.beginPath(),c.moveTo(128,226),c.lineTo(128+d*20,216),c.lineTo(128+d*18,238),c.closePath(),c.fill(),c.stroke() + c.beginPath();c.arc(128,227,5,0,T);c.fill();c.stroke() + head(()=>{ + c.lineWidth=6;c.fillStyle=SKIN;c.beginPath();c.moveTo(74,96);c.bezierCurveTo(70,152,100,184,128,186);c.bezierCurveTo(156,184,186,152,182,96);c.bezierCurveTo(182,44,74,44,74,96);c.fill();c.stroke() + eye(c,103,140,-1) + c.lineWidth=6;c.beginPath();c.moveTo(166,128);c.lineTo(144,140);c.lineTo(166,152);c.stroke() + c.lineWidth=2.5;c.beginPath();c.moveTo(128,156);c.lineTo(127,159);c.stroke() + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*42,161,12,6,0,0,T),c.fill() + c.lineWidth=2.5;for(const d of[-1,1])for(const k of[-5,0,5])c.beginPath(),c.moveTo(128+d*42+k-2,164),c.lineTo(128+d*42+k+2,158),c.stroke() + c.fillStyle=TG;c.lineWidth=3.5;c.beginPath();c.moveTo(126,168);c.lineTo(126,176+2*u);c.arc(132,176+2*u,6,PI,0,true);c.lineTo(138,168);c.fill();c.stroke() + c.lineWidth=1.8;c.beginPath();c.moveTo(132,170);c.lineTo(132,177+2*u);c.stroke() + c.lineWidth=3.5;c.beginPath();c.moveTo(116,166);c.quadraticCurveTo(128,174,142,164);c.stroke() + c.lineWidth=6;c.fillStyle=HAIR;c.beginPath();c.moveTo(70,156) + c.bezierCurveTo(54,74,88,36,128,36);c.bezierCurveTo(168,36,202,74,186,156) + c.quadraticCurveTo(184,120,178,104);c.quadraticCurveTo(170,102,164,110);c.quadraticCurveTo(160,96,148,92);c.quadraticCurveTo(142,104,132,108) + c.quadraticCurveTo(126,94,114,92);c.quadraticCurveTo(108,104,98,108);c.quadraticCurveTo(92,98,82,102) + c.quadraticCurveTo(72,124,70,156);c.closePath();c.fill();c.stroke() + c.strokeStyle=HL;c.lineWidth=5;for(const[a,e]of[[1.24,1.36],[1.44,1.52],[1.62,1.74]])c.beginPath(),c.arc(128,104,56,PI*a,PI*e),c.stroke() + c.strokeStyle='#111';c.lineWidth=4;c.beginPath();c.moveTo(144,114);c.lineTo(166,108);c.stroke() + }) + const fx=196+14*u,fy=96-12*u + for(const[w,s]of[[30,'#111'],[19,UN]])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),c.moveTo(186,262),c.quadraticCurveTo(222,214,226,176),c.lineTo(fx+8,fy+14),c.stroke() + c.strokeStyle='#111';c.lineWidth=5;c.fillStyle=COL;c.save();c.translate(fx+10,fy+20);c.rotate(.9-.3*u);c.beginPath();c.roundRect(-14,-6,28,12,4);c.fill();c.stroke();c.restore() + c.fillStyle=SKIN;c.save();c.translate(fx,fy);c.rotate(.5);c.beginPath();c.roundRect(-17,-15,34,30,12);c.fill();c.stroke();c.lineWidth=2.5;c.beginPath();for(const k of[-6,1,8])c.moveTo(k,-13),c.lineTo(k,-5);c.stroke();c.restore() + if(hit){c.fillStyle=ST;c.lineWidth=4;for(const[a,r]of[[-2,15],[-1.1,12],[-.2,10]]){const q=1-u*1.6;star(c,fx-4+cos(a)*(28+14*(1-q)),fy-8+sin(a)*(28+14*(1-q)),r*q,a)}} +} diff --git a/gen/uianime/folder/dust.js b/gen/uianime/folder/dust.js new file mode 100644 index 0000000..14b609c --- /dev/null +++ b/gen/uianime/folder/dust.js @@ -0,0 +1,48 @@ +// lavender haired office girl in round glasses flips open an old folder, a cloud of dust bursts out and she squeezes her eyes shut coughing +const{sin,cos,PI,max,min}=Math,T=2*PI +export const frames=20,delay=85 +const SKIN='#ffe3d1',HAIR='#b197fc',HD='#845ef7',HL='#e5dbff',EYE='#845ef7',ED='#5f3dc4',BL='#ffa8a8',JK='#748ffc',TIE='#fa5252',FD='#ffd8a8',FDD='#e0a96d',DU='#e9ecef',MO='#c92a2a' +const E=x=>x<=0?0:x>=1?1:x*x*(3-2*x) +const ds=(c,a,b,s,f)=>{for(const[l,k]of[[a,'#111'],[b,s]])c.lineWidth=l,c.strokeStyle=k,c.beginPath(),f(),c.stroke();c.strokeStyle='#111'} +const puff=(c,x,y,s)=>{c.fillStyle=DU;c.lineWidth=4;c.beginPath();for(const[ox,oy,r]of[[-10,3,10],[2,-5,12],[13,4,9]])c.moveTo(x+(ox+r)*s,y+oy*s),c.arc(x+ox*s,y+oy*s,r*s,0,T);c.stroke();c.fill()} +const eye=(c,x,y,d)=>{ + c.fillStyle='#fff';c.beginPath();c.ellipse(x,y,14,17,0,0,T);c.fill() + c.save();c.clip();c.beginPath();c.ellipse(x,y+3,11.5,15,0,0,T);c.fillStyle=EYE;c.fill();c.lineWidth=2.5;c.stroke() + c.fillStyle=ED;c.beginPath();c.ellipse(x,y-7,13,9,0,0,T);c.fill() + c.fillStyle='#111';c.beginPath();c.ellipse(x,y+4,5.5,7.5,0,0,T);c.fill() + c.fillStyle='#fff';c.beginPath();c.arc(x-4,y-3,4.5,0,T);c.fill();c.beginPath();c.arc(x+5,y+9,2,0,T);c.fill();c.restore() + c.lineWidth=7;c.beginPath();c.moveTo(x-16,y-6);c.quadraticCurveTo(x,y-20,x+16,y-6);c.moveTo(x+d*15,y-7);c.lineTo(x+d*21,y-12);c.stroke() +} +export default(c,t,i)=>{ + const op=E((t-.14)/.1)-E((t-.84)/.1),du=t>.24&&t<.86,cg=t>.3&&t<.84,jl=cg&&i%3==0?1:0,dz=E((t-.24)/.2)*(1-E((t-.62)/.22)) + c.save();c.translate(128,150+3*jl);c.scale(.76,.76);c.translate(-128,-186) + c.lineWidth=8;c.fillStyle=HD;c.beginPath();c.moveTo(128,34);c.bezierCurveTo(200,34,214,104,206,180);c.quadraticCurveTo(206,214,184,212);c.lineTo(72,212);c.quadraticCurveTo(50,214,50,180);c.bezierCurveTo(42,104,56,34,128,34);c.fill();c.stroke() + c.fillStyle=JK;c.beginPath();c.moveTo(100,190);c.quadraticCurveTo(54,198,44,300);c.lineTo(212,300);c.quadraticCurveTo(202,198,156,190);c.closePath();c.fill();c.stroke() + c.fillStyle='#fff';c.beginPath();c.moveTo(104,190);c.lineTo(128,240);c.lineTo(152,190);c.closePath();c.fill();c.stroke() + c.fillStyle=SKIN;c.beginPath();c.moveTo(116,166);c.lineTo(116,192);c.lineTo(128,204);c.lineTo(140,192);c.lineTo(140,166);c.fill();c.beginPath();c.moveTo(116,166);c.lineTo(116,190);c.moveTo(140,166);c.lineTo(140,190);c.stroke() + c.fillStyle=TIE;c.lineWidth=6;c.beginPath();c.moveTo(122,206);c.lineTo(134,206);c.lineTo(138,236);c.lineTo(128,246);c.lineTo(118,236);c.closePath();c.fill();c.stroke() + c.lineWidth=8;c.fillStyle=SKIN;c.beginPath();c.moveTo(74,96);c.bezierCurveTo(70,152,100,184,128,186);c.bezierCurveTo(156,184,186,152,182,96);c.bezierCurveTo(182,44,74,44,74,96);c.fill();c.stroke() + if(cg){c.lineWidth=7;c.beginPath();c.moveTo(91,130);c.lineTo(113,141);c.lineTo(91,151);c.moveTo(165,130);c.lineTo(143,141);c.lineTo(165,151);c.stroke() + c.lineWidth=5;c.fillStyle=MO;c.beginPath();c.ellipse(128,172,jl?11:8,jl?11:6,0,0,T);c.fill();c.stroke()} + else{eye(c,103,140,-1);eye(c,153,140,1);c.lineWidth=5;c.beginPath();c.moveTo(121,170);c.quadraticCurveTo(128,166,135,170);c.stroke()} + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*46,164,12,6,0,0,T),c.fill() + c.lineWidth=6;c.beginPath();for(const x of[103,153])c.moveTo(x+23,140),c.arc(x,140,23,0,T);c.moveTo(126,138);c.quadraticCurveTo(128,134,130,138);c.stroke() + c.strokeStyle='#fff';c.lineWidth=4;c.beginPath();for(const x of[103,153])c.moveTo(x+12,124),c.lineTo(x+17,129);c.stroke();c.strokeStyle='#111' + c.lineWidth=8;c.fillStyle=HAIR;c.beginPath();c.moveTo(66,160) + c.bezierCurveTo(48,74,88,38,128,38);c.bezierCurveTo(168,38,208,74,190,160) + c.quadraticCurveTo(188,124,182,108);c.quadraticCurveTo(174,110,166,100);c.quadraticCurveTo(158,110,146,112);c.quadraticCurveTo(140,100,130,96) + c.quadraticCurveTo(122,108,110,112);c.quadraticCurveTo(104,102,96,98);c.quadraticCurveTo(88,108,76,108);c.quadraticCurveTo(68,128,66,160);c.closePath();c.fill();c.stroke() + c.strokeStyle=HL;c.lineWidth=7;for(const[a,e]of[[1.24,1.36],[1.44,1.52],[1.62,1.74]])c.beginPath(),c.arc(128,104,56,PI*a,PI*e),c.stroke() + c.strokeStyle='#111';c.restore() + // folder: back, empty inside, cover flipping up on its top edge + c.lineWidth=6;c.fillStyle=FDD;c.beginPath();c.moveTo(56,182);c.lineTo(56,250);c.lineTo(200,250);c.lineTo(200,182);c.lineTo(122,182);c.lineTo(112,166);c.lineTo(66,166);c.quadraticCurveTo(56,166,56,176);c.closePath();c.fill();c.stroke() + c.fillStyle='#f4c38a';c.lineWidth=4;c.beginPath();c.rect(62,190,132,54);c.fill() + const s=1-1.45*op + c.save();c.translate(0,190);c.scale(1,s);c.beginPath();c.rect(56,0,144,60);c.restore() + c.fillStyle=s>0?FD:'#fff0d6';c.lineWidth=6;c.fill();c.stroke() + c.fillStyle=SKIN;c.lineWidth=5;for(const x of[56,200])c.beginPath(),c.ellipse(x,224,11,13,0,0,T),c.fill(),c.stroke() + // dust bursting up into her face + if(du){for(const[x0,y0,dx,dy,o]of[[96,190,-50,-96,0],[128,196,0,-40,.12],[160,190,50,-96,.06],[104,196,-72,-40,.2],[152,196,72,-44,.16]]){const p=min(1,max(0,(t-.24-o*.4)/.4)),s2=(.4+.9*p)*(1-E((t-.62)/.22));if(s2>.08)puff(c,x0+dx*p,y0+dy*p,s2)} + c.fillStyle='#adb5bd';c.lineWidth=2.5;for(let k=0;k<8;k++){const p=(t*3+k/8)%1,x=128+cos(k*2.3)*(30+70*p),y=190-90*p+20*sin(k);if(dz>.1)c.beginPath(),c.arc(x,y,3*dz,0,T),c.fill(),c.stroke()}} + if(cg&&jl)for(const d of[-1,1])ds(c,7,3,'#fff',()=>{c.moveTo(128+d*30,128);c.lineTo(128+d*44,120)}) +} diff --git a/gen/uianime/loading/fishing.js b/gen/uianime/loading/fishing.js new file mode 100644 index 0000000..61cfa27 --- /dev/null +++ b/gen/uianime/loading/fishing.js @@ -0,0 +1,56 @@ +// patient green-haired girl in a straw hat fishing from the shore, her bobber bobbing on the pond with spreading ripples while she waits for a bite +const{sin,cos,PI,max,min,exp}=Math,T=2*PI +export const frames=16,delay=90 +const SKIN='#ffe3d1',HAIR='#69db7c',HD='#2f9e44',HL='#d3f9d8',EYE='#a9744f',ED='#6f4518',HAT='#ffe066',HTD='#e8b93c',RIB='#fa5252',TOP='#ff8fab',TD='#f06595',WAT='#a5d8ff',WD='#74c0fc',ROD='#a9744f',BL='#ffa8a8',Z=.8 +const eye=(c,x,y,d)=>{ + c.fillStyle='#fff';c.beginPath();c.ellipse(x,y,14,17,0,0,T);c.fill() + c.save();c.beginPath();c.ellipse(x,y,14,17,0,0,T);c.clip();c.beginPath();c.ellipse(x+4,y+4,11.5,15,0,0,T);c.fillStyle=EYE;c.fill();c.lineWidth=2.5;c.stroke() + c.fillStyle=ED;c.beginPath();c.ellipse(x+4,y-6,13,10,0,0,T);c.fill() + c.fillStyle='#111';c.beginPath();c.ellipse(x+5,y+6,5.5,7.5,0,0,T);c.fill() + c.fillStyle='#fff';c.beginPath();c.arc(x,y-1,4.5,0,T);c.fill();c.beginPath();c.arc(x+9,y+10,2,0,T);c.fill();c.restore() + c.lineWidth=7;c.beginPath();c.moveTo(x-16,y-6);c.quadraticCurveTo(x,y-20,x+16,y-6);c.moveTo(x+d*15,y-7);c.lineTo(x+d*21,y-12);c.stroke() +} +export default(c,t,i)=>{ + const nb=i==9||i==11,by=210+4*sin(2*T*t)+(nb?10:0),bx=196,tx=234,ty=34,bk=i==4 + c.lineWidth=6;c.fillStyle=WAT;c.beginPath();c.ellipse(178,218,72,30,0,0,T);c.fill();c.stroke() + c.save();c.clip();c.fillStyle='#4dabf7';const fa=T*t,fx=184+34*cos(fa),fy=224+8*sin(fa),fd=-sin(fa)<0?-1:1;c.beginPath();c.ellipse(fx,fy,14,6,0,0,T);c.moveTo(fx-fd*12,fy);c.lineTo(fx-fd*22,fy-6);c.lineTo(fx-fd*22,fy+6);c.fill();c.restore() + c.strokeStyle=WD;c.lineWidth=4;c.beginPath();c.moveTo(126,230);c.lineTo(146,230);c.moveTo(214,238);c.lineTo(232,238);c.stroke() + c.strokeStyle='#fff';for(const o of[0,.5]){const p=(t*2+o)%1;c.lineWidth=4*(1-p)+.5;c.beginPath();c.ellipse(bx,214,14+26*p,4+9*p,0,0,T);c.stroke()} + c.strokeStyle='#111' + for(const[w,s]of[[5,'#111'],[2,'#fff']])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),c.moveTo(tx,ty),c.quadraticCurveTo(tx+2,ty+100,bx,by-18),c.stroke() + c.strokeStyle='#111';c.lineWidth=4;c.beginPath();c.moveTo(bx,by-18);c.lineTo(bx,by-9);c.stroke() + c.save();c.beginPath();c.arc(bx,by,13,0,T);c.clip();c.fillStyle='#fff';c.fill();c.fillStyle=RIB;c.fillRect(bx-14,by-14,28,14);c.restore() + c.lineWidth=5;c.beginPath();c.arc(bx,by,13,0,T);c.stroke();c.beginPath();c.moveTo(bx-13,by);c.lineTo(bx+13,by);c.stroke();c.strokeStyle='#fff';c.lineWidth=3.5;c.beginPath();c.arc(bx,by,7,PI*1.15,PI*1.45);c.stroke();c.strokeStyle='#111' + c.save();c.beginPath();c.rect(bx-20,by+3,40,20);c.clip();c.fillStyle=WAT;c.beginPath();c.ellipse(bx,by+12,17,8,0,0,T);c.fill();c.restore() + if(nb){c.fillStyle=WAT;c.lineWidth=3.5;for(const d of[-1,1]){c.beginPath();c.ellipse(bx+d*22,196,4,6,d*.5,0,T);c.fill();c.stroke()}} + c.save();c.translate(86,262);c.scale(Z,Z);c.translate(-128,-262) + c.lineWidth=7;c.fillStyle=HD;c.beginPath();c.moveTo(128,36);c.bezierCurveTo(196,36,206,96,198,150);c.lineTo(58,150);c.bezierCurveTo(50,96,60,36,128,36);c.fill();c.stroke() + c.fillStyle=TOP;c.beginPath();c.moveTo(100,190);c.quadraticCurveTo(62,198,54,262);c.lineTo(202,262);c.quadraticCurveTo(194,198,156,190);c.closePath();c.fill();c.stroke() + c.fillStyle='#fff';c.beginPath();c.moveTo(104,190);c.quadraticCurveTo(110,212,128,206);c.quadraticCurveTo(146,212,152,190);c.closePath();c.fill();c.lineWidth=6;c.stroke() + c.fillStyle=SKIN;c.beginPath();c.moveTo(116,168);c.lineTo(116,194);c.quadraticCurveTo(128,204,140,194);c.lineTo(140,168);c.fill();c.beginPath();c.moveTo(116,168);c.lineTo(116,192);c.moveTo(140,168);c.lineTo(140,192);c.stroke() + c.fillStyle=HAIR;c.lineWidth=7;for(let k=4;k>=0;k--)c.beginPath(),c.ellipse(64+k*2,156+k*16,12-k*.5,10,k%2?.5:-.5,0,T),c.fill(),c.stroke() + c.fillStyle=RIB;c.lineWidth=5;c.beginPath();c.ellipse(72,236,9,6,0,0,T);c.fill();c.stroke() + c.lineWidth=7;c.fillStyle=SKIN;c.beginPath();c.moveTo(74,96);c.bezierCurveTo(70,152,100,184,128,186);c.bezierCurveTo(156,184,186,152,182,96);c.bezierCurveTo(182,44,74,44,74,96);c.fill();c.stroke() + if(bk){c.lineWidth=6;for(const x of[103,153])c.beginPath(),c.moveTo(x-14,144),c.quadraticCurveTo(x,151,x+14,144),c.stroke()} + else{eye(c,103,140,-1);eye(c,153,140,1)} + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*42,162,12,6,0,0,T),c.fill() + c.lineWidth=3;for(const d of[-1,1])for(const k of[-5,0,5])c.beginPath(),c.moveTo(128+d*42+k-2,165),c.lineTo(128+d*42+k+2,159),c.stroke() + c.lineWidth=4;c.beginPath();c.arc(130,164,7,.15*PI,.85*PI);c.stroke() + c.lineWidth=7;c.fillStyle=HAIR;c.beginPath();c.moveTo(70,146) + c.bezierCurveTo(54,74,88,36,128,36);c.bezierCurveTo(168,36,202,74,186,146) + c.quadraticCurveTo(186,116,178,102);c.quadraticCurveTo(170,104,164,112);c.quadraticCurveTo(160,98,150,92);c.quadraticCurveTo(144,104,136,110) + c.quadraticCurveTo(132,96,124,90);c.quadraticCurveTo(118,102,110,108);c.quadraticCurveTo(106,96,96,94);c.quadraticCurveTo(90,104,86,112) + c.quadraticCurveTo(80,104,78,102);c.quadraticCurveTo(70,120,70,146);c.closePath();c.fill();c.stroke() + c.save();c.translate(128,58);c.rotate(-.12) + c.fillStyle=HAT;c.beginPath();c.ellipse(0,8,90,19,0,0,T);c.fill();c.stroke() + c.beginPath();c.moveTo(-52,10);c.bezierCurveTo(-52,-44,52,-44,52,10);c.quadraticCurveTo(0,20,-52,10);c.fill();c.stroke() + c.fillStyle=RIB;c.beginPath();c.moveTo(-52,-2);c.quadraticCurveTo(0,8,52,-2);c.lineTo(52,10);c.quadraticCurveTo(0,20,-52,10);c.closePath();c.fill();c.stroke() + c.strokeStyle=HTD;c.lineWidth=4;c.beginPath();c.ellipse(0,8,76,13,0,.1*PI,.9*PI);c.stroke() + c.strokeStyle='#fff';c.lineWidth=6;c.beginPath();c.arc(0,4,36,PI*1.2,PI*1.42);c.stroke();c.strokeStyle='#111' + c.restore() + c.restore() + for(const[w,s]of[[13,'#111'],[6,ROD]])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),c.moveTo(122,236),c.lineTo(tx,ty),c.stroke() + c.strokeStyle='#111';c.fillStyle='#ced4da';c.lineWidth=4.5;c.beginPath();c.arc(140,210,9,0,T);c.fill();c.stroke() + for(const[l,s]of[[28,'#111'],[17,TOP]])c.lineWidth=l,c.strokeStyle=s,c.beginPath(),c.moveTo(96,262),c.lineTo(124,228),c.moveTo(170,262),c.lineTo(148,204),c.stroke() + c.strokeStyle='#111';c.lineWidth=5;c.fillStyle=SKIN;for(const[x,y]of[[126,226],[148,202]])c.beginPath(),c.ellipse(x,y,11,10,-.6,0,T),c.fill(),c.stroke() +} diff --git a/gen/uianime/loading/pray.js b/gen/uianime/loading/pray.js new file mode 100644 index 0000000..0a2bb6c --- /dev/null +++ b/gen/uianime/loading/pray.js @@ -0,0 +1,37 @@ +// purple haired shrine maiden squeezing her eyes shut and praying hard while a ring of loading dots spins around her and sparkles twinkle +const{sin,cos,PI,min}=Math,T=2*PI +export const frames=12,delay=80 +const SKIN='#ffe3d1',HAIR='#9775fa',HD='#6741d9',HL='#e5dbff',RED='#fa5252',BL='#ff8fab',SW='#a5d8ff',DOT=['#fd7e14','#fcc419','#ffe066','#fff3bf'] +const ds=(c,a,b,s,f)=>{for(const[l,k]of[[a,'#111'],[b,s]])c.lineWidth=l,c.strokeStyle=k,c.beginPath(),f(),c.stroke();c.strokeStyle='#111'} +const spark=(c,x,y,r)=>{c.beginPath();c.moveTo(x,y-r);for(const[a,b]of[[1,0],[0,1],[-1,0],[0,-1]])c.quadraticCurveTo(x+(a+b)*r*.15,y+(b-a)*r*.15,x+a*r,y+b*r);c.fill();c.stroke()} +export default(c,t,i)=>{ + const n=12 + for(let k=0;k{c.lineWidth=3.5;for(const[x,y,o,f]of a){c.fillStyle=f;const s=sin(T*((t+o)%1));if(s>0)spark(c,x,y,19*s)}} + sp([[28,30,0,'#fff'],[228,32,.5,'#ffe066']]) + c.lineWidth=6;c.fillStyle=HD;c.beginPath();c.moveTo(128,34);c.bezierCurveTo(198,34,212,96,206,150);c.lineTo(212,250);c.lineTo(44,250);c.lineTo(50,150);c.bezierCurveTo(44,96,58,34,128,34);c.fill();c.stroke() + c.fillStyle='#fff';c.beginPath();c.moveTo(100,190);c.quadraticCurveTo(62,198,54,250);c.lineTo(202,250);c.quadraticCurveTo(194,198,156,190);c.closePath();c.fill();c.stroke() + ds(c,16,8,RED,()=>{c.moveTo(102,192);c.lineTo(128,236);c.lineTo(154,192)}) + c.lineWidth=5;c.beginPath();c.moveTo(94,194);c.lineTo(132,250);c.moveTo(162,194);c.lineTo(128,240);c.stroke() + c.fillStyle=SKIN;c.beginPath();c.moveTo(116,168);c.lineTo(116,192);c.quadraticCurveTo(128,204,140,192);c.lineTo(140,168);c.fill();c.beginPath();c.moveTo(116,168);c.lineTo(116,190);c.moveTo(140,168);c.lineTo(140,190);c.stroke() + c.lineWidth=6;c.fillStyle=SKIN;c.beginPath();c.moveTo(74,96);c.bezierCurveTo(70,152,100,184,128,186);c.bezierCurveTo(156,184,186,152,182,96);c.bezierCurveTo(182,44,74,44,74,96);c.fill();c.stroke() + c.lineWidth=5.5;c.beginPath();c.moveTo(90,130);c.lineTo(113,140);c.lineTo(90,150);c.moveTo(166,130);c.lineTo(143,140);c.lineTo(166,150);c.stroke() + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*42,160,14,7,0,0,T),c.fill() + c.lineWidth=2.5;for(const d of[-1,1])for(const k of[-6,-1,4])c.beginPath(),c.moveTo(128+d*42+k-2,164),c.lineTo(128+d*42+k+2,156),c.stroke() + c.lineWidth=3.5;c.beginPath();c.moveTo(120,170);for(let k=1;k<=5;k++)c.lineTo(120+k*3.2,k%2?173:169);c.stroke() + c.lineWidth=6;c.fillStyle=HAIR;c.beginPath();c.moveTo(64,206);c.lineTo(68,150) + c.bezierCurveTo(52,74,88,36,128,36);c.bezierCurveTo(168,36,204,74,188,150);c.lineTo(192,206);c.quadraticCurveTo(182,200,176,206) + c.quadraticCurveTo(180,124,176,104);c.quadraticCurveTo(168,104,162,112);c.quadraticCurveTo(158,98,148,92);c.quadraticCurveTo(142,104,134,110) + c.quadraticCurveTo(130,96,122,90);c.quadraticCurveTo(116,102,108,108);c.quadraticCurveTo(104,96,94,94);c.quadraticCurveTo(88,104,82,108) + c.quadraticCurveTo(76,124,80,206);c.quadraticCurveTo(72,200,64,206);c.closePath();c.fill();c.stroke() + c.strokeStyle=HL;c.lineWidth=5;for(const[a,e]of[[1.24,1.36],[1.44,1.52],[1.62,1.74]])c.beginPath(),c.arc(128,104,56,PI*a,PI*e),c.stroke() + c.strokeStyle='#111';c.fillStyle=RED;c.lineWidth=5 + for(const d of[-1,1])c.beginPath(),c.moveTo(168,62),c.quadraticCurveTo(168+d*10,38-d*6,168+d*28,48+d*4),c.quadraticCurveTo(168+d*24,70,168,62),c.fill(),c.stroke() + c.beginPath();c.arc(168,62,6,0,T);c.fill();c.stroke() + c.fillStyle=SW;c.lineWidth=4;const sy=104+3*sin(T*t);c.beginPath();c.moveTo(62,sy-12);c.quadraticCurveTo(70,sy,62,sy+6);c.quadraticCurveTo(54,sy,62,sy-12);c.fill();c.stroke() + for(const d of[-1,1])ds(c,34,23,'#fff',()=>{c.moveTo(128+d*82,256);c.lineTo(128+d*22,238)}) + c.lineWidth=5;c.fillStyle=SKIN + for(const d of[-1,1]){c.beginPath();c.moveTo(128,166);c.bezierCurveTo(128+d*22,176,128+d*22,208,128+d*18,236);c.lineTo(128,236);c.closePath();c.fill();c.stroke()} + c.lineWidth=3;for(const d of[-1,1])for(const y of[188,200])c.beginPath(),c.moveTo(128+d*19,y),c.quadraticCurveTo(128+d*14,y-1,128+d*11,y-5),c.stroke() + c.lineWidth=4;c.beginPath();c.ellipse(133,220,5,12,.3,0,T);c.fill();c.stroke() +} diff --git a/gen/uianime/loading/push.js b/gen/uianime/loading/push.js new file mode 100644 index 0000000..7f10da0 --- /dev/null +++ b/gen/uianime/loading/push.js @@ -0,0 +1,47 @@ +// blue-haired girl in a hard hat and overalls straining with gritted teeth to shove a long heavy progress bar along the ground, its striped fill crawling, sweat flying +const{sin,cos,PI,min,max,round}=Math,T=2*PI +export const frames=12,delay=90 +const SKIN='#ffe3d1',HAIR='#5c7cfa',HD='#3b5bdb',HL='#dbe4ff',HAT='#ffd43b',HTD='#f59f00',OV='#ff922b',OD='#e8590c',SHOE='#845ef7',BLK='#fff',FILL='#69db7c',FD='#2f9e44',BL='#ffa8a8',SW='#a5d8ff' +const dbl=(c,w,col,pts)=>{for(const[lw,s]of[[w,'#111'],[w-9,col]]){c.lineWidth=lw;c.strokeStyle=s;c.beginPath();c.moveTo(...pts[0]);for(const p of pts.slice(1))c.lineTo(...p);c.stroke()}c.strokeStyle='#111'} +export default(c,t,i)=>{ + const j=i%2 + for(const[w,st]of[[7,'#111'],[2.5,'#fff']])c.lineWidth=w,c.strokeStyle=st,c.beginPath(),c.moveTo(8,242),c.lineTo(248,242),c.stroke() + c.strokeStyle='#111' + c.lineWidth=6;c.fillStyle='#ced4da';c.beginPath();c.roundRect(92,186,154,52,26);c.fill();c.stroke() + c.fillStyle='#fff';c.beginPath();c.roundRect(92,178,154,52,26);c.fill();c.stroke() + c.save();c.beginPath();c.roundRect(104,190,130,28,14);c.clip();c.fillStyle='#e9ecef';c.fillRect(0,0,256,256);c.fillStyle=FILL;c.fillRect(100,186,82,36) + c.fillStyle=FD;const so=18*((t*2)%1);for(let k=-1;k<6;k++)c.beginPath(),c.moveTo(86+k*18+so,220),c.lineTo(96+k*18+so,220),c.lineTo(112+k*18+so,188),c.lineTo(102+k*18+so,188),c.closePath(),c.fill() + c.fillStyle='#e9ecef';c.fillRect(182,186,60,36);c.restore() + c.lineWidth=4.5;c.beginPath();c.moveTo(182,191);c.lineTo(182,217);c.stroke();c.beginPath();c.roundRect(104,190,130,28,14);c.stroke() + c.strokeStyle='#fff';c.lineWidth=4;c.beginPath();c.moveTo(118,196);c.lineTo(150,196);c.stroke() + for(const[l,s]of[[7,'#111'],[2.5,'#fff']]){c.lineWidth=l;c.strokeStyle=s;c.beginPath();for(const k of[0,1,2])c.moveTo(214+k*12,170-k*3),c.lineTo(220+k*12,154-k*3);c.stroke()} + c.strokeStyle='#111' + const sh=[80,164],hip=[48,198] + dbl(c,20,SKIN,[hip,[34,216],[24,232]]);c.fillStyle=SHOE;c.lineWidth=5;c.beginPath();c.ellipse(22,236,12,7,-.2,0,T);c.fill();c.stroke() + dbl(c,19,'#fff',[[sh[0]-2,sh[1]+4],[86,190],[96,200]]);c.lineWidth=5;c.fillStyle=SKIN;c.beginPath();c.ellipse(98,199,7,10,0,0,T);c.fill();c.stroke() + c.save();c.translate(...hip);c.rotate(.75);c.lineWidth=6;c.fillStyle=OV;c.beginPath();c.roundRect(-18,-50,36,58,12);c.fill();c.stroke() + c.fillStyle='#fff';c.beginPath();c.moveTo(-14,-48);c.lineTo(14,-48);c.lineTo(9,-34);c.lineTo(-9,-34);c.closePath();c.fill();c.stroke() + c.fillStyle=OD;c.lineWidth=4;c.beginPath();c.roundRect(-8,-26,16,12,3);c.fill();c.stroke();c.restore() + dbl(c,22,OV,[hip,[76,212],[70,232]]);c.fillStyle=SHOE;c.lineWidth=5;c.beginPath();c.ellipse(78,236,13,7,0,0,T);c.fill();c.stroke() + c.save();c.translate(94,104);c.rotate(.12);c.scale(.9,.9) + c.lineWidth=7;c.fillStyle=HAIR;c.beginPath();c.moveTo(-40,-30);c.bezierCurveTo(-64,-40,-82,-20,-86,6+3*j);c.quadraticCurveTo(-72,0,-66,6);c.quadraticCurveTo(-76,20,-72,34+3*j);c.quadraticCurveTo(-60,16,-44,6);c.closePath();c.fill();c.stroke() + c.fillStyle=HD;c.beginPath();c.moveTo(10,-62);c.bezierCurveTo(-40,-66,-62,-40,-58,0);c.quadraticCurveTo(-54,40,-30,52);c.lineTo(20,40);c.closePath();c.fill();c.stroke() + c.fillStyle=SKIN;c.beginPath();c.moveTo(-42,-6);c.bezierCurveTo(-42,40,-4,60,22,60);c.bezierCurveTo(44,58,58,30,58,-6);c.bezierCurveTo(58,-60,-42,-60,-42,-6);c.fill();c.stroke() + c.lineWidth=6;c.beginPath();c.moveTo(-6,0);c.lineTo(12,10);c.lineTo(-6,20);c.moveTo(50,2);c.lineTo(34,11);c.lineTo(50,20);c.stroke() + c.fillStyle=BL;c.beginPath();c.ellipse(-18,32,11,5.5,0,0,T);c.fill() + c.lineWidth=2.5;for(const k of[-5,0,5])c.beginPath(),c.moveTo(-18+k-2,35),c.lineTo(-18+k+2,29),c.stroke() + c.fillStyle='#fff';c.lineWidth=4;c.beginPath();c.roundRect(10,30,34,16,6);c.fill();c.stroke() + c.lineWidth=3;c.beginPath();c.moveTo(11,38);c.lineTo(43,38);for(const x of[19,27,35])c.moveTo(x,31),c.lineTo(x,45);c.stroke() + c.lineWidth=7;c.fillStyle=HAIR;c.beginPath();c.moveTo(-46,12) + c.bezierCurveTo(-56,-40,-26,-62,10,-62);c.bezierCurveTo(46,-62,68,-40,62,-8) + c.lineTo(54,-12);c.lineTo(50,-4);c.lineTo(40,-16);c.lineTo(32,-6);c.lineTo(22,-18);c.lineTo(14,-8);c.lineTo(4,-20);c.lineTo(-6,-8) + c.lineTo(-16,-20);c.lineTo(-24,-6);c.lineTo(-32,-14);c.lineTo(-38,4);c.closePath();c.fill();c.stroke() + c.fillStyle=HAT;c.beginPath();c.moveTo(-54,-22);c.bezierCurveTo(-56,-86,70,-90,66,-22);c.closePath();c.fill();c.stroke() + c.fillStyle=HTD;c.beginPath();c.roundRect(-60,-30,138,13,6);c.fill();c.stroke() + c.beginPath();c.moveTo(0,-74);c.quadraticCurveTo(6,-50,4,-30);c.lineTo(18,-30);c.quadraticCurveTo(20,-50,14,-76);c.fill();c.stroke() + c.strokeStyle='#fff';c.lineWidth=6;c.beginPath();c.arc(4,-30,40,PI*1.18,PI*1.36);c.stroke();c.strokeStyle='#111' + c.restore() + dbl(c,20,'#fff',[[sh[0]+2,sh[1]+4],[90,206],[96,218]]);c.lineWidth=5;c.fillStyle=SKIN;c.beginPath();c.ellipse(98,218,7,10,0,0,T);c.fill();c.stroke() + for(const o of[0,.5]){const p=(t*2+o)%1,x=30-18*p,y=62-24*p+40*p*p,sc=1-p*.4;c.fillStyle=SW;c.lineWidth=4;c.save();c.translate(x,y);c.rotate(-1.1+p);c.scale(sc,sc);c.beginPath();c.moveTo(0,-11);c.quadraticCurveTo(9,2,0,7);c.quadraticCurveTo(-9,2,0,-11);c.fill();c.stroke();c.restore()} + for(const o of[0,.5]){const p=(t*2+o)%1,x=18+20*(1-p),r=3+7*p;c.fillStyle='#fff';c.lineWidth=4.5;c.beginPath();c.arc(x,226-6*p,r,0,T);c.fill();c.stroke()} +} diff --git a/gen/uianime/loading/run.js b/gen/uianime/loading/run.js new file mode 100644 index 0000000..e118334 --- /dev/null +++ b/gen/uianime/loading/run.js @@ -0,0 +1,57 @@ +// chibi girl with a red ponytail and sweatband sprinting in place on a striped progress bar that rolls under her feet like a treadmill +const{sin,cos,PI,max,min,sqrt,round,abs}=Math,T=2*PI +export const frames=12,delay=60 +const SKIN='#ffe3d1',HAIR='#ff6b6b',HD='#e03131',HL='#ffc9c9',EYE='#20c997',ED='#087f5b',TEE='#fff',SHO='#4dabf7',SHD='#1c7ed6',SHOE='#f783ac',BAR='#e7f5ff',ST='#69db7c',SD='#40c057',BL='#ffa8a8',SW='#a5d8ff',Z=.8 +const knee=(hx,hy,fx,fy,l)=>{let vx=fx-hx,vy=fy-hy,d=sqrt(vx*vx+vy*vy);if(d>2*l-.5){const k=(2*l-.5)/d;vx*=k;vy*=k;d=2*l-.5}const h=sqrt(l*l-d*d/4);return[hx+vx/2+vy/d*h,hy+vy/2-vx/d*h,hx+vx,hy+vy]} +const dbl=(c,w,col,pts)=>{for(const[lw,s]of[[w,'#111'],[w-9,col]]){c.lineWidth=lw;c.strokeStyle=s;c.beginPath();c.moveTo(...pts[0]);for(const p of pts.slice(1))c.lineTo(...p);c.stroke()}c.strokeStyle='#111'} +export default(c,t)=>{ + const a=t*T,b=round(-6*abs(sin(a))),fl=k=>5*sin(2*a+k) + c.lineWidth=6;c.fillStyle=BAR;c.beginPath();c.roundRect(12,200,232,44,22);c.fill();c.stroke() + c.save();c.beginPath();c.roundRect(22,209,212,26,13);c.clip();c.fillStyle=ST;c.fillRect(0,0,256,256) + c.fillStyle=SD;const o=-(t*2%1)*28;for(let x=o;x<260;x+=28)c.beginPath(),c.moveTo(x,236),c.lineTo(x+14,236),c.lineTo(x+28,208),c.lineTo(x+14,208),c.closePath(),c.fill() + c.restore();c.lineWidth=4;c.beginPath();c.roundRect(22,209,212,26,13);c.stroke() + c.strokeStyle='#fff';c.lineWidth=4;c.beginPath();c.moveTo(34,215);c.lineTo(70,215);c.stroke();c.strokeStyle='#111' + for(const[y,o,l]of[[70,0,40],[112,.5,56],[150,.25,34]]){const p=(t*2+o)%1,x=46-50*p,w=l*min(1,(1-p)*2.5);if(w>4)dbl(c,13,'#fff',[[x,y],[x-w,y]])} + c.save();c.translate(128,200);c.scale(Z,Z);c.translate(-118,-238) + const hip=[118,192+b],sh=[122,150+b] + const leg=(ph,front)=>{const s=sin(a+ph),cc=cos(a+ph),[kx,ky,fx,fy]=knee(hip[0],hip[1],hip[0]+34*s,236-26*max(0,cc),28) + dbl(c,22,SKIN,[hip,[kx,ky],[fx,fy-4]]);dbl(c,21,'#fff',[[fx+(kx-fx)*.2,fy+(ky-fy)*.2],[fx,fy-5]]) + c.fillStyle=front?SHOE:'#e64980';c.lineWidth=5;c.beginPath();c.ellipse(fx+6,fy-3,14,8,s*.25,0,T);c.fill();c.stroke()} + const arm=ph=>{const al=-1*sin(a+ph),ex=sh[0]+22*sin(al),ey=sh[1]+22*cos(al),hx=ex+20*sin(al+1.8),hy=ey+20*cos(al+1.8) + dbl(c,22,SKIN,[[sh[0],sh[1]+6],[ex,ey],[hx,hy]]);dbl(c,24,TEE,[sh,[sh[0]+8*sin(al),sh[1]+8*cos(al)+4]]) + c.lineWidth=5;c.fillStyle=SKIN;c.beginPath();c.arc(hx,hy,9,0,T);c.fill();c.stroke()} + leg(PI,0);arm(PI) + c.save();c.translate(132,80+b);c.scale(1.02,1.02) + c.lineWidth=6;c.fillStyle=HAIR;c.beginPath();c.moveTo(-26,-50);c.bezierCurveTo(-70,-70,-96,-40,-112,-16+fl(0));c.quadraticCurveTo(-96,-24,-88,-20);c.quadraticCurveTo(-100,-4,-106,14+fl(1));c.quadraticCurveTo(-76,0,-52,-16);c.closePath();c.fill();c.stroke() + c.strokeStyle=HL;c.lineWidth=4;c.beginPath();c.moveTo(-44,-50);c.quadraticCurveTo(-70,-54,-90,-34+fl(0)*.6);c.stroke();c.strokeStyle='#111' + c.fillStyle=HD;c.lineWidth=6;c.beginPath();c.moveTo(10,-62);c.bezierCurveTo(-40,-66,-62,-40,-58,0);c.quadraticCurveTo(-54,40,-30,52);c.lineTo(20,40);c.closePath();c.fill();c.stroke() + c.fillStyle='#fff';c.lineWidth=5;c.beginPath();c.arc(-30,-48,9,0,T);c.fill();c.stroke() + c.restore() + c.lineWidth=6;c.fillStyle=SHO;c.beginPath();c.moveTo(98,174+b);c.lineTo(146,174+b);c.lineTo(150,200+b);c.lineTo(122,204+b);c.lineTo(94,200+b);c.closePath();c.fill();c.stroke() + c.strokeStyle='#fff';c.lineWidth=3.5;c.beginPath();c.moveTo(99,190+b);c.lineTo(147,190+b);c.stroke();c.strokeStyle='#111' + c.fillStyle=TEE;c.beginPath();c.moveTo(102,140+b);c.quadraticCurveTo(92,160,96,180+b);c.lineTo(148,180+b);c.quadraticCurveTo(152,158,144,140+b);c.closePath();c.fill();c.stroke() + c.fillStyle=SHD;c.lineWidth=4;c.beginPath();c.moveTo(116,152+b);c.lineTo(122,146+b);c.lineTo(128,152+b);c.lineTo(134,146+b);c.stroke() + leg(0,1) + c.save();c.translate(132,80+b);c.scale(1.02,1.02) + c.lineWidth=6;c.fillStyle=SKIN;c.beginPath();c.moveTo(-6,46);c.lineTo(-6,62);c.lineTo(10,62);c.lineTo(10,46);c.fill() + c.beginPath();c.moveTo(-42,-6);c.bezierCurveTo(-42,40,-4,60,22,60);c.bezierCurveTo(44,58,58,30,58,-6);c.bezierCurveTo(58,-60,-42,-60,-42,-6);c.fill();c.stroke() + for(const[x,rx]of[[4,12],[42,9]]){ + c.fillStyle='#fff';c.beginPath();c.ellipse(x,10,rx,15,0,0,T);c.fill() + c.save();c.beginPath();c.ellipse(x,10,rx,15,0,0,T);c.clip();c.beginPath();c.ellipse(x+rx*.3,12,rx*.8,13,0,0,T);c.fillStyle=EYE;c.fill();c.lineWidth=2.5;c.stroke();c.fillStyle=ED;c.beginPath();c.ellipse(x+2,4,rx,8,0,0,T);c.fill() + c.fillStyle='#111';c.beginPath();c.ellipse(x+rx*.35,13,rx*.38,6,0,0,T);c.fill();c.fillStyle='#fff';c.beginPath();c.arc(x-1,6,3.5,0,T);c.fill();c.restore() + c.lineWidth=5.5;c.beginPath();c.moveTo(x-rx-2,-2);c.quadraticCurveTo(x,-10,x+rx+2,-2);c.stroke() + } + c.fillStyle=BL;c.beginPath();c.ellipse(-16,32,10,5,0,0,T);c.fill() + c.fillStyle='#c92a2a';c.lineWidth=3.5;c.beginPath();c.moveTo(22,38);c.quadraticCurveTo(30,36,36,40);c.quadraticCurveTo(32,52,24,48);c.closePath();c.fill();c.stroke() + c.lineWidth=6;c.fillStyle=HAIR;c.beginPath();c.moveTo(-46,14) + c.bezierCurveTo(-56,-40,-26,-66,10,-66);c.bezierCurveTo(46,-66,68,-40,62,-4) + c.lineTo(54,-10);c.lineTo(52,-2);c.lineTo(42,-14);c.lineTo(36,-4);c.lineTo(26,-18);c.lineTo(18,-6);c.lineTo(8,-20);c.lineTo(-2,-8) + c.lineTo(-12,-20);c.lineTo(-22,-6);c.lineTo(-30,-14);c.lineTo(-36,4);c.closePath();c.fill();c.stroke() + c.strokeStyle=HL;c.lineWidth=5;for(const[s,e]of[[1.2,1.32],[1.4,1.48],[1.58,1.7]])c.beginPath(),c.arc(10,-12,46,PI*s,PI*e),c.stroke() + c.strokeStyle='#111';c.fillStyle='#fff';c.lineWidth=5;c.beginPath();c.moveTo(-50,-30);c.quadraticCurveTo(10,-56,66,-26);c.lineTo(64,-14);c.quadraticCurveTo(10,-44,-50,-18);c.closePath();c.fill();c.stroke() + c.fillStyle=HAIR;c.beginPath();c.roundRect(20,-42,12,11,3);c.fill();c.stroke() + const p=(t*2)%1;c.fillStyle=SW;c.lineWidth=3.5;c.save();c.translate(-54-30*p,-36-16*p);c.rotate(-.9);c.scale(1-p*.5,1-p*.5);c.beginPath();c.moveTo(0,-10);c.quadraticCurveTo(8,2,0,6);c.quadraticCurveTo(-8,2,0,-10);c.fill();c.stroke();c.restore() + c.restore() + arm(0) + c.restore() +} diff --git a/gen/uianime/loading/sleepy.js b/gen/uianime/loading/sleepy.js new file mode 100644 index 0000000..f4ecac0 --- /dev/null +++ b/gen/uianime/loading/sleepy.js @@ -0,0 +1,32 @@ +// sleepy lavender bedhead girl in pajamas dozing off while she waits, head nodding, a nose bubble swelling and shrinking, a loading spinner turning above her head +const{sin,cos,PI}=Math,T=2*PI +export const frames=16,delay=90 +const SKIN='#ffe3d1',HAIR='#b197fc',HD='#7950f2',HL='#e5dbff',PJ='#96f2d7',PD='#20c997',MASK='#f783ac',BL='#ffa8a8',BUB='#d0ebff',SP=['#7950f2','#845ef7','#9775fa','#b197fc','#d0bfff','#e5dbff','#f3f0ff','#fff'],Z=.8 +export default(c,t,i)=>{ + const nod=.07+.05*Math.round(2*sin(T*t))/2,r=5+12*(1-cos(T*t))/2 + for(let k=0;k<8;k++){const a=(i-k)*T/8;c.fillStyle=SP[k];c.lineWidth=4.5;c.beginPath();c.arc(128+24*sin(a),34-24*cos(a),8.5-k*.6,0,T);c.fill();c.stroke()} + c.save();c.translate(128,252);c.scale(Z,Z);c.translate(-128,-252) + const head=f=>{c.save();c.translate(128,186);c.rotate(nod);c.translate(0,8*nod);c.translate(-128,-186);f();c.restore()} + head(()=>{c.lineWidth=7;c.fillStyle=HD;c.beginPath();c.moveTo(128,40);c.bezierCurveTo(200,40,212,100,204,160);c.quadraticCurveTo(212,182,196,190);c.lineTo(60,190);c.quadraticCurveTo(44,182,52,160);c.bezierCurveTo(44,100,56,40,128,40);c.fill();c.stroke()}) + c.lineWidth=7;c.fillStyle=PJ;c.beginPath();c.moveTo(100,194);c.quadraticCurveTo(60,202,52,252);c.lineTo(204,252);c.quadraticCurveTo(196,202,156,194);c.closePath();c.fill();c.stroke() + c.fillStyle=SKIN;c.beginPath();c.moveTo(116,170);c.lineTo(116,198);c.lineTo(128,212);c.lineTo(140,198);c.lineTo(140,170);c.fill();c.lineWidth=6;c.beginPath();c.moveTo(116,170);c.lineTo(116,196);c.moveTo(140,170);c.lineTo(140,196);c.stroke() + c.fillStyle='#fff';c.lineWidth=6;for(const d of[-1,1])c.beginPath(),c.moveTo(128,214),c.lineTo(128+d*30,194),c.lineTo(128+d*36,214),c.closePath(),c.fill(),c.stroke() + c.strokeStyle=PD;c.lineWidth=4;for(const d of[-1,1])c.beginPath(),c.moveTo(128+d*8,216),c.lineTo(128+d*28,197),c.stroke();c.strokeStyle='#111' + c.fillStyle='#ffd43b';c.lineWidth=5;for(const y of[228,246])c.beginPath(),c.arc(128,y,5,0,T),c.fill(),c.stroke() + head(()=>{ + c.lineWidth=7;c.fillStyle=SKIN;c.beginPath();c.moveTo(74,96);c.bezierCurveTo(70,152,100,184,128,186);c.bezierCurveTo(156,184,186,152,182,96);c.bezierCurveTo(182,44,74,44,74,96);c.fill();c.stroke() + c.lineWidth=6;for(const x of[103,153]){c.beginPath();c.arc(x,138,13,PI*.15,PI*.85);c.stroke();c.beginPath();c.moveTo(x+(x<128?-12:12),142);c.lineTo(x+(x<128?-18:18),139);c.stroke()} + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*42,162,13,6.5,0,0,T),c.fill() + c.lineWidth=4;c.fillStyle='#c92a2a';c.beginPath();c.ellipse(132,174,5,4.5,0,0,T);c.fill();c.stroke() + c.fillStyle=BUB;c.lineWidth=4;c.beginPath();c.arc(124-r*.85,157+r*.45,r,0,T);c.fill();c.stroke() + c.strokeStyle='#fff';c.lineWidth=3.5;c.beginPath();c.arc(124-r*.85,157+r*.45,r*.6,PI*1.15,PI*1.5);c.stroke();c.strokeStyle='#111' + c.lineWidth=7;c.fillStyle=HAIR;c.beginPath();c.moveTo(64,160) + c.bezierCurveTo(46,76,88,38,128,38);c.bezierCurveTo(168,38,210,76,192,160) + c.lineTo(182,150);c.quadraticCurveTo(186,124,178,106);c.lineTo(168,116);c.lineTo(162,96);c.lineTo(150,112);c.lineTo(140,90);c.lineTo(130,110) + c.lineTo(118,92);c.lineTo(108,112);c.lineTo(96,96);c.lineTo(88,114);c.lineTo(80,106);c.quadraticCurveTo(70,130,74,150);c.closePath();c.fill();c.stroke() + c.beginPath();c.moveTo(122,40);c.bezierCurveTo(112,12,82,14,74,34);c.quadraticCurveTo(100,22,134,40);c.fill();c.stroke() + c.strokeStyle=HL;c.lineWidth=6;for(const[a,e]of[[1.24,1.36],[1.44,1.52],[1.62,1.74]])c.beginPath(),c.arc(128,106,56,PI*a,PI*e),c.stroke() + c.strokeStyle='#111';c.fillStyle='#ffd43b';c.lineWidth=5;c.save();c.translate(176,84);c.rotate(.3);c.beginPath();for(let k=0;k<10;k++){const rr=k%2?6:14,b=k*PI/5-PI/2;c.lineTo(cos(b)*rr,sin(b)*rr)}c.closePath();c.fill();c.stroke();c.restore() + }) + c.restore() +} diff --git a/gen/uianime/loading/tea.js b/gen/uianime/loading/tea.js new file mode 100644 index 0000000..145a74f --- /dev/null +++ b/gen/uianime/loading/tea.js @@ -0,0 +1,41 @@ +// calm sky-blue haired girl in a cardigan sipping from a steaming teacup with her eyes closed while loading dots bounce in a little thought cloud +const{sin,cos,PI,max,min}=Math,T=2*PI +export const frames=16,delay=90 +const SKIN='#ffe3d1',HAIR='#74c0fc',HD='#339af0',HL='#e7f5ff',CAR='#ffec99',CD='#fcc419',CUP='#fcc2d7',CPD='#f06595',TEA='#c77c3a',BL='#ffa8a8',RB='#b197fc',DOT=['#ff8787','#ffd43b','#69db7c'],Z=.88 +const ease=x=>x<=0?0:x>=1?1:x*x*(3-2*x) +export default(c,t)=>{ + const u=ease((t-.1)/.12)-ease((t-.46)/.12),cx=124-6*u,cy=218-26*u,ca=-.4*u + c.fillStyle='#fff';c.lineWidth=5;c.beginPath();for(const[x,y,r]of[[206,40,22],[228,46,16],[184,48,16],[208,58,16]])c.moveTo(x+r,y),c.arc(x,y,r,0,T);c.stroke();c.fill() + c.beginPath();c.arc(170,82,6,0,T);c.stroke();c.fill();c.beginPath();c.arc(160,96,4,0,T);c.stroke();c.fill() + for(let k=0;k<3;k++){const h=max(0,sin(T*(t*2-k*.15)));c.fillStyle=DOT[k];c.lineWidth=4;c.beginPath();c.arc(190+k*16,50-9*h,6,0,T);c.fill();c.stroke()} + c.save();c.translate(112,258);c.scale(Z,Z);c.translate(-128,-258) + c.lineWidth=7;c.fillStyle=HD;c.beginPath();c.moveTo(128,36);c.bezierCurveTo(200,36,214,110,210,258);c.lineTo(46,258);c.bezierCurveTo(42,110,56,36,128,36);c.fill();c.stroke() + c.fillStyle=CAR;c.beginPath();c.moveTo(100,190);c.quadraticCurveTo(60,198,52,258);c.lineTo(204,258);c.quadraticCurveTo(196,198,156,190);c.closePath();c.fill();c.stroke() + c.fillStyle='#fff';c.beginPath();c.moveTo(108,190);c.lineTo(128,240);c.lineTo(148,190);c.closePath();c.fill();c.lineWidth=6;c.stroke() + c.fillStyle=SKIN;c.beginPath();c.moveTo(116,168);c.lineTo(116,194);c.lineTo(128,206);c.lineTo(140,194);c.lineTo(140,168);c.fill();c.beginPath();c.moveTo(116,168);c.lineTo(116,192);c.moveTo(140,168);c.lineTo(140,192);c.stroke() + c.fillStyle=RB;c.lineWidth=5;for(const d of[-1,1])c.beginPath(),c.moveTo(128,212),c.lineTo(128+d*16,203),c.lineTo(128+d*14,222),c.closePath(),c.fill(),c.stroke() + c.lineWidth=7;c.fillStyle=SKIN;c.beginPath();c.moveTo(74,96);c.bezierCurveTo(70,152,100,184,128,186);c.bezierCurveTo(156,184,186,152,182,96);c.bezierCurveTo(182,44,74,44,74,96);c.fill();c.stroke() + c.lineWidth=7;for(const x of[103,153])c.beginPath(),c.arc(x,146,13,PI*1.15,PI*1.85),c.stroke() + c.lineWidth=5;for(const[x,d]of[[103,-1],[153,1]])c.beginPath(),c.moveTo(x+d*12,140),c.lineTo(x+d*18,136),c.stroke() + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*42,162,14,7,0,0,T),c.fill() + c.lineWidth=3;for(const d of[-1,1])for(const k of[-6,0,6])c.beginPath(),c.moveTo(128+d*42+k-2,166),c.lineTo(128+d*42+k+2,158),c.stroke() + c.lineWidth=4.5;c.beginPath();c.moveTo(118,168);c.quadraticCurveTo(123,174,128,169);c.quadraticCurveTo(133,174,138,168);c.stroke() + c.lineWidth=7;c.fillStyle=HAIR;c.beginPath();c.moveTo(60,200);c.bezierCurveTo(44,76,86,36,128,36);c.bezierCurveTo(170,36,212,76,196,200) + c.lineTo(182,200);c.quadraticCurveTo(186,140,178,106);c.quadraticCurveTo(168,106,162,114);c.quadraticCurveTo(156,98,146,92);c.quadraticCurveTo(140,104,132,110) + c.quadraticCurveTo(126,96,116,92);c.quadraticCurveTo(110,104,102,110);c.quadraticCurveTo(96,98,88,98);c.quadraticCurveTo(84,106,80,106) + c.quadraticCurveTo(70,140,74,200);c.closePath();c.fill();c.stroke() + c.strokeStyle=HL;c.lineWidth=6;for(const[a,e]of[[1.24,1.36],[1.44,1.52],[1.62,1.74]])c.beginPath(),c.arc(128,104,56,PI*a,PI*e),c.stroke() + c.strokeStyle='#111';c.fillStyle=RB;c.lineWidth=6;c.beginPath();c.moveTo(80,64);c.quadraticCurveTo(128,36,176,64);c.lineTo(174,76);c.quadraticCurveTo(128,50,82,76);c.closePath();c.fill();c.stroke() + c.restore() + for(const o of[0,.5]){const p=(t*2+o)%1,x=cx+14+8*sin(T*p+o*9)+30*p,y=cy-26-60*p;if(p>.05&&p<.95)for(const[w,s]of[[11,'#111'],[5,'#fff']]){c.lineWidth=w*(1-p*.4);c.strokeStyle=s;c.beginPath();c.moveTo(x,y+14);c.bezierCurveTo(x-10,y+6,x+10,y-2,x,y-12);c.stroke()}} + c.strokeStyle='#111' + c.save();c.translate(cx,cy);c.rotate(ca) + c.lineWidth=5;c.fillStyle=CUP;c.beginPath();c.arc(30,0,10,-PI/2,PI/2);c.stroke() + c.lineWidth=6;c.beginPath();c.moveTo(-28,-16);c.lineTo(28,-16);c.quadraticCurveTo(28,22,0,22);c.quadraticCurveTo(-28,22,-28,-16);c.fill();c.stroke() + c.fillStyle=TEA;c.lineWidth=4;c.beginPath();c.ellipse(0,-16,28,6,0,0,T);c.fill();c.stroke() + c.fillStyle=CPD;c.lineWidth=3.5;c.beginPath();c.moveTo(0,10);c.bezierCurveTo(-10,2,-6,-6,0,-1);c.bezierCurveTo(6,-6,10,2,0,10);c.fill();c.stroke() + c.restore() + c.fillStyle=SKIN;c.lineWidth=5;for(const d of[-1,1])c.beginPath(),c.ellipse(cx+d*26,cy+10+d*6*u,11,13,0,0,T),c.fill(),c.stroke() + for(const d of[-1,1])for(const[l,s]of[[26,'#111'],[16,CAR]])c.lineWidth=l,c.strokeStyle=s,c.beginPath(),c.moveTo(cx+d*46,262),c.lineTo(cx+d*28,cy+22+d*6*u),c.stroke() + c.strokeStyle='#111' +} diff --git a/gen/uianime/loading/wait.js b/gen/uianime/loading/wait.js new file mode 100644 index 0000000..a93af00 --- /dev/null +++ b/gen/uianime/loading/wait.js @@ -0,0 +1,61 @@ +// impatient office girl with a brown bun tapping her foot and glaring at her ticking wristwatch, then letting out a long sigh +const{sin,PI,max,min}=Math,T=2*PI +export const frames=16,delay=90 +const SKIN='#ffe3d1',HAIR='#a9744f',HD='#7f5539',HL='#e6c9a8',EYE='#e8590c',ED='#a33c08',BZ='#748ffc',BD='#4c6ef5',SK='#364fc7',SHOE='#495057',BAND='#ff8787',BL='#ffa8a8',Z=.66 +const ease=x=>x<=0?0:x>=1?1:x*x*(3-2*x) +const eye=(c,x,y,d)=>{ + c.fillStyle='#fff';c.beginPath();c.ellipse(x,y,14,17,0,0,T);c.fill() + c.save();c.beginPath();c.ellipse(x,y,14,17,0,0,T);c.clip();c.beginPath();c.ellipse(x+5,y+5,11.5,15,0,0,T);c.fillStyle=EYE;c.fill();c.lineWidth=3;c.stroke() + c.fillStyle='#111';c.beginPath();c.ellipse(x+6,y+7,5.5,7.5,0,0,T);c.fill() + c.fillStyle='#fff';c.beginPath();c.arc(x+2,y+3,4,0,T);c.fill() + c.fillStyle=SKIN;c.fillRect(x-16,y-20,32,19);c.restore() + c.lineWidth=7;c.beginPath();c.moveTo(x-17,y-1);c.lineTo(x+16,y-1);c.lineTo(x+d*16+d*4,y-6);c.stroke() +} +export default(c,t,i)=>{ + const sg=ease((t-.56)/.08)-ease((t-.9)/.08),tap=i<8?i%2:0,dr=3*sg + for(const[w,s]of[[15,'#111'],[8,SKIN]])for(const x of[118,138])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),c.moveTo(x,206),c.lineTo(x,236),c.stroke() + c.strokeStyle='#111';c.lineWidth=5;c.fillStyle=SHOE;c.beginPath();c.ellipse(114,240,12,6.5,0,0,T);c.fill();c.stroke() + c.save();c.translate(132,244);c.rotate(-.6*tap);c.beginPath();c.ellipse(10,-4,12,6.5,0,0,T);c.fill();c.stroke();c.restore() + if(tap)for(const[w,s]of[[7,'#111'],[2.5,'#fff']]){c.lineWidth=w;c.strokeStyle=s;c.beginPath();c.moveTo(160,226);c.lineTo(170,220);c.moveTo(164,238);c.lineTo(176,238);c.stroke()} + c.strokeStyle='#111' + c.save();c.translate(0,dr) + c.lineWidth=6;c.fillStyle=SK;c.beginPath();c.moveTo(102,190);c.lineTo(154,190);c.lineTo(162,214);c.quadraticCurveTo(128,220,94,214);c.closePath();c.fill();c.stroke() + for(const[w,s]of[[22,'#111'],[13,BZ]])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),c.moveTo(102,148),c.lineTo(80,174),c.lineTo(98,192),c.stroke() + c.strokeStyle='#111';c.lineWidth=6;c.fillStyle=BZ;c.beginPath();c.moveTo(104,136);c.quadraticCurveTo(92,140,94,160);c.lineTo(96,198);c.lineTo(160,198);c.lineTo(162,160);c.quadraticCurveTo(164,140,152,136);c.closePath();c.fill();c.stroke() + c.fillStyle='#fff';c.beginPath();c.moveTo(112,136);c.lineTo(128,166);c.lineTo(144,136);c.closePath();c.fill();c.lineWidth=5;c.stroke() + c.fillStyle=BD;for(const d of[-1,1])c.beginPath(),c.moveTo(128+d*16,136),c.lineTo(128+d*8,158),c.lineTo(128+d*2,170),c.lineTo(128+d*24,150),c.closePath(),c.fill(),c.stroke() + c.fillStyle='#ffd43b';c.lineWidth=4;c.beginPath();c.arc(128,182,4,0,T);c.fill();c.stroke() + c.fillStyle=SKIN;c.lineWidth=5;c.beginPath();c.ellipse(98,192,9,8,0,0,T);c.fill();c.stroke() + c.restore() + c.fillStyle=SKIN;c.lineWidth=5;c.beginPath();c.moveTo(121,126);c.lineTo(121,138);c.lineTo(128,146);c.lineTo(135,138);c.lineTo(135,126);c.fill();c.beginPath();c.moveTo(121,126);c.lineTo(121,137);c.moveTo(135,126);c.lineTo(135,137);c.stroke() + c.save();c.translate(128,32+dr*1.5);c.rotate(-.06*sg);c.scale(Z,Z);c.translate(-128,-36) + c.lineWidth=7;c.fillStyle=HD;c.beginPath();c.moveTo(128,36);c.bezierCurveTo(196,36,206,96,198,150);c.lineTo(58,150);c.bezierCurveTo(50,96,60,36,128,36);c.fill();c.stroke() + c.fillStyle=HAIR;c.beginPath();c.arc(128,26,20,0,T);c.fill();c.stroke() + c.strokeStyle=HL;c.lineWidth=6;c.beginPath();c.arc(128,26,12,PI*1.15,PI*1.5);c.stroke();c.strokeStyle='#111' + c.fillStyle=BAND;c.beginPath();c.roundRect(104,32,48,12,6);c.fill();c.stroke() + c.fillStyle=SKIN;c.beginPath();c.moveTo(74,96);c.bezierCurveTo(70,152,100,184,128,186);c.bezierCurveTo(156,184,186,152,182,96);c.bezierCurveTo(182,44,74,44,74,96);c.fill();c.stroke() + if(sg>.5){c.lineWidth=7;for(const x of[103,153])c.beginPath(),c.moveTo(x-15,140),c.quadraticCurveTo(x,150,x+15,140),c.stroke()} + else{eye(c,103,140,-1);eye(c,153,140,1)} + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*44,164,12,6,0,0,T),c.fill() + c.lineWidth=5;if(sg>.5){c.fillStyle='#c92a2a';c.beginPath();c.ellipse(128,172,7,6,0,0,T);c.fill();c.stroke()}else{c.beginPath();c.moveTo(118,172);c.quadraticCurveTo(128,166,138,172);c.stroke()} + c.lineWidth=7;c.fillStyle=HAIR;c.beginPath();c.moveTo(68,150) + c.bezierCurveTo(52,74,88,36,128,36);c.bezierCurveTo(168,36,204,74,188,150) + c.quadraticCurveTo(184,118,176,100);c.quadraticCurveTo(166,108,160,116);c.quadraticCurveTo(154,94,140,86);c.quadraticCurveTo(136,102,126,110) + c.quadraticCurveTo(116,92,100,88);c.quadraticCurveTo(96,104,88,112);c.quadraticCurveTo(82,104,80,102) + c.quadraticCurveTo(70,122,68,150);c.closePath();c.fill();c.stroke() + c.strokeStyle=HL;c.lineWidth=6;for(const[a,e]of[[1.24,1.36],[1.44,1.52],[1.62,1.74]])c.beginPath(),c.arc(128,104,56,PI*a,PI*e),c.stroke() + c.strokeStyle='#111';c.lineWidth=6;if(sg<.5)c.beginPath(),c.moveTo(88,112),c.lineTo(114,120),c.moveTo(142,120),c.lineTo(168,112),c.stroke() + if(sg<.5){c.strokeStyle='#ff6b6b';c.lineWidth=5;c.save();c.translate(178,72);for(const r of[0,1,2,3]){c.rotate(PI/2);c.beginPath();c.moveTo(4,4);c.quadraticCurveTo(5,12,14,12);c.stroke()}c.restore();c.strokeStyle='#111'} + c.restore() + if(sg>.05){const p=min(1,(t-.56)/.3),x=94-46*p,y=150-40*p,r=7+11*p;c.fillStyle='#fff';c.lineWidth=5;c.beginPath();for(const[dx,dy,k]of[[-r*.7,0,.8],[0,-r*.5,1],[r*.7,0,.8]])c.moveTo(x+dx+k*r,y+dy),c.arc(x+dx,y+dy,k*r,0,T);c.stroke();c.fill() + c.lineWidth=4;c.beginPath();c.moveTo(x+r*1.4,y+r*.6);c.quadraticCurveTo(x+r*1.9,y+r*.9,108,152);c.stroke()} + const wx=182,wy=150 + for(const[w,s]of[[22,'#111'],[13,BZ]])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),c.moveTo(154,150+dr),c.lineTo(190,180+dr),c.lineTo(wx,wy+14),c.stroke() + c.strokeStyle='#111';c.lineWidth=5;c.fillStyle=SKIN;c.beginPath();c.ellipse(wx-1,wy-20,10,11,0,0,T);c.fill();c.stroke() + c.fillStyle=SKIN;c.beginPath();c.rect(wx-8,wy-12,16,22);c.fill();c.beginPath();c.moveTo(wx-8,wy-12);c.lineTo(wx-8,wy+10);c.moveTo(wx+8,wy-12);c.lineTo(wx+8,wy+10);c.stroke() + c.fillStyle=BAND;c.beginPath();c.roundRect(wx-10,wy-14,20,28,4);c.fill();c.stroke() + c.fillStyle='#fff';c.lineWidth=5;c.beginPath();c.arc(wx,wy,15,0,T);c.fill();c.stroke() + c.lineWidth=3;c.beginPath();c.moveTo(wx,wy);c.lineTo(wx-6,wy-4);c.stroke() + const h=i*T/16;c.strokeStyle='#f03e3e';c.lineWidth=3;c.beginPath();c.moveTo(wx,wy);c.lineTo(wx+11*sin(h),wy-11*Math.cos(h));c.stroke();c.strokeStyle='#111' + c.fillStyle='#111';c.beginPath();c.arc(wx,wy,2.5,0,T);c.fill() +} diff --git a/gen/uianime/locked/key.js b/gen/uianime/locked/key.js new file mode 100644 index 0000000..230684e --- /dev/null +++ b/gen/uianime/locked/key.js @@ -0,0 +1,56 @@ +// red haired girl straining to turn a giant gold key in a big padlock, the shackle clicks shut and she beams as sparkles pop +const{sin,cos,PI,max,min,abs}=Math,T=2*PI +export const frames=16,delay=85 +const SKIN='#ffe3d1',HAIR='#ff8787',HD='#e03131',HL='#ffe3e3',EYE='#845ef7',ED='#5f3dc4',TOP='#d0bfff',TD='#9775fa',BL='#ffa8a8',LK='#74c0fc',SH='#dee2e6',GD='#ffd43b',GDD='#f59f00',SP='#ffe066',SW='#a5d8ff' +const ds=(c,a,b,s,f)=>{for(const[l,k]of[[a,'#111'],[b,s]])c.lineWidth=l,c.strokeStyle=k,c.beginPath(),f(),c.stroke();c.strokeStyle='#111'} +const eye=(c,x,y,d)=>{ + c.fillStyle='#fff';c.beginPath();c.ellipse(x,y,14,17,0,0,T);c.fill() + c.save();c.beginPath();c.ellipse(x,y+2,11.5,15,0,0,T);c.clip();c.fillStyle=EYE;c.fill();c.fillStyle=ED;c.beginPath();c.ellipse(x,y-8,13,10,0,0,T);c.fill();c.restore() + c.lineWidth=2.5;c.beginPath();c.ellipse(x,y+2,11.5,15,0,0,T);c.stroke() + c.fillStyle='#111';c.beginPath();c.ellipse(x,y+3,5.5,7.5,0,0,T);c.fill() + c.fillStyle='#fff';c.beginPath();c.arc(x-4,y-5,4.5,0,T);c.fill();c.beginPath();c.arc(x+5,y+8,2,0,T);c.fill() + c.lineWidth=6;c.beginPath();c.moveTo(x-16,y-6);c.quadraticCurveTo(x,y-20,x+16,y-6);c.moveTo(x+d*15,y-7);c.lineTo(x+d*21,y-12);c.stroke() +} +const spark=(c,x,y,r)=>{c.beginPath();c.moveTo(x,y-r);for(const[a,b]of[[1,0],[0,1],[-1,0],[0,-1]])c.quadraticCurveTo(x+(a+b)*r*.15,y+(b-a)*r*.15,x+a*r,y+b*r);c.fill();c.stroke()} +export default(c,t)=>{ + const tw=t<.5,p=min(1,t/.5),th=PI*p*p*(3-2*p),cs=abs(cos(th)),hap=t>=.5&&t<.875 + const dy=t<.5?-24:t<.5625?4:t<.875?0:-24*min(1,(t-.875)/.0625) + const H=f=>{c.save();c.translate(188,138);c.scale(.7,.7);c.translate(-128,-186);f();c.restore()} + H(()=>{ + c.lineWidth=9;c.fillStyle=HD;c.beginPath();c.moveTo(128,34);c.bezierCurveTo(200,34,214,96,206,150);c.quadraticCurveTo(212,210,200,250);c.lineTo(56,250);c.quadraticCurveTo(44,210,50,150);c.bezierCurveTo(42,96,56,34,128,34);c.fill();c.stroke() + c.fillStyle=TOP;c.beginPath();c.moveTo(100,190);c.quadraticCurveTo(52,198,40,330);c.lineTo(216,330);c.quadraticCurveTo(204,198,156,190);c.closePath();c.fill();c.stroke() + c.fillStyle='#fff';c.beginPath();c.moveTo(102,190);c.lineTo(128,226);c.lineTo(154,190);c.closePath();c.fill();c.stroke() + c.fillStyle=SKIN;c.beginPath();c.moveTo(114,168);c.lineTo(114,194);c.quadraticCurveTo(128,208,142,194);c.lineTo(142,168);c.fill();c.beginPath();c.moveTo(114,168);c.lineTo(114,192);c.moveTo(142,168);c.lineTo(142,192);c.stroke() + c.fillStyle=TD;c.beginPath();c.moveTo(128,224);c.lineTo(112,214);c.lineTo(112,236);c.closePath();c.moveTo(128,224);c.lineTo(144,214);c.lineTo(144,236);c.closePath();c.fill();c.stroke() + c.lineWidth=9;c.fillStyle=SKIN;c.beginPath();c.moveTo(74,96);c.bezierCurveTo(70,152,100,184,128,186);c.bezierCurveTo(156,184,186,152,182,96);c.bezierCurveTo(182,44,74,44,74,96);c.fill();c.stroke() + if(tw){c.lineWidth=8;for(const d of[-1,1])c.beginPath(),c.moveTo(128+d*38,128),c.lineTo(128+d*18,140),c.lineTo(128+d*38,152),c.stroke() + c.fillStyle='#fff';c.lineWidth=6;c.beginPath();c.roundRect(108,160,40,18,7);c.fill();c.stroke();c.beginPath();c.moveTo(110,169);c.lineTo(146,169);c.stroke()} + else if(hap){c.lineWidth=9;for(const x of[103,153])c.beginPath(),c.arc(x,148,15,1.15*PI,1.85*PI),c.stroke() + c.lineWidth=6;c.fillStyle='#c92a2a';c.beginPath();c.moveTo(112,164);c.quadraticCurveTo(128,190,144,164);c.closePath();c.fill();c.stroke()} + else{eye(c,103,140,-1);eye(c,153,140,1);c.lineWidth=5;c.beginPath();c.arc(128,164,8,.15*PI,.85*PI);c.stroke()} + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*44,162,14,8,0,0,T),c.fill() + c.lineWidth=9;c.fillStyle=HAIR;c.beginPath();c.moveTo(68,150) + c.bezierCurveTo(52,74,88,36,128,36);c.bezierCurveTo(168,36,204,74,188,150) + c.quadraticCurveTo(186,118,178,102);c.quadraticCurveTo(170,104,164,112);c.quadraticCurveTo(158,98,148,92);c.quadraticCurveTo(142,104,134,110) + c.quadraticCurveTo(128,98,120,92);c.quadraticCurveTo(114,104,106,110);c.quadraticCurveTo(100,98,92,96);c.quadraticCurveTo(88,106,84,112) + c.quadraticCurveTo(80,104,78,104);c.quadraticCurveTo(70,124,68,150);c.closePath();c.fill();c.stroke() + c.strokeStyle=HL;c.lineWidth=8;for(const[s,e]of[[1.24,1.36],[1.44,1.52],[1.62,1.74]])c.beginPath(),c.arc(128,104,56,PI*s,PI*e),c.stroke() + c.strokeStyle='#111';c.fillStyle=GD;c.lineWidth=7;c.beginPath();c.ellipse(80,66,16,11,-.6,0,T);c.fill();c.stroke() + if(tw){c.fillStyle=SW;c.lineWidth=7;for(const[x,y]of[[196,96],[212,128]])c.beginPath(),c.moveTo(x,y-18),c.quadraticCurveTo(x+12,y,x,y+7),c.quadraticCurveTo(x-12,y,x,y-18),c.fill(),c.stroke()} + }) + ds(c,24,13,SH,()=>{c.moveTo(38,150);c.lineTo(38,84+dy);c.arc(70,84+dy,32,PI,0);c.lineTo(102,128+dy)}) + c.fillStyle=LK;c.lineWidth=6;c.beginPath();c.roundRect(12,124,116,104,24);c.fill();c.stroke() + c.strokeStyle='#fff';c.lineWidth=5;c.beginPath();c.moveTo(28,150);c.quadraticCurveTo(28,138,40,136);c.stroke();c.strokeStyle='#111' + c.fillStyle='#343a40';c.lineWidth=4;c.beginPath();c.arc(70,166,11,0,T);c.moveTo(64,170);c.lineTo(60,196);c.lineTo(80,196);c.lineTo(76,170);c.fill() + ds(c,18,9,GD,()=>{c.moveTo(70,174);c.lineTo(150,174)}) + c.fillStyle=GD;c.lineWidth=5;c.beginPath();c.roundRect(136,164,12,20,3);c.fill();c.stroke() + ds(c,22,11,GD,()=>{c.ellipse(178,174,22,max(1,28*cs),0,0,T)}) + c.strokeStyle=GDD;c.lineWidth=3;if(cs>.3){c.beginPath();c.ellipse(178,174,22,28*cs,0,PI*1.1,PI*1.45);c.stroke()}c.strokeStyle='#111' + const y1=174-30*cs,y2=174+30*cs + ds(c,22,12,TOP,()=>{c.moveTo(150,150);c.quadraticCurveTo(150,y1-16,170,y1)}) + ds(c,22,12,TOP,()=>{c.moveTo(220,156);c.quadraticCurveTo(226,y2,196,y2)}) + c.fillStyle=SKIN;c.lineWidth=5;for(const[x,y]of[[176,y1],[190,y2]])c.beginPath(),c.ellipse(x,y,12,11,0,0,T),c.fill(),c.stroke() + if(t>=.5&&t<.875){const q=(t-.5)/.375,s=sin(PI*min(1,q*1.6)) + for(let k=0;k<5;k++){const a=-PI/2+(k-2)*.5;ds(c,8,4,SP,()=>{c.moveTo(70+cos(a)*(48+8*q),66+sin(a)*(48+8*q));c.lineTo(70+cos(a)*(60+14*q),66+sin(a)*(60+14*q))})} + c.fillStyle=SP;c.lineWidth=3.5;for(const[x,y,o]of[[132,40,0],[236,30,.2],[240,104,.35]]){const r=sin(PI*min(1,max(0,q*1.4-o)));if(r>.1)spark(c,x,y,13*r)}} +} diff --git a/gen/uianime/logout/wave.js b/gen/uianime/logout/wave.js new file mode 100644 index 0000000..4c86e8a --- /dev/null +++ b/gen/uianime/logout/wave.js @@ -0,0 +1,57 @@ +// silver haired girl in a beret and red scarf by an open door, smiling and waving goodbye, a wink and little hearts as she heads out +const{sin,cos,PI}=Math,T=2*PI +export const frames=16,delay=80 +const SKIN='#ffe3d1',HAIR='#e9ecef',HD='#adb5bd',EYE='#4dabf7',ED='#1864ab',BER='#ff6b6b',BD='#c92a2a',COAT='#e8b07a',CD='#b9773f',SCF='#fa5252',BL='#ffa8a8',DR='#96f2d7',DD='#20c997',IN='#495057',HT='#ff8fab' +const ds=(c,a,b,s,f)=>{for(const[l,k]of[[a,'#111'],[b,s]])c.lineWidth=l,c.strokeStyle=k,c.beginPath(),f(),c.stroke();c.strokeStyle='#111'} +const eye=(c,x,y,d)=>{ + c.fillStyle='#fff';c.beginPath();c.ellipse(x,y,14,17,0,0,T);c.fill() + c.save();c.beginPath();c.ellipse(x,y+2,11.5,15,0,0,T);c.clip();c.fillStyle=EYE;c.fill();c.fillStyle=ED;c.beginPath();c.ellipse(x,y-8,13,10,0,0,T);c.fill();c.restore() + c.lineWidth=2.5;c.beginPath();c.ellipse(x,y+2,11.5,15,0,0,T);c.stroke() + c.fillStyle='#111';c.beginPath();c.ellipse(x,y+3,5.5,7.5,0,0,T);c.fill() + c.fillStyle='#fff';c.beginPath();c.arc(x-4,y-5,4.5,0,T);c.fill();c.beginPath();c.arc(x+5,y+8,2,0,T);c.fill() + c.lineWidth=6;c.beginPath();c.moveTo(x-16,y-6);c.quadraticCurveTo(x,y-20,x+16,y-6);c.moveTo(x+d*15,y-7);c.lineTo(x+d*21,y-12);c.stroke() +} +const heart=(c,x,y,s)=>{c.save();c.translate(x,y);c.scale(s,s);c.beginPath();c.moveTo(0,8);c.bezierCurveTo(-13,-1,-9,-12,0,-5);c.bezierCurveTo(9,-12,13,-1,0,8);c.restore();c.fill();c.stroke()} +export default(c,t)=>{ + const a=-PI/2+.32*sin(2*T*t),ex=212,ey=204,hx=ex+60*cos(a),hy=ey+60*sin(a),w=t>=.5&&t<.8125 + c.lineWidth=6;c.fillStyle=IN;c.beginPath();c.roundRect(12,40,68,212,[10,10,0,0]);c.fill();c.stroke() + c.fillStyle='#ffe066';c.beginPath();c.moveTo(18,248);c.lineTo(74,248);c.lineTo(74,46);c.closePath();c.globalAlpha=.25;c.fill();c.globalAlpha=1 + c.fillStyle=DR;c.beginPath();c.moveTo(12,40);c.lineTo(46,54);c.lineTo(46,238);c.lineTo(12,252);c.closePath();c.fill();c.stroke() + c.strokeStyle=DD;c.lineWidth=4;c.beginPath();c.moveTo(20,62);c.lineTo(38,70);c.lineTo(38,138);c.lineTo(20,136);c.closePath();c.moveTo(20,158);c.lineTo(38,158);c.lineTo(38,222);c.lineTo(20,230);c.closePath();c.stroke();c.strokeStyle='#111' + c.fillStyle='#ffd43b';c.lineWidth=4;c.beginPath();c.arc(39,150,5,0,T);c.fill();c.stroke() + const H=f=>{c.save();c.translate(140,182);c.scale(.72,.72);c.translate(-128,-186);f();c.restore()} + H(()=>{ + c.lineWidth=8;c.fillStyle=HD;c.beginPath();c.moveTo(128,34);c.bezierCurveTo(200,34,214,96,206,150);c.quadraticCurveTo(216,190,204,226);c.quadraticCurveTo(196,236,186,228);c.lineTo(70,228);c.quadraticCurveTo(60,236,52,226);c.quadraticCurveTo(40,190,50,150);c.bezierCurveTo(42,96,56,34,128,34);c.fill();c.stroke() + c.fillStyle=COAT;c.beginPath();c.moveTo(100,190);c.quadraticCurveTo(52,198,40,330);c.lineTo(216,330);c.quadraticCurveTo(204,198,156,190);c.closePath();c.fill();c.stroke() + c.lineWidth=6;c.beginPath();c.moveTo(128,214);c.lineTo(128,330);c.stroke() + c.fillStyle=CD;for(const y of[246,282])c.beginPath(),c.arc(146,y,6,0,T),c.fill(),c.stroke() + c.lineWidth=8;c.fillStyle=SKIN;c.beginPath();c.moveTo(114,168);c.lineTo(114,194);c.lineTo(142,194);c.lineTo(142,168);c.fill();c.beginPath();c.moveTo(114,168);c.lineTo(114,192);c.moveTo(142,168);c.lineTo(142,192);c.stroke() + c.fillStyle=SCF;c.beginPath();c.moveTo(94,196);c.quadraticCurveTo(128,184,162,196);c.quadraticCurveTo(168,212,160,220);c.quadraticCurveTo(128,208,96,220);c.quadraticCurveTo(88,210,94,196);c.fill();c.stroke() + c.beginPath();c.moveTo(102,214);c.lineTo(90,266);c.lineTo(114,266);c.lineTo(116,216);c.fill();c.stroke() + c.strokeStyle='#fff';c.lineWidth=4;c.beginPath();c.moveTo(96,256);c.lineTo(110,256);c.stroke();c.strokeStyle='#111' + c.lineWidth=8;c.fillStyle=SKIN;c.beginPath();c.moveTo(74,96);c.bezierCurveTo(70,152,100,184,128,186);c.bezierCurveTo(156,184,186,152,182,96);c.bezierCurveTo(182,44,74,44,74,96);c.fill();c.stroke() + eye(c,103,140,-1) + if(w){c.lineWidth=8;c.beginPath();c.arc(153,148,14,1.15*PI,1.85*PI);c.stroke()}else eye(c,153,140,1) + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*44,162,14,8,0,0,T),c.fill() + c.lineWidth=4;for(const d of[-1,1])for(const k of[-6,0,6])c.beginPath(),c.moveTo(128+d*44+k-2,166),c.lineTo(128+d*44+k+2,158),c.stroke() + c.lineWidth=6;c.fillStyle='#c92a2a';c.beginPath();c.moveTo(114,164);c.quadraticCurveTo(128,186,142,164);c.closePath();c.fill();c.stroke() + c.save();c.clip();c.fillStyle='#ff8fab';c.beginPath();c.ellipse(128,178,8,6,0,0,T);c.fill();c.restore() + c.lineWidth=8;c.fillStyle=HAIR;c.beginPath();c.moveTo(68,150) + c.bezierCurveTo(52,74,88,36,128,36);c.bezierCurveTo(168,36,204,74,188,150) + c.quadraticCurveTo(186,118,178,102);c.quadraticCurveTo(170,104,164,112);c.quadraticCurveTo(158,98,148,92);c.quadraticCurveTo(142,104,134,110) + c.quadraticCurveTo(128,98,120,92);c.quadraticCurveTo(114,104,106,110);c.quadraticCurveTo(100,98,92,96);c.quadraticCurveTo(88,106,84,112) + c.quadraticCurveTo(80,104,78,104);c.quadraticCurveTo(70,124,68,150);c.closePath();c.fill();c.stroke() + c.strokeStyle=HD;c.lineWidth=6;for(const[s,e]of[[1.24,1.36],[1.44,1.52],[1.62,1.74]])c.beginPath(),c.arc(128,104,56,PI*s,PI*e),c.stroke() + c.strokeStyle='#111';c.fillStyle=BER;c.lineWidth=8;c.beginPath();c.ellipse(148,48,62,24,.18,0,T);c.fill();c.stroke() + c.strokeStyle=BD;c.lineWidth=5;c.beginPath();c.ellipse(148,48,46,13,.18,.2,PI-.4);c.stroke();c.strokeStyle='#111' + c.fillStyle=BD;c.lineWidth=6;c.beginPath();c.roundRect(150,14,12,14,4);c.fill();c.stroke() + }) + ds(c,24,14,COAT,()=>{c.moveTo(168,226);c.lineTo(ex,ey);c.lineTo(ex+42*cos(a),ey+42*sin(a))}) + c.strokeStyle='#111';c.lineWidth=5;c.fillStyle=SKIN + c.save();c.translate(hx,hy);c.rotate(a+PI/2) + for(const x of[-9,-3,3,9])c.beginPath(),c.ellipse(x,-14,3.6,8,0,0,T),c.fill(),c.stroke() + c.beginPath();c.ellipse(-14,-2,4,8,-.7,0,T);c.fill();c.stroke() + c.beginPath();c.ellipse(0,-2,13,12,0,0,T);c.fill();c.stroke() + c.restore() + c.fillStyle=HT;c.lineWidth=3.5;for(const o of[0,.5]){const p=(t+o)%1,s=sin(PI*p);if(s>.15)heart(c,232+6*sin(T*p*2),100-80*p,.5+.6*s)} +} diff --git a/gen/uianime/mailbox/check.js b/gen/uianime/mailbox/check.js new file mode 100644 index 0000000..4f8079d --- /dev/null +++ b/gen/uianime/mailbox/check.js @@ -0,0 +1,73 @@ +// ginger bob girl pulls open her mailbox to find it totally empty, staring with dot eyes and a sweatdrop while a tumbleweed rolls past +const{sin,cos,PI,max,min,abs,hypot,sqrt}=Math,T=2*PI +export const frames=16,delay=85 +const SKIN='#ffe3d1',HAIR='#ff922b',HD='#e8590c',HL='#ffe8cc',EYE='#51cf66',ED='#2b8a3e',BL='#ffa8a8',TOP='#d0bfff',TD='#9775fa',MB='#74c0fc',MBD='#339af0',IN='#343a40',FL='#fa5252',WD='#c98a52',TW='#e0b46c',TWD='#a0763c',SW='#a5d8ff' +const E=x=>x<=0?0:x>=1?1:x*x*(3-2*x) +const ds=(c,a,b,s,f)=>{for(const[l,k]of[[a,'#111'],[b,s]])c.lineWidth=l,c.strokeStyle=k,c.beginPath(),f(),c.stroke();c.strokeStyle='#111'} +const arch=(c,x,y,w,h)=>{c.moveTo(x,y);c.lineTo(x,y-h+w/2);c.arc(x+w/2,y-h+w/2,w/2,PI,0);c.lineTo(x+w,y);c.closePath()} +const eye=(c,x,y,d)=>{ + c.fillStyle='#fff';c.beginPath();c.ellipse(x,y,14,17,0,0,T);c.fill() + c.save();c.clip();c.beginPath();c.ellipse(x+4,y+3,11.5,15,0,0,T);c.fillStyle=EYE;c.fill();c.lineWidth=2.5;c.stroke() + c.fillStyle=ED;c.beginPath();c.ellipse(x+4,y-7,13,9,0,0,T);c.fill() + c.fillStyle='#111';c.beginPath();c.ellipse(x+5,y+4,5.5,7.5,0,0,T);c.fill() + c.fillStyle='#fff';c.beginPath();c.arc(x,y-3,4.5,0,T);c.fill();c.beginPath();c.arc(x+8,y+9,2,0,T);c.fill();c.restore() + c.lineWidth=7;c.beginPath();c.moveTo(x-16,y-6);c.quadraticCurveTo(x,y-20,x+16,y-6);c.moveTo(x+d*15,y-7);c.lineTo(x+d*21,y-12);c.stroke() +} +export default(c,t)=>{ + const op=E((t-.1)/.14)-E((t-.82)/.12),ln=E((t-.22)/.1)-E((t-.8)/.1),bk=t>.3&&t<.82,sy=1-1.4*op + const p=(t-.28)/.62,tx=290-350*p,ty=228-16*abs(sin(3*PI*p)) + // post and mailbox body + c.lineWidth=6;c.fillStyle=WD;c.beginPath();c.rect(176,164,24,86);c.fill();c.stroke() + c.fillStyle=MBD;c.beginPath();c.moveTo(148,170);c.lineTo(148,134);c.arc(188,134,40,PI,PI*1.31);c.lineTo(188+40*cos(PI*1.31)+16,134+40*sin(PI*1.31)-10);c.arc(204,124,40,PI*1.31,0);c.lineTo(244,160);c.lineTo(228,170);c.closePath();c.fill();c.stroke() + ds(c,10,5,'#fff',()=>{c.moveTo(236,110);c.lineTo(236,140)}) + c.fillStyle=FL;c.lineWidth=5;c.beginPath();c.rect(230,138,12,20);c.fill();c.stroke() + // inside: dark and empty, just a cobweb + c.fillStyle=IN;c.lineWidth=6;c.beginPath();arch(c,148,170,80,76);c.fill() + c.fillStyle='#495057';c.lineWidth=3;c.beginPath();arch(c,164,160,48,54);c.fill();c.stroke() + c.strokeStyle='#868e96';c.lineWidth=3;c.beginPath();c.moveTo(154,166);c.lineTo(164,160);c.moveTo(222,166);c.lineTo(212,160);c.stroke() + c.strokeStyle='#dee2e6';c.lineWidth=2.5;c.beginPath();c.moveTo(160,136);c.lineTo(180,112);for(const r of[9,17])c.moveTo(160,136-r),c.quadraticCurveTo(165+r*.2,131-r*.2,160+r,136);c.moveTo(160,136);c.lineTo(174,118);c.stroke() + c.strokeStyle='#111';c.lineWidth=6;c.beginPath();arch(c,148,170,80,76);c.stroke() + // girl + c.save();c.translate(78,162);c.scale(.8,.8);c.translate(-128,-186) + c.save();c.translate(128,186);c.rotate(.07*ln);c.translate(-128,-186) + c.lineWidth=8;c.fillStyle=HD;c.beginPath();c.moveTo(128,34);c.bezierCurveTo(198,34,214,100,204,160);c.quadraticCurveTo(204,186,180,184);c.lineTo(76,184);c.quadraticCurveTo(52,186,52,160);c.bezierCurveTo(42,100,58,34,128,34);c.fill();c.stroke() + c.restore() + c.fillStyle=TOP;c.beginPath();c.moveTo(100,190);c.quadraticCurveTo(58,198,48,304);c.lineTo(208,304);c.quadraticCurveTo(198,198,156,190);c.closePath();c.fill();c.stroke() + c.strokeStyle=TD;c.lineWidth=5;c.beginPath();c.moveTo(128,212);c.lineTo(128,304);c.stroke();c.strokeStyle='#111' + c.fillStyle='#fff';c.lineWidth=4;for(const y of[236,266])c.beginPath(),c.arc(136,y,5,0,T),c.fill(),c.stroke() + c.fillStyle=SKIN;c.lineWidth=7;c.beginPath();c.moveTo(116,166);c.lineTo(116,194);c.lineTo(128,204);c.lineTo(140,194);c.lineTo(140,166);c.fill();c.beginPath();c.moveTo(116,166);c.lineTo(116,192);c.moveTo(140,166);c.lineTo(140,192);c.stroke() + c.fillStyle='#fff';c.lineWidth=6;for(const d of[-1,1])c.beginPath(),c.moveTo(128,206),c.quadraticCurveTo(128+d*34,212,128+d*30,190),c.quadraticCurveTo(128+d*16,192,128,206),c.fill(),c.stroke() + c.save();c.translate(128,186);c.rotate(.07*ln);c.translate(-128,-186) + c.lineWidth=8;c.fillStyle=SKIN;c.beginPath();c.moveTo(74,96);c.bezierCurveTo(70,152,100,184,128,186);c.bezierCurveTo(156,184,186,152,182,96);c.bezierCurveTo(182,44,74,44,74,96);c.fill();c.stroke() + if(bk){c.fillStyle='#111';for(const x of[105,155])c.beginPath(),c.ellipse(x,140,7.5,9,0,0,T),c.fill() + c.lineWidth=5;c.beginPath();c.moveTo(121,170);c.lineTo(135,170);c.stroke()} + else{eye(c,103,140,-1);eye(c,153,140,1);c.lineWidth=5;c.beginPath();c.arc(128,164,8,.2*PI,.8*PI);c.stroke()} + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*44,162,13,7,0,0,T),c.fill() + c.lineWidth=3;for(const d of[-1,1])for(const k of[-5,0,5])c.beginPath(),c.moveTo(128+d*44+k-2,165),c.lineTo(128+d*44+k+2,159),c.stroke() + c.lineWidth=8;c.fillStyle=HAIR;c.beginPath();c.moveTo(66,160) + c.bezierCurveTo(48,74,88,36,128,36);c.bezierCurveTo(168,36,208,74,190,160) + c.quadraticCurveTo(188,120,180,104);c.quadraticCurveTo(170,104,164,96);c.quadraticCurveTo(156,108,144,110);c.quadraticCurveTo(140,98,130,92) + c.quadraticCurveTo(122,106,108,110);c.quadraticCurveTo(104,98,96,94);c.quadraticCurveTo(88,106,78,106);c.quadraticCurveTo(68,128,66,160);c.closePath();c.fill();c.stroke() + c.beginPath();c.moveTo(126,38);c.quadraticCurveTo(120,14,100,14);c.quadraticCurveTo(118,24,116,40);c.fill();c.stroke() + c.strokeStyle=HL;c.lineWidth=7;for(const[a,e]of[[1.24,1.36],[1.44,1.52],[1.62,1.74]])c.beginPath(),c.arc(128,104,56,PI*a,PI*e),c.stroke() + c.strokeStyle='#111';c.fillStyle=FL;c.lineWidth=6;c.beginPath();c.roundRect(150,66,30,11,5);c.fill();c.stroke() + c.restore();c.restore() + // door swinging down on its hinge + c.save();c.translate(0,170);c.scale(1,sy);c.beginPath();arch(c,148,0,80,76);c.restore() + c.fillStyle=sy>0?MB:'#d0ebff';c.lineWidth=6;c.fill();c.stroke() + if(sy>.3){c.strokeStyle='#d0ebff';c.lineWidth=5;c.beginPath();c.arc(188,170-36*sy,30,PI*1.15,PI*1.45);c.stroke();c.strokeStyle='#111'} + const hx=188,hy=170-70*sy,sx=118,sh=186,d=hypot(hx-sx,hy-sh),h=sqrt(max(0,58*58-d*d/4)),ex=(sx+hx)/2-(hy-sh)/d*h,ey=(sh+hy)/2+(hx-sx)/d*h + ds(c,20,11,TOP,()=>{c.moveTo(sx,sh);c.lineTo(ex,ey);c.lineTo(hx,hy+4)}) + c.fillStyle=SKIN;c.lineWidth=5;c.beginPath();c.ellipse(hx,hy+4,10,9,0,0,T);c.fill();c.stroke() + // tumbleweed bouncing past + if(p>0&&p<1){ + for(const k of[1,2,3]){const q=(p*3+k/3)%1,r=7*(1-q);if(r>1){c.fillStyle='#fff';c.lineWidth=3.5;c.beginPath();c.arc(tx+18+q*34,246-q*6,r,0,T);c.fill();c.stroke()}} + c.save();c.translate(tx,ty);c.rotate(-p*14) + c.fillStyle=TW;c.lineWidth=5;c.beginPath();for(let k=0;k<12;k++){const a=k*T/12,b=a+T/24;c.quadraticCurveTo(28*cos(a),28*sin(a),22*cos(b),22*sin(b))}c.closePath();c.fill();c.stroke() + c.strokeStyle=TWD;c.lineWidth=3;for(let k=0;k<5;k++)c.beginPath(),c.ellipse(4*cos(k*2.4),4*sin(k*2.4),15,7,k*1.3,0,T),c.stroke() + c.restore() + } + // sweatdrop and silent dots + if(bk){const s=min(1,(t-.3)/.08),y=90;c.fillStyle=SW;c.lineWidth=4;c.beginPath();c.moveTo(24,y-16*s);c.quadraticCurveTo(34*s+24*(1-s),y+4,24,y+6*s);c.quadraticCurveTo(14*s+24*(1-s),y+4,24,y-16*s);c.fill();c.stroke()} + c.fillStyle='#fff';c.lineWidth=4;for(let k=0;k<3;k++)if(t>.4+k*.08&&t<.82)c.beginPath(),c.arc(134+k*16,46-k*5,6,0,T),c.fill(),c.stroke() +} diff --git a/gen/uianime/maintenance/mechanic.js b/gen/uianime/maintenance/mechanic.js new file mode 100644 index 0000000..b97272c --- /dev/null +++ b/gen/uianime/maintenance/mechanic.js @@ -0,0 +1,67 @@ +// sky blue haired mechanic girl in goggles and coveralls, wrench in hand, wiping the sweat off her brow with a phew while gears keep turning behind her +const{sin,cos,PI,max,min}=Math,T=2*PI +export const frames=12,delay=100 +const SKIN='#ffe3d1',HAIR='#74c0fc',HD='#339af0',HL='#e7f5ff',EYE='#51cf66',ED='#2b8a3e',BL='#ffa8a8',JS='#ff922b',JSD='#e8590c',GG='#ffd43b',GR='#ced4da',GD='#868e96',GY='#ffe066',WR='#dee2e6',SW='#a5d8ff',GRS='#868e96' +const E=x=>x<=0?0:x>=1?1:x*x*(3-2*x) +const ds=(c,a,b,s,f)=>{for(const[l,k]of[[a,'#111'],[b,s]])c.lineWidth=l,c.strokeStyle=k,c.beginPath(),f(),c.stroke();c.strokeStyle='#111'} +const gear=(c,x,y,n,ro,ri,a,col,h)=>{ + c.save();c.translate(x,y);c.rotate(a);c.fillStyle=col;c.lineWidth=5;c.beginPath() + for(let k=0;k{c.fillStyle=SW;c.lineWidth=4;c.beginPath();c.moveTo(x,y-10*s);c.quadraticCurveTo(x+7*s,y+2*s,x,y+5*s);c.quadraticCurveTo(x-7*s,y+2*s,x,y-10*s);c.fill();c.stroke()} +const eye=(c,x,y,d)=>{ + c.fillStyle='#fff';c.beginPath();c.ellipse(x,y,14,17,0,0,T);c.fill() + c.save();c.clip();c.beginPath();c.ellipse(x,y+3,11.5,15,0,0,T);c.fillStyle=EYE;c.fill();c.lineWidth=2.5;c.stroke() + c.fillStyle=ED;c.beginPath();c.ellipse(x,y-7,13,9,0,0,T);c.fill() + c.fillStyle='#111';c.beginPath();c.ellipse(x,y+4,5.5,7.5,0,0,T);c.fill() + c.fillStyle='#fff';c.beginPath();c.arc(x-4,y-3,4.5,0,T);c.fill();c.beginPath();c.arc(x+5,y+9,2,0,T);c.fill();c.restore() + c.lineWidth=7;c.beginPath();c.moveTo(x-16,y-6);c.quadraticCurveTo(x,y-20,x+16,y-6);c.moveTo(x+d*15,y-7);c.lineTo(x+d*21,y-12);c.stroke() +} +export default(c,t)=>{ + const up=E((t-.22)/.1)-E((t-.62)/.1),wp=min(1,max(0,(t-.32)/.26)),sh=t>.3&&t<.66,ph=t>=.66&&t<.92 + gear(c,204,50,12,38,30,T*t/6+.17,GR,6);gear(c,194,104,8,24,18,.57-T*t/4,GY,4) + c.save();c.translate(112,168);c.scale(.76,.76);c.translate(-128,-186) + c.lineWidth=8;c.fillStyle=HD;c.beginPath();c.moveTo(128,36);c.bezierCurveTo(198,36,212,100,206,150);c.lineTo(214,170);c.lineTo(194,166);c.lineTo(186,180);c.lineTo(70,180);c.lineTo(62,166);c.lineTo(42,170);c.lineTo(50,150);c.bezierCurveTo(44,100,58,36,128,36);c.fill();c.stroke() + c.fillStyle=JS;c.beginPath();c.moveTo(100,190);c.quadraticCurveTo(54,198,44,300);c.lineTo(212,300);c.quadraticCurveTo(202,198,156,190);c.closePath();c.fill();c.stroke() + c.fillStyle='#fff';c.beginPath();c.moveTo(106,190);c.lineTo(128,226);c.lineTo(150,190);c.closePath();c.fill();c.stroke() + c.fillStyle=JSD;for(const d of[-1,1])c.beginPath(),c.moveTo(128+d*22,190),c.lineTo(128+d*4,230),c.lineTo(128+d*30,214),c.lineTo(128+d*36,192),c.closePath(),c.fill(),c.stroke() + c.fillStyle='#fff';c.lineWidth=6;c.beginPath();c.roundRect(150,244,36,22,4);c.fill();c.stroke() + c.fillStyle=SKIN;c.lineWidth=8;c.beginPath();c.moveTo(116,166);c.lineTo(116,194);c.lineTo(128,206);c.lineTo(140,194);c.lineTo(140,166);c.fill();c.beginPath();c.moveTo(116,166);c.lineTo(116,192);c.moveTo(140,166);c.lineTo(140,192);c.stroke() + c.fillStyle=SKIN;c.beginPath();c.moveTo(74,96);c.bezierCurveTo(70,152,100,184,128,186);c.bezierCurveTo(156,184,186,152,182,96);c.bezierCurveTo(182,44,74,44,74,96);c.fill();c.stroke() + if(sh||ph){c.lineWidth=8;for(const x of[103,153])c.beginPath(),c.arc(x,148,14,PI*1.15,PI*1.85),c.stroke()} + else eye(c,103,140,-1),eye(c,153,140,1) + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*44,162,13,7,0,0,T),c.fill() + c.lineWidth=3;for(const d of[-1,1])for(const k of[-5,0,5])c.beginPath(),c.moveTo(128+d*44+k-2,165),c.lineTo(128+d*44+k+2,159),c.stroke() + c.strokeStyle=GRS;c.lineWidth=6;c.beginPath();c.moveTo(158,164);c.lineTo(176,158);c.moveTo(162,172);c.lineTo(174,168);c.stroke();c.strokeStyle='#111' + c.lineWidth=5;if(ph){c.fillStyle='#c92a2a';c.beginPath();c.ellipse(128,172,6,7,0,0,T);c.fill();c.stroke()} + else{c.beginPath();c.moveTo(116,166);c.quadraticCurveTo(128,180,140,166);c.stroke()} + c.lineWidth=8;c.fillStyle=HAIR;c.beginPath();c.moveTo(66,158) + c.bezierCurveTo(48,74,88,38,128,38);c.bezierCurveTo(168,38,208,74,190,158) + c.lineTo(182,128);c.lineTo(178,106);c.lineTo(166,108);c.lineTo(162,94);c.lineTo(148,108);c.lineTo(138,92);c.lineTo(126,108) + c.lineTo(114,94);c.lineTo(104,108);c.lineTo(92,96);c.lineTo(88,110);c.lineTo(76,108);c.lineTo(72,128);c.closePath();c.fill();c.stroke() + c.strokeStyle=HL;c.lineWidth=7;for(const[a,e]of[[1.24,1.32],[1.6,1.7]])c.beginPath(),c.arc(128,104,56,PI*a,PI*e),c.stroke() + // goggles up on her head + c.strokeStyle='#111';ds(c,16,9,'#495057',()=>{c.moveTo(60,70);c.quadraticCurveTo(128,40,196,70)}) + for(const x of[100,156]){c.fillStyle='#868e96';c.lineWidth=7;c.beginPath();c.arc(x,58,21,0,T);c.fill();c.stroke();c.fillStyle=GG;c.lineWidth=4;c.beginPath();c.arc(x,58,13,0,T);c.fill();c.stroke() + c.strokeStyle='#fff';c.lineWidth=4;c.beginPath();c.arc(x,58,7,PI*1.1,PI*1.5);c.stroke();c.strokeStyle='#111'} + c.restore() + // sweat before the wipe, one drop flicked off after + if(t<.3){drop(c,74,104,1);drop(c,152,94,.8)} + if(t>.56&&t<.84){const p=(t-.56)/.28;drop(c,166+60*p,96-30*p+60*p*p,1.1)} + if(ph){const p=(t-.66)/.26;c.fillStyle='#fff';c.lineWidth=4;c.beginPath();for(const[ox,oy,r]of[[-8,2,8],[2,-4,10],[11,3,7]])c.moveTo(80-40*p+ox+r,150-10*p+oy),c.arc(80-40*p+ox,150-10*p+oy,r*(1-p*.4),0,T);c.stroke();c.fill()} + // wrench in her other hand + c.save();c.translate(178,212);c.rotate(-.9) + ds(c,20,11,WR,()=>{c.moveTo(0,0);c.lineTo(66,0)}) + c.fillStyle=WR;c.lineWidth=6;c.beginPath();c.arc(80,0,20,.55,T-.55);c.lineTo(84,-7);c.lineTo(84,7);c.closePath();c.fill();c.stroke() + c.restore() + ds(c,22,13,JS,()=>{c.moveTo(160,200);c.quadraticCurveTo(176,224,178,214)}) + c.fillStyle=SKIN;c.lineWidth=5;c.beginPath();c.ellipse(178,212,12,13,0,0,T);c.fill();c.stroke() + // the wiping arm + const R=[46,226,70,244],S=[32,146,68,112],F=[50,128,116,100],L=(p,q,f)=>p.map((v,k)=>v+(q[k]-v)*f),[ex,ey,hx,hy]=t<.32?L(R,S,up):t<.62?L(S,F,E(wp)):L(R,F,up) + ds(c,22,13,JS,()=>{c.moveTo(78,196);c.lineTo(ex,ey);c.lineTo(hx,hy)}) + c.fillStyle=SKIN;c.lineWidth=5;c.beginPath();c.ellipse(hx,hy,12,11,0,0,T);c.fill();c.stroke() + if(sh&&wp>0&&wp<1)for(const k of[0,1])ds(c,7,3,'#fff',()=>{c.moveTo(hx-16-k*12,hy-8+k*14);c.lineTo(hx-34-k*12,hy-8+k*14)}) +} diff --git a/gen/uianime/offline/antenna.js b/gen/uianime/offline/antenna.js new file mode 100644 index 0000000..b7bda88 --- /dev/null +++ b/gen/uianime/offline/antenna.js @@ -0,0 +1,56 @@ +// worried girl with an orange bob holding her phone up high and waving it around hunting for signal, ahoge twitching like an antenna +const{sin,cos,PI,max,min,abs}=Math,T=2*PI +export const frames=12,delay=95 +const SKIN='#ffe3d1',HAIR='#ffa94d',HD='#f76707',HL='#fff4e6',EYE='#748ffc',ED='#364fc7',HOOD='#74c0fc',HOD='#339af0',BL='#ffa8a8',PH='#ffd43b',SCR='#e3fafc',RED='#fa5252',SW='#a5d8ff' +const ds=(c,a,b,s,f)=>{for(const[l,k]of[[a,'#111'],[b,s]])c.lineWidth=l,c.strokeStyle=k,c.beginPath(),f(),c.stroke();c.strokeStyle='#111'} +const eye=(c,x,y,d,gx)=>{ + c.fillStyle='#fff';c.beginPath();c.ellipse(x,y,14,17,0,0,T);c.fill() + c.save();c.beginPath();c.ellipse(x,y,14,17,0,0,T);c.clip();c.beginPath();c.ellipse(x+gx,y,11.5,15,0,0,T);c.fillStyle=EYE;c.fill();c.lineWidth=2.5;c.stroke() + c.fillStyle=ED;c.beginPath();c.ellipse(x+gx,y-10,13,9,0,0,T);c.fill() + c.fillStyle='#111';c.beginPath();c.ellipse(x+gx,y+1,5,7,0,0,T);c.fill() + c.fillStyle='#fff';c.beginPath();c.arc(x+gx-4,y-6,4.5,0,T);c.fill();c.beginPath();c.arc(x+gx+5,y+7,2,0,T);c.fill();c.restore() + c.lineWidth=6;c.beginPath();c.moveTo(x-16,y-6);c.quadraticCurveTo(x,y-20,x+16,y-6);c.moveTo(x+d*15,y-7);c.lineTo(x+d*21,y-12);c.stroke() + c.lineWidth=2.5;c.beginPath();c.moveTo(x-8,y+18);c.lineTo(x+8,y+18);c.stroke() +} +export default(c,t)=>{ + const a=-1.4+.17*sin(2*T*t),sx=150,sy=226,hx=sx+140*cos(a),hy=sy+140*sin(a),gx=4,aw=.35*sin(2*T*t+1) + const H=f=>{c.save();c.translate(112,198);c.scale(.8,.8);c.translate(-128,-186);f();c.restore()} + H(()=>{ + c.lineWidth=7;c.fillStyle=HD;c.beginPath();c.moveTo(128,34);c.bezierCurveTo(198,34,212,100,206,158);c.quadraticCurveTo(204,180,184,180);c.lineTo(72,180);c.quadraticCurveTo(52,180,50,158);c.bezierCurveTo(44,100,58,34,128,34);c.fill();c.stroke() + c.fillStyle=HOD;c.beginPath();c.ellipse(128,206,62,22,0,0,T);c.fill();c.stroke() + c.fillStyle=HOOD;c.beginPath();c.moveTo(96,196);c.quadraticCurveTo(56,206,48,262);c.lineTo(208,262);c.quadraticCurveTo(200,206,160,196);c.closePath();c.fill();c.stroke() + c.fillStyle=SKIN;c.beginPath();c.moveTo(114,168);c.lineTo(114,194);c.quadraticCurveTo(128,208,142,194);c.lineTo(142,168);c.fill();c.lineWidth=6;c.beginPath();c.moveTo(114,168);c.lineTo(114,192);c.moveTo(142,168);c.lineTo(142,192);c.stroke() + for(const d of[-1,1])ds(c,10,4,'#fff',()=>{c.moveTo(128+d*14,206);c.lineTo(128+d*16,240)}) + c.fillStyle='#fff';c.lineWidth=4;for(const d of[-1,1])c.beginPath(),c.roundRect(128+d*16-5,238,10,12,4),c.fill(),c.stroke() + c.save();c.translate(130,40);c.rotate(aw) + c.lineWidth=6;c.fillStyle=HAIR;c.beginPath();c.moveTo(-8,4);c.quadraticCurveTo(-14,-30,16,-34);c.quadraticCurveTo(-2,-24,8,4);c.closePath();c.fill();c.stroke() + c.restore() + c.lineWidth=7;c.fillStyle=SKIN;c.beginPath();c.moveTo(74,96);c.bezierCurveTo(70,152,100,184,128,186);c.bezierCurveTo(156,184,186,152,182,96);c.bezierCurveTo(182,44,74,44,74,96);c.fill();c.stroke() + eye(c,103,142,-1,gx);eye(c,153,142,1,gx) + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*44,164,13,7,0,0,T),c.fill() + c.lineWidth=3;for(const d of[-1,1])for(const k of[-5,0,5])c.beginPath(),c.moveTo(128+d*44+k-2,167),c.lineTo(128+d*44+k+2,161),c.stroke() + c.lineWidth=4.5;c.fillStyle='#c92a2a';c.beginPath();c.ellipse(130,172,7,6,0,0,T);c.fill();c.stroke() + c.lineWidth=7;c.fillStyle=HAIR;c.beginPath();c.moveTo(66,160) + c.bezierCurveTo(50,74,88,36,128,36);c.bezierCurveTo(168,36,206,74,190,160) + c.quadraticCurveTo(188,122,180,106);c.lineTo(168,112);c.lineTo(162,96);c.lineTo(148,108);c.lineTo(140,92);c.lineTo(128,108) + c.lineTo(116,92);c.lineTo(106,108);c.lineTo(94,96);c.lineTo(88,112);c.lineTo(78,106);c.quadraticCurveTo(70,128,66,160);c.closePath();c.fill();c.stroke() + c.strokeStyle=HL;c.lineWidth=6;for(const[s,e]of[[1.24,1.36],[1.44,1.52],[1.62,1.74]])c.beginPath(),c.arc(128,104,56,PI*s,PI*e),c.stroke() + c.strokeStyle='#111';c.lineWidth=5;c.beginPath();c.moveTo(86,124);c.lineTo(110,115);c.moveTo(146,115);c.lineTo(170,124);c.stroke() + c.fillStyle=SW;c.lineWidth=5;c.beginPath();c.moveTo(66,110);c.quadraticCurveTo(76,128,66,134);c.quadraticCurveTo(56,128,66,110);c.fill();c.stroke() + }) + const v=cos(2*T*t),g=v>0?1:-1 + if(abs(v)>.3)for(const r of[160,190])ds(c,8,3.5,'#fff',()=>{c.arc(sx,sy,r,min(a-g*.38,a-g*.2),max(a-g*.38,a-g*.2))}) + ds(c,26,15,HOOD,()=>{c.moveTo(sx,sy);c.lineTo(sx+70*cos(a+.28),sy+70*sin(a+.28));c.lineTo(hx,hy+4)}) + c.save();c.translate(hx+cos(a)*30,hy+sin(a)*30);c.rotate(a+PI/2) + c.fillStyle=PH;c.lineWidth=5;c.beginPath();c.roundRect(-22,-38,44,76,9);c.fill();c.stroke() + c.fillStyle=SCR;c.lineWidth=3.5;c.beginPath();c.roundRect(-16,-30,32,58,4);c.fill();c.stroke() + c.fillStyle='#ced4da';c.lineWidth=2.5;for(let k=0;k<4;k++)c.beginPath(),c.roundRect(-11+k*6,8-k*6,4.5,9+k*6,1.5),c.fill(),c.stroke() + ds(c,7,3.5,RED,()=>{c.moveTo(2,-24);c.lineTo(12,-14);c.moveTo(12,-24);c.lineTo(2,-14)}) + c.restore() + c.lineWidth=5;c.fillStyle=SKIN;c.beginPath();c.ellipse(hx,hy,12,13,a,0,T);c.fill();c.stroke() + const q=max(0,sin(T*t*2-1)) + c.save();c.translate(44,44-6*q);c.rotate(.2*sin(T*t*2)) + for(const[l,s]of[[13,'#111'],[6,RED]])c.lineWidth=l,c.strokeStyle=s,c.beginPath(),c.moveTo(-10,-12),c.quadraticCurveTo(-10,-24,2,-24),c.quadraticCurveTo(14,-24,12,-12),c.quadraticCurveTo(10,-4,1,0),c.lineTo(1,6),c.stroke() + c.fillStyle=RED;c.lineWidth=4;c.strokeStyle='#111';c.beginPath();c.arc(1,19,5,0,T);c.fill();c.stroke() + c.restore() +} diff --git a/gen/uianime/offline/cable.js b/gen/uianime/offline/cable.js new file mode 100644 index 0000000..9c30b63 --- /dev/null +++ b/gen/uianime/offline/cable.js @@ -0,0 +1,64 @@ +// confused girl with mint twin buns holding up an unplugged cable that crackles with little sparks, tilting her head side to side as ? marks pop +const{sin,cos,PI,max,min}=Math,T=2*PI +export const frames=12,delay=95 +const SKIN='#ffe3d1',HAIR='#63e6be',HD='#12b886',HL='#e6fcf5',EYE='#f06595',ED='#a61e4d',OV='#ffd43b',OD='#f59f00',BL='#ffa8a8',CAB='#dee2e6',PL='#f8f9fa',PR='#adb5bd',ZAP='#ffe066',Q=['#ff8787','#748ffc'],SW='#a5d8ff' +const ds=(c,a,b,s,f)=>{for(const[l,k]of[[a,'#111'],[b,s]])c.lineWidth=l,c.strokeStyle=k,c.beginPath(),f(),c.stroke();c.strokeStyle='#111'} +const eye=(c,x,y,d,gx)=>{ + c.fillStyle='#fff';c.beginPath();c.ellipse(x,y,14,17,0,0,T);c.fill() + c.save();c.beginPath();c.ellipse(x,y,14,17,0,0,T);c.clip();c.beginPath();c.ellipse(x+gx,y+2,11.5,15,0,0,T);c.fillStyle=EYE;c.fill();c.lineWidth=2.5;c.stroke() + c.fillStyle=ED;c.beginPath();c.ellipse(x+gx,y-8,13,9,0,0,T);c.fill() + c.fillStyle='#111';c.beginPath();c.ellipse(x+gx,y+3,4.5,6.5,0,0,T);c.fill() + c.fillStyle='#fff';c.beginPath();c.arc(x+gx-4,y-5,4.5,0,T);c.fill();c.beginPath();c.arc(x+gx+5,y+8,2,0,T);c.fill();c.restore() + c.lineWidth=6;c.beginPath();c.moveTo(x-16,y-6);c.quadraticCurveTo(x,y-20,x+16,y-6);c.moveTo(x+d*15,y-7);c.lineTo(x+d*21,y-12);c.stroke() + c.lineWidth=2.5;c.beginPath();c.moveTo(x-8,y+18);c.lineTo(x+8,y+18);c.stroke() +} +const qm=(c,x,y,s,col)=>{c.save();c.translate(x,y);c.scale(s,s) + for(const[l,k]of[[13,'#111'],[6,col]])c.lineWidth=l,c.strokeStyle=k,c.beginPath(),c.moveTo(-10,-12),c.quadraticCurveTo(-10,-24,2,-24),c.quadraticCurveTo(14,-24,12,-12),c.quadraticCurveTo(10,-4,1,0),c.lineTo(1,6),c.stroke() + c.fillStyle=col;c.lineWidth=4;c.strokeStyle='#111';c.beginPath();c.arc(1,19,5,0,T);c.fill();c.stroke();c.restore()} +const zap=(c,x,y,a,s)=>{c.save();c.translate(x,y);c.rotate(a);c.scale(s,s);c.fillStyle=ZAP;c.lineWidth=3;c.beginPath();for(const[u,v]of[[-2,-12],[7,-12],[2,-3],[8,-3],[-5,12],[-1,1],[-7,1]])c.lineTo(u,v);c.closePath();c.fill();c.stroke();c.restore()} +export default(c,t,i)=>{ + const k=i%6,tilt=(i<6?1:-1)*.1*min(1,k/1.5,(6-k)/1.5)*(k<1?0:1),side=i<6?1:-1 + const H=f=>{c.save();c.translate(108,198);c.scale(.82,.82);c.rotate(tilt);c.translate(-128,-186);f();c.restore()} + H(()=>{ + c.lineWidth=7;c.fillStyle=HAIR;for(const d of[-1,1])c.beginPath(),c.arc(128+d*58,58,28,0,T),c.fill(),c.stroke() + c.strokeStyle=HL;c.lineWidth=5;for(const d of[-1,1])c.beginPath(),c.arc(128+d*58,58,18,PI*1.1,PI*1.5),c.stroke();c.strokeStyle='#111' + c.lineWidth=7;c.fillStyle=HD;c.beginPath();c.moveTo(128,34);c.bezierCurveTo(198,34,212,100,206,158);c.quadraticCurveTo(204,180,184,180);c.lineTo(72,180);c.quadraticCurveTo(52,180,50,158);c.bezierCurveTo(44,100,58,34,128,34);c.fill();c.stroke() + }) + c.save();c.translate(108,198);c.scale(.82,.82);c.translate(-128,-186) + c.lineWidth=7;c.fillStyle='#fff';c.beginPath();c.moveTo(98,190);c.quadraticCurveTo(56,198,48,262);c.lineTo(208,262);c.quadraticCurveTo(200,198,158,190);c.closePath();c.fill();c.stroke() + c.fillStyle=OV;c.beginPath();c.moveTo(92,262);c.lineTo(96,222);c.lineTo(160,222);c.lineTo(164,262);c.closePath();c.fill();c.stroke() + for(const d of[-1,1])ds(c,14,6,OV,()=>{c.moveTo(128+d*30,224);c.lineTo(128+d*38,196)}) + c.fillStyle=OD;c.lineWidth=4;for(const d of[-1,1])c.beginPath(),c.arc(128+d*28,232,5,0,T),c.fill(),c.stroke() + c.fillStyle='#fff';c.lineWidth=4;c.beginPath();c.roundRect(116,236,24,16,5);c.fill();c.stroke() + c.fillStyle=SKIN;c.lineWidth=7;c.beginPath();c.moveTo(114,168);c.lineTo(114,194);c.quadraticCurveTo(128,206,142,194);c.lineTo(142,168);c.fill();c.beginPath();c.moveTo(114,168);c.lineTo(114,192);c.moveTo(142,168);c.lineTo(142,192);c.stroke() + c.restore() + H(()=>{ + c.lineWidth=7;c.fillStyle=SKIN;c.beginPath();c.moveTo(74,96);c.bezierCurveTo(70,152,100,184,128,186);c.bezierCurveTo(156,184,186,152,182,96);c.bezierCurveTo(182,44,74,44,74,96);c.fill();c.stroke() + eye(c,103,142,-1,4);eye(c,153,142,1,4) + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*44,164,13,7,0,0,T),c.fill() + c.lineWidth=3;for(const d of[-1,1])for(const k of[-5,0,5])c.beginPath(),c.moveTo(128+d*44+k-2,167),c.lineTo(128+d*44+k+2,161),c.stroke() + c.lineWidth=4.5;c.beginPath();c.moveTo(114,172);c.quadraticCurveTo(119,166,124,172);c.quadraticCurveTo(129,178,134,172);c.quadraticCurveTo(139,166,144,172);c.stroke() + c.lineWidth=7;c.fillStyle=HAIR;c.beginPath();c.moveTo(68,156) + c.bezierCurveTo(52,74,88,36,128,36);c.bezierCurveTo(168,36,204,74,188,156) + c.quadraticCurveTo(186,120,178,104);c.quadraticCurveTo(170,106,164,112);c.quadraticCurveTo(158,98,148,92);c.quadraticCurveTo(142,104,134,110) + c.quadraticCurveTo(128,98,120,92);c.quadraticCurveTo(114,104,106,110);c.quadraticCurveTo(100,98,92,96);c.quadraticCurveTo(88,106,84,112) + c.quadraticCurveTo(80,104,78,104);c.quadraticCurveTo(70,126,68,156);c.closePath();c.fill();c.stroke() + c.strokeStyle=HL;c.lineWidth=6;for(const[s,e]of[[1.24,1.36],[1.44,1.52],[1.62,1.74]])c.beginPath(),c.arc(128,104,56,PI*s,PI*e),c.stroke() + c.strokeStyle='#111';c.lineWidth=5;c.beginPath();c.moveTo(88,120);c.quadraticCurveTo(100,110,114,116);c.moveTo(144,120);c.lineTo(168,122);c.stroke() + c.fillStyle=SW;c.lineWidth=5;c.beginPath();c.moveTo(190,104);c.quadraticCurveTo(200,122,190,128);c.quadraticCurveTo(180,122,190,104);c.fill();c.stroke() + }) + ds(c,22,12,SKIN,()=>{c.moveTo(160,240);c.lineTo(214,214);c.lineTo(206,176)}) + ds(c,20,11,CAB,()=>{c.moveTo(206,176);c.bezierCurveTo(200,236,246,214,244,256)}) + c.save();c.translate(206,146);c.rotate(.22) + c.fillStyle=PR;c.lineWidth=4;for(const d of[-1,1])c.beginPath(),c.roundRect(d*8-3.5,-36,7,18,2),c.fill(),c.stroke() + c.fillStyle=PL;c.lineWidth=5;c.beginPath();c.roundRect(-18,-22,36,34,8);c.fill();c.stroke() + c.lineWidth=3;c.beginPath();c.moveTo(-10,-2);c.lineTo(10,-2);c.moveTo(-10,4);c.lineTo(10,4);c.stroke() + const b=i%2*.3 + for(let m=0;m<5;m++){const an=-PI/2+(m-2)*.6+b,r=24+(m+i)%2*7;ds(c,8,4,ZAP,()=>{c.moveTo(cos(an)*15,-40+sin(an)*15);c.lineTo(cos(an)*r,-40+sin(an)*r)})} + zap(c,i%2?-24:24,-52,i%2?-.4:.4,1.3) + c.restore() + c.lineWidth=5;c.fillStyle=SKIN;c.beginPath();c.ellipse(206,170,13,12,.2,0,T);c.fill();c.stroke() + c.beginPath();c.ellipse(196,164,5,8,-.6,0,T);c.fill();c.stroke() + const p=k/6,s=min(1,p*4)*(1-max(0,p-.75)*4) + if(s>.05)qm(c,side>0?42:172,62-14*p,.6+.5*s,Q[i<6?0:1]) +} diff --git a/gen/uianime/order/delivery.js b/gen/uianime/order/delivery.js new file mode 100644 index 0000000..996e87e --- /dev/null +++ b/gen/uianime/order/delivery.js @@ -0,0 +1,65 @@ +// brown haired delivery girl in a blue cap hugging a parcel under one arm and snapping a crisp salute to her brim, a twinkle popping off it +const{sin,cos,PI,max,min,atan2}=Math,T=2*PI +export const frames=16,delay=80 +const SKIN='#ffe3d1',HAIR='#8d5a3b',HD='#6b3f26',HL='#e0b08f',EYE='#fab005',ED='#e67700',CAP='#339af0',CD='#1971c2',BOX='#e8b07a',BD='#c47f45',TAPE='#fff3bf',BL='#ffa8a8',MO='#c92a2a',TG='#ff8fab' +const ds=(c,a,b,s,f)=>{for(const[l,k]of[[a,'#111'],[b,s]])c.lineWidth=l,c.strokeStyle=k,c.beginPath(),f(),c.stroke();c.strokeStyle='#111'} +const ez=(t,a,b)=>{const x=min(1,max(0,(t-a)/(b-a)));return x*x*(3-2*x)} +const eye=(c,x,y,d)=>{ + c.fillStyle='#fff';c.beginPath();c.ellipse(x,y,14,17,0,0,T);c.fill() + c.save();c.beginPath();c.ellipse(x,y+2,11.5,15,0,0,T);c.clip();c.fillStyle=EYE;c.fill();c.fillStyle=ED;c.beginPath();c.ellipse(x,y-8,13,10,0,0,T);c.fill();c.restore() + c.lineWidth=2.5;c.beginPath();c.ellipse(x,y+2,11.5,15,0,0,T);c.stroke() + c.fillStyle='#111';c.beginPath();c.ellipse(x,y+3,5.5,7.5,0,0,T);c.fill() + c.fillStyle='#fff';c.beginPath();c.arc(x-4,y-5,4.5,0,T);c.fill();c.beginPath();c.arc(x+5,y+8,2,0,T);c.fill() + c.lineWidth=6;c.beginPath();c.moveTo(x-16,y-6);c.quadraticCurveTo(x,y-20,x+16,y-6);c.moveTo(x+d*15,y-7);c.lineTo(x+d*21,y-12);c.stroke() + c.lineWidth=2.5;c.beginPath();c.moveTo(x-8,y+18);c.lineTo(x+8,y+18);c.stroke() +} +const glint=(c,x,y,r,a)=>{c.save();c.translate(x,y);c.rotate(a);c.beginPath();for(let k=0;k<8;k++){const rr=k%2?r*.28:r,b=k*PI/4;c.lineTo(cos(b)*rr,sin(b)*rr)}c.closePath();c.restore();c.fill();c.stroke()} +export default(c,t)=>{ + const u=ez(t,0,.14)-ez(t,.84,.98),g=t>=.14&&t<.5?sin(PI*(t-.14)/.36):0 + c.lineWidth=6;c.fillStyle=HD;c.beginPath();c.moveTo(128,34);c.bezierCurveTo(196,34,208,96,202,170);c.quadraticCurveTo(192,182,182,172);c.lineTo(74,172);c.quadraticCurveTo(64,182,54,170);c.bezierCurveTo(48,96,60,34,128,34);c.fill();c.stroke() + c.lineWidth=6;c.fillStyle=CAP;c.beginPath();c.moveTo(100,190);c.quadraticCurveTo(62,198,54,250);c.lineTo(202,250);c.quadraticCurveTo(194,198,156,190);c.closePath();c.fill();c.stroke() + c.fillStyle='#fff';for(const d of[-1,1])c.beginPath(),c.moveTo(128,206),c.lineTo(128+d*30,188),c.lineTo(128+d*34,204),c.closePath(),c.fill(),c.stroke() + c.strokeStyle=CD;c.lineWidth=4;c.beginPath();c.moveTo(128,208);c.lineTo(128,226);c.stroke();c.strokeStyle='#111' + c.fillStyle=SKIN;c.lineWidth=5;c.beginPath();c.moveTo(116,168);c.lineTo(116,192);c.lineTo(128,206);c.lineTo(140,192);c.lineTo(140,168);c.fill();c.beginPath();c.moveTo(116,168);c.lineTo(116,190);c.moveTo(140,168);c.lineTo(140,190);c.stroke() + c.fillStyle='#fff';c.beginPath();c.roundRect(154,214,30,20,4);c.fill();c.stroke() + c.strokeStyle=CAP;c.lineWidth=3;c.beginPath();c.moveTo(160,221);c.lineTo(178,221);c.moveTo(160,228);c.lineTo(172,228);c.stroke();c.strokeStyle='#111' + c.lineWidth=6;c.fillStyle=SKIN;c.beginPath();c.moveTo(74,96);c.bezierCurveTo(70,152,100,184,128,186);c.bezierCurveTo(156,184,186,152,182,96);c.bezierCurveTo(182,44,74,44,74,96);c.fill();c.stroke() + eye(c,103,142,-1);eye(c,153,142,1) + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*42,163,12,6,0,0,T),c.fill() + c.lineWidth=2.5;for(const d of[-1,1])for(const k of[-5,0,5])c.beginPath(),c.moveTo(128+d*42+k-2,166),c.lineTo(128+d*42+k+2,160),c.stroke() + c.lineWidth=3.5;c.fillStyle=MO;c.beginPath();c.moveTo(117,167);c.quadraticCurveTo(128,172,139,167);c.quadraticCurveTo(137,182,128,182);c.quadraticCurveTo(119,182,117,167);c.fill();c.stroke() + c.save();c.clip();c.fillStyle=TG;c.beginPath();c.ellipse(128,183,7,5,0,0,T);c.fill();c.restore() + c.lineWidth=6;c.fillStyle=HAIR;c.beginPath();c.moveTo(70,150) + c.bezierCurveTo(56,96,70,80,96,80);c.lineTo(160,80);c.bezierCurveTo(186,80,200,96,186,150) + c.quadraticCurveTo(184,120,178,106);c.quadraticCurveTo(170,106,164,114);c.quadraticCurveTo(160,102,150,96);c.quadraticCurveTo(144,106,136,112) + c.quadraticCurveTo(132,100,124,94);c.quadraticCurveTo(118,104,110,110);c.quadraticCurveTo(106,100,96,98);c.quadraticCurveTo(90,106,86,114) + c.quadraticCurveTo(80,106,78,106);c.quadraticCurveTo(70,124,70,150);c.closePath();c.fill();c.stroke() + c.fillStyle=CAP;c.beginPath();c.moveTo(66,96);c.bezierCurveTo(56,30,200,30,190,96);c.closePath();c.fill();c.stroke() + c.strokeStyle='#fff';c.lineWidth=5;c.beginPath();c.arc(128,96,56,PI*1.25,PI*1.4);c.stroke();c.strokeStyle='#111' + c.fillStyle=CD;c.beginPath();c.moveTo(56,96);c.quadraticCurveTo(128,78,200,96);c.quadraticCurveTo(206,108,196,114);c.quadraticCurveTo(128,98,60,114);c.quadraticCurveTo(50,108,56,96);c.fill();c.stroke() + c.strokeStyle='#74c0fc';c.lineWidth=3;c.beginPath();c.moveTo(78,100);c.quadraticCurveTo(128,90,178,100);c.stroke();c.strokeStyle='#111' + c.fillStyle='#fff';c.lineWidth=4;c.beginPath();c.arc(128,66,12,0,T);c.fill();c.stroke() + c.fillStyle=CAP;c.lineWidth=2.5;c.beginPath();c.moveTo(121,62);c.lineTo(128,58);c.lineTo(135,62);c.lineTo(135,72);c.lineTo(121,72);c.closePath();c.fill();c.stroke() + // salute arm + const ex=200+30*u,ey=246-84*u,hx=176+22*u,hy=268-150*u,a=atan2(hy-ey,hx-ex) + ds(c,30,19,CAP,()=>{c.moveTo(176,214);c.lineTo(ex,ey);c.lineTo(ex+(hx-ex)*.7,ey+(hy-ey)*.7)}) + c.save();c.translate(hx,hy);c.rotate(a-.45*u) + c.lineWidth=5;c.fillStyle=SKIN;c.beginPath();c.roundRect(-10,-10,44,20,10);c.fill();c.stroke() + c.beginPath();c.ellipse(4,10,10,5,.3,0,T);c.fill();c.stroke() + c.lineWidth=2.5;c.beginPath();c.moveTo(14,-3);c.lineTo(32,-3);c.moveTo(14,3);c.lineTo(32,3);c.stroke() + c.restore() + if(g>0){c.fillStyle='#fff9db';c.lineWidth=3.5;glint(c,214,80,6+14*g,g*2) + ds(c,8,3.5,'#fff',()=>{for(const b of[-2.2,-1.6,-1])c.moveTo(186+36*cos(b),104+36*sin(b)),c.lineTo(186+(44+6*g)*cos(b),104+(44+6*g)*sin(b))})} + // parcel under the other arm + ds(c,30,19,CAP,()=>{c.moveTo(84,208);c.lineTo(42,230)}) + c.save();c.translate(86,224);c.rotate(-.05) + c.lineWidth=6;c.fillStyle=BOX;c.beginPath();c.rect(-50,-20,100,52);c.fill();c.stroke() + c.fillStyle=BD;c.beginPath();c.moveTo(-50,-20);c.lineTo(-38,-34);c.lineTo(62,-34);c.lineTo(50,-20);c.closePath();c.fill();c.stroke() + c.fillStyle=TAPE;c.lineWidth=4;c.beginPath();c.rect(-10,-20,20,52);c.fill();c.stroke() + c.beginPath();c.moveTo(-6,-34);c.lineTo(12,-34);c.lineTo(4,-20);c.lineTo(-14,-20);c.closePath();c.fill();c.stroke() + c.fillStyle='#fff';c.beginPath();c.roundRect(18,-10,26,22,3);c.fill();c.stroke() + c.strokeStyle=BD;c.lineWidth=3;c.beginPath();c.moveTo(31,7);c.lineTo(31,-5);c.moveTo(25,1);c.lineTo(31,-6);c.lineTo(37,1);c.stroke();c.strokeStyle='#111' + c.lineWidth=5;c.fillStyle=SKIN;c.beginPath();c.ellipse(-50,8,10,14,0,0,T);c.fill();c.stroke() + for(const y of[-2,9,20])c.beginPath(),c.ellipse(-40,y,9,5,0,0,T),c.fill(),c.stroke() + c.restore() +} diff --git a/gen/uianime/payment/tap.js b/gen/uianime/payment/tap.js new file mode 100644 index 0000000..083f442 --- /dev/null +++ b/gen/uianime/payment/tap.js @@ -0,0 +1,63 @@ +// magenta haired girl taps her card on a payment terminal, contactless waves ripple out, the screen flips green and a big check pops up as she beams +const{sin,cos,PI,max,min}=Math,T=2*PI +export const frames=16,delay=80 +const SKIN='#ffe3d1',HAIR='#da77f2',HD='#ae3ec9',HL='#f8f0fc',EYE='#51cf66',ED='#2b8a3e',SWT='#ff8787',SD='#fa5252',BAND='#ffd43b',BL='#ffa8a8',MO='#c92a2a',TG='#ff8fab',TER='#ced4da',TD='#868e96',SCR='#364fc7',OK='#51cf66',CARD='#4dabf7',CHIP='#ffd43b' +const ds=(c,a,b,s,f)=>{for(const[l,k]of[[a,'#111'],[b,s]])c.lineWidth=l,c.strokeStyle=k,c.beginPath(),f(),c.stroke();c.strokeStyle='#111'} +const ez=(t,a,b)=>{const x=min(1,max(0,(t-a)/(b-a)));return x*x*(3-2*x)} +const eye=(c,x,y,d)=>{ + c.fillStyle='#fff';c.beginPath();c.ellipse(x,y,14,17,0,0,T);c.fill() + c.save();c.beginPath();c.ellipse(x+3,y+3,11.5,15,0,0,T);c.clip();c.fillStyle=EYE;c.fill();c.fillStyle=ED;c.beginPath();c.ellipse(x+3,y-7,13,10,0,0,T);c.fill();c.restore() + c.lineWidth=2.5;c.beginPath();c.ellipse(x+3,y+3,11.5,15,0,0,T);c.stroke() + c.fillStyle='#111';c.beginPath();c.ellipse(x+5,y+4,5.5,7.5,0,0,T);c.fill() + c.fillStyle='#fff';c.beginPath();c.arc(x,y-4,4.5,0,T);c.fill();c.beginPath();c.arc(x+8,y+10,2,0,T);c.fill() + c.lineWidth=6;c.beginPath();c.moveTo(x-16,y-6);c.quadraticCurveTo(x,y-20,x+16,y-6);c.moveTo(x+d*15,y-7);c.lineTo(x+d*21,y-12);c.stroke() + c.lineWidth=2.5;c.beginPath();c.moveTo(x-8,y+18);c.lineTo(x+8,y+18);c.stroke() +} +const check=(c,x,y,s)=>ds(c,9*s,4.5*s,'#fff',()=>{c.moveTo(x-9*s,y);c.lineTo(x-3*s,y+7*s);c.lineTo(x+10*s,y-7*s)}) +export default(c,t)=>{ + const k=ez(t,.04,.22)-ez(t,.84,.97),ok=t>=.28&&t<.9,q=min(1,max(0,(t-.28)/.12)),bs=ok?(1+2.7*(q-1)**3+1.7*(q-1)**2)*(1-ez(t,.8,.9)):0 + c.save();c.translate(96,254);c.scale(.86,.86);c.translate(-128,-250) + c.lineWidth=6;c.fillStyle=HD;c.beginPath();c.moveTo(128,34);c.bezierCurveTo(198,34,212,96,206,150);c.quadraticCurveTo(214,200,204,250);c.lineTo(52,250);c.quadraticCurveTo(42,200,50,150);c.bezierCurveTo(44,96,58,34,128,34);c.fill();c.stroke() + c.fillStyle=SWT;c.beginPath();c.moveTo(100,190);c.quadraticCurveTo(62,198,54,250);c.lineTo(202,250);c.quadraticCurveTo(194,198,156,190);c.closePath();c.fill();c.stroke() + c.fillStyle='#fff';for(const d of[-1,1])c.beginPath(),c.moveTo(128,204),c.quadraticCurveTo(128+d*18,186,128+d*32,190),c.quadraticCurveTo(128+d*30,206,128,212),c.closePath(),c.fill(),c.stroke() + c.strokeStyle=SD;c.lineWidth=4;for(const y of[226,240])c.beginPath(),c.moveTo(70,y),c.lineTo(190,y),c.stroke();c.strokeStyle='#111' + c.lineWidth=5;c.fillStyle=SKIN;c.beginPath();c.moveTo(116,168);c.lineTo(116,194);c.quadraticCurveTo(128,204,140,194);c.lineTo(140,168);c.fill();c.beginPath();c.moveTo(116,168);c.lineTo(116,192);c.moveTo(140,168);c.lineTo(140,192);c.stroke() + c.lineWidth=6;c.fillStyle=SKIN;c.beginPath();c.moveTo(74,96);c.bezierCurveTo(70,152,100,184,128,186);c.bezierCurveTo(156,184,186,152,182,96);c.bezierCurveTo(182,44,74,44,74,96);c.fill();c.stroke() + if(ok){c.lineWidth=6;for(const x of[103,153])c.beginPath(),c.arc(x,148,14,PI*1.15,PI*1.85),c.stroke()}else eye(c,103,140,-1),eye(c,153,140,1) + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*42,162,12,6,0,0,T),c.fill() + c.lineWidth=2.5;for(const d of[-1,1])for(const k of[-5,0,5])c.beginPath(),c.moveTo(128+d*42+k-2,165),c.lineTo(128+d*42+k+2,159),c.stroke() + if(ok){c.lineWidth=3.5;c.fillStyle=MO;c.beginPath();c.moveTo(116,165);c.quadraticCurveTo(128,170,140,165);c.quadraticCurveTo(138,184,128,184);c.quadraticCurveTo(118,184,116,165);c.fill();c.stroke();c.save();c.clip();c.fillStyle=TG;c.beginPath();c.ellipse(128,185,7,5,0,0,T);c.fill();c.restore()} + else{c.lineWidth=3.5;c.beginPath();c.moveTo(122,169);c.quadraticCurveTo(128,173,134,169);c.stroke()} + c.lineWidth=6;c.fillStyle=HAIR;c.beginPath();c.moveTo(66,196) + c.bezierCurveTo(48,74,88,36,128,36);c.bezierCurveTo(168,36,208,74,190,196);c.quadraticCurveTo(182,184,178,192) + c.quadraticCurveTo(184,124,178,104);c.quadraticCurveTo(170,104,164,112);c.quadraticCurveTo(160,98,150,92);c.quadraticCurveTo(144,104,136,110) + c.quadraticCurveTo(132,96,124,90);c.quadraticCurveTo(118,102,110,108);c.quadraticCurveTo(106,96,96,94);c.quadraticCurveTo(90,104,86,112) + c.quadraticCurveTo(80,104,78,104);c.quadraticCurveTo(72,124,78,192);c.quadraticCurveTo(72,184,66,196);c.closePath();c.fill();c.stroke() + c.strokeStyle=HL;c.lineWidth=5;for(const[a,e]of[[1.24,1.36],[1.44,1.52],[1.62,1.74]])c.beginPath(),c.arc(128,104,56,PI*a,PI*e),c.stroke() + c.strokeStyle='#111';c.fillStyle=BAND;c.lineWidth=5;c.beginPath();c.moveTo(70,80);c.bezierCurveTo(90,48,166,48,186,80);c.lineTo(182,92);c.bezierCurveTo(162,64,94,64,74,92);c.closePath();c.fill();c.stroke() + c.restore() + // card arm + const cx=186+8*k,cy=104+44*k,ca=-.35+.3*k + ds(c,27,17,SWT,()=>{c.moveTo(138,228);c.lineTo(156,210);c.lineTo(cx-18,cy+22)}) + // terminal + c.lineWidth=6;c.fillStyle=TER;c.beginPath();c.roundRect(158,150,80,100,14);c.fill();c.stroke() + c.fillStyle=ok?OK:SCR;c.lineWidth=4;c.beginPath();c.roundRect(168,160,60,40,6);c.fill();c.stroke() + if(ok)check(c,198,180,1.1);else ds(c,6,2.5,'#fff',()=>{for(const r of[6,12])c.arc(190,182,r,-.7,.7)}) + c.fillStyle='#fff';c.lineWidth=3;for(let r=0;r<2;r++)for(let j=0;j<3;j++)c.beginPath(),c.roundRect(172+j*19,210+r*16,14,10,3),c.fill(),c.stroke() + // contactless ripples on the tap + if(t>=.16&&t<.36){const p=(t-.16)/.2;ds(c,7,3,'#fff',()=>{for(const r of[28,38,48]){const R=r+8*p;c.moveTo(cx+R*cos(-2.3),cy+R*sin(-2.3));c.arc(cx,cy,R,-2.3,-.84)}})} + // card + hand + c.save();c.translate(cx,cy);c.rotate(ca) + c.lineWidth=5;c.fillStyle=CARD;c.beginPath();c.roundRect(-32,-20,64,40,7);c.fill();c.stroke() + c.fillStyle='#fff';c.beginPath();c.rect(-32,-10,64,7);c.fill() + c.fillStyle=CHIP;c.lineWidth=3;c.beginPath();c.roundRect(-22,2,14,11,2);c.fill();c.stroke() + c.lineWidth=5;c.fillStyle=SKIN;c.beginPath();c.ellipse(-26,12,12,11,0,0,T);c.fill();c.stroke() + c.beginPath();c.ellipse(-16,4,9,5,-.4,0,T);c.fill();c.stroke() + c.restore() + // check badge pops up + if(bs>.02){c.save();c.translate(206,56);c.scale(bs,bs) + c.fillStyle=OK;c.lineWidth=6;c.beginPath();c.arc(0,0,30,0,T);c.fill();c.stroke() + c.strokeStyle='#fff';c.lineWidth=4;c.beginPath();c.arc(0,0,22,PI*1.1,PI*1.4);c.stroke() + check(c,1,2,1.5);c.restore() + c.fillStyle='#ffd43b';c.lineWidth=3.5;for(const[x,y,o]of[[160,30,0],[244,98,.3]]){const r=12*sin(PI*min(1,max(0,(t-.32-o*.2)/.4)));if(r>.5)c.beginPath(),c.moveTo(x,y-r),c.quadraticCurveTo(x+r*.15,y-r*.15,x+r,y),c.quadraticCurveTo(x+r*.15,y+r*.15,x,y+r),c.quadraticCurveTo(x-r*.15,y+r*.15,x-r,y),c.quadraticCurveTo(x-r*.15,y-r*.15,x,y-r),c.fill(),c.stroke()}} +} diff --git a/gen/uianime/phone/waiting.js b/gen/uianime/phone/waiting.js new file mode 100644 index 0000000..0cdad59 --- /dev/null +++ b/gen/uianime/phone/waiting.js @@ -0,0 +1,56 @@ +// indigo haired girl in a comfy hoodie staring half-lidded at her phone, pulls to refresh, still no notifications, and lets out a big sigh +const{sin,PI,min}=Math,T=2*PI +export const frames=16,delay=90 +const SKIN='#ffe3d1',HAIR='#748ffc',HD='#4c6ef5',HL='#dbe4ff',EYE='#f783ac',ED='#c2255c',BL='#ffa8a8',HO='#96f2d7',HOD='#20c997',PH='#ffd43b',SCR='#e7f5ff' +const E=x=>x<=0?0:x>=1?1:x*x*(3-2*x) +const ds=(c,a,b,s,f)=>{for(const[l,k]of[[a,'#111'],[b,s]])c.lineWidth=l,c.strokeStyle=k,c.beginPath(),f(),c.stroke();c.strokeStyle='#111'} +const eye=(c,x,y,d,l)=>{ + const ly=y-17+30*l + c.save();c.beginPath();c.moveTo(x-24,ly+3);c.quadraticCurveTo(x,ly,x+24,ly+3);c.lineTo(x+24,y+30);c.lineTo(x-24,y+30);c.clip() + c.fillStyle='#fff';c.beginPath();c.ellipse(x,y,14,17,0,0,T);c.fill() + c.beginPath();c.ellipse(x+3,y+5,11.5,14,0,0,T);c.fillStyle=EYE;c.fill();c.lineWidth=2.5;c.stroke() + c.fillStyle=ED;c.beginPath();c.ellipse(x+3,y-4,12,9,0,0,T);c.fill() + c.fillStyle='#111';c.beginPath();c.ellipse(x+4,y+7,5.5,7,0,0,T);c.fill() + c.fillStyle='#fff';c.beginPath();c.arc(x,y+2,4,0,T);c.fill();c.restore() + c.lineWidth=7;c.beginPath();c.moveTo(x-16,ly+3);c.quadraticCurveTo(x,ly,x+16,ly+3);c.moveTo(x+d*15,ly+3);c.lineTo(x+d*20,ly+5);c.stroke() + c.lineWidth=2.5;c.beginPath();c.moveTo(x-8,y+18);c.lineTo(x+8,y+18);c.stroke() +} +const puff=(c,x,y,s)=>{c.fillStyle='#fff';c.lineWidth=4;c.beginPath();for(const[ox,oy,r]of[[-9,3,9],[2,-4,11],[12,4,8]])c.moveTo(x+(ox+r)*s,y+oy*s),c.arc(x+ox*s,y+oy*s,r*s,0,T);c.stroke();c.fill()} +export default(c,t,i)=>{ + const sg=E((t-.42)/.08)-E((t-.66)/.1),dr=5*sg,bk=i==13 + c.save();c.translate(128,150+dr*.6);c.scale(.76,.76);c.translate(-128,-186) + c.lineWidth=8;c.fillStyle=HD;c.beginPath();c.moveTo(128,34);c.bezierCurveTo(204,34,216,110,210,190);c.quadraticCurveTo(214,226,196,232);c.lineTo(60,232);c.quadraticCurveTo(42,226,46,190);c.bezierCurveTo(40,110,52,34,128,34);c.fill();c.stroke() + c.fillStyle=HO;c.beginPath();c.moveTo(96,188);c.quadraticCurveTo(46,196,36,310);c.lineTo(220,310);c.quadraticCurveTo(210,196,160,188);c.closePath();c.fill();c.stroke() + c.fillStyle=HOD;c.beginPath();c.moveTo(84,194);c.quadraticCurveTo(128,236,172,194);c.quadraticCurveTo(160,186,150,186);c.quadraticCurveTo(128,206,106,186);c.quadraticCurveTo(96,186,84,194);c.fill();c.stroke() + c.fillStyle=SKIN;c.beginPath();c.moveTo(116,166);c.lineTo(116,190);c.quadraticCurveTo(128,204,140,190);c.lineTo(140,166);c.fill();c.beginPath();c.moveTo(116,166);c.lineTo(116,188);c.moveTo(140,166);c.lineTo(140,188);c.stroke() + for(const d of[-1,1])ds(c,10,4,'#fff',()=>{c.moveTo(128+d*16,214);c.lineTo(128+d*18,250-d*4)}) + c.save();c.translate(0,dr);c.translate(128,186);c.rotate(.05-.04*sg);c.translate(-128,-186) + c.lineWidth=8;c.fillStyle=SKIN;c.beginPath();c.moveTo(74,96);c.bezierCurveTo(70,152,100,184,128,186);c.bezierCurveTo(156,184,186,152,182,96);c.bezierCurveTo(182,44,74,44,74,96);c.fill();c.stroke() + if(sg>.5){c.lineWidth=7;for(const x of[103,153])c.beginPath(),c.moveTo(x-15,146),c.quadraticCurveTo(x,151,x+15,146),c.stroke()} + else{const l=bk?.95:.36;eye(c,103,140,-1,l);eye(c,153,140,1,l)} + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*44,163,12,6,0,0,T),c.fill() + c.lineWidth=5;c.fillStyle='#c92a2a';c.beginPath() + if(sg>.2)c.ellipse(124,172,6*sg+2,7*sg+2,0,0,T),c.fill(),c.stroke() + else c.moveTo(120,172),c.quadraticCurveTo(128,168,136,172),c.stroke() + c.lineWidth=8;c.fillStyle=HAIR;c.beginPath();c.moveTo(64,170) + c.bezierCurveTo(46,74,88,38,128,38);c.bezierCurveTo(168,38,210,74,192,170) + c.quadraticCurveTo(190,124,180,104);c.quadraticCurveTo(172,100,168,90);c.quadraticCurveTo(160,104,148,106);c.quadraticCurveTo(140,96,134,86) + c.quadraticCurveTo(126,102,114,106);c.quadraticCurveTo(108,94,98,90);c.quadraticCurveTo(92,102,78,104);c.quadraticCurveTo(66,130,64,170);c.closePath();c.fill();c.stroke() + c.strokeStyle=HL;c.lineWidth=7;for(const[a,e]of[[1.24,1.36],[1.44,1.52],[1.62,1.74]])c.beginPath(),c.arc(128,104,58,PI*a,PI*e),c.stroke() + c.strokeStyle='#111';c.restore();c.restore() + // phone with an empty bell, a pull to refresh that finds nothing + c.save();c.translate(178,200+dr*.4);c.rotate(.12) + c.lineWidth=6;c.fillStyle=PH;c.beginPath();c.roundRect(-30,-50,60,96,10);c.fill();c.stroke() + c.fillStyle=SCR;c.lineWidth=3.5;c.beginPath();c.roundRect(-22,-40,44,72,4);c.fill();c.stroke() + c.fillStyle='#dee2e6';c.beginPath();c.moveTo(-13,6);c.quadraticCurveTo(-13,-20,0,-20);c.quadraticCurveTo(13,-20,13,6);c.lineTo(16,11);c.lineTo(-16,11);c.closePath();c.fill();c.stroke() + c.beginPath();c.arc(0,15,3.5,0,T);c.fill();c.stroke() + c.strokeStyle='#adb5bd';c.lineWidth=4;c.beginPath();c.moveTo(-12,24);c.lineTo(12,24);c.stroke();c.strokeStyle='#111' + if(t>.12&&t<.36){const a=t*T*5;c.strokeStyle='#4dabf7';c.lineWidth=4;c.beginPath();c.arc(0,-30,6,a,a+PI*1.5);c.stroke();c.strokeStyle='#111'} + c.restore() + ds(c,24,15,HO,()=>{c.moveTo(118,258);c.lineTo(150,232)}) + ds(c,24,15,HO,()=>{c.moveTo(240,258);c.lineTo(212,226)}) + c.fillStyle=SKIN;c.lineWidth=5;c.beginPath();c.ellipse(152,228,11,12,0,0,T);c.fill();c.stroke() + c.beginPath();c.ellipse(210,222,11,12,0,0,T);c.fill();c.stroke() + // sigh puff drifting away + if(t>.46&&t<.82){const p=(t-.46)/.36;puff(c,96-56*p,148-40*p,.8+.8*sin(PI*min(1,p*1.2)))} +} diff --git a/gen/uianime/plate/empty.js b/gen/uianime/plate/empty.js new file mode 100644 index 0000000..67ad14d --- /dev/null +++ b/gen/uianime/plate/empty.js @@ -0,0 +1,72 @@ +// pink odango girl with a napkin bib bouncing eagerly with fork and knife raised, then looking down at her empty plate and tearing up +const{PI}=Math,T=2*PI +export const frames=16,delay=85 +const SKIN='#ffe3d1',HAIR='#ff8fab',HD='#f06595',HL='#ffdeeb',EYE='#9775fa',ED='#6741d9',BL='#ffa8a8',DR='#74c0fc',TB='#ffd8a8',TBD='#e0a96d',RM='#99e9f2',SV='#dee2e6',MO='#c92a2a',TG='#ff8fab',TR='#a5d8ff' +const E=x=>x<=0?0:x>=1?1:x*x*(3-2*x) +const ds=(c,a,b,s,f)=>{for(const[l,k]of[[a,'#111'],[b,s]])c.lineWidth=l,c.strokeStyle=k,c.beginPath(),f(),c.stroke();c.strokeStyle='#111'} +const sp=(c,x,y,r)=>{c.beginPath();c.moveTo(x,y-r);for(const[a,b]of[[1,0],[0,1],[-1,0],[0,-1]])c.quadraticCurveTo(x+(a+b)*r*.16,y+(b-a)*r*.16,x+a*r,y+b*r);c.fill();c.stroke()} +const eye=(c,x,y,d,s,o)=>{ + c.fillStyle='#fff';c.beginPath();c.ellipse(x,y,14,17,0,0,T);c.fill() + c.save();c.clip();c.beginPath();c.ellipse(x,y+3+o,11.5,15,0,0,T);c.fillStyle=EYE;c.fill();c.lineWidth=2.5;c.stroke() + c.fillStyle=ED;c.beginPath();c.ellipse(x,y-7+o,13,9,0,0,T);c.fill() + c.fillStyle='#111';c.beginPath();c.ellipse(x,y+4+o,5.5,7.5,0,0,T);c.fill() + c.fillStyle='#fff';if(s){c.lineWidth=2;sp(c,x-3,y-2,8);c.beginPath();c.arc(x+5,y+9,2.5,0,T);c.fill()} + else{c.beginPath();c.arc(x-4,y-4+o,5.5,0,T);c.fill();c.beginPath();c.arc(x+5,y+3+o,3,0,T);c.fill();c.fillStyle=TR;c.beginPath();c.ellipse(x,y+17,16,7,0,0,T);c.fill();c.strokeStyle='#fff';c.lineWidth=2.5;c.beginPath();c.moveTo(x-12,y+11);c.quadraticCurveTo(x-6,y+8,x,y+11);c.quadraticCurveTo(x+6,y+14,x+12,y+11);c.stroke()} + c.restore() + c.lineWidth=7;c.beginPath();c.moveTo(x-16,y-6);c.quadraticCurveTo(x,y-20,x+16,y-6);c.moveTo(x+d*15,y-7);c.lineTo(x+d*21,y-12);c.stroke() +} +// fork or knife standing up in a fist +const ute=(c,x,y,a,k)=>{ + c.save();c.translate(x,y);c.rotate(a) + ds(c,13,6,SV,()=>{c.moveTo(0,0);c.lineTo(0,-44)}) + c.fillStyle=SV;c.lineWidth=4.5;c.beginPath() + if(k)c.moveTo(-6,-42),c.lineTo(-6,-92),c.quadraticCurveTo(8,-86,7,-58),c.lineTo(6,-42),c.closePath() + else{for(const[l,k]of[[10,'#111'],[4,SV]]){c.lineWidth=l;c.strokeStyle=k;c.beginPath();for(const q of[-9,0,9])c.moveTo(q,-62),c.lineTo(q,-92);c.stroke()}c.strokeStyle='#111';c.lineWidth=4.5;c.beginPath();c.moveTo(-13,-64);c.lineTo(13,-64);c.quadraticCurveTo(13,-42,0,-42);c.quadraticCurveTo(-13,-42,-13,-64);c.closePath()} + c.fill();c.stroke();c.restore() +} +export default(c,t,i)=>{ + const sd=E((t-.46)/.1)-E((t-.9)/.1),hap=sd<.5,hu=hap&&(i==1||i==5),b=hu?-10:0,wb=sd*(i%2?1:-1) + c.save();c.translate(0,b+4*sd) + c.save();c.translate(128,154);c.scale(.78,.78);c.translate(-128,-186) + c.lineWidth=8;c.fillStyle=HD;c.beginPath();c.moveTo(128,36);c.bezierCurveTo(198,36,210,100,202,164);c.lineTo(54,164);c.bezierCurveTo(46,100,58,36,128,36);c.fill();c.stroke() + c.fillStyle=HAIR;for(const d of[-1,1])c.beginPath(),c.arc(128+d*48,38,23,0,T),c.fill(),c.stroke() + c.strokeStyle=HD;c.lineWidth=5;for(const d of[-1,1])c.beginPath(),c.arc(128+d*48,38,12,d>0?PI*.9:-PI*.1,d>0?PI*2.3:PI*1.3),c.stroke() + c.strokeStyle='#111' + c.fillStyle=DR;c.beginPath();c.moveTo(100,190);c.quadraticCurveTo(54,198,44,300);c.lineTo(212,300);c.quadraticCurveTo(202,198,156,190);c.closePath();c.fill();c.stroke() + c.fillStyle=SKIN;c.beginPath();c.moveTo(116,166);c.lineTo(116,194);c.lineTo(140,194);c.lineTo(140,166);c.fill();c.beginPath();c.moveTo(116,166);c.lineTo(116,192);c.moveTo(140,166);c.lineTo(140,192);c.stroke() + c.fillStyle='#fff';c.beginPath();c.moveTo(96,192);c.quadraticCurveTo(128,204,160,192);c.lineTo(166,212);c.lineTo(150,228);c.lineTo(128,250);c.lineTo(106,228);c.lineTo(90,212);c.closePath();c.fill();c.stroke() + c.fillStyle='#fff';for(const d of[-1,1])c.beginPath(),c.moveTo(128,196),c.lineTo(128+d*16,184),c.lineTo(128+d*20,196),c.closePath(),c.fill(),c.stroke() + c.strokeStyle='#ffc9c9';c.lineWidth=5;c.beginPath();c.moveTo(102,212);c.lineTo(154,212);c.moveTo(112,228);c.lineTo(144,228);c.stroke();c.strokeStyle='#111' + c.lineWidth=8;c.fillStyle=SKIN;c.beginPath();c.moveTo(74,96);c.bezierCurveTo(70,152,100,184,128,186);c.bezierCurveTo(156,184,186,152,182,96);c.bezierCurveTo(182,44,74,44,74,96);c.fill();c.stroke() + eye(c,103,140,-1,hap,hap?0:2+wb);eye(c,153,140,1,hap,hap?0:2-wb) + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*44,162,13,7,0,0,T),c.fill() + c.lineWidth=3;for(const d of[-1,1])for(const k of[-5,0,5])c.beginPath(),c.moveTo(128+d*44+k-2,165),c.lineTo(128+d*44+k+2,159),c.stroke() + if(hap){c.lineWidth=5;c.fillStyle=MO;c.beginPath();c.moveTo(114,164);c.quadraticCurveTo(128,166,142,164);c.quadraticCurveTo(140,184,128,184);c.quadraticCurveTo(116,184,114,164);c.fill();c.stroke() + c.save();c.clip();c.fillStyle=TG;c.beginPath();c.ellipse(128,186,9,6,0,0,T);c.fill();c.restore() + c.fillStyle=TR;c.lineWidth=4;c.beginPath();c.moveTo(142,174);c.quadraticCurveTo(150,186,145,190);c.quadraticCurveTo(138,186,142,174);c.fill();c.stroke()} + else{c.lineWidth=5;c.beginPath();c.moveTo(118,177+wb);c.quadraticCurveTo(128,166,138,177-wb);c.stroke() + c.fillStyle=TR;c.lineWidth=4;for(const d of[-1,1]){const y=156+14*((t*4+(d>0?.5:0))%1);c.beginPath();c.moveTo(128+d*36,y-9);c.quadraticCurveTo(128+d*36+7,y+3,128+d*36,y+5);c.quadraticCurveTo(128+d*36-7,y+3,128+d*36,y-9);c.fill();c.stroke()}} + c.lineWidth=8;c.fillStyle=HAIR;c.beginPath();c.moveTo(68,158) + c.bezierCurveTo(50,74,88,38,128,38);c.bezierCurveTo(168,38,206,74,188,158) + c.quadraticCurveTo(186,120,178,104);c.quadraticCurveTo(168,106,160,96);c.quadraticCurveTo(154,108,142,110);c.quadraticCurveTo(138,98,128,92) + c.quadraticCurveTo(122,106,110,110);c.quadraticCurveTo(102,100,96,96);c.quadraticCurveTo(88,106,78,104);c.quadraticCurveTo(70,126,68,158);c.closePath();c.fill();c.stroke() + c.strokeStyle=HL;c.lineWidth=7;for(const[a,e]of[[1.24,1.36],[1.44,1.52],[1.62,1.74]])c.beginPath(),c.arc(128,104,56,PI*a,PI*e),c.stroke() + c.strokeStyle='#111';c.fillStyle='#ffd43b';c.lineWidth=6;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*36,58,13,7,-d*.75,0,T),c.fill(),c.stroke() + if(!hap){c.lineWidth=6;c.beginPath();c.moveTo(86,114);c.lineTo(112,106);c.moveTo(144,106);c.lineTo(170,114);c.stroke()} + c.restore() + // arms down to fists holding the cutlery up + const ua=hap?0:.5*sd + ds(c,22,13,DR,()=>{c.moveTo(82,190);c.quadraticCurveTo(62,196,52,206)}) + ds(c,22,13,DR,()=>{c.moveTo(174,190);c.quadraticCurveTo(194,196,204,206)}) + ute(c,48,204,-ua-.06,0);ute(c,208,204,ua+.06,1) + c.fillStyle=SKIN;c.lineWidth=5;for(const x of[48,208])c.beginPath(),c.ellipse(x,206,13,12,0,0,T),c.fill(),c.stroke() + c.restore() + if(hap){c.fillStyle='#ffd43b';c.lineWidth=3.5;for(const[x,y,o]of[[30,70,0],[226,62,.5],[218,128,.25]]){sp(c,x,y,hu?13:8+4*o)}} + // table and the empty plate + c.lineWidth=6;c.fillStyle=TB;c.beginPath();c.rect(4,214,248,40);c.fill();c.stroke() + c.strokeStyle=TBD;c.lineWidth=4;c.beginPath();c.moveTo(14,236);c.lineTo(242,236);c.stroke();c.strokeStyle='#111' + c.fillStyle='#fff';c.lineWidth=6;c.beginPath();c.ellipse(128,222,80,24,0,0,T);c.fill();c.stroke() + c.strokeStyle=RM;c.lineWidth=5;c.beginPath();c.ellipse(128,221,58,15,0,0,T);c.stroke() + c.strokeStyle='#111';c.lineWidth=3;c.beginPath();c.ellipse(128,221,52,12,0,0,T);c.stroke() + c.strokeStyle='#e9ecef';c.lineWidth=4;c.beginPath();c.ellipse(128,221,34,7,0,PI*1.1,PI*1.4);c.stroke();c.strokeStyle='#111' +} diff --git a/gen/uianime/refresh/pull.js b/gen/uianime/refresh/pull.js new file mode 100644 index 0000000..7ff14d2 --- /dev/null +++ b/gen/uianime/refresh/pull.js @@ -0,0 +1,59 @@ +// chestnut haired girl in a track jacket yanking the pull cord of a big green refresh arrow, it whirls around and the cord springs back up +const{cos,PI,exp}=Math,T=2*PI +export const frames=13,delay=95 +const SKIN='#ffe3d1',HAIR='#c0805a',HD='#8d5a3a',HL='#f3d9c7',EYE='#fab005',ED='#e67700',JK='#ffa94d',BL='#ffa8a8',GR='#51cf66',RP='#ffe8cc',HN='#ff6b6b',CLIP='#74c0fc' +const ds=(c,a,b,s,f)=>{for(const[l,k]of[[a,'#111'],[b,s]])c.lineWidth=l,c.strokeStyle=k,c.beginPath(),f(),c.stroke();c.strokeStyle='#111'} +const ease=x=>x<0?0:x>1?1:x*x*(3-2*x),L=(a,b,u)=>a+(b-a)*u +const eye=(c,x,y,d)=>{ + c.fillStyle='#fff';c.beginPath();c.ellipse(x,y,14,17,0,0,T);c.fill() + c.save();c.beginPath();c.ellipse(x,y,14,17,0,0,T);c.clip();c.beginPath();c.ellipse(x-4,y-1,11.5,15,0,0,T);c.fillStyle=EYE;c.fill();c.lineWidth=2.5;c.stroke() + c.fillStyle=ED;c.beginPath();c.ellipse(x-4,y-11,13,9,0,0,T);c.fill() + c.fillStyle='#111';c.beginPath();c.ellipse(x-4,y,5.5,7.5,0,0,T);c.fill() + c.fillStyle='#fff';c.beginPath();c.arc(x-8,y-7,4.5,0,T);c.fill();c.beginPath();c.arc(x+1,y+6,2,0,T);c.fill();c.restore() + c.lineWidth=6;c.beginPath();c.moveTo(x-16,y-6);c.quadraticCurveTo(x,y-20,x+16,y-6);c.moveTo(x+d*15,y-7);c.lineTo(x+d*21,y-12);c.stroke() +} +export default(c,t)=>{ + const pu=ease((t-.125)/.3125),pull=t>=.125&&t<.4375,bd=t<.4375?pu:1-ease((t-.625)/.3125) + const f=t<.125?0:t<.4375?.6*pu:.6+.4*(1-(1-(t-.4375)/.5625)**2),th=T*f + const ry=t<.4375?L(116,196,pu):116+80*exp(-9*(t-.4375))*cos(16*(t-.4375)) + const hy=t<.4375?ry:t<.625?196:L(196,116,ease((t-.625)/.3125)),hap=t>=.5&&t<.875 + const X=84,Y=60 + ds(c,10,5,RP,()=>{c.moveTo(X,Y);c.lineTo(X,ry)}) + c.save();c.translate(X,Y);c.rotate(th) + ds(c,22,13,GR,()=>{c.arc(0,0,34,.9,T-.25)}) + c.fillStyle=GR;c.lineWidth=5;c.save();c.rotate(T-.3);c.beginPath();c.moveTo(14,-4);c.lineTo(54,-4);c.lineTo(34,22);c.closePath();c.restore();c.fill();c.stroke() + c.restore() + c.fillStyle='#adb5bd';c.lineWidth=4;c.beginPath();c.arc(X,Y,8,0,T);c.fill();c.stroke() + if(f>.05&&f<.97)for(const k of[0,1,2])ds(c,7,3,'#fff',()=>{const a=-PI/2-1+k*.75;c.arc(X,Y,52+k%2*6,a,a+.45)}) + c.fillStyle=HN;c.lineWidth=5;c.beginPath();c.roundRect(X-9,ry,18,26,8);c.fill();c.stroke() + c.strokeStyle='#fff';c.lineWidth=3;c.beginPath();c.moveTo(X-3,ry+6);c.lineTo(X-3,ry+18);c.stroke();c.strokeStyle='#111' + const H=f=>{c.save();c.translate(170,176);c.scale(.68,.68);c.translate(-128,-186);f();c.restore()} + H(()=>{ + c.lineWidth=8;c.fillStyle=HD;c.beginPath();c.moveTo(128,34);c.bezierCurveTo(200,34,214,96,206,150);c.quadraticCurveTo(212,200,200,236);c.lineTo(56,236);c.quadraticCurveTo(44,200,50,150);c.bezierCurveTo(42,96,56,34,128,34);c.fill();c.stroke() + c.fillStyle=JK;c.beginPath();c.moveTo(100,190);c.quadraticCurveTo(52,198,40,330);c.lineTo(216,330);c.quadraticCurveTo(204,198,156,190);c.closePath();c.fill();c.stroke() + c.fillStyle='#fff';c.beginPath();c.moveTo(104,188);c.lineTo(128,214);c.lineTo(152,188);c.lineTo(156,204);c.lineTo(128,226);c.lineTo(100,204);c.closePath();c.fill();c.stroke() + c.strokeStyle='#fff';c.lineWidth=5;for(const d of[-1,1])c.beginPath(),c.moveTo(128+d*62,214),c.lineTo(128+d*78,330),c.stroke();c.strokeStyle='#111' + c.lineWidth=5;c.beginPath();c.moveTo(128,226);c.lineTo(128,330);c.stroke() + c.fillStyle=SKIN;c.lineWidth=8;c.beginPath();c.moveTo(114,168);c.lineTo(114,194);c.quadraticCurveTo(128,206,142,194);c.lineTo(142,168);c.fill();c.beginPath();c.moveTo(114,168);c.lineTo(114,192);c.moveTo(142,168);c.lineTo(142,192);c.stroke() + c.fillStyle=SKIN;c.beginPath();c.moveTo(74,96);c.bezierCurveTo(70,152,100,184,128,186);c.bezierCurveTo(156,184,186,152,182,96);c.bezierCurveTo(182,44,74,44,74,96);c.fill();c.stroke() + if(pull){c.lineWidth=8;for(const d of[-1,1])c.beginPath(),c.moveTo(128+d*38,128),c.lineTo(128+d*18,140),c.lineTo(128+d*38,152),c.stroke()} + else if(hap){c.lineWidth=8;for(const x of[103,153])c.beginPath(),c.arc(x,148,15,1.15*PI,1.85*PI),c.stroke()} + else eye(c,103,140,-1),eye(c,153,140,1) + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*44,162,14,8,0,0,T),c.fill() + c.lineWidth=4;for(const d of[-1,1])for(const k of[-6,0,6])c.beginPath(),c.moveTo(128+d*44+k-2,166),c.lineTo(128+d*44+k+2,158),c.stroke() + c.lineWidth=6;c.fillStyle='#c92a2a' + if(pull){c.beginPath();c.moveTo(112,164);c.lineTo(144,164);c.quadraticCurveTo(144,180,128,180);c.quadraticCurveTo(112,180,112,164);c.fill();c.stroke();c.fillStyle='#fff';c.beginPath();c.rect(113,164,30,6);c.fill();c.stroke()} + else{c.beginPath();c.moveTo(114,164);c.quadraticCurveTo(128,(hap?190:180),142,164);c.closePath();c.fill();c.stroke();c.save();c.clip();c.fillStyle='#ff8fab';c.beginPath();c.ellipse(128,180,8,6,0,0,T);c.fill();c.restore()} + c.lineWidth=8;c.fillStyle=HAIR;c.beginPath();c.moveTo(68,150) + c.bezierCurveTo(52,74,88,36,128,36);c.bezierCurveTo(168,36,204,74,188,150) + c.quadraticCurveTo(186,118,178,102);c.quadraticCurveTo(168,96,158,102);c.quadraticCurveTo(146,96,140,84);c.quadraticCurveTo(130,100,112,108) + c.quadraticCurveTo(104,100,100,92);c.quadraticCurveTo(92,104,82,108);c.quadraticCurveTo(72,124,68,150);c.closePath();c.fill();c.stroke() + c.strokeStyle=HL;c.lineWidth=7;for(const[s,e]of[[1.24,1.36],[1.44,1.52],[1.62,1.74]])c.beginPath(),c.arc(128,104,56,PI*s,PI*e),c.stroke() + c.strokeStyle='#111';c.fillStyle=CLIP;c.lineWidth=6;c.beginPath();c.roundRect(152,70,30,11,5);c.fill();c.stroke() + if(pull){c.fillStyle='#a5d8ff';c.lineWidth=6;c.beginPath();c.moveTo(200,96);c.quadraticCurveTo(212,114,200,120);c.quadraticCurveTo(188,114,200,96);c.fill();c.stroke()} + }) + ds(c,20,11,JK,()=>{c.moveTo(134,210);c.quadraticCurveTo(L(100,96,bd),L(200,226,bd),X,hy+14)}) + c.fillStyle=SKIN;c.lineWidth=5;c.beginPath();c.ellipse(X,hy+12,12,12,0,0,T);c.fill();c.stroke() + ds(c,20,11,JK,()=>{c.moveTo(208,214);c.quadraticCurveTo(236,236,214,226-6*bd)}) + c.fillStyle=SKIN;c.lineWidth=5;c.beginPath();c.ellipse(212,222-6*bd,12,11,0,0,T);c.fill();c.stroke() +} diff --git a/gen/uianime/saved/hug.js b/gen/uianime/saved/hug.js new file mode 100644 index 0000000..5138cd0 --- /dev/null +++ b/gen/uianime/saved/hug.js @@ -0,0 +1,49 @@ +// pink haired girl with low pigtails squeezing a yellow folder tight to her chest, eyes shut in bliss, blush glowing as hearts float up +const{sin,cos,PI,max}=Math,T=2*PI +export const frames=16,delay=80 +const SKIN='#ffe3d1',HAIR='#faa2c1',HD='#e64980',HL='#fff0f6',TOP='#a5d8ff',TD='#4dabf7',SCR='#ffd43b',FO='#ffd43b',FD='#fab005',BL='#ff8fab',MO='#c92a2a',TG='#ff8fab',HT=['#ff6b9d','#f06595','#ff8787'] +const ds=(c,a,b,s,f)=>{for(const[l,k]of[[a,'#111'],[b,s]])c.lineWidth=l,c.strokeStyle=k,c.beginPath(),f(),c.stroke();c.strokeStyle='#111'} +const heart=(c,x,y,s)=>{c.save();c.translate(x,y);c.scale(s,s);c.beginPath();c.moveTo(0,8);c.bezierCurveTo(-13,-1,-9,-12,0,-5);c.bezierCurveTo(9,-12,13,-1,0,8);c.restore();c.fill();c.stroke()} +export default(c,t)=>{ + const sq=max(0,sin(2*T*t))**2,bl=1+.15*sq + c.lineWidth=4 + for(const[x0,o,k]of[[218,0,0],[232,.33,1],[210,.66,2]]){const p=(t+o)%1,s=1.5*sin(PI*p);if(s>.15)c.fillStyle=HT[k],heart(c,x0+8*sin(T*(p*2+o)),214-p*190,s)} + const head=f=>f() + head(()=>{ + c.lineWidth=6;c.fillStyle=HD;c.beginPath();c.moveTo(128,34);c.bezierCurveTo(196,34,206,96,198,156);c.lineTo(58,156);c.bezierCurveTo(50,96,60,34,128,34);c.fill();c.stroke() + for(const d of[-1,1]){c.save();c.translate(128+d*62,150);c.rotate(-d*.15) + c.fillStyle=HAIR;c.beginPath();c.moveTo(-8,-4);c.bezierCurveTo(d*30-6,10,d*30,60,d*16,96);c.quadraticCurveTo(d*8,110,-d*4,100);c.bezierCurveTo(d*8,60,-d*16,20,-8,-4);c.fill();c.stroke() + c.strokeStyle=HD;c.lineWidth=3;c.beginPath();c.moveTo(d*8,16);c.quadraticCurveTo(d*20,50,d*12,88);c.stroke();c.strokeStyle='#111' + c.fillStyle=SCR;c.lineWidth=5;c.beginPath();c.ellipse(0,0,13,9,d*.4,0,T);c.fill();c.stroke();c.lineWidth=6;c.restore()} + }) + c.lineWidth=6;c.fillStyle=TOP;c.beginPath();c.moveTo(100,190);c.quadraticCurveTo(62,198,54,250);c.lineTo(202,250);c.quadraticCurveTo(194,198,156,190);c.closePath();c.fill();c.stroke() + c.fillStyle='#fff';for(const d of[-1,1])c.beginPath(),c.moveTo(128,204),c.quadraticCurveTo(128+d*18,186,128+d*32,190),c.quadraticCurveTo(128+d*30,206,128,212),c.closePath(),c.fill(),c.stroke() + c.fillStyle=SKIN;c.lineWidth=5;c.beginPath();c.moveTo(116,168);c.lineTo(116,194);c.quadraticCurveTo(128,204,140,194);c.lineTo(140,168);c.fill();c.beginPath();c.moveTo(116,168);c.lineTo(116,192);c.moveTo(140,168);c.lineTo(140,192);c.stroke() + head(()=>{ + c.lineWidth=6;c.fillStyle=SKIN;c.beginPath();c.moveTo(74,96);c.bezierCurveTo(70,152,100,184,128,186);c.bezierCurveTo(156,184,186,152,182,96);c.bezierCurveTo(182,44,74,44,74,96);c.fill();c.stroke() + c.lineWidth=6;for(const x of[103,153])c.beginPath(),c.arc(x,146,14,PI*1.15,PI*1.85),c.stroke() + c.lineWidth=5;for(const[x,d]of[[103,-1],[153,1]])c.beginPath(),c.moveTo(x+d*13,139),c.lineTo(x+d*19,134),c.stroke() + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*42,160,15*bl,8*bl,0,0,T),c.fill() + c.lineWidth=2.5;for(const d of[-1,1])for(const k of[-8,-3,2,7])c.beginPath(),c.moveTo(128+d*42+k-2,164),c.lineTo(128+d*42+k+2,156),c.stroke() + c.lineWidth=3.5;c.fillStyle=MO;c.beginPath();c.moveTo(118,166);c.quadraticCurveTo(128,170,138,166);c.quadraticCurveTo(136,180,128,180);c.quadraticCurveTo(120,180,118,166);c.fill();c.stroke() + c.save();c.clip();c.fillStyle=TG;c.beginPath();c.ellipse(128,181,6,5,0,0,T);c.fill();c.restore() + c.lineWidth=6;c.fillStyle=HAIR;c.beginPath();c.moveTo(70,150) + c.bezierCurveTo(54,74,88,36,128,36);c.bezierCurveTo(168,36,202,74,186,150) + c.quadraticCurveTo(184,118,178,104);c.quadraticCurveTo(172,108,164,112);c.quadraticCurveTo(160,98,150,92);c.quadraticCurveTo(144,104,136,110) + c.quadraticCurveTo(132,96,124,90);c.quadraticCurveTo(118,102,110,108);c.quadraticCurveTo(106,96,96,94);c.quadraticCurveTo(90,104,84,110) + c.quadraticCurveTo(80,104,78,104);c.quadraticCurveTo(72,124,70,150);c.closePath();c.fill();c.stroke() + c.strokeStyle=HL;c.lineWidth=5;for(const[s,e]of[[1.24,1.36],[1.44,1.52],[1.62,1.74]])c.beginPath(),c.arc(128,104,56,PI*s,PI*e),c.stroke() + c.strokeStyle='#111';c.fillStyle=HT[0];c.lineWidth=4;heart(c,166,70,1.2) + }) + // folder squeezed to her chest + c.save();c.translate(128,226);c.rotate(-.05);c.scale(1-.05*sq,1+.02*sq) + c.lineWidth=6;c.fillStyle=FD;c.beginPath();c.moveTo(-60,-30);c.lineTo(-60,-44);c.quadraticCurveTo(-60,-50,-54,-50);c.lineTo(-18,-50);c.lineTo(-8,-38);c.lineTo(56,-38);c.quadraticCurveTo(62,-38,62,-32);c.lineTo(62,40);c.lineTo(-60,40);c.closePath();c.fill();c.stroke() + c.fillStyle='#fff';c.lineWidth=4;c.beginPath();c.rect(-46,-40,84,30);c.fill();c.stroke() + c.lineWidth=6;c.fillStyle=FO;c.beginPath();c.moveTo(-64,-24);c.lineTo(62,-24);c.lineTo(66,40);c.lineTo(-64,40);c.closePath();c.fill();c.stroke() + c.fillStyle=HT[1];c.lineWidth=4;heart(c,0,6,1.5) + c.restore() + for(const d of[-1,1]){const x=128+d*(54-3*sq);ds(c,30,19,TOP,()=>{c.moveTo(128+d*78,258);c.lineTo(x+d*8,234)}) + c.lineWidth=5;c.fillStyle=SKIN;c.beginPath();c.ellipse(x,230,12,14,d*.3,0,T);c.fill();c.stroke() + for(const y of[220,230,240])c.beginPath(),c.ellipse(x-d*10,y,8,5,0,0,T),c.fill(),c.stroke() + if(sq>.3)ds(c,8,3.5,'#fff',()=>{for(const y of[-14,0,14])c.moveTo(128+d*(76+6*sq),218+y*1.2),c.lineTo(128+d*(90+6*sq),218+y*1.6)})} +} diff --git a/gen/uianime/search/magnifier.js b/gen/uianime/search/magnifier.js new file mode 100644 index 0000000..56d82eb --- /dev/null +++ b/gen/uianime/search/magnifier.js @@ -0,0 +1,60 @@ +// honey blonde detective girl in a deerstalker sweeping a magnifying glass around, peering through it with a giant eye, then finding nothing: sweatdrop and a ? +const{sin,cos,PI,max,min,hypot,sqrt}=Math,T=2*PI +export const frames=20,delay=85 +const SKIN='#ffe3d1',HAIR='#ffd43b',HD='#f59f00',EYE='#4dabf7',ED='#1864ab',BL='#ffa8a8',CT='#e0a96d',CTD='#c08552',HAT='#a9744f',HATD='#7f5539',TIE='#fa5252',RIM='#fcc419',GL='#d0ebff',SW='#a5d8ff' +const E=x=>x<=0?0:x>=1?1:x*x*(3-2*x) +const ds=(c,a,b,s,f)=>{for(const[l,k]of[[a,'#111'],[b,s]])c.lineWidth=l,c.strokeStyle=k,c.beginPath(),f(),c.stroke();c.strokeStyle='#111'} +const eye=(c,x,y,d,o)=>{ + c.fillStyle='#fff';c.beginPath();c.ellipse(x,y,14,17,0,0,T);c.fill() + c.save();c.clip();c.beginPath();c.ellipse(x+o,y+3,11.5,15,0,0,T);c.fillStyle=EYE;c.fill();c.lineWidth=2.5;c.stroke() + c.fillStyle=ED;c.beginPath();c.ellipse(x+o,y-7,13,9,0,0,T);c.fill() + c.fillStyle='#111';c.beginPath();c.ellipse(x+o,y+4,5.5,7.5,0,0,T);c.fill() + c.fillStyle='#fff';c.beginPath();c.arc(x+o-4,y-3,4.5,0,T);c.fill();c.beginPath();c.arc(x+o+5,y+9,2,0,T);c.fill();c.restore() + c.lineWidth=7;c.beginPath();c.moveTo(x-16,y-6);c.quadraticCurveTo(x,y-20,x+16,y-6);c.moveTo(x+d*15,y-7);c.lineTo(x+d*21,y-12);c.stroke() +} +const G=(c,f)=>{c.save();c.translate(128,158);c.scale(.82,.82);c.translate(-128,-186);f();c.restore()} +export default(c,t)=>{ + const sw=t<.4,u=t/.4,up=E((t-.4)/.1)-E((t-.62)/.1),af=t>.72, + sx=128-60*cos(T*min(1,u)),sy=196-8*sin(2*T*min(1,u)),lx=sx+(107-sx)*up,ly=sy+(120-sy)*up,o=sw?(lx-128)/60*4:0,a=.9-.15*up + G(c,()=>{ + c.lineWidth=7;c.fillStyle=HD;c.beginPath();c.moveTo(128,34);c.bezierCurveTo(200,34,212,100,206,170);c.quadraticCurveTo(206,214,186,214);c.lineTo(70,214);c.quadraticCurveTo(50,214,50,170);c.bezierCurveTo(44,100,56,34,128,34);c.fill();c.stroke() + c.fillStyle=CT;c.beginPath();c.moveTo(100,190);c.quadraticCurveTo(56,198,46,306);c.lineTo(210,306);c.quadraticCurveTo(200,198,156,190);c.closePath();c.fill();c.stroke() + c.fillStyle=CTD;c.beginPath();c.moveTo(98,192);c.quadraticCurveTo(54,204,40,262);c.quadraticCurveTo(128,286,216,262);c.quadraticCurveTo(202,204,158,192);c.closePath();c.fill();c.stroke() + c.fillStyle='#fff';c.beginPath();c.moveTo(108,190);c.lineTo(128,216);c.lineTo(148,190);c.closePath();c.fill();c.lineWidth=6;c.stroke() + c.fillStyle=SKIN;c.beginPath();c.moveTo(116,166);c.lineTo(116,194);c.lineTo(128,206);c.lineTo(140,194);c.lineTo(140,166);c.fill();c.beginPath();c.moveTo(116,166);c.lineTo(116,192);c.moveTo(140,166);c.lineTo(140,192);c.stroke() + c.fillStyle=TIE;c.lineWidth=5;for(const d of[-1,1])c.beginPath(),c.moveTo(128,212),c.lineTo(128+d*18,203),c.lineTo(128+d*18,221),c.closePath(),c.fill(),c.stroke() + c.beginPath();c.arc(128,212,5,0,T);c.fill();c.stroke() + c.lineWidth=7;c.fillStyle=SKIN;c.beginPath();c.moveTo(74,96);c.bezierCurveTo(70,152,100,184,128,186);c.bezierCurveTo(156,184,186,152,182,96);c.bezierCurveTo(182,44,74,44,74,96);c.fill();c.stroke() + if(af){eye(c,103,140,-1,0);eye(c,153,140,1,0);c.lineWidth=5;c.beginPath();c.moveTo(114,170);for(let k=1;k<=7;k++)c.lineTo(114+k*4,170+(k%2?-3:2));c.stroke()} + else{eye(c,103,140,-1,o);eye(c,153,140,1,o);c.lineWidth=5;c.fillStyle='#c92a2a';c.beginPath();c.ellipse(128+o,169,5,4,0,0,T);c.fill();c.stroke()} + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*44,162,13,7,0,0,T),c.fill() + c.lineWidth=3;for(const d of[-1,1])for(const k of[-5,0,5])c.beginPath(),c.moveTo(128+d*44+k-2,165),c.lineTo(128+d*44+k+2,159),c.stroke() + c.lineWidth=7;c.fillStyle=HAIR;c.beginPath();c.moveTo(66,162) + c.bezierCurveTo(48,74,88,40,128,40);c.bezierCurveTo(168,40,208,74,190,162) + c.quadraticCurveTo(188,120,180,104);c.quadraticCurveTo(170,106,162,98);c.quadraticCurveTo(154,110,142,110);c.quadraticCurveTo(138,100,128,94) + c.quadraticCurveTo(120,106,108,110);c.quadraticCurveTo(102,100,94,96);c.quadraticCurveTo(86,106,76,106);c.quadraticCurveTo(68,128,66,162);c.closePath();c.fill();c.stroke() + // deerstalker + const dome=()=>{c.beginPath();c.moveTo(60,92);c.bezierCurveTo(54,10,202,10,196,92);c.quadraticCurveTo(128,72,60,92);c.closePath()} + c.fillStyle=HAT;dome();c.fill();c.save();c.clip();c.strokeStyle=HATD;c.lineWidth=5;c.beginPath();for(let x=40;x<230;x+=22)c.moveTo(x,0),c.lineTo(x-30,100),c.moveTo(x-40,0),c.lineTo(x-10,100);c.stroke();c.restore() + c.strokeStyle='#111';c.lineWidth=7;dome();c.stroke() + c.fillStyle=HATD;c.beginPath();c.moveTo(92,84);c.quadraticCurveTo(128,74,164,84);c.quadraticCurveTo(160,104,128,100);c.quadraticCurveTo(96,104,92,84);c.fill();c.stroke() + c.fillStyle=HAT;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*14,26,14,8,d*.4,0,T),c.fill(),c.stroke() + c.beginPath();c.arc(128,28,6,0,T);c.fill();c.stroke() + }) + // magnifier: the hand holds the handle, the glass shows a giant eye when it is up at her face + const hx=lx+54*cos(a),hy=ly+54*sin(a),sx0=166,sy0=210,d=hypot(hx-sx0,hy-sy0),h=sqrt(max(0,46*46-d*d/4)),nx=-(hy-sy0)/d*h,ny=(hx-sx0)/d*h,k=nx*.5+ny>0?1:-1,ex=(sx0+hx)/2+k*nx,ey=(sy0+hy)/2+k*ny + ds(c,22,13,CT,()=>{c.moveTo(sx0,sy0);c.lineTo(ex,ey);c.lineTo(hx,hy)}) + ds(c,16,9,HATD,()=>{c.moveTo(lx+30*cos(a),ly+30*sin(a));c.lineTo(lx+68*cos(a),ly+68*sin(a))}) + c.save();c.beginPath();c.arc(lx,ly,27,0,T);c.fillStyle=GL;c.fill();c.clip() + if(up>.6){c.fillStyle=SKIN;c.fillRect(lx-30,ly-30,60,60);c.translate(107,120);c.scale(1.45,1.45);c.translate(-107,-120);G(c,()=>eye(c,103,140,-1,0))} + c.restore() + c.strokeStyle='#fff';c.lineWidth=5;c.beginPath();c.arc(lx,ly,19,PI*1.1,PI*1.45);c.stroke() + c.strokeStyle='#111';c.fillStyle=RIM;c.lineWidth=5;c.beginPath();c.arc(lx,ly,34,0,T);c.arc(lx,ly,26,0,T,true);c.fill('evenodd');c.stroke() + c.lineWidth=5;c.fillStyle=SKIN;c.beginPath();c.ellipse(hx,hy,11,10,a,0,T);c.fill();c.stroke() + // nothing found + if(af){const s=min(1,(t-.72)/.06) + c.fillStyle=SW;c.lineWidth=4;c.beginPath();c.moveTo(194,86-18*s);c.quadraticCurveTo(194+11*s,102,194,106);c.quadraticCurveTo(194-11*s,102,194,86-18*s);c.fill();c.stroke() + c.save();c.translate(220,54);c.scale(1.7*s,1.7*s);c.rotate(.2) + ds(c,15,8,'#fff',()=>{c.moveTo(-10,-8);c.quadraticCurveTo(-10,-22,2,-22);c.quadraticCurveTo(14,-22,13,-10);c.quadraticCurveTo(12,-1,2,3);c.lineTo(2,9)}) + c.fillStyle='#fff';c.lineWidth=4;c.beginPath();c.arc(2,21,5,0,T);c.fill();c.stroke();c.restore()} +} diff --git a/gen/uianime/sent/wave.js b/gen/uianime/sent/wave.js new file mode 100644 index 0000000..471d48e --- /dev/null +++ b/gen/uianime/sent/wave.js @@ -0,0 +1,64 @@ +// turquoise haired girl waving goodbye as a winged love letter flaps up and away into the corner and vanishes with a twinkle +const{sin,cos,PI,max,min}=Math,T=2*PI +export const frames=16,delay=80 +const SKIN='#ffe3d1',HAIR='#3bc9db',HD='#1098ad',HL='#e3fafc',EYE='#f783ac',ED='#a61e4d',CAR='#d0bfff',CD='#9775fa',FL='#ffd43b',BL='#ffa8a8',MO='#c92a2a',TG='#ff8fab',ENV='#fff9db',HT='#fa5252' +const ds=(c,a,b,s,f)=>{for(const[l,k]of[[a,'#111'],[b,s]])c.lineWidth=l,c.strokeStyle=k,c.beginPath(),f(),c.stroke();c.strokeStyle='#111'} +const eye=(c,x,y,d)=>{ + c.fillStyle='#fff';c.beginPath();c.ellipse(x,y,14,17,0,0,T);c.fill() + c.save();c.beginPath();c.ellipse(x+3,y+1,11.5,15,0,0,T);c.clip();c.fillStyle=EYE;c.fill();c.fillStyle=ED;c.beginPath();c.ellipse(x+3,y-9,13,10,0,0,T);c.fill();c.restore() + c.lineWidth=2.5;c.beginPath();c.ellipse(x+3,y+1,11.5,15,0,0,T);c.stroke() + c.fillStyle='#111';c.beginPath();c.ellipse(x+5,y,5.5,7.5,0,0,T);c.fill() + c.fillStyle='#fff';c.beginPath();c.arc(x,y-6,4.5,0,T);c.fill();c.beginPath();c.arc(x+8,y+7,2,0,T);c.fill() + c.lineWidth=6;c.beginPath();c.moveTo(x-16,y-6);c.quadraticCurveTo(x,y-20,x+16,y-6);c.moveTo(x+d*15,y-7);c.lineTo(x+d*21,y-12);c.stroke() + c.lineWidth=2.5;c.beginPath();c.moveTo(x-8,y+18);c.lineTo(x+8,y+18);c.stroke() +} +const heart=(c,x,y,s)=>{c.save();c.translate(x,y);c.scale(s,s);c.beginPath();c.moveTo(0,8);c.bezierCurveTo(-13,-1,-9,-12,0,-5);c.bezierCurveTo(9,-12,13,-1,0,8);c.restore();c.fill();c.stroke()} +const spark=(c,x,y,r)=>{c.beginPath();c.moveTo(x,y-r);for(const[a,b]of[[1,0],[0,1],[-1,0],[0,-1]])c.quadraticCurveTo(x+(a+b)*r*.15,y+(b-a)*r*.15,x+a*r,y+b*r);c.fill();c.stroke()} +const letter=(c,x,y,s,f)=>{ + c.save();c.translate(x,y);c.scale(s,s);c.rotate(-.25) + c.fillStyle='#fff';c.lineWidth=5 + for(const d of[-1,1]){c.save();c.translate(d*22,-4);c.rotate(d*f);c.beginPath();c.moveTo(0,6);c.bezierCurveTo(d*10,-26,d*36,-32,d*44,-22);c.quadraticCurveTo(d*36,-16,d*40,-9);c.quadraticCurveTo(d*30,-6,d*32,2);c.quadraticCurveTo(d*20,4,0,10);c.closePath();c.fill();c.stroke() + c.lineWidth=3;c.beginPath();c.moveTo(d*12,-6);c.quadraticCurveTo(d*22,-15,d*34,-18);c.stroke();c.lineWidth=5;c.restore()} + c.fillStyle=ENV;c.lineWidth=6;c.beginPath();c.roundRect(-30,-20,60,40,5);c.fill();c.stroke() + c.lineWidth=4;c.beginPath();c.moveTo(-26,-16);c.lineTo(0,4);c.lineTo(26,-16);c.stroke() + c.fillStyle=HT;c.lineWidth=3.5;heart(c,0,4,1.1) + c.restore() +} +export default(c,t)=>{ + const a=-1.4+.4*sin(2*T*t),p=min(1,t/.7),fl=.55*sin(8*T*t) + c.save();c.translate(102,254);c.scale(.86,.86);c.translate(-128,-250) + c.lineWidth=6;c.fillStyle=HD;c.beginPath();c.moveTo(128,34);c.bezierCurveTo(198,34,212,96,206,150);c.quadraticCurveTo(218,200,204,250);c.lineTo(52,250);c.quadraticCurveTo(38,200,50,150);c.bezierCurveTo(44,96,58,34,128,34);c.fill();c.stroke() + c.fillStyle=CAR;c.beginPath();c.moveTo(100,190);c.quadraticCurveTo(62,198,54,250);c.lineTo(202,250);c.quadraticCurveTo(194,198,156,190);c.closePath();c.fill();c.stroke() + c.fillStyle='#fff';for(const d of[-1,1])c.beginPath(),c.moveTo(128,206),c.quadraticCurveTo(128+d*16,188,128+d*30,190),c.quadraticCurveTo(128+d*34,206,128,212),c.closePath(),c.fill(),c.stroke() + c.strokeStyle=CD;c.lineWidth=4;c.beginPath();c.moveTo(128,214);c.lineTo(128,250);c.stroke();c.strokeStyle='#111' + c.fillStyle='#fff';c.lineWidth=3;for(const y of[226,242])c.beginPath(),c.arc(136,y,3.5,0,T),c.fill(),c.stroke() + c.lineWidth=5;c.fillStyle=SKIN;c.beginPath();c.moveTo(116,168);c.lineTo(116,194);c.quadraticCurveTo(128,206,140,194);c.lineTo(140,168);c.fill();c.beginPath();c.moveTo(116,168);c.lineTo(116,192);c.moveTo(140,168);c.lineTo(140,192);c.stroke() + c.lineWidth=6;c.fillStyle=SKIN;c.beginPath();c.moveTo(74,96);c.bezierCurveTo(70,152,100,184,128,186);c.bezierCurveTo(156,184,186,152,182,96);c.bezierCurveTo(182,44,74,44,74,96);c.fill();c.stroke() + eye(c,103,140,-1);eye(c,153,140,1) + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*42,161,12,6,0,0,T),c.fill() + c.lineWidth=2.5;for(const d of[-1,1])for(const k of[-5,0,5])c.beginPath(),c.moveTo(128+d*42+k-2,164),c.lineTo(128+d*42+k+2,158),c.stroke() + c.lineWidth=3.5;c.fillStyle=MO;c.beginPath();c.moveTo(119,165);c.quadraticCurveTo(128,170,137,165);c.quadraticCurveTo(136,180,128,180);c.quadraticCurveTo(120,180,119,165);c.fill();c.stroke() + c.save();c.clip();c.fillStyle=TG;c.beginPath();c.ellipse(128,181,6,5,0,0,T);c.fill();c.restore() + c.lineWidth=6;c.fillStyle=HAIR;c.beginPath();c.moveTo(66,190) + c.bezierCurveTo(48,74,88,36,128,36);c.bezierCurveTo(168,36,208,74,190,190);c.quadraticCurveTo(182,176,178,186) + c.quadraticCurveTo(184,124,178,104);c.quadraticCurveTo(170,104,164,112);c.quadraticCurveTo(160,98,150,92);c.quadraticCurveTo(144,104,136,110) + c.quadraticCurveTo(132,96,124,90);c.quadraticCurveTo(118,102,110,108);c.quadraticCurveTo(106,96,96,94);c.quadraticCurveTo(90,104,86,112) + c.quadraticCurveTo(80,104,78,104);c.quadraticCurveTo(72,124,78,186);c.quadraticCurveTo(72,176,66,190);c.closePath();c.fill();c.stroke() + c.strokeStyle=HL;c.lineWidth=5;for(const[s,e]of[[1.24,1.36],[1.44,1.52],[1.62,1.74]])c.beginPath(),c.arc(128,104,56,PI*s,PI*e),c.stroke() + c.strokeStyle='#111';c.fillStyle=FL;c.lineWidth=4;for(let k=0;k<5;k++){const b=k*T/5-PI/2;c.beginPath();c.arc(84+10*cos(b),70+10*sin(b),7,0,T);c.fill();c.stroke()} + c.fillStyle='#ff922b';c.beginPath();c.arc(84,70,5,0,T);c.fill();c.stroke() + const ex=198,ey=214,hx=ex+50*cos(a),hy=ey+50*sin(a) + ds(c,30,19,CAR,()=>{c.moveTo(166,226);c.lineTo(ex,ey);c.lineTo(ex+34*cos(a),ey+34*sin(a))}) + c.lineWidth=5;c.fillStyle=SKIN + c.save();c.translate(hx,hy);c.rotate(a+PI/2);c.scale(1.25,1.25) + for(const x of[-9,-3,3,9])c.beginPath(),c.ellipse(x,-14,3.6,8,0,0,T),c.fill(),c.stroke() + c.beginPath();c.ellipse(-14,-2,4,8,-.7,0,T);c.fill();c.stroke() + c.beginPath();c.ellipse(0,-2,13,12,0,0,T);c.fill();c.stroke() + c.restore() + for(const d of[-1,1])ds(c,7,3,'#fff',()=>{const r=60,b=a+d*.45;c.arc(ex,ey,r,b-.12,b+.12)}) + c.restore() + if(t<.7){const x=196+30*p,y=114-78*p-8*sin(PI*p),s=.9-.4*p + if(p>.12)ds(c,8,3.5,'#fff',()=>{for(const k of[0,1,2])c.moveTo(x-30*s-8-k*6,y+16*s+k*10),c.lineTo(x-30*s-20-k*6,y+24*s+k*10)}) + letter(c,x,y,s,fl)} + else{const q=(t-.7)/.3;c.fillStyle=FL;c.lineWidth=3.5;spark(c,232,36,20*sin(PI*q));c.fillStyle='#fff';spark(c,206,22,10*sin(PI*min(1,q*1.4)))} +} diff --git a/gen/uianime/success/jump.js b/gen/uianime/success/jump.js new file mode 100644 index 0000000..1b3561b --- /dev/null +++ b/gen/uianime/success/jump.js @@ -0,0 +1,45 @@ +// mint haired chibi girl in a pink dress jumping for joy with both arms up, eyes squeezed happy, while confetti rains down around her +const{sin,cos,PI,max}=Math,T=2*PI +export const frames=12,delay=80 +const SKIN='#ffe3d1',HAIR='#8ce99a',HD='#37b24d',HL='#ebfbee',DR='#ffa8c5',DD='#f06595',SH='#ff6b6b',BL='#ff8fab',MO='#c92a2a',TG='#ff8fab',RB='#ffd43b',CF=['#ff6b6b','#ffd43b','#4dabf7','#b197fc','#69db7c','#ff922b'] +const ds=(c,a,b,s,f)=>{for(const[l,k]of[[a,'#111'],[b,s]])c.lineWidth=l,c.strokeStyle=k,c.beginPath(),f(),c.stroke();c.strokeStyle='#111'} +const conf=(c,t,a)=>{for(let k=a;k<12;k+=2){const o=k*.37%1,p=(t+o)%1,x=18+k*20+8*sin(T*(p*2+o)),y=-14+p*280;c.save();c.translate(x,y);c.rotate(T*p*(k%3?1:-1)+k);c.scale(.3+.7*cos(T*p*2+k),1);c.fillStyle=CF[k%6];c.lineWidth=3;c.beginPath();c.rect(-5,-8,10,16);c.fill();c.stroke();c.restore()}} +export default(c,t)=>{ + const h=sin(PI*t),y=-26*h,Z=.62 + conf(c,t,0) + c.save();c.translate(128,242);c.scale(1.08,1.08);c.translate(-128,-242) + c.fillStyle='rgba(134,142,150,.35)';c.beginPath();c.ellipse(128,240,40-14*h,7-2*h,0,0,T);c.fill() + for(const d of[-1,1]){const fx=128+d*(11+16*h),fy=232-14*h+y + ds(c,16,9,SKIN,()=>{c.moveTo(128+d*9,206+y);c.lineTo(fx,fy-4)}) + c.lineWidth=5;c.fillStyle=SH;c.beginPath();c.ellipse(fx+d*3,fy,11,7,d*.3*h,0,T);c.fill();c.stroke()} + c.lineWidth=6;c.fillStyle=DR;c.beginPath();c.moveTo(112,164+y);c.lineTo(144,164+y);c.quadraticCurveTo(156,184,166,212+y) + for(let k=1;k<=4;k++)c.quadraticCurveTo(166-k*19+9.5,220+y,166-k*19,212+y) + c.quadraticCurveTo(100,184,112,164+y);c.closePath();c.fill();c.stroke() + c.fillStyle='#fff';c.lineWidth=4;for(const d of[-1,1])c.beginPath(),c.moveTo(128,170+y),c.quadraticCurveTo(128+d*14,164+y,128+d*16,176+y),c.quadraticCurveTo(128+d*8,182+y,128,170+y),c.fill(),c.stroke() + c.fillStyle=RB;c.beginPath();c.arc(128,172+y,4,0,T);c.fill();c.stroke() + c.save();c.translate(128,116+y);c.scale(Z,Z);c.translate(-128,-128);c.lineWidth=9 + for(const d of[-1,1]){c.save();c.translate(128+d*62,88);c.rotate(d*(-.1+.35*(1-h))) + c.fillStyle=HAIR;c.beginPath();c.moveTo(0,0);c.bezierCurveTo(d*34,2,d*46,60,d*28,104);c.quadraticCurveTo(d*22,118,d*8,114);c.bezierCurveTo(d*22,74,d*6,32,0,0);c.fill();c.stroke() + c.strokeStyle=HD;c.lineWidth=5;c.beginPath();c.moveTo(d*12,16);c.bezierCurveTo(d*26,40,d*30,70,d*22,96);c.stroke();c.strokeStyle='#111';c.lineWidth=9 + c.fillStyle=RB;c.beginPath();c.arc(0,0,13,0,T);c.fill();c.stroke();c.restore()} + c.fillStyle=HD;c.beginPath();c.moveTo(128,34);c.bezierCurveTo(196,34,206,96,198,150);c.lineTo(58,150);c.bezierCurveTo(50,96,60,34,128,34);c.fill();c.stroke() + c.fillStyle=SKIN;c.beginPath();c.moveTo(74,96);c.bezierCurveTo(70,152,100,184,128,186);c.bezierCurveTo(156,184,186,152,182,96);c.bezierCurveTo(182,44,74,44,74,96);c.fill();c.stroke() + c.lineWidth=9;for(const x of[103,153])c.beginPath(),c.arc(x,148,14,PI*1.15,PI*1.85),c.stroke() + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*44,162,16,8,0,0,T),c.fill() + c.lineWidth=4;for(const d of[-1,1])for(const k of[-6,0,6])c.beginPath(),c.moveTo(128+d*44+k-2,166),c.lineTo(128+d*44+k+2,158),c.stroke() + c.lineWidth=6;c.fillStyle=MO;c.beginPath();c.moveTo(112,164);c.quadraticCurveTo(128,168,144,164);c.quadraticCurveTo(142,188,128,188);c.quadraticCurveTo(114,188,112,164);c.fill();c.stroke() + c.save();c.clip();c.fillStyle=TG;c.beginPath();c.ellipse(128,190,9,7,0,0,T);c.fill();c.restore() + c.lineWidth=9;c.fillStyle=HAIR;c.beginPath();c.moveTo(70,146) + c.bezierCurveTo(54,74,88,36,128,36);c.bezierCurveTo(168,36,202,74,186,146) + c.quadraticCurveTo(186,116,178,102);c.quadraticCurveTo(170,104,164,112);c.quadraticCurveTo(160,98,150,92);c.quadraticCurveTo(144,104,136,110) + c.quadraticCurveTo(132,96,124,90);c.quadraticCurveTo(118,102,110,108);c.quadraticCurveTo(106,96,96,94);c.quadraticCurveTo(90,104,86,112) + c.quadraticCurveTo(80,104,78,102);c.quadraticCurveTo(70,120,70,146);c.closePath();c.fill();c.stroke() + c.strokeStyle=HL;c.lineWidth=7;for(const[a,e]of[[1.24,1.36],[1.44,1.52],[1.62,1.74]])c.beginPath(),c.arc(128,104,56,PI*a,PI*e),c.stroke() + c.restore() + for(const d of[-1,1]){const hx=128+d*(54-6*h),hy=150-48*h+y + ds(c,16,9,SKIN,()=>{c.moveTo(128+d*14,172+y);c.lineTo(hx,hy)}) + c.lineWidth=5;c.fillStyle=DR;c.beginPath();c.ellipse(128+d*16,170+y,10,9,0,0,T);c.fill();c.stroke() + c.fillStyle=SKIN;c.beginPath();c.arc(hx,hy,9,0,T);c.fill();c.stroke()} + c.restore() + conf(c,t,1) +} diff --git a/gen/uianime/success/thumbs.js b/gen/uianime/success/thumbs.js new file mode 100644 index 0000000..c4e33e4 --- /dev/null +++ b/gen/uianime/success/thumbs.js @@ -0,0 +1,44 @@ +// sporty blonde girl in a red headband grinning ear to ear and pumping a big thumbs up, a gleam pinging off her teeth +const{sin,cos,PI,max,min}=Math,T=2*PI +export const frames=16,delay=80 +const SKIN='#ffe3d1',HAIR='#ffd43b',HD='#f59f00',HL='#fff9db',JK='#4dabf7',JD='#1c7ed6',BAND='#fa5252',BL='#ff8fab',MO='#c92a2a',TG='#ff8fab',GL='#fff9db' +const ds=(c,a,b,s,f)=>{for(const[l,k]of[[a,'#111'],[b,s]])c.lineWidth=l,c.strokeStyle=k,c.beginPath(),f(),c.stroke();c.strokeStyle='#111'} +const glint=(c,x,y,r,a)=>{c.save();c.translate(x,y);c.rotate(a);c.beginPath();for(let k=0;k<8;k++){const rr=k%2?r*.28:r,b=k*PI/4;c.lineTo(cos(b)*rr,sin(b)*rr)}c.closePath();c.restore();c.fill();c.stroke()} +export default(c,t)=>{ + const pp=t<.2?sin(PI*t/.2):0,g=t>=.3&&t<.7?sin(PI*(t-.3)/.4):0 + c.save();c.translate(-16,4) + c.lineWidth=6;c.fillStyle=HD;c.beginPath();c.moveTo(128,34);c.bezierCurveTo(196,34,208,96,200,158);c.quadraticCurveTo(190,170,180,158);c.lineTo(76,158);c.quadraticCurveTo(66,170,56,158);c.bezierCurveTo(48,96,60,34,128,34);c.fill();c.stroke() + c.fillStyle=JK;c.beginPath();c.moveTo(100,190);c.quadraticCurveTo(62,198,54,250);c.lineTo(202,250);c.quadraticCurveTo(194,198,156,190);c.closePath();c.fill();c.stroke() + c.fillStyle='#fff';c.beginPath();c.moveTo(102,191);c.lineTo(120,252);c.lineTo(136,252);c.lineTo(154,191);c.quadraticCurveTo(128,206,102,191);c.fill();c.stroke() + c.strokeStyle=JD;c.lineWidth=4;c.beginPath();c.moveTo(128,206);c.lineTo(128,250);c.stroke();c.strokeStyle='#111' + c.strokeStyle='#fff';c.lineWidth=5;for(const d of[-1,1])c.beginPath(),c.moveTo(128+d*58,214),c.quadraticCurveTo(128+d*66,228,128+d*70,250),c.stroke() + c.strokeStyle='#111';c.fillStyle=SKIN;c.lineWidth=5;c.beginPath();c.moveTo(116,168);c.lineTo(116,190);c.quadraticCurveTo(128,200,140,190);c.lineTo(140,168);c.fill();c.beginPath();c.moveTo(116,168);c.lineTo(116,188);c.moveTo(140,168);c.lineTo(140,188);c.stroke() + c.lineWidth=6;c.fillStyle=SKIN;c.beginPath();c.moveTo(74,96);c.bezierCurveTo(70,152,100,184,128,186);c.bezierCurveTo(156,184,186,152,182,96);c.bezierCurveTo(182,44,74,44,74,96);c.fill();c.stroke() + c.lineWidth=6;for(const x of[103,153])c.beginPath(),c.arc(x,146,14,PI*1.15,PI*1.85),c.stroke() + c.lineWidth=5;for(const[x,d]of[[103,-1],[153,1]])c.beginPath(),c.moveTo(x+d*13,139),c.lineTo(x+d*19,134),c.stroke() + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*44,158,12,6,0,0,T),c.fill() + c.lineWidth=2.5;for(const d of[-1,1])for(const k of[-5,0,5])c.beginPath(),c.moveTo(128+d*44+k-2,161),c.lineTo(128+d*44+k+2,155),c.stroke() + c.lineWidth=4;c.fillStyle=MO;c.beginPath();c.moveTo(106,160);c.quadraticCurveTo(128,166,150,160);c.quadraticCurveTo(146,186,128,186);c.quadraticCurveTo(110,186,106,160);c.fill() + c.save();c.clip();c.fillStyle=TG;c.beginPath();c.ellipse(128,188,11,7,0,0,T);c.fill();c.fillStyle='#fff';c.beginPath();c.moveTo(104,158);c.quadraticCurveTo(128,166,152,158);c.lineTo(152,170);c.quadraticCurveTo(128,176,104,170);c.fill();c.restore() + c.stroke();c.lineWidth=2.5;c.beginPath();c.moveTo(108,167);c.quadraticCurveTo(128,174,148,167);c.stroke() + c.lineWidth=6;c.fillStyle=HAIR;c.beginPath();c.moveTo(68,150) + c.bezierCurveTo(50,74,88,36,128,36);c.bezierCurveTo(168,36,206,74,188,150) + c.quadraticCurveTo(184,120,178,104);c.quadraticCurveTo(168,98,158,110);c.quadraticCurveTo(156,94,140,90) + c.quadraticCurveTo(136,104,124,110);c.quadraticCurveTo(122,96,110,90);c.quadraticCurveTo(102,100,96,112) + c.quadraticCurveTo(90,100,78,104);c.quadraticCurveTo(70,124,68,150);c.closePath();c.fill();c.stroke() + c.strokeStyle=HL;c.lineWidth=5;for(const[a,e]of[[1.42,1.5],[1.6,1.72]])c.beginPath(),c.arc(128,104,56,PI*a,PI*e),c.stroke() + c.strokeStyle='#111';c.fillStyle=BAND;c.lineWidth=5;c.beginPath();c.moveTo(70,82);c.bezierCurveTo(90,52,166,52,186,82);c.lineTo(182,96);c.bezierCurveTo(162,70,94,70,74,96);c.closePath();c.fill();c.stroke() + for(const[a,b]of[[-.3,30],[.25,24]]){c.save();c.translate(70,90);c.rotate(a);c.beginPath();c.moveTo(0,-6);c.quadraticCurveTo(-b*.6,-8,-b,-2);c.lineTo(-b+2,8);c.quadraticCurveTo(-b*.6,4,0,6);c.closePath();c.fill();c.stroke();c.restore()} + if(g>0){c.fillStyle=GL;c.lineWidth=3.5;glint(c,140,166,6+16*g,g*1.5) + ds(c,8,3.5,'#fff',()=>{for(const a of[-.9,-.4,.1])c.moveTo(156+20*cos(a),156+20*sin(a)),c.lineTo(156+(26+8*g)*cos(a),156+(26+8*g)*sin(a))})} + c.restore() + const s=1.3+.2*pp + ds(c,38,27,JK,()=>{c.moveTo(226,266);c.lineTo(204,226)}) + c.save();c.translate(196,200-6*pp);c.scale(s,s);c.rotate(-.1) + c.lineWidth=5;c.fillStyle=SKIN;c.beginPath();c.roundRect(-6,-56,22,46,11);c.fill();c.stroke() + c.beginPath();c.roundRect(-24,-18,48,44,15);c.fill();c.stroke() + c.lineWidth=3;for(const y of[-6,6,16])c.beginPath(),c.moveTo(-24,y),c.lineTo(4,y),c.stroke() + c.beginPath();c.moveTo(-2,-44);c.quadraticCurveTo(4,-49,10,-44);c.stroke() + c.restore() + if(pp>.1)ds(c,8,3.5,'#fff',()=>{for(const a of[-2.1,-1.6,-1.1])c.moveTo(196+62*cos(a),170+62*sin(a)),c.lineTo(196+(72+8*pp)*cos(a),170+(72+8*pp)*sin(a))}) +} diff --git a/gen/uianime/success/victory.js b/gen/uianime/success/victory.js new file mode 100644 index 0000000..3ac2cc8 --- /dev/null +++ b/gen/uianime/success/victory.js @@ -0,0 +1,48 @@ +// red haired girl with a side ponytail flashing a sideways V sign over her eye, winking with a big grin while sparkles pop all around +const{sin,cos,PI,max,min}=Math,T=2*PI +export const frames=16,delay=80 +const SKIN='#ffe3d1',HAIR='#ff6b6b',HD='#e03131',HL='#ffe3e3',EYE='#4dabf7',ED='#1864ab',TOP='#ffe066',TD='#fab005',SCR='#74c0fc',BL='#ff8fab',MO='#c92a2a',TG='#ff8fab',SP=['#ffd43b','#ff8fab','#74c0fc','#ffd43b','#b2f2bb'] +const ds=(c,a,b,s,f)=>{for(const[l,k]of[[a,'#111'],[b,s]])c.lineWidth=l,c.strokeStyle=k,c.beginPath(),f(),c.stroke();c.strokeStyle='#111'} +const eye=(c,x,y,d)=>{ + c.fillStyle='#fff';c.beginPath();c.ellipse(x,y,14,17,0,0,T);c.fill() + c.save();c.beginPath();c.ellipse(x,y+2,11.5,15,0,0,T);c.clip();c.fillStyle=EYE;c.fill();c.fillStyle=ED;c.beginPath();c.ellipse(x,y-8,13,10,0,0,T);c.fill();c.restore() + c.lineWidth=2.5;c.beginPath();c.ellipse(x,y+2,11.5,15,0,0,T);c.stroke() + c.fillStyle='#111';c.beginPath();c.ellipse(x,y+3,5.5,7.5,0,0,T);c.fill() + c.fillStyle='#fff';c.beginPath();c.arc(x-4,y-5,4.5,0,T);c.fill();c.beginPath();c.arc(x+5,y+8,2,0,T);c.fill() + c.lineWidth=6;c.beginPath();c.moveTo(x-16,y-6);c.quadraticCurveTo(x,y-20,x+16,y-6);c.moveTo(x+d*15,y-7);c.lineTo(x+d*21,y-12);c.stroke() + c.lineWidth=2.5;c.beginPath();c.moveTo(x-8,y+18);c.lineTo(x+8,y+18);c.stroke() +} +const spark=(c,x,y,r)=>{c.beginPath();c.moveTo(x,y-r);for(const[a,b]of[[1,0],[0,1],[-1,0],[0,-1]])c.quadraticCurveTo(x+(a+b)*r*.15,y+(b-a)*r*.15,x+a*r,y+b*r);c.fill();c.stroke()} +export default(c,t)=>{ + const w=t>=.25&&t<.94 + c.lineWidth=3.5 + for(const[k,[x,y]]of[[30,40],[220,30],[236,224],[24,104],[150,16]].entries()){const p=(t-.25-k*.1+1)%1;if(p<.4)c.fillStyle=SP[k],spark(c,x,y,19*sin(PI*p/.4))} + c.save();c.translate(178,62) + c.lineWidth=6;c.fillStyle=HAIR;c.beginPath();c.moveTo(-8,0);c.bezierCurveTo(34,-12,56,50,46,126);c.quadraticCurveTo(40,148,24,156);c.quadraticCurveTo(34,96,0,24);c.closePath();c.fill();c.stroke() + c.strokeStyle=HD;c.lineWidth=3;c.beginPath();c.moveTo(12,12);c.bezierCurveTo(34,34,42,80,36,124);c.stroke();c.strokeStyle='#111' + c.fillStyle=SCR;c.lineWidth=5;c.beginPath();c.ellipse(2,6,11,15,.5,0,T);c.fill();c.stroke() + c.restore() + c.lineWidth=6;c.fillStyle=HD;c.beginPath();c.moveTo(128,34);c.bezierCurveTo(196,34,206,96,198,156);c.lineTo(58,156);c.bezierCurveTo(50,96,60,34,128,34);c.fill();c.stroke() + c.fillStyle=TOP;c.beginPath();c.moveTo(100,190);c.quadraticCurveTo(62,198,54,250);c.lineTo(202,250);c.quadraticCurveTo(194,198,156,190);c.closePath();c.fill();c.stroke() + c.fillStyle='#fff';c.beginPath();c.moveTo(96,191);c.lineTo(128,214);c.lineTo(160,191);c.lineTo(170,200);c.lineTo(128,232);c.lineTo(86,200);c.closePath();c.fill();c.lineWidth=5;c.stroke() + c.fillStyle=SKIN;c.beginPath();c.moveTo(116,168);c.lineTo(116,194);c.quadraticCurveTo(128,208,140,194);c.lineTo(140,168);c.fill();c.beginPath();c.moveTo(116,168);c.lineTo(116,192);c.moveTo(140,168);c.lineTo(140,192);c.stroke() + c.fillStyle=TD;c.lineWidth=4;c.beginPath();for(let k=0;k<10;k++){const r=k%2?6:13,b=k*PI/5-PI/2;c.lineTo(160+cos(b)*r,230+sin(b)*r)}c.closePath();c.fill();c.stroke() + c.lineWidth=6;c.fillStyle=SKIN;c.beginPath();c.moveTo(74,96);c.bezierCurveTo(70,152,100,184,128,186);c.bezierCurveTo(156,184,186,152,182,96);c.bezierCurveTo(182,44,74,44,74,96);c.fill();c.stroke() + eye(c,153,140,1) + if(w){c.lineWidth=5.5;c.beginPath();c.moveTo(91,130);c.lineTo(112,141);c.lineTo(91,151);c.stroke()}else eye(c,103,140,-1) + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*42,161,12,6,0,0,T),c.fill() + c.lineWidth=2.5;for(const d of[-1,1])for(const k of[-5,0,5])c.beginPath(),c.moveTo(128+d*42+k-2,164),c.lineTo(128+d*42+k+2,158),c.stroke() + c.lineWidth=3.5;c.fillStyle=MO;c.beginPath();c.moveTo(114,164);c.quadraticCurveTo(128,170,142,164);c.quadraticCurveTo(140,184,128,184);c.quadraticCurveTo(116,184,114,164);c.fill();c.stroke() + c.save();c.clip();c.fillStyle=TG;c.beginPath();c.ellipse(128,184,8,6,0,0,T);c.fill();c.fillStyle='#fff';c.fillRect(114,160,28,7);c.restore() + c.lineWidth=6;c.fillStyle=HAIR;c.beginPath();c.moveTo(70,146) + c.bezierCurveTo(54,74,88,36,128,36);c.bezierCurveTo(168,36,202,74,186,146) + c.quadraticCurveTo(186,116,178,102);c.quadraticCurveTo(170,104,164,112);c.quadraticCurveTo(160,98,150,92);c.quadraticCurveTo(144,104,136,110) + c.quadraticCurveTo(132,96,124,90);c.quadraticCurveTo(118,102,110,108);c.quadraticCurveTo(106,96,96,94);c.quadraticCurveTo(90,104,86,112) + c.quadraticCurveTo(80,104,78,102);c.quadraticCurveTo(70,120,70,146);c.closePath();c.fill();c.stroke() + c.strokeStyle=HL;c.lineWidth=5;for(const[a,e]of[[1.24,1.36],[1.44,1.52],[1.62,1.74]])c.beginPath(),c.arc(128,104,56,PI*a,PI*e),c.stroke() + c.strokeStyle='#111' + ds(c,30,19,TOP,()=>{c.moveTo(74,252);c.lineTo(36,206);c.lineTo(46,166)}) + for(const[fx,fy]of[[86,120],[88,160]])ds(c,14,7,SKIN,()=>{c.moveTo(54,148+(fy-140)*.3);c.lineTo(fx,fy)}) + c.lineWidth=5;c.fillStyle=SKIN;c.beginPath();c.ellipse(50,152,13,14,0,0,T);c.fill();c.stroke() + c.beginPath();c.ellipse(56,160,8,5,-.3,0,T);c.fill();c.stroke() +} diff --git a/gen/uianime/sync/juggle.js b/gen/uianime/sync/juggle.js new file mode 100644 index 0000000..b2ce0fb --- /dev/null +++ b/gen/uianime/sync/juggle.js @@ -0,0 +1,52 @@ +// sky blue haired girl with a big bow juggling three file icons in a loop over her head, tongue out in concentration, sync arrows on her tee +const{sin,PI,max}=Math,T=2*PI +export const frames=10,delay=110 +const SKIN='#ffe3d1',HAIR='#74c0fc',HD='#1c7ed6',HL='#e7f5ff',EYE='#f76707',ED='#d9480f',TEE='#ffe066',BL='#ffa8a8',BOW='#f783ac',SY='#4dabf7',FC=[['#ffc9c9','#fa5252'],['#b2f2bb','#40c057'],['#d0bfff','#7950f2']] +const ds=(c,a,b,s,f)=>{for(const[l,k]of[[a,'#111'],[b,s]])c.lineWidth=l,c.strokeStyle=k,c.beginPath(),f(),c.stroke();c.strokeStyle='#111'} +const eye=(c,x,y,d,gx,gy)=>{ + c.fillStyle='#fff';c.beginPath();c.ellipse(x,y,14,17,0,0,T);c.fill() + c.save();c.beginPath();c.ellipse(x,y,14,17,0,0,T);c.clip();c.beginPath();c.ellipse(x+gx,y+gy,11.5,15,0,0,T);c.fillStyle=EYE;c.fill();c.lineWidth=2.5;c.stroke() + c.fillStyle=ED;c.beginPath();c.ellipse(x+gx,y+gy-10,13,9,0,0,T);c.fill() + c.fillStyle='#111';c.beginPath();c.ellipse(x+gx,y+gy+1,5.5,7.5,0,0,T);c.fill() + c.fillStyle='#fff';c.beginPath();c.arc(x+gx-4,y+gy-6,4.5,0,T);c.fill();c.beginPath();c.arc(x+gx+5,y+gy+7,2,0,T);c.fill();c.restore() + c.lineWidth=6;c.beginPath();c.moveTo(x-16,y-6);c.quadraticCurveTo(x,y-20,x+16,y-6);c.moveTo(x+d*15,y-7);c.lineTo(x+d*21,y-12);c.stroke() +} +const file=(c,x,y,a,[f,l])=>{c.save();c.translate(x,y);c.rotate(a) + c.fillStyle=f;c.lineWidth=5;c.beginPath();c.moveTo(-16,-21);c.lineTo(6,-21);c.lineTo(16,-11);c.lineTo(16,21);c.lineTo(-16,21);c.closePath();c.fill();c.stroke() + c.fillStyle='#fff';c.lineWidth=4;c.beginPath();c.moveTo(6,-21);c.lineTo(6,-11);c.lineTo(16,-11);c.closePath();c.fill();c.stroke() + c.strokeStyle=l;c.lineWidth=4;c.beginPath();for(const[w,yy]of[[12,-3],[20,5],[16,13]])c.moveTo(-9,yy),c.lineTo(-9+w,yy);c.stroke();c.restore()} +const pos=p=>{if(p<2/3){const q=p*1.5;return[212-168*q,196-4*166*q*(1-q)]}const q=(p-2/3)*3;return[44+168*q,196+30*sin(PI*q)]} +export default(c,t)=>{ + const lh=196-10*max(0,sin(3*T*t+2)),rh=196-10*max(0,sin(3*T*t-.6)) + const fp=[0,1,2].map(k=>(t+k/3)%1),top=fp.reduce((a,b)=>Math.abs(b-1/3){c.save();c.translate(128,174);c.scale(.66,.66);c.translate(-128,-186);f();c.restore()} + H(()=>{ + c.lineWidth=8;c.fillStyle=HD;c.beginPath();c.moveTo(128,34);c.bezierCurveTo(198,34,212,100,206,160);c.quadraticCurveTo(208,190,190,200);c.lineTo(66,200);c.quadraticCurveTo(48,190,50,160);c.bezierCurveTo(44,100,58,34,128,34);c.fill();c.stroke() + c.fillStyle=TEE;c.beginPath();c.moveTo(100,190);c.quadraticCurveTo(52,198,40,330);c.lineTo(216,330);c.quadraticCurveTo(204,198,156,190);c.closePath();c.fill();c.stroke() + c.fillStyle='#fff';c.beginPath();c.moveTo(104,190);c.quadraticCurveTo(128,214,152,190);c.closePath();c.fill();c.stroke() + c.fillStyle=SKIN;c.beginPath();c.moveTo(114,168);c.lineTo(114,194);c.quadraticCurveTo(128,206,142,194);c.lineTo(142,168);c.fill();c.beginPath();c.moveTo(114,168);c.lineTo(114,192);c.moveTo(142,168);c.lineTo(142,192);c.stroke() + c.save();c.translate(128,260);c.rotate(-.4) + for(const d of[0,PI])ds(c,14,7,SY,()=>{c.arc(0,0,16,d+.3,d+2.5)}) + c.fillStyle=SY;c.lineWidth=4;for(const d of[0,PI]){c.save();c.rotate(d+2.5);c.beginPath();c.moveTo(16,-10);c.lineTo(28,0);c.lineTo(10,4);c.closePath();c.restore();c.fill();c.stroke()} + c.restore() + for(const d of[-1,1]){c.fillStyle=HAIR;c.beginPath();c.moveTo(128+d*60,110);c.bezierCurveTo(128+d*82,150,128+d*76,200,128+d*62,226);c.quadraticCurveTo(128+d*50,214,128+d*48,200);c.quadraticCurveTo(128+d*58,160,128+d*48,120);c.closePath();c.fill();c.stroke()} + c.fillStyle=SKIN;c.beginPath();c.moveTo(74,96);c.bezierCurveTo(70,152,100,184,128,186);c.bezierCurveTo(156,184,186,152,182,96);c.bezierCurveTo(182,44,74,44,74,96);c.fill();c.stroke() + eye(c,103,140,-1,1,-4);eye(c,153,140,1,1,-4) + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*44,162,14,8,0,0,T),c.fill() + c.lineWidth=4;for(const d of[-1,1])for(const k of[-6,0,6])c.beginPath(),c.moveTo(128+d*44+k-2,166),c.lineTo(128+d*44+k+2,158),c.stroke() + c.lineWidth=6;c.beginPath();c.moveTo(116,168);c.quadraticCurveTo(128,174,140,168);c.stroke() + c.fillStyle='#ff8fab';c.beginPath();c.moveTo(130,171);c.quadraticCurveTo(132,184,139,182);c.quadraticCurveTo(144,176,140,169);c.fill();c.stroke() + c.lineWidth=8;c.fillStyle=HAIR;c.beginPath();c.moveTo(68,150) + c.bezierCurveTo(52,74,88,36,128,36);c.bezierCurveTo(168,36,204,74,188,150) + c.quadraticCurveTo(186,118,178,102);c.quadraticCurveTo(170,104,164,112);c.quadraticCurveTo(158,98,148,92);c.quadraticCurveTo(142,104,134,110) + c.quadraticCurveTo(128,98,120,92);c.quadraticCurveTo(114,104,106,110);c.quadraticCurveTo(100,98,92,96);c.quadraticCurveTo(88,106,84,112) + c.quadraticCurveTo(80,104,78,104);c.quadraticCurveTo(70,124,68,150);c.closePath();c.fill();c.stroke() + c.strokeStyle=HL;c.lineWidth=7;for(const[s,e]of[[1.24,1.36],[1.44,1.52],[1.62,1.74]])c.beginPath(),c.arc(128,104,56,PI*s,PI*e),c.stroke() + c.strokeStyle='#111';c.fillStyle=BOW;c.lineWidth=7 + for(const d of[-1,1])c.beginPath(),c.moveTo(128,40),c.quadraticCurveTo(128+d*30,8,128+d*44,30),c.quadraticCurveTo(128+d*36,58,128,40),c.fill(),c.stroke() + c.beginPath();c.arc(128,40,9,0,T);c.fill();c.stroke() + }) + for(const[x,y,d]of[[44,lh,-1],[212,rh,1]])ds(c,20,11,TEE,()=>{c.moveTo(128+d*44,196);c.quadraticCurveTo(128+d*70,246,x,y+10)}) + fp.forEach((p,k)=>{const[x,y]=pos(p);file(c,x,y,p*T,FC[k])}) + c.fillStyle=SKIN;c.lineWidth=5;for(const[x,y]of[[44,lh],[212,rh]])c.beginPath(),c.ellipse(x,y+8,12,11,0,0,T),c.fill(),c.stroke() +} diff --git a/gen/uianime/thanks/heart.js b/gen/uianime/thanks/heart.js new file mode 100644 index 0000000..d4f3e0c --- /dev/null +++ b/gen/uianime/thanks/heart.js @@ -0,0 +1,47 @@ +// pink-bob girl saying thanks with a heart made of her hands, a red heart beating inside it while little hearts float up +const{sin,cos,PI,max}=Math,T=2*PI +export const frames=12,delay=90 +const SKIN='#ffe3d1',HAIR='#faa2c1',HD='#e64980',HL='#fff0f6',EYE='#9775fa',ED='#5f3dc4',SW='#a5d8ff',BL='#ff8fab',MO='#c92a2a',TG='#ff8fab',HR='#fa5252',HT=['#ff6b6b','#f06595','#ffa8a8'],CL='#ffd43b' +const eye=(c,x,y,d)=>{ + c.fillStyle='#fff';c.beginPath();c.ellipse(x,y,14,17,0,0,T);c.fill() + c.save();c.beginPath();c.ellipse(x,y+2,11.5,15,0,0,T);c.clip();c.fillStyle=EYE;c.fill();c.fillStyle=ED;c.beginPath();c.ellipse(x,y-8,13,10,0,0,T);c.fill();c.restore() + c.lineWidth=2.5;c.beginPath();c.ellipse(x,y+2,11.5,15,0,0,T);c.stroke() + c.fillStyle='#111';c.beginPath();c.ellipse(x,y+3,5.5,7.5,0,0,T);c.fill() + c.fillStyle='#fff';c.beginPath();c.arc(x-4,y-5,4.5,0,T);c.fill();c.beginPath();c.arc(x+5,y+8,2,0,T);c.fill() + c.lineWidth=6;c.beginPath();c.moveTo(x-16,y-6);c.quadraticCurveTo(x,y-20,x+16,y-6);c.moveTo(x+d*15,y-7);c.lineTo(x+d*21,y-12);c.stroke() +} +const hp=(c,x,y,s)=>{c.save();c.translate(x,y);c.scale(s,s);c.beginPath();c.moveTo(0,8);c.bezierCurveTo(-13,-1,-9,-12,0,-5);c.bezierCurveTo(9,-12,13,-1,0,8);c.restore()} +export default(c,t,i)=>{ + const pu=1+.12*max(0,sin(2*T*t))**2,bk=i==9,head=f=>f() + head(()=>{c.lineWidth=6;c.fillStyle=HD;c.beginPath();c.moveTo(128,34);c.bezierCurveTo(198,34,214,100,206,158);c.quadraticCurveTo(204,184,182,182);c.lineTo(74,182);c.quadraticCurveTo(52,184,50,158);c.bezierCurveTo(42,100,58,34,128,34);c.fill();c.stroke()}) + c.lineWidth=6;c.fillStyle=SW;c.beginPath();c.moveTo(100,190);c.quadraticCurveTo(62,198,54,252);c.lineTo(202,252);c.quadraticCurveTo(194,198,156,190);c.closePath();c.fill();c.stroke() + c.fillStyle='#fff';c.lineWidth=5;for(const d of[-1,1])c.beginPath(),c.moveTo(128,204),c.quadraticCurveTo(128+d*16,212,128+d*30,194),c.lineTo(128+d*12,188),c.closePath(),c.fill(),c.stroke() + c.fillStyle=SKIN;c.beginPath();c.moveTo(116,166);c.lineTo(116,192);c.lineTo(128,204);c.lineTo(140,192);c.lineTo(140,166);c.fill();c.beginPath();c.moveTo(116,166);c.lineTo(116,190);c.moveTo(140,166);c.lineTo(140,190);c.stroke() + head(()=>{ + c.lineWidth=6;c.fillStyle=SKIN;c.beginPath();c.moveTo(74,96);c.bezierCurveTo(70,152,100,184,128,186);c.bezierCurveTo(156,184,186,152,182,96);c.bezierCurveTo(182,44,74,44,74,96);c.fill();c.stroke() + if(bk){c.lineWidth=5;for(const x of[103,153])c.beginPath(),c.arc(x,148,13,PI*1.15,PI*1.85),c.stroke()}else eye(c,103,140,-1),eye(c,153,140,1) + c.lineWidth=2.5;c.beginPath();c.moveTo(128,156);c.lineTo(127,159);c.stroke() + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*42,161,13,6.5,0,0,T),c.fill() + c.lineWidth=2.5;for(const d of[-1,1])for(const k of[-5,0,5])c.beginPath(),c.moveTo(128+d*42+k-2,164),c.lineTo(128+d*42+k+2,158),c.stroke() + c.lineWidth=3.5;c.fillStyle=MO;c.beginPath();c.moveTo(118,165);c.quadraticCurveTo(128,184,138,165);c.closePath();c.fill();c.stroke();c.save();c.clip();c.fillStyle=TG;c.beginPath();c.ellipse(128,179,7,5,0,0,T);c.fill();c.restore() + c.lineWidth=6;c.fillStyle=HAIR;c.beginPath();c.moveTo(62,172) + c.bezierCurveTo(46,74,88,36,128,36);c.bezierCurveTo(168,36,210,74,194,172);c.quadraticCurveTo(186,150,184,120) + c.lineTo(178,106);c.lineTo(168,114);c.lineTo(160,100);c.lineTo(148,112);c.lineTo(138,98);c.lineTo(128,112);c.lineTo(118,98);c.lineTo(108,112);c.lineTo(96,100);c.lineTo(88,114);c.lineTo(78,106) + c.lineTo(72,120);c.quadraticCurveTo(70,150,62,172);c.closePath();c.fill();c.stroke() + c.strokeStyle=HL;c.lineWidth=5;for(const[a,e]of[[1.24,1.36],[1.44,1.52],[1.62,1.74]])c.beginPath(),c.arc(128,104,56,PI*a,PI*e),c.stroke() + c.strokeStyle='#111';c.fillStyle=CL;c.lineWidth=4;for(const[x,y,r]of[[80,80,-.9],[90,66,-.7]])c.save(),c.translate(x,y),c.rotate(r),c.beginPath(),c.roundRect(-11,-4,22,8,4),c.fill(),c.stroke(),c.restore() + }) + for(const d of[-1,1])for(const[w,s]of[[30,'#111'],[19,SW]])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),c.moveTo(128+d*86,262),c.lineTo(128+d*50,226),c.stroke() + c.save();c.translate(128,216);c.scale(pu,pu);c.translate(-128,-216) + c.fillStyle=HR;c.strokeStyle='#111';c.lineWidth=5;hp(c,128,214,2.4);c.fill();c.stroke() + c.fillStyle='#fff';c.beginPath();c.ellipse(113,202,5,3.5,-.6,0,T);c.fill() + for(const[w,s]of[[28,'#111'],[17,SKIN]])c.lineWidth=w,c.strokeStyle=s,hp(c,128,216,4),c.stroke() + c.strokeStyle='#111';c.lineWidth=5;c.fillStyle=SKIN + for(const d of[-1,1]){c.beginPath();c.ellipse(128+d*38,220,13,17,-d*.3,0,T);c.fill();c.stroke()} + c.lineWidth=3;c.beginPath() + for(const d of[-1,1])c.moveTo(128+d*30,228),c.quadraticCurveTo(128+d*22,226,128+d*16,234),c.moveTo(128+d*44,206),c.lineTo(128+d*36,201) + c.stroke() + c.restore() + c.strokeStyle='#111';c.lineWidth=4 + for(const[x0,o,k]of[[28,0,0],[228,.25,1],[36,.5,2],[220,.75,0]]){const p=(t+o)%1,s=1.4*sin(PI*p);if(s>.15)c.fillStyle=HT[k],hp(c,x0+7*sin(T*(p*2+o)),196-p*176,s),c.fill(),c.stroke()} +} diff --git a/gen/uianime/timeout/asleep.js b/gen/uianime/timeout/asleep.js new file mode 100644 index 0000000..87cddc1 --- /dev/null +++ b/gen/uianime/timeout/asleep.js @@ -0,0 +1,47 @@ +// periwinkle haired girl fast asleep with her cheek on her arms at a desk, drooling, Zzz floating up while a red alarm clock ticks its hand around +const{sin,cos,PI}=Math,T=2*PI +export const frames=12,delay=100 +const SKIN='#ffe3d1',HAIR='#91a7ff',HD='#5c7cfa',HL='#edf2ff',SWT='#ffd8a8',SD='#ffa94d',DESK='#e8b07a',DD='#c47f45',BL='#ffa8a8',CLK='#ff6b6b',CD='#e03131',BELL='#ffd43b',ZC='#91a7ff' +const ds=(c,a,b,s,f)=>{for(const[l,k]of[[a,'#111'],[b,s]])c.lineWidth=l,c.strokeStyle=k,c.beginPath(),f(),c.stroke();c.strokeStyle='#111'} +const zed=(c,x,y,s)=>{c.save();c.translate(x,y);c.scale(s,s);c.rotate(-.15);ds(c,11,5,ZC,()=>{c.moveTo(-9,-9);c.lineTo(9,-9);c.lineTo(-9,9);c.lineTo(9,9)});c.restore()} +export default(c,t,i)=>{ + const H=f=>{c.save();c.translate(96,140);c.rotate(-.32);c.scale(.8,.8);c.translate(-128,-128);f();c.restore()} + c.lineWidth=6;c.fillStyle=SWT;c.beginPath();c.moveTo(14,214);c.quadraticCurveTo(14,150,64,140);c.lineTo(132,140);c.quadraticCurveTo(178,150,178,214);c.closePath();c.fill();c.stroke() + H(()=>{c.lineWidth=7;c.fillStyle=HD;c.beginPath();c.moveTo(128,34);c.bezierCurveTo(200,34,214,100,208,160);c.quadraticCurveTo(212,200,196,218);c.lineTo(60,218);c.quadraticCurveTo(44,200,48,160);c.bezierCurveTo(42,100,56,34,128,34);c.fill();c.stroke()}) + c.lineWidth=6;c.fillStyle=DESK;c.beginPath();c.roundRect(6,208,244,34,8);c.fill();c.stroke() + c.strokeStyle=DD;c.lineWidth=4;c.beginPath();c.moveTo(18,226);c.lineTo(238,226);c.stroke();c.strokeStyle='#111' + c.lineWidth=6;c.fillStyle=SWT;c.beginPath();c.roundRect(12,180,108,32,16);c.fill();c.stroke();c.beginPath();c.roundRect(72,184,100,30,15);c.fill();c.stroke() + c.strokeStyle=SD;c.lineWidth=4;for(const x of[30,158])c.beginPath(),c.moveTo(x,186),c.lineTo(x,208),c.stroke();c.strokeStyle='#111' + H(()=>{ + c.lineWidth=7;c.fillStyle=SKIN;c.beginPath();c.moveTo(74,96);c.bezierCurveTo(70,152,100,184,128,186);c.bezierCurveTo(156,184,186,152,182,96);c.bezierCurveTo(182,44,74,44,74,96);c.fill();c.stroke() + c.lineWidth=6;for(const[x,d]of[[103,-1],[153,1]]){c.beginPath();c.arc(x,134,14,PI*.15,PI*.85);c.stroke();c.beginPath();c.moveTo(x+d*13,139);c.lineTo(x+d*19,136);c.stroke()} + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*44,160,14,7,0,0,T),c.fill() + c.lineWidth=3;for(const d of[-1,1])for(const k of[-5,0,5])c.beginPath(),c.moveTo(128+d*44+k-2,163),c.lineTo(128+d*44+k+2,157),c.stroke() + c.lineWidth=4.5;c.fillStyle='#c92a2a';c.beginPath();c.ellipse(126,170,6,5,0,0,T);c.fill();c.stroke() + const dl=2+2*sin(T*t) + c.fillStyle='#d0ebff';c.lineWidth=3.5;c.beginPath();c.moveTo(120,173);c.quadraticCurveTo(110,184+dl,116,189+dl);c.quadraticCurveTo(124,193+dl,125,185+dl);c.quadraticCurveTo(125,179,120,173);c.fill();c.stroke() + c.lineWidth=7;c.fillStyle=HAIR;c.beginPath();c.moveTo(66,156) + c.bezierCurveTo(50,74,88,36,128,36);c.bezierCurveTo(168,36,206,74,190,156) + c.quadraticCurveTo(188,122,180,106);c.quadraticCurveTo(172,104,166,112);c.quadraticCurveTo(160,98,150,92);c.quadraticCurveTo(144,104,136,110) + c.quadraticCurveTo(130,96,120,92);c.quadraticCurveTo(114,104,106,110);c.quadraticCurveTo(100,98,92,96);c.quadraticCurveTo(88,106,84,112) + c.quadraticCurveTo(78,104,76,104);c.quadraticCurveTo(68,126,66,156);c.closePath();c.fill();c.stroke() + c.strokeStyle=HL;c.lineWidth=6;for(const[s,e]of[[1.24,1.36],[1.44,1.52],[1.62,1.74]])c.beginPath(),c.arc(128,104,56,PI*s,PI*e),c.stroke() + c.strokeStyle='#111' + }) + const r=i%2?1:-1,X=200,Y=162 + c.save();c.translate(X,Y+48);c.rotate(.05*r);c.translate(-X,-Y-48) + c.lineWidth=6;for(const d of[-1,1])c.beginPath(),c.moveTo(X+d*20,Y+32),c.lineTo(X+d*28,Y+48),c.stroke() + ds(c,10,4,'#adb5bd',()=>{c.moveTo(X,Y-44);c.lineTo(X,Y-56)}) + c.fillStyle=BELL;c.lineWidth=5;for(const d of[-1,1])c.beginPath(),c.arc(X+d*24,Y-36,15,PI+d*.35,d*.35),c.closePath(),c.fill(),c.stroke() + c.fillStyle=CLK;c.lineWidth=6;c.beginPath();c.arc(X,Y,40,0,T);c.fill();c.stroke() + c.fillStyle='#fff';c.lineWidth=4;c.beginPath();c.arc(X,Y,30,0,T);c.fill();c.stroke() + c.fillStyle='#111';for(let k=0;k<4;k++)c.beginPath(),c.arc(X+23*cos(k*PI/2),Y+23*sin(k*PI/2),3,0,T),c.fill() + const m=T*i/12-PI/2 + c.lineWidth=6;c.beginPath();c.moveTo(X,Y);c.lineTo(X+14*cos(-2.4),Y+14*sin(-2.4));c.stroke() + c.strokeStyle=CD;c.lineWidth=4;c.beginPath();c.moveTo(X,Y);c.lineTo(X+22*cos(m),Y+22*sin(m));c.stroke();c.strokeStyle='#111' + c.fillStyle=CD;c.lineWidth=3;c.beginPath();c.arc(X,Y,4.5,0,T);c.fill();c.stroke() + c.fillStyle='#fff';c.beginPath();c.ellipse(X-20,Y-22,8,4,-.7,0,T);c.fill() + c.restore() + for(const a of[.65,1.15])ds(c,7,3,'#fff',()=>{const b=-PI/2+r*a,x=X+r*24,y=Y-36;c.moveTo(x+cos(b)*21,y+sin(b)*21);c.lineTo(x+cos(b)*30,y+sin(b)*30)}) + for(const o of[0,1/3,2/3]){const p=(t+o)%1;zed(c,146+46*p+5*sin(p*T),96-80*p,.55+.75*sin(PI*p))} +} diff --git a/gen/uianime/typing/chat.js b/gen/uianime/typing/chat.js new file mode 100644 index 0000000..f0363f4 --- /dev/null +++ b/gen/uianime/typing/chat.js @@ -0,0 +1,58 @@ +// orange bob girl in a mint hoodie typing furiously on her phone with both thumbs, tongue poking out, while a chat bubble's three dots bounce +const{sin,cos,PI,max}=Math,T=2*PI +export const frames=12,delay=75 +const SKIN='#ffe3d1',HAIR='#ffa94d',HD='#f76707',HL='#fff4e6',EYE='#20c997',ED='#087f5b',HO='#96f2d7',HOD='#20c997',PH='#b197fc',BL='#ffa8a8',TG='#ff8fab',CLIP='#f06595' +const ds=(c,a,b,s,f)=>{for(const[l,k]of[[a,'#111'],[b,s]])c.lineWidth=l,c.strokeStyle=k,c.beginPath(),f(),c.stroke();c.strokeStyle='#111'} +const eye=(c,x,y,d)=>{ + c.fillStyle='#fff';c.beginPath();c.ellipse(x,y,14,17,0,0,T);c.fill() + c.save();c.beginPath();c.ellipse(x,y+3,11.5,14,0,0,T);c.clip();c.fillStyle=EYE;c.fill();c.fillStyle=ED;c.beginPath();c.ellipse(x,y-6,13,10,0,0,T);c.fill();c.restore() + c.lineWidth=2.5;c.beginPath();c.ellipse(x,y+3,11.5,14,0,0,T);c.stroke() + c.fillStyle='#111';c.beginPath();c.ellipse(x,y+6,5.5,7,0,0,T);c.fill() + c.fillStyle='#fff';c.beginPath();c.arc(x-4,y-2,4.5,0,T);c.fill();c.beginPath();c.arc(x+5,y+10,2,0,T);c.fill() + c.lineWidth=6;c.beginPath();c.moveTo(x-16,y-6);c.quadraticCurveTo(x,y-18,x+16,y-6);c.moveTo(x+d*15,y-7);c.lineTo(x+d*21,y-12);c.stroke() + c.lineWidth=2.5;c.beginPath();c.moveTo(x-8,y+18);c.lineTo(x+8,y+18);c.stroke() +} +export default(c,t)=>{ + const th=[0,PI].map(o=>max(0,sin(3*T*t+o))) + c.save();c.translate(116,22);c.scale(.8,.8);c.translate(-128,0) + c.lineWidth=6;c.fillStyle=HD;c.beginPath();c.moveTo(128,34);c.bezierCurveTo(198,34,214,100,204,168);c.quadraticCurveTo(200,186,184,184);c.lineTo(72,184);c.quadraticCurveTo(56,186,52,168);c.bezierCurveTo(42,100,58,34,128,34);c.fill();c.stroke() + c.fillStyle=HOD;c.beginPath();c.moveTo(84,196);c.quadraticCurveTo(128,176,172,196);c.lineTo(166,214);c.quadraticCurveTo(128,200,90,214);c.closePath();c.fill();c.stroke() + c.fillStyle=HO;c.beginPath();c.moveTo(96,194);c.quadraticCurveTo(58,202,50,262);c.lineTo(206,262);c.quadraticCurveTo(198,202,160,194);c.quadraticCurveTo(128,214,96,194);c.fill();c.stroke() + c.fillStyle=SKIN;c.beginPath();c.moveTo(116,168);c.lineTo(116,194);c.quadraticCurveTo(128,204,140,194);c.lineTo(140,168);c.fill();c.lineWidth=5;c.beginPath();c.moveTo(116,168);c.lineTo(116,192);c.moveTo(140,168);c.lineTo(140,192);c.stroke() + c.lineWidth=6;c.fillStyle=SKIN;c.beginPath();c.moveTo(74,96);c.bezierCurveTo(70,152,100,184,128,186);c.bezierCurveTo(156,184,186,152,182,96);c.bezierCurveTo(182,44,74,44,74,96);c.fill();c.stroke() + eye(c,103,140,-1);eye(c,153,140,1) + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*42,162,12,6,0,0,T),c.fill() + c.lineWidth=2.5;for(const d of[-1,1])for(const k of[-5,0,5])c.beginPath(),c.moveTo(128+d*42+k-2,165),c.lineTo(128+d*42+k+2,159),c.stroke() + c.fillStyle=TG;c.lineWidth=3;c.beginPath();c.ellipse(134,172,5,6,-.3,0,T);c.fill();c.stroke() + c.lineWidth=3.5;c.beginPath();c.moveTo(119,168);c.quadraticCurveTo(128,171,139,167);c.stroke() + c.lineWidth=6;c.fillStyle=HAIR;c.beginPath();c.moveTo(62,176) + c.bezierCurveTo(44,74,88,36,128,36);c.bezierCurveTo(168,36,212,74,194,176);c.quadraticCurveTo(186,180,178,176) + c.quadraticCurveTo(182,128,176,104);c.quadraticCurveTo(168,104,162,112);c.quadraticCurveTo(158,98,148,92);c.quadraticCurveTo(142,104,134,110) + c.quadraticCurveTo(130,96,122,90);c.quadraticCurveTo(116,102,108,108);c.quadraticCurveTo(104,96,94,94);c.quadraticCurveTo(88,104,82,108) + c.quadraticCurveTo(74,128,78,176);c.quadraticCurveTo(70,180,62,176);c.closePath();c.fill();c.stroke() + c.strokeStyle=HL;c.lineWidth=5;for(const[a,e]of[[1.24,1.36],[1.44,1.52],[1.62,1.74]])c.beginPath(),c.arc(128,104,56,PI*a,PI*e),c.stroke() + for(const[w,s]of[[11,'#111'],[5,CLIP]]){c.lineWidth=w;c.strokeStyle=s;c.beginPath();c.moveTo(158,66);c.lineTo(176,80);c.moveTo(164,82);c.lineTo(172,62);c.stroke()} + c.strokeStyle='#111' + for(const d of[-1,1])ds(c,30,19,HO,()=>{c.moveTo(128+d*86,300);c.lineTo(128+d*40,282)}) + c.save();c.translate(128,236);c.rotate(-.05) + c.lineWidth=6;c.fillStyle=PH;c.beginPath();c.roundRect(-38,-48,76,100,13);c.fill();c.stroke() + c.fillStyle='#f8f9fa';c.lineWidth=3;c.beginPath();c.roundRect(-30,-40,60,84,6);c.fill();c.stroke() + c.fillStyle='#a5d8ff';c.beginPath();c.roundRect(-25,-35,32,10,5);c.fill() + c.fillStyle='#ffc9de';c.beginPath();c.roundRect(-6,-21,31,10,5);c.fill() + c.fillStyle='#dee2e6';c.beginPath();c.roundRect(-30,-4,60,48,[0,0,6,6]);c.fill() + c.fillStyle='#fff';for(let r=0;r<3;r++)for(let k=0;k<5;k++)c.beginPath(),c.roundRect(-27+k*11.4,r*11,9,8,2),c.fill() + for(const[k,d,tx,y]of[[0,-1,-12,8],[1,1,10,14]]){ + const l=th[k],ty=y-5*l + c.lineWidth=5;c.fillStyle=SKIN;c.beginPath();c.ellipse(d*34,40,14,16,0,0,T);c.fill();c.stroke() + ds(c,18,9,SKIN,()=>{c.moveTo(d*34,36);c.lineTo(tx,ty)}) + c.fillStyle=SKIN;c.beginPath();c.ellipse(tx,ty,6.5+1.5*l,6.5+1.5*l,0,0,T);c.fill() + } + c.restore() + for(const[k,d]of[[0,-1],[1,1]])if(th[k]<.3)ds(c,8,3.5,'#fff',()=>{for(const a of[-.5,0,.5])c.moveTo(128+d*(50+12*cos(a)),196+12*sin(a)*d),c.lineTo(128+d*(50+24*cos(a)),196+24*sin(a)*d)}) + c.restore() + // typing bubble with three bouncing dots + c.lineWidth=5;c.fillStyle='#fff' + for(const[x,y,r]of[[164,82,5],[176,70,9]])c.beginPath(),c.arc(x,y,r,0,T),c.fill(),c.stroke() + c.lineWidth=6;c.beginPath();c.roundRect(168,14,80,50,25);c.fill();c.stroke() + for(let k=0;k<3;k++){const p=(t-k*.14+1)%1,l=p<.42?sin(PI*p/.42):0;c.fillStyle=l>.3?'#495057':'#adb5bd';c.beginPath();c.arc(186+k*22,40-8*l,7,0,T);c.fill()} +} diff --git a/gen/uianime/upload/toss.js b/gen/uianime/upload/toss.js new file mode 100644 index 0000000..9d82e4c --- /dev/null +++ b/gen/uianime/upload/toss.js @@ -0,0 +1,64 @@ +// pink haired girl in a sailor top swinging a file up and tossing it into a cloud, the cloud gulps it with a bounce and she cheers, then grabs the next one +const{sin,PI,max,min}=Math,T=2*PI +export const frames=16,delay=80 +const SKIN='#ffe3d1',HAIR='#faa2c1',HD='#e64980',HL='#fff0f6',EYE='#339af0',ED='#1864ab',TOP='#e5dbff',COL='#4263eb',SCF='#fa5252',BL='#ff8fab',CL='#e7f5ff',AR='#4dabf7',FL='#ffe066',FD='#f59f00',SP='#ffd43b' +const ds=(c,a,b,s,f)=>{for(const[l,k]of[[a,'#111'],[b,s]])c.lineWidth=l,c.strokeStyle=k,c.beginPath(),f(),c.stroke();c.strokeStyle='#111'} +const ease=x=>x<0?0:x>1?1:x*x*(3-2*x),L=(a,b,u)=>a+(b-a)*u +const eye=(c,x,y,d)=>{ + c.fillStyle='#fff';c.beginPath();c.ellipse(x,y,14,17,0,0,T);c.fill() + c.save();c.beginPath();c.ellipse(x,y,14,17,0,0,T);c.clip();c.beginPath();c.ellipse(x+4,y-1,11.5,15,0,0,T);c.fillStyle=EYE;c.fill();c.lineWidth=2.5;c.stroke() + c.fillStyle=ED;c.beginPath();c.ellipse(x+4,y-11,13,9,0,0,T);c.fill() + c.fillStyle='#111';c.beginPath();c.ellipse(x+4,y,5.5,7.5,0,0,T);c.fill() + c.fillStyle='#fff';c.beginPath();c.arc(x,y-7,4.5,0,T);c.fill();c.beginPath();c.arc(x+9,y+6,2,0,T);c.fill();c.restore() + c.lineWidth=6;c.beginPath();c.moveTo(x-16,y-6);c.quadraticCurveTo(x,y-20,x+16,y-6);c.moveTo(x+d*15,y-7);c.lineTo(x+d*21,y-12);c.stroke() +} +const file=(c,x,y,a,s)=>{c.save();c.translate(x,y);c.rotate(a);c.scale(s,s) + c.fillStyle=FL;c.lineWidth=5;c.beginPath();c.moveTo(-18,-23);c.lineTo(7,-23);c.lineTo(18,-12);c.lineTo(18,23);c.lineTo(-18,23);c.closePath();c.fill();c.stroke() + c.fillStyle='#fff';c.lineWidth=4;c.beginPath();c.moveTo(7,-23);c.lineTo(7,-12);c.lineTo(18,-12);c.closePath();c.fill();c.stroke() + c.strokeStyle=FD;c.lineWidth=4;c.beginPath();for(const[w,yy]of[[12,-4],[24,5],[18,14]])c.moveTo(-10,yy),c.lineTo(-10+w,yy);c.stroke();c.restore()} +const spark=(c,x,y,r)=>{c.beginPath();c.moveTo(x,y-r);for(const[a,b]of[[1,0],[0,1],[-1,0],[0,-1]])c.quadraticCurveTo(x+(a+b)*r*.15,y+(b-a)*r*.15,x+a*r,y+b*r);c.fill();c.stroke()} +export default(c,t)=>{ + const up=ease((t-.25)/.125)-ease((t-.6)/.2),dip=sin(PI*min(1,t/.25))*8,fp=(t-.3125)/.25,gulp=t>=.5625&&t<.75,cs=gulp?1+.14*sin(PI*(t-.5625)/.1875):1,hap=t>=.5625&&t<.875 + const hx=L(116,180,up),hy=L(212+dip,118,up) + const H=f=>{c.save();c.translate(104,178);c.scale(.76,.76);c.translate(-128,-186);f();c.restore()} + H(()=>{ + c.save();c.translate(196,70);c.rotate(.25) + c.lineWidth=9;c.fillStyle=HAIR;c.beginPath();c.moveTo(-6,0);c.bezierCurveTo(40,10,60,70,40,140);c.quadraticCurveTo(30,160,14,150);c.bezierCurveTo(30,90,20,30,-6,10);c.closePath();c.fill();c.stroke() + c.strokeStyle=HD;c.lineWidth=4;c.beginPath();c.moveTo(14,18);c.bezierCurveTo(36,40,42,90,32,130);c.stroke();c.strokeStyle='#111' + c.restore() + c.lineWidth=9;c.fillStyle=HD;c.beginPath();c.moveTo(128,34);c.bezierCurveTo(198,34,210,100,204,160);c.lineTo(52,160);c.bezierCurveTo(46,100,58,34,128,34);c.fill();c.stroke() + c.fillStyle=TOP;c.beginPath();c.moveTo(100,190);c.quadraticCurveTo(52,198,40,330);c.lineTo(216,330);c.quadraticCurveTo(204,198,156,190);c.closePath();c.fill();c.stroke() + c.fillStyle=COL;c.beginPath();c.moveTo(96,190);c.lineTo(128,240);c.lineTo(160,190);c.lineTo(182,200);c.lineTo(128,270);c.lineTo(74,200);c.closePath();c.fill();c.stroke() + c.strokeStyle='#fff';c.lineWidth=4;c.beginPath();c.moveTo(84,202);c.lineTo(128,258);c.lineTo(172,202);c.stroke();c.strokeStyle='#111' + c.fillStyle=SKIN;c.lineWidth=9;c.beginPath();c.moveTo(114,168);c.lineTo(114,194);c.quadraticCurveTo(128,208,142,194);c.lineTo(142,168);c.fill();c.beginPath();c.moveTo(114,168);c.lineTo(114,192);c.moveTo(142,168);c.lineTo(142,192);c.stroke() + c.fillStyle=SCF;for(const d of[-1,1])c.beginPath(),c.moveTo(128,262),c.lineTo(128+d*26,250),c.lineTo(128+d*22,276),c.closePath(),c.fill(),c.stroke() + c.lineWidth=9;c.fillStyle=SKIN;c.beginPath();c.moveTo(74,96);c.bezierCurveTo(70,152,100,184,128,186);c.bezierCurveTo(156,184,186,152,182,96);c.bezierCurveTo(182,44,74,44,74,96);c.fill();c.stroke() + if(hap){c.lineWidth=9;for(const x of[103,153])c.beginPath(),c.arc(x,148,15,1.15*PI,1.85*PI),c.stroke()} + else eye(c,103,140,-1),eye(c,153,140,1) + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*44,162,14,8,0,0,T),c.fill() + c.lineWidth=4;for(const d of[-1,1])for(const k of[-6,0,6])c.beginPath(),c.moveTo(128+d*44+k-2,166),c.lineTo(128+d*44+k+2,158),c.stroke() + c.lineWidth=6;c.fillStyle='#c92a2a';c.beginPath();c.moveTo(114,164);c.quadraticCurveTo(128,(hap?190:180),142,164);c.closePath();c.fill();c.stroke() + c.save();c.clip();c.fillStyle='#ff8fab';c.beginPath();c.ellipse(128,180,8,6,0,0,T);c.fill();c.restore() + c.lineWidth=9;c.fillStyle=HAIR;c.beginPath();c.moveTo(68,150) + c.bezierCurveTo(52,74,88,36,128,36);c.bezierCurveTo(168,36,204,74,188,150) + c.quadraticCurveTo(186,118,178,102);c.quadraticCurveTo(170,104,164,112);c.quadraticCurveTo(158,98,148,92);c.quadraticCurveTo(142,104,134,110) + c.quadraticCurveTo(128,98,120,92);c.quadraticCurveTo(114,104,106,110);c.quadraticCurveTo(100,98,92,96);c.quadraticCurveTo(88,106,84,112) + c.quadraticCurveTo(80,104,78,104);c.quadraticCurveTo(70,124,68,150);c.closePath();c.fill();c.stroke() + c.strokeStyle=HL;c.lineWidth=8;for(const[s,e]of[[1.24,1.36],[1.44,1.52],[1.62,1.74]])c.beginPath(),c.arc(128,104,56,PI*s,PI*e),c.stroke() + c.strokeStyle='#111';c.fillStyle=SCF;c.lineWidth=7;for(const d of[-1,1])c.beginPath(),c.moveTo(192,66),c.lineTo(192+d*16,56-d*8),c.lineTo(192+d*20,74+d*6),c.closePath(),c.fill(),c.stroke() + c.beginPath();c.arc(192,66,7,0,T);c.fill();c.stroke() + }) + c.save();c.translate(192,46);c.scale(.9*cs,.9*(2-cs)) + c.fillStyle=CL;c.lineWidth=11;c.beginPath();for(const[x,y,r]of[[-34,10,22],[-14,-8,26],[16,-12,24],[38,6,20]])c.moveTo(x+r,y),c.arc(x,y,r,0,T);c.roundRect(-56,4,112,30,15);c.stroke();c.fill() + c.fillStyle='#fff';c.beginPath();c.ellipse(-20,-16,10,6,-.4,0,T);c.fill() + const ay=gulp?-4*sin(PI*(t-.5625)/.1875):0 + c.fillStyle=AR;c.lineWidth=4.5;c.beginPath();c.moveTo(0,-14+ay*2);c.lineTo(15,2+ay);c.lineTo(6,2+ay);c.lineTo(6,20);c.lineTo(-6,20);c.lineTo(-6,2+ay);c.lineTo(-15,2+ay);c.closePath();c.fill();c.stroke() + c.restore() + if(fp>0&&fp<1){const e=1-(1-fp)**2;file(c,L(178,192,fp)+22*sin(PI*fp),L(100,52,e),fp*PI*1.5,L(1,.4,fp))} + if(gulp){const q=(t-.5625)/.1875;c.fillStyle=SP;c.lineWidth=3.5;for(const[x,y,o]of[[128,26,0],[240,104,.25],[150,100,.45]]){const r=sin(PI*min(1,max(0,q*1.4-o)));if(r>.1)spark(c,x,y,12*r)}} + const ns=t<.3125?1:t>=.75?ease((t-.75)/.15):0 + ds(c,22,12,TOP,()=>{c.moveTo(54,206);c.quadraticCurveTo(58,236,84,216)}) + ds(c,22,12,TOP,()=>{c.moveTo(154,204);c.quadraticCurveTo(L(160,196,up),L(236,190,up),hx,hy+4)}) + if(ns>0)file(c,hx-16*(1-up),hy-14,up*.4,ns) + c.fillStyle=SKIN;c.lineWidth=5;for(const[x,y]of[[84,214],[hx,hy]])c.beginPath(),c.ellipse(x,y,11,10,0,0,T),c.fill(),c.stroke() +} diff --git a/gen/uianime/wallet/shake.js b/gen/uianime/wallet/shake.js new file mode 100644 index 0000000..d01a613 --- /dev/null +++ b/gen/uianime/wallet/shake.js @@ -0,0 +1,55 @@ +// green-haired girl in a beret shaking her empty wallet upside down with teary eyes, only dust puffs and specks falling out +const{sin,cos,PI,max,min}=Math,T=2*PI +export const frames=12,delay=80 +const SKIN='#ffe3d1',HAIR='#8ce99a',HD='#2f9e44',HL='#ebfbee',EYE='#f76707',ED='#c2410c',BR='#c2255c',SW='#d0bfff',SWD='#9775fa',BL='#ffa8a8',WA='#a5d8ff',WL='#e8590c',WLD='#b35400',DU='#ced4da',Z=.8 +const puff=(c,x,y,r)=>{c.beginPath();for(const[a,b,s]of[[-.8,0,.7],[0,-.5,.8],[.8,0,.7],[0,.3,.75]])c.moveTo(x+a*r+s*r,y+b*r),c.arc(x+a*r,y+b*r,s*r,0,T);c.lineWidth=7;c.strokeStyle='#111';c.stroke();c.fillStyle=DU;c.fill()} +export default(c,t)=>{ + const w=sin(4*T*t),L=v=>c.lineWidth=v/Z,wb=sin(2*T*t) + const head=f=>{c.save();c.translate(106,124);c.scale(Z,Z);c.translate(-128,-128);f();c.restore()} + head(()=>{ + L(6);c.fillStyle=HD;c.beginPath();c.moveTo(128,34);c.bezierCurveTo(198,34,212,100,204,160);c.quadraticCurveTo(198,180,178,176);c.lineTo(78,176);c.quadraticCurveTo(58,180,52,160);c.bezierCurveTo(44,100,58,34,128,34);c.fill();c.stroke() + c.fillStyle=SW;c.beginPath();c.moveTo(100,190);c.quadraticCurveTo(56,196,44,320);c.lineTo(212,320);c.quadraticCurveTo(200,196,156,190);c.closePath();c.fill();c.stroke() + c.strokeStyle=SWD;L(4);for(let x=70;x<200;x+=20)c.beginPath(),c.moveTo(x,236),c.lineTo(x+(x-128)*.08,320),c.stroke();c.strokeStyle='#111' + c.fillStyle=SW;L(6);c.beginPath();c.roundRect(96,184,64,22,11);c.fill();c.stroke() + c.fillStyle=SKIN;c.beginPath();c.moveTo(116,166);c.lineTo(116,190);c.quadraticCurveTo(128,198,140,190);c.lineTo(140,166);c.fill();L(5);c.beginPath();c.moveTo(116,166);c.lineTo(116,188);c.moveTo(140,166);c.lineTo(140,188);c.stroke() + L(6);c.fillStyle=SKIN;c.beginPath();c.moveTo(74,96);c.bezierCurveTo(70,152,100,184,128,186);c.bezierCurveTo(156,184,186,152,182,96);c.bezierCurveTo(182,44,74,44,74,96);c.fill();c.stroke() + for(const[x,d]of[[103,-1],[153,1]]){ + c.fillStyle='#fff';c.beginPath();c.ellipse(x,140,14,17,0,0,T);c.fill() + c.save();c.beginPath();c.ellipse(x,142,11.5,15,0,0,T);c.clip();c.fillStyle=EYE;c.fill();c.fillStyle=ED;c.beginPath();c.ellipse(x,132,13,10,0,0,T);c.fill() + c.fillStyle='#111';c.beginPath();c.ellipse(x+4,136,5,6.5,0,0,T);c.fill() + c.fillStyle=WA;c.beginPath();c.moveTo(x-16,150+wb);c.quadraticCurveTo(x,145-wb,x+16,150+wb);c.lineTo(x+16,160);c.lineTo(x-16,160);c.fill();c.restore() + L(2.5);c.beginPath();c.ellipse(x,142,11.5,15,0,0,T);c.stroke() + c.fillStyle='#fff';c.beginPath();c.arc(x,131,4.5,0,T);c.fill();c.beginPath();c.arc(x+7,146,2.5,0,T);c.fill();c.beginPath();c.arc(x-5,151,2,0,T);c.fill() + L(6);c.beginPath();c.moveTo(x-16,134);c.quadraticCurveTo(x,120,x+16,134);c.moveTo(x+d*15,133);c.lineTo(x+d*21,128);c.stroke() + } + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*42,163,12,6,0,0,T),c.fill() + L(2.5);for(const d of[-1,1])for(const k of[-5,0,5])c.beginPath(),c.moveTo(128+d*42+k-2,166),c.lineTo(128+d*42+k+2,160),c.stroke() + L(3.5);c.beginPath();c.moveTo(116,174);for(let k=1;k<=6;k++)c.lineTo(116+k*4,174+(k%2?-3:2));c.stroke() + L(6);c.fillStyle=HAIR;c.beginPath();c.moveTo(66,158) + c.bezierCurveTo(52,74,88,36,128,36);c.bezierCurveTo(168,36,204,74,190,158) + c.quadraticCurveTo(186,124,180,106);c.quadraticCurveTo(172,100,166,110);c.quadraticCurveTo(160,96,150,92);c.quadraticCurveTo(144,104,136,108) + c.quadraticCurveTo(130,96,118,94);c.quadraticCurveTo(112,104,102,108);c.quadraticCurveTo(96,98,86,100);c.quadraticCurveTo(70,124,66,158);c.closePath();c.fill();c.stroke() + c.strokeStyle=HL;L(5);for(const[a,e]of[[1.24,1.36],[1.44,1.52],[1.62,1.74]])c.beginPath(),c.arc(128,104,56,PI*a,PI*e),c.stroke() + c.strokeStyle='#111';L(4.5);c.beginPath();c.moveTo(90,116);c.lineTo(114,110);c.moveTo(166,116);c.lineTo(142,110);c.stroke() + c.fillStyle=BR;L(6);c.beginPath();c.moveTo(60,72);c.bezierCurveTo(50,30,110,10,150,22);c.bezierCurveTo(196,34,210,58,196,74);c.quadraticCurveTo(128,54,60,72);c.fill();c.stroke() + c.beginPath();c.moveTo(124,16);c.lineTo(128,4);c.stroke() + c.fillStyle=SWD;L(4);c.beginPath();c.ellipse(80,86,7,7,0,0,T);c.fill();c.stroke() + c.fillStyle=WA;L(4);c.beginPath();c.moveTo(56,110);c.quadraticCurveTo(46,124,56,131);c.quadraticCurveTo(66,124,56,110);c.fill();c.stroke() + }) + const hx=178+3*w,hy=80 + for(const[l,s]of[[30,'#111'],[19,SW]])c.lineWidth=l,c.strokeStyle=s,c.beginPath(),c.moveTo(160,262),c.quadraticCurveTo(184,180,hx-2,hy+30),c.stroke() + c.strokeStyle='#111' + c.fillStyle=DU;c.lineWidth=3 + for(let k=0;k<6;k++){const p=(t*2+k/6)%1,x=206+16*sin(k*2.1)+6*sin(T*p+k),y=116+120*p;c.beginPath();c.arc(x,y,2.5+1.5*(k%2),0,T);c.fill();c.stroke()} + for(const o of[0,.5]){const p=(t*2+o)%1;const r=13*sin(PI*p);if(r>3)puff(c,204+(o?12:-8)+8*p,116+56*p,r)} + c.save();c.translate(hx,hy);c.rotate(.2*w) + c.lineWidth=6;c.fillStyle=WLD;c.beginPath();c.roundRect(-4,-28,64,64,9);c.fill();c.stroke() + c.fillStyle='#343a40';c.beginPath();c.moveTo(0,16);c.lineTo(56,16);c.quadraticCurveTo(54,32,28,32);c.quadraticCurveTo(2,32,0,16);c.fill();c.lineWidth=4;c.stroke() + c.lineWidth=6;c.fillStyle=WL;c.beginPath();c.moveTo(-4,-19);c.quadraticCurveTo(-4,-28,5,-28);c.lineTo(51,-28);c.quadraticCurveTo(60,-28,60,-19);c.lineTo(60,10);c.quadraticCurveTo(28,24,-4,10);c.closePath();c.fill();c.stroke() + c.strokeStyle='#ffd8a8';c.lineWidth=2.5;c.setLineDash([5,5]);c.beginPath();c.moveTo(3,-21);c.lineTo(53,-21);c.lineTo(53,4);c.quadraticCurveTo(28,15,3,4);c.closePath();c.stroke();c.setLineDash([]) + c.strokeStyle='#111';c.fillStyle='#ffd43b';c.lineWidth=4;c.beginPath();c.roundRect(20,-34,16,12,4);c.fill();c.stroke() + c.restore() + c.lineWidth=5;c.fillStyle=SKIN;c.beginPath();c.ellipse(hx-2,hy+4,12,15,.2,0,T);c.fill();c.stroke() + for(const[l,s]of[[7,'#111'],[2.5,'#fff']]){c.lineWidth=l;c.strokeStyle=s;for(const d of[-1,1])c.beginPath(),c.arc(hx+28,hy,46,d<0?PI*.82:-PI*.18,d<0?PI*1.05:PI*.05),c.stroke()} + c.strokeStyle='#111' +} diff --git a/gen/uianime/warning/whistle.js b/gen/uianime/warning/whistle.js new file mode 100644 index 0000000..2d177b1 --- /dev/null +++ b/gen/uianime/warning/whistle.js @@ -0,0 +1,57 @@ +// aqua-haired crossing guard in a cap blowing her whistle with puffed cheeks and holding up a stop palm, a warning sign flashing beside her +const{sin,cos,PI,max,min}=Math,T=2*PI +export const frames=12,delay=80 +const SKIN='#ffe3d1',HAIR='#66d9e8',HD='#1098ad',EYE='#7950f2',ED='#4c2fa8',SH='#364fc7',VS='#ff922b',CAP='#364fc7',GD='#ffd43b',BL='#ffa8a8',WY='#ffd43b',WO='#ff922b',WH='#fcc419',Z=.76 +const eye=(c,L,x,y,d)=>{ + c.fillStyle='#fff';c.beginPath();c.ellipse(x,y,14,17,0,0,T);c.fill() + c.save();c.beginPath();c.ellipse(x,y+2,11.5,15,0,0,T);c.clip();c.fillStyle=EYE;c.fill();c.fillStyle=ED;c.beginPath();c.ellipse(x,y-8,13,10,0,0,T);c.fill();c.restore() + L(2.5);c.beginPath();c.ellipse(x,y+2,11.5,15,0,0,T);c.stroke() + c.fillStyle='#111';c.beginPath();c.ellipse(x,y+3,5.5,7.5,0,0,T);c.fill() + c.fillStyle='#fff';c.beginPath();c.arc(x-4,y-5,4.5,0,T);c.fill();c.beginPath();c.arc(x+5,y+8,2,0,T);c.fill() + L(6);c.beginPath();c.moveTo(x-16,y-6);c.quadraticCurveTo(x,y-20,x+16,y-6);c.moveTo(x+d*15,y-7);c.lineTo(x+d*21,y-12);c.stroke() +} +export default(c,t,i)=>{ + const b=i%6<3,p=b?[1,1.15,1][i%6]:0,L=v=>c.lineWidth=v/Z,fl=i<6 + const head=f=>{c.save();c.translate(130,118);c.scale(Z,Z);c.translate(-128,-128);f();c.restore()} + head(()=>{ + L(6);c.fillStyle=HD;c.beginPath();c.moveTo(128,34);c.bezierCurveTo(198,34,212,100,204,160);c.quadraticCurveTo(198,180,178,176);c.lineTo(78,176);c.quadraticCurveTo(58,180,52,160);c.bezierCurveTo(44,100,58,34,128,34);c.fill();c.stroke() + c.fillStyle=SH;c.beginPath();c.moveTo(100,190);c.quadraticCurveTo(56,196,44,320);c.lineTo(212,320);c.quadraticCurveTo(200,196,156,190);c.closePath();c.fill();c.stroke() + c.fillStyle=VS;for(const d of[-1,1])c.beginPath(),c.moveTo(128+d*18,196),c.lineTo(128+d*24,320),c.lineTo(128+d*86,320),c.quadraticCurveTo(128+d*76,206,128+d*36,190),c.closePath(),c.fill(),c.stroke() + c.fillStyle='#fff';L(4);for(const d of[-1,1])c.beginPath(),c.moveTo(128+d*23,250),c.lineTo(128+d*80,250),c.lineTo(128+d*82,266),c.lineTo(128+d*24,266),c.closePath(),c.fill(),c.stroke() + c.fillStyle=SKIN;c.beginPath();c.moveTo(116,166);c.lineTo(116,194);c.lineTo(128,206);c.lineTo(140,194);c.lineTo(140,166);c.fill();L(5);c.beginPath();c.moveTo(116,166);c.lineTo(116,192);c.moveTo(140,166);c.lineTo(140,192);c.stroke() + L(6);c.fillStyle=SKIN;c.beginPath();c.moveTo(74,96);c.bezierCurveTo(70,152,100,184,128,186);c.bezierCurveTo(156,184,186,152,182,96);c.bezierCurveTo(182,44,74,44,74,96);c.fill();c.stroke() + if(b)for(const d of[-1,1])c.beginPath(),c.arc(128+d*44,160,15,d<0?PI*.5:-PI*.5,d<0?PI*1.5:PI*.5),c.fill(),c.stroke() + eye(c,L,103,138,-1);eye(c,L,153,138,1) + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*42,161,b?14:11,b?7:5.5,0,0,T),c.fill() + L(2.5);for(const d of[-1,1])for(const k of[-5,0,5])c.beginPath(),c.moveTo(128+d*42+k-2,164),c.lineTo(128+d*42+k+2,158),c.stroke() + c.strokeStyle='#868e96';L(3);c.beginPath();c.moveTo(150,182);c.quadraticCurveTo(150,206,128,206);c.stroke();c.strokeStyle='#111' + c.save();c.translate(128,170);c.rotate(.35) + c.fillStyle=WH;L(4.5);c.beginPath();c.roundRect(-6,-7,30,14,4);c.fill();c.stroke();c.beginPath();c.arc(28,8,13,0,T);c.fill();c.stroke() + c.fillStyle='#111';c.beginPath();c.arc(28,8,4,0,T);c.fill() + c.restore() + L(6);c.fillStyle=HAIR;c.beginPath();c.moveTo(66,156) + c.bezierCurveTo(52,74,88,36,128,36);c.bezierCurveTo(168,36,204,74,190,156) + c.quadraticCurveTo(186,124,180,106);c.quadraticCurveTo(172,104,166,112);c.quadraticCurveTo(160,98,150,96);c.quadraticCurveTo(144,106,134,110) + c.quadraticCurveTo(128,98,116,96);c.quadraticCurveTo(110,106,100,110);c.quadraticCurveTo(94,100,84,104);c.quadraticCurveTo(70,124,66,156);c.closePath();c.fill();c.stroke() + c.strokeStyle='#111';L(5);c.beginPath();c.moveTo(88,108);c.lineTo(116,116);c.moveTo(168,108);c.lineTo(140,116);c.stroke() + c.fillStyle=CAP;L(6);c.beginPath();c.moveTo(66,86);c.bezierCurveTo(56,30,96,14,128,14);c.bezierCurveTo(160,14,200,30,190,86);c.quadraticCurveTo(128,70,66,86);c.fill();c.stroke() + c.fillStyle='#212529';c.beginPath();c.moveTo(62,88);c.quadraticCurveTo(128,66,194,88);c.quadraticCurveTo(200,100,190,100);c.quadraticCurveTo(128,82,66,100);c.quadraticCurveTo(56,100,62,88);c.fill();c.stroke() + c.strokeStyle='#fff';L(4);c.beginPath();c.moveTo(80,74);c.quadraticCurveTo(128,62,176,74);c.stroke();c.strokeStyle='#111' + c.fillStyle=GD;L(4.5);c.beginPath();for(let k=0;k<10;k++){const r=k%2?7:15,a=k*PI/5-PI/2;c.lineTo(128+cos(a)*r,46+sin(a)*r)}c.closePath();c.fill();c.stroke() + }) + if(b)for(const[w,s]of[[9,'#111'],[4,'#fff']]){c.lineWidth=w;c.strokeStyle=s;for(const a of[-.35,.15,.65]){const r0=34*p,x=150+cos(a)*r0,y=150+sin(a)*r0;c.beginPath();c.moveTo(x,y);c.lineTo(x+cos(a)*16*p,y+sin(a)*16*p);c.stroke()}} + c.strokeStyle='#111' + const hx=46,hy=120,ps=b?1.1:1 + for(const[w,s]of[[30,'#111'],[19,SH]])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),c.moveTo(84,230),c.quadraticCurveTo(48,214,hx+2,hy+38),c.stroke() + c.strokeStyle='#111';c.save();c.translate(hx,hy);c.scale(ps,ps) + c.lineWidth=5;c.fillStyle=SKIN + for(const[x,y,h]of[[-15,-22,15],[-5,-27,17],[5,-27,17],[15,-22,15]])c.beginPath(),c.roundRect(x-5,y-h,10,h+14,5),c.fill(),c.stroke() + c.beginPath();c.ellipse(22,8,6,12,-.7,0,T);c.fill();c.stroke() + c.beginPath();c.roundRect(-20,-14,40,36,13);c.fill();c.stroke() + c.fillStyle=SH;c.beginPath();c.roundRect(-18,22,36,14,5);c.fill();c.stroke() + c.restore() + c.save();c.translate(202,64);c.rotate(.1*sin(T*t*2));const sc=b?1.02:.94;c.scale(sc,sc) + c.lineWidth=7;c.fillStyle=fl?WY:WO;c.beginPath();c.moveTo(0,-36);c.quadraticCurveTo(4,-42,8,-34);c.lineTo(38,22);c.quadraticCurveTo(40,30,32,30);c.lineTo(-32,30);c.quadraticCurveTo(-40,30,-38,22);c.lineTo(-8,-34);c.quadraticCurveTo(-4,-42,0,-36);c.closePath();c.fill();c.stroke() + c.lineWidth=8;c.beginPath();c.moveTo(0,-14);c.lineTo(0,6);c.stroke();c.fillStyle='#111';c.beginPath();c.arc(0,18,5,0,T);c.fill() + c.restore() +} diff --git a/gen/uianime/welcome/bow.js b/gen/uianime/welcome/bow.js new file mode 100644 index 0000000..7276127 --- /dev/null +++ b/gen/uianime/welcome/bow.js @@ -0,0 +1,52 @@ +// lilac-haired shop girl in a frilly headband bowing politely in welcome, hands folded in front, sparkles twinkling around her +const{sin,cos,PI,min,max}=Math,T=2*PI +export const frames=12,delay=120 +const SKIN='#ffe3d1',HAIR='#da77f2',HD='#ae3ec9',HL='#f8f0fc',EYE='#20c997',ED='#087f5b',DR='#4c6ef5',BL='#ffa8a8',MO='#c92a2a',TG='#ff8fab',SP='#ffd43b' +const eye=(c,x,y,d)=>{ + c.fillStyle='#fff';c.beginPath();c.ellipse(x,y,14,17,0,0,T);c.fill() + c.save();c.beginPath();c.ellipse(x,y+2,11.5,15,0,0,T);c.clip();c.fillStyle=EYE;c.fill();c.fillStyle=ED;c.beginPath();c.ellipse(x,y-8,13,10,0,0,T);c.fill();c.restore() + c.lineWidth=2.5;c.beginPath();c.ellipse(x,y+2,11.5,15,0,0,T);c.stroke() + c.fillStyle='#111';c.beginPath();c.ellipse(x,y+3,5.5,7.5,0,0,T);c.fill() + c.fillStyle='#fff';c.beginPath();c.arc(x-4,y-5,4.5,0,T);c.fill();c.beginPath();c.arc(x+5,y+8,2,0,T);c.fill() + c.lineWidth=6;c.beginPath();c.moveTo(x-16,y-6);c.quadraticCurveTo(x,y-20,x+16,y-6);c.moveTo(x+d*15,y-7);c.lineTo(x+d*21,y-12);c.stroke() +} +const spark=(c,x,y,r)=>{c.beginPath();c.moveTo(x,y-r);for(const[a,b]of[[1,0],[0,1],[-1,0],[0,-1]])c.quadraticCurveTo(x+(a+b)*r*.2,y+(b-a)*r*.2,x+a*r,y+b*r);c.fill();c.stroke()} +export default(c,t)=>{ + const b=min(1,max(0,1.6*sin(PI*t)**2-.3)),dn=b>.4 + const head=(f,q=1)=>{c.save();c.translate(128,q?36+40*b:186+40*b);c.scale(1,q?1+.12*b:1-.38*b);c.translate(-128,q?-36:-186);f();c.restore()} + head(()=>{c.lineWidth=6;c.fillStyle=HD;c.beginPath();c.moveTo(128,34);c.bezierCurveTo(200,34,214,96,206,150);c.quadraticCurveTo(212,200,198,226);c.lineTo(58,226);c.quadraticCurveTo(44,200,50,150);c.bezierCurveTo(42,96,56,34,128,34);c.fill();c.stroke()}) + c.save();c.translate(0,8*b) + c.lineWidth=6;c.fillStyle=DR;c.beginPath();c.moveTo(100,190);c.quadraticCurveTo(62,198,54,252);c.lineTo(202,252);c.quadraticCurveTo(194,198,156,190);c.closePath();c.fill();c.stroke() + c.fillStyle='#fff';c.lineWidth=5;for(const d of[-1,1])c.beginPath(),c.moveTo(128,206),c.quadraticCurveTo(128+d*12,212,128+d*30,196),c.lineTo(128+d*14,188),c.closePath(),c.fill(),c.stroke() + c.fillStyle=SKIN;c.beginPath();c.moveTo(116,166);c.lineTo(116,192);c.lineTo(128,204);c.lineTo(140,192);c.lineTo(140,166);c.fill();c.beginPath();c.moveTo(116,166);c.lineTo(116,190);c.moveTo(140,166);c.lineTo(140,190);c.stroke() + c.fillStyle='#ff6b6b';c.lineWidth=4;c.beginPath();c.arc(128,204,6,0,T);c.fill();c.stroke() + for(const d of[-1,1]){ + for(const[w,s]of[[30,'#111'],[19,DR]])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),c.moveTo(128+d*58,206),c.quadraticCurveTo(128+d*52,236,128+d*14,238),c.stroke() + } + c.strokeStyle='#111';c.lineWidth=5;c.fillStyle=SKIN;c.beginPath();c.ellipse(120,240,15,11,.3,0,T);c.fill();c.stroke();c.beginPath();c.ellipse(136,236,15,11,-.3,0,T);c.fill();c.stroke() + c.lineWidth=2.5;c.beginPath();for(const k of[-5,1])c.moveTo(130+k,230),c.lineTo(134+k,240);c.stroke() + c.restore() + head(()=>{ + c.lineWidth=6;c.fillStyle=SKIN;c.beginPath();c.moveTo(74,96);c.bezierCurveTo(70,152,100,184,128,186);c.bezierCurveTo(156,184,186,152,182,96);c.bezierCurveTo(182,44,74,44,74,96);c.fill();c.stroke() + if(dn){c.lineWidth=5;for(const x of[103,153])c.beginPath(),c.arc(x,132,13,PI*.15,PI*.85),c.stroke()}else eye(c,103,140,-1),eye(c,153,140,1) + c.lineWidth=2.5;c.beginPath();c.moveTo(128,156);c.lineTo(127,159);c.stroke() + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*42,161,12,6,0,0,T),c.fill() + c.lineWidth=2.5;for(const d of[-1,1])for(const k of[-5,0,5])c.beginPath(),c.moveTo(128+d*42+k-2,164),c.lineTo(128+d*42+k+2,158),c.stroke() + if(dn){c.lineWidth=3.5;c.beginPath();c.arc(128,164,7,.15*PI,.85*PI);c.stroke()} + else{c.lineWidth=3.5;c.fillStyle=MO;c.beginPath();c.moveTo(117,165);c.quadraticCurveTo(128,186,139,165);c.closePath();c.fill();c.stroke();c.save();c.clip();c.fillStyle=TG;c.beginPath();c.ellipse(128,180,7,5,0,0,T);c.fill();c.restore()} + },0) + head(()=>{ + c.lineWidth=6;c.fillStyle=HAIR;c.beginPath();c.moveTo(66,150) + c.bezierCurveTo(52,74,88,36,128,36);c.bezierCurveTo(168,36,204,74,190,150) + c.quadraticCurveTo(188,118,180,104);c.quadraticCurveTo(172,100,166,110);c.quadraticCurveTo(160,96,148,92);c.quadraticCurveTo(142,104,132,108) + c.quadraticCurveTo(126,96,114,92);c.quadraticCurveTo(108,104,98,108);c.quadraticCurveTo(92,96,82,100) + c.quadraticCurveTo(70,120,66,150);c.closePath();c.fill();c.stroke() + c.strokeStyle=HL;c.lineWidth=5;for(const[a,e]of[[1.24,1.34],[1.44,1.52],[1.66,1.76]])c.beginPath(),c.arc(128,104,56,PI*a,PI*e),c.stroke() + c.strokeStyle='#111';c.fillStyle='#fff';c.lineWidth=4 + for(let k=0;k<7;k++){const a=PI*(1.2+k*.1);c.beginPath();c.arc(128+66*cos(a),110+66*sin(a),9,0,T);c.fill();c.stroke()} + for(const[w,s]of[[16,'#111'],[9,'#fff']])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),c.arc(128,110,58,PI*1.2,PI*1.8),c.stroke() + c.strokeStyle='#111' + }) + c.fillStyle=SP;c.lineWidth=4 + for(const[x,y,o,r]of[[28,74,0,22],[228,96,.3,20],[34,170,.55,17],[224,184,.8,17],[206,30,.15,14]]){const s=sin(T*(t+o));if(s>0)spark(c,x,y,r*s)} +} diff --git a/gen/uicolor/403/stop.js b/gen/uicolor/403/stop.js new file mode 100644 index 0000000..c06dd2d --- /dev/null +++ b/gen/uicolor/403/stop.js @@ -0,0 +1,24 @@ +// red stop sign on a pole with a big white hand wagging no-no inside it, stern little face on the palm +const{sin,cos,PI}=Math,T=2*PI +export const frames=16,delay=80 +const RD='#ff6b6b',PL='#adb5bd',BL='#ffa8a8' +const oct=(c,r)=>{c.beginPath();for(let k=0;k<8;k++){const a=k*PI/4+PI/8;c.lineTo(128+cos(a)*r,104+sin(a)*r)}c.closePath()} +const F=[[-22.5,-128],[-7.5,-136],[7.5,-132],[22.5,-120]] +const parts=[c=>c.roundRect(-30,-82,60,76,20),c=>c.roundRect(-20,-30,40,34,10),...F.map(([x,y])=>c=>c.roundRect(x-7,y,14,-50-y,7)),c=>{c.save();c.translate(-26,-42);c.rotate(-.75);c.roundRect(-7,-44,14,48,7);c.restore()}] +export default(c,t)=>{ + const A=.26*sin(t*T*2),v=cos(t*T*2) + c.translate(128,244);c.rotate(.025*sin(t*T*2-.6));c.translate(-128,-244) + c.fillStyle=PL;c.beginPath();c.roundRect(116,176,24,66,6);c.fill();c.stroke() + oct(c,92);c.fillStyle=RD;c.fill();c.stroke() + c.strokeStyle='#fff';c.lineWidth=6;oct(c,79);c.stroke() + if(v*v>.3)for(const r of[132,114]){const a=-PI/2+A-v*.12;for(const[w,s]of[[10,'#111'],[4,'#fff']])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),c.arc(128,172,r*.88,a-(v>0?.2:-.05),a+(v>0?.05:.2)),c.stroke()} + c.save();c.translate(128,172);c.rotate(A);c.scale(.88,.88) + c.strokeStyle='#111';c.lineWidth=14;for(const p of parts)c.beginPath(),p(c),c.stroke() + c.fillStyle='#fff';for(const p of parts)c.beginPath(),p(c),c.fill() + c.lineWidth=4;c.beginPath();for(const x of[-15,0,15])c.moveTo(x,-82),c.lineTo(x,-70);c.stroke() + c.fillStyle='#111';for(const d of[-1,1])c.beginPath(),c.arc(d*12,-50,5,0,T),c.fill() + c.lineWidth=4.5;for(const d of[-1,1])c.beginPath(),c.moveTo(d*5,-58),c.lineTo(d*20,-64),c.stroke() + c.beginPath();c.arc(0,-24,8,1.2*PI,1.8*PI);c.stroke() + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(d*21,-38,6,3.5,0,0,T),c.fill() + c.restore() +} diff --git a/gen/uicolor/404/ghost.js b/gen/uicolor/404/ghost.js new file mode 100644 index 0000000..ffff5ba --- /dev/null +++ b/gen/uicolor/404/ghost.js @@ -0,0 +1,30 @@ +// a shy little ghost rises out of a hole torn in a page, peeks left and right, then sinks back down +const{sin,cos,PI}=Math,T=2*PI +export const frames=24,delay=70 +const PG='#e7f5ff',LN='#a5d8ff',HO='#5f3dc4',HD='#3b2a8a',GH='#fff',GS='#e5dbff',BL='#ffa8a8' +const HX=128,HY=170,J=[1,.84,.97,.8,1,.88,.78,1,.86,.95,.8,1,.9,.8,.98,.84] +const hole=(c,s=1)=>{J.forEach((j,k)=>{const a=k/J.length*T;c.lineTo(HX+cos(a)*64*j*s,HY+sin(a)*32*j*s)});c.closePath()} +const ss=x=>x<=0?0:x>=1?1:x*x*(3-2*x) +export default(c,t)=>{ + const u=ss(t/.22)-ss((t-.8)/.2),lk=ss((t-.28)/.1)-2*ss((t-.48)/.1)+ss((t-.68)/.1),gy=HY+70-170*u,ln=-.16*lk + c.save();c.translate(128,150);c.rotate(-.05);c.translate(-128,-150) + c.fillStyle=PG;c.beginPath();c.moveTo(42,62);c.lineTo(184,62);c.lineTo(214,92);c.lineTo(214,238);c.lineTo(42,238);c.closePath();c.fill();c.stroke() + c.fillStyle='#fff';c.beginPath();c.moveTo(184,62);c.lineTo(184,92);c.lineTo(214,92);c.closePath();c.fill();c.lineWidth=5;c.stroke() + c.strokeStyle=LN;c.lineWidth=8;for(const[y,a,b]of[[86,62,160],[106,62,190],[126,62,140],[220,70,186]])c.beginPath(),c.moveTo(a,y),c.lineTo(b,y),c.stroke() + c.restore() + c.fillStyle='#fff';c.beginPath();hole(c,1.12);c.fill();c.lineWidth=4;c.strokeStyle='#111';c.stroke() + c.fillStyle=HO;c.beginPath();hole(c);c.fill();c.lineWidth=6;c.stroke() + c.fillStyle=HD;c.beginPath();c.ellipse(HX,HY+6,44,18,0,0,T);c.fill() + c.save();c.beginPath();c.rect(0,0,256,HY);hole(c);c.clip() + c.translate(HX,HY);c.rotate(ln);c.translate(0,gy-HY);c.scale(.92,.84) + const body=()=>{c.beginPath();c.moveTo(-40,0);c.arc(0,0,40,PI,0);c.lineTo(44,124);for(let k=0;k<4;k++){const x0=44-k*22,w=4*sin(T*t*2+k*1.6);c.quadraticCurveTo(x0-11,136+w,x0-22,124)}c.closePath()} + c.fillStyle=GH;body();c.fill();c.save();c.clip();c.fillStyle=GS;c.beginPath();c.ellipse(-12,30,50,120,0,0,T);c.rect(80,-60,-200,240);c.fill('evenodd');c.restore() + body();c.lineWidth=7;c.strokeStyle='#111';c.stroke() + for(const d of[-1,1]){c.fillStyle=GH;c.beginPath();c.ellipse(d*44,44-lk*d*8,10,14,d*.5,0,T);c.fill();c.lineWidth=5;c.stroke()} + const ex=lk*7 + c.fillStyle='#111';for(const d of[-1,1])c.beginPath(),c.ellipse(d*14+ex,-2,5.5,7.5,0,0,T),c.fill() + c.fillStyle='#fff';for(const d of[-1,1])c.beginPath(),c.arc(d*14+ex-2,-5,2.2,0,T),c.fill() + c.fillStyle='#111';c.beginPath();c.ellipse(ex,14,4,5,0,0,T);c.fill() + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(d*26+ex*.6,10,7,4,0,0,T),c.fill() + c.restore() +} diff --git a/gen/uicolor/404/map.js b/gen/uicolor/404/map.js new file mode 100644 index 0000000..f40c7ef --- /dev/null +++ b/gen/uicolor/404/map.js @@ -0,0 +1,31 @@ +// a folded paper map unfolded, a dotted trail marching from a bouncing red pin to a big wobbly "?" where the road runs out +const{sin,PI}=Math,T=2*PI +export const frames=16,delay=80 +const P1='#fff4e6',P2='#ffe8cc',WA='#a5d8ff',LA='#c3fae8',TR='#69db7c',PN='#fa5252',Q='#b197fc' +const X=[16,92,166,240],TOP=[60,46,60,46],BOT=[214,228,214,228] +const map=c=>{c.beginPath();X.forEach((x,k)=>c.lineTo(x,TOP[k]));for(let k=3;k>=0;k--)c.lineTo(X[k],BOT[k]);c.closePath()} +const pnl=(c,k)=>{c.beginPath();c.moveTo(X[k],TOP[k]);c.lineTo(X[k+1],TOP[k+1]);c.lineTo(X[k+1],BOT[k+1]);c.lineTo(X[k],BOT[k]);c.closePath()} +export default(c,t)=>{ + const ph=(t*2)%1,j=4*ph*(1-ph),py=192-30*j,sq=ph<.1?1-(.1-ph)*2:1 + c.fillStyle=P1;map(c);c.fill();c.fillStyle=P2;pnl(c,1);c.fill() + c.save();map(c);c.clip() + c.fillStyle=LA;c.beginPath();c.ellipse(204,214,70,40,0,0,T);c.fill();c.beginPath();c.ellipse(30,64,50,34,0,0,T);c.fill() + c.fillStyle=WA;c.beginPath();c.ellipse(70,92,34,20,-.2,0,T);c.fill() + c.strokeStyle=WA;c.lineWidth=10;c.beginPath();c.moveTo(96,96);c.bezierCurveTo(130,110,110,150,150,160);c.bezierCurveTo(170,166,160,200,190,236);c.stroke() + c.fillStyle='rgba(200,110,20,.1)';pnl(c,1);c.fill() + c.restore() + c.lineWidth=7;c.strokeStyle='#111';map(c);c.stroke() + c.lineWidth=4;for(const k of[1,2])c.beginPath(),c.moveTo(X[k],TOP[k]),c.lineTo(X[k],BOT[k]),c.stroke() + for(const[x,y]of[[110,68],[126,78],[30,168]]){c.fillStyle=TR;c.lineWidth=4;c.beginPath();c.arc(x,y,9,0,T);c.fill();c.stroke()} + c.lineWidth=8;c.setLineDash([.1,14.9]);c.lineDashOffset=-t*30;c.beginPath();c.moveTo(56,196);c.bezierCurveTo(96,206,94,150,128,150);c.bezierCurveTo(156,150,146,198,172,194);c.stroke();c.setLineDash([]) + c.save();c.translate(182,192);c.rotate(.14*sin(T*t)) + for(const[w,s]of[[30,'#111'],[17,Q]])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),c.moveTo(-24,-82),c.bezierCurveTo(-24,-116,24,-116,24,-84),c.bezierCurveTo(24,-60,0,-62,0,-34),c.stroke() + c.strokeStyle='#fff';c.lineWidth=5;c.beginPath();c.moveTo(-20,-90);c.quadraticCurveTo(-16,-102,-6,-104);c.stroke() + c.strokeStyle='#111';c.lineWidth=6;c.fillStyle=Q;c.beginPath();c.arc(0,-6,12,0,T);c.fill();c.stroke() + c.restore() + c.fillStyle='rgba(0,0,0,.15)';c.beginPath();c.ellipse(56,196,14*(1-j*.4),5*(1-j*.4),0,0,T);c.fill() + c.save();c.translate(56,py);c.scale(2-sq,sq) + c.fillStyle=PN;c.lineWidth=6;c.beginPath();c.moveTo(0,0);c.bezierCurveTo(-4,-12,-20,-26,-20,-42);c.arc(0,-42,20,PI,0);c.bezierCurveTo(20,-26,4,-12,0,0);c.fill();c.stroke() + c.fillStyle='#fff';c.beginPath();c.arc(0,-42,8,0,T);c.fill();c.lineWidth=4;c.stroke() + c.restore() +} diff --git a/gen/uicolor/404/space.js b/gen/uicolor/404/space.js new file mode 100644 index 0000000..b90b51e --- /dev/null +++ b/gen/uicolor/404/space.js @@ -0,0 +1,27 @@ +// "404" adrift in outer space: the 0 is a spinning pink ringed planet with a little smile, the 4s bob gently up and down, stars twinkling all around +const{sin,cos,PI}=Math,T=2*PI +export const frames=16,delay=90 +const A='#4dabf7',B='#b197fc',PL='#f783ac',PB='#faa2c1',PD='#e64980',RG='#ffd43b',BL='#ff8787' +const dig=(c,f,col)=>{for(const[w,s]of[[32,'#111'],[19,col]])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),f(),c.stroke();c.strokeStyle='#fff';c.lineWidth=5;c.beginPath();c.moveTo(-17,-30);c.lineTo(-19,-14);c.stroke();c.lineWidth=7;c.strokeStyle='#111'} +const four=c=>()=>{c.moveTo(-14,-40);c.lineTo(-20,10);c.lineTo(24,10);c.moveTo(12,-40);c.lineTo(12,40)} +const spark=(c,x,y,s)=>{c.lineWidth=4;c.fillStyle='#fff';c.beginPath();c.moveTo(x,y-s);for(const[px,py,qx,qy]of[[s,0,s*.2,-s*.2],[0,s,s*.2,s*.2],[-s,0,-s*.2,s*.2],[0,-s,-s*.2,-s*.2]])c.quadraticCurveTo(x+qx,y+qy,x+px,y+py);c.fill();c.stroke()} +export default(c,t)=>{ + for(const[x,y,o]of[[26,34,0],[128,24,.5],[226,44,.25],[30,222,.75],[222,224,.4],[128,232,.1]])spark(c,x,y,4+6*(1+sin((t+o)*T))/2) + c.lineWidth=7 + const py=128+Math.round(4*sin(T*t+1)),tl=-.26 + for(const[x,ph,col]of[[44,0,A],[208,PI,B]]){c.save();c.translate(x,128+Math.round(9*sin(T*t+ph)));dig(c,four(c),col);c.restore()} + const ring=(a,b)=>{c.save();c.translate(128,py);c.rotate(tl);for(const[w,s]of[[22,'#111'],[10,RG]])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),c.ellipse(0,0,66,15,0,a,b),c.stroke();c.restore();c.strokeStyle='#111';c.lineWidth=7} + ring(PI,T) + c.fillStyle=PL;c.beginPath();c.arc(128,py,42,0,T);c.fill() + c.save();c.clip();c.translate(128,py);c.rotate(tl) + c.fillStyle=PB;c.fillRect(-46,-31,92,10);c.fillRect(-46,20,92,8) + for(const[a,y,r]of[[0,-27,5],[2.1,27,5],[4,-26,4],[5.2,24,5],[1,-37,3.5],[3.2,35,3.5]]){const q=a+t*T,x=38*sin(q);if(cos(q)>0){c.fillStyle=PD;c.beginPath();c.ellipse(x,y,r*cos(q),r,0,0,T);c.fill()}} + c.restore() + c.beginPath();c.arc(128,py,42,0,T);c.stroke() + c.fillStyle='#111';for(const d of[-1,1])c.beginPath(),c.arc(128+d*15,py-2,5.5,0,T),c.fill() + c.fillStyle='#fff';for(const d of[-1,1])c.beginPath(),c.arc(128+d*15-2,py-4,2,0,T),c.fill() + c.lineWidth=4;c.beginPath();c.arc(128,py+5,7,.15*PI,.85*PI);c.stroke() + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*26,py+9,6,3.5,0,0,T),c.fill() + c.strokeStyle='#fff';c.lineWidth=5;c.beginPath();c.arc(128,py,33,PI*1.1,PI*1.35);c.stroke();c.strokeStyle='#111' + ring(0,PI) +} diff --git a/gen/uicolor/404/ufo.js b/gen/uicolor/404/ufo.js new file mode 100644 index 0000000..06f5f04 --- /dev/null +++ b/gen/uicolor/404/ufo.js @@ -0,0 +1,32 @@ +// a little ufo hovers over a colorful "404" and beams the 0 up out of it, the 0 dangling and swaying in the tractor beam before it drops back in its slot +const{sin,cos,PI,floor}=Math,T=2*PI +export const frames=16,delay=80 +const C4='#ff6b6b',C0='#ffd43b',C4b='#4dabf7',SA='#b197fc',SD='#9775fa',GL='#d0ebff',AL='#8ce99a',BM='#ffec99',LT=['#ff6b6b','#ffd43b','#69db7c'] +const dig=(c,f,col)=>{for(const[w,s]of[[32,'#111'],[19,col]])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),f(),c.stroke();c.lineWidth=7;c.strokeStyle='#111'} +const four=(c,x,y)=>()=>{c.moveTo(x-14,y-34);c.lineTo(x-20,y+8);c.lineTo(x+24,y+8);c.moveTo(x+12,y-34);c.lineTo(x+12,y+34)} +export default(c,t,i)=>{ + const h=(1-cos(T*t))/2,e=h*h*(3-2*h),uy=Math.round(2*sin(T*t)),oy=184-58*e,ox=128+6*sin(2*T*t+1)*e,sw=.2*sin(2*T*t)*e + c.fillStyle=BM;c.beginPath();c.moveTo(106,72);c.lineTo(150,72);c.lineTo(186,226);c.ellipse(128,226,58,12,0,0,PI);c.closePath();c.fill() + c.save();c.clip();c.strokeStyle='#fff';c.lineWidth=6 + for(let k=0;k<3;k++){const q=(t*2+k/3)%1,y=226-q*150,w=22+(y-74)/152*36;c.beginPath();c.ellipse(128,y,w,7,0,0,PI);c.stroke()} + c.restore();c.lineWidth=5;c.beginPath();c.moveTo(106,72);c.lineTo(150,72);c.lineTo(186,226);c.ellipse(128,226,58,12,0,0,PI);c.closePath();c.stroke() + c.lineWidth=5;c.setLineDash([9,11]);c.beginPath();c.ellipse(128,184,23,34,0,0,T);c.stroke();c.setLineDash([]) + dig(c,four(c,44,184),C4);dig(c,four(c,198,184),C4b) + c.save();c.translate(ox,oy);c.rotate(sw);dig(c,()=>c.ellipse(0,0,23,34,0,0,T),C0) + c.strokeStyle='#fff';c.lineWidth=6;c.beginPath();c.ellipse(0,0,23,34,0,PI*1.12,PI*1.38);c.stroke();c.restore() + c.strokeStyle='#fff';c.lineWidth=6;for(const x of[30,184])c.beginPath(),c.moveTo(x,160),c.lineTo(x-2,170),c.stroke() + c.strokeStyle='#111';c.lineWidth=7 + c.save();c.translate(128,uy) + c.fillStyle=GL;c.beginPath();c.arc(0,50,35,PI,0);c.closePath();c.fill() + c.fillStyle=AL;c.beginPath();c.arc(0,34,15,0,T);c.fill();c.lineWidth=4;c.stroke() + c.fillStyle='#111';for(const d of[-1,1])c.beginPath(),c.ellipse(d*6,33,4,5.5,d*.3,0,T),c.fill() + c.fillStyle='#fff';for(const d of[-1,1])c.beginPath(),c.arc(d*6-1.5,31,1.6,0,T),c.fill() + c.strokeStyle='#fff';c.lineWidth=5;c.beginPath();c.arc(0,50,26,PI*1.12,PI*1.35);c.stroke();c.strokeStyle='#111' + c.lineWidth=7;c.beginPath();c.arc(0,50,35,PI,0);c.stroke() + c.fillStyle=BM;c.beginPath();c.ellipse(0,75,24,8,0,0,T);c.fill();c.lineWidth=5;c.stroke();c.lineWidth=7 + c.fillStyle=SA;c.beginPath();c.ellipse(0,61,74,17,0,0,T);c.fill();c.stroke() + c.fillStyle=SD;c.beginPath();c.ellipse(0,59,72,7,0,0,PI);c.lineTo(-72,64);c.ellipse(0,64,72,12,0,PI,0,true);c.closePath();c.fill() + c.beginPath();c.ellipse(0,61,74,17,0,0,T);c.stroke() + c.lineWidth=4;for(let k=0;k<5;k++){const x=(k-2)*26,y=64+(k==0||k==4?-4:k==2?3:1);c.fillStyle=(k+floor(t*8))%2?'#fff':LT[k%3];c.beginPath();c.arc(x,y,6,0,T);c.fill();c.stroke()} + c.restore() +} diff --git a/gen/uicolor/500/fire.js b/gen/uicolor/500/fire.js new file mode 100644 index 0000000..0e7ce1d --- /dev/null +++ b/gen/uicolor/500/fire.js @@ -0,0 +1,35 @@ +// panicking server rack on fire, cartoon flames flickering out the top, red lights blinking while an extinguisher puffs foam at it +const{sin,cos,PI,min,max}=Math,T=2*PI +export const frames=16,delay=70 +const RK='#495057',SL='#343a40',PN='#a5d8ff',FR=['#ff6b6b','#ff922b','#ffd43b'],EX='#ff6b6b',LED='#ff6b6b',BL='#ffa8a8' +const fl=(c,x,b,w,h,s)=>{c.beginPath();c.moveTo(x-w,b);c.bezierCurveTo(x-w*1.2,b-h*.45,x+s-w*.5,b-h*.62,x+s,b-h);c.bezierCurveTo(x+s+w*.55,b-h*.62,x+w*1.2,b-h*.45,x+w,b);c.closePath()} +export default(c,t,i)=>{ + for(const[k,[x,w,h,ph]]of[[54,30,58,1],[122,32,66,3],[88,44,86,0]].entries()){ + const hh=h*(1+.1*sin(2*T*t+ph)+.06*sin(4*T*t+ph*2)),s=8*sin(T*t*2+ph+k) + for(const[j,col]of FR.entries()){const f=[1,.68,.38][j];fl(c,x+s*(1-f)*.5,112,w*f,hh*f,s*f);c.fillStyle=col;c.fill();if(!j)c.lineWidth=6,c.stroke()} + } + c.lineWidth=7;c.fillStyle=RK;c.beginPath();c.roundRect(26,100,124,138,12);c.fill();c.stroke() + c.fillStyle=PN;c.lineWidth=5;c.beginPath();c.roundRect(38,112,100,52,8);c.fill();c.stroke() + c.lineWidth=4;for(const d of[-1,1])c.beginPath(),c.moveTo(88+d*31,127),c.lineTo(88+d*13,120),c.stroke() + c.fillStyle='#111';for(const d of[-1,1])c.beginPath(),c.arc(88+d*21,136,5,0,T),c.fill() + c.fillStyle='#fff';for(const d of[-1,1])c.beginPath(),c.arc(88+d*21-1.5,134.5,1.8,0,T),c.fill() + c.fillStyle='#111';c.beginPath();c.ellipse(88,153,7,6+(i%2),0,0,T);c.fill() + c.fillStyle='#4dabf7';c.lineWidth=3;c.beginPath();const sy=118+(i%4);c.moveTo(130,sy);c.quadraticCurveTo(136,sy+10,130,sy+12);c.quadraticCurveTo(124,sy+10,130,sy);c.fill();c.stroke() + for(let k=0;k<3;k++){ + const y=172+k*21;c.fillStyle=SL;c.lineWidth=4;c.beginPath();c.roundRect(38,y,100,15,4);c.fill();c.stroke() + c.strokeStyle='#868e96';c.lineWidth=3;c.beginPath();for(let x=50;x<100;x+=9)c.moveTo(x,y+4),c.lineTo(x,y+11);c.stroke();c.strokeStyle='#111' + for(const[j,x]of[112,126].entries()){const on=((i>>1)+k+j)%2;c.fillStyle=on?LED:'#862e2e';c.lineWidth=2.5;c.beginPath();c.arc(x,y+7.5,4.5,0,T);c.fill();c.stroke()} + } + for(let k=0;k<3;k++){ + const p=(t+k/3)%1,x=160-60*p,y=110-58*p+10*sin(PI*p),r=(7+17*p)*min(1,(1-p)*4) + if(r>1)c.fillStyle='#fff',c.lineWidth=5,c.beginPath(),c.arc(x,y,r,0,T),c.fill(),c.stroke() + } + for(const[w,s]of[[13,'#111'],[6,SL]])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),c.moveTo(212,140),c.bezierCurveTo(186,150,178,138,172,124),c.stroke() + c.strokeStyle='#111';c.lineWidth=16;c.beginPath();c.moveTo(174,126);c.lineTo(164,114);c.stroke() + c.lineWidth=7;c.fillStyle='#adb5bd';c.beginPath();c.roundRect(204,128,20,18,3);c.fill();c.stroke() + for(const[w,s]of[[12,'#111'],[5,'#adb5bd']])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),c.moveTo(206,124),c.lineTo(236,116),c.stroke() + c.strokeStyle='#111';c.lineWidth=7;c.fillStyle=EX;c.beginPath();c.roundRect(190,144,48,94,[22,22,8,8]);c.fill();c.stroke() + c.fillStyle='#fff';c.lineWidth=4;c.beginPath();c.roundRect(196,180,36,26,4);c.fill();c.stroke() + c.strokeStyle=EX;c.lineWidth=4;c.beginPath();c.moveTo(204,189);c.lineTo(224,189);c.moveTo(204,197);c.lineTo(218,197);c.stroke() + c.strokeStyle='#fff';c.lineWidth=5;c.beginPath();c.moveTo(198,162);c.lineTo(198,172);c.stroke() +} diff --git a/gen/uicolor/achievement/star.js b/gen/uicolor/achievement/star.js new file mode 100644 index 0000000..9bffea2 --- /dev/null +++ b/gen/uicolor/achievement/star.js @@ -0,0 +1,31 @@ +// star badge levels up, a green arrow shoots up from behind it, the badge hops and its happy star flips while sparkles burst +const{sin,cos,PI,min,max}=Math,T=2*PI +export const frames=18,delay=90 +const BG='#9775fa',BI='#b197fc',ST='#ffd43b',AR='#51cf66',RB='#ff6b6b',BL='#ffa8a8' +const back=u=>{const s=1.8;return 1+(s+1)*(u-1)**3+s*(u-1)**2},io=u=>u*u*(3-2*u),cl=u=>min(1,max(0,u)) +const sp=(c,x,y,s)=>{c.lineWidth=4;c.fillStyle='#fff';c.beginPath();c.moveTo(x,y-s);for(const[px,py,qx,qy]of[[s,0,s*.18,-s*.18],[0,s,s*.18,s*.18],[-s,0,-s*.18,s*.18],[0,-s,-s*.18,-s*.18]])c.quadraticCurveTo(x+qx,y+qy,x+px,y+py);c.fill();c.stroke()} +export default(c,t)=>{ + const o=t<.05?0:t<.35?back((t-.05)/.3):t<.75?1+.03*sin(2*T*(t-.35)/.4):t<.95?1-io((t-.75)/.2):0 + const hop=10*sin(PI*cl((t-.08)/.27)),sq=t>.03&&t<.12?1-.08*sin(PI*(t-.03)/.09):1,fl=cos(T*io(cl((t-.32)/.3))),b=(t-.32)/.35 + if(b>0&&b<1)for(let k=0;k<6;k++){const a=k*T/6-PI/2+.5,r=78+34*b;sp(c,128+cos(a)*r,146+sin(a)*r*.85,13*sin(PI*b))} + for(const[x,y,ph]of[[34,40,0],[222,64,.5]]){const s=10*max(0,sin(PI*((t*2+ph)%1)));if(s>1.5)sp(c,x,y,s)} + c.lineWidth=7;c.strokeStyle='#111' + const ay=146-116*o + c.save();c.beginPath();c.rect(0,0,256,146-hop);c.clip();c.translate(128,ay);c.fillStyle=AR;c.beginPath() + for(const[x,y]of[[0,0],[40,40],[17,40],[17,110],[-17,110],[-17,40],[-40,40]])c.lineTo(x,y) + c.closePath();c.fill();c.stroke() + c.strokeStyle='#fff';c.lineWidth=5;c.beginPath();c.moveTo(-8,48);c.lineTo(-8,64);c.moveTo(-6,14);c.lineTo(-20,28);c.stroke();c.restore() + c.strokeStyle='#111';c.lineWidth=7 + c.translate(128,146-hop);c.scale(.92*(2-sq),.92*sq) + c.fillStyle=RB;for(const d of[-1,1])c.beginPath(),c.moveTo(d*10,40),c.lineTo(d*42,30),c.lineTo(d*54,98),c.lineTo(d*40,88),c.lineTo(d*26,102),c.closePath(),c.fill(),c.stroke() + c.fillStyle=BG;c.beginPath();for(let k=0;k<128;k++){const a=k*T/128,r=62+4.5*cos(16*a);c.lineTo(cos(a)*r,sin(a)*r)}c.closePath();c.fill();c.stroke() + c.fillStyle=BI;c.lineWidth=5;c.beginPath();c.arc(0,0,49,0,T);c.fill();c.stroke() + c.strokeStyle='#fff';c.lineWidth=5;c.beginPath();c.arc(0,0,42,PI*1.12,PI*1.38);c.stroke();c.strokeStyle='#111' + c.save();c.scale(fl,1);c.fillStyle=ST;c.lineWidth=5;c.beginPath();for(let k=0;k<10;k++){const r=k%2?19:43,a=k*PI/5-PI/2;c.lineTo(cos(a)*r,3+sin(a)*r)}c.closePath();c.fill();c.stroke() + if(fl>.3){ + c.fillStyle='#111';for(const d of[-1,1])c.beginPath(),c.arc(d*9,4,3.8,0,T),c.fill() + c.lineWidth=3.5;c.beginPath();c.arc(0,9,5,.15*PI,.85*PI);c.stroke() + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(d*16,11,4,2.5,0,0,T),c.fill() + } + c.restore() +} diff --git a/gen/uicolor/battery/low.js b/gen/uicolor/battery/low.js new file mode 100644 index 0000000..6770fe6 --- /dev/null +++ b/gen/uicolor/battery/low.js @@ -0,0 +1,24 @@ +// red battery nearly drained, its last little bar blinking, wobbling tiredly with a worried sweaty face and drops sliding down +const{sin,PI,floor}=Math,T=2*PI +export const frames=16,delay=90 +const R='#ff6b6b',RD='#fa5252',CAP='#ced4da',DR='#a5d8ff',BL='#ffa8a8' +const drop=(c,x,y,s)=>{c.fillStyle=DR;c.lineWidth=4;c.beginPath();c.moveTo(x,y-11*s);c.quadraticCurveTo(x+9*s,y+2*s,x,y+5*s);c.quadraticCurveTo(x-9*s,y+2*s,x,y-11*s);c.fill();c.stroke();c.fillStyle='#fff';c.beginPath();c.arc(x-2*s,y,1.8*s,0,T);c.fill()} +export default(c,t,i)=>{ + const on=floor(t*4)%2==0,r=.05*sin(T*t),sq=1+.025*sin(2*T*t) + c.save();c.translate(128,236);c.rotate(r);c.scale(2-sq,sq);c.translate(-128,-236) + c.fillStyle=CAP;c.beginPath();c.roundRect(102,18,52,26,8);c.fill();c.stroke() + c.fillStyle=on?R:'#ffa8a8';c.beginPath();c.roundRect(62,38,132,198,28);c.fill();c.stroke() + c.fillStyle='#fff';c.lineWidth=6;c.beginPath();c.roundRect(80,56,96,162,16);c.fill();c.stroke() + if(on){c.fillStyle=RD;c.lineWidth=5;c.beginPath();c.roundRect(90,190,76,18,7);c.fill();c.stroke()} + else{c.strokeStyle='#ffa8a8';c.lineWidth=4;c.setLineDash([6,6]);c.beginPath();c.roundRect(90,190,76,18,7);c.stroke();c.setLineDash([]);c.strokeStyle='#111'} + c.fillStyle='#fff';c.beginPath();c.ellipse(76,74,4,12,0,0,T);c.fill() + c.lineWidth=4.5;for(const d of[-1,1])c.beginPath(),c.moveTo(128+d*12,100),c.lineTo(128+d*29,107),c.stroke() + c.fillStyle='#111';for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*20,124,6,8,0,0,T),c.fill() + c.fillStyle='#fff';for(const d of[-1,1])c.beginPath(),c.arc(128+d*20-2,120,2.6,0,T),c.fill() + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*32,144,8,4.5,0,0,T),c.fill() + c.lineWidth=4.5;c.beginPath();c.moveTo(114,158);for(let k=1;k<=7;k++)c.lineTo(114+k*4,158+(k%2?-4:0)+(i%2?1:0));c.stroke() + for(const[x,o,z]of[[170,0,1.3],[88,.5,1]]){const p=(t*2+o)%1;drop(c,x,84+p*34,z*(.8+.3*p))} + c.restore() + for(const d of[-1,1])for(const[w,s]of[[9,'#111'],[4,'#fff']]){c.lineWidth=w;c.strokeStyle=s;const x=128+d*(86+(i%2)*3);c.beginPath();c.moveTo(x,96);c.lineTo(x+d*8,104);c.moveTo(x+2*d,118);c.lineTo(x+d*12,120);c.stroke()} + c.strokeStyle='#111' +} diff --git a/gen/uicolor/cart/sad.js b/gen/uicolor/cart/sad.js new file mode 100644 index 0000000..55c8b25 --- /dev/null +++ b/gen/uicolor/cart/sad.js @@ -0,0 +1,34 @@ +// empty shopping cart rolling back and forth with a sad face and a tear, one lonely crumb sliding around the bottom of its basket +const{sin,cos,PI}=Math,T=2*PI +export const frames=20,delay=80 +const BK='#d0ebff',GR='#74c0fc',MT='#ced4da',HD='#ff6b6b',CR='#e0a96d',CH='#8b5a3c',BL='#ffa8a8',TR='#74c0fc' +const bas=c=>{c.beginPath();c.moveTo(56,80);c.lineTo(222,80);c.lineTo(200,168);c.lineTo(78,168);c.closePath()} +export default(c,t)=>{ + const dx=10*sin(t*T),cx=140-38*sin(t*T-.9) + c.translate(dx,0) + for(const[w,s]of[[14,'#111'],[6,MT]])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),c.moveTo(60,84),c.lineTo(36,62),c.moveTo(84,166),c.lineTo(92,196),c.lineTo(192,196),c.lineTo(198,166),c.stroke() + c.strokeStyle='#111';c.lineWidth=6 + c.save();c.translate(34,60);c.rotate(.74);c.fillStyle=HD;c.beginPath();c.roundRect(-14,-9,24,18,9);c.fill();c.stroke();c.restore() + for(const x of[100,184]){ + c.save();c.translate(x,214);c.rotate(dx/16);c.fillStyle='#495057';c.lineWidth=6;c.beginPath();c.arc(0,0,17,0,T);c.fill();c.stroke() + c.fillStyle=MT;c.lineWidth=4;c.beginPath();c.arc(0,0,7,0,T);c.fill();c.stroke() + c.strokeStyle='#fff';c.lineWidth=4;c.beginPath();c.arc(0,0,12,-.6,.6);c.stroke();c.restore() + } + c.strokeStyle='#111';c.lineWidth=7;bas(c);c.fillStyle=BK;c.fill() + c.save();bas(c);c.clip();c.strokeStyle=GR;c.lineWidth=4;c.beginPath() + for(const y of[102,124,146])c.moveTo(40,y),c.lineTo(230,y) + for(let k=0;k<7;k++)c.moveTo(78+k*22,80),c.lineTo(86+k*19,168) + c.stroke();c.restore() + c.strokeStyle='#111';c.lineWidth=7;bas(c);c.stroke() + for(const[w,s]of[[14,'#111'],[6,MT]])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),c.moveTo(50,80),c.lineTo(228,80),c.stroke() + c.strokeStyle='#111' + c.save();c.translate(cx,159);c.rotate((cx-140)/8);c.fillStyle=CR;c.lineWidth=3.5;c.beginPath();for(let k=0;k<6;k++){const a=k*T/6,r=k%2?7:9.5;c.lineTo(cos(a)*r,sin(a)*r)}c.closePath();c.fill();c.stroke() + c.fillStyle=CH;c.beginPath();c.arc(2,-1,2.5,0,T);c.fill();c.restore() + c.fillStyle='#111';for(const d of[-1,1])c.beginPath(),c.arc(139+d*22,112,6.5,0,T),c.fill() + c.fillStyle='#fff';for(const d of[-1,1])c.beginPath(),c.arc(137+d*22,110,2.2,0,T),c.fill() + c.lineWidth=4.5;for(const d of[-1,1])c.beginPath(),c.moveTo(139+d*12,96),c.lineTo(139+d*30,101),c.stroke() + c.lineWidth=5;c.beginPath();c.arc(139,146,11,1.15*PI,1.85*PI);c.stroke() + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(139+d*38,126,8,5,0,0,T),c.fill() + const p=(t*2)%1,ty=118+p*34 + if(p<.85){c.fillStyle=TR;c.lineWidth=3;c.beginPath();c.moveTo(117,ty);c.quadraticCurveTo(124,ty+10,117,ty+12);c.quadraticCurveTo(110,ty+10,117,ty);c.fill();c.stroke()} +} diff --git a/gen/uicolor/comingsoon/oven.js b/gen/uicolor/comingsoon/oven.js new file mode 100644 index 0000000..6dfd64a --- /dev/null +++ b/gen/uicolor/comingsoon/oven.js @@ -0,0 +1,35 @@ +// mint oven baking a happy little cake that puffs up behind the glowing window while the timer dial ticks round +const{sin,cos,PI,floor}=Math,T=2*PI +export const frames=24,delay=90 +const O='#63e6be',OD='#38d9a9',PN='#c3fae8',IN='#ffc078',CK='#fff3bf',CR='#ffd8a8',BL='#ffa8a8',HN='#dee2e6',RD='#ff6b6b',PAN='#adb5bd' +export default(c,t,i)=>{ + const s=.5-.5*cos(T*t),h=34+22*s,tk=floor(t*12),tick=i%2==0,hot=.5+.5*sin(4*T*t) + c.fillStyle='#495057';for(const x of[46,184])c.beginPath(),c.roundRect(x,222,26,18,6),c.fill(),c.stroke() + c.fillStyle=O;c.beginPath();c.roundRect(22,22,212,206,26);c.fill();c.stroke() + c.fillStyle=PN;c.lineWidth=5;c.beginPath();c.roundRect(36,34,184,52,16);c.fill();c.stroke() + for(const[x,a]of[[66,-.8],[104,.6]]){c.fillStyle='#fff';c.beginPath();c.arc(x,60,14,0,T);c.fill();c.stroke();c.lineWidth=4;c.beginPath();c.moveTo(x,60);c.lineTo(x+cos(a-PI/2)*9,60+sin(a-PI/2)*9);c.stroke();c.lineWidth=5} + c.save();c.translate(182,60);if(tick)c.rotate(.08*(tk%2?1:-1)) + c.fillStyle='#fff3bf';c.beginPath();c.arc(0,0,20,0,T);c.fill();c.stroke() + c.lineWidth=3;for(let k=0;k<4;k++){const a=k*PI/2;c.beginPath();c.moveTo(cos(a)*13,sin(a)*13);c.lineTo(cos(a)*16,sin(a)*16);c.stroke()} + const ha=-PI/2+tk*T/12;c.strokeStyle=RD;c.lineWidth=4;c.beginPath();c.moveTo(0,0);c.lineTo(cos(ha)*13,sin(ha)*13);c.stroke() + c.fillStyle='#111';c.beginPath();c.arc(0,0,3,0,T);c.fill();c.restore() + if(tick)for(const a of[-.5,0,.5].map(v=>v-PI/4))for(const[w,st]of[[8,'#111'],[3,'#fff']])c.lineWidth=w,c.strokeStyle=st,c.beginPath(),c.moveTo(182+cos(a)*27,60+sin(a)*27),c.lineTo(182+cos(a)*35,60+sin(a)*35),c.stroke() + c.strokeStyle='#111';c.lineWidth=7 + c.fillStyle=OD;c.beginPath();c.roundRect(36,98,184,118,18);c.fill();c.stroke() + c.fillStyle=HN;c.lineWidth=5;c.beginPath();c.roundRect(72,104,112,12,6);c.fill();c.stroke() + const win=()=>{c.beginPath();c.roundRect(54,124,148,84,12)} + c.fillStyle=IN;win();c.fill();c.save();win();c.clip() + c.fillStyle='#ffe8cc';c.beginPath();c.ellipse(128,210,74+6*hot,36+4*hot,0,0,T);c.fill() + for(const[w,st]of[[8,'#111'],[4,hot>.5?RD:'#ff8787']]){c.lineWidth=w;c.strokeStyle=st;c.beginPath();for(let x=66;x<=190;x+=12)c.lineTo(x,(x-66)%24?140:134);c.stroke()} + c.strokeStyle='#111';c.lineWidth=4;c.beginPath();c.moveTo(54,202);c.lineTo(202,202);c.stroke() + c.lineWidth=5;c.fillStyle=PAN;c.beginPath();c.moveTo(74,188);c.lineTo(182,188);c.lineTo(176,202);c.lineTo(80,202);c.closePath();c.fill();c.stroke() + const cake=()=>{c.beginPath();c.moveTo(84,190);c.lineTo(84,190-h*.5);c.bezierCurveTo(84,184-h,172,184-h,172,190-h*.5);c.lineTo(172,190);c.closePath()} + c.fillStyle=CK;cake();c.fill();c.save();cake();c.clip();c.fillStyle=CR;c.fillRect(70,180-h,120,h*.4);c.restore();cake();c.stroke() + const ey=198-h*.6 + c.fillStyle='#111';for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*14,ey,4.5,6,0,0,T),c.fill() + c.fillStyle='#fff';for(const d of[-1,1])c.beginPath(),c.arc(128+d*14-1.5,ey-2.5,2,0,T),c.fill() + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*26,ey+8,7,4,0,0,T),c.fill() + c.lineWidth=4;c.beginPath();c.arc(128,ey+4,7,.15*PI,.85*PI);c.stroke() + c.strokeStyle='#fff';c.lineWidth=6;c.beginPath();c.moveTo(170,132);c.lineTo(150,152);c.moveTo(186,134);c.lineTo(178,142);c.stroke() + c.restore();c.strokeStyle='#111';c.lineWidth=5;win();c.stroke() +} diff --git a/gen/uicolor/construction/barrier.js b/gen/uicolor/construction/barrier.js new file mode 100644 index 0000000..c2b7a6f --- /dev/null +++ b/gen/uicolor/construction/barrier.js @@ -0,0 +1,35 @@ +// orange and white striped road barrier, its two warning lamps flashing in turn, the lit lamp wide awake and beaming while the other dozes +const{sin,cos,PI,floor,max}=Math,T=2*PI +export const frames=16,delay=90 +const OR='#ff922b',ON='#ffd43b',OFF='#c8962e',HS='#495057',PO='#dee2e6',BL='#ffa8a8' +const board=(c,y,h)=>{ + const r=()=>{c.beginPath();c.roundRect(14,y,228,h,10)} + c.save();r();c.fillStyle='#fff';c.fill();c.clip();c.fillStyle=OR + for(let s=-60;s<250;s+=44)c.beginPath(),c.moveTo(s,y+h),c.lineTo(s+22,y+h),c.lineTo(s+22+h,y),c.lineTo(s+h,y),c.fill() + c.restore();r();c.stroke() +} +export default(c,t)=>{ + const k=floor(t*4)%2,p=(t*4)%1,pop=1+.1*max(0,1-p*3) + c.fillStyle=PO + for(const x of[64,192])c.beginPath(),c.roundRect(x-9,70,18,156,6),c.fill(),c.stroke(),c.beginPath(),c.roundRect(x-38,222,76,16,8),c.fill(),c.stroke() + board(c,90,48);board(c,158,38) + for(const[j,x]of[[0,64],[1,192]]){ + const on=j==k + c.save();c.translate(x,54);if(on)c.scale(pop,pop) + if(on)for(let r=0;r<7;r++){const a=PI+r*PI/6;for(const[w,s]of[[9,'#111'],[4,ON]])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),c.moveTo(cos(a)*35,sin(a)*35),c.lineTo(cos(a)*44,sin(a)*44),c.stroke()} + c.strokeStyle='#111';c.lineWidth=7 + c.fillStyle=HS;c.beginPath();c.arc(0,0,30,0,T);c.fill();c.stroke() + c.fillStyle=on?ON:OFF;c.lineWidth=5;c.beginPath();c.arc(0,0,22,0,T);c.fill();c.stroke() + c.fillStyle='#111';c.lineWidth=3.5 + if(on){ + c.fillStyle='#fff';c.beginPath();c.ellipse(-10,-11,5,3,-.6,0,T);c.fill() + c.fillStyle='#111';for(const d of[-1,1])c.beginPath(),c.ellipse(d*8,-2,3.5,4.5,0,0,T),c.fill() + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(d*14,6,4,2.5,0,0,T),c.fill() + c.beginPath();c.arc(0,4,6,.15*PI,.85*PI);c.stroke() + }else{ + for(const d of[-1,1])c.beginPath(),c.arc(d*8,-4,4,.2*PI,.8*PI),c.stroke() + c.beginPath();c.moveTo(-3,9);c.lineTo(3,9);c.stroke() + } + c.restore() + } +} diff --git a/gen/uicolor/construction/excavator.js b/gen/uicolor/construction/excavator.js new file mode 100644 index 0000000..923eb98 --- /dev/null +++ b/gen/uicolor/construction/excavator.js @@ -0,0 +1,48 @@ +// yellow excavator digging into a dirt pile, lifting a full bucket and dumping it back, exhaust puffing, smiling as it works +const{sin,cos,PI,round}=Math,T=2*PI +export const frames=20,delay=90 +const Y='#ffd43b',YD='#fab005',TR='#495057',WH='#ced4da',GL='#a5d8ff',DI='#c08552',DD='#8d6346',BL='#ffa8a8',EX='#868e96' +const arm=(c,a,b,w,col)=>{for(const[lw,s]of[[w,'#111'],[w-10,col]])c.lineWidth=lw,c.strokeStyle=s,c.beginPath(),c.moveTo(...a),c.lineTo(...b),c.stroke();c.strokeStyle='#111';c.lineWidth=7} +const pin=(c,[x,y])=>{c.fillStyle=WH;c.lineWidth=4;c.beginPath();c.arc(x,y,6,0,T);c.fill();c.stroke();c.lineWidth=7} +const pose=t=>{ + const s=.5-.5*cos(T*t),a1=-.15-.75*s,a2=1.5-.6*s,th=a2-PI/2+.5+.9*sin(T*t) + const E=[128+80*cos(a1),128+80*sin(a1)],B=[E[0]+64*cos(a2),E[1]+64*sin(a2)] + return{E,B,th,at:(x,y)=>[B[0]+x*cos(th)-y*sin(th),B[1]+x*sin(th)+y*cos(th)]} +} +const mound=c=>{c.beginPath();c.moveTo(146,240);c.bezierCurveTo(160,178,234,172,248,240);c.closePath()} +export default(c,t)=>{ + const{E,B,th}=pose(t),by=round(2*sin(2*T*t)),full=t>.03&&t<.5 + for(let k=0;k<3;k++){const p=(t*3+k/3)%1,r=4+8*sin(PI*p);c.fillStyle='#fff';c.lineWidth=4;c.beginPath();c.arc(34-8*p+4*sin(T*p),76-50*p+by,r,0,T);c.fill();c.stroke()} + c.lineWidth=7 + c.fillStyle=TR;c.beginPath();c.roundRect(10,192,132,44,22);c.fill();c.stroke() + for(const x of[32,76,120]){c.fillStyle=WH;c.lineWidth=5;c.beginPath();c.arc(x,214,11,0,T);c.fill();c.stroke();c.fillStyle='#111';c.beginPath();c.arc(x,214,3,0,T);c.fill()} + c.lineWidth=7;c.translate(0,by) + c.fillStyle='#343a40';c.beginPath();c.rect(34,180,92,14);c.fill();c.stroke() + c.fillStyle=EX;c.beginPath();c.roundRect(28,80,12,40,4);c.fill();c.stroke() + c.fillStyle=Y;c.beginPath();c.roundRect(56,50,72,76,14);c.fill();c.stroke() + c.fillStyle=GL;c.lineWidth=5;c.beginPath();c.roundRect(68,62,48,40,8);c.fill();c.stroke() + c.fillStyle='#fff';c.beginPath();c.ellipse(80,72,4,8,.5,0,T);c.fill() + c.lineWidth=7 + const body=()=>{c.beginPath();c.roundRect(14,114,124,70,14)} + c.fillStyle=Y;body();c.fill();c.save();body();c.clip();c.fillStyle=YD;c.fillRect(0,114,34,80);c.restore();body();c.stroke() + c.fillStyle='#111';for(const x of[66,100])c.beginPath(),c.ellipse(x,146,5,7,0,0,T),c.fill() + c.fillStyle='#fff';for(const x of[64,98])c.beginPath(),c.arc(x,143,2.2,0,T),c.fill() + c.fillStyle=BL;for(const x of[52,114])c.beginPath(),c.ellipse(x,160,8,4.5,0,0,T),c.fill() + c.lineWidth=5;c.beginPath();c.arc(83,152,8,.15*PI,.85*PI);c.stroke() + arm(c,[128,128],E,26,Y);arm(c,E,B,22,YD) + c.save();c.translate(...B);c.rotate(th) + if(full){c.fillStyle=DI;c.lineWidth=5;for(const[x,y,r]of[[-16,2,11],[-24,18,12],[-26,34,9],[-12,22,10]])c.beginPath(),c.arc(x,y,r,0,T),c.fill(),c.stroke()} + c.fillStyle=EX;c.lineWidth=6;c.beginPath();c.moveTo(-10,-8);c.lineTo(16,-6);c.quadraticCurveTo(32,32,-2,44);c.lineTo(-28,42);c.quadraticCurveTo(-8,30,-10,-8);c.closePath();c.fill();c.stroke() + c.fillStyle=WH;c.lineWidth=4;c.beginPath();c.moveTo(-28,42);c.lineTo(-36,46);c.lineTo(-24,48);c.lineTo(-30,52);c.lineTo(-14,48);c.closePath();c.fill();c.stroke() + c.restore();pin(c,[128,128]);pin(c,E);pin(c,B) + c.translate(0,-by);c.lineWidth=7 + c.fillStyle=DI;mound(c);c.fill();c.stroke() + c.fillStyle=DD;for(const[x,y]of[[180,214],[206,200],[222,222],[194,230]])c.beginPath(),c.ellipse(x,y,5,3,0,0,T),c.fill() + for(let k=0;k<4;k++){ + const t0=.44+k*.035,u=(t-t0)/.2 + if(u<0||u>1)continue + const P=pose(t0),[x,y]=P.at(-20,20),yy=y+by+u*u*80,xx=x+(k-1.5)*7*u + if(yy>204)continue + c.fillStyle=DI;c.lineWidth=4;c.beginPath();c.arc(xx,yy,6-k%2,0,T);c.fill();c.stroke() + } +} diff --git a/gen/uicolor/copied/clipboard.js b/gen/uicolor/copied/clipboard.js new file mode 100644 index 0000000..a60415a --- /dev/null +++ b/gen/uicolor/copied/clipboard.js @@ -0,0 +1,29 @@ +// smiling clipboard whose sheet peels off a twin copy that slides out beside it, gets a green check and sparkles, then poofs away +const{sin,cos,PI,max,min}=Math,T=2*PI +export const frames=24,delay=80 +const WD='#a9744f',CL='#ced4da',LN='#a5d8ff',CK='#51cf66',BL='#ffa8a8',SP='#ffd43b' +const ease=u=>u<0?0:u>1?1:u*u*(3-2*u) +const sheet=c=>{ + c.fillStyle='#fff';c.lineWidth=6;c.beginPath();c.roundRect(-48,-76,96,152,8);c.fill();c.stroke() + c.strokeStyle=LN;c.lineWidth=7;c.beginPath();for(const[y,w]of[[-46,60],[-28,60],[-10,40]])c.moveTo(-30,y),c.lineTo(-30+w,y);c.stroke();c.strokeStyle='#111' + c.fillStyle='#111';for(const d of[-1,1])c.beginPath(),c.ellipse(d*16,26,5,6.5,0,0,T),c.fill() + c.fillStyle='#fff';for(const d of[-1,1])c.beginPath(),c.arc(d*16-2,23,2.2,0,T),c.fill() + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(d*28,38,7,4,0,0,T),c.fill() + c.lineWidth=4.5;c.beginPath();c.arc(0,33,7,.15*PI,.85*PI);c.stroke() +} +const star=(c,x,y,s)=>{c.fillStyle=SP;c.lineWidth=3.5;c.beginPath();c.moveTo(x,y-s);for(const[px,py,qx,qy]of[[s,0,s*.2,-s*.2],[0,s,s*.2,s*.2],[-s,0,-s*.2,s*.2],[0,-s,-s*.2,-s*.2]])c.quadraticCurveTo(x+qx,y+qy,x+px,y+py);c.fill();c.stroke()} +export default(c,t)=>{ + const m=ease((t-.06)/.34),dx=88*m,dy=10*m,r=.14*m,sc=t<.82?1:1-ease((t-.82)/.14),ck=t<.42?0:t<.5?1.15*ease((t-.42)/.08):t<.56?1.15-.15*ease((t-.5)/.06):1 + const lift=t<.06?0:min(1,(t-.06)/.06)*(t<.4?1:0) + c.fillStyle=WD;c.beginPath();c.roundRect(14,30,136,206,16);c.fill();c.stroke() + c.save();c.translate(80,138);sheet(c);c.restore() + c.fillStyle=CL;c.lineWidth=6;c.beginPath();c.roundRect(50,18,60,30,8);c.fill();c.stroke() + c.fillStyle=WD;c.beginPath();c.arc(80,26,5,0,T);c.fill();c.stroke() + if(sc>.02&&t>.06){ + c.save();c.translate(80+dx,138+dy-6*lift);c.rotate(r);c.scale(sc,sc);sheet(c) + if(ck>0){c.save();c.translate(36,-62);c.scale(ck,ck);c.fillStyle=CK;c.lineWidth=6;c.beginPath();c.arc(0,0,20,0,T);c.fill();c.stroke();c.strokeStyle='#fff';c.lineWidth=7;c.beginPath();c.moveTo(-10,0);c.lineTo(-3,8);c.lineTo(11,-8);c.stroke();c.restore()} + c.restore() + } + if(t>.48&&t<.82){const p=(t-.48)/.34,s=sin(PI*p)*9;for(const[x,y,o]of[[238,128,0],[152,44,.5],[236,212,.25]])star(c,x,y,max(0,s*(1-.3*o)))} + if(t>.82&&t<.98){const p=(t-.82)/.16;c.fillStyle='#fff';c.lineWidth=4;for(let k=0;k<6;k++){const a=k*PI/3+.3,d=20+46*p,s=8*(1-p)+1;c.beginPath();c.arc(168+cos(a)*d,148+sin(a)*d,s,0,T);c.fill();c.stroke()}} +} diff --git a/gen/uicolor/coupon/scissors.js b/gen/uicolor/coupon/scissors.js new file mode 100644 index 0000000..fb3a86e --- /dev/null +++ b/gen/uicolor/coupon/scissors.js @@ -0,0 +1,23 @@ +// red-handled scissors snipping their way down the dashed line of a yellow percent-off coupon, the dashes marching into the blades +const{sin,cos,PI,abs}=Math,T=2*PI +export const frames=24,delay=70 +const CP='#ffd43b',CPD='#fab005',HD='#ff6b6b',BLD='#dee2e6',X=178 +const tk=c=>{c.beginPath();c.moveTo(34,110);c.lineTo(222,110);c.arcTo(238,110,238,126,16);c.arc(238,170,15,-PI/2,PI/2,true);c.arcTo(238,232,222,232,16);c.lineTo(34,232);c.arcTo(18,232,18,216,16);c.arc(18,170,15,PI/2,-PI/2,true);c.arcTo(18,110,34,110,16);c.closePath()} +export default(c,t)=>{ + const sn=abs(sin(4*PI*t)),h=.04+.3*sn,dy=4*(1-sn) + tk(c);c.fillStyle=CP;c.fill() + c.save();tk(c);c.clip();c.fillStyle=CPD;c.fillRect(18,216,220,20);c.restore() + tk(c);c.stroke() + for(const[w,s]of[[26,'#111'],[13,'#fff']]){c.lineWidth=w;c.strokeStyle=s;c.beginPath();c.moveTo(130,138);c.lineTo(76,204);c.moveTo(94,145);c.arc(82,145,12,0,T);c.moveTo(134,198);c.arc(122,198,12,0,T);c.stroke()} + c.strokeStyle='#111';c.fillStyle='#fff';c.lineWidth=5;c.beginPath();for(let k=0;k<10;k++){const r=k%2?8:19,a=k*PI/5-PI/2;c.lineTo(209+cos(a)*r,172+sin(a)*r)}c.closePath();c.fill();c.stroke() + c.setLineDash([12,10]);c.lineDashOffset=t*66;c.lineWidth=5;c.beginPath();c.moveTo(X,116);c.lineTo(X,228);c.stroke();c.setLineDash([]) + c.translate(X,80+dy) + for(const s of[1,-1]){ + c.save();c.rotate(s*h) + for(const[w,st]of[[18,'#111'],[9,HD]])c.lineWidth=w,c.strokeStyle=st,c.beginPath(),c.moveTo(0,0),c.lineTo(s*14,-30),c.moveTo(s*20+15,-48),c.arc(s*20,-48,15,0,T),c.stroke() + c.strokeStyle='#111';c.fillStyle=BLD;c.lineWidth=5;c.beginPath();c.moveTo(-s*1,-8);c.quadraticCurveTo(-s*10,28,0,62);c.quadraticCurveTo(s*9,26,s*6,-6);c.closePath();c.fill();c.stroke() + c.strokeStyle='#fff';c.lineWidth=3;c.beginPath();c.moveTo(-s*2,6);c.quadraticCurveTo(-s*4,26,-s*1,40);c.stroke() + c.restore() + } + c.strokeStyle='#111';c.fillStyle='#ffd43b';c.lineWidth=4;c.beginPath();c.arc(0,0,6,0,T);c.fill();c.stroke() +} diff --git a/gen/uicolor/download/parachute.js b/gen/uicolor/download/parachute.js new file mode 100644 index 0000000..479f82f --- /dev/null +++ b/gen/uicolor/download/parachute.js @@ -0,0 +1,29 @@ +// smiling cardboard box drifting down under a striped parachute, swaying gently as little clouds float up past it +const{sin,PI,round}=Math,T=2*PI +export const frames=12,delay=110 +const P=['#4dabf7','#fff','#ff6b6b','#fff','#4dabf7'],BX='#e0a96d',BXD='#c08552',TP='#ffd8a8',BL='#ff8787' +const cloud=(c,x,y,s)=>{const b=[[-14*s,3*s,10*s],[2*s,-4*s,13*s],[17*s,3*s,9*s]];c.lineWidth=13;for(const[a,d,r]of b)c.beginPath(),c.arc(x+a,y+d,r,0,T),c.stroke();c.fillStyle='#fff';for(const[a,d,r]of b)c.beginPath(),c.arc(x+a,y+d,r,0,T),c.fill();c.lineWidth=7} +const can=c=>{c.beginPath();c.moveTo(-98,0);c.bezierCurveTo(-98,-74,98,-74,98,0);for(let k=0;k<5;k++){const x=98-k*39.2;c.quadraticCurveTo(x-19.6,16,x-39.2,0)}c.closePath()} +export default(c,t)=>{ + const a=.13*sin(T*t),b=round(4*sin(2*T*t)) + for(const[x,o]of[[32,0],[222,.5]]){const p=(t+o)%1,s=sin(PI*p);if(s>.08)cloud(c,x,226-p*190,.8*s)} + c.strokeStyle='#111' + c.save();c.translate(128,24+b);c.rotate(a);c.translate(0,48) + const L=[[-96,2],[-20,14],[20,14],[96,2]],K=[[-30,104],[-14,104],[14,104],[30,104]] + for(const[lw,s]of[[7,'#111'],[3,'#fff']]){c.lineWidth=lw;c.strokeStyle=s;c.beginPath();L.forEach(([x,y],k)=>{c.moveTo(x,y);c.lineTo(...K[k])});c.stroke()} + c.strokeStyle='#111';c.lineWidth=7 + c.save();can(c);c.clip() + const gx=k=>(-98+k*39.2)*1.3 + for(let k=0;k<5;k++){c.fillStyle=P[k];c.beginPath();c.moveTo(0,-110);c.lineTo(gx(k),30);c.lineTo(gx(k+1),30);c.closePath();c.fill()} + c.lineWidth=4;c.beginPath();for(let k=1;k<5;k++)c.moveTo(0,-110),c.lineTo(gx(k),30);c.stroke() + c.restore();c.lineWidth=7;can(c);c.stroke() + c.fillStyle='#fff';c.beginPath();c.ellipse(-50,-36,12,5,-.6,0,T);c.fill() + c.fillStyle=BXD;c.beginPath();c.moveTo(-40,108);c.lineTo(-30,98);c.lineTo(30,98);c.lineTo(40,108);c.closePath();c.fill();c.stroke() + c.fillStyle=BX;c.beginPath();c.roundRect(-44,104,88,60,8);c.fill();c.stroke() + c.fillStyle=TP;c.lineWidth=5;c.beginPath();c.rect(-10,104,20,22);c.fill();c.stroke() + c.fillStyle='#111';for(const d of[-1,1])c.beginPath(),c.ellipse(d*17,134,5,6.5,0,0,T),c.fill() + c.fillStyle='#fff';for(const d of[-1,1])c.beginPath(),c.arc(d*17-2,131,2.2,0,T),c.fill() + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(d*28,146,7,4,0,0,T),c.fill() + c.lineWidth=4.5;c.beginPath();c.arc(0,141,7,.15*PI,.85*PI);c.stroke() + c.restore() +} diff --git a/gen/uicolor/error/cloud.js b/gen/uicolor/error/cloud.js new file mode 100644 index 0000000..de6fa0f --- /dev/null +++ b/gen/uicolor/error/cloud.js @@ -0,0 +1,27 @@ +// grumpy gray storm cloud with an anger mark, blue rain pouring down and a yellow lightning bolt cracking out as it shudders +const{sin,cos,PI,min}=Math,T=2*PI +export const frames=16,delay=80 +const CL='#ced4da',CD='#adb5bd',RN='#4dabf7',BT='#ffd43b',AN='#ff6b6b' +const PF=[[-64,8,34],[-30,-18,42],[18,-30,46],[60,-4,38],[-20,16,40],[28,14,40]] +export default(c,t,i)=>{ + const z=i==5||i==6||i==12,sh=z?(i%2?4:-4):0,y=98+3*sin(t*T) + for(let k=0;k<7;k++){ + const p=(t*2+k*.43)%1,x=56+k*24+(k%2)*4,yy=y+30+p*112,s=min(1,(1-p)*5) + if(s<=0)continue + c.save();c.translate(x-p*8,yy);c.rotate(.1);c.scale(s,s);c.fillStyle=RN;c.lineWidth=4;c.beginPath();c.moveTo(0,-14);c.quadraticCurveTo(10,3,0,8);c.quadraticCurveTo(-10,3,0,-14);c.fill();c.stroke();c.restore() + } + if(z){ + c.fillStyle=BT;c.lineWidth=5;c.beginPath();for(const[x,yy]of[[134,120],[108,180],[128,180],[108,240],[160,166],[138,166],[156,120]])c.lineTo(x+sh,yy);c.closePath();c.fill();c.stroke() + for(const[a,r]of[[-2.6,0],[-.5,1],[2.2,2]]){const x=118+cos(a)*40+sh,yy=206+sin(a)*24;for(const[w,s]of[[10,'#111'],[4,BT]])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),c.moveTo(x,yy),c.lineTo(x+cos(a)*14,yy+sin(a)*10),c.stroke()} + c.strokeStyle='#111' + } + c.translate(128+sh,y) + c.lineWidth=14;for(const[a,d,r]of PF)c.beginPath(),c.arc(a,d,r,0,T),c.stroke() + c.fillStyle=CL;for(const[a,d,r]of PF)c.beginPath(),c.arc(a,d,r,0,T),c.fill() + c.save();c.beginPath();for(const[a,d,r]of PF)c.moveTo(a+r,d),c.arc(a,d,r,0,T);c.clip();c.fillStyle=CD;c.beginPath();c.ellipse(0,64,120,34,0,0,T);c.fill();c.restore() + c.strokeStyle='#fff';c.lineWidth=6;c.beginPath();c.arc(18,-30,36,PI*1.15,PI*1.45);c.stroke();c.strokeStyle='#111' + c.lineWidth=6;for(const d of[-1,1])c.beginPath(),c.moveTo(d*36,-14),c.lineTo(d*14,-4),c.stroke() + c.fillStyle='#111';for(const d of[-1,1])c.beginPath(),c.arc(d*24,6,z?4:6,0,T),c.fill() + c.lineWidth=5;c.beginPath();c.arc(0,34,12,PI*1.15,PI*1.85);c.stroke() + c.save();c.translate(58,-34);c.rotate(.2*sin(2*T*t));for(const[w,s]of[[11,'#111'],[5,AN]]){c.lineWidth=w;c.strokeStyle=s;c.beginPath();for(const r of[0,1,2,3]){const a=r*PI/2+PI/4;c.moveTo(cos(a)*7+cos(a+PI/4)*10,sin(a)*7+sin(a+PI/4)*10);c.quadraticCurveTo(cos(a)*7,sin(a)*7,cos(a)*7+cos(a-PI/4)*10,sin(a)*7+sin(a-PI/4)*10)}c.stroke()}c.restore() +} diff --git a/gen/uicolor/error/cookie.js b/gen/uicolor/error/cookie.js new file mode 100644 index 0000000..f3d6a45 --- /dev/null +++ b/gen/uicolor/error/cookie.js @@ -0,0 +1,38 @@ +// sad chocolate chip cookie trembles, a crack zigzags down it, it splits in two crying while crumbs tumble off, then it pulls itself back together +const{sin,cos,PI,min,max}=Math,T=2*PI +export const frames=24,delay=80 +const CK='#e0a96d',CKD='#c98c4f',CH='#5c3d2e',BL='#ffa8a8',TR='#74c0fc' +const C=[[0,-76],[-9,-56],[8,-36],[-7,-14],[9,10],[-7,34],[8,56],[0,76]] +const CH0=[[-42,-34],[30,-46],[50,6],[-52,18],[-24,50],[26,50],[-8,-60],[40,-22]] +const io=u=>u*u*(3-2*u),cl=u=>min(1,max(0,u)) +const body=c=>{c.beginPath();for(let a=0;a<=T+.01;a+=.12){const r=76+3*sin(a*7);c.lineTo(cos(a)*r,sin(a)*r)}c.closePath()} +const crack=c=>{c.beginPath();for(const[x,y]of C)c.lineTo(x,y)} +export default(c,t,i)=>{ + const tr=t>.04&&t<.32?(i%2?2:-2):0,cp=t<.3?cl((t-.1)/.2):cl(1-(t-.9)/.1),sp=t<.32?0:t<.46?1-(1-(t-.32)/.14)**3:t<.78?1:t<.9?1-io((t-.78)/.12):0 + for(const d of[-1,1]){ + c.save();c.translate(128+tr+d*14*sp,126+5*sp);c.translate(0,84);c.rotate(d*.2*sp);c.translate(0,-84) + if(sp>0){c.beginPath();for(const[x,y]of[[0,-110],...C,[0,110],[d*200,110],[d*200,-110]])c.lineTo(x,y);c.clip()} + else if(d>0){c.restore();continue} + body(c);c.fillStyle=CK;c.fill() + c.save();body(c);c.clip();c.fillStyle=CKD;c.beginPath();c.arc(0,0,82,0,T);c.arc(-10,-12,78,0,T,true);c.fill();c.restore() + c.lineWidth=7;body(c);c.stroke() + c.fillStyle=CH;for(const[x,y]of CH0)c.beginPath(),c.ellipse(x,y,7,6,x,0,T),c.fill() + c.lineWidth=4.5;for(const e of[-1,1])c.beginPath(),c.moveTo(e*38,-20),c.lineTo(e*17,-27),c.stroke() + c.fillStyle='#111';for(const e of[-1,1])c.beginPath(),c.arc(e*26,-6,6,0,T),c.fill() + c.fillStyle='#fff';for(const e of[-1,1])c.beginPath(),c.arc(e*26-2,-8,2.2,0,T),c.fill() + c.lineWidth=5;c.beginPath();c.arc(0,36,13,PI*1.2,PI*1.8);c.stroke() + c.fillStyle=BL;for(const e of[-1,1])c.beginPath(),c.ellipse(e*44,12,8,4.5,0,0,T),c.fill() + if(sp>.5)for(const o of[0,.5]){const p=(t*4+o)%1,yy=2+p*36;c.fillStyle=TR;c.lineWidth=3;c.beginPath();c.moveTo(d*30,yy-8);c.quadraticCurveTo(d*30+6,yy+3,d*30,yy+5);c.quadraticCurveTo(d*30-6,yy+3,d*30,yy-8);c.fill();c.stroke()} + if(sp>0){c.lineWidth=6;crack(c);c.stroke()} + c.restore() + } + if(sp==0&&cp>0){ + const L=C.reduce((s,[x,y],k)=>k?s+Math.hypot(x-C[k-1][0],y-C[k-1][1]):0,0) + c.save();c.translate(128+tr,126);c.lineWidth=6;c.setLineDash([L*cp,999]);c.lineDashOffset=t<.5?0:-L*(1-cp);crack(c);c.stroke();c.restore() + } + const u=(t-.33)/.5 + if(u>0&&u<1)for(let k=1;k<7;k++){ + const[cx,cy]=C[k],d=k%2?1:-1,x=128+cx+d*(18+k*7)*u*1.4,y=126+cy-(34+k*5%17)*u*1.2+280*u*u,r=(4+k%3*1.5)*min(1,(1-u)*5) + if(y<230&&r>.5){c.fillStyle=k%2?CK:CKD;c.lineWidth=3;c.beginPath();c.moveTo(x-r,y);c.lineTo(x-r*.3,y-r);c.lineTo(x+r,y-r*.4);c.lineTo(x+r*.6,y+r);c.closePath();c.fill();c.stroke()} + } +} diff --git a/gen/uicolor/error/glitch.js b/gen/uicolor/error/glitch.js new file mode 100644 index 0000000..0569be0 --- /dev/null +++ b/gen/uicolor/error/glitch.js @@ -0,0 +1,36 @@ +// computer monitor glitching out, RGB bars tearing across it and slices jumping sideways, spiral dizzy eyes and little stars circling overhead +const{sin,cos,PI,abs}=Math,T=2*PI +export const frames=16,delay=80 +const CS='#b197fc',SC='#e7f5ff',G=['#ff6b6b','#51cf66','#4dabf7','#ffd43b','#f783ac','#3bc9db'],BL='#ffa8a8',GS='0011010000111010' +const R=n=>abs(sin(n*127.1+311.7)*43758.5)%1 +const star=(c,x,y,s)=>{c.fillStyle='#ffd43b';c.lineWidth=4;c.beginPath();for(let k=0;k<10;k++){const r=k%2?s*.45:s,a=k*PI/5-PI/2;c.lineTo(x+cos(a)*r,y+sin(a)*r)}c.closePath();c.fill();c.stroke()} +const face=(c,t,col,o)=>{ + c.strokeStyle=col;c.lineWidth=5 + for(const d of[-1,1]){c.beginPath();for(let a=0;a<4.4*PI;a+=.3){const r=1+a*1.15,b=(a+t*T*2)*d;c.lineTo(128+d*32+o+cos(b)*r,118+sin(b)*r)}c.stroke()} + c.beginPath();for(let x=-22;x<=22;x+=2)c.lineTo(128+x+o,154+4*sin(x/6+t*T*2));c.stroke() +} +const M=(c,t,i,g)=>{ + c.strokeStyle='#111';c.lineWidth=7 + c.fillStyle='#868e96';c.beginPath();c.roundRect(110,194,36,26,4);c.fill();c.stroke() + c.fillStyle=CS;c.beginPath();c.roundRect(70,214,116,22,11);c.fill();c.stroke() + c.beginPath();c.roundRect(22,52,212,148,24);c.fill();c.stroke() + c.fillStyle=g?'#ff6b6b':'#51cf66';c.lineWidth=4;c.beginPath();c.arc(210,190,4.5,0,T);c.fill();c.stroke() + c.save();c.beginPath();c.roundRect(40,70,176,112,12);c.clip() + c.fillStyle=SC;c.fillRect(0,60,256,130) + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*58,140,9,5,0,0,T),c.fill() + if(g)face(c,t,'#ff6b6b',-5),face(c,t,'#4dabf7',5) + face(c,t,'#111',0) + if(g)for(let n=0;n<5;n++)c.fillStyle=G[(i+n)%6],c.fillRect(40+R(i+n*13)*90,72+R(i*9+n)*104,30+R(i*7+n)*110,4+R(i*3+n*7)*10) + c.restore() + c.strokeStyle='#111';c.lineWidth=5;c.beginPath();c.roundRect(40,70,176,112,12);c.stroke() + c.strokeStyle='#fff';c.lineWidth=6;c.beginPath();c.moveTo(54,96);c.lineTo(54,84);c.lineTo(66,84);c.stroke() +} +export default(c,t,i)=>{ + const g=GS[i]>0 + const st=b=>{for(let k=0;k<3;k++){const a=t*T+k*T/3,z=sin(a);if(z<0==b)star(c,128+cos(a)*76,30+z*10,14+3*z)}} + st(1) + if(!g)M(c,t,i,0) + else{const Y=[0,64,92,118,140,166,196,256];for(let k=0;k<7;k++){const dx=R(i*5+k)>.45?(R(i*11+k)-.5)*40:0;c.save();c.beginPath();c.rect(0,Y[k],256,Y[k+1]-Y[k]);c.clip();c.translate(dx,0);M(c,t,i,1);c.restore()}} + c.strokeStyle='#111' + st(0) +} diff --git a/gen/uicolor/expired/milk.js b/gen/uicolor/expired/milk.js new file mode 100644 index 0000000..65c080e --- /dev/null +++ b/gen/uicolor/expired/milk.js @@ -0,0 +1,35 @@ +// spoiled milk carton swaying woozily with spinning spiral eyes and a wobbly mouth, green stink lines wafting up and a fly buzzing round +const{sin,cos,PI}=Math,T=2*PI +export const frames=16,delay=90 +const BU='#74c0fc',BUD='#4dabf7',GR='#a9e34b',SB='#c0eb75',FLY='#495057',DR='#a5d8ff' +const spiral=(c,x,y,a)=>{c.beginPath();for(let k=0;k<=34;k++){const u=k*.32,r=1+u*1.15;c.lineTo(x+cos(u+a)*r,y+sin(u+a)*r)}c.stroke()} +export default(c,t,i)=>{ + const r=.07*sin(T*t),sk=.05*sin(2*T*t+1) + for(const[x,o,h]of[[36,0,70],[220,.5,70]]){ + const p=(t+o)%1,y0=150-36*p,L=h*(1-.3*p) + c.save();c.beginPath();c.rect(0,0,256,160);c.clip() + for(const[w,s]of[[12,'#111'],[5,GR]]){c.lineWidth=w;c.strokeStyle=s;c.beginPath();for(let k=0;k<=12;k++){const y=y0-k/12*L;c.lineTo(x+7*sin(y*.12+T*t*2),y)}c.stroke()} + c.restore() + } + c.strokeStyle='#111';c.lineWidth=7 + c.save();c.translate(128,238);c.rotate(r);c.transform(1,0,sk,1,0,0);c.translate(-128,-238) + c.fillStyle=BU;c.beginPath();c.roundRect(90,66,76,20,6);c.fill();c.stroke() + c.beginPath();c.moveTo(64,124);c.lineTo(88,84);c.lineTo(168,84);c.lineTo(192,124);c.closePath();c.fill();c.stroke() + c.fillStyle='#fff';c.beginPath();c.roundRect(64,122,128,114,10);c.fill();c.stroke() + c.save();c.beginPath();c.roundRect(64,122,128,114,10);c.clip() + c.fillStyle=BUD;c.beginPath();c.moveTo(60,240);c.lineTo(60,210);for(let x=60;x<=196;x+=4)c.lineTo(x,210+5*sin(x*.09+T*t));c.lineTo(196,240);c.closePath();c.fill();c.lineWidth=5;c.stroke() + c.restore();c.lineWidth=7;c.beginPath();c.roundRect(64,122,128,114,10);c.stroke() + c.fillStyle='#fff';c.lineWidth=4;c.beginPath();c.ellipse(128,104,10,8,0,0,T);c.fill();c.stroke() + c.lineWidth=4;for(const[x,d]of[[104,1],[152,-1]])spiral(c,x,152,d*T*t*2) + c.fillStyle=SB;for(const x of[88,168])c.beginPath(),c.ellipse(x,174,9,5,0,0,T),c.fill() + c.lineWidth=4.5;c.beginPath();for(let k=0;k<=8;k++){const x=110+k*4.5;c.lineTo(x,184+(k%2?-3:3)*(i%2?1:-1))}c.stroke() + c.fillStyle=SB;c.lineWidth=3.5;c.beginPath();c.moveTo(130,185);c.quadraticCurveTo(132,200,140,198);c.quadraticCurveTo(146,194,140,184);c.fill();c.stroke() + c.fillStyle=DR;c.lineWidth=3.5;const dy=(t*2%1)*14;c.beginPath();c.moveTo(178,128+dy);c.quadraticCurveTo(186,140+dy,178,144+dy);c.quadraticCurveTo(170,140+dy,178,128+dy);c.fill();c.stroke() + c.restore() + const fa=T*t,fx=128+84*cos(fa),fy=42+14*sin(2*fa),fl=-sin(fa)>0?1:-1 + c.save();c.translate(fx,fy);c.scale(fl,1) + c.fillStyle='#fff';c.lineWidth=3;for(const d of[-1,1])c.beginPath(),c.ellipse(d*3-1,-8,5,9,d*.5+(i%2?.3:-.3)*d,0,T),c.fill(),c.stroke() + c.fillStyle=FLY;c.lineWidth=3;c.beginPath();c.ellipse(0,0,9,6,0,0,T);c.fill();c.stroke() + c.fillStyle='#fff';c.beginPath();c.arc(6,-1,2.5,0,T);c.fill() + c.restore() +} diff --git a/gen/uicolor/failed/balloon.js b/gen/uicolor/failed/balloon.js new file mode 100644 index 0000000..6c4972d --- /dev/null +++ b/gen/uicolor/failed/balloon.js @@ -0,0 +1,37 @@ +// happy red balloon bobbing, panics, pops into a burst of rubber bits, the sad scrap and its droopy string flop to the ground, then it puffs back up +const{sin,cos,PI,min}=Math,T=2*PI +export const frames=24,delay=80 +const RD='#ff6b6b',BL='#ffa8a8',BY='#ffd43b',TR='#74c0fc' +const E=u=>u<0?0:u>1?1:u*u*(3-2*u) +const two=(c,w,col,f)=>{for(const[l,s]of[[w,'#111'],[w-6,col]])c.lineWidth=l,c.strokeStyle=s,c.beginPath(),f(),c.stroke();c.strokeStyle='#111'} +export default(c,t,i)=>{ + let x=128,y=96,rx=58,ry=68,b=0,m=0,f=0,ph=0 + if(i<9){y=96+4*sin(i/9*T);ph=i/9*T;if(i>6)m=1,x+=i%2?5:-5,rx+=5,ry+=4} + else if(i<19){const q=min(1,((i-9)/4)**2);x=128-24*q;y=100+88*q;rx=52;ry=32;b=.13;m=i<11?1:2;f=q;if(i==13)rx=60,ry=24;if(i==14)rx=49,ry=35} + else{const u=E((i-18)/6);x=104+24*u;y=188-92*u;rx=52+6*u;ry=32+36*u;b=.13*(1-u);m=u<.5?2:0;f=1-u} + const k=rx/58,K=y+ry + if(i==9){c.save();c.translate(128,96);c.beginPath();for(let n=0;n<24;n++){const r=n%2?50:82,a=n*PI/12;c.lineTo(cos(a)*r,sin(a)*r)}c.closePath();c.fillStyle=BY;c.fill();c.stroke();c.restore()} + if(i==10)for(let n=0;n<12;n++){const a=n*T/12+.2;two(c,12,BY,()=>{c.moveTo(128+cos(a)*62,96+sin(a)*62);c.lineTo(128+cos(a)*84,96+sin(a)*84)})} + if(i>6&&i<9)for(const d of[-1,1])two(c,10,'#fff',()=>{for(const o of[-16,16])c.moveTo(x+d*(rx+14),y+o),c.lineTo(x+d*(rx+26),y+o)}) + two(c,9,'#fff',()=>{for(let n=0;n<=14;n++){const u=n/14,ax=x+9*sin(u*5+ph)*u,ay=K+8+u*60,gx=x+8+u*100,gy=K+8+3*sin(u*16)*u;c.lineTo(ax+(gx-ax)*f,ay+(gy-ay)*f)}}) + c.lineWidth=7;c.fillStyle=RD;c.beginPath() + for(let a=0;a14&&i<19){c.fillStyle=TR;c.lineWidth=3/k;const ty=-2+(i-15)*7;c.beginPath();c.moveTo(-18,ty);c.quadraticCurveTo(-11,ty+10,-18,ty+12);c.quadraticCurveTo(-25,ty+10,-18,ty);c.fill();c.stroke()} + c.restore() + if(i>8&&i<13)for(let n=0;n<6;n++){const a=n*T/6+.4,d=60+(i-9)*26;c.save();c.translate(128+cos(a)*d,96+sin(a)*d+(i-9)**2*5);c.rotate(a+i);two(c,10,RD,()=>{c.moveTo(-9,0);c.quadraticCurveTo(-4,-8,1,0);c.quadraticCurveTo(5,7,10,-1)});c.restore()} +} diff --git a/gen/uicolor/favorites/empty.js b/gen/uicolor/favorites/empty.js new file mode 100644 index 0000000..0183a9e --- /dev/null +++ b/gen/uicolor/favorites/empty.js @@ -0,0 +1,13 @@ +// empty dashed star outline waiting to be filled, its dashes marching round as it breathes, sparkles twinkling on and off around it +const{sin,cos,PI,max,hypot}=Math,T=2*PI +export const frames=16,delay=80 +const SY='#ffd43b',R=104,r=46,P=10*hypot(R-r*cos(PI/5),r*sin(PI/5))/20 +const sp=(c,x,y,s)=>{if(s<1.5)return;c.lineWidth=4;c.fillStyle='#fff';c.beginPath();c.moveTo(x,y-s);for(const[px,py,qx,qy]of[[s,0,s*.18,-s*.18],[0,s,s*.18,s*.18],[-s,0,-s*.18,s*.18],[0,-s,-s*.18,-s*.18]])c.quadraticCurveTo(x+qx,y+qy,x+px,y+py);c.fill();c.stroke()} +export default(c,t)=>{ + for(const[x,y,o,s]of[[46,50,0,16],[210,48,.35,14],[30,196,.6,12],[226,196,.15,13],[128,232,.8,11],[128,146,.45,15]])sp(c,x,y,s*max(0,sin(PI*((t*2+o)%1)))) + c.save();c.translate(128,138);const k=1+.04*sin(t*T*2);c.scale(k,k);c.rotate(.04*sin(t*T)) + c.beginPath();for(let n=0;n<10;n++){const q=n%2?r:R,a=n*PI/5-PI/2;c.lineTo(cos(a)*q,sin(a)*q)}c.closePath() + c.setLineDash([P*.55,P*.45]);c.lineDashOffset=-t*P*2 + for(const[w,s]of[[17,'#111'],[8,SY]])c.lineWidth=w,c.strokeStyle=s,c.stroke() + c.restore() +} diff --git a/gen/uicolor/fridge/empty.js b/gen/uicolor/fridge/empty.js new file mode 100644 index 0000000..0a7926f --- /dev/null +++ b/gen/uicolor/fridge/empty.js @@ -0,0 +1,38 @@ +// fridge door swings open to show nothing but one lonely shivering egg, the light inside flickering, then it shuts again +const{sin,cos,PI}=Math,T=2*PI +export const frames=24,delay=90 +const BD='#99e9f2',LN='#e3fafc',LIT='#fff3bf',DIM='#5c6670',SH='#d0ebff',BY='#ffd43b',BL='#ffa8a8',FL='000101110110101111010000' +const E=u=>u<0?0:u>1?1:u*u*(3-2*u) +export default(c,t,i)=>{ + const th=PI*.68*(E((t-.04)/.16)-E((t-.76)/.14)),k=cos(th),op=th>.05,on=op&&FL[i]>0,X=90,W=112 + c.fillStyle='#495057';for(const x of[100,176])c.beginPath(),c.roundRect(x,226,18,16,4),c.fill(),c.stroke() + c.fillStyle=BD;c.beginPath();c.roundRect(X,14,W,220,16);c.fill();c.stroke() + if(op){ + c.fillStyle=on?LIT:DIM;c.beginPath();c.roundRect(96,84,100,142,8);c.fill();c.lineWidth=5;c.stroke() + if(on){c.lineWidth=4;c.fillStyle=BY;c.beginPath();c.arc(146,88,9,0,PI);c.fill();c.stroke() + for(const a of[.5,1.1,PI/2,PI-1.1,PI-.5])for(const[w,s]of[[8,'#111'],[3,BY]])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),c.moveTo(146+cos(a)*16,88+sin(a)*16),c.lineTo(146+cos(a)*24,88+sin(a)*24),c.stroke() + c.strokeStyle='#111'} + c.lineWidth=4;c.fillStyle=SH;for(const y of[132,192])c.beginPath(),c.roundRect(96,y,100,8,3),c.fill(),c.stroke() + const j=i%2?1.5:-1.5 + c.lineWidth=5;c.fillStyle='#fff';c.beginPath();c.ellipse(146+j,170,18,23,0,0,T);c.fill();c.stroke() + c.fillStyle='#fff';c.globalAlpha=.8;c.beginPath();c.ellipse(139+j,160,4,6,-.4,0,T);c.fill();c.globalAlpha=1 + c.fillStyle='#111';for(const d of[-1,1])c.beginPath(),c.arc(146+j+d*7,170,2.8,0,T),c.fill() + c.lineWidth=3;c.beginPath();c.arc(146+j,182,4.5,1.2*PI,1.8*PI);c.stroke() + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(146+j+d*12,177,3.5,2,0,0,T),c.fill() + } + c.lineWidth=7;c.strokeStyle='#111' + const fx=X+W*k,dy=6*sin(th) + c.fillStyle=k>0?BD:LN;c.beginPath();c.moveTo(X,80);c.lineTo(fx,80-dy);c.lineTo(fx,232+dy);c.lineTo(X,232);c.closePath();c.fill();c.stroke() + if(k>.25)for(const[w,s]of[[13,'#111'],[5,'#fff']])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),c.moveTo(X+(W-16)*k,100),c.lineTo(X+(W-16)*k,144),c.stroke() + if(k<-.2){c.lineWidth=4;c.strokeStyle='#111';c.fillStyle=SH;for(const y of[118,176])c.beginPath(),c.moveTo(X,y),c.lineTo(fx+6,y+(y>150?3:-3)*sin(th)),c.lineTo(fx+6,y+20),c.lineTo(X,y+20),c.closePath(),c.fill(),c.stroke()} + c.strokeStyle='#111';c.lineWidth=7;c.beginPath();c.moveTo(X,78);c.lineTo(X+W,78);c.stroke() + for(const[w,s]of[[13,'#111'],[5,'#fff']])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),c.moveTo(186,30),c.lineTo(186,62),c.stroke() + c.strokeStyle='#111';c.fillStyle='#111' + const ly=op?4:0 + for(const d of[-1,1])c.beginPath(),c.arc(146+d*20,44+ly,6,0,T),c.fill() + c.fillStyle='#fff';for(const d of[-1,1])c.beginPath(),c.arc(144+d*20,42+ly,2,0,T),c.fill() + c.lineWidth=4.5;for(const d of[-1,1])c.beginPath(),c.moveTo(146+d*11,30),c.lineTo(146+d*27,34),c.stroke() + c.lineWidth=5;c.beginPath();op?c.ellipse(146,62,5,4,0,0,T):c.arc(146,66,8,1.2*PI,1.8*PI);c.stroke() + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(146+d*36,56,7,4,0,0,T),c.fill() + if(op){c.fillStyle='#a5d8ff';c.lineWidth=3;c.beginPath();c.moveTo(106,32);c.quadraticCurveTo(113,43,106,45);c.quadraticCurveTo(99,43,106,32);c.fill();c.stroke()} +} diff --git a/gen/uicolor/inbox/zero.js b/gen/uicolor/inbox/zero.js new file mode 100644 index 0000000..b26a674 --- /dev/null +++ b/gen/uicolor/inbox/zero.js @@ -0,0 +1,29 @@ +// inbox tray at zero turned into a tiny island: palm tree swaying, a cool sun in shades, the tray smiling with relaxed closed eyes +const{sin,PI}=Math,T=2*PI +export const frames=16,delay=100 +const TY='#b197fc',TD='#7950f2',WA='#74c0fc',SA='#ffe066',TK='#c08457',LF='#51cf66',CO='#8b5a3c',SU='#ffd43b',SR='#ffa94d',BL='#ffa8a8' +export default(c,t)=>{ + c.save();c.translate(204,52+3*sin(t*T));c.save();c.rotate(t*T/8) + c.fillStyle=SR;c.lineWidth=4;for(let k=0;k<8;k++)c.save(),c.rotate(k*PI/4),c.beginPath(),c.roundRect(30,-5,13,10,5),c.fill(),c.stroke(),c.restore() + c.restore();c.fillStyle=SU;c.lineWidth=6;c.beginPath();c.arc(0,0,25,0,T);c.fill();c.stroke() + c.fillStyle='#343a40';c.lineWidth=3;for(const d of[-1,1])c.beginPath(),c.roundRect(d>0?2:-17,-8,15,10,4),c.fill(),c.stroke() + c.beginPath();c.moveTo(-2,-5);c.lineTo(2,-5);c.stroke() + c.lineWidth=3.5;c.beginPath();c.arc(0,6,7,.15*PI,.85*PI);c.stroke() + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(d*15,8,4,2.5,0,0,T),c.fill() + c.restore() + c.lineWidth=7;c.fillStyle=TD;c.beginPath();c.moveTo(54,140);c.lineTo(202,140);c.lineTo(226,172);c.lineTo(30,172);c.closePath();c.fill();c.stroke() + c.fillStyle=WA;c.beginPath();c.moveTo(62,148);c.lineTo(194,148);c.lineTo(212,172);c.lineTo(44,172);c.closePath();c.fill() + c.strokeStyle='#fff';c.lineWidth=4;for(const[x,o]of[[70,0],[184,.5]]){const w=3*sin(t*T*2+o*T);c.beginPath();c.arc(x+w,166,6,PI*1.1,PI*1.9);c.arc(x+12+w,166,6,PI*1.1,PI*1.9);c.stroke()} + c.strokeStyle='#111';c.lineWidth=6;c.fillStyle=SA;c.beginPath();c.ellipse(128,170,50,20,0,PI,T);c.fill();c.stroke() + c.save();c.translate(132,160);c.rotate(.05*sin(t*T)) + for(const[w,s]of[[20,'#111'],[11,TK]])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),c.moveTo(0,0),c.quadraticCurveTo(8,-44,-22,-76),c.stroke() + c.strokeStyle='#111';c.lineWidth=3;c.beginPath();for(const[x,y]of[[1,-16],[2,-34],[-4,-52]])c.moveTo(x-6,y+1),c.lineTo(x+5,y-1);c.stroke() + c.translate(-22,-78) + ;[-2.75,-2.15,-1.35,-.65,-.05].forEach((a,k)=>{c.save();c.rotate(a+.09*sin(t*T*2+k));c.fillStyle=LF;c.lineWidth=5;c.beginPath();c.moveTo(0,0);c.quadraticCurveTo(28,-20,58,4);c.quadraticCurveTo(44,0,40,10);c.quadraticCurveTo(34,0,26,6);c.quadraticCurveTo(14,-4,0,0);c.fill();c.stroke();c.restore()}) + c.fillStyle=CO;c.lineWidth=4;for(const[x,y]of[[-6,8],[7,9]])c.beginPath(),c.arc(x,y,7,0,T),c.fill(),c.stroke() + c.restore() + c.lineWidth=7;c.fillStyle=TY;c.beginPath();c.moveTo(30,172);c.lineTo(82,172);c.lineTo(94,190);c.lineTo(162,190);c.lineTo(174,172);c.lineTo(226,172);c.lineTo(212,232);c.lineTo(44,232);c.closePath();c.fill();c.stroke() + c.lineWidth=5;for(const d of[-1,1])c.beginPath(),c.arc(128+d*24,212,7,1.15*PI,1.85*PI),c.stroke() + c.beginPath();c.arc(128,214,8,.15*PI,.85*PI);c.stroke() + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*44,218,8,5,0,0,T),c.fill() +} diff --git a/gen/uicolor/jar/empty.js b/gen/uicolor/jar/empty.js new file mode 100644 index 0000000..daa3b7d --- /dev/null +++ b/gen/uicolor/jar/empty.js @@ -0,0 +1,26 @@ +// glass cookie jar with nothing but crumbs at the bottom, its lid rattling and hopping, the jar peering down sadly +const{sin,cos,PI,abs}=Math,T=2*PI +export const frames=16,delay=70 +const GL='#e7f5ff',GS='#a5d8ff',LD='#ff8787',LK='#ffd43b',CR='#e0a96d',CH='#8b5a3c',BL='#ffa8a8' +const CB=[[84,224,8],[104,229,6],[122,225,9],[146,229,6],[164,224,8],[182,229,5],[134,231,4],[94,231,4]] +const body=c=>{c.beginPath();c.moveTo(74,96);c.quadraticCurveTo(48,100,48,132);c.lineTo(48,208);c.quadraticCurveTo(48,236,76,236);c.lineTo(180,236);c.quadraticCurveTo(208,236,208,208);c.lineTo(208,132);c.quadraticCurveTo(208,100,182,96);c.closePath()} +export default(c,t,i)=>{ + const h=abs(sin(t*T*2)),ly=-14*h,lr=.13*sin(t*T*6)*h,sh=(i%2?1.5:-1.5)*h + c.translate(sh,0) + body(c);c.fillStyle=GL;c.fill() + CB.forEach(([x,y,r],k)=>{const dy=-4*h*abs(sin(k*1.7+t*T*4));c.save();c.translate(x,y+dy);c.rotate(k+dy/4);c.fillStyle=CR;c.lineWidth=3;c.beginPath();for(let n=0;n<6;n++){const a=n*T/6,q=r*(n%2?.75:1);c.lineTo(cos(a)*q,sin(a)*q)}c.closePath();c.fill();c.stroke();if(r>6)c.fillStyle=CH,c.beginPath(),c.arc(1,-1,2,0,T),c.fill();c.restore()}) + c.lineWidth=7;body(c);c.stroke() + c.strokeStyle='#fff';c.lineWidth=8;c.beginPath();c.moveTo(66,128);c.lineTo(66,196);c.stroke();c.lineWidth=6;c.beginPath();c.moveTo(66,210);c.lineTo(66,214);c.stroke() + c.strokeStyle='#111';c.fillStyle=GS;c.lineWidth=6;c.beginPath();c.roundRect(68,78,120,22,8);c.fill();c.stroke() + c.fillStyle='#111';for(const d of[-1,1])c.beginPath(),c.arc(128+d*24,146,6.5,0,T),c.fill() + c.fillStyle='#fff';for(const d of[-1,1])c.beginPath(),c.arc(126+d*24,148,2.2,0,T),c.fill() + c.lineWidth=4.5;for(const d of[-1,1])c.beginPath(),c.moveTo(128+d*14,128),c.lineTo(128+d*32,133),c.stroke() + c.lineWidth=5;c.beginPath();c.arc(128,176,11,1.2*PI,1.8*PI);c.stroke() + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*44,162,8,5,0,0,T),c.fill() + c.save();c.translate(128,70+ly);c.rotate(lr) + c.fillStyle=LD;c.lineWidth=7;c.beginPath();c.roundRect(-16,-38,32,22,10);c.fill();c.stroke() + c.beginPath();c.roundRect(-70,-22,140,30,13);c.fill();c.stroke() + c.fillStyle=LK;c.lineWidth=4;c.beginPath();c.arc(0,-28,4.5,0,T);c.fill();c.stroke() + c.strokeStyle='#fff';c.lineWidth=5;c.beginPath();c.moveTo(-54,-12);c.lineTo(-30,-12);c.stroke();c.restore() + if(h>.5)for(const d of[-1,1])for(const[w,s]of[[10,'#111'],[4,'#fff']])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),c.moveTo(128+d*82,56+ly),c.lineTo(128+d*96,48+ly),c.moveTo(128+d*84,70+ly),c.lineTo(128+d*100,70+ly),c.stroke() +} diff --git a/gen/uicolor/loading/candy.js b/gen/uicolor/loading/candy.js new file mode 100644 index 0000000..c5ce586 --- /dev/null +++ b/gen/uicolor/loading/candy.js @@ -0,0 +1,31 @@ +// a wrapped candy as a progress bar: peppermint stripes scroll in and fill it up, a shine sweeps across when it's full, then it drains and starts again +const{sin,PI,min,max}=Math,T=2*PI +export const frames=24,delay=70 +const ST='#f06595',TK='#ffdeeb',WR='#ffd43b',WD='#fab005' +const L=58,R=198,Y=128,H=42 +const pill=c=>{c.beginPath();c.roundRect(L,Y-H,R-L,H*2,H)} +const spark=(c,x,y,s)=>{c.lineWidth=4;c.fillStyle='#fff';c.beginPath();c.moveTo(x,y-s);for(const[px,py,qx,qy]of[[s,0,s*.2,-s*.2],[0,s,s*.2,s*.2],[-s,0,-s*.2,s*.2],[0,-s,-s*.2,-s*.2]])c.quadraticCurveTo(x+qx,y+qy,x+px,y+py);c.fill();c.stroke()} +const ss=x=>x<=0?0:x>=1?1:x*x*(3-2*x) +export default(c,t)=>{ + const f=ss(t/.66),d=ss((t-.86)/.14),x0=L+(R-L)*d,x1=L+(R-L)*f,sh=(t-.68)/.14 + for(const s of[-1,1]){ + c.save();c.translate(128,Y);c.scale(s,1);c.translate(-128,-Y) + const w=3*sin(T*t*2),P=[[16,Y-46],[28,Y-30],[12,Y-14],[26,Y],[12,Y+14],[28,Y+30],[16,Y+46]].map(([x,y])=>[x-w,y]) + c.fillStyle=WR;c.beginPath();c.moveTo(L-6,Y-12);P.forEach(([x,y])=>c.lineTo(x,y));c.lineTo(L-6,Y+12);c.closePath();c.fill();c.stroke() + c.strokeStyle=WD;c.lineWidth=4;for(const k of[0,2,4,6])c.beginPath(),c.moveTo(L-14,Y+(k-3)*3),c.lineTo(P[k][0]+8,P[k][1]+(3-k)*1.5),c.stroke() + c.strokeStyle='#111';c.fillStyle=WD;c.lineWidth=6;c.beginPath();c.roundRect(L-16,Y-15,22,30,9);c.fill();c.stroke() + c.restore();c.lineWidth=7 + } + c.fillStyle=TK;pill(c);c.fill() + c.save();pill(c);c.clip() + if(x1>x0+.5){ + c.beginPath();c.rect(x0,0,x1-x0,256);c.clip();c.fillStyle='#fff';c.fillRect(0,0,256,256) + c.fillStyle=ST;const o=t*2*40;for(let x=L-80+o%40;x0&&sh<1){const gx=L-30+(R-L+60)*sh;c.fillStyle='#fff';c.beginPath();c.moveTo(gx,Y-H);c.lineTo(gx+22,Y-H);c.lineTo(gx-2,Y+H);c.lineTo(gx-24,Y+H);c.closePath();c.fill()} + c.restore() + c.strokeStyle='#fff';c.lineWidth=7;c.beginPath();c.moveTo(L+28,Y-26);c.lineTo(R-34,Y-26);c.stroke() + c.strokeStyle='#111';c.lineWidth=7;pill(c);c.stroke() + if(t>.66&&t<.88)for(const[x,y,o]of[[84,56,0],[178,54,.4],[124,206,.2],[206,198,.6]]){const s=12*sin(PI*min(1,max(0,(t-.66)/.22*1.4-o*.4)));if(s>1.5)spark(c,x,y,s)} +} diff --git a/gen/uicolor/loading/cat.js b/gen/uicolor/loading/cat.js new file mode 100644 index 0000000..a55cc1b --- /dev/null +++ b/gen/uicolor/loading/cat.js @@ -0,0 +1,26 @@ +// orange tabby curled in a ring chasing its own tail round and round like a spinner, paws scrabbling, eyes locked on the tail tip +const{sin,cos,PI,atan2}=Math,T=2*PI +export const frames=16,delay=60 +const OR='#ffa94d',OD='#f08c00',PK='#ffc9c9',BL='#ff8787',X=128,Y=134,R=58 +const at=(a,r=R)=>[X+cos(a)*r,Y+sin(a)*r] +export default(c,t,i)=>{ + const h=t*T,tail=[];for(let s=0;s<=1.001;s+=.1){const a=h-3.3-s*1.9,r=R+8*sin(s*PI)+6*s*sin(T*t*4+s*3);tail.push(at(a,r))} + const line=(pts,w,col)=>{c.lineWidth=w;c.strokeStyle=col;c.beginPath();pts.forEach(([x,y])=>c.lineTo(x,y));c.stroke()} + const tp=tail.at(-1) + line(tail,34,'#111');line(tail,20,OR);line(tail.slice(-3),20,'#fff') + for(const[a,ph]of[[h-.75,0],[h-3.1,PI]])for(const s of[-1,1]){const q=a+.22*sin(T*t*4+ph+(s>0?0:PI)),[x,y]=at(q,R+s*26);c.fillStyle='#fff';c.lineWidth=5;c.strokeStyle='#111';c.beginPath();c.ellipse(x,y,11,8,q,0,T);c.fill();c.stroke()} + c.strokeStyle='#111';c.lineWidth=54;c.beginPath();c.arc(X,Y,R,h-3.3,h-.2);c.stroke() + c.lineWidth=40;c.strokeStyle=OR;c.beginPath();c.arc(X,Y,R,h-3.3,h-.2);c.stroke() + c.lineWidth=6;c.strokeStyle=OD;for(let k=0;k<4;k++){const a=h-1.3-k*.52;c.beginPath();c.moveTo(...at(a-.08,R-14));c.lineTo(...at(a,R+14));c.stroke()} + const[hx,hy]=at(h,R+2),d=atan2(tp[1]-hy,tp[0]-hx),ex=4*cos(d),ey=4*sin(d) + c.strokeStyle='#111';c.lineWidth=7 + for(const s of[-1,1]){c.fillStyle=OR;c.beginPath();c.moveTo(hx+s*28,hy-6);c.lineTo(hx+s*24,hy-44);c.lineTo(hx+s*4,hy-26);c.closePath();c.fill();c.stroke();c.fillStyle=PK;c.beginPath();c.moveTo(hx+s*22,hy-14);c.lineTo(hx+s*22,hy-34);c.lineTo(hx+s*12,hy-24);c.closePath();c.fill()} + c.fillStyle=OR;c.beginPath();c.ellipse(hx,hy,34,29,0,0,T);c.fill();c.stroke() + c.lineWidth=4;c.strokeStyle=OD;for(const s of[-1,0,1])c.beginPath(),c.moveTo(hx+s*9,hy-27),c.lineTo(hx+s*7,hy-17),c.stroke() + c.fillStyle='#fff';c.beginPath();c.ellipse(hx,hy+12,14,10,0,0,T);c.fill() + c.fillStyle='#111';for(const s of[-1,1])c.beginPath(),c.arc(hx+s*14+ex,hy-1+ey,5.5,0,T),c.fill() + c.fillStyle='#fff';for(const s of[-1,1])c.beginPath(),c.arc(hx+s*14+ex-2,hy-3+ey,2,0,T),c.fill() + c.fillStyle='#ff8fab';c.beginPath();c.moveTo(hx-4,hy+6);c.lineTo(hx+4,hy+6);c.lineTo(hx,hy+10);c.closePath();c.fill() + c.strokeStyle='#111';c.lineWidth=3;c.beginPath();c.moveTo(hx-7,hy+13);c.quadraticCurveTo(hx-3.5,hy+17,hx,hy+12);c.quadraticCurveTo(hx+3.5,hy+17,hx+7,hy+13);c.stroke() + c.fillStyle=BL;for(const s of[-1,1])c.beginPath(),c.ellipse(hx+s*24,hy+9,6,3.5,0,0,T),c.fill() +} diff --git a/gen/uicolor/loading/coffee.js b/gen/uicolor/loading/coffee.js new file mode 100644 index 0000000..aa90e2b --- /dev/null +++ b/gen/uicolor/loading/coffee.js @@ -0,0 +1,33 @@ +// smiling coffee machine drips coffee into a glass mug that fills up bit by bit, steams when full, then empties to brew again +const{sin,PI,min}=Math,T=2*PI +export const frames=24,delay=80 +const BO='#ff8787',BD='#fa5252',RC='#495057',GL='#d0ebff',CO='#a9744f',CR='#e8b27a',BL='#ffc9c9',ME='#ced4da' +const ss=x=>x<=0?0:x>=1?1:x*x*(3-2*x) +export default(c,t)=>{ + const f=ss(t/.74)-ss((t-.88)/.12),lv=204-8-62*f,brew=t<.76 + c.fillStyle=BO;c.beginPath();c.roundRect(34,14,188,226,24);c.fill();c.stroke() + c.fillStyle=RC;c.beginPath();c.roundRect(56,88,144,124,[10,10,4,4]);c.fill();c.lineWidth=5;c.stroke() + c.fillStyle=ME;c.beginPath();c.moveTo(112,86);c.lineTo(144,86);c.lineTo(136,104);c.lineTo(120,104);c.closePath();c.fill();c.stroke() + c.fillStyle=ME;c.beginPath();c.roundRect(48,208,160,16,6);c.fill();c.stroke() + c.lineWidth=3;for(let x=64;x<200;x+=16)c.beginPath(),c.moveTo(x,212),c.lineTo(x,220),c.stroke() + c.lineWidth=7 + for(const[w,s]of[[22,'#111'],[10,GL]])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),c.moveTo(166,146),c.bezierCurveTo(194,144,194,190,164,188),c.stroke() + c.strokeStyle='#111';c.lineWidth=7 + const mug=()=>{c.beginPath();c.roundRect(86,128,82,78,[4,4,16,16])} + c.fillStyle=GL;mug();c.fill() + c.save();mug();c.clip() + if(f>.01){c.fillStyle=CO;c.fillRect(80,lv,96,90);c.fillStyle=CR;c.beginPath();c.ellipse(127,lv,46,4+2*sin(T*t*4),0,0,T);c.fill()} + c.strokeStyle='#fff';c.lineWidth=7;c.beginPath();c.moveTo(100,142);c.lineTo(100,174);c.stroke() + c.restore();mug();c.stroke() + if(brew)for(let k=0;k<4;k++){const p=(t*8+k/4)%1,y=106+p*(lv-106);if(y.76&&t<.92 + if(t>.7&&t<.94)for(let k=0;k<2;k++){const a=min(1,(t-.7)/.08)*min(1,(.94-t)/.06),pts=[];for(let s=0;s<=1;s+=.125)pts.push([116+k*24+5*sin(T*(s-t*2)+k*2),122-26*s*a]);c.strokeStyle='#fff';c.lineWidth=5;c.beginPath();pts.forEach(([x,y])=>c.lineTo(x,y));c.stroke()} + c.strokeStyle='#111' + if(happy){c.lineWidth=5;for(const d of[-1,1])c.beginPath(),c.arc(128+d*26,54,7,PI*1.15,PI*1.85),c.stroke()} + else{c.fillStyle='#111';for(const d of[-1,1])c.beginPath(),c.arc(128+d*26,50,6.5,0,T),c.fill();c.fillStyle='#fff';for(const d of[-1,1])c.beginPath(),c.arc(128+d*26-2,48,2.3,0,T),c.fill()} + c.lineWidth=5;c.beginPath();c.arc(128,58,happy?11:8,.15*PI,.85*PI);c.stroke() + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*48,62,9,5,0,0,T),c.fill() + c.lineWidth=4;c.fillStyle=brew&&Math.floor(t*12)%2?'#ffd43b':'#69db7c';c.beginPath();c.arc(196,36,7,0,T);c.fill();c.stroke() + c.fillStyle='#fff';c.beginPath();c.arc(60,36,7,0,T);c.fill();c.stroke() +} diff --git a/gen/uicolor/loading/gummies.js b/gen/uicolor/loading/gummies.js new file mode 100644 index 0000000..268963d --- /dev/null +++ b/gen/uicolor/loading/gummies.js @@ -0,0 +1,24 @@ +// three gummy bears, red, yellow and green, hopping one after another in a wave like a loading dots row +const{sin,PI,max}=Math,T=2*PI +export const frames=16,delay=70 +const B=[['#ff6b6b','#ffa8a8'],['#ffd43b','#fff3bf'],['#69db7c','#b2f2bb']],BL='#ff8787' +const shapes=c=>[()=>c.ellipse(-14,-12,12,13,0,0,T),()=>c.ellipse(14,-12,12,13,0,0,T),()=>c.ellipse(-25,-44,10,14,.5,0,T),()=>c.ellipse(25,-44,10,14,-.5,0,T),()=>c.ellipse(0,-36,26,29,0,0,T),()=>c.arc(-18,-96,10,0,T),()=>c.arc(18,-96,10,0,T),()=>c.arc(0,-76,25,0,T)] +export default(c,t)=>{ + B.forEach(([col,lt],k)=>{ + const h=max(0,sin(T*(t-k*.16))),y=-50*h**.8,sq=h<.15?1-(.15-h)*.8:1+.06*h*(1-h)*4 + c.save();c.translate(48+k*80,214);c.scale(2-sq,sq);c.translate(0,y/sq);c.scale(1.04,1.04) + const S=shapes(c) + c.fillStyle='#111';for(const f of S)c.beginPath(),f(),c.lineWidth=14,c.strokeStyle='#111',c.stroke() + c.fillStyle=col;for(const f of S)c.beginPath(),f(),c.fill() + c.fillStyle=lt;c.beginPath();c.ellipse(0,-32,15,17,0,0,T);c.fill();c.beginPath();c.ellipse(0,-68,12,8,0,0,T);c.fill() + for(const d of[-1,1])c.beginPath(),c.arc(d*18,-96,4.5,0,T),c.fill() + c.strokeStyle='#111';c.lineWidth=3;c.beginPath();c.moveTo(-6,-22);c.quadraticCurveTo(-8,-12,-14,-6);c.moveTo(6,-22);c.quadraticCurveTo(8,-12,14,-6);c.stroke() + c.fillStyle='#111';for(const d of[-1,1])c.beginPath(),c.arc(d*10,-80,4,0,T),c.fill() + c.fillStyle='#fff';for(const d of[-1,1])c.beginPath(),c.arc(d*10-1.5,-81.5,1.5,0,T),c.fill() + c.fillStyle='#111';c.beginPath();c.ellipse(0,-71,4,3,0,0,T);c.fill() + c.lineWidth=3;c.beginPath();c.moveTo(-5,-65);c.quadraticCurveTo(-2.5,-62,0,-66);c.quadraticCurveTo(2.5,-62,5,-65);c.stroke() + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(d*17,-70,4.5,2.8,0,0,T),c.fill() + c.strokeStyle='#fff';c.lineWidth=5;c.beginPath();c.arc(0,-76,18,PI*1.15,PI*1.4);c.stroke();c.beginPath();c.arc(0,-36,20,PI*1.05,PI*1.3);c.stroke() + c.restore() + }) +} diff --git a/gen/uicolor/loading/microwave.js b/gen/uicolor/loading/microwave.js new file mode 100644 index 0000000..0635997 --- /dev/null +++ b/gen/uicolor/loading/microwave.js @@ -0,0 +1,39 @@ +// mint microwave humming away: light on inside, a smiling soup bowl turning round on the spinning plate, the green timer glowing and counting down +const{sin,cos,PI,floor}=Math,T=2*PI +export const frames=20,delay=90 +const BO='#63e6be',BD='#20c997',IN='#fff3bf',BW='#ff8787',SO='#ffd43b',DS='#343a40',GG='#2f9e44',GB='#b2f2bb',BL='#ffa8a8' +const SEG=[63,6,91,79,102,109,125,7,127,111] +const digit=(c,n,x,y,w=11,h=20)=>{const P=[[0,0,w,0],[w,0,w,h/2],[w,h/2,w,h],[0,h,w,h],[0,h/2,0,h],[0,0,0,h/2],[0,h/2,w,h/2]];c.beginPath();P.forEach(([a,b,e,f],k)=>{if(SEG[n]>>k&1)c.moveTo(x+a,y+b),c.lineTo(x+e,y+f)})} +export default(c,t,i)=>{ + const th=t*T,PX=98,PY=162 + c.fillStyle=BD;for(const x of[44,196])c.beginPath(),c.roundRect(x-14,200,28,22,8),c.fill(),c.stroke() + c.fillStyle=BO;c.beginPath();c.roundRect(14,44,228,166,24);c.fill();c.stroke() + c.fillStyle=BD;c.beginPath();c.roundRect(28,58,144,138,16);c.fill();c.lineWidth=5;c.stroke() + const win=()=>{c.beginPath();c.roundRect(40,70,118,114,10)} + c.fillStyle=IN;win();c.fill() + c.save();win();c.clip() + c.fillStyle='#ffe066';c.beginPath();c.ellipse(99,70,44,16,0,0,T);c.fill() + c.fillStyle='#fff';c.beginPath();c.ellipse(PX,PY,46,12,0,0,T);c.fill();c.lineWidth=5;c.stroke() + c.fillStyle='#dee2e6';for(let k=0;k<6;k++){const a=th+k*T/6;if(sin(a)>0)continue;c.beginPath();c.arc(PX+cos(a)*36,PY+sin(a)*8,2.6,0,T);c.fill()} + const by=PY-6 + c.fillStyle=BW;c.lineWidth=6;c.beginPath();c.ellipse(PX,by-32,32,8,0,0,PI,true);c.ellipse(PX,by-32,32,34,0,0,PI);c.fill();c.stroke() + c.save();c.beginPath();c.ellipse(PX,by-32,32,34,0,0,PI);c.clip() + for(const[o,face]of[[0,1],[PI,0]]){const a=th+o,cx=PX+22*sin(a),k=cos(a);if(k<.05)continue + c.save();c.translate(cx,by-11);c.scale(k,1) + if(face){c.fillStyle='#111';for(const d of[-1,1])c.beginPath(),c.arc(d*9,-4,3.5,0,T),c.fill();c.fillStyle='#fff';for(const d of[-1,1])c.beginPath(),c.arc(d*9-1.2,-5.2,1.3,0,T),c.fill();c.strokeStyle='#111';c.lineWidth=3;c.beginPath();c.arc(0,0,4.5,.15*PI,.85*PI);c.stroke();c.fillStyle='#ffc9c9';for(const d of[-1,1])c.beginPath(),c.ellipse(d*16,1,4,2.5,0,0,T),c.fill()} + else{c.fillStyle='#fff';c.beginPath();c.moveTo(0,6);c.bezierCurveTo(-12,-2,-7,-11,0,-5);c.bezierCurveTo(7,-11,12,-2,0,6);c.fill()} + c.restore()} + c.restore() + c.fillStyle=SO;c.beginPath();c.ellipse(PX,by-32,27,6,0,0,T);c.fill();c.lineWidth=4;c.stroke() + c.lineWidth=6;c.beginPath();c.ellipse(PX,by-32,32,8,0,0,T);c.stroke() + for(let k=0;k<2;k++){const pts=[];for(let s=0;s<=1;s+=.125)pts.push([PX-10+k*20+4*sin(T*(s-t*2)+k*2),by-46-30*s]);for(const[w,st]of[[9,'#111'],[4,'#fff']]){c.lineWidth=w;c.strokeStyle=st;c.beginPath();pts.forEach(([x,y])=>c.lineTo(x,y));c.stroke()}} + c.strokeStyle='#fff';c.lineWidth=7;c.beginPath();c.moveTo(52,92);c.lineTo(62,82);c.moveTo(52,108);c.lineTo(76,84);c.stroke() + c.restore();c.strokeStyle='#111';c.lineWidth=6;win();c.stroke() + c.lineWidth=7;c.fillStyle=DS;c.beginPath();c.roundRect(180,64,50,34,8);c.fill();c.stroke() + const n=20-i;for(const[w,col]of[[7,GG],[3.5,GB]]){c.lineWidth=w;c.strokeStyle=col;digit(c,floor(n/10),189,71);c.stroke();digit(c,n%10,210,71);c.stroke()} + c.strokeStyle='#111';c.lineWidth=4 + for(let r=0;r<2;r++)for(let q=0;q<3;q++){c.fillStyle=['#fff','#ffd43b','#ff8787'][q];c.beginPath();c.roundRect(182+q*16,110+r*18,12,12,4);c.fill();c.stroke()} + c.lineWidth=6;c.fillStyle='#fff';c.beginPath();c.arc(205,170,16,0,T);c.fill();c.stroke() + c.save();c.translate(205,170);c.rotate(-th);c.lineWidth=5;c.beginPath();c.moveTo(0,0);c.lineTo(0,-10);c.stroke();c.restore() + c.fillStyle='#fff';c.lineWidth=5;c.beginPath();c.roundRect(160,84,10,90,5);c.fill();c.stroke() +} diff --git a/gen/uicolor/loading/pinwheel.js b/gen/uicolor/loading/pinwheel.js new file mode 100644 index 0000000..f4e67d5 --- /dev/null +++ b/gen/uicolor/loading/pinwheel.js @@ -0,0 +1,21 @@ +// four-color paper pinwheel whirling round on its stick in the breeze, little wind swooshes blowing past +const{sin,cos,PI}=Math,T=2*PI +export const frames=16,delay=60 +const C=['#ff6b6b','#ffd43b','#4dabf7','#69db7c'],L=['#ffa8a8','#fff3bf','#a5d8ff','#b2f2bb'],X=128,Y=106,R=88,BL='#ffa8a8' +const p=(a,r)=>[cos(a)*r,sin(a)*r] +export default(c,t)=>{ + for(const[y,o,w]of[[178,0,50],[206,.5,58]]){const q=(t+o)%1,x=16+q*40,a=sin(PI*q) + if(a>.15)for(const[lw,st]of[[11,'#111'],[5,'#fff']]){c.lineWidth=lw;c.strokeStyle=st;c.beginPath();c.moveTo(x,y);c.quadraticCurveTo(x+w*a*.5,y-6*a,x+w*a,y);c.stroke()}} + c.strokeStyle='#111' + for(const[w,s]of[[22,'#111'],[10,'#e8a15a']])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),c.moveTo(X,Y),c.lineTo(X,240),c.stroke() + c.strokeStyle='#111';c.lineWidth=7 + c.save();c.translate(X,Y);const rot=-t*T + for(let k=0;k<4;k++){const a=rot+k*PI/2 + c.fillStyle=C[k];c.beginPath();c.moveTo(0,0);c.lineTo(...p(a,R));c.quadraticCurveTo(...p(a+1.2,R*1.02),...p(a+PI/2,R*.4));c.closePath();c.fill();c.stroke() + c.fillStyle=L[k];c.lineWidth=5;c.beginPath();c.moveTo(0,0);c.lineTo(...p(a,R-6));c.quadraticCurveTo(...p(a+.55,R*.62),...p(a+.85,R*.26));c.closePath();c.fill();c.stroke();c.lineWidth=7} + c.restore() + c.fillStyle='#fff';c.beginPath();c.arc(X,Y,20,0,T);c.fill();c.stroke() + c.fillStyle='#111';for(const d of[-1,1])c.beginPath(),c.arc(X+d*7,Y-2,3.5,0,T),c.fill() + c.lineWidth=3.5;c.beginPath();c.arc(X,Y+3,4.5,.15*PI,.85*PI);c.stroke() + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(X+d*12,Y+5,3.5,2.2,0,0,T),c.fill() +} diff --git a/gen/uicolor/loading/pizza.js b/gen/uicolor/loading/pizza.js new file mode 100644 index 0000000..c76cd86 --- /dev/null +++ b/gen/uicolor/loading/pizza.js @@ -0,0 +1,29 @@ +// pizza progress circle: slices pop onto the plate one by one clockwise until the pie is whole and smiling with sparkles, then all the slices shrink away to load again +const{sin,cos,PI,min,max}=Math,T=2*PI +export const frames=24,delay=80 +const CR='#e8a15a',CH='#ffd43b',PP='#fa5252',PR='#a5d8ff',X=128,Y=128,R=92 +const ss=x=>x<=0?0:x>=1?1:x*x*(3-2*x) +const back=p=>p<=0?0:p>=1?1:1+2.7*(p-1)**3+1.7*(p-1)**2 +export default(c,t)=>{ + const out=1-ss((t-.86)/.1) + c.fillStyle=PR;c.beginPath();c.arc(X,Y,112,0,T);c.fill();c.stroke() + c.fillStyle='#fff';c.beginPath();c.arc(X,Y,100,0,T);c.fill();c.lineWidth=4;c.stroke() + c.strokeStyle='#ced4da';c.lineWidth=4;c.setLineDash([6,8]);for(let k=0;k<8;k++){const a=-PI/2+k*PI/4;c.beginPath();c.moveTo(X+cos(a)*14,Y+sin(a)*14);c.lineTo(X+cos(a)*R,Y+sin(a)*R);c.stroke()} + c.beginPath();c.arc(X,Y,R-2,0,T);c.stroke();c.setLineDash([]);c.strokeStyle='#111' + for(let k=0;k<8;k++){ + const s=back((t-k/12)/.08)*out;if(s<.02)continue + const a0=-PI/2+k*PI/4,a1=a0+PI/4,m=(a0+a1)/2,cx=X+cos(m)*(48+3),cy=Y+sin(m)*(48+3) + c.save();c.translate(cx,cy);c.scale(s,s);c.translate(-cx,-cy);c.translate(cos(m)*3,sin(m)*3) + c.lineWidth=6;c.fillStyle=CR;c.beginPath();c.moveTo(X,Y);c.arc(X,Y,R,a0,a1);c.closePath();c.fill();c.stroke() + c.fillStyle=CH;c.beginPath();c.moveTo(X,Y);c.arc(X,Y,R-16,a0+.03,a1-.03);c.closePath();c.fill() + c.lineWidth=4;c.fillStyle=PP;for(const[r,o]of[[62,-.13],[40,.12]]){const a=m+o;c.beginPath();c.arc(X+cos(a)*r,Y+sin(a)*r,8,0,T);c.fill();c.stroke()} + c.restore() + } + const f=t>.72&&t<.86 + if(f){c.fillStyle=CH;c.beginPath();c.arc(X,Y,27,0,T);c.fill() + c.fillStyle='#111';for(const d of[-1,1])c.beginPath(),c.arc(X+d*11,Y-4,5,0,T),c.fill() + c.fillStyle='#fff';for(const d of[-1,1])c.beginPath(),c.arc(X+d*11-1.6,Y-5.6,1.8,0,T),c.fill() + c.lineWidth=4;c.beginPath();c.arc(X,Y+3,7,.15*PI,.85*PI);c.stroke() + c.fillStyle='#ff8787';for(const d of[-1,1])c.beginPath(),c.ellipse(X+d*19,Y+5,5,3,0,0,T),c.fill()} + if(t>.68&&t<.9)for(const[x,y,o]of[[26,30,0],[230,30,.3],[22,66,.45],[234,66,.15]]){const q=(t-.68)/.22*1.5-o,z=12*sin(PI*min(1,max(0,q)));if(z>1.5){c.lineWidth=4;c.fillStyle='#fff';c.beginPath();c.moveTo(x,y-z);for(const[px,py,qx,qy]of[[z,0,z*.2,-z*.2],[0,z,z*.2,z*.2],[-z,0,-z*.2,z*.2],[0,-z,-z*.2,-z*.2]])c.quadraticCurveTo(x+qx,y+qy,x+px,y+py);c.fill();c.stroke()}} +} diff --git a/gen/uicolor/loading/rainbow.js b/gen/uicolor/loading/rainbow.js new file mode 100644 index 0000000..8d5a78b --- /dev/null +++ b/gen/uicolor/loading/rainbow.js @@ -0,0 +1,25 @@ +// rainbow loader between two smiling clouds: the empty arch fills in band by band from red to violet, sparkles when complete, then wipes clear to start over +const{sin,PI,min,max}=Math,T=2*PI +export const frames=24,delay=80 +const C=['#ff6b6b','#ffa94d','#ffd43b','#69db7c','#4dabf7','#b197fc'],X=128,Y=182,RO=114,RI=42,BW=(RO-RI)/6 +const cloud=(c,x,y)=>{ + const P=[[x-20,y+2,16],[x+2,y-10,21],[x+22,y+2,15]],base=()=>c.roundRect(x-36,y,72,24,12) + c.lineWidth=14;c.strokeStyle='#111';for(const[a,b,r]of P)c.beginPath(),c.arc(a,b,r,0,T),c.stroke();c.beginPath();base();c.stroke() + c.fillStyle='#fff';for(const[a,b,r]of P)c.beginPath(),c.arc(a,b,r,0,T),c.fill();c.beginPath();base();c.fill() + c.fillStyle='#111';for(const d of[-1,1])c.beginPath(),c.arc(x+2+d*9,y+6,3,0,T),c.fill() + c.lineWidth=3;c.beginPath();c.arc(x+2,y+10,4.5,.15*PI,.85*PI);c.stroke() + c.fillStyle='#ffc9c9';for(const d of[-1,1])c.beginPath(),c.ellipse(x+2+d*18,y+11,4,2.5,0,0,T),c.fill();c.lineWidth=7 +} +const spark=(c,x,y,s)=>{c.lineWidth=4;c.fillStyle='#fff';c.beginPath();c.moveTo(x,y-s);for(const[px,py,qx,qy]of[[s,0,s*.2,-s*.2],[0,s,s*.2,s*.2],[-s,0,-s*.2,s*.2],[0,-s,-s*.2,-s*.2]])c.quadraticCurveTo(x+qx,y+qy,x+px,y+py);c.fill();c.stroke()} +export default(c,t)=>{ + const q=max(0,min(1,(t-.8)/.14)) + c.fillStyle='#fff';c.beginPath();c.arc(X,Y,RO,PI,0);c.arc(X,Y,RI,0,PI,true);c.closePath();c.fill() + c.lineCap='butt' + C.forEach((col,k)=>{const p=max(0,min(1,(t-k*.1)/.12)),a0=PI+PI*q,a1=PI+PI*p;if(a1>a0+.01){c.strokeStyle=col;c.lineWidth=BW+.8;c.beginPath();c.arc(X,Y,RO-BW*(k+.5),a0,a1);c.stroke()}}) + c.lineCap='round';c.strokeStyle='#111';c.lineWidth=7 + c.beginPath();c.arc(X,Y,RO,PI,0);c.arc(X,Y,RI,0,PI,true);c.closePath();c.stroke() + const h0=PI*max(1.1,1+q),h1=PI*min(1.3,1+min(1,t/.12));c.strokeStyle='#fff';c.lineWidth=5;if(h1>h0+.05)c.beginPath(),c.arc(X,Y,RO-7,h0,h1),c.stroke() + c.strokeStyle='#111' + if(t>.68&&t<.84)for(const[x,y,o]of[[128,40,0],[40,72,.33],[216,72,.66]]){const s=13*sin(PI*((t-.68)/.16));if(s>1.5)spark(c,x,y,s*1.2*(1-o*.3))} + cloud(c,X-(RO+RI)/2,Y+4+Math.round(2*sin(T*t)));cloud(c,X+(RO+RI)/2,Y+4+Math.round(2*sin(T*t+PI))) +} diff --git a/gen/uicolor/loading/snail.js b/gen/uicolor/loading/snail.js new file mode 100644 index 0000000..b99f2e3 --- /dev/null +++ b/gen/uicolor/loading/snail.js @@ -0,0 +1,39 @@ +// a snail slowly crawls along a progress bar dragging the slimy fill along behind it, at the end it ducks into its shell and rolls back to the start +const{sin,cos,PI,min,max}=Math,T=2*PI +export const frames=24,delay=90 +const SH='#b197fc',SD='#7950f2',BD='#ffd8a8',FL='#63e6be',BL='#ff8787' +const GY=170,L=14,R=242,K=1.34,XA=L+56*K,XB=R-66*K +const ss=x=>x<=0?0:x>=1?1:x*x*(3-2*x) +const bar=c=>{c.beginPath();c.roundRect(L,GY,R-L,36,18)} +export default(c,t)=>{ + const u=min(1,t/.66),rb=ss((t-.74)/.18),e=t<.66?1:1-ss((t-.66)/.07)+ss((t-.92)/.08),x=t<.74?XA+(XB-XA)*u:XB-(XB-XA)*rb + const F=t<.74?L+(R-L)*u:t<.92?L+(R-L)*(x-XA)/(XB-XA):L,st=t<.66?4*sin(T*t*6):0,rot=-T*rb + c.fillStyle='#fff';bar(c);c.fill() + c.save();bar(c);c.clip();if(F>L+1){c.fillStyle=FL;c.fillRect(L,GY,F-L,40);c.strokeStyle='#fff';c.lineWidth=5;c.beginPath();c.moveTo(L+14,GY+9);c.lineTo(max(L+14,F-12),GY+9);c.stroke()}c.restore() + c.strokeStyle='#111';c.lineWidth=7;bar(c);c.stroke() + c.save();c.translate(x,GY);c.scale(K,K) + if(e>.02){ + c.save();c.translate(0,-30);c.scale(e,e);c.translate(0,30) + const hx=44+st,hy=-36+st*.3,parts=(o,f)=>{ + c.lineWidth=8+o;c.beginPath();c.moveTo(hx-8,hy-12);c.lineTo(hx-16,hy-36);c.moveTo(hx+6,hy-14);c.lineTo(hx+10,hy-38);c.stroke() + c.beginPath();c.arc(hx-16,hy-36,5+o/2,0,T);c.arc(hx+10,hy-38,5+o/2,0,T);f() + c.beginPath();c.roundRect(-50-o/2,-20-o/2,90+st+o,20+o,10+o/2);f() + c.lineWidth=26+o;c.beginPath();c.moveTo(hx-16,-10);c.lineTo(hx-2,hy+6);c.stroke() + c.beginPath();c.arc(hx,hy,19+o/2,0,T);f()} + c.strokeStyle=c.fillStyle='#111';parts(12,()=>c.fill()) + c.strokeStyle=c.fillStyle=BD;parts(0,()=>c.fill()) + c.strokeStyle='#111' + c.fillStyle='#111';for(const d of[-1,1])c.beginPath(),c.arc(hx+2+d*8,hy-3,3.8,0,T),c.fill() + c.fillStyle='#fff';for(const d of[-1,1])c.beginPath(),c.arc(hx+.8+d*8,hy-4.5,1.4,0,T),c.fill() + c.lineWidth=3.5;c.beginPath();c.arc(hx+2,hy+3,5,.15*PI,.85*PI);c.stroke() + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(hx+2+d*13,hy+5,4,2.5,0,0,T),c.fill() + c.restore() + } + const sy=-34-10*e + c.save();c.translate(-4,sy);c.rotate(rot+.04*st) + c.fillStyle=SH;c.lineWidth=7;c.beginPath();c.arc(0,0,34,0,T);c.fill();c.stroke() + c.strokeStyle=SD;c.lineWidth=6;c.beginPath();for(let a=0;a<4.4*PI;a+=.2){const r=3+a*1.75;c.lineTo(cos(a)*r,sin(a)*r)}c.stroke() + c.strokeStyle='#fff';c.lineWidth=5;c.beginPath();c.arc(0,0,26,PI*1.1,PI*1.4);c.stroke() + c.restore() + c.restore() +} diff --git a/gen/uicolor/locked/vault.js b/gen/uicolor/locked/vault.js new file mode 100644 index 0000000..12c4422 --- /dev/null +++ b/gen/uicolor/locked/vault.js @@ -0,0 +1,41 @@ +// blue vault with its gold wheel spun hard by a straining face, then jammed and rattling, locked tight as a padlock badge pops up +const{sin,cos,PI}=Math,T=2*PI +export const frames=16,delay=85 +const BX='#4dabf7',DR='#ced4da',DRD='#adb5bd',G='#ffd43b',GD='#fab005',BL='#ffa8a8',SH='#868e96' +const ease=u=>u*u*(3-2*u) +export default(c,t)=>{ + const sp=t<.5,u=sp?ease(t/.5):1,rt=(t-.5)*2,rat=sp?0:.14*sin(T*rt*4)*(1-rt),ang=u*T/3+rat,sh=sp?0:2.5*sin(T*rt*8)*(1-rt) + const pop=t<.5?0:t<.6?ease((t-.5)/.1)*1.2:t<.68?1.2-.2*ease((t-.6)/.08):t<.9?1:1-ease((t-.9)/.1) + c.fillStyle=SH;for(const x of[38,182])c.beginPath(),c.roundRect(x,220,36,18,6),c.fill(),c.stroke() + c.fillStyle=BX;c.beginPath();c.roundRect(16,16,224,208,28);c.fill();c.stroke() + c.fillStyle=SH;for(const y of[64,170])c.beginPath(),c.roundRect(28,y-14,20,28,6),c.fill(),c.stroke() + c.translate(sh,0) + c.fillStyle=DRD;for(const a of[-.35,.35])c.beginPath(),c.roundRect(200,118+a*90-7,30,14,5),c.fill(),c.stroke() + c.fillStyle=DR;c.beginPath();c.arc(128,120,90,0,T);c.fill();c.stroke() + c.lineWidth=5;c.fillStyle=DRD;c.beginPath();c.arc(128,120,72,0,T);c.fill();c.stroke() + c.fillStyle=DR;for(let k=0;k<8;k++){const a=k*PI/4+PI/8;c.beginPath();c.arc(128+cos(a)*81,120+sin(a)*81,4.5,0,T);c.fill();c.lineWidth=3;c.stroke()} + c.save();c.translate(128,120);c.rotate(ang) + for(const[w,s]of[[14,'#111'],[6,GD]])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),c.arc(0,0,46,0,T),c.stroke() + for(let k=0;k<6;k++){c.rotate(PI/3);for(const[w,s]of[[13,'#111'],[5,GD]])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),c.moveTo(24,0),c.lineTo(58,0),c.stroke();c.strokeStyle='#111';c.lineWidth=5;c.fillStyle=G;c.beginPath();c.arc(62,0,9,0,T);c.fill();c.stroke()} + c.restore() + c.lineWidth=6;c.fillStyle=G;c.beginPath();c.arc(128,120,28,0,T);c.fill();c.stroke() + c.fillStyle='#fff';c.beginPath();c.ellipse(116,108,5,3,-.6,0,T);c.fill() + c.lineWidth=3.5;c.fillStyle='#111' + if(sp){ + for(const d of[-1,1])c.beginPath(),c.moveTo(128+d*15,114),c.lineTo(128+d*7,118),c.lineTo(128+d*15,122),c.stroke() + c.beginPath();c.moveTo(119,130);for(let k=1;k<=6;k++)c.lineTo(119+k*3,130+(k%2?-2.5:0));c.stroke() + }else{ + for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*10,117,3.5,4.5,0,0,T),c.fill() + c.lineWidth=3.5;for(const d of[-1,1])c.beginPath(),c.moveTo(128+d*15,108),c.lineTo(128+d*5,111),c.stroke() + c.beginPath();c.moveTo(120,128);c.quadraticCurveTo(128,132,137,125);c.stroke() + } + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*17,127,4.5,2.5,0,0,T),c.fill() + c.translate(-sh,0) + if(pop>.02){ + c.save();c.translate(206,52);c.scale(pop,pop);c.rotate(.15*sin(T*rt*2)) + for(const[w,s]of[[16,'#111'],[7,DR]])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),c.arc(0,-8,14,PI,0),c.lineTo(14,4),c.moveTo(-14,4),c.lineTo(-14,-8),c.stroke() + c.strokeStyle='#111';c.lineWidth=6;c.fillStyle=G;c.beginPath();c.roundRect(-24,-2,48,38,9);c.fill();c.stroke() + c.fillStyle='#111';c.beginPath();c.arc(0,12,5,0,T);c.fill();c.beginPath();c.moveTo(-3,13);c.lineTo(3,13);c.lineTo(4,26);c.lineTo(-4,26);c.closePath();c.fill() + c.restore() + } +} diff --git a/gen/uicolor/mailbox/empty.js b/gen/uicolor/mailbox/empty.js new file mode 100644 index 0000000..81a2932 --- /dev/null +++ b/gen/uicolor/mailbox/empty.js @@ -0,0 +1,44 @@ +// mailbox with its flag down, the door drops open with a puff of dust and a lonely moth flutters out, loops around and leaves, then the door shuts +const{sin,cos,PI,max,min,abs,floor}=Math,T=2*PI +export const frames=24,delay=80 +const MB='#4dabf7',DR='#74c0fc',DI='#d0ebff',IN='#343a40',FL='#ff6b6b',PO='#a9744f',MW='#ffe8cc',MS='#e0a96d',MG='#ced4da',BL='#ffa8a8',DU='#e9ecef' +const E=u=>u<0?0:u>1?1:u*u*(3-2*u) +const KP=[[66,118],[66,118],[46,64],[100,34],[164,58],[200,30],[250,-70],[250,-70]] +const cr=u=>{const s=min(4.999,max(0,u)*5),k=floor(s),f=s-k,[a,b,d,e]=KP.slice(k,k+4);return[0,1].map(j=>.5*(2*b[j]+(d[j]-a[j])*f+(2*a[j]-5*b[j]+4*d[j]-e[j])*f*f+(3*b[j]-a[j]-3*d[j]+e[j])*f**3))} +const arch=(c,x,k)=>{c.beginPath();c.moveTo(x-32,148);for(let a=PI;a<=T+.01;a+=PI/16)c.lineTo(x+32*cos(a),148-(40-32*sin(a))*k);c.lineTo(x+32,148);c.closePath()} +const moth=(c,x,y,s,f,r)=>{ + c.save();c.translate(x,y);c.rotate(r);c.scale(s,s);c.strokeStyle='#111' + for(const d of[-1,1]){c.save();c.scale(d*f,1);c.fillStyle=MW;c.lineWidth=5 + c.beginPath();c.moveTo(0,4);c.bezierCurveTo(24,4,34,22,24,32);c.bezierCurveTo(14,40,4,26,0,10);c.fill();c.stroke() + c.beginPath();c.moveTo(0,-4);c.bezierCurveTo(18,-32,50,-30,46,-8);c.bezierCurveTo(44,8,16,10,0,4);c.fill();c.stroke() + c.fillStyle=MS;c.beginPath();c.arc(30,-10,6,0,T);c.fill();c.beginPath();c.arc(16,20,4,0,T);c.fill();c.restore()} + for(const d of[-1,1])for(const[w,st]of[[7,'#111'],[3,MW]])c.lineWidth=w,c.strokeStyle=st,c.beginPath(),c.moveTo(d*3,-16),c.quadraticCurveTo(d*6,-30,d*16,-34),c.stroke() + c.strokeStyle='#111';c.lineWidth=4.5;c.fillStyle=MG;c.beginPath();c.ellipse(0,8,8,20,0,0,T);c.fill();c.stroke() + c.beginPath();c.arc(0,-13,9,0,T);c.fill();c.stroke() + c.fillStyle='#111';for(const d of[-1,1])c.beginPath(),c.arc(d*3.5,-14,2,0,T),c.fill() + c.restore() +} +export default(c,t)=>{ + const th=PI*.66*(E((t-.06)/.12)-E((t-.82)/.12)),k=cos(th),op=th>.05,u=(t-.2)/.66,[mx,my]=cr(u),mv=u>0&&u<1 + c.save();c.translate(128,120);c.scale(1.12,1.12);c.translate(-128,-120) + c.fillStyle=PO;c.beginPath();c.roundRect(126,140,26,88,4);c.fill();c.stroke() + c.fillStyle=MB;c.beginPath();c.moveTo(72,76);c.lineTo(192,76);c.arc(192,108,32,-PI/2,0);c.lineTo(224,148);c.lineTo(72,148);c.closePath();c.fill();c.stroke() + c.strokeStyle='#fff';c.lineWidth=6;c.beginPath();c.moveTo(110,88);c.lineTo(176,88);c.stroke();c.strokeStyle='#111' + arch(c,72,1);c.fillStyle=op?IN:DR;c.fill();c.lineWidth=7;c.stroke() + if(op){arch(c,72,k);c.fillStyle=k>0?DR:DI;c.fill();c.stroke()} + c.fillStyle=MG;c.lineWidth=4;c.beginPath();c.roundRect(64,op?148-(k>0?66:60)*k-4:78,16,8,4);c.fill();c.stroke() + c.save();c.translate(204,104);c.rotate(.06*sin(t*T*2)) + for(const[w,s]of[[11,'#111'],[5,FL]])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),c.moveTo(0,0),c.lineTo(-34,0),c.stroke() + c.strokeStyle='#111';c.lineWidth=5;c.fillStyle=FL;c.beginPath();c.roundRect(-44,-4,18,30,4);c.fill();c.stroke() + c.fillStyle=MG;c.beginPath();c.arc(0,0,6,0,T);c.fill();c.stroke();c.restore() + const lx=mv?max(-3,min(3,(mx-136)/14)):0,ly=mv?max(-3,min(2,(my-116)/14)):2 + c.fillStyle='#111';for(const x of[118,146])c.beginPath(),c.arc(x+lx,106+ly,6,0,T),c.fill() + c.fillStyle='#fff';for(const x of[118,146])c.beginPath(),c.arc(x+lx-2,104+ly,2,0,T),c.fill() + c.lineWidth=4.5;c.beginPath();c.moveTo(110,92);c.lineTo(124,88);c.moveTo(154,92);c.lineTo(140,88);c.stroke() + c.lineWidth=5;c.beginPath();c.arc(132,132,8,1.2*PI,1.8*PI);c.stroke() + c.fillStyle=BL;for(const x of[106,158])c.beginPath(),c.ellipse(x,120,7,4,0,0,T),c.fill() + c.restore() + const p=(t-.14)/.3 + if(p>0&&p<1)for(const[a,o]of[[-2.4,0],[-1.9,.15],[-2.9,.1]]){const q=min(1,max(0,p-o)/.8),r=13*sin(PI*q);if(r>1)c.fillStyle=DU,c.lineWidth=4,c.beginPath(),c.arc(66+cos(a)*(30+40*q),118+sin(a)*(20+40*q),r,0,T),c.fill(),c.stroke()} + if(mv)moth(c,mx,my,.4+.75*E(u*5),.25+.75*abs(cos(6*PI*t)),.3*sin(u*T*2)) +} diff --git a/gen/uicolor/maintenance/robot.js b/gen/uicolor/maintenance/robot.js new file mode 100644 index 0000000..0587b2d --- /dev/null +++ b/gen/uicolor/maintenance/robot.js @@ -0,0 +1,43 @@ +// little robot cranking a bolt on its own chest with a big wrench, tongue out in concentration, sparks popping, gears turning on its head +const{sin,cos,PI}=Math,T=2*PI +export const frames=16,delay=90 +const M='#ced4da',MD='#adb5bd',SC='#e7f5ff',G='#ffd43b',G2='#ffa94d',WR='#868e96',BL='#ffa8a8',RD='#ff6b6b',GN='#51cf66' +const gear=(c,x,y,r,n,a,col)=>{ + c.fillStyle=col;c.lineWidth=5;c.beginPath() + for(let k=0;k{c.fillStyle=G;c.lineWidth=3.5;c.beginPath();c.moveTo(x,y-s);for(const[px,py,qx,qy]of[[s,0,s*.2,-s*.2],[0,s,s*.2,s*.2],[-s,0,-s*.2,s*.2],[0,-s,-s*.2,-s*.2]])c.quadraticCurveTo(x+qx,y+qy,x+px,y+py);c.fill();c.stroke()} +export default(c,t,i)=>{ + const ph=(t*2)%1,q=ph<.6?ph/.6:1-(ph-.6)/.4,th=.15+.7*(q*q*(3-2*q)),ga=t*T/2,bx=156,by=184 + const hx=bx+68*cos(th),hy=by+68*sin(th) + c.fillStyle=MD;c.beginPath();c.roundRect(122,48,12,20,4);c.fill();c.stroke() + gear(c,128,38,17,10,ga,G);gear(c,165,22,10,6,-ga*10/6+.3,G2) + c.lineWidth=7;c.fillStyle=M + for(const x of[100,140]){c.beginPath();c.roundRect(x,206,18,26,6);c.fill();c.stroke()} + for(const x of[90,134]){c.beginPath();c.roundRect(x,226,34,14,7);c.fill();c.stroke()} + for(const[lw,s]of[[20,'#111'],[10,M]])c.lineWidth=lw,c.strokeStyle=s,c.beginPath(),c.moveTo(84,166),c.quadraticCurveTo(56,176,62,204),c.stroke() + c.strokeStyle='#111';c.lineWidth=6;c.fillStyle=M;c.beginPath();c.arc(62,206,11,0,T);c.fill();c.stroke() + c.lineWidth=7;c.fillStyle=M;c.beginPath();c.roundRect(78,150,100,64,16);c.fill();c.stroke() + c.fillStyle=MD;c.lineWidth=5;c.beginPath();c.roundRect(90,162,40,40,8);c.fill();c.stroke() + for(const[x,y,col,on]of[[102,174,RD,i%4<2],[118,174,GN,i%4>=2],[102,190,G,i%8<4],[118,190,'#4dabf7',i%8>=4]]){c.fillStyle=on?col:'#868e96';c.lineWidth=3;c.beginPath();c.arc(x,y,5,0,T);c.fill();c.stroke()} + c.lineWidth=7;c.fillStyle=MD;c.beginPath();c.rect(114,140,28,14);c.fill();c.stroke() + c.fillStyle=M;for(const x of[58,198]){c.beginPath();c.roundRect(x-8,88,16,30,6);c.fill();c.stroke()} + c.beginPath();c.roundRect(62,62,132,82,22);c.fill();c.stroke() + c.fillStyle=SC;c.lineWidth=5;c.beginPath();c.roundRect(78,76,100,56,14);c.fill();c.stroke() + c.fillStyle='#111';c.beginPath();c.ellipse(144,100,5,7,0,0,T);c.fill() + c.fillStyle='#fff';c.beginPath();c.arc(142,97,2.2,0,T);c.fill() + c.lineWidth=4;c.beginPath();c.moveTo(105,94);c.lineTo(115,101);c.lineTo(105,108);c.stroke() + c.fillStyle=BL;for(const x of[96,160])c.beginPath(),c.ellipse(x,116,7,4,0,0,T),c.fill() + c.beginPath();c.moveTo(118,116);c.quadraticCurveTo(128,121,140,114);c.stroke() + c.fillStyle='#ff8787';c.lineWidth=3.5;c.beginPath();c.ellipse(136,121,5,6,-.4,0,PI);c.fill();c.stroke() + c.save();c.translate(bx,by);c.rotate(th) + c.fillStyle=WR;c.lineWidth=6;c.beginPath();c.roundRect(10,-8,62,16,8);c.fill();c.stroke();c.fillStyle=RD;c.beginPath();c.roundRect(34,-9,40,18,9);c.fill();c.stroke();c.fillStyle=WR + c.beginPath();c.arc(0,0,17,0,T);c.fill();c.stroke() + c.fillStyle=G;c.lineWidth=4;c.beginPath();for(let k=0;k<6;k++)c.lineTo(cos(k*PI/3)*9,sin(k*PI/3)*9);c.closePath();c.fill();c.stroke() + c.restore() + for(const[lw,s]of[[20,'#111'],[10,M]])c.lineWidth=lw,c.strokeStyle=s,c.beginPath(),c.moveTo(174,166),c.quadraticCurveTo(212,160,hx,hy),c.stroke() + c.strokeStyle='#111';c.lineWidth=6;c.fillStyle=M;c.beginPath();c.arc(hx,hy,12,0,T);c.fill();c.stroke() + const sp=ph>.6?(ph-.6)/.4:ph<.1?1+ph/.1:0 + if(sp>0&&sp<2){const s=sp<1?sp:2-sp;for(const[a,d]of[[-2.4,30],[-1.6,34],[-.8,28]])star(c,bx+cos(a)*d,by-6+sin(a)*d,3+6*s)} +} diff --git a/gen/uicolor/offline/satellite.js b/gen/uicolor/offline/satellite.js new file mode 100644 index 0000000..8c009eb --- /dev/null +++ b/gen/uicolor/offline/satellite.js @@ -0,0 +1,31 @@ +// worried satellite dish sweeping back and forth hunting for a signal, its little signal waves breaking up into dots and fizzling out +const{sin,cos,PI,max}=Math,T=2*PI +export const frames=16,delay=100 +const DS='#74c0fc',DI='#e7f5ff',ST='#adb5bd',BA='#868e96',FE='#ff6b6b',WV='#ffd43b',BL='#ffa8a8' +export default(c,t)=>{ + const a=.42*sin(T*t),lk=3.5*cos(T*t) + c.fillStyle=BA;c.beginPath();c.roundRect(68,214,120,26,10);c.fill();c.stroke() + c.fillStyle=ST;c.beginPath();c.roundRect(116,176,24,42,6);c.fill();c.stroke() + c.save();c.translate(128,190);c.rotate(a) + for(let k=0;k<3;k++){ + const p=(t*3+k/3)%1,r=18+40*p,d=max(1,14-15*p) + c.setLineDash([d,6+20*p*p]) + for(const[w,s]of[[13,'#111'],[6,WV]])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),c.arc(0,-122,r,-PI/2-.62,-PI/2+.62),c.stroke() + } + c.setLineDash([]);c.strokeStyle='#111' + c.fillStyle=ST;c.lineWidth=7;c.beginPath();c.roundRect(-16,-20,32,22,6);c.fill();c.stroke() + for(const[w,s]of[[12,'#111'],[5,ST]])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),c.moveTo(-74,-74),c.lineTo(0,-118),c.lineTo(74,-74),c.stroke() + c.strokeStyle='#111';c.lineWidth=7 + c.fillStyle=DS;c.beginPath();c.ellipse(0,-60,92,58,0,0,PI);c.ellipse(0,-60,92,34,0,PI,0,true);c.fill();c.stroke() + c.fillStyle=DI;c.beginPath();c.ellipse(0,-60,92,34,0,0,T);c.fill();c.stroke() + for(const[w,s]of[[12,'#111'],[5,ST]])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),c.moveTo(-74,-74),c.lineTo(-60,-82),c.moveTo(74,-74),c.lineTo(60,-82),c.stroke() + c.strokeStyle='#111';c.lineWidth=6;c.fillStyle=FE;c.beginPath();c.arc(0,-122,11,0,T);c.fill();c.stroke() + c.fillStyle='#fff';c.beginPath();c.arc(-3,-125,3,0,T);c.fill() + c.fillStyle='#fff';c.beginPath();c.ellipse(-56,-30,10,4,.3,0,T);c.fill() + c.fillStyle='#111';for(const d of[-1,1])c.beginPath(),c.ellipse(d*22+lk,-60,6,7.5,0,0,T),c.fill() + c.fillStyle='#fff';for(const d of[-1,1])c.beginPath(),c.arc(d*22+lk-2,-63,2.4,0,T),c.fill() + c.lineWidth=4;for(const d of[-1,1])c.beginPath(),c.moveTo(d*14+lk,-76),c.lineTo(d*30+lk,-71),c.stroke() + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(d*42,-50,8,4.5,0,0,T),c.fill() + c.beginPath();c.moveTo(-10+lk,-45);c.quadraticCurveTo(-5+lk,-50,0+lk,-45);c.quadraticCurveTo(5+lk,-40,10+lk,-45);c.stroke() + c.restore() +} diff --git a/gen/uicolor/order/shipped.js b/gen/uicolor/order/shipped.js new file mode 100644 index 0000000..70ef0ea --- /dev/null +++ b/gen/uicolor/order/shipped.js @@ -0,0 +1,41 @@ +// delivery truck driving along with a smiling parcel hopping on its flatbed, wheels turning, road dashes and speed lines rushing past +const{sin,cos,PI,abs,round,max}=Math,T=2*PI +export const frames=16,delay=60 +const CAB='#4dabf7',CABD='#339af0',WIN='#e7f5ff',TIRE='#343a40',HUB='#ced4da',BED='#868e96',BX='#f0b878',BXD='#d99a5a',TAPE='#ffe8cc',BL='#ffa8a8' +export default(c,t)=>{ + const b=-round(3*abs(sin(2*T*t))),h=-round(7*max(0,sin(2*T*t-.8))),tl=.05*max(0,sin(2*T*t-.8)),rot=t*T + c.fillStyle='#868e96';c.beginPath();c.roundRect(8,214,240,22,11);c.fill();c.stroke() + c.save();c.beginPath();c.rect(14,214,228,22);c.clip() + for(let k=-1;k<5;k++){const x=k*64-((t*128)%64)+20;c.fillStyle='#fff';c.beginPath();c.roundRect(x,222,30,6,3);c.fill()} + c.restore() + for(const[y,o,l]of[[92,0,30],[122,.5,22],[150,.25,28]]){const p=(t*2+o)%1,x=40-p*28;if(p<.85)for(const[w,s]of[[9,'#111'],[4,'#fff']])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),c.moveTo(x,y),c.lineTo(x-l*(1-p),y),c.stroke()} + c.strokeStyle='#111';c.lineWidth=7 + c.translate(0,b) + c.fillStyle=BED;c.beginPath();c.roundRect(34,166,136,22,6);c.fill();c.stroke() + c.save();c.translate(104,166+h);c.rotate(-tl) + c.fillStyle=BX;c.beginPath();c.roundRect(-58,-92,116,92,6);c.fill() + c.fillStyle=BXD;c.fillRect(-58,-92,116,14) + c.fillStyle=TAPE;c.fillRect(-14,-92,28,36) + c.lineWidth=4;c.beginPath();c.moveTo(-14,-92);c.lineTo(-14,-56);c.lineTo(14,-56);c.lineTo(14,-92);c.moveTo(-58,-78);c.lineTo(-14,-78);c.moveTo(14,-78);c.lineTo(58,-78);c.stroke() + c.lineWidth=7;c.beginPath();c.roundRect(-58,-92,116,92,6);c.stroke() + c.fillStyle='#111';for(const d of[-1,1])c.beginPath(),c.arc(d*20,-36,5,0,T),c.fill() + c.fillStyle='#fff';for(const d of[-1,1])c.beginPath(),c.arc(d*20-2,-38,1.8,0,T),c.fill() + c.lineWidth=4;c.beginPath();c.arc(0,-30,8,.15*PI,.85*PI);c.stroke() + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(d*36,-24,7,4,0,0,T),c.fill() + c.restore() + c.lineWidth=7;c.fillStyle=CAB;c.beginPath();c.moveTo(164,188);c.lineTo(164,98);c.quadraticCurveTo(164,88,174,88);c.lineTo(202,88);c.quadraticCurveTo(212,88,218,98);c.lineTo(232,130);c.lineTo(232,188);c.closePath();c.fill();c.stroke() + c.fillStyle=WIN;c.lineWidth=5;c.beginPath();c.moveTo(178,100);c.lineTo(204,100);c.lineTo(218,128);c.lineTo(178,128);c.closePath();c.fill();c.stroke() + c.fillStyle='#fff';c.beginPath();c.ellipse(188,110,3,7,.4,0,T);c.fill() + c.fillStyle=CABD;c.beginPath();c.rect(164,160,68,10);c.fill();c.beginPath();c.moveTo(164,160);c.lineTo(232,160);c.moveTo(164,170);c.lineTo(232,170);c.stroke() + c.lineWidth=4;c.beginPath();c.moveTo(184,140);c.lineTo(196,140);c.stroke() + c.fillStyle='#ffd43b';c.lineWidth=5;c.beginPath();c.roundRect(222,134,14,14,4);c.fill();c.stroke() + c.fillStyle='#111';c.beginPath();c.arc(210,144,4,0,T);c.fill() + c.fillStyle=BL;c.beginPath();c.ellipse(202,178,6,3.5,0,0,T);c.fill() + c.lineWidth=4;c.beginPath();c.arc(216,174,6,.2*PI,.8*PI);c.stroke() + c.translate(0,-b) + for(const x of[78,196]){ + c.lineWidth=7;c.fillStyle=TIRE;c.beginPath();c.arc(x,194,22,0,T);c.fill();c.stroke() + c.fillStyle=HUB;c.beginPath();c.arc(x,194,10,0,T);c.fill();c.lineWidth=4;c.stroke() + for(let k=0;k<4;k++){const a=rot+k*PI/2;c.beginPath();c.moveTo(x+cos(a)*4,194+sin(a)*4);c.lineTo(x+cos(a)*9,194+sin(a)*9);c.stroke()} + } +} diff --git a/gen/uicolor/payment/coins.js b/gen/uicolor/payment/coins.js new file mode 100644 index 0000000..ed20555 --- /dev/null +++ b/gen/uicolor/payment/coins.js @@ -0,0 +1,33 @@ +// spinning gold coins dropping one after another into a happy purple wallet that gulps and bounces with each one +const{sin,cos,PI,abs,max,min}=Math,T=2*PI +export const frames=24,delay=60 +const G='#ffd43b',GD='#f59f00',WF='#b197fc',WB='#7950f2',WT='#9775fa',BILL='#8ce99a',BL='#ffa8a8' +const C=[[100,0],[148,1/3],[122,2/3]] +const sp=(c,x,y,s)=>{c.lineWidth=4;c.fillStyle='#fff';c.beginPath();c.moveTo(x,y-s);for(const[px,py,qx,qy]of[[s,0,s*.18,-s*.18],[0,s,s*.18,s*.18],[-s,0,-s*.18,s*.18],[0,-s,-s*.18,-s*.18]])c.quadraticCurveTo(x+qx,y+qy,x+px,y+py);c.fill();c.stroke()} +export default(c,t)=>{ + let bump=0 + for(const[x,o]of C){const p=(t+o)%1,q=(p-.42)/.2;if(q>0&&q<1)bump=max(bump,sin(PI*q))} + c.translate(128,234);c.scale(1+.05*bump,1-.07*bump);c.translate(-128,-234) + c.fillStyle=WB;c.beginPath();c.roundRect(42,104,172,122,18);c.fill();c.stroke() + c.save();c.translate(150,96);c.rotate(.12);c.fillStyle=BILL;c.beginPath();c.roundRect(-34,-26,68,60,4);c.fill();c.stroke() + c.lineWidth=4;c.beginPath();c.arc(0,-2,9,0,T);c.stroke();c.restore();c.lineWidth=7 + for(const[x,o]of C){ + const p=(t+o)%1;if(p>.44)continue + const u=p/.44,y=34+114*u*u,w=max(6,28*abs(cos(u*PI*1.5))),xx=x+8*sin(u*PI) + c.save();c.translate(xx,y);c.scale(min(1,u*5),min(1,u*5)) + c.fillStyle=GD;c.lineWidth=5;c.beginPath();c.ellipse(0,0,w,28,0,0,T);c.fill();c.stroke() + c.fillStyle=G;c.beginPath();c.ellipse(0,0,w*.78,22,0,0,T);c.fill() + if(w>12){c.scale(w/28,1);c.lineWidth=4.5/(w/28);c.beginPath();c.moveTo(7,-8);c.bezierCurveTo(4,-14,-10,-13,-9,-5);c.bezierCurveTo(-8,2,9,-1,9,6);c.bezierCurveTo(9,14,-6,15,-9,8);c.moveTo(0,-17);c.lineTo(0,17);c.stroke()} + c.restore() + } + c.lineWidth=7;c.fillStyle=WF;c.beginPath();c.roundRect(32,128,192,104,20);c.fill();c.stroke() + c.fillStyle=WT;c.beginPath();c.roundRect(176,150,56,46,12);c.fill();c.stroke() + c.fillStyle=G;c.lineWidth=5;c.beginPath();c.arc(214,173,8,0,T);c.fill();c.stroke() + c.strokeStyle='#fff';c.lineWidth=6;c.beginPath();c.moveTo(48,148);c.lineTo(48,168);c.stroke();c.strokeStyle='#111' + c.fillStyle='#111';for(const d of[-1,1])c.beginPath(),c.arc(110+d*26,170-3*bump,6,0,T),c.fill() + c.fillStyle='#fff';for(const d of[-1,1])c.beginPath(),c.arc(108+d*26,167-3*bump,2.2,0,T),c.fill() + c.fillStyle='#111';c.beginPath();c.arc(110,184,10+3*bump,0,PI);c.closePath();c.fill() + c.fillStyle='#ff8787';c.beginPath();c.ellipse(110,190+2*bump,5,3,0,0,T);c.fill() + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(110+d*44,186,8,4.5,0,0,T),c.fill() + for(const[x,o]of C){const p=(t+o)%1,q=(p-.42)/.2;if(q>0&&q<1)sp(c,x+(x<128?-34:34),112,14*sin(PI*q))} +} diff --git a/gen/uicolor/search/sad.js b/gen/uicolor/search/sad.js new file mode 100644 index 0000000..2ddf468 --- /dev/null +++ b/gen/uicolor/search/sad.js @@ -0,0 +1,24 @@ +// sad magnifying glass swaying side to side, big eyes peeking left and right for results, a little question mark bobbing beside it +const{sin,PI}=Math,T=2*PI +export const frames=14,delay=100 +const RG='#9775fa',LN='#d0ebff',HN='#ffa94d',BL='#ffa8a8',QM='#ffd43b',SW='#74c0fc' +export default(c,t)=>{ + const a=.14*sin(t*T),x=112+10*sin(t*T),y=100+3*sin(2*T*t),lk=sin(t*T+.7),qs=1+.08*sin(2*T*t) + c.save();c.translate(210,56+5*sin(2*T*t+1));c.scale(qs,qs);c.rotate(.15*sin(t*T)) + for(const[w,s]of[[17,'#111'],[8,QM]])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),c.arc(0,-14,13,PI*1.05,PI*2.45),c.lineTo(0,6),c.stroke() + c.strokeStyle='#111';c.fillStyle=QM;c.lineWidth=4;c.beginPath();c.arc(0,22,6.5,0,T);c.fill();c.stroke();c.restore() + c.save();c.translate(x,y);c.rotate(a) + c.save();c.rotate(PI/4);c.fillStyle=HN;c.beginPath();c.roundRect(76,-15,68,30,15);c.fill();c.stroke() + c.fillStyle=RG;c.beginPath();c.roundRect(66,-19,22,38,6);c.fill();c.stroke();c.restore() + c.fillStyle=RG;c.beginPath();c.arc(0,0,72,0,T);c.fill();c.stroke() + c.fillStyle=LN;c.beginPath();c.arc(0,0,56,0,T);c.fill();c.lineWidth=5;c.stroke() + c.strokeStyle='#fff';c.lineWidth=7;c.beginPath();c.arc(0,0,44,PI*1.08,PI*1.38);c.stroke();c.strokeStyle='#111' + c.lineWidth=4;c.fillStyle='#fff';for(const d of[-1,1])c.beginPath(),c.arc(d*21,-4,13,0,T),c.fill(),c.stroke() + c.fillStyle='#111';for(const d of[-1,1])c.beginPath(),c.arc(d*21+lk*5,-2,6.5,0,T),c.fill() + c.fillStyle='#fff';for(const d of[-1,1])c.beginPath(),c.arc(d*21+lk*5-2,-4,2,0,T),c.fill() + c.lineWidth=4.5;for(const d of[-1,1])c.beginPath(),c.moveTo(d*10,-26),c.lineTo(d*30,-21),c.stroke() + c.lineWidth=5;c.beginPath();c.arc(0,32,10,1.2*PI,1.8*PI);c.stroke() + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(d*36,16,7,4,0,0,T),c.fill() + c.fillStyle=SW;c.lineWidth=3;c.beginPath();c.moveTo(40,-34);c.quadraticCurveTo(47,-23,40,-21);c.quadraticCurveTo(33,-23,40,-34);c.fill();c.stroke() + c.restore() +} diff --git a/gen/uicolor/sent/envelope.js b/gen/uicolor/sent/envelope.js new file mode 100644 index 0000000..59895ab --- /dev/null +++ b/gen/uicolor/sent/envelope.js @@ -0,0 +1,21 @@ +// blue envelope with a heart seal flapping its little white wings as it flies off, a trail of puffs streaming out behind it +const{sin,cos,PI,min}=Math,T=2*PI +export const frames=18,delay=70 +const EN='#a5d8ff',FL='#74c0fc',HT='#ff6b6b',BL='#ffa8a8' +const wing=c=>{c.beginPath();c.moveTo(-6,8);c.quadraticCurveTo(8,-40,54,-46);c.quadraticCurveTo(60,-30,44,-27);c.quadraticCurveTo(48,-13,30,-12);c.quadraticCurveTo(30,1,12,0);c.quadraticCurveTo(8,10,-6,8);c.fill();c.stroke()} +export default(c,t)=>{ + const f=sin(3*T*t),y=126+5*f,B=(u,p,q,r,v)=>(1-u)**3*p+3*(1-u)**2*u*q+3*(1-u)*u*u*r+u**3*v + c.fillStyle='#fff';c.lineWidth=4 + for(let k=0;k<8;k++){const u=((k+t*2)%8)/8,x=B(u,132,66,86,16),yy=B(u,y,y+10,214,226),r=10*(1-u)+2.5;c.beginPath();c.arc(x,yy,r,0,T);c.fill();c.stroke()} + c.translate(136,y);c.rotate(-.16+.04*sin(t*T)) + c.lineWidth=6;c.fillStyle='#fff' + for(const d of[-1,1]){c.save();c.translate(d*50,-24);c.scale(d,1);c.rotate(.45*f-.15);wing(c);c.lineWidth=4;c.beginPath();c.moveTo(8,-14);c.quadraticCurveTo(24,-28,40,-34);c.stroke();c.restore()} + c.lineWidth=7;c.fillStyle=EN;c.beginPath();c.roundRect(-58,-40,116,80,10);c.fill();c.stroke() + c.fillStyle=FL;c.lineWidth=5;c.beginPath();c.moveTo(-55,-37);c.lineTo(0,4);c.lineTo(55,-37);c.closePath();c.fill();c.stroke() + c.fillStyle=HT;c.beginPath();c.moveTo(0,16);c.bezierCurveTo(-16,6,-12,-8,0,-1);c.bezierCurveTo(12,-8,16,6,0,16);c.fill();c.lineWidth=4;c.stroke() + c.fillStyle='#fff';c.beginPath();c.ellipse(-5,2,2.5,1.6,-.6,0,T);c.fill() + c.fillStyle='#111';for(const d of[-1,1])c.beginPath(),c.arc(d*30,14,5.5,0,T),c.fill() + c.fillStyle='#fff';for(const d of[-1,1])c.beginPath(),c.arc(d*30-2,12,2,0,T),c.fill() + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(d*40,25,7,4,0,0,T),c.fill() + c.lineWidth=4;c.beginPath();c.arc(0,22,6,.2*PI,.8*PI);c.stroke() +} diff --git a/gen/uicolor/success/balloons.js b/gen/uicolor/success/balloons.js new file mode 100644 index 0000000..0f5581f --- /dev/null +++ b/gen/uicolor/success/balloons.js @@ -0,0 +1,31 @@ +// bunch of smiling balloons bobbing up on wavy strings tied with a bow, confetti fluttering down around them +const{sin,cos,PI,min}=Math,T=2*PI +export const frames=14,delay=100 +const B=[[128,74,'#ffd43b',.2,36],[70,108,'#ff6b6b',0,33],[186,108,'#4dabf7',.55,33]],BL='#ffa8a8' +const CF=['#ff6b6b','#ffd43b','#4dabf7','#69db7c','#b197fc','#f783ac','#ffa94d'] +export default(c,t)=>{ + for(let k=0;k<9;k++){ + const p=(t*(1+k%2)+k*.37)%1,x=(k*71+20)%200+28+10*sin(p*T*2+k),y=6+p*236,s=min(1,4*sin(PI*p)) + if(s<.1)continue + c.save();c.translate(x,y);c.rotate(p*T*(1+k%3));c.scale(s,s);c.fillStyle=CF[k%7];c.lineWidth=3;c.beginPath() + if(k%3==0)c.rect(-7,-4,14,8);else if(k%3==1)c.arc(0,0,5,0,T);else c.moveTo(0,-7),c.lineTo(6,5),c.lineTo(-6,5),c.closePath() + c.fill();c.stroke();c.restore() + } + const b=-6*sin(t*T),K=[128,222+b*.4],P=B.map(([x,y,,o,r])=>[x+6*sin(t*T+o*T),y+b+4*sin(2*T*t+o*T),r]) + for(const[w,st]of[[7,'#111'],[3,'#fff']]){c.lineWidth=w;c.strokeStyle=st;c.beginPath();for(const[x,y,r]of P){const w2=10*sin(2*T*t+x);c.moveTo(x,y+r*1.2+8);c.quadraticCurveTo((x+K[0])/2+w2,(y+K[1])/2+20,K[0],K[1])}c.stroke()} + c.strokeStyle='#111' + for(const[k,[x,y,r]]of P.entries()){ + const col=B[k][2] + c.save();c.translate(x,y);c.rotate((x-128)/500) + c.lineWidth=5;c.fillStyle=col;c.beginPath();c.moveTo(0,r*1.12);c.lineTo(-7,r*1.2+9);c.lineTo(7,r*1.2+9);c.closePath();c.fill();c.stroke() + c.lineWidth=7;c.beginPath();c.ellipse(0,0,r,r*1.18,0,0,T);c.fill();c.stroke() + c.fillStyle='#fff';c.beginPath();c.ellipse(-r*.45,-r*.5,r*.14,r*.26,.5,0,T);c.fill();c.beginPath();c.arc(-r*.2,-r*.82,r*.07,0,T);c.fill() + c.fillStyle='#111';for(const d of[-1,1])c.beginPath(),c.arc(d*r*.3,r*.06,4.5,0,T),c.fill() + c.lineWidth=4;c.beginPath();c.arc(0,r*.2,r*.2,.15*PI,.85*PI);c.stroke() + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(d*r*.56,r*.3,6,3.5,0,0,T),c.fill() + c.restore() + } + c.save();c.translate(...K);c.fillStyle='#f783ac';c.lineWidth=4 + for(const d of[-1,1])c.beginPath(),c.moveTo(0,0),c.lineTo(d*16,-9),c.lineTo(d*16,9),c.closePath(),c.fill(),c.stroke() + c.beginPath();c.arc(0,0,5,0,T);c.fill();c.stroke();c.restore() +} diff --git a/gen/uicolor/success/check.js b/gen/uicolor/success/check.js new file mode 100644 index 0000000..6768f7c --- /dev/null +++ b/gen/uicolor/success/check.js @@ -0,0 +1,25 @@ +// green badge pops in, a white check mark draws itself, a burst of colorful rays and sparkles goes off, then it shrinks away +const{sin,cos,PI,min,max,hypot}=Math,T=2*PI +export const frames=24,delay=60 +const GR='#51cf66',GD='#37b24d',CF=['#ffd43b','#ff6b6b','#4dabf7','#f783ac'] +const back=u=>{const s=2;return 1+(s+1)*(u-1)**3+s*(u-1)**2} +const P=[[90,132],[116,158],[168,100]],L=hypot(26,26)+hypot(52,58) +const sp=(c,x,y,s)=>{c.lineWidth=4;c.fillStyle='#fff';c.beginPath();c.moveTo(x,y-s);for(const[px,py,qx,qy]of[[s,0,s*.18,-s*.18],[0,s,s*.18,s*.18],[-s,0,-s*.18,s*.18],[0,-s,-s*.18,-s*.18]])c.quadraticCurveTo(x+qx,y+qy,x+px,y+py);c.fill();c.stroke()} +export default(c,t)=>{ + const s=t<.15?back(t/.15):t>.85?1-((t-.85)/.15)**2:1,p=min(1,max(0,(t-.15)/.25)),b=(t-.38)/.32 + if(b>0&&b<1){ + for(let k=0;k<8;k++){ + const a=k*T/8+PI/8,r1=88+30*b,r2=r1+22*(1-b) + for(const[w,st]of[[13,'#111'],[6,CF[k%4]]])c.lineWidth=w,c.strokeStyle=st,c.beginPath(),c.moveTo(128+cos(a)*r1,128+sin(a)*r1),c.lineTo(128+cos(a)*r2,128+sin(a)*r2),c.stroke() + } + c.strokeStyle='#111' + for(let k=0;k<4;k++){const a=k*T/4-PI/2,r=92+16*b;sp(c,128+cos(a)*r,128+sin(a)*r,14*sin(PI*b))} + } + c.strokeStyle='#111' + if(s<=.01)return + c.translate(128,128);c.scale(s,s);c.translate(-128,-128);c.lineWidth=7/s + c.fillStyle=GR;c.beginPath();c.arc(128,128,76,0,T);c.fill();c.stroke() + c.strokeStyle=GD;c.lineWidth=6;c.beginPath();c.arc(128,128,62,0,T);c.stroke() + c.strokeStyle='#fff';c.beginPath();c.arc(128,128,66,PI*1.1,PI*1.38);c.stroke() + if(p>0)for(const[w,st]of[[28,'#111'],[16,'#fff']]){c.lineWidth=w;c.strokeStyle=st;c.setLineDash([L*p,999]);c.beginPath();for(const[x,y]of P)c.lineTo(x,y);c.stroke()} +} diff --git a/gen/uicolor/success/medal.js b/gen/uicolor/success/medal.js new file mode 100644 index 0000000..5376f9c --- /dev/null +++ b/gen/uicolor/success/medal.js @@ -0,0 +1,27 @@ +// gold medal with a star swinging on its red and blue ribbon, a glint sliding across it and sparkles popping around +const{sin,cos,PI,max}=Math,T=2*PI +export const frames=14,delay=90 +const G='#ffd43b',GD='#fab005',GE='#f59f00',RB=['#ff6b6b','#4dabf7'] +const sp=(c,x,y,s)=>{c.lineWidth=4;c.fillStyle='#fff';c.beginPath();c.moveTo(x,y-s);for(const[px,py,qx,qy]of[[s,0,s*.18,-s*.18],[0,s,s*.18,s*.18],[-s,0,-s*.18,s*.18],[0,-s,-s*.18,-s*.18]])c.quadraticCurveTo(x+qx,y+qy,x+px,y+py);c.fill();c.stroke()} +const disc=(c,r)=>{c.beginPath();c.arc(0,170,r,0,T)} +export default(c,t)=>{ + const a=.13*sin(t*T) + for(const[x,y,o]of[[38,120,0],[220,104,.33],[214,216,.66],[46,224,.5]]){const s=12*max(0,sin(PI*((t*2+o)%1)));if(s>1.5)sp(c,x,y,s)} + c.lineWidth=7;c.translate(128,20);c.rotate(a);c.scale(.94,.94) + for(const[k,d]of[[0,1],[1,-1]]){ + const q=()=>{c.beginPath();c.moveTo(d*58,0);c.lineTo(d*22,0);c.lineTo(-d*16,112);c.lineTo(d*18,112);c.closePath()} + q();c.fillStyle=RB[k];c.fill() + c.save();q();c.clip();c.strokeStyle='#fff';c.lineWidth=9;c.beginPath();c.moveTo(d*40,0);c.lineTo(d*1,112);c.stroke();c.restore() + q();c.stroke() + } + c.fillStyle=GD;c.beginPath();c.roundRect(-20,100,40,22,7);c.fill();c.stroke() + disc(c,62);c.fillStyle=GD;c.fill();c.stroke() + disc(c,48);c.fillStyle=G;c.fill() + c.save();disc(c,48);c.clip() + c.fillStyle=GD;c.beginPath();c.arc(0,170,48,0,T);c.arc(-12,157,48,0,T,true);c.fill() + const g=t*360-120;c.strokeStyle='#fff';c.lineWidth=14;c.beginPath();c.moveTo(g-40,240);c.lineTo(g+30,100);c.stroke();c.lineWidth=5;c.beginPath();c.moveTo(g-16,240);c.lineTo(g+54,100);c.stroke() + c.restore() + c.lineWidth=5;disc(c,48);c.stroke() + c.fillStyle=GE;c.beginPath();for(let k=0;k<10;k++){const r=k%2?14:31,b=k*PI/5-PI/2;c.lineTo(cos(b)*r,172+sin(b)*r)}c.closePath();c.fill();c.lineWidth=4;c.stroke() + c.strokeStyle='#fff';c.lineWidth=6;c.beginPath();c.arc(0,170,54,PI*1.12,PI*1.36);c.stroke() +} diff --git a/gen/uicolor/sync/phones.js b/gen/uicolor/sync/phones.js new file mode 100644 index 0000000..7e2f1d1 --- /dev/null +++ b/gen/uicolor/sync/phones.js @@ -0,0 +1,37 @@ +// two smiling phones tossing a file back and forth in a high arc, each one hopping as it catches, sync arrows spinning between them +const{sin,cos,PI,max}=Math,T=2*PI +export const frames=20,delay=80 +const PL='#9775fa',PR='#ff8787',SC='#e7f5ff',FL='#fff',FC='#ffd43b',AR='#51cf66',BL='#ffa8a8' +const ease=u=>u*u*(3-2*u) +const phone=(c,x,col,tilt,hop,open)=>{ + c.save();c.translate(x,236-hop);c.rotate(tilt) + c.fillStyle=col;c.beginPath();c.roundRect(-38,-148,76,148,18);c.fill();c.stroke() + c.fillStyle=SC;c.lineWidth=5;c.beginPath();c.roundRect(-28,-132,56,116,9);c.fill();c.stroke() + c.fillStyle='#111';c.beginPath();c.roundRect(-10,-144,20,5,2.5);c.fill() + c.fillStyle='#111';for(const d of[-1,1])c.beginPath(),c.ellipse(d*12,-50,4.5,6,0,0,T),c.fill() + c.fillStyle='#fff';for(const d of[-1,1])c.beginPath(),c.arc(d*12-1.5,-52.5,1.8,0,T),c.fill() + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(d*20,-38,5.5,3.5,0,0,T),c.fill() + c.lineWidth=4;c.beginPath() + if(open)c.fillStyle='#ff8787',c.moveTo(-6,-40),c.quadraticCurveTo(0,-26,6,-40),c.closePath(),c.fill() + else c.arc(0,-42,6,.15*PI,.85*PI) + c.stroke();c.restore();c.lineWidth=7 +} +const file=(c,x,y,r)=>{ + c.save();c.translate(x,y);c.rotate(r);c.lineWidth=5 + c.fillStyle=FL;c.beginPath();c.moveTo(-18,-24);c.lineTo(8,-24);c.lineTo(18,-14);c.lineTo(18,24);c.lineTo(-18,24);c.closePath();c.fill();c.stroke() + c.fillStyle=FC;c.beginPath();c.moveTo(8,-24);c.lineTo(8,-14);c.lineTo(18,-14);c.closePath();c.fill();c.stroke() + c.strokeStyle='#4dabf7';c.lineWidth=4;c.beginPath();for(const y of[-8,2,12])c.moveTo(-9,y),c.lineTo(9,y);c.stroke() + c.restore();c.strokeStyle='#111';c.lineWidth=7 +} +export default(c,t)=>{ + const h=t<.5?0:1,u=((t*2)%1),fly=u<.72,f=fly?ease(u/.72):1,dir=h?-1:1 + const x0=h?198:58,x1=h?58:198,fx=x0+(x1-x0)*f,fy=148-110*sin(PI*f),land=fly?0:(u-.72)/.28 + const ca=fly?0:sin(PI*land) + phone(c,58,PL,-.1,h?ca*10:0,h&&!fly) + phone(c,198,PR,.1,h?0:ca*10,!h&&!fly) + c.save();c.translate(128,186);c.rotate(-T*t*2) + for(let k=0;k<2;k++){c.rotate(PI);for(const[w,s]of[[12,'#111'],[5,AR]])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),c.arc(0,0,20,.25,PI-.5),c.stroke();c.strokeStyle='#111';c.lineWidth=4;c.fillStyle=AR;c.beginPath();const ex=cos(PI-.5)*20,ey=sin(PI-.5)*20;c.moveTo(ex-9,ey-4);c.lineTo(ex+3,ey-9);c.lineTo(ex+3,ey+5);c.closePath();c.fill();c.stroke()} + c.restore();c.lineWidth=7 + if(fly&&f>.06&&f<.94)for(let k=1;k<=3;k++){const g=max(0,f-k*.07),gx=x0+(x1-x0)*g,gy=148-110*sin(PI*g);c.fillStyle='#fff';c.lineWidth=3;c.beginPath();c.arc(gx,gy,5-k,0,T);c.fill();c.stroke()} + file(c,fx+(fly?0:dir*ca*1),fy-ca*10,dir*.5*sin(PI*f)*(fly?1:0)) +} diff --git a/gen/uicolor/trash/empty.js b/gen/uicolor/trash/empty.js new file mode 100644 index 0000000..0f12854 --- /dev/null +++ b/gen/uicolor/trash/empty.js @@ -0,0 +1,30 @@ +// clean empty trash bin flipping its lid open and shut with a big grin, sparkles popping out of it and twinkling all around +const{sin,PI,max}=Math,T=2*PI +export const frames=20,delay=80 +const BN='#63e6be',BD='#20c997',RM='#38d9a9',IN='#c3fae8',BL='#ffa8a8',TG='#ff8787' +const E=u=>u<0?0:u>1?1:u*u*(3-2*u) +const sp=(c,x,y,s)=>{if(s<1.5)return;c.lineWidth=4;c.fillStyle='#fff';c.beginPath();c.moveTo(x,y-s);for(const[px,py,qx,qy]of[[s,0,s*.18,-s*.18],[0,s,s*.18,s*.18],[-s,0,-s*.18,s*.18],[0,-s,-s*.18,-s*.18]])c.quadraticCurveTo(x+qx,y+qy,x+px,y+py);c.fill();c.stroke()} +const bod=c=>{c.beginPath();c.moveTo(70,112);c.lineTo(186,112);c.lineTo(176,236);c.lineTo(80,236);c.closePath()} +export default(c,t)=>{ + const o=E((t-.08)/.14)-E((t-.56)/.08),b=t>.64&&t<.76?sin(PI*(t-.64)/.12):0,th=.55*o+.12*b,q=t>.62&&t<.8?sin(PI*(t-.62)/.18):0 + for(const[x,y,f,s]of[[34,150,0,13],[222,140,.3,12],[28,222,.55,11],[228,214,.8,14]])sp(c,x,y,s*max(0,sin(PI*((t*2+f)%1)))) + c.save();c.translate(128,236);c.scale(1+.04*q,1-.06*q);c.translate(-128,-236) + c.fillStyle=BN;bod(c);c.fill();c.stroke() + c.strokeStyle='#fff';c.lineWidth=7;c.beginPath();c.moveTo(86,128);c.lineTo(91,184);c.stroke() + c.strokeStyle=BD;c.lineWidth=6;c.beginPath();for(const x of[104,128,152])c.moveTo(x,198),c.lineTo(x+(x-128)*.06,222);c.stroke() + c.strokeStyle='#111';c.fillStyle='#111' + if(th>.15)c.lineWidth=5,[-1,1].forEach(d=>{c.beginPath();c.arc(128+d*20,156,7,1.15*PI,1.85*PI);c.stroke()}) + else[-1,1].forEach(d=>{c.beginPath();c.arc(128+d*20,152,6.5,0,T);c.fill()}),c.fillStyle='#fff',[-1,1].forEach(d=>{c.beginPath();c.arc(126+d*20,150,2.2,0,T);c.fill()}) + c.fillStyle='#111';c.lineWidth=4;c.beginPath();c.moveTo(112,170);c.quadraticCurveTo(128,196,144,170);c.closePath();c.fill();c.stroke() + c.fillStyle=TG;c.beginPath();c.ellipse(128,184,7,4,0,0,T);c.fill() + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*38,172,8,5,0,0,T),c.fill() + c.lineWidth=7;c.fillStyle=RM;c.beginPath();c.roundRect(62,104,132,16,8);c.fill();c.stroke() + if(th>.05){c.fillStyle=IN;c.lineWidth=5;c.beginPath();c.ellipse(128,108,56,7,0,0,T);c.fill();c.stroke()} + c.restore() + const u=(t-.18)/.42 + if(u>0&&u<1)for(const[x,f,s]of[[104,0,13],[150,.2,11],[126,.4,15]]){const v=(u-f)/.6;if(v>0&&v<1)sp(c,x+8*sin(v*T),104-80*v,s*sin(PI*v))} + c.save();c.translate(198,104-4*q);c.rotate(th);c.fillStyle=RM;c.lineWidth=7 + c.beginPath();c.roundRect(-92,-28,32,16,7);c.fill();c.stroke() + c.beginPath();c.roundRect(-150,-18,156,20,9);c.fill();c.stroke() + c.strokeStyle='#fff';c.lineWidth=5;c.beginPath();c.moveTo(-136,-10);c.lineTo(-112,-10);c.stroke();c.restore() +} diff --git a/gen/uicolor/upload/rocket.js b/gen/uicolor/upload/rocket.js new file mode 100644 index 0000000..24c848a --- /dev/null +++ b/gen/uicolor/upload/rocket.js @@ -0,0 +1,35 @@ +// happy rocket blasting up and away with a file strapped to its nose, flame flickering, speed streaks and little clouds rushing past +const{sin,PI,round}=Math,T=2*PI +export const frames=16,delay=70 +const RD='#ff6b6b',NZ='#adb5bd',FO='#ff922b',FY='#ffd43b',AR='#4dabf7',LN='#d0ebff',BL='#ffa8a8' +const cloud=(c,x,y,s)=>{const b=[[-14*s,3*s,10*s],[2*s,-4*s,13*s],[17*s,3*s,9*s]];c.lineWidth=13;for(const[a,d,r]of b)c.beginPath(),c.arc(x+a,y+d,r,0,T),c.stroke();c.fillStyle='#fff';for(const[a,d,r]of b)c.beginPath(),c.arc(x+a,y+d,r,0,T),c.fill();c.lineWidth=7} +export default(c,t,i)=>{ + const b=round(4*sin(T*t)),w=.04*sin(2*T*t),fh=26+(i%2?10:0)+4*sin(4*T*t) + c.translate(128,128);c.rotate(.6) + for(const[x,o,L]of[[-56,0,40],[58,.5,40],[-70,.3,30],[72,.8,30]]){ + const p=(t*2+o)%1,y=-50+p*120,l=L*sin(PI*p) + for(const[lw,s]of[[11,'#111'],[5,'#fff']])c.lineWidth=lw,c.strokeStyle=s,c.beginPath(),c.moveTo(x,y-l/2),c.lineTo(x,y+l/2),c.stroke() + } + c.strokeStyle='#111' + for(const[x,o]of[[-88,.1],[90,.6]]){const p=(t+o)%1,s=sin(PI*p);if(s>.15)cloud(c,x,-46+p*92,.85*s)} + c.translate(0,8+b);c.rotate(w);c.scale(.94,.94) + c.fillStyle=FO;c.lineWidth=5;c.beginPath();c.moveTo(-18,66);c.quadraticCurveTo(-20,66+fh*.6,0,66+fh);c.quadraticCurveTo(20,66+fh*.6,18,66);c.closePath();c.fill();c.stroke() + c.fillStyle=FY;c.beginPath();c.moveTo(-10,66);c.quadraticCurveTo(-10,66+fh*.45,0,66+fh*.7);c.quadraticCurveTo(10,66+fh*.45,10,66);c.closePath();c.fill() + c.lineWidth=7;c.fillStyle=NZ;c.beginPath();c.roundRect(-20,54,40,16,5);c.fill();c.stroke() + c.fillStyle=RD;for(const d of[-1,1]){c.beginPath();c.moveTo(d*24,18);c.quadraticCurveTo(d*50,30,d*50,64);c.lineTo(d*24,52);c.closePath();c.fill();c.stroke()} + const bd=()=>{c.beginPath();c.moveTo(0,-56);c.bezierCurveTo(34,-40,34,0,30,58);c.lineTo(-30,58);c.bezierCurveTo(-34,0,-34,-40,0,-56);c.closePath()} + c.fillStyle='#fff';bd();c.fill();c.save();bd();c.clip();c.fillStyle=RD;c.fillRect(-40,-70,80,34);c.fillRect(-40,44,80,20);c.restore();bd();c.stroke() + c.lineWidth=4;c.beginPath();c.moveTo(-31,-36);c.lineTo(31,-36);c.moveTo(-31,44);c.lineTo(31,44);c.stroke() + c.fillStyle='#111';for(const d of[-1,1])c.beginPath(),c.ellipse(d*12,2,5,7,0,0,T),c.fill() + c.fillStyle='#fff';for(const d of[-1,1])c.beginPath(),c.arc(d*12-2,-1,2.2,0,T),c.fill() + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(d*20,15,6,3.5,0,0,T),c.fill() + c.lineWidth=4.5;c.fillStyle='#ff8787';c.beginPath();c.moveTo(-7,11);c.quadraticCurveTo(0,23,7,11);c.closePath();c.fill();c.stroke() + c.fillStyle='#fff';c.beginPath();c.ellipse(-20,-14,3.5,9,.15,0,T);c.fill() + c.save();c.translate(0,-86);c.rotate(-1.4*w) + for(const[lw,s]of[[9,'#111'],[4,'#ffd8a8']])c.lineWidth=lw,c.strokeStyle=s,c.beginPath(),c.moveTo(-20,28),c.lineTo(-4,36),c.moveTo(20,28),c.lineTo(4,36),c.stroke() + c.strokeStyle='#111';c.lineWidth=6;c.fillStyle='#fff' + c.beginPath();c.moveTo(-26,-38);c.lineTo(12,-38);c.lineTo(26,-24);c.lineTo(26,30);c.lineTo(-26,30);c.closePath();c.fill();c.stroke() + c.fillStyle=LN;c.lineWidth=5;c.beginPath();c.moveTo(12,-38);c.lineTo(12,-24);c.lineTo(26,-24);c.closePath();c.fill();c.stroke() + for(const[lw,s]of[[13,'#111'],[6,AR]])c.lineWidth=lw,c.strokeStyle=s,c.beginPath(),c.moveTo(0,16),c.lineTo(0,-18),c.moveTo(-12,-6),c.lineTo(0,-20),c.lineTo(12,-6),c.stroke() + c.restore() +} diff --git a/gen/uicolor/wallet/moth.js b/gen/uicolor/wallet/moth.js new file mode 100644 index 0000000..38df2d6 --- /dev/null +++ b/gen/uicolor/wallet/moth.js @@ -0,0 +1,36 @@ +// open wallet with nothing in it, a dusty moth flutters up out of the money pocket while the wallet sweats nervously +const{sin,cos,PI,abs,min}=Math,T=2*PI +export const frames=24,delay=80 +const WB='#c08457',WF='#e0a96d',WI='#5c3d2e',ST='#ffe8cc',MW='#ffe8cc',MS='#e0a96d',MB='#ced4da',BL='#ffa8a8',DU='#e9ecef',SW='#74c0fc' +const moth=(c,x,y,s,f,r)=>{ + c.save();c.translate(x,y);c.rotate(r);c.scale(s,s);c.strokeStyle='#111' + for(const d of[-1,1]){c.save();c.scale(d*f,1);c.fillStyle=MW;c.lineWidth=5 + c.beginPath();c.moveTo(0,4);c.bezierCurveTo(24,4,34,22,24,32);c.bezierCurveTo(14,40,4,26,0,10);c.fill();c.stroke() + c.beginPath();c.moveTo(0,-4);c.bezierCurveTo(18,-32,50,-30,46,-8);c.bezierCurveTo(44,8,16,10,0,4);c.fill();c.stroke() + c.fillStyle=MS;c.beginPath();c.arc(30,-10,6,0,T);c.fill();c.beginPath();c.arc(16,20,4,0,T);c.fill();c.restore()} + for(const d of[-1,1])for(const[w,st]of[[7,'#111'],[3,MW]])c.lineWidth=w,c.strokeStyle=st,c.beginPath(),c.moveTo(d*3,-16),c.quadraticCurveTo(d*6,-30,d*16,-34),c.stroke() + c.strokeStyle='#111';c.lineWidth=4.5;c.fillStyle=MB;c.beginPath();c.ellipse(0,8,8,20,0,0,T);c.fill();c.stroke() + c.beginPath();c.arc(0,-13,9,0,T);c.fill();c.stroke() + c.fillStyle='#111';for(const d of[-1,1])c.beginPath(),c.arc(d*3.5,-14,2,0,T),c.fill() + c.restore() +} +const pos=u=>[128+30*sin(u*T*1.5)*min(1,u*3),184-240*u] +export default(c,t)=>{ + const u=t/.8 + c.fillStyle=WB;c.beginPath();c.roundRect(42,86,172,70,18);c.fill();c.stroke() + c.setLineDash([7,6]);c.strokeStyle=ST;c.lineWidth=3;c.beginPath();c.moveTo(60,100);c.lineTo(196,100);c.stroke();c.setLineDash([]) + c.strokeStyle='#111';c.fillStyle=WI;c.lineWidth=6;c.beginPath();c.roundRect(50,116,156,28,12);c.fill();c.stroke() + if(u<1){const[x,y]=pos(u);moth(c,x,y,1.15,.25+.75*abs(cos(5*PI*t)),.25*cos(u*T*1.5)) + for(let k=1;k<4;k++){const[dx,dy]=pos(u-k*.05),r=7-k*1.5;if(dy<120&&u-k*.05>0)c.fillStyle=DU,c.lineWidth=3,c.beginPath(),c.arc(dx+(k%2?10:-10),dy+40,r,0,T),c.fill(),c.stroke()}} + c.lineWidth=7;c.fillStyle=WF;c.beginPath();c.roundRect(30,130,188,104,22);c.fill();c.stroke() + c.setLineDash([8,7]);c.strokeStyle=ST;c.lineWidth=3;c.beginPath();c.roundRect(42,142,164,80,14);c.stroke();c.setLineDash([]) + c.strokeStyle='#111';c.fillStyle=WB;c.lineWidth=6;c.beginPath();c.roundRect(164,158,68,48,16);c.fill();c.stroke() + c.fillStyle='#ffd43b';c.lineWidth=4;c.beginPath();c.arc(210,182,7,0,T);c.fill();c.stroke() + const bl=(t*3)%1<.06,X=104 + c.fillStyle='#111';for(const d of[-1,1])bl?(c.lineWidth=4.5,c.beginPath(),c.moveTo(X+d*24-6,180),c.lineTo(X+d*24+6,180),c.stroke()):(c.beginPath(),c.arc(X+d*24,180,6.5,0,T),c.fill()) + if(!bl){c.fillStyle='#fff';for(const d of[-1,1])c.beginPath(),c.arc(X-2+d*24,178,2.2,0,T),c.fill()} + c.lineWidth=4.5;for(const d of[-1,1])c.beginPath(),c.moveTo(X+d*14,162),c.lineTo(X+d*32,167),c.stroke() + c.beginPath();for(let x=-12;x<=12;x+=2)c.lineTo(X+x,202+2.5*sin(x/2.5));c.stroke() + c.fillStyle=BL;for(const d of[-1,1])c.beginPath(),c.ellipse(X+d*44,194,8,5,0,0,T),c.fill() + const sy=(t*2)%1*8;c.fillStyle=SW;c.lineWidth=3;c.beginPath();c.moveTo(148,150+sy);c.quadraticCurveTo(155,161+sy,148,163+sy);c.quadraticCurveTo(141,161+sy,148,150+sy);c.fill();c.stroke() +} diff --git a/gen/uicolor/warning/siren.js b/gen/uicolor/warning/siren.js new file mode 100644 index 0000000..26a1bd5 --- /dev/null +++ b/gen/uicolor/warning/siren.js @@ -0,0 +1,25 @@ +// alarmed red siren on a hazard-striped base, its light spinning inside the dome, sweeping beams side to side and flashing bright when it faces you +const{sin,cos,PI,max,abs,sign}=Math,T=2*PI +export const frames=20,delay=50 +const RD='#fa5252',RB='#ff8787',GL='#fff3bf',BM='#ffc9c9',HZ='#ffd43b',KN='#868e96' +const dome=c=>{c.beginPath();c.moveTo(66,186);c.lineTo(66,124);c.arc(128,124,62,PI,0);c.lineTo(190,186);c.closePath()} +export default(c,t)=>{ + const a=2*T*t,s=sin(a),k=cos(a),I=max(0,abs(s)-.25)/.75,fr=k>.55 + if(I>0){const d=sign(s);c.fillStyle=BM;c.lineWidth=5;c.beginPath();c.moveTo(128+d*48,112);c.lineTo(128+d*112,124-60*I);c.lineTo(128+d*112,124+60*I);c.lineTo(128+d*48,140);c.closePath();c.fill();c.stroke()} + if(fr)for(const r of[-.84,-.67,-.5,-.33,-.16]){const b=r*PI,l=14+10*(k-.55)/.45;for(const[w,st]of[[11,'#111'],[5,HZ]])c.lineWidth=w,c.strokeStyle=st,c.beginPath(),c.moveTo(128+cos(b)*80,124+sin(b)*80),c.lineTo(128+cos(b)*(80+l),124+sin(b)*(80+l)),c.stroke()} + c.strokeStyle='#111';c.lineWidth=7 + c.fillStyle=KN;c.beginPath();c.roundRect(114,50,28,16,6);c.fill();c.stroke() + dome(c);c.fillStyle=fr?RB:RD;c.fill() + c.save();dome(c);c.clip() + if(k>0){const x=128+46*s,w=34*max(.18,k);c.fillStyle=GL;c.beginPath();c.ellipse(x,128,w,52,0,0,T);c.fill();c.fillStyle='#fff';c.beginPath();c.ellipse(x,128,w*.45,30,0,0,T);c.fill()} + c.restore() + dome(c);c.stroke() + c.strokeStyle='#fff';c.lineWidth=7;c.beginPath();c.arc(128,124,48,PI*1.1,PI*1.36);c.stroke();c.beginPath();c.moveTo(80,128);c.lineTo(80,150);c.stroke();c.strokeStyle='#111' + c.lineWidth=5;c.fillStyle='#fff';for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*22,136,11,13,0,0,T),c.fill(),c.stroke() + c.fillStyle='#111';for(const d of[-1,1])c.beginPath(),c.arc(128+d*22,138,5,0,T),c.fill() + c.lineWidth=4.5;for(const d of[-1,1])c.beginPath(),c.arc(128+d*22,120,11,PI*1.25,PI*1.75),c.stroke() + c.fillStyle='#111';c.beginPath();c.ellipse(128,166,8,9,0,0,T);c.fill() + c.lineWidth=7;c.fillStyle=HZ;c.beginPath();c.roundRect(44,182,168,44,10);c.fill() + c.save();c.clip();c.strokeStyle='#111';c.lineWidth=12;c.beginPath();for(let x=30;x<240;x+=32)c.moveTo(x,230),c.lineTo(x+36,178);c.stroke();c.restore() + c.beginPath();c.roundRect(44,182,168,44,10);c.stroke() +} diff --git a/gen/uicolor/welcome/door.js b/gen/uicolor/welcome/door.js new file mode 100644 index 0000000..c3fc1ae --- /dev/null +++ b/gen/uicolor/welcome/door.js @@ -0,0 +1,34 @@ +// blue front door swings open toward you, warm golden light pours out with sparkles over a heart welcome mat, then it eases shut +const{sin,cos,PI,min,max}=Math,T=2*PI +export const frames=20,delay=80 +const FR='#a9744f',FRD='#8d6346',DR='#4dabf7',DRD='#339af0',IN='#ffd43b',GLOW='#fff3bf',MAT='#ff6b6b',MATL='#ffa8a8',KN='#ffd43b' +const back=u=>{const s=1.4;return 1+(s+1)*(u-1)**3+s*(u-1)**2},io=u=>u*u*(3-2*u) +const sp=(c,x,y,s)=>{c.lineWidth=4;c.fillStyle='#fff';c.beginPath();c.moveTo(x,y-s);for(const[px,py,qx,qy]of[[s,0,s*.18,-s*.18],[0,s,s*.18,s*.18],[-s,0,-s*.18,s*.18],[0,-s,-s*.18,-s*.18]])c.quadraticCurveTo(x+qx,y+qy,x+px,y+py);c.fill();c.stroke()} +const X0=76,X1=180,Y0=36,Y1=208 +export default(c,t)=>{ + const o=t<.08?0:t<.36?back((t-.08)/.28):t<.78?1:t<.94?1-io((t-.78)/.16):0,th=o*1.2,fx=X0+(X1-X0)*cos(th),d=18*sin(th) + const m=(u,v)=>[X0+u*(fx-X0),(Y0-d*u)+v*((Y1+d*u)-(Y0-d*u))],q=(u0,v0,u1,v1)=>{c.beginPath();for(const[u,v]of[[u0,v0],[u1,v0],[u1,v1],[u0,v1]])c.lineTo(...m(u,v));c.closePath()} + const L=min(1,o*1.5) + if(L>.05)for(let k=0;k<6;k++){ + const e=k%3-1,a=k<3?e*.5:PI-e*.5,tw=.75+.25*sin(2*T*t+k*2),x=128+(k<3?78:-78),y=118+e*64,l=24*L*tw + for(const[w,s]of[[11,'#111'],[5,IN]])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),c.moveTo(x,y),c.lineTo(x+cos(a)*l,y+sin(a)*l),c.stroke() + } + c.strokeStyle='#111';c.lineWidth=7 + c.fillStyle=FR;c.beginPath();c.roundRect(60,20,136,196,[18,18,4,4]);c.fill();c.stroke() + c.fillStyle=FRD;c.fillRect(64,24,8,188) + c.fillStyle=IN;c.beginPath();c.rect(X0,Y0,X1-X0,Y1-Y0);c.fill() + c.save();c.clip();c.fillStyle=GLOW;c.beginPath();c.ellipse(140,120,40*L+4,70*L+4,0,0,T);c.fill();c.restore() + c.lineWidth=5;c.beginPath();c.rect(X0,Y0,X1-X0,Y1-Y0);c.stroke() + c.lineWidth=7;c.fillStyle=MAT;c.beginPath();c.roundRect(46,212,164,30,8);c.fill();c.stroke() + c.strokeStyle=MATL;c.lineWidth=4;c.beginPath();c.roundRect(56,219,144,16,4);c.stroke();c.strokeStyle='#111' + c.fillStyle='#fff';c.lineWidth=4;c.beginPath();c.moveTo(128,234);c.bezierCurveTo(112,226,116,214,128,221);c.bezierCurveTo(140,214,144,226,128,234);c.fill();c.stroke() + if(L>.3)for(const[x0,y0,ph]of[[150,150,0],[118,96,.33],[160,70,.66]]){const p=(t*2+ph)%1,s=11*sin(PI*p)*min(1,(L-.3)*3);if(s>1.5)sp(c,x0+30*p,y0-26*p,s)} + c.lineWidth=7;q(0,0,1,1);c.fillStyle=DR;c.fill();c.stroke() + if(th<1.45){ + c.fillStyle=DRD;c.lineWidth=5 + for(const[u0,v0,u1,v1]of[[.18,.5,.82,.68],[.18,.74,.82,.9]])q(u0,v0,u1,v1),c.fill(),c.stroke() + c.fillStyle=IN;c.beginPath();for(let k=0;k<24;k++){const a=k*T/24;c.lineTo(...m(.5+.26*cos(a),.25+.15*sin(a)))}c.closePath();c.fill();c.stroke() + c.strokeStyle='#fff';c.lineWidth=4;c.beginPath();for(let k=0;k<6;k++){const a=PI*1.1+k*.08;c.lineTo(...m(.5+.19*cos(a),.25+.11*sin(a)))}c.stroke();c.strokeStyle='#111' + const[kx,ky]=m(.86,.46);c.fillStyle=KN;c.lineWidth=4;c.beginPath();c.ellipse(kx,ky,7*max(.35,cos(th)),7,0,0,T);c.fill();c.stroke() + } +} diff --git a/public/403/batsu.gif b/public/403/batsu.gif new file mode 100644 index 0000000000000000000000000000000000000000..47eb7f9942155b073dc39160b4121bcfedac8bb5 GIT binary patch literal 112835 zcmeF&=Tj42w>bI$frJ`r5~_5NqM>(8=u$%wX+r3cCWum`2!uc&lmOB}LzSvDktWiM zAWf+@dKW=OgQ8r%&vVW_=l@Bb(* zoli@X6%i>nGKvbsiprwDeElOTW2TRJr>GkvrR=6{RZ>JsnqHvjIkudQy!_kr^t7`@ z^=jJL_7YNEwdqk-s*8)4p&=(s)IDTU!z}xSrR7z(0j%?Ndu{FMhL-4{o2{ie#Hir< zg0zINTW1IBdLkmtW@gp7L|$S25KGJInp!_s2dtdj`dFuys?wgD+sy2uth%qM*Ldt5 zUp7|Op|Po_MWh!4uYUaau{zp*wmC=C)*iLBtu;2*(^h}+viI!!p4F|7{9Ih+nTdJ% z`B!zcDJQ?;2&vNAxtvhpSPhK=Jv}ivJVaSpL`bl+>xHVCdVDg;9Bs9^xmi?H^b3ns z6BINN7cWkYD=94#Qw(oy>y*+UUDm7Wt$VcM;xhm4lU>+xLsN^SY9c30Vz{yFL3Xy9 zlKdrJ-Y`E80f}p8KaV;p^XDBM(@7b>K8}AFY%P9BhCm>BiTD4mPSv$^iXehcKTVh$ z>TJD!!6#-B6cTZIdMYg=8xU}di(7hbenHN#>DjYqaDGLE!ISIK(yJTWLYKVT+uIcp zvimc=Go5uC+j}2Aew4rZ+|1FAQ?v5Do)X~ z_jd4|Z{NO&h=?R5B{{o!T{SWPu{7%BjFDGRv@tb|iNi(Vk_t=uNq%LqAaa! z)HO7C_yit5eQslGcX)Vs86oH4?ISKGCU8NJor7CLOB)J>g@uJHtEj@^a7jr?etteK zE-nrZP97fKv#Kg~Hg;u;;j^nQ^i4vzpmjyJnvcub$P;KgIMX^P9BREjDA{)I{w(w*&p}HIG!G{4)D_?YC zZ!IL{YjNoNJv!c7sOR7~PT@ZI_&S#T%b|J>t9Ck};W%q@yoSWsI2wK~?>%{;f5N(IFA+_py3pZRf^AnX<2fTcF`aK<99fo~Gz z2j1p?kVOhmrQE~u6)dQ|+or~ng{se>W{77p`FZN4&ckczw+=*rki`^tUpz%q-dtIe zHOrH|-9chB6{odof_UB4m3}wAB-!cYnTkVk6o&8Z#7p9 ze!8YM)=hK4d?Sx5m?-g$rE)^(giqLWwMhZEB(i!6{*Bqd^i2>0E?m((YONRPILvRv z(P!e69;RRRvvSeWA-`^Zo!*=Ba)M`HLfqnwr|^ZNOIv9G@k)MQ1le(&syWh6gio#T z6H2fjDfs6m;%!(4wLb^5SNtmP+=9N`!(NsU%`$jr!;p$jFVme5l>%$u7$;7@f(19e zD6-2Kc@|KW+bD{wWhc3MoxOEU^=!M zoj5$IPk54VDA|Te6qPzc^^j>)I#%?{=*9WE0al#9GxcMU;sQT^v#spv)ZGpgVen@1 z2r2Dhc4sBZ%>k?~DTfKt+j{XJmxk!FgP8*)bxCGEx{Pw$M1z>rM_`!%3^tj8C_ zVY@W{I;s)Vj!Z4f1$ST8H_U=bW!RhyL2MY|<((a2?x##%_cI&SHxv;UUK7as0bJ#h zI*%`}wUr|tj|zB3ifBh28IZ{OhKs050rIKkr3W|`e#>t~`)qWq{#nD3%fbm`eB&x{ zHl{OSx?bDk-XR3JGp+gWOh)s3rka1)8!se@7)(ae4SpX*$4#do1M-J2ez^ED4Q0TO z>TvUInx0DYlHhHuD>FeQ#wVSQ1xmW}KoSF2z#Qy9u_4s*%U8 z<%F5Og^dtj=L>$bXc`q$C;|K0d8=NFEaEge_FK|HRlwQso>jK0;bId>fJz>@L&aA9W1z|vA|w#F!^-(}%o(JcAb8SOn-pvKH0Irm zV_jC;aUND%Csu!uB_a39E9#&>><+sL*)2su#Fdx_rUlMe#G?P_un*LZ-x7}99t;}# z-(M%byGJMQ#>$S)-G$06TyMxDNxA3 zQBN;#V{@9HjHQC|UHM1|ck#;$usOQwP<{O=%oCw<1LUQ=TB7g$B~qSS73gL3P2Byq zJ*Zr#{24il?IuY*-&5c>zV|zyY1WO=)ZV%~T0N?Uo-yIY9yXOQtDy;#KTTVv0_~Um z|4hdy@ID0J3P$(_isf_A5RTtAU;fa;a^sJD+A*M1erI%Dut;L{;MGvMj<8e-Ej^Re zZ+!uup)@W7Yv=E7Lkx>I`$dmpw@uS#FK@BVm}Wcf^nT|W#06DI%Hh(S`Abrh=)Y=< zJLQLe--V7U6-tBF)&y7jW~;bOHRIp9yu><^Y6Z+RGQnwcM!G!pREgO!v5T(=Zm)3D z2SP*F-9i~}7DXS?MZ`2RUf+-FpKA>8HU6{Rz1|DO1ubFx8j}VTxhL{tK?6TgDSnYS zUgNWF^A~?+CN2bZDuh(lkm7osesE@$Epn4wo}lwBI^DU&v8hZs)8AelMk0pM5ToDJ zi^rxs7i{S=t**-Ojv%cnacYJ4(mv-pA1RkAxs_w-Z`$MOVj(c{S zf(h(~SS>8c){m#je3mM|sqlOD)90_4T_V2~W|Q~%!gq{%YzT}*$BUgelrU&c8F9xc zY9W8GTSpQ%#VWfNQO%C)>pf(A;~+L9082dEI}KKIQrlq;(!7;S5P%diN2M*Eo2F zXnG3Xh!N1B{4gp1Rcecg(VR`45iKlxal;~Kdzljm;*TNT{ zgXi^mwnF(kL%elv2i&J}#jU6#OM?TB?jC#dE^OV8Mrek!g8#z6b6e0tK->u|^f?{q z?_>2fDu~Y%?28~+cOj0l%<>o! zKL&`WplNl(A_&5vQH?QkC_DLq0OdUBVYZkC0iqSgFSiZtLNm)D;NfUyYsv8X1`tIB z9~#44F%@sE$`sMVC_j}Txee1tGj}22c5M&`u#f!=9-9$_QHA$42uz4*&XNr|66B-G`k-U`WBgBBCxWz`gmvB)jn&6mun3FgLx00g0 z4Qr}O`AA7U8BU=bCNEH>vPg>FF-WahfWh&p(HS>)EeQc~QOkDepTfeUrwLW^@UW1Z z)siXEy-fD<_xDgBTyMyaJkqF9Qj}c6oGaaFp4cB7@4ap4XSgV^S|E7~iX?*%$zX** z5QAFg-%yaka>fDxh|BO@oQ{c_cG8hI+y#?NbHxM`A=2jou@sDqmV+$BFg+%LMd{O$ z0vSePm=|(l!V~!)8~E7E+qZ4Ngv3SPy@BaJV1^Cd<+SBKJj_Z_dC4uO9TLD6qmGP4{XU6t8FGh7Qy`XmXyhGsz931LVvlso*-V>~PK#TKC1QH?D2 zrSASmw13dWX3NlGaS)D*?w26AIKPm~jZy22L=#k%L?qE@A>sy-@{Pa`DP)fxjM4Ej z&CO-#mq2TzPGD!OyCTIl7hU`(knUa#W{47Ixy1!R0mw4T(9IZnTqDckFz_dt z{#FS?b`RnklIA3r=BYPtHi^ZbjqYa;a52%7(tsZR@n|-jjB{g5-h=9XEt5pscc{fIAr{Rpx;5uObOC1=EBpc zFW9hx0K33|*gTeaf;Sbn#1E0yGkKUffE4B02qy91E{cpfd~!|qE}`OFG9el1Np72Aol@e6q442@W?j4%FFex zy;XJ)inawnwm9o~x^a;^&An!nbc-Hiz2Vqn>`xlpG~--jGi3_sv|I5v&<*UaFs>ZIdoU~l9V;VjyD*bqrfrY3;W@C5LS zmh)_=Bx*_)+5@3GY({D5Mv^*Ddm!)_$mglfLe*{xx_hhe+3r~P0prUTo#9bJbeodT zXLo3BW#di)L+5!d9dvAn;)N$QO?QMcvGX7kdEjShfB>246~d81W(c0@K5d{HTz%H< z*b6J_<=uw~F!c$af<>7?6C&7q=;qn0Rd+J{>@#h@Q*qPDWO+4+IwSl4Og*_{3Cxh7 zJ+$optU;S6M=N;Ry^QQDBn%ug_L(|yo4@ZyoA%u#_yzP*1B@AIcwptcqR$#?eO=w` ztt<@Ip-w#&SR|~FHC&lwT!|SpW9su=V!jYTyqf|E?HUMw-yQLOIDz~ys!cnlv)M^DOZa^;v9+xf5CZ2fP`68#;4=hNi$D4JSka16zH}>@=Z1|^$(l+c1hM%%QBhxS%5et#3x*t$NCHS5? zwPgHrEmc5CersFT_xIgDPGOXB$gdO#9XNVvA4*w*%wNS&rf%23o@P;T+xSelcIt7Q z!0%AeV!gp1GFj}$AtDIaUj(&n(c>WucyxQ30+byg3Nx(N42(WdVL zqd6dPRMRJdxt*ucxRo)^4cL4j|D!{ubaz;=P%r;76nZ)?-9SzA8lt-lLFXno_Vd(8XR?38?Q3+;*`w~^EK6ItNV`;}Clz!B z*Tr`ZsZu|5Um!i+>zN!`ps!3_s(!IVnOgE!aiJVC`2*-b0l<&lVkv-$lLo&MA`hw2 z8TGXwYQ<~bGBR>H3TsHiXbs_;T9BTC9>)NGNPb9m{D41;`jA}v;a3CL8OW`l!*3xm zipsRUZT2===>34d-7Z_mw+-ry>$Fjp^tuQD9|EXV)22oyQ9eU|z5et!^#WB|NJUKU z9hHLOVll<}kEMIiTOXWltMA~Bs96sIEP>P-XkwsX9t8kluOkViaf=Fshc?hiECV0_ zs>_Jb-Nw+n%(4DET>eySNmOrxKEUoLMB^H1z9ZK41gHgLLQGg``omfD1#5Kk*G)dI zV?oqH$aTGL8k`XGZX-4*M+_Xg<{10tUTj5{CfqBB-)s@46R@Foi8`r1s(6b2?@}&y zm_F#>X_6qdU-ZU=cV2YH*h%0J`$w(-6s_-vR{FEvetUVh_Id%2+RX^_bwl&5=V0m# z?R7~6{BAgZ=?55BG31@b+Z)qREV?;pxq=YD>H=@BozKL@QsEtSJX7d8R~Dd99BaErkCf~Zbeb;iOw*x zXV?Ux7EM;5USk#BQ@|JBK1Z)GILt7|u0VEah};4@Yz;KYhnut7_*gPnf|V*mU@aPz zHrLDY+4-6dd%#EsHtcfGCVLWefMOi`th5Tx=u_!3o;-YtAj>nxn^Jx)BJ;~nVQ3T(G$ zyVbJM=tb!tuLRP|I5og=k}D&!fU>#`J(l;rPxZbvmSL`NKcECuIr+q<9~zZGcLhR5 zO+GD-KmRE+=%X1@o*GjS*-mGQsoy9qC(nUQ7o$QnO4dHXW`sq3EEc00>E~P+vg)S; zGSd7ke%&CqBQFetCOLyGAx@Z|fax!$JduA-SELCIWK?9u!8Q&YG@TO6AS)mFz+!F4 ze_BQ=US4L^D5_u6!3pFEVdjY-*ZmGN7rja-iiy+t4Vn3 zY!wdxAS!0!ZLic^D}ImOp4_p0a^pobEwAmqT@xnjUbt1ZRQ)|zv(&m$mKQS_^y%n* z9-{!-5puKUWWhLKz_ni6wxs$?nnlre>&h%VRcL}I={QLJ7l)8_qy^in-|Tv_vsZFu za`cNGj(3|(-<($e@(w=JA-4Jn0Y&=1R=-OX@*TMQ)%^uL*65N|-qr(8!sD-!qU!Qf z0%S_*#;@Ybe4jRwJY!JU-y+sJ;5P%@A1TN}CSJI3cjlfGmR7FbUWnv6%OoP> z*+8h-p{g2=uHDGkRi5@2^>|Vx#I`BSP@W)75*m&F7%1ia_){xYO`;DwZzU)GN0nFJ z)_Y^4^y;?^tBm3Avz{98-U5;@Epf7o3ai42l^O*efm7g*lM+LzF-v3Y`J z5*<`axEk4T)K8K;lT{di_yM&xSw)|nU0>(%g=Dn9a1UkRt703U*NJlR%lQw)MLA<}l}N8C zzc;wmBcZpijR%z-n=ko5E^M$=RFl%D=xJf1!R-d<$hqE1l9;$tDXZVAo^?gR)+N--wGrJdKnTPBhC*HGFGuVGR>UWLuGRUrWAIHn&1{itq zR0SLiGUg)Bh^>-zC4Z{G7s6P1>E?Zd={hkJ4oO%x4z{MHPo8!yMh^{?lWDVWZvGuw zs8opFDs11H^D49P;+rg$_#@WAX)gTh%U%Oa;+n&Ky7UpqBjq3pDD&m0cR`10C$Gc= zS6>lRW*N=Agkzk*&3tQm*RErg`!y2wQ8lPa`}-Lp;pUTfU;ch8KlWz2wEqvDhC5e8 zopyG@$@`xMJPdoK%AUzs!U#93K=A_*8U1zYxsn)A^^th09VDgq3}P6KyTw%)OZXq z(Ci4qI{G!kToC6>X&5}}c?SN&wa%r|0+L)1m$-3Wl$k_>Cwpd<@S6R}9fvn)QB;H1 z1H}dUgYA^=HM4lseOA;N<-^LP)nUz$Ps)a^8E;7B?`Rbz^anz*Is<%izy#cxuXUO_hF62_e1T z(z8pfh;1uvR^Wo+-(dCp|ScGJdfBU;l|NPc5e;yM#mXe`)T2NLx!f) zhRTua+&@_dyJNmGVVP#=mYaG7OJeoOWE|&DOqGtuw4rrmIV)WAo#W=o=q||&8;7j0 z8Vb|3bts3?z8IDqvMdgbcO_X7GCAqE={oH__{z}O%V9fXym6&T2VuEWPUzy)d$&EI zy+e@GYs_p8K(@J4BThawBLVQ1$fn@1)-UAP0HOr)QxG&1!_F*VdMsc`F;Xv~7!sXI zZXbDATCPb}h4U#G$5uVi7cQAd=j^Y;G5Ow|KqW?~#?^|r#)%vVrPQqeYtQb#FqG4_ zGLy`KR8M)N2{EwAmA<-0;C{0nzpTdhu!fbhreQ>_iD5AUTUyD`PN!0iG9`d@c-|Yq z&>u_a=i;6t84ij?D71w8;g?;qR&;U0X&9Q_>8FaYV_M)!?1Ub4aOnC zlqzfO@W&*#y4L3f6!3+TJo+L(VNlYF9&ODxCqen=QEC1|A%UxDT6xPi`m3lLIGZda z=T<~Imk(^RORUASh0BmTczO2yksFZ%3FtaWb3aSk3~(PX;;=x!ZBEUo+v--$@=Ug z39tO8$v(R$bv2+t;5}OB;o}Y~B9^LVrGHfY&I;p0MH&fTF9Gvk3AqlYxQNbv!^`)t zy2q1g9>+bDlG`R``LfcywdTho*)pkDGT+|w)Sgq+9N;jz0i1cVR`e)ZB+bhd$30C- zEXvDF(zcosE>%5tsj%b^HxkJi6pm%I3!*Z0tHi^w}`lWNj z3hCWPXmz|o-M(7*GOE$X`?JirU?}l{%A{pFsFZspg-JS|X?^bZ$7ZgJZX2a-lxY0q z;8tpjh(MDkMZirE4Z)^MhTiSI&n@FJ}1dGayBnVrB z4X{dpmPBI;I72t{_Pw%G>Fjh?+?C!JjAcl!+c??0%l8zJhCFx%-zp_|xg%T&zd+5# z*Q;So2xQe5!Ggk9dste)cafPkQ;*s9%UqUmyOd_63CeIL{uR-B@3-kjl3S7c zW!JH);4Fmhc;o9v+|imImwcK7V9va zLwu!ez=dOa-KgYY zI+T8B(6ub@b8l#h7h)Hzt=k2H*Rd={7|;YiA&zPWMM8?;IaMd%Yj$nccM@#)kVbZy zjeYXEcaUH`!ZpBvst5jSvsNl=pY4F*8Koyl<~`UquhrrEz^>}czS6ecwu_;WSICls z4xC1jb_QKo;L}k~R3y zS1~v8s`Uw2aV_b7Gl5gpm;=agSMo)5vikdeZ8}rks|$VU3)HHjy0#6*c({r~=WwMS zbCJYa%-6ktfXx zG%vr)y{%;l?HN0e&g7?O8|KX8wymJ$5#Ozx`aC48>R{xv&u5g ztS2=LfL?u7#SbKgDE5fgrG*C%TiTfy8G-QDC2B3^4@nxXYtu)j^{K3htL#r4Ic4Td zP`5FtqN+qcbf2Q0)fu@e-sOQXkpODsV40}Sm;S&I@0zS$r-YB8J>5}=pBhwrFONEs z*JY9+#|U~GS>j1o>D<9u6l&j{a_Ll#gtmlKK}EbBUfT2(+O*$NFL@V}DB!5$873Q# zz&}XQPgONEk4;qoWP7Tc^HU|JPW4!9$c5?+RLUh3ndsgoNSf+`&&Ctu6gdsJVlsE@;9UO<8A2aSbwt-qvB1*`)ys31PgLo zf}`Dx9DmvwxB#e(!MQBI*$tD?jW-lm8;>-4Q4V09hNsS;$4|@BF9WXEzzKNOafjts zlafeX&V&NK2A6W=WqxUd849#-9hnC*=zOb|l$>3WT&ueHRC@k<50zFPvoAK`_jy?I zrWBp7kd4}yXp!DXpzyNEb>8j@ATT#Pw%b2aYT#*)H)!aljr9tj5#w&KjJV z*jeNRO)3ISdsCoK1DP$VlO^mvD6Mfa&Ek@0;qL znu>FyiEZ(=Vgxl>m3VC2v?@+qwN%YBGrWO%NwKHCF75QKGlR|KyP{9;p2g**zNIo_ z5NQKGXI}n3n0P7X#^b^MqmG0xX8nhshd+mq5?4*2 z={Uv!sxb<3*pX2mTxYWW@CauV@VTJhvKMXZ`ylewSS%gli!3US4{ ze0;aZNhejsuHI+@W$u?b@m<=fG^OX0rW<#w3BKnY_%GT+lOWUt_BGONtWP`R9(VJ< zgWD=v8aKP*?&PdKNbh`2TWloZQE{K*+{dDUrF^q1o)kB#KZKAGTNbEE(_8n?vvJFJ zE~zWOuq=DS>OcP-m*88+SZ2Bo|BHX%Hy?UU!zB8h(O-^!X-w2P;?qaJz` zl-cUOHt?9(NTE%>a#sZ%?RCWGSx`n(sC2F9nV0XJ{p{MJb;L$F7kVP!6V>S;uOFWv zv*nv+Kt{}X{PyJAv~&$o;jU+SS-%x)E7bF6v{y^XTigz73l51LJa1-?#8xL=;^zxyq zOU(Mw_~2kO_s*6Fjc+6wQxCm)QJ+vV(Oj#&Z1<

M!`C{$56Fe7fLnxz|?ZDL5cT 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

  • LI8_l34gO7m_!qA3)2YU_ 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 M^za=z0GZtX02GSP?EnA( literal 0 HcmV?d00001 diff --git a/public/403/batsu.webp b/public/403/batsu.webp new file mode 100644 index 0000000000000000000000000000000000000000..46dac4cbc4bc9d2a01692de56c65df3df6d0da8b GIT binary patch literal 136216 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%0A4Y~!!=_Ic3-MJoCcFV!3b|?F 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

    iPiL_LS$*xk3PG;zLl2M6%kv%I#QqU{|Ra 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

    FZ9iPYfE}FZ;@0}lpBp`Cg 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 literal 0 HcmV?d00001 diff --git a/public/403/door.webp b/public/403/door.webp new file mode 100644 index 0000000000000000000000000000000000000000..12d1538ee743a5e7cc40a90ba3aa817c2e5e6ff1 GIT binary patch literal 69678 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 z zNod$AveeU1XxgKw>~o)XDi=@+m1ys@*CF5X5eAK`1lN#TDKwHhX1&Fw)UWc0i*i3y z5mo;`>0e}6MA0tnYPa5a?yrPaN(h~Pjin+|E> z{hr=ZHgJeZty$nLmYH*rQ)$^X|A8A_Yw{gwC0m#O0DZ>aNtGMCcn=*vW3lDe*l3$w z_dk5I$;r7%Y7xnCOixTc!zavKe1)|(*><-Bjyn0=%dWrkk!N0g|BIiB)C8LP*9Ye& zA}>lfmU_m0<>McE_O%bb`njQ(W8&PNQS87UqbRS2#CuT>H|LLt;>(dy^1hKa@lyY% zru{bYOox!`Z{a;2TF@wN*6ze8{FXrPNV^)1sdM>Ivmk_T7{c#|8gu7;p_n#z5;r&| zdmM83yVc?_gIkT+MCUO7{Z<1*h0T{6I?}3hBi=3UJ9PP8J?CzE!M~NVRSxZJ)hsll zO31fs#LYYNr7G%#*0-t~HDra1M+YYh&x#6~2W-I(4~_0&_z^$!OBYU;*Yb4;&21a5 zpoNugPw6@S_iR0*yAK=1r^S=y1JR0XgF_V(7Y+LH70#n{?vQP4$dXzO%~q{ka<*wH zuA$!9JtsY52>zaHenPiXL!BDOJA1V%L0leck)5!8xq@t)Q#OR^XIoybMYcUDJwsKq z-H+Mz8a8QOpL+eVY{x>etykl&q0;%4t!2G_-iz;k`D@sety{JW(RE3YaxI~}{D{A1 z*FQ{znA`i?d^e+BP4$PA3U%oD?7tEYylJ(pIi+}1u_f7MS5+CIP_jRZRF5L4AaC&Xy{m8weX0rmqH|O- z6fzD-DqBTB=ta%rqHpM31x?eHMMY%jerp8((31*Er|aLt3X(%tYmP4261r7EOxmUj zazd+X^cv)11rBLLDkv4QOF5oT^5u=bdIePi8VzM%g?|S~gjP^DWJ%eQZ+qGJ^dVof zg!H-5$H|X4r_Anr9b?;z9YPE94JE z`relK_My2*sa>$$Q|_RfIjFZDkyZ!J&fH+e7W!K@bed-o=?Tjj>TbDQ<)H57p_RkC{4e+7*N^S{C>CG)d%jt5-zKUZxvga3ZMV z`bTmmsGquDI_T2^;#9!q&OP2rsmqbKe%}R;e8O+9ziD#s&8IbyetyXz4e+!Hf4WWA z17Dmt6b|A|*K@s;WnwbKHdWD^=cVjC7hSB`bfbYfZY~8PR!21-7M49}S9j

  • Ia5k3G$95+P4p`f`At*(Qb3B+S6TkF{-Ph(v<53pld{y&+5|<= ztEDv(szJ)KPHPNw7U3VNqBUMwm`PbGXib93A*w4uw5AGB+TvN1ZqS+`KnbgwCCkZX ztE)LenaxU;A{P4S-Pd1w_VI`A>EQ*lKk24{y}Na6-E7OoTwZ2hUT>&W=i|qU8vfrP z%)IUYoIA&fESDd*2+C)#TU#(uKoJpf`ohO6!n_i9BjAnjmz&pnUg1o*#e!Twx%u#> z#oa03>G}u%+nExNl zE!uYO(QojG-=@qwbj__xuC96H$>(3W@ct)!`IbKALLjNPS=CcPSP`oHnwu}fdBYCY zh4bo<2YS&eGKwPI%hshf?})1;FQ8bUKAV4KU2E-GbtXM*fvxHqYTaycvZA#`_fXzv z-EFy~08xNekpCB4wnvmdCwgkwX4&Nmu54){#47{69un^r$?qH}p5^`~q z$3S^ueB-fXw?NrFd_r02ZW6|YxnQZ5La8ws$Ucm$4bp+^9?17f59PQ^HczxRl0B>h z6lNA6G1(wJzXz$FfV_fy5|```Aq*)?^gN~#^b1)Ng2hbqstSn^fov+lJ5+CDHbR@p z4(WxX4@oGXZ{~wg5c+%w&&>Y*+I-lvRi{W7UAPt57m&Xz$jkRjH(dA>vQ>|k!=Es@ zly0?vzF(1EmR@-c-74MR!86WEGV+9wDLe z2CJ&hZFJQ!wV;u7t#k&{)x|Ur(}>%2YFgt1mLS`CZ@LUR>FH8pZ+bu#=psYnJ8-B- zG5=4IkIuic(|JsR;?OO<`_KI^zWKoy=9gSbCw9b+di=g+ck2)I9P+UrXp!3&N86$E zAbl}K86Qpp}{A20Wu;^_U>HE&!N)?Ek|6J?m*?ABvJXf?r) z>M7*4Kx&keA2`J#_0G)Nn*`auZbJH^9}*@|rWSK|^Jo9P{o1cj@7a0x(p#?c&YC)5 z)X@IDy0&lCq+YEmv)k;<*RP2zhifYZoLN#8$EH_?1k5FSa#2Yr=I!s^>;sXeEP6k#Z0dL Ab^rhX literal 0 HcmV?d00001 diff --git a/public/403/stop.gif b/public/403/stop.gif new file mode 100644 index 0000000000000000000000000000000000000000..b4b1603362c96f5b47d190138d1e40931f3c2ccc GIT binary patch literal 123109 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

    _<6+KRN*GW~Et*?HYB3DT+B(#oG0TKsx`RQT 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 T{O3o1`qjUF_P2l20RaFzw}z;k literal 0 HcmV?d00001 diff --git a/public/403/stop.webp b/public/403/stop.webp new file mode 100644 index 0000000000000000000000000000000000000000..61cd857521330da3e507239a2b71456a7c94b5f7 GIT binary patch literal 141636 zcmX`R1CT9E(=|GtGq!Epwr$%wW7|4o+qP}nwr%^L=e=Lt9o?}jyE9j1uBz%?(R(RM zh>CJk00F3p2+FIe62ICR-2ciZJKSUnwOflcp}#R=QYyIQ~y72Q=;apLds?v$3>Kl=5nrPnbkXI5}FS5Ya%8!t59um9RU|D8AIYu~E}Rk=1; zs2;wEy#V;V#Q%Rn|7&F1tZ?@=lSsr9OPmm#apQB8LlEo{ce6VBk^Yl62xxQwA(cs0LU3JBYeGV~`@j1%=UL?t6}%Wu_U+((sA zUsU)^(T~`V6A2(3ArVNPh!Bk+^zW9OHQ|z!NY6!+l^Dv|C9=i4G>Js%Ax1B7s~JUK z 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�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 J2#f41a1EevF6ICL literal 0 HcmV?d00001 diff --git a/public/404/flashlight.gif b/public/404/flashlight.gif new file mode 100644 index 0000000000000000000000000000000000000000..571246db67b65ee59052d11bcbbbcbc354ef7b71 GIT binary patch literal 59315 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�X9? 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%0DTOGG=OK%%AZa#9XcFAFIx^K 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 WN^r#7!y>8@D84xsjr)gGGyWelMhKe# literal 0 HcmV?d00001 diff --git a/public/404/flashlight.webp b/public/404/flashlight.webp new file mode 100644 index 0000000000000000000000000000000000000000..ef5fd6830c41fdab9fb6fb8ecf488749cb24660c GIT binary patch literal 58482 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 literal 0 HcmV?d00001 diff --git a/public/404/ghost.gif b/public/404/ghost.gif new file mode 100644 index 0000000000000000000000000000000000000000..3492bb7854fc01dedfea9121c93bb3c4d483066d GIT binary patch literal 121876 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