From 6c233e791d0b5a1bcedfa8982c67a1566098da35 Mon Sep 17 00:00:00 2001 From: "Zed A. Shaw" Date: Sun, 24 Aug 2025 01:42:29 -0400 Subject: [PATCH] First commit to get a basic thing going, does run but not much there. --- .air.toml | 52 + .gitignore | 33 + LICENSE | 10 +- Makefile | 59 + README.md | 65 +- admin/db.go | 141 +++ admin/handlers.go | 172 +++ api/auth.go | 75 ++ api/handlers.go | 83 ++ common/api.go | 66 ++ common/errors.go | 12 + common/web.go | 70 ++ config/server.go | 36 + config_example.toml | 9 + data/crud.go | 57 + data/models.go | 21 + go.mod | 129 ++ go.sum | 586 +++++++++ main.go | 62 + migrations/20250802154952_init.sql | 9 + pages/about.md | 5 + pages/error/index.html | 2 + pages/examples/gitea.html | 91 ++ pages/examples/index.html | 24 + pages/examples/linkedin.html | 97 ++ pages/examples/sample.html | 154 +++ pages/examples/starter.html | 3 + pages/examples/stride.html | 155 +++ pages/examples/twitch.html | 203 ++++ pages/index.html | 4 + pages/layouts/examples.html | 15 + pages/layouts/main.html | 48 + pages/login/index.html | 18 + pages/register/index.html | 20 + ssgod.toml | 5 + static/default_theme.css | 462 ++++++++ static/favicon.ico | Bin 0 -> 2734 bytes static/icons/LICENSE | 15 + static/icons/accessibility.svg | 17 + static/icons/activity.svg | 13 + static/icons/air-vent.svg | 16 + static/icons/airplay.svg | 14 + static/icons/alarm-check.svg | 18 + static/icons/alarm-clock-off.svg | 18 + static/icons/alarm-clock.svg | 18 + static/icons/alarm-minus.svg | 18 + static/icons/alarm-plus.svg | 19 + static/icons/album.svg | 14 + static/icons/alert-circle.svg | 15 + static/icons/alert-octagon.svg | 15 + static/icons/alert-triangle.svg | 15 + static/icons/align-center-horizontal.svg | 17 + static/icons/align-center-vertical.svg | 17 + static/icons/align-center.svg | 15 + static/icons/align-end-horizontal.svg | 15 + static/icons/align-end-vertical.svg | 15 + .../align-horizontal-distribute-center.svg | 18 + .../icons/align-horizontal-distribute-end.svg | 16 + .../align-horizontal-distribute-start.svg | 16 + .../icons/align-horizontal-justify-center.svg | 15 + static/icons/align-horizontal-justify-end.svg | 15 + .../icons/align-horizontal-justify-start.svg | 15 + .../icons/align-horizontal-space-around.svg | 15 + .../icons/align-horizontal-space-between.svg | 16 + static/icons/align-justify.svg | 15 + static/icons/align-left.svg | 15 + static/icons/align-right.svg | 15 + static/icons/align-start-horizontal.svg | 15 + static/icons/align-start-vertical.svg | 15 + .../align-vertical-distribute-center.svg | 18 + .../icons/align-vertical-distribute-end.svg | 16 + .../icons/align-vertical-distribute-start.svg | 16 + .../icons/align-vertical-justify-center.svg | 15 + static/icons/align-vertical-justify-end.svg | 15 + static/icons/align-vertical-justify-start.svg | 15 + static/icons/align-vertical-space-around.svg | 15 + static/icons/align-vertical-space-between.svg | 16 + static/icons/anchor.svg | 15 + static/icons/angry.svg | 18 + static/icons/annoyed.svg | 16 + static/icons/aperture.svg | 19 + static/icons/apple.svg | 14 + static/icons/archive-restore.svg | 17 + static/icons/archive.svg | 15 + static/icons/armchair.svg | 16 + static/icons/arrow-big-down.svg | 13 + static/icons/arrow-big-left.svg | 13 + static/icons/arrow-big-right.svg | 13 + static/icons/arrow-big-up.svg | 13 + static/icons/arrow-down-circle.svg | 15 + static/icons/arrow-down-left.svg | 14 + static/icons/arrow-down-right.svg | 14 + static/icons/arrow-down.svg | 14 + static/icons/arrow-left-circle.svg | 15 + static/icons/arrow-left-right.svg | 16 + static/icons/arrow-left.svg | 14 + static/icons/arrow-right-circle.svg | 15 + static/icons/arrow-right.svg | 14 + static/icons/arrow-up-circle.svg | 15 + static/icons/arrow-up-down.svg | 16 + static/icons/arrow-up-left.svg | 14 + static/icons/arrow-up-right.svg | 14 + static/icons/arrow-up.svg | 14 + static/icons/asterisk.svg | 15 + static/icons/at-sign.svg | 14 + static/icons/award.svg | 14 + static/icons/axe.svg | 14 + static/icons/axis-3d.svg | 14 + static/icons/baby.svg | 16 + static/icons/backpack.svg | 17 + static/icons/baggage-claim.svg | 17 + static/icons/banana.svg | 14 + static/icons/banknote.svg | 15 + static/icons/bar-chart-2.svg | 15 + static/icons/bar-chart-3.svg | 16 + static/icons/bar-chart-4.svg | 16 + static/icons/bar-chart-horizontal.svg | 16 + static/icons/bar-chart.svg | 15 + static/icons/baseline.svg | 15 + static/icons/bath.svg | 17 + static/icons/battery-charging.svg | 16 + static/icons/battery-full.svg | 17 + static/icons/battery-low.svg | 15 + static/icons/battery-medium.svg | 16 + static/icons/battery.svg | 14 + static/icons/beaker.svg | 15 + static/icons/bean-off.svg | 16 + static/icons/bean.svg | 14 + static/icons/bed-double.svg | 16 + static/icons/bed-single.svg | 15 + static/icons/bed.svg | 16 + static/icons/beer.svg | 17 + static/icons/bell-minus.svg | 15 + static/icons/bell-off.svg | 17 + static/icons/bell-plus.svg | 16 + static/icons/bell-ring.svg | 16 + static/icons/bell.svg | 14 + static/icons/bike.svg | 15 + static/icons/binary.svg | 18 + static/icons/bitcoin.svg | 13 + static/icons/bluetooth-connected.svg | 15 + static/icons/bluetooth-off.svg | 15 + static/icons/bluetooth-searching.svg | 15 + static/icons/bluetooth.svg | 13 + static/icons/bold.svg | 14 + static/icons/bomb.svg | 15 + static/icons/bone.svg | 13 + static/icons/book-open-check.svg | 15 + static/icons/book-open.svg | 14 + static/icons/book.svg | 14 + static/icons/bookmark-minus.svg | 14 + static/icons/bookmark-plus.svg | 15 + static/icons/bookmark.svg | 13 + static/icons/bot.svg | 17 + static/icons/box-select.svg | 24 + static/icons/box.svg | 15 + static/icons/boxes.svg | 24 + static/icons/briefcase.svg | 14 + static/icons/brush.svg | 14 + static/icons/bug.svg | 21 + static/icons/building-2.svg | 19 + static/icons/building.svg | 23 + static/icons/bus.svg | 16 + static/icons/cake.svg | 21 + static/icons/calculator.svg | 22 + static/icons/calendar-check-2.svg | 17 + static/icons/calendar-check.svg | 17 + static/icons/calendar-clock.svg | 18 + static/icons/calendar-days.svg | 22 + static/icons/calendar-heart.svg | 17 + static/icons/calendar-minus.svg | 17 + static/icons/calendar-off.svg | 18 + static/icons/calendar-plus.svg | 18 + static/icons/calendar-range.svg | 20 + static/icons/calendar-search.svg | 18 + static/icons/calendar-x-2.svg | 18 + static/icons/calendar-x.svg | 18 + static/icons/calendar.svg | 16 + static/icons/camera-off.svg | 16 + static/icons/camera.svg | 14 + static/icons/candy-off.svg | 20 + static/icons/candy.svg | 17 + static/icons/car.svg | 15 + static/icons/carrot.svg | 15 + static/icons/cast.svg | 16 + static/icons/cat.svg | 18 + static/icons/check-check.svg | 14 + static/icons/check-circle-2.svg | 14 + static/icons/check-circle.svg | 14 + static/icons/check-square.svg | 14 + static/icons/check.svg | 13 + static/icons/chef-hat.svg | 14 + static/icons/cherry.svg | 16 + static/icons/chevron-down.svg | 13 + static/icons/chevron-first.svg | 14 + static/icons/chevron-last.svg | 14 + static/icons/chevron-left.svg | 13 + static/icons/chevron-right.svg | 13 + static/icons/chevron-up.svg | 13 + static/icons/chevrons-down-up.svg | 14 + static/icons/chevrons-down.svg | 14 + static/icons/chevrons-left-right.svg | 14 + static/icons/chevrons-left.svg | 14 + static/icons/chevrons-right-left.svg | 14 + static/icons/chevrons-right.svg | 14 + static/icons/chevrons-up-down.svg | 14 + static/icons/chevrons-up.svg | 14 + static/icons/chrome.svg | 17 + static/icons/cigarette-off.svg | 19 + static/icons/cigarette.svg | 17 + static/icons/circle-dot.svg | 14 + static/icons/circle-ellipsis.svg | 16 + static/icons/circle-slashed.svg | 14 + static/icons/circle.svg | 13 + static/icons/citrus.svg | 17 + static/icons/clapperboard.svg | 16 + static/icons/clipboard-check.svg | 15 + static/icons/clipboard-copy.svg | 17 + static/icons/clipboard-edit.svg | 16 + static/icons/clipboard-list.svg | 18 + static/icons/clipboard-signature.svg | 17 + static/icons/clipboard-type.svg | 17 + static/icons/clipboard-x.svg | 16 + static/icons/clipboard.svg | 14 + static/icons/clock-1.svg | 14 + static/icons/clock-10.svg | 14 + static/icons/clock-11.svg | 14 + static/icons/clock-12.svg | 14 + static/icons/clock-2.svg | 14 + static/icons/clock-3.svg | 14 + static/icons/clock-4.svg | 14 + static/icons/clock-5.svg | 14 + static/icons/clock-6.svg | 14 + static/icons/clock-7.svg | 14 + static/icons/clock-8.svg | 14 + static/icons/clock-9.svg | 14 + static/icons/clock.svg | 14 + static/icons/cloud-cog.svg | 22 + static/icons/cloud-drizzle.svg | 19 + static/icons/cloud-fog.svg | 15 + static/icons/cloud-hail.svg | 19 + static/icons/cloud-lightning.svg | 14 + static/icons/cloud-moon-rain.svg | 16 + static/icons/cloud-moon.svg | 14 + static/icons/cloud-off.svg | 15 + static/icons/cloud-rain-wind.svg | 16 + static/icons/cloud-rain.svg | 16 + static/icons/cloud-snow.svg | 19 + static/icons/cloud-sun-rain.svg | 20 + static/icons/cloud-sun.svg | 18 + static/icons/cloud.svg | 13 + static/icons/cloudy.svg | 14 + static/icons/clover.svg | 17 + static/icons/code-2.svg | 15 + static/icons/code.svg | 14 + static/icons/codepen.svg | 17 + static/icons/codesandbox.svg | 18 + static/icons/coffee.svg | 17 + static/icons/cog.svg | 26 + static/icons/coins.svg | 16 + static/icons/columns.svg | 14 + static/icons/command.svg | 13 + static/icons/compass.svg | 14 + static/icons/component.svg | 16 + static/icons/concierge-bell.svg | 16 + static/icons/contact.svg | 17 + static/icons/contrast.svg | 14 + static/icons/cookie.svg | 18 + static/icons/copy.svg | 14 + static/icons/copyleft.svg | 14 + static/icons/copyright.svg | 14 + static/icons/corner-down-left.svg | 14 + static/icons/corner-down-right.svg | 14 + static/icons/corner-left-down.svg | 14 + static/icons/corner-left-up.svg | 14 + static/icons/corner-right-down.svg | 14 + static/icons/corner-right-up.svg | 14 + static/icons/corner-up-left.svg | 14 + static/icons/corner-up-right.svg | 14 + static/icons/cpu.svg | 22 + static/icons/credit-card.svg | 14 + static/icons/croissant.svg | 17 + static/icons/crop.svg | 14 + static/icons/cross.svg | 13 + static/icons/crosshair.svg | 17 + static/icons/crown.svg | 13 + static/icons/cup-soda.svg | 16 + static/icons/curly-braces.svg | 14 + static/icons/currency.svg | 17 + static/icons/database.svg | 15 + static/icons/delete.svg | 15 + static/icons/diamond.svg | 20 + static/icons/dice-1.svg | 14 + static/icons/dice-2.svg | 15 + static/icons/dice-3.svg | 16 + static/icons/dice-4.svg | 17 + static/icons/dice-5.svg | 18 + static/icons/dice-6.svg | 19 + static/icons/dices.svg | 18 + static/icons/diff.svg | 15 + static/icons/disc.svg | 14 + static/icons/divide-circle.svg | 16 + static/icons/divide-square.svg | 16 + static/icons/divide.svg | 15 + static/icons/dna-off.svg | 23 + static/icons/dna.svg | 23 + static/icons/dog.svg | 18 + static/icons/dollar-sign.svg | 14 + static/icons/download-cloud.svg | 15 + static/icons/download.svg | 15 + static/icons/dribbble.svg | 16 + static/icons/droplet.svg | 13 + static/icons/droplets.svg | 14 + static/icons/drumstick.svg | 14 + static/icons/dumbbell.svg | 19 + static/icons/ear-off.svg | 17 + static/icons/ear.svg | 14 + static/icons/edit-2.svg | 13 + static/icons/edit-3.svg | 14 + static/icons/edit.svg | 14 + static/icons/egg-fried.svg | 14 + static/icons/egg-off.svg | 15 + static/icons/egg.svg | 13 + static/icons/equal-not.svg | 15 + static/icons/equal.svg | 14 + static/icons/eraser.svg | 15 + static/icons/euro.svg | 15 + static/icons/expand.svg | 16 + static/icons/external-link.svg | 15 + static/icons/eye-off.svg | 16 + static/icons/eye.svg | 14 + static/icons/facebook.svg | 13 + static/icons/factory.svg | 16 + static/icons/fan.svg | 14 + static/icons/fast-forward.svg | 14 + static/icons/feather.svg | 15 + static/icons/figma.svg | 17 + static/icons/file-archive.svg | 18 + static/icons/file-audio-2.svg | 17 + static/icons/file-audio.svg | 17 + static/icons/file-axis-3d.svg | 16 + static/icons/file-badge-2.svg | 15 + static/icons/file-badge.svg | 16 + static/icons/file-bar-chart-2.svg | 17 + static/icons/file-bar-chart.svg | 17 + static/icons/file-box.svg | 18 + static/icons/file-check-2.svg | 15 + static/icons/file-check.svg | 15 + static/icons/file-clock.svg | 16 + static/icons/file-code.svg | 16 + static/icons/file-cog-2.svg | 21 + static/icons/file-cog.svg | 23 + static/icons/file-diff.svg | 16 + static/icons/file-digit.svg | 17 + static/icons/file-down.svg | 16 + static/icons/file-edit.svg | 15 + static/icons/file-heart.svg | 15 + static/icons/file-image.svg | 16 + static/icons/file-input.svg | 16 + static/icons/file-json-2.svg | 16 + static/icons/file-json.svg | 16 + static/icons/file-key-2.svg | 17 + static/icons/file-key.svg | 16 + static/icons/file-line-chart.svg | 15 + static/icons/file-lock-2.svg | 16 + static/icons/file-lock.svg | 15 + static/icons/file-minus-2.svg | 15 + static/icons/file-minus.svg | 15 + static/icons/file-output.svg | 16 + static/icons/file-pie-chart.svg | 16 + static/icons/file-plus-2.svg | 16 + static/icons/file-plus.svg | 16 + static/icons/file-question.svg | 15 + static/icons/file-scan.svg | 18 + static/icons/file-search-2.svg | 16 + static/icons/file-search.svg | 16 + static/icons/file-signature.svg | 15 + static/icons/file-spreadsheet.svg | 18 + static/icons/file-symlink.svg | 16 + static/icons/file-terminal.svg | 16 + static/icons/file-text.svg | 17 + static/icons/file-type-2.svg | 17 + static/icons/file-type.svg | 17 + static/icons/file-up.svg | 16 + static/icons/file-video-2.svg | 16 + static/icons/file-video.svg | 15 + static/icons/file-volume-2.svg | 17 + static/icons/file-volume.svg | 16 + static/icons/file-warning.svg | 15 + static/icons/file-x-2.svg | 16 + static/icons/file-x.svg | 16 + static/icons/file.svg | 14 + static/icons/files.svg | 15 + static/icons/film.svg | 20 + static/icons/filter.svg | 13 + static/icons/fingerprint.svg | 21 + static/icons/flag-off.svg | 16 + static/icons/flag-triangle-left.svg | 13 + static/icons/flag-triangle-right.svg | 13 + static/icons/flag.svg | 14 + static/icons/flame.svg | 13 + static/icons/flashlight-off.svg | 16 + static/icons/flashlight.svg | 15 + static/icons/flask-conical-off.svg | 18 + static/icons/flask-conical.svg | 15 + static/icons/flask-round.svg | 17 + static/icons/flip-horizontal-2.svg | 18 + static/icons/flip-horizontal.svg | 18 + static/icons/flip-vertical-2.svg | 18 + static/icons/flip-vertical.svg | 18 + static/icons/flower-2.svg | 17 + static/icons/flower.svg | 18 + static/icons/focus.svg | 17 + static/icons/folder-archive.svg | 16 + static/icons/folder-check.svg | 14 + static/icons/folder-clock.svg | 15 + static/icons/folder-closed.svg | 14 + static/icons/folder-cog-2.svg | 20 + static/icons/folder-cog.svg | 22 + static/icons/folder-down.svg | 15 + static/icons/folder-edit.svg | 14 + static/icons/folder-heart.svg | 14 + static/icons/folder-input.svg | 15 + static/icons/folder-key.svg | 16 + static/icons/folder-lock.svg | 15 + static/icons/folder-minus.svg | 14 + static/icons/folder-open.svg | 13 + static/icons/folder-output.svg | 15 + static/icons/folder-plus.svg | 15 + static/icons/folder-search-2.svg | 15 + static/icons/folder-search.svg | 15 + static/icons/folder-symlink.svg | 15 + static/icons/folder-tree.svg | 16 + static/icons/folder-up.svg | 15 + static/icons/folder-x.svg | 15 + static/icons/folder.svg | 13 + static/icons/folders.svg | 14 + static/icons/form-input.svg | 16 + static/icons/forward.svg | 14 + static/icons/frame.svg | 16 + static/icons/framer.svg | 13 + static/icons/frown.svg | 16 + static/icons/fuel.svg | 16 + static/icons/function-square.svg | 15 + static/icons/gamepad-2.svg | 17 + static/icons/gamepad.svg | 17 + static/icons/gauge.svg | 14 + static/icons/gavel.svg | 17 + static/icons/gem.svg | 16 + static/icons/ghost.svg | 15 + static/icons/gift.svg | 17 + static/icons/git-branch-plus.svg | 18 + static/icons/git-branch.svg | 16 + static/icons/git-commit.svg | 15 + static/icons/git-compare.svg | 16 + static/icons/git-fork.svg | 17 + static/icons/git-merge.svg | 15 + static/icons/git-pull-request-closed.svg | 18 + static/icons/git-pull-request-draft.svg | 17 + static/icons/git-pull-request.svg | 16 + static/icons/github.svg | 14 + static/icons/gitlab.svg | 13 + static/icons/glass-water.svg | 14 + static/icons/glasses.svg | 17 + static/icons/globe-2.svg | 16 + static/icons/globe.svg | 15 + static/icons/grab.svg | 17 + static/icons/graduation-cap.svg | 14 + static/icons/grape.svg | 21 + static/icons/grid.svg | 17 + static/icons/grip-horizontal.svg | 18 + static/icons/grip-vertical.svg | 18 + static/icons/hammer.svg | 15 + static/icons/hand-metal.svg | 16 + static/icons/hand.svg | 16 + static/icons/hard-drive.svg | 16 + static/icons/hard-hat.svg | 16 + static/icons/hash.svg | 16 + static/icons/haze.svg | 20 + static/icons/heading-1.svg | 16 + static/icons/heading-2.svg | 16 + static/icons/heading-3.svg | 17 + static/icons/heading-4.svg | 17 + static/icons/heading-5.svg | 17 + static/icons/heading-6.svg | 17 + static/icons/heading.svg | 15 + static/icons/headphones.svg | 14 + static/icons/heart-crack.svg | 14 + static/icons/heart-handshake.svg | 16 + static/icons/heart-off.svg | 15 + static/icons/heart-pulse.svg | 14 + static/icons/heart.svg | 13 + static/icons/help-circle.svg | 15 + static/icons/hexagon.svg | 13 + static/icons/highlighter.svg | 14 + static/icons/history.svg | 15 + static/icons/home.svg | 14 + static/icons/hop-off.svg | 20 + static/icons/hop.svg | 20 + static/icons/hourglass.svg | 16 + static/icons/ice-cream.svg | 15 + static/icons/image-minus.svg | 16 + static/icons/image-off.svg | 18 + static/icons/image-plus.svg | 17 + static/icons/image.svg | 15 + static/icons/import.svg | 15 + static/icons/inbox.svg | 14 + static/icons/indent.svg | 16 + static/icons/indian-rupee.svg | 17 + static/icons/infinity.svg | 13 + static/icons/info.svg | 15 + static/icons/inspect.svg | 14 + static/icons/instagram.svg | 15 + static/icons/italic.svg | 15 + static/icons/japanese-yen.svg | 15 + static/icons/joystick.svg | 16 + static/icons/key.svg | 13 + static/icons/keyboard.svg | 21 + static/icons/lamp-ceiling.svg | 15 + static/icons/lamp-desk.svg | 16 + static/icons/lamp-floor.svg | 15 + static/icons/lamp-wall-down.svg | 15 + static/icons/lamp-wall-up.svg | 15 + static/icons/lamp.svg | 15 + static/icons/landmark.svg | 18 + static/icons/languages.svg | 18 + static/icons/laptop-2.svg | 14 + static/icons/laptop.svg | 13 + static/icons/lasso-select.svg | 17 + static/icons/lasso.svg | 15 + static/icons/laugh.svg | 16 + static/icons/layers.svg | 15 + static/icons/layout-dashboard.svg | 16 + static/icons/layout-grid.svg | 16 + static/icons/layout-list.svg | 18 + static/icons/layout-template.svg | 15 + static/icons/layout.svg | 15 + static/icons/leaf.svg | 14 + static/icons/library.svg | 16 + static/icons/life-buoy.svg | 19 + static/icons/lightbulb-off.svg | 17 + static/icons/lightbulb.svg | 15 + static/icons/line-chart.svg | 14 + static/icons/link-2-off.svg | 16 + static/icons/link-2.svg | 15 + static/icons/link.svg | 14 + static/icons/linkedin.svg | 15 + static/icons/list-checks.svg | 18 + static/icons/list-end.svg | 17 + static/icons/list-minus.svg | 16 + static/icons/list-music.svg | 17 + static/icons/list-ordered.svg | 18 + static/icons/list-plus.svg | 17 + static/icons/list-start.svg | 17 + static/icons/list-video.svg | 16 + static/icons/list-x.svg | 17 + static/icons/list.svg | 18 + static/icons/loader-2.svg | 13 + static/icons/loader.svg | 20 + static/icons/locate-fixed.svg | 18 + static/icons/locate-off.svg | 19 + static/icons/locate.svg | 17 + static/icons/lock.svg | 14 + static/icons/log-in.svg | 15 + static/icons/log-out.svg | 15 + static/icons/luggage.svg | 17 + static/icons/magnet.svg | 15 + static/icons/mail-check.svg | 15 + static/icons/mail-minus.svg | 15 + static/icons/mail-open.svg | 14 + static/icons/mail-plus.svg | 16 + static/icons/mail-question.svg | 16 + static/icons/mail-search.svg | 17 + static/icons/mail-warning.svg | 16 + static/icons/mail-x.svg | 16 + static/icons/mail.svg | 14 + static/icons/mails.svg | 15 + static/icons/map-pin-off.svg | 17 + static/icons/map-pin.svg | 14 + static/icons/map.svg | 15 + static/icons/martini.svg | 15 + static/icons/maximize-2.svg | 16 + static/icons/maximize.svg | 16 + static/icons/medal.svg | 18 + static/icons/megaphone-off.svg | 16 + static/icons/megaphone.svg | 14 + static/icons/meh.svg | 16 + static/icons/menu.svg | 15 + static/icons/message-circle.svg | 13 + static/icons/message-square.svg | 13 + static/icons/mic-2.svg | 14 + static/icons/mic-off.svg | 18 + static/icons/mic.svg | 15 + static/icons/microscope.svg | 18 + static/icons/microwave.svg | 17 + static/icons/milestone.svg | 15 + static/icons/milk-off.svg | 16 + static/icons/milk.svg | 15 + static/icons/minimize-2.svg | 16 + static/icons/minimize.svg | 16 + static/icons/minus-circle.svg | 14 + static/icons/minus-square.svg | 14 + static/icons/minus.svg | 13 + static/icons/monitor-off.svg | 17 + static/icons/monitor-smartphone.svg | 16 + static/icons/monitor-speaker.svg | 17 + static/icons/monitor.svg | 15 + static/icons/moon.svg | 13 + static/icons/more-horizontal.svg | 15 + static/icons/more-vertical.svg | 15 + static/icons/mountain-snow.svg | 14 + static/icons/mountain.svg | 13 + static/icons/mouse-pointer-2.svg | 13 + static/icons/mouse-pointer-click.svg | 15 + static/icons/mouse-pointer.svg | 14 + static/icons/mouse.svg | 14 + static/icons/move-3d.svg | 16 + static/icons/move-diagonal-2.svg | 15 + static/icons/move-diagonal.svg | 15 + static/icons/move-horizontal.svg | 15 + static/icons/move-vertical.svg | 15 + static/icons/move.svg | 18 + static/icons/music-2.svg | 14 + static/icons/music-3.svg | 14 + static/icons/music-4.svg | 16 + static/icons/music.svg | 15 + static/icons/navigation-2-off.svg | 15 + static/icons/navigation-2.svg | 13 + static/icons/navigation-off.svg | 15 + static/icons/navigation.svg | 13 + static/icons/network.svg | 17 + static/icons/newspaper.svg | 16 + static/icons/nut-off.svg | 17 + static/icons/nut.svg | 15 + static/icons/octagon.svg | 13 + static/icons/option.svg | 14 + static/icons/outdent.svg | 16 + static/icons/package-2.svg | 15 + static/icons/package-check.svg | 17 + static/icons/package-minus.svg | 17 + static/icons/package-open.svg | 16 + static/icons/package-plus.svg | 18 + static/icons/package-search.svg | 18 + static/icons/package-x.svg | 17 + static/icons/package.svg | 16 + static/icons/paint-bucket.svg | 16 + static/icons/paintbrush-2.svg | 16 + static/icons/paintbrush.svg | 15 + static/icons/palette.svg | 17 + static/icons/palmtree.svg | 16 + static/icons/paperclip.svg | 13 + static/icons/party-popper.svg | 21 + static/icons/pause-circle.svg | 15 + static/icons/pause-octagon.svg | 15 + static/icons/pause.svg | 14 + static/icons/pen-tool.svg | 16 + static/icons/pencil.svg | 14 + static/icons/percent.svg | 15 + static/icons/person-standing.svg | 16 + static/icons/phone-call.svg | 15 + static/icons/phone-forwarded.svg | 15 + static/icons/phone-incoming.svg | 15 + static/icons/phone-missed.svg | 15 + static/icons/phone-off.svg | 14 + static/icons/phone-outgoing.svg | 15 + static/icons/phone.svg | 13 + static/icons/pie-chart.svg | 14 + static/icons/piggy-bank.svg | 15 + static/icons/pin-off.svg | 16 + static/icons/pin.svg | 14 + static/icons/pipette.svg | 15 + static/icons/pizza.svg | 17 + static/icons/plane.svg | 13 + static/icons/play-circle.svg | 14 + static/icons/play.svg | 13 + static/icons/plug-2.svg | 17 + static/icons/plug-zap.svg | 18 + static/icons/plug.svg | 16 + static/icons/plus-circle.svg | 15 + static/icons/plus-square.svg | 15 + static/icons/plus.svg | 14 + static/icons/pocket.svg | 14 + static/icons/podcast.svg | 16 + static/icons/pointer.svg | 17 + static/icons/pound-sterling.svg | 16 + static/icons/power-off.svg | 16 + static/icons/power.svg | 14 + static/icons/printer.svg | 15 + static/icons/puzzle.svg | 13 + static/icons/qr-code.svg | 24 + static/icons/quote.svg | 14 + static/icons/radio-receiver.svg | 16 + static/icons/radio.svg | 17 + static/icons/rectangle-horizontal.svg | 13 + static/icons/rectangle-vertical.svg | 13 + static/icons/recycle.svg | 18 + static/icons/redo-2.svg | 14 + static/icons/redo.svg | 14 + static/icons/refresh-ccw.svg | 16 + static/icons/refresh-cw.svg | 16 + static/icons/refrigerator.svg | 15 + static/icons/regex.svg | 16 + static/icons/repeat-1.svg | 17 + static/icons/repeat.svg | 16 + static/icons/reply-all.svg | 15 + static/icons/reply.svg | 14 + static/icons/rewind.svg | 14 + static/icons/rocket.svg | 16 + static/icons/rocking-chair.svg | 16 + static/icons/rotate-3d.svg | 15 + static/icons/rotate-ccw.svg | 14 + static/icons/rotate-cw.svg | 14 + static/icons/rss.svg | 15 + static/icons/ruler.svg | 17 + static/icons/russian-ruble.svg | 17 + static/icons/sailboat.svg | 15 + static/icons/save.svg | 15 + static/icons/scale-3d.svg | 16 + static/icons/scale.svg | 17 + static/icons/scaling.svg | 16 + static/icons/scan-face.svg | 19 + static/icons/scan-line.svg | 17 + static/icons/scan.svg | 16 + static/icons/scissors.svg | 17 + static/icons/screen-share-off.svg | 17 + static/icons/screen-share.svg | 17 + static/icons/scroll.svg | 16 + static/icons/search.svg | 14 + static/icons/send.svg | 14 + static/icons/separator-horizontal.svg | 15 + static/icons/separator-vertical.svg | 15 + static/icons/server-cog.svg | 25 + static/icons/server-crash.svg | 17 + static/icons/server-off.svg | 18 + static/icons/server.svg | 16 + static/icons/settings-2.svg | 16 + static/icons/settings.svg | 14 + static/icons/share-2.svg | 17 + static/icons/share.svg | 15 + static/icons/sheet.svg | 17 + static/icons/shield-alert.svg | 15 + static/icons/shield-check.svg | 14 + static/icons/shield-close.svg | 15 + static/icons/shield-off.svg | 15 + static/icons/shield.svg | 13 + static/icons/shirt.svg | 13 + static/icons/shopping-bag.svg | 15 + static/icons/shopping-cart.svg | 15 + static/icons/shovel.svg | 15 + static/icons/shower-head.svg | 22 + static/icons/shrink.svg | 16 + static/icons/shrub.svg | 15 + static/icons/shuffle.svg | 17 + static/icons/sidebar-close.svg | 15 + static/icons/sidebar-open.svg | 15 + static/icons/sidebar.svg | 14 + static/icons/sigma.svg | 13 + static/icons/signal-high.svg | 16 + static/icons/signal-low.svg | 14 + static/icons/signal-medium.svg | 15 + static/icons/signal-zero.svg | 13 + static/icons/signal.svg | 17 + static/icons/siren.svg | 20 + static/icons/skip-back.svg | 14 + static/icons/skip-forward.svg | 14 + static/icons/skull.svg | 17 + static/icons/slack.svg | 20 + static/icons/slash.svg | 14 + static/icons/slice.svg | 14 + static/icons/sliders-horizontal.svg | 21 + static/icons/sliders.svg | 21 + static/icons/smartphone-charging.svg | 14 + static/icons/smartphone.svg | 14 + static/icons/smile-plus.svg | 18 + static/icons/smile.svg | 16 + static/icons/snowflake.svg | 18 + static/icons/sofa.svg | 17 + static/icons/sort-asc.svg | 17 + static/icons/sort-desc.svg | 17 + static/icons/speaker.svg | 15 + static/icons/spline.svg | 15 + static/icons/sprout.svg | 16 + static/icons/square.svg | 13 + static/icons/star-half.svg | 13 + static/icons/star-off.svg | 15 + static/icons/star.svg | 13 + static/icons/stethoscope.svg | 15 + static/icons/sticker.svg | 17 + static/icons/sticky-note.svg | 14 + static/icons/stop-circle.svg | 14 + static/icons/stretch-horizontal.svg | 14 + static/icons/stretch-vertical.svg | 14 + static/icons/strikethrough.svg | 15 + static/icons/subscript.svg | 15 + static/icons/sun-dim.svg | 21 + static/icons/sun-medium.svg | 21 + static/icons/sun-moon.svg | 22 + static/icons/sun-snow.svg | 23 + static/icons/sun.svg | 21 + static/icons/sunrise.svg | 20 + static/icons/sunset.svg | 20 + static/icons/superscript.svg | 15 + static/icons/swiss-franc.svg | 15 + static/icons/switch-camera.svg | 17 + static/icons/sword.svg | 16 + static/icons/swords.svg | 20 + static/icons/syringe.svg | 18 + static/icons/table-2.svg | 13 + static/icons/table.svg | 16 + static/icons/tablet.svg | 14 + static/icons/tag.svg | 14 + static/icons/tags.svg | 15 + static/icons/target.svg | 15 + static/icons/tent.svg | 17 + static/icons/terminal-square.svg | 15 + static/icons/terminal.svg | 14 + static/icons/text-cursor-input.svg | 16 + static/icons/text-cursor.svg | 15 + static/icons/thermometer-snowflake.svg | 18 + static/icons/thermometer-sun.svg | 18 + static/icons/thermometer.svg | 13 + static/icons/thumbs-down.svg | 14 + static/icons/thumbs-up.svg | 14 + static/icons/ticket.svg | 16 + static/icons/timer-off.svg | 17 + static/icons/timer-reset.svg | 16 + static/icons/timer.svg | 15 + static/icons/toggle-left.svg | 14 + static/icons/toggle-right.svg | 14 + static/icons/tornado.svg | 17 + static/icons/toy-brick.svg | 15 + static/icons/train.svg | 19 + static/icons/trash-2.svg | 17 + static/icons/trash.svg | 15 + static/icons/tree-deciduous.svg | 14 + static/icons/tree-pine.svg | 14 + static/icons/trees.svg | 16 + static/icons/trello.svg | 15 + static/icons/trending-down.svg | 14 + static/icons/trending-up.svg | 14 + static/icons/triangle.svg | 13 + static/icons/trophy.svg | 18 + static/icons/truck.svg | 17 + static/icons/tv-2.svg | 14 + static/icons/tv.svg | 14 + static/icons/twitch.svg | 13 + static/icons/twitter.svg | 13 + static/icons/type.svg | 15 + static/icons/umbrella.svg | 15 + static/icons/underline.svg | 14 + static/icons/undo-2.svg | 14 + static/icons/undo.svg | 14 + static/icons/unlink-2.svg | 13 + static/icons/unlink.svg | 18 + static/icons/unlock.svg | 14 + static/icons/upload-cloud.svg | 15 + static/icons/upload.svg | 15 + static/icons/usb.svg | 19 + static/icons/user-check.svg | 15 + static/icons/user-cog.svg | 21 + static/icons/user-minus.svg | 15 + static/icons/user-plus.svg | 16 + static/icons/user-x.svg | 16 + static/icons/user.svg | 14 + static/icons/users.svg | 16 + static/icons/utensils-crossed.svg | 16 + static/icons/utensils.svg | 15 + static/icons/vegan.svg | 15 + static/icons/venetian-mask.svg | 15 + static/icons/verified.svg | 14 + static/icons/vibrate-off.svg | 17 + static/icons/vibrate.svg | 15 + static/icons/video-off.svg | 15 + static/icons/video.svg | 14 + static/icons/view.svg | 16 + static/icons/voicemail.svg | 15 + static/icons/volume-1.svg | 14 + static/icons/volume-2.svg | 15 + static/icons/volume-x.svg | 15 + static/icons/volume.svg | 13 + static/icons/wallet.svg | 15 + static/icons/wand-2.svg | 20 + static/icons/wand.svg | 21 + static/icons/watch.svg | 16 + static/icons/waves.svg | 15 + static/icons/webcam.svg | 16 + static/icons/webhook.svg | 15 + static/icons/wheat-off.svg | 22 + static/icons/wheat.svg | 20 + static/icons/wifi-off.svg | 19 + static/icons/wifi.svg | 16 + static/icons/wind.svg | 15 + static/icons/wine-off.svg | 17 + static/icons/wine.svg | 16 + static/icons/wrap-text.svg | 16 + static/icons/wrench.svg | 13 + static/icons/x-circle.svg | 15 + static/icons/x-octagon.svg | 15 + static/icons/x-square.svg | 15 + static/icons/x.svg | 14 + static/icons/youtube.svg | 14 + static/icons/zap-off.svg | 16 + static/icons/zap.svg | 13 + static/icons/zoom-in.svg | 16 + static/icons/zoom-out.svg | 15 + static/input_style.css | 221 ++++ static/js/alpine.js | 5 + static/js/code.js | 57 + static/logo.png | Bin 0 -> 41306 bytes static/style.css | 1055 +++++++++++++++++ static/theme.css | 462 ++++++++ tests/admin_test.go | 70 ++ tests/admin_ui_tests.go | 15 + tests/base_test.go | 43 + tests/tools.go | 75 ++ views/admin/table/contents.html | 35 + views/admin/table/index.html | 19 + views/admin/table/new.html | 26 + views/admin/table/view.html | 26 + views/layouts/main.html | 49 + 920 files changed, 18838 insertions(+), 11 deletions(-) create mode 100644 .air.toml create mode 100644 .gitignore create mode 100644 Makefile create mode 100644 admin/db.go create mode 100644 admin/handlers.go create mode 100644 api/auth.go create mode 100644 api/handlers.go create mode 100644 common/api.go create mode 100644 common/errors.go create mode 100644 common/web.go create mode 100644 config/server.go create mode 100644 config_example.toml create mode 100644 data/crud.go create mode 100644 data/models.go create mode 100644 go.mod create mode 100644 go.sum create mode 100644 main.go create mode 100644 migrations/20250802154952_init.sql create mode 100644 pages/about.md create mode 100644 pages/error/index.html create mode 100644 pages/examples/gitea.html create mode 100644 pages/examples/index.html create mode 100644 pages/examples/linkedin.html create mode 100644 pages/examples/sample.html create mode 100644 pages/examples/starter.html create mode 100644 pages/examples/stride.html create mode 100644 pages/examples/twitch.html create mode 100644 pages/index.html create mode 100644 pages/layouts/examples.html create mode 100644 pages/layouts/main.html create mode 100644 pages/login/index.html create mode 100644 pages/register/index.html create mode 100644 ssgod.toml create mode 100644 static/default_theme.css create mode 100644 static/favicon.ico create mode 100644 static/icons/LICENSE create mode 100644 static/icons/accessibility.svg create mode 100644 static/icons/activity.svg create mode 100644 static/icons/air-vent.svg create mode 100644 static/icons/airplay.svg create mode 100644 static/icons/alarm-check.svg create mode 100644 static/icons/alarm-clock-off.svg create mode 100644 static/icons/alarm-clock.svg create mode 100644 static/icons/alarm-minus.svg create mode 100644 static/icons/alarm-plus.svg create mode 100644 static/icons/album.svg create mode 100644 static/icons/alert-circle.svg create mode 100644 static/icons/alert-octagon.svg create mode 100644 static/icons/alert-triangle.svg create mode 100644 static/icons/align-center-horizontal.svg create mode 100644 static/icons/align-center-vertical.svg create mode 100644 static/icons/align-center.svg create mode 100644 static/icons/align-end-horizontal.svg create mode 100644 static/icons/align-end-vertical.svg create mode 100644 static/icons/align-horizontal-distribute-center.svg create mode 100644 static/icons/align-horizontal-distribute-end.svg create mode 100644 static/icons/align-horizontal-distribute-start.svg create mode 100644 static/icons/align-horizontal-justify-center.svg create mode 100644 static/icons/align-horizontal-justify-end.svg create mode 100644 static/icons/align-horizontal-justify-start.svg create mode 100644 static/icons/align-horizontal-space-around.svg create mode 100644 static/icons/align-horizontal-space-between.svg create mode 100644 static/icons/align-justify.svg create mode 100644 static/icons/align-left.svg create mode 100644 static/icons/align-right.svg create mode 100644 static/icons/align-start-horizontal.svg create mode 100644 static/icons/align-start-vertical.svg create mode 100644 static/icons/align-vertical-distribute-center.svg create mode 100644 static/icons/align-vertical-distribute-end.svg create mode 100644 static/icons/align-vertical-distribute-start.svg create mode 100644 static/icons/align-vertical-justify-center.svg create mode 100644 static/icons/align-vertical-justify-end.svg create mode 100644 static/icons/align-vertical-justify-start.svg create mode 100644 static/icons/align-vertical-space-around.svg create mode 100644 static/icons/align-vertical-space-between.svg create mode 100644 static/icons/anchor.svg create mode 100644 static/icons/angry.svg create mode 100644 static/icons/annoyed.svg create mode 100644 static/icons/aperture.svg create mode 100644 static/icons/apple.svg create mode 100644 static/icons/archive-restore.svg create mode 100644 static/icons/archive.svg create mode 100644 static/icons/armchair.svg create mode 100644 static/icons/arrow-big-down.svg create mode 100644 static/icons/arrow-big-left.svg create mode 100644 static/icons/arrow-big-right.svg create mode 100644 static/icons/arrow-big-up.svg create mode 100644 static/icons/arrow-down-circle.svg create mode 100644 static/icons/arrow-down-left.svg create mode 100644 static/icons/arrow-down-right.svg create mode 100644 static/icons/arrow-down.svg create mode 100644 static/icons/arrow-left-circle.svg create mode 100644 static/icons/arrow-left-right.svg create mode 100644 static/icons/arrow-left.svg create mode 100644 static/icons/arrow-right-circle.svg create mode 100644 static/icons/arrow-right.svg create mode 100644 static/icons/arrow-up-circle.svg create mode 100644 static/icons/arrow-up-down.svg create mode 100644 static/icons/arrow-up-left.svg create mode 100644 static/icons/arrow-up-right.svg create mode 100644 static/icons/arrow-up.svg create mode 100644 static/icons/asterisk.svg create mode 100644 static/icons/at-sign.svg create mode 100644 static/icons/award.svg create mode 100644 static/icons/axe.svg create mode 100644 static/icons/axis-3d.svg create mode 100644 static/icons/baby.svg create mode 100644 static/icons/backpack.svg create mode 100644 static/icons/baggage-claim.svg create mode 100644 static/icons/banana.svg create mode 100644 static/icons/banknote.svg create mode 100644 static/icons/bar-chart-2.svg create mode 100644 static/icons/bar-chart-3.svg create mode 100644 static/icons/bar-chart-4.svg create mode 100644 static/icons/bar-chart-horizontal.svg create mode 100644 static/icons/bar-chart.svg create mode 100644 static/icons/baseline.svg create mode 100644 static/icons/bath.svg create mode 100644 static/icons/battery-charging.svg create mode 100644 static/icons/battery-full.svg create mode 100644 static/icons/battery-low.svg create mode 100644 static/icons/battery-medium.svg create mode 100644 static/icons/battery.svg create mode 100644 static/icons/beaker.svg create mode 100644 static/icons/bean-off.svg create mode 100644 static/icons/bean.svg create mode 100644 static/icons/bed-double.svg create mode 100644 static/icons/bed-single.svg create mode 100644 static/icons/bed.svg create mode 100644 static/icons/beer.svg create mode 100644 static/icons/bell-minus.svg create mode 100644 static/icons/bell-off.svg create mode 100644 static/icons/bell-plus.svg create mode 100644 static/icons/bell-ring.svg create mode 100644 static/icons/bell.svg create mode 100644 static/icons/bike.svg create mode 100644 static/icons/binary.svg create mode 100644 static/icons/bitcoin.svg create mode 100644 static/icons/bluetooth-connected.svg create mode 100644 static/icons/bluetooth-off.svg create mode 100644 static/icons/bluetooth-searching.svg create mode 100644 static/icons/bluetooth.svg create mode 100644 static/icons/bold.svg create mode 100644 static/icons/bomb.svg create mode 100644 static/icons/bone.svg create mode 100644 static/icons/book-open-check.svg create mode 100644 static/icons/book-open.svg create mode 100644 static/icons/book.svg create mode 100644 static/icons/bookmark-minus.svg create mode 100644 static/icons/bookmark-plus.svg create mode 100644 static/icons/bookmark.svg create mode 100644 static/icons/bot.svg create mode 100644 static/icons/box-select.svg create mode 100644 static/icons/box.svg create mode 100644 static/icons/boxes.svg create mode 100644 static/icons/briefcase.svg create mode 100644 static/icons/brush.svg create mode 100644 static/icons/bug.svg create mode 100644 static/icons/building-2.svg create mode 100644 static/icons/building.svg create mode 100644 static/icons/bus.svg create mode 100644 static/icons/cake.svg create mode 100644 static/icons/calculator.svg create mode 100644 static/icons/calendar-check-2.svg create mode 100644 static/icons/calendar-check.svg create mode 100644 static/icons/calendar-clock.svg create mode 100644 static/icons/calendar-days.svg create mode 100644 static/icons/calendar-heart.svg create mode 100644 static/icons/calendar-minus.svg create mode 100644 static/icons/calendar-off.svg create mode 100644 static/icons/calendar-plus.svg create mode 100644 static/icons/calendar-range.svg create mode 100644 static/icons/calendar-search.svg create mode 100644 static/icons/calendar-x-2.svg create mode 100644 static/icons/calendar-x.svg create mode 100644 static/icons/calendar.svg create mode 100644 static/icons/camera-off.svg create mode 100644 static/icons/camera.svg create mode 100644 static/icons/candy-off.svg create mode 100644 static/icons/candy.svg create mode 100644 static/icons/car.svg create mode 100644 static/icons/carrot.svg create mode 100644 static/icons/cast.svg create mode 100644 static/icons/cat.svg create mode 100644 static/icons/check-check.svg create mode 100644 static/icons/check-circle-2.svg create mode 100644 static/icons/check-circle.svg create mode 100644 static/icons/check-square.svg create mode 100644 static/icons/check.svg create mode 100644 static/icons/chef-hat.svg create mode 100644 static/icons/cherry.svg create mode 100644 static/icons/chevron-down.svg create mode 100644 static/icons/chevron-first.svg create mode 100644 static/icons/chevron-last.svg create mode 100644 static/icons/chevron-left.svg create mode 100644 static/icons/chevron-right.svg create mode 100644 static/icons/chevron-up.svg create mode 100644 static/icons/chevrons-down-up.svg create mode 100644 static/icons/chevrons-down.svg create mode 100644 static/icons/chevrons-left-right.svg create mode 100644 static/icons/chevrons-left.svg create mode 100644 static/icons/chevrons-right-left.svg create mode 100644 static/icons/chevrons-right.svg create mode 100644 static/icons/chevrons-up-down.svg create mode 100644 static/icons/chevrons-up.svg create mode 100644 static/icons/chrome.svg create mode 100644 static/icons/cigarette-off.svg create mode 100644 static/icons/cigarette.svg create mode 100644 static/icons/circle-dot.svg create mode 100644 static/icons/circle-ellipsis.svg create mode 100644 static/icons/circle-slashed.svg create mode 100644 static/icons/circle.svg create mode 100644 static/icons/citrus.svg create mode 100644 static/icons/clapperboard.svg create mode 100644 static/icons/clipboard-check.svg create mode 100644 static/icons/clipboard-copy.svg create mode 100644 static/icons/clipboard-edit.svg create mode 100644 static/icons/clipboard-list.svg create mode 100644 static/icons/clipboard-signature.svg create mode 100644 static/icons/clipboard-type.svg create mode 100644 static/icons/clipboard-x.svg create mode 100644 static/icons/clipboard.svg create mode 100644 static/icons/clock-1.svg create mode 100644 static/icons/clock-10.svg create mode 100644 static/icons/clock-11.svg create mode 100644 static/icons/clock-12.svg create mode 100644 static/icons/clock-2.svg create mode 100644 static/icons/clock-3.svg create mode 100644 static/icons/clock-4.svg create mode 100644 static/icons/clock-5.svg create mode 100644 static/icons/clock-6.svg create mode 100644 static/icons/clock-7.svg create mode 100644 static/icons/clock-8.svg create mode 100644 static/icons/clock-9.svg create mode 100644 static/icons/clock.svg create mode 100644 static/icons/cloud-cog.svg create mode 100644 static/icons/cloud-drizzle.svg create mode 100644 static/icons/cloud-fog.svg create mode 100644 static/icons/cloud-hail.svg create mode 100644 static/icons/cloud-lightning.svg create mode 100644 static/icons/cloud-moon-rain.svg create mode 100644 static/icons/cloud-moon.svg create mode 100644 static/icons/cloud-off.svg create mode 100644 static/icons/cloud-rain-wind.svg create mode 100644 static/icons/cloud-rain.svg create mode 100644 static/icons/cloud-snow.svg create mode 100644 static/icons/cloud-sun-rain.svg create mode 100644 static/icons/cloud-sun.svg create mode 100644 static/icons/cloud.svg create mode 100644 static/icons/cloudy.svg create mode 100644 static/icons/clover.svg create mode 100644 static/icons/code-2.svg create mode 100644 static/icons/code.svg create mode 100644 static/icons/codepen.svg create mode 100644 static/icons/codesandbox.svg create mode 100644 static/icons/coffee.svg create mode 100644 static/icons/cog.svg create mode 100644 static/icons/coins.svg create mode 100644 static/icons/columns.svg create mode 100644 static/icons/command.svg create mode 100644 static/icons/compass.svg create mode 100644 static/icons/component.svg create mode 100644 static/icons/concierge-bell.svg create mode 100644 static/icons/contact.svg create mode 100644 static/icons/contrast.svg create mode 100644 static/icons/cookie.svg create mode 100644 static/icons/copy.svg create mode 100644 static/icons/copyleft.svg create mode 100644 static/icons/copyright.svg create mode 100644 static/icons/corner-down-left.svg create mode 100644 static/icons/corner-down-right.svg create mode 100644 static/icons/corner-left-down.svg create mode 100644 static/icons/corner-left-up.svg create mode 100644 static/icons/corner-right-down.svg create mode 100644 static/icons/corner-right-up.svg create mode 100644 static/icons/corner-up-left.svg create mode 100644 static/icons/corner-up-right.svg create mode 100644 static/icons/cpu.svg create mode 100644 static/icons/credit-card.svg create mode 100644 static/icons/croissant.svg create mode 100644 static/icons/crop.svg create mode 100644 static/icons/cross.svg create mode 100644 static/icons/crosshair.svg create mode 100644 static/icons/crown.svg create mode 100644 static/icons/cup-soda.svg create mode 100644 static/icons/curly-braces.svg create mode 100644 static/icons/currency.svg create mode 100644 static/icons/database.svg create mode 100644 static/icons/delete.svg create mode 100644 static/icons/diamond.svg create mode 100644 static/icons/dice-1.svg create mode 100644 static/icons/dice-2.svg create mode 100644 static/icons/dice-3.svg create mode 100644 static/icons/dice-4.svg create mode 100644 static/icons/dice-5.svg create mode 100644 static/icons/dice-6.svg create mode 100644 static/icons/dices.svg create mode 100644 static/icons/diff.svg create mode 100644 static/icons/disc.svg create mode 100644 static/icons/divide-circle.svg create mode 100644 static/icons/divide-square.svg create mode 100644 static/icons/divide.svg create mode 100644 static/icons/dna-off.svg create mode 100644 static/icons/dna.svg create mode 100644 static/icons/dog.svg create mode 100644 static/icons/dollar-sign.svg create mode 100644 static/icons/download-cloud.svg create mode 100644 static/icons/download.svg create mode 100644 static/icons/dribbble.svg create mode 100644 static/icons/droplet.svg create mode 100644 static/icons/droplets.svg create mode 100644 static/icons/drumstick.svg create mode 100644 static/icons/dumbbell.svg create mode 100644 static/icons/ear-off.svg create mode 100644 static/icons/ear.svg create mode 100644 static/icons/edit-2.svg create mode 100644 static/icons/edit-3.svg create mode 100644 static/icons/edit.svg create mode 100644 static/icons/egg-fried.svg create mode 100644 static/icons/egg-off.svg create mode 100644 static/icons/egg.svg create mode 100644 static/icons/equal-not.svg create mode 100644 static/icons/equal.svg create mode 100644 static/icons/eraser.svg create mode 100644 static/icons/euro.svg create mode 100644 static/icons/expand.svg create mode 100644 static/icons/external-link.svg create mode 100644 static/icons/eye-off.svg create mode 100644 static/icons/eye.svg create mode 100644 static/icons/facebook.svg create mode 100644 static/icons/factory.svg create mode 100644 static/icons/fan.svg create mode 100644 static/icons/fast-forward.svg create mode 100644 static/icons/feather.svg create mode 100644 static/icons/figma.svg create mode 100644 static/icons/file-archive.svg create mode 100644 static/icons/file-audio-2.svg create mode 100644 static/icons/file-audio.svg create mode 100644 static/icons/file-axis-3d.svg create mode 100644 static/icons/file-badge-2.svg create mode 100644 static/icons/file-badge.svg create mode 100644 static/icons/file-bar-chart-2.svg create mode 100644 static/icons/file-bar-chart.svg create mode 100644 static/icons/file-box.svg create mode 100644 static/icons/file-check-2.svg create mode 100644 static/icons/file-check.svg create mode 100644 static/icons/file-clock.svg create mode 100644 static/icons/file-code.svg create mode 100644 static/icons/file-cog-2.svg create mode 100644 static/icons/file-cog.svg create mode 100644 static/icons/file-diff.svg create mode 100644 static/icons/file-digit.svg create mode 100644 static/icons/file-down.svg create mode 100644 static/icons/file-edit.svg create mode 100644 static/icons/file-heart.svg create mode 100644 static/icons/file-image.svg create mode 100644 static/icons/file-input.svg create mode 100644 static/icons/file-json-2.svg create mode 100644 static/icons/file-json.svg create mode 100644 static/icons/file-key-2.svg create mode 100644 static/icons/file-key.svg create mode 100644 static/icons/file-line-chart.svg create mode 100644 static/icons/file-lock-2.svg create mode 100644 static/icons/file-lock.svg create mode 100644 static/icons/file-minus-2.svg create mode 100644 static/icons/file-minus.svg create mode 100644 static/icons/file-output.svg create mode 100644 static/icons/file-pie-chart.svg create mode 100644 static/icons/file-plus-2.svg create mode 100644 static/icons/file-plus.svg create mode 100644 static/icons/file-question.svg create mode 100644 static/icons/file-scan.svg create mode 100644 static/icons/file-search-2.svg create mode 100644 static/icons/file-search.svg create mode 100644 static/icons/file-signature.svg create mode 100644 static/icons/file-spreadsheet.svg create mode 100644 static/icons/file-symlink.svg create mode 100644 static/icons/file-terminal.svg create mode 100644 static/icons/file-text.svg create mode 100644 static/icons/file-type-2.svg create mode 100644 static/icons/file-type.svg create mode 100644 static/icons/file-up.svg create mode 100644 static/icons/file-video-2.svg create mode 100644 static/icons/file-video.svg create mode 100644 static/icons/file-volume-2.svg create mode 100644 static/icons/file-volume.svg create mode 100644 static/icons/file-warning.svg create mode 100644 static/icons/file-x-2.svg create mode 100644 static/icons/file-x.svg create mode 100644 static/icons/file.svg create mode 100644 static/icons/files.svg create mode 100644 static/icons/film.svg create mode 100644 static/icons/filter.svg create mode 100644 static/icons/fingerprint.svg create mode 100644 static/icons/flag-off.svg create mode 100644 static/icons/flag-triangle-left.svg create mode 100644 static/icons/flag-triangle-right.svg create mode 100644 static/icons/flag.svg create mode 100644 static/icons/flame.svg create mode 100644 static/icons/flashlight-off.svg create mode 100644 static/icons/flashlight.svg create mode 100644 static/icons/flask-conical-off.svg create mode 100644 static/icons/flask-conical.svg create mode 100644 static/icons/flask-round.svg create mode 100644 static/icons/flip-horizontal-2.svg create mode 100644 static/icons/flip-horizontal.svg create mode 100644 static/icons/flip-vertical-2.svg create mode 100644 static/icons/flip-vertical.svg create mode 100644 static/icons/flower-2.svg create mode 100644 static/icons/flower.svg create mode 100644 static/icons/focus.svg create mode 100644 static/icons/folder-archive.svg create mode 100644 static/icons/folder-check.svg create mode 100644 static/icons/folder-clock.svg create mode 100644 static/icons/folder-closed.svg create mode 100644 static/icons/folder-cog-2.svg create mode 100644 static/icons/folder-cog.svg create mode 100644 static/icons/folder-down.svg create mode 100644 static/icons/folder-edit.svg create mode 100644 static/icons/folder-heart.svg create mode 100644 static/icons/folder-input.svg create mode 100644 static/icons/folder-key.svg create mode 100644 static/icons/folder-lock.svg create mode 100644 static/icons/folder-minus.svg create mode 100644 static/icons/folder-open.svg create mode 100644 static/icons/folder-output.svg create mode 100644 static/icons/folder-plus.svg create mode 100644 static/icons/folder-search-2.svg create mode 100644 static/icons/folder-search.svg create mode 100644 static/icons/folder-symlink.svg create mode 100644 static/icons/folder-tree.svg create mode 100644 static/icons/folder-up.svg create mode 100644 static/icons/folder-x.svg create mode 100644 static/icons/folder.svg create mode 100644 static/icons/folders.svg create mode 100644 static/icons/form-input.svg create mode 100644 static/icons/forward.svg create mode 100644 static/icons/frame.svg create mode 100644 static/icons/framer.svg create mode 100644 static/icons/frown.svg create mode 100644 static/icons/fuel.svg create mode 100644 static/icons/function-square.svg create mode 100644 static/icons/gamepad-2.svg create mode 100644 static/icons/gamepad.svg create mode 100644 static/icons/gauge.svg create mode 100644 static/icons/gavel.svg create mode 100644 static/icons/gem.svg create mode 100644 static/icons/ghost.svg create mode 100644 static/icons/gift.svg create mode 100644 static/icons/git-branch-plus.svg create mode 100644 static/icons/git-branch.svg create mode 100644 static/icons/git-commit.svg create mode 100644 static/icons/git-compare.svg create mode 100644 static/icons/git-fork.svg create mode 100644 static/icons/git-merge.svg create mode 100644 static/icons/git-pull-request-closed.svg create mode 100644 static/icons/git-pull-request-draft.svg create mode 100644 static/icons/git-pull-request.svg create mode 100644 static/icons/github.svg create mode 100644 static/icons/gitlab.svg create mode 100644 static/icons/glass-water.svg create mode 100644 static/icons/glasses.svg create mode 100644 static/icons/globe-2.svg create mode 100644 static/icons/globe.svg create mode 100644 static/icons/grab.svg create mode 100644 static/icons/graduation-cap.svg create mode 100644 static/icons/grape.svg create mode 100644 static/icons/grid.svg create mode 100644 static/icons/grip-horizontal.svg create mode 100644 static/icons/grip-vertical.svg create mode 100644 static/icons/hammer.svg create mode 100644 static/icons/hand-metal.svg create mode 100644 static/icons/hand.svg create mode 100644 static/icons/hard-drive.svg create mode 100644 static/icons/hard-hat.svg create mode 100644 static/icons/hash.svg create mode 100644 static/icons/haze.svg create mode 100644 static/icons/heading-1.svg create mode 100644 static/icons/heading-2.svg create mode 100644 static/icons/heading-3.svg create mode 100644 static/icons/heading-4.svg create mode 100644 static/icons/heading-5.svg create mode 100644 static/icons/heading-6.svg create mode 100644 static/icons/heading.svg create mode 100644 static/icons/headphones.svg create mode 100644 static/icons/heart-crack.svg create mode 100644 static/icons/heart-handshake.svg create mode 100644 static/icons/heart-off.svg create mode 100644 static/icons/heart-pulse.svg create mode 100644 static/icons/heart.svg create mode 100644 static/icons/help-circle.svg create mode 100644 static/icons/hexagon.svg create mode 100644 static/icons/highlighter.svg create mode 100644 static/icons/history.svg create mode 100644 static/icons/home.svg create mode 100644 static/icons/hop-off.svg create mode 100644 static/icons/hop.svg create mode 100644 static/icons/hourglass.svg create mode 100644 static/icons/ice-cream.svg create mode 100644 static/icons/image-minus.svg create mode 100644 static/icons/image-off.svg create mode 100644 static/icons/image-plus.svg create mode 100644 static/icons/image.svg create mode 100644 static/icons/import.svg create mode 100644 static/icons/inbox.svg create mode 100644 static/icons/indent.svg create mode 100644 static/icons/indian-rupee.svg create mode 100644 static/icons/infinity.svg create mode 100644 static/icons/info.svg create mode 100644 static/icons/inspect.svg create mode 100644 static/icons/instagram.svg create mode 100644 static/icons/italic.svg create mode 100644 static/icons/japanese-yen.svg create mode 100644 static/icons/joystick.svg create mode 100644 static/icons/key.svg create mode 100644 static/icons/keyboard.svg create mode 100644 static/icons/lamp-ceiling.svg create mode 100644 static/icons/lamp-desk.svg create mode 100644 static/icons/lamp-floor.svg create mode 100644 static/icons/lamp-wall-down.svg create mode 100644 static/icons/lamp-wall-up.svg create mode 100644 static/icons/lamp.svg create mode 100644 static/icons/landmark.svg create mode 100644 static/icons/languages.svg create mode 100644 static/icons/laptop-2.svg create mode 100644 static/icons/laptop.svg create mode 100644 static/icons/lasso-select.svg create mode 100644 static/icons/lasso.svg create mode 100644 static/icons/laugh.svg create mode 100644 static/icons/layers.svg create mode 100644 static/icons/layout-dashboard.svg create mode 100644 static/icons/layout-grid.svg create mode 100644 static/icons/layout-list.svg create mode 100644 static/icons/layout-template.svg create mode 100644 static/icons/layout.svg create mode 100644 static/icons/leaf.svg create mode 100644 static/icons/library.svg create mode 100644 static/icons/life-buoy.svg create mode 100644 static/icons/lightbulb-off.svg create mode 100644 static/icons/lightbulb.svg create mode 100644 static/icons/line-chart.svg create mode 100644 static/icons/link-2-off.svg create mode 100644 static/icons/link-2.svg create mode 100644 static/icons/link.svg create mode 100644 static/icons/linkedin.svg create mode 100644 static/icons/list-checks.svg create mode 100644 static/icons/list-end.svg create mode 100644 static/icons/list-minus.svg create mode 100644 static/icons/list-music.svg create mode 100644 static/icons/list-ordered.svg create mode 100644 static/icons/list-plus.svg create mode 100644 static/icons/list-start.svg create mode 100644 static/icons/list-video.svg create mode 100644 static/icons/list-x.svg create mode 100644 static/icons/list.svg create mode 100644 static/icons/loader-2.svg create mode 100644 static/icons/loader.svg create mode 100644 static/icons/locate-fixed.svg create mode 100644 static/icons/locate-off.svg create mode 100644 static/icons/locate.svg create mode 100644 static/icons/lock.svg create mode 100644 static/icons/log-in.svg create mode 100644 static/icons/log-out.svg create mode 100644 static/icons/luggage.svg create mode 100644 static/icons/magnet.svg create mode 100644 static/icons/mail-check.svg create mode 100644 static/icons/mail-minus.svg create mode 100644 static/icons/mail-open.svg create mode 100644 static/icons/mail-plus.svg create mode 100644 static/icons/mail-question.svg create mode 100644 static/icons/mail-search.svg create mode 100644 static/icons/mail-warning.svg create mode 100644 static/icons/mail-x.svg create mode 100644 static/icons/mail.svg create mode 100644 static/icons/mails.svg create mode 100644 static/icons/map-pin-off.svg create mode 100644 static/icons/map-pin.svg create mode 100644 static/icons/map.svg create mode 100644 static/icons/martini.svg create mode 100644 static/icons/maximize-2.svg create mode 100644 static/icons/maximize.svg create mode 100644 static/icons/medal.svg create mode 100644 static/icons/megaphone-off.svg create mode 100644 static/icons/megaphone.svg create mode 100644 static/icons/meh.svg create mode 100644 static/icons/menu.svg create mode 100644 static/icons/message-circle.svg create mode 100644 static/icons/message-square.svg create mode 100644 static/icons/mic-2.svg create mode 100644 static/icons/mic-off.svg create mode 100644 static/icons/mic.svg create mode 100644 static/icons/microscope.svg create mode 100644 static/icons/microwave.svg create mode 100644 static/icons/milestone.svg create mode 100644 static/icons/milk-off.svg create mode 100644 static/icons/milk.svg create mode 100644 static/icons/minimize-2.svg create mode 100644 static/icons/minimize.svg create mode 100644 static/icons/minus-circle.svg create mode 100644 static/icons/minus-square.svg create mode 100644 static/icons/minus.svg create mode 100644 static/icons/monitor-off.svg create mode 100644 static/icons/monitor-smartphone.svg create mode 100644 static/icons/monitor-speaker.svg create mode 100644 static/icons/monitor.svg create mode 100644 static/icons/moon.svg create mode 100644 static/icons/more-horizontal.svg create mode 100644 static/icons/more-vertical.svg create mode 100644 static/icons/mountain-snow.svg create mode 100644 static/icons/mountain.svg create mode 100644 static/icons/mouse-pointer-2.svg create mode 100644 static/icons/mouse-pointer-click.svg create mode 100644 static/icons/mouse-pointer.svg create mode 100644 static/icons/mouse.svg create mode 100644 static/icons/move-3d.svg create mode 100644 static/icons/move-diagonal-2.svg create mode 100644 static/icons/move-diagonal.svg create mode 100644 static/icons/move-horizontal.svg create mode 100644 static/icons/move-vertical.svg create mode 100644 static/icons/move.svg create mode 100644 static/icons/music-2.svg create mode 100644 static/icons/music-3.svg create mode 100644 static/icons/music-4.svg create mode 100644 static/icons/music.svg create mode 100644 static/icons/navigation-2-off.svg create mode 100644 static/icons/navigation-2.svg create mode 100644 static/icons/navigation-off.svg create mode 100644 static/icons/navigation.svg create mode 100644 static/icons/network.svg create mode 100644 static/icons/newspaper.svg create mode 100644 static/icons/nut-off.svg create mode 100644 static/icons/nut.svg create mode 100644 static/icons/octagon.svg create mode 100644 static/icons/option.svg create mode 100644 static/icons/outdent.svg create mode 100644 static/icons/package-2.svg create mode 100644 static/icons/package-check.svg create mode 100644 static/icons/package-minus.svg create mode 100644 static/icons/package-open.svg create mode 100644 static/icons/package-plus.svg create mode 100644 static/icons/package-search.svg create mode 100644 static/icons/package-x.svg create mode 100644 static/icons/package.svg create mode 100644 static/icons/paint-bucket.svg create mode 100644 static/icons/paintbrush-2.svg create mode 100644 static/icons/paintbrush.svg create mode 100644 static/icons/palette.svg create mode 100644 static/icons/palmtree.svg create mode 100644 static/icons/paperclip.svg create mode 100644 static/icons/party-popper.svg create mode 100644 static/icons/pause-circle.svg create mode 100644 static/icons/pause-octagon.svg create mode 100644 static/icons/pause.svg create mode 100644 static/icons/pen-tool.svg create mode 100644 static/icons/pencil.svg create mode 100644 static/icons/percent.svg create mode 100644 static/icons/person-standing.svg create mode 100644 static/icons/phone-call.svg create mode 100644 static/icons/phone-forwarded.svg create mode 100644 static/icons/phone-incoming.svg create mode 100644 static/icons/phone-missed.svg create mode 100644 static/icons/phone-off.svg create mode 100644 static/icons/phone-outgoing.svg create mode 100644 static/icons/phone.svg create mode 100644 static/icons/pie-chart.svg create mode 100644 static/icons/piggy-bank.svg create mode 100644 static/icons/pin-off.svg create mode 100644 static/icons/pin.svg create mode 100644 static/icons/pipette.svg create mode 100644 static/icons/pizza.svg create mode 100644 static/icons/plane.svg create mode 100644 static/icons/play-circle.svg create mode 100644 static/icons/play.svg create mode 100644 static/icons/plug-2.svg create mode 100644 static/icons/plug-zap.svg create mode 100644 static/icons/plug.svg create mode 100644 static/icons/plus-circle.svg create mode 100644 static/icons/plus-square.svg create mode 100644 static/icons/plus.svg create mode 100644 static/icons/pocket.svg create mode 100644 static/icons/podcast.svg create mode 100644 static/icons/pointer.svg create mode 100644 static/icons/pound-sterling.svg create mode 100644 static/icons/power-off.svg create mode 100644 static/icons/power.svg create mode 100644 static/icons/printer.svg create mode 100644 static/icons/puzzle.svg create mode 100644 static/icons/qr-code.svg create mode 100644 static/icons/quote.svg create mode 100644 static/icons/radio-receiver.svg create mode 100644 static/icons/radio.svg create mode 100644 static/icons/rectangle-horizontal.svg create mode 100644 static/icons/rectangle-vertical.svg create mode 100644 static/icons/recycle.svg create mode 100644 static/icons/redo-2.svg create mode 100644 static/icons/redo.svg create mode 100644 static/icons/refresh-ccw.svg create mode 100644 static/icons/refresh-cw.svg create mode 100644 static/icons/refrigerator.svg create mode 100644 static/icons/regex.svg create mode 100644 static/icons/repeat-1.svg create mode 100644 static/icons/repeat.svg create mode 100644 static/icons/reply-all.svg create mode 100644 static/icons/reply.svg create mode 100644 static/icons/rewind.svg create mode 100644 static/icons/rocket.svg create mode 100644 static/icons/rocking-chair.svg create mode 100644 static/icons/rotate-3d.svg create mode 100644 static/icons/rotate-ccw.svg create mode 100644 static/icons/rotate-cw.svg create mode 100644 static/icons/rss.svg create mode 100644 static/icons/ruler.svg create mode 100644 static/icons/russian-ruble.svg create mode 100644 static/icons/sailboat.svg create mode 100644 static/icons/save.svg create mode 100644 static/icons/scale-3d.svg create mode 100644 static/icons/scale.svg create mode 100644 static/icons/scaling.svg create mode 100644 static/icons/scan-face.svg create mode 100644 static/icons/scan-line.svg create mode 100644 static/icons/scan.svg create mode 100644 static/icons/scissors.svg create mode 100644 static/icons/screen-share-off.svg create mode 100644 static/icons/screen-share.svg create mode 100644 static/icons/scroll.svg create mode 100644 static/icons/search.svg create mode 100644 static/icons/send.svg create mode 100644 static/icons/separator-horizontal.svg create mode 100644 static/icons/separator-vertical.svg create mode 100644 static/icons/server-cog.svg create mode 100644 static/icons/server-crash.svg create mode 100644 static/icons/server-off.svg create mode 100644 static/icons/server.svg create mode 100644 static/icons/settings-2.svg create mode 100644 static/icons/settings.svg create mode 100644 static/icons/share-2.svg create mode 100644 static/icons/share.svg create mode 100644 static/icons/sheet.svg create mode 100644 static/icons/shield-alert.svg create mode 100644 static/icons/shield-check.svg create mode 100644 static/icons/shield-close.svg create mode 100644 static/icons/shield-off.svg create mode 100644 static/icons/shield.svg create mode 100644 static/icons/shirt.svg create mode 100644 static/icons/shopping-bag.svg create mode 100644 static/icons/shopping-cart.svg create mode 100644 static/icons/shovel.svg create mode 100644 static/icons/shower-head.svg create mode 100644 static/icons/shrink.svg create mode 100644 static/icons/shrub.svg create mode 100644 static/icons/shuffle.svg create mode 100644 static/icons/sidebar-close.svg create mode 100644 static/icons/sidebar-open.svg create mode 100644 static/icons/sidebar.svg create mode 100644 static/icons/sigma.svg create mode 100644 static/icons/signal-high.svg create mode 100644 static/icons/signal-low.svg create mode 100644 static/icons/signal-medium.svg create mode 100644 static/icons/signal-zero.svg create mode 100644 static/icons/signal.svg create mode 100644 static/icons/siren.svg create mode 100644 static/icons/skip-back.svg create mode 100644 static/icons/skip-forward.svg create mode 100644 static/icons/skull.svg create mode 100644 static/icons/slack.svg create mode 100644 static/icons/slash.svg create mode 100644 static/icons/slice.svg create mode 100644 static/icons/sliders-horizontal.svg create mode 100644 static/icons/sliders.svg create mode 100644 static/icons/smartphone-charging.svg create mode 100644 static/icons/smartphone.svg create mode 100644 static/icons/smile-plus.svg create mode 100644 static/icons/smile.svg create mode 100644 static/icons/snowflake.svg create mode 100644 static/icons/sofa.svg create mode 100644 static/icons/sort-asc.svg create mode 100644 static/icons/sort-desc.svg create mode 100644 static/icons/speaker.svg create mode 100644 static/icons/spline.svg create mode 100644 static/icons/sprout.svg create mode 100644 static/icons/square.svg create mode 100644 static/icons/star-half.svg create mode 100644 static/icons/star-off.svg create mode 100644 static/icons/star.svg create mode 100644 static/icons/stethoscope.svg create mode 100644 static/icons/sticker.svg create mode 100644 static/icons/sticky-note.svg create mode 100644 static/icons/stop-circle.svg create mode 100644 static/icons/stretch-horizontal.svg create mode 100644 static/icons/stretch-vertical.svg create mode 100644 static/icons/strikethrough.svg create mode 100644 static/icons/subscript.svg create mode 100644 static/icons/sun-dim.svg create mode 100644 static/icons/sun-medium.svg create mode 100644 static/icons/sun-moon.svg create mode 100644 static/icons/sun-snow.svg create mode 100644 static/icons/sun.svg create mode 100644 static/icons/sunrise.svg create mode 100644 static/icons/sunset.svg create mode 100644 static/icons/superscript.svg create mode 100644 static/icons/swiss-franc.svg create mode 100644 static/icons/switch-camera.svg create mode 100644 static/icons/sword.svg create mode 100644 static/icons/swords.svg create mode 100644 static/icons/syringe.svg create mode 100644 static/icons/table-2.svg create mode 100644 static/icons/table.svg create mode 100644 static/icons/tablet.svg create mode 100644 static/icons/tag.svg create mode 100644 static/icons/tags.svg create mode 100644 static/icons/target.svg create mode 100644 static/icons/tent.svg create mode 100644 static/icons/terminal-square.svg create mode 100644 static/icons/terminal.svg create mode 100644 static/icons/text-cursor-input.svg create mode 100644 static/icons/text-cursor.svg create mode 100644 static/icons/thermometer-snowflake.svg create mode 100644 static/icons/thermometer-sun.svg create mode 100644 static/icons/thermometer.svg create mode 100644 static/icons/thumbs-down.svg create mode 100644 static/icons/thumbs-up.svg create mode 100644 static/icons/ticket.svg create mode 100644 static/icons/timer-off.svg create mode 100644 static/icons/timer-reset.svg create mode 100644 static/icons/timer.svg create mode 100644 static/icons/toggle-left.svg create mode 100644 static/icons/toggle-right.svg create mode 100644 static/icons/tornado.svg create mode 100644 static/icons/toy-brick.svg create mode 100644 static/icons/train.svg create mode 100644 static/icons/trash-2.svg create mode 100644 static/icons/trash.svg create mode 100644 static/icons/tree-deciduous.svg create mode 100644 static/icons/tree-pine.svg create mode 100644 static/icons/trees.svg create mode 100644 static/icons/trello.svg create mode 100644 static/icons/trending-down.svg create mode 100644 static/icons/trending-up.svg create mode 100644 static/icons/triangle.svg create mode 100644 static/icons/trophy.svg create mode 100644 static/icons/truck.svg create mode 100644 static/icons/tv-2.svg create mode 100644 static/icons/tv.svg create mode 100644 static/icons/twitch.svg create mode 100644 static/icons/twitter.svg create mode 100644 static/icons/type.svg create mode 100644 static/icons/umbrella.svg create mode 100644 static/icons/underline.svg create mode 100644 static/icons/undo-2.svg create mode 100644 static/icons/undo.svg create mode 100644 static/icons/unlink-2.svg create mode 100644 static/icons/unlink.svg create mode 100644 static/icons/unlock.svg create mode 100644 static/icons/upload-cloud.svg create mode 100644 static/icons/upload.svg create mode 100644 static/icons/usb.svg create mode 100644 static/icons/user-check.svg create mode 100644 static/icons/user-cog.svg create mode 100644 static/icons/user-minus.svg create mode 100644 static/icons/user-plus.svg create mode 100644 static/icons/user-x.svg create mode 100644 static/icons/user.svg create mode 100644 static/icons/users.svg create mode 100644 static/icons/utensils-crossed.svg create mode 100644 static/icons/utensils.svg create mode 100644 static/icons/vegan.svg create mode 100644 static/icons/venetian-mask.svg create mode 100644 static/icons/verified.svg create mode 100644 static/icons/vibrate-off.svg create mode 100644 static/icons/vibrate.svg create mode 100644 static/icons/video-off.svg create mode 100644 static/icons/video.svg create mode 100644 static/icons/view.svg create mode 100644 static/icons/voicemail.svg create mode 100644 static/icons/volume-1.svg create mode 100644 static/icons/volume-2.svg create mode 100644 static/icons/volume-x.svg create mode 100644 static/icons/volume.svg create mode 100644 static/icons/wallet.svg create mode 100644 static/icons/wand-2.svg create mode 100644 static/icons/wand.svg create mode 100644 static/icons/watch.svg create mode 100644 static/icons/waves.svg create mode 100644 static/icons/webcam.svg create mode 100644 static/icons/webhook.svg create mode 100644 static/icons/wheat-off.svg create mode 100644 static/icons/wheat.svg create mode 100644 static/icons/wifi-off.svg create mode 100644 static/icons/wifi.svg create mode 100644 static/icons/wind.svg create mode 100644 static/icons/wine-off.svg create mode 100644 static/icons/wine.svg create mode 100644 static/icons/wrap-text.svg create mode 100644 static/icons/wrench.svg create mode 100644 static/icons/x-circle.svg create mode 100644 static/icons/x-octagon.svg create mode 100644 static/icons/x-square.svg create mode 100644 static/icons/x.svg create mode 100644 static/icons/youtube.svg create mode 100644 static/icons/zap-off.svg create mode 100644 static/icons/zap.svg create mode 100644 static/icons/zoom-in.svg create mode 100644 static/icons/zoom-out.svg create mode 100644 static/input_style.css create mode 100644 static/js/alpine.js create mode 100644 static/js/code.js create mode 100644 static/logo.png create mode 100644 static/style.css create mode 100644 static/theme.css create mode 100644 tests/admin_test.go create mode 100644 tests/admin_ui_tests.go create mode 100644 tests/base_test.go create mode 100644 tests/tools.go create mode 100644 views/admin/table/contents.html create mode 100644 views/admin/table/index.html create mode 100644 views/admin/table/new.html create mode 100644 views/admin/table/view.html create mode 100644 views/layouts/main.html diff --git a/.air.toml b/.air.toml new file mode 100644 index 0000000..e6e0dbb --- /dev/null +++ b/.air.toml @@ -0,0 +1,52 @@ +root = "." +testdata_dir = "testdata" +tmp_dir = "tmp" + +[build] + args_bin = [] + bin = "webapp" + cmd = "make build" + delay = 1000 + exclude_dir = ["assets", "pages", "static", "views", "public", "tmp", "vendor", "testdata"] + exclude_file = [] + exclude_regex = ["_test.go"] + exclude_unchanged = false + follow_symlink = false + full_bin = "" + include_dir = [] + include_ext = ["go", "tpl", "tmpl", "html", "css", "js"] + include_file = [] + kill_delay = "0s" + log = "build-errors.log" + poll = false + poll_interval = 0 + post_cmd = [] + pre_cmd = [] + rerun = false + rerun_delay = 500 + send_interrupt = false + stop_on_error = false + +[color] + app = "" + build = "yellow" + main = "magenta" + runner = "green" + watcher = "cyan" + +[log] + main_only = false + silent = false + time = false + +[misc] + clean_on_exit = false + +[proxy] + app_port = 7001 + enabled = true + proxy_port = 7002 + +[screen] + clear_on_rebuild = false + keep_scroll = true diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..df4168b --- /dev/null +++ b/.gitignore @@ -0,0 +1,33 @@ +# ---> Vim +# Swap +[._]*.s[a-v][a-z] +!*.svg # comment out if you don't need vector files +[._]*.sw[a-p] +[._]s[a-rt-v][a-z] +[._]ss[a-gi-z] +[._]sw[a-p] + +# Session +Session.vim +Sessionx.vim + +# Temporary +.netrwhist +*~ +# Auto-generated tag files +tags +# Persistent undo +[._]*.un~ + +backup +*.exe +*.dll +*.world +coverage +coverage/* +.venv +*.gz +config.toml +public +*.idx +*.sqlite3 diff --git a/LICENSE b/LICENSE index 2071b23..d64aa11 100644 --- a/LICENSE +++ b/LICENSE @@ -1,9 +1 @@ -MIT License - -Copyright (c) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +It's Copyright. All Rights Reserved. You have no license at all other than permission to view it. diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..d28c658 --- /dev/null +++ b/Makefile @@ -0,0 +1,59 @@ +GO_IS_STUPID_EXE= + +ifeq '$(OS)' 'Windows_NT' + GO_IS_STUPID_EXE=.exe +endif + +all: tailwind site + echo "yay!" + +build: + go build . + +site: + go tool ssgod + +site_watch: + go tool ssgod watch + +test: site + go test . -c -o runtests$(GO_IS_STUPID_EXE) + ./runtests$(GO_IS_STUPID_EXE) + +test_only: + go test . -c -o runtests$(GO_IS_STUPID_EXE) + ./runtests$(GO_IS_STUPID_EXE) -test.run TestGamePage + +migrate_up: + go tool goose sqlite3 db.sqlite3 -dir migrations up + +migrate_down: + go tool goose sqlite3 db.sqlite3 -dir migrations down + +docs: + go tool pkgsite --open + +tailwind: + tailwindcss --input ./static/input_style.css --output ./static/style.css + +tailwind_watch: + tailwindcss --input ./static/input_style.css --output ./static/style.css --watch + +tailwind_install: + curl -LO https://github.com/tailwindlabs/tailwindcss/releases/download/v4.1.12/tailwindcss-linux-x64 + chmod oug+x tailwindcss-linux-x64 + sudo mv tailwindcss-linux-x64 /usr/local/bin/tailwindcss + +dev: all + go tool air -build.stop_on_error "true" + +coverage: + go build -cover -o webapp + mkdir -p .coverage + echo "GOCOVERDIR=.coverage ./webapp" + +cover_report: + go tool covdata textfmt -i=.coverage -o coverage.txt + go tool cover -func=coverage.txt + go tool cover -html=coverage.txt -o coverage.html + open coverage.html diff --git a/README.md b/README.md index 6916fb0..dd94fb7 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,64 @@ -# go-web-starter-kit +# Go Web Starter Kit -A small project that collects various nice things to get started with Go Web Development. \ No newline at end of file +This is a learning projects for me to learn Go. It's a simple website that serves past stream +information, a place to post links during stream, and the games I've made while live streaming. + +## Getting godoc To Work + +There's a built-in command `go doc` but there's also a more advanced tool by Google called `godoc`. +I know, amazing naming. Anyway, to get it you do this: + +```shell +go get --tool go.googlesource.com/tools/godoc@latest +``` + +You can then run it and start indexing everything you've installed and _also_ yourprojects packages, +plus get a nice web browser based search page to view the docs: + +```shell +go tool godoc -http=localhost:6060 -index +``` + +> ___NOTE:___ Google doesn't know how the internet works so you have to use `localhost:PORT` and not `127.0.0.1:PORT` when you run this. + +After that it'll take some time to index everything but you can already start browsing the APIs you need, and your project's stuff is in the _Third Party_ section. + +## Dealing With Module Bullshit + +The way to think about Go's modules is that they don't have modules, they have "projects." Every +directory's .go files export all of their functions without any namespacing based on the file's +name. So if you put `FooBar` into `tools.go` and `Dipshit` in `fuckyou.go` then your namespace for +_all_ files has raw dogged `FooBar` and `Dipshit` without any reference to `tools` or `fuckyou`. + +That's because your root directory is a whole __project__, not a module. To then create a namespace +you have to make a directory, place the files in that directory, and add `package mymod` at the top +of those files. You then have to import this as if it's an __entire fucking project__ everywhere +you want to use it: + +```go +import 'mywholewebsite.com/rootproject/subproject' +``` + +In this case you have a directory `subproject` and in there are a bunch of .go files with `package subproject` at the top to indicate they are in that subproject. Thinking about Go's modules as separate projects helps to sort out this `import` statement. + +1. mkdir tools +2. Create files in tools/ with `package tools` +3. `import "zedshaw.games/webapp/tools"` to get the subdirectory + +## Why Did Go Do This? + +That's because it comes from Google, and Google is famous for two things: + +1. Using a monorepo. +2. Assuming everyone else uses a monorepo. + +Don't believe me? Go look at the official first document [covering modules](https://go.dev/doc/tutorial/create-module) and you'll see they create two _totally separate projects at the root which then link to each other_. That's not how anyone else thinks when they make a single project to work on, but if you're suffering in monorepo hell you'll do it this way. + +I'll also posit that Google has some weird incentive that measures numbers of projects in the +monorepo as some kind of metric for employee productivity, so everyone working there is motivated +to get as many little projects into the monorepo as possible, thus a great way to get them to adopt +Go is to make Go support pulling tons of random projects from the root of a monorepo. + +So that's why you have to put your whole entire domain name into the import, and why you have all +the functions just raw dogged into your face when you make multiple files, and why subdirectories +are treated like whole little projects. diff --git a/admin/db.go b/admin/db.go new file mode 100644 index 0000000..356d415 --- /dev/null +++ b/admin/db.go @@ -0,0 +1,141 @@ +package admin + +import ( + "reflect" + "fmt" + "zedshaw.games/webapp/data" + _ "github.com/mattn/go-sqlite3" + sq "github.com/Masterminds/squirrel" +) + +func SearchTable(search string, table string, the_type reflect.Type, limit uint64, page uint64) ([]any, error) { + + var results []any + like := fmt.Sprint("%", search, "%") + + builder := sq.Select("*"). + Limit(limit). + Offset(limit * page). + From(table) + + field_num := the_type.NumField() + var or_clause sq.Or + + for i := 0; i < field_num; i++ { + tag := the_type.Field(i).Tag.Get("db") + or_clause = append(or_clause, sq.Like{tag: like}) + } + + builder = builder.Where(or_clause) + sql_query, args, err := builder.ToSql() + fmt.Println("-------------- SQL QUERY:", sql_query); + + if err != nil { return results, err } + + // BUG: refactor this to share a common func with SelectTable + rows, err := data.DB.Queryx(sql_query, args...) + if err != nil { return results, err } + defer rows.Close() + + for rows.Next() { + the_data := reflect.New(the_type).Interface() + err = rows.StructScan(the_data) + if err != nil { return results, err } + + results = append(results, the_data) + } + + return results, rows.Err() +} + +func SelectTable(table string, the_type reflect.Type, limit uint64, page uint64) ([]any, error) { + var results []any + sql_query, args, err := sq.Select("*").Limit(limit).Offset(limit * page).From(table).ToSql() + if err != nil { return results, err } + + rows, err := data.DB.Queryx(sql_query, args...) + if err != nil { return results, err } + defer rows.Close() + + for rows.Next() { + the_data := reflect.New(the_type).Interface() + err = rows.StructScan(the_data) + if err != nil { return results, err } + + results = append(results, the_data) + } + + return results, rows.Err() +} + +func Get(table string, the_type reflect.Type, id int64) (reflect.Value, error) { + sql_query, args, err := sq.Select("*").From(table).Where(sq.Eq{"id": id}).ToSql() + if err != nil { return reflect.New(nil), err } + + the_data := reflect.New(the_type) + err = data.DB.Get(the_data.Interface(), sql_query, args...) + + // BUG: not sure if Elem or returning the reflect.New is better + return the_data.Elem(), err +} + +func Delete(table string, id int64) error { + sql_query, args, err := sq.Delete(table).Where(sq.Eq{"id": id}).ToSql() + if err != nil { return err } + + _, err = data.DB.Exec(sql_query, args...) + return err +} + +func Insert(table string, value reflect.Value) (int64, int64, error) { + type_of := value.Type() + field_num := value.NumField() + var columns []string + var values []any + + for i := 0; i < field_num; i++ { + field := value.Field(i) + tag := type_of.Field(i).Tag.Get("db") + if tag == "id" { continue } + columns = append(columns, tag) + values = append(values, field.Interface()) + } + + builder := sq.Insert(table).Columns(columns...).Values(values...) + sql_query, args, err := builder.ToSql() + + result, err := data.DB.Exec(sql_query, args...) + id, err := result.LastInsertId() + if err != nil { return -1, -1, err } + + count, err := result.RowsAffected() + if err != nil { return id, -1, err } + + return id, count, err +} + +func Update(table string, value reflect.Value) error { + builder := sq.Update(table) + + type_of := value.Type() + field_num := value.NumField() + + for i := 0; i < field_num; i++ { + field := value.Field(i) + tag := type_of.Field(i).Tag.Get("db") + + // skip update of id to avoid replacing it + if tag == "id" { continue } + + builder = builder.Set(tag, field.Interface()) + } + + builder = builder.Where(sq.Eq{"id": value.FieldByName("Id").Interface()}) + sql_query, args, err := builder.ToSql() + + fmt.Println("UPDATE QUERY", sql_query, args) + if err != nil { return err} + + _, err = data.DB.Exec(sql_query, args...) + return err +} diff --git a/admin/handlers.go b/admin/handlers.go new file mode 100644 index 0000000..8539fcd --- /dev/null +++ b/admin/handlers.go @@ -0,0 +1,172 @@ +package admin + +import ( + "maps" + "reflect" + "fmt" + "github.com/gofiber/fiber/v2" + "zedshaw.games/webapp/data" + "zedshaw.games/webapp/api" + . "zedshaw.games/webapp/common" +) + +func GetApiTableIndex(c *fiber.Ctx) error { + _, err := api.CheckAuthed(c, true) + if err != nil { return c.Redirect("/") } + + var tables []string + + for k := range maps.Keys(data.Models()) { + tables = append(tables, k) + } + + return c.JSON(tables) +} + +func GetApiSelectAll(c *fiber.Ctx) error { + _, err := api.CheckAuthed(c, true) + if err != nil { return c.Redirect("/") } + + table := c.Params("table") + if table == "" { return c.Redirect("/admin/table/") } + type_is := data.Models()[table] + + page := c.QueryInt("page", 0) + if page < 0 { page = 0 } + + search := c.Query("search", "") + var result []any + + if search == "" { + result, err = SelectTable(table, type_is, 20, uint64(page)); + if err != nil { return IfErrNil(err, c) } + } else { + // NOTE: need a 404 here when there's no result? or empty list? + result, err = SearchTable(search, table, type_is, 20, uint64(page)); + if err != nil { return IfErrNil(err, c) } + } + + return c.JSON(result) +} + +func GetPageSelectAll(c *fiber.Ctx) error { + _, err := api.CheckAuthed(c, true) + if err != nil { return c.Redirect("/") } + + return c.Render("admin/table/contents", fiber.Map{"Table": c.Params("table")}) +} + +func GetApiSelectOne(c *fiber.Ctx) error { + _, err := api.CheckAuthed(c, true) + if err != nil { return c.Redirect("/") } + + table := c.Params("table") + id, err := c.ParamsInt("id", -1) + if err != nil || id < 0 { return IfErrNil(err, c) } + + type_is := data.Models()[table] + + result, err := Get(table, type_is, int64(id)) + if err != nil { return IfErrNil(err, c) } + + return c.JSON(result.Interface()) +} + +func GetPageSelectOne(c *fiber.Ctx) error { + _, err := api.CheckAuthed(c, true) + if err != nil { return c.Redirect("/") } + + table := c.Params("table") + id, err := c.ParamsInt("id", -1) + if err != nil || id < 0 { return IfErrNil(err, c) } + + return c.Render("admin/table/view", fiber.Map{ + "Table": table, + "Id": id, + }) +} + +func PostApiUpdate(c *fiber.Ctx) error { + _, err := api.CheckAuthed(c, true) + if err != nil { return c.Redirect("/") } + + table := c.Params("table") + typeOf := data.Models()[table] + obj, err := ReflectOnPost(typeOf, c) + if err != nil { return IfErrNil(err, c) } + + err = Update(table, obj.Elem()) + if err != nil { return IfErrNil(err, c) } + + return c.RedirectBack("/admin/table/", 303) +} + +func GetPageInsert(c *fiber.Ctx) error { + _, err := api.CheckAuthed(c, true) + if err != nil { return c.Redirect("/") } + + table := c.Params("table") + return c.Render("admin/table/new", fiber.Map{ "Table": table }) +} + +func GetApiInsert(c *fiber.Ctx) error { + _, err := api.CheckAuthed(c, true) + if err != nil { return c.Redirect("/") } + + table := c.Params("table") + typeOf := data.Models()[table] + result := reflect.New(typeOf) + return c.JSON(result.Interface()) +} + +func PostApiInsert(c *fiber.Ctx) error { + _, err := api.CheckAuthed(c, true) + if err != nil { return c.Redirect("/") } + + table := c.Params("table") + + typeOf := data.Models()[table] + obj, err := ReflectOnPost(typeOf, c) + if err != nil { return IfErrNil(err, c) } + + id, _, err := Insert(table, obj.Elem()) + if err != nil { return IfErrNil(err, c) } + + return c.Redirect(fmt.Sprintf("/admin/table/%s/%d/", table, id), 303) +} + +func DeleteApi(c *fiber.Ctx) error { + _, err := api.CheckAuthed(c, true) + if err != nil { return c.Redirect("/") } + + table := c.Params("table") + + id, err := c.ParamsInt("id", -1) + if err != nil || id < 0 { return IfErrNil(err, c) } + + err = Delete(table, int64(id)) + if err != nil { return IfErrNil(err, c) } + + return c.JSON(fiber.Map{}) +} + +func GetPageAdminIndex(c *fiber.Ctx) error { + _, err := api.CheckAuthed(c, true) + if err != nil { return c.Redirect("/") } + + return c.Render("admin/table/index", fiber.Map{}) +} + +func Setup(app *fiber.App) { + app.Get("/admin/table/", GetPageAdminIndex) + app.Get("/admin/table/:table/", GetPageSelectAll) + app.Get("/admin/new/table/:table/", GetPageInsert) + app.Get("/admin/table/:table/:id/", GetPageSelectOne) + + app.Get("/api/admin/table", GetApiTableIndex) + app.Get("/api/admin/table/:table", GetApiSelectAll) + app.Get("/api/admin/new/table/:table", GetApiInsert) + app.Post("/api/admin/new/table/:table", PostApiInsert) + app.Get("/api/admin/table/:table/:id", GetApiSelectOne) + app.Post("/api/admin/table/:table/:id", PostApiUpdate) +} diff --git a/api/auth.go b/api/auth.go new file mode 100644 index 0000000..fec99a6 --- /dev/null +++ b/api/auth.go @@ -0,0 +1,75 @@ +package api + +import ( + "errors" + "golang.org/x/crypto/bcrypt" + "log" + + "github.com/gofiber/fiber/v2" + _ "github.com/mattn/go-sqlite3" + sq "github.com/Masterminds/squirrel" + "github.com/gofiber/fiber/v2/middleware/session" + + "zedshaw.games/webapp/data" + "zedshaw.games/webapp/config" +) + +func IsAdmin(user *data.User) bool { + return user.Username == config.Settings.Admin +} + +func CheckAuthed(c *fiber.Ctx, needs_admin bool) (*session.Session, error) { + sess, err := STORE.Get(c) + if err != nil { return sess, err } + + // BUG: this has to come from the databse, just temporary + admin := sess.Get("admin") == true + authed := sess.Get("authenticated") == true + + log.Printf("session admin=%v, session authed=%v, needs_admin = %v", admin, authed, needs_admin) + + if needs_admin { + authed = admin && authed + log.Printf("after needs_admin block: authed=%v", authed) + } + + if authed { + log.Println("user is authed, return nil and sess") + return sess, nil + } else { + log.Println("user is NOT authed, return error") + return sess, errors.New("Authentication, permission failure") + } +} + +func LogoutUser(c *fiber.Ctx) error { + sess, err := STORE.Get(c) + if err != nil { return err } + + sess.Set("authenticated", false) + err = sess.Save() + return err +} + +func LoginUser(result *data.User, login *data.Login) (bool, error) { + sql, args, err := sq.Select("username, password"). + From("user").Where("username=?", login.Username).ToSql() + + if err != nil { return false, err } + + err = data.DB.Get(result, sql, args...) + if err != nil { return false, err } + + pass_good := bcrypt.CompareHashAndPassword([]byte(result.Password), []byte(login.Password)) + if pass_good != nil { return false, pass_good } + + return login.Username == result.Username && pass_good == nil, nil +} + +func SetUserPassword(user *data.User) error { + hashed, err := bcrypt.GenerateFromPassword([]byte(user.Password), 12) + if err != nil { return err } + + user.Password = string(hashed) + return nil +} diff --git a/api/handlers.go b/api/handlers.go new file mode 100644 index 0000000..2bb6896 --- /dev/null +++ b/api/handlers.go @@ -0,0 +1,83 @@ +package api + +import ( + "log" + "time" + + "github.com/gofiber/fiber/v2" + _ "github.com/mattn/go-sqlite3" + sq "github.com/Masterminds/squirrel" + "github.com/gofiber/fiber/v2/middleware/session" + + "zedshaw.games/webapp/data" + . "zedshaw.games/webapp/common" +) + +var STORE *session.Store + + +func GetApiLogout(c *fiber.Ctx) error { + err := LogoutUser(c) + if err != nil { return IfErrNil(err, c) } + + return c.Redirect("/") +} + +func PostApiRegister(c *fiber.Ctx) error { + user, err := ReceivePost[data.User](c) + if err != nil { return IfErrNil(err, c) } + + err = SetUserPassword(user) + if err != nil { return IfErrNil(err, c) } + + sql, args, err := sq.Insert("user"). + Columns("username", "email", "password"). + Values(user.Username, user.Email, user.Password).ToSql() + + err = data.Exec(err, sql, args...) + if err != nil { return IfErrNil(err, c) } + + return c.Redirect("/login/") +} + +func PostApiLogin(c *fiber.Ctx) error { + var user data.User + + login, err := ReceivePost[data.Login](c) + if(err != nil) { return IfErrNil(err, c) } + + pass_good, err := LoginUser(&user, login) + if err != nil { return IfErrNil(err, c) } + + if pass_good { + sess, err := STORE.Get(c) + if err != nil { return IfErrNil(err, c) } + + // BUG: THIS IS A BIG NO NO, just for getting going + sess.Set("authenticated", true) + sess.Set("admin", IsAdmin(&user)) + err = sess.Save() + if err != nil { return IfErrNil(err, c) } + + return c.Redirect("/") + } else { + return c.Redirect("/login/") + } +} + +func Setup(app *fiber.App) { + STORE = session.New() + + app.Static("/", "./public", fiber.Static{ + Compress: false, + CacheDuration: 1 * time.Nanosecond, + }) + + app.Get("/api/logout", GetApiLogout) + app.Post("/api/login", PostApiLogin) + app.Post("/api/register", PostApiRegister) +} + +func Shutdown() { + log.Println("Shutting down controllers...") +} diff --git a/common/api.go b/common/api.go new file mode 100644 index 0000000..9d3f70b --- /dev/null +++ b/common/api.go @@ -0,0 +1,66 @@ +package common + +import ( + "log" + "reflect" + "github.com/gofiber/fiber/v2" + "github.com/go-playground/validator/v10" +) + +type Failure struct { + Message string `json:"message"` +} + +func IfErrNil(err error, c *fiber.Ctx) error { + if err != nil { + log.Output(10, err.Error()) + c.SendStatus(fiber.StatusInternalServerError) + return c.JSON(Failure{err.Error()}) + } + + return err +} + +func ReceivePost[T any](c *fiber.Ctx) (*T, error) { + var result *T + result = new(T) + + if err := c.BodyParser(result); err != nil { + log.Println(err); + return result, err + } + + var validate *validator.Validate + validate = validator.New(validator.WithRequiredStructEnabled()) + + if err := validate.Struct(result); err != nil { + validationErrors := err.(validator.ValidationErrors) + log.Println(validationErrors) + return result, err + } + + return result, nil +} + +func ReflectOnPost(typeOf reflect.Type, c *fiber.Ctx) (reflect.Value, error) { + var result_val reflect.Value + + result_val = reflect.New(typeOf) + result := result_val.Interface() + + if err := c.BodyParser(result); err != nil { + log.Println(err); + return result_val, err + } + + var validate *validator.Validate + validate = validator.New(validator.WithRequiredStructEnabled()) + + if err := validate.Struct(result); err != nil { + validationErrors := err.(validator.ValidationErrors) + log.Println(validationErrors) + return result_val, err + } + + return result_val, nil +} diff --git a/common/errors.go b/common/errors.go new file mode 100644 index 0000000..6759947 --- /dev/null +++ b/common/errors.go @@ -0,0 +1,12 @@ +package common + +import ( + "log" + "fmt" +) + +func Fail(err error, format string, v ...any) error { + err_format := fmt.Sprintf("ERROR: %v; %s", err, format) + log.Printf(err_format, v...) + return err +} diff --git a/common/web.go b/common/web.go new file mode 100644 index 0000000..94adb91 --- /dev/null +++ b/common/web.go @@ -0,0 +1,70 @@ +package common + +import ( + "log" + "strings" + "io/fs" + "path/filepath" + "os" + "github.com/gofiber/fiber/v2" + "github.com/gofiber/template/html/v2" +) + +func Page(path string) (func(c *fiber.Ctx) error) { + return func (c *fiber.Ctx) error { + return c.Render(path, fiber.Map{}) + } +} + +func RenderPages(pages_path string, target string, layout string) { + engine := html.New(pages_path, ".html") + engine.Load() + + err := filepath.WalkDir(pages_path, + func(path string, d fs.DirEntry, err error) error { + if !d.IsDir() { + if err != nil { return Fail(err, "path: %s", path); } + + dir := filepath.Dir(path) + err = os.MkdirAll(dir, 0750) + if err != nil { + return Fail(err, "making dir %s", dir); + } + + split_path := strings.Split(path, string(os.PathSeparator))[1:] + source_name := strings.Join(split_path, "/") // Render wants / even on windows + ext := filepath.Ext(source_name) + template_name, found := strings.CutSuffix(source_name, ext) + + if found && ext == ".html" && template_name != layout { + prefixed_path := append([]string{target}, split_path...) + + target_path := filepath.Join(prefixed_path...) + _, err := os.Stat(target_path) + + if os.IsNotExist(err) { + target_dir := filepath.Dir(target_path) + log.Println("MAKING: ", target_dir) + os.MkdirAll(target_dir, 0750) + } + + // TODO: compare time stamps and skip if not newer + + out, err := os.OpenFile(target_path, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0644) + if err != nil { return Fail(err, "writing file %s", target_path) } + + // generate a data-testid for all pages based on template name + page_id := strings.ReplaceAll(template_name, "/", "-") + "-page" + err = engine.Render(out, template_name, fiber.Map{"PageId": page_id}, layout) + if err != nil { return Fail(err, "failed to render %s", path) } + + log.Printf("RENDER: %s -> %s", template_name, target_path) + out.Close() + } + } + + return nil + }) + + if err != nil { log.Fatalf("can't walk content") } +} diff --git a/config/server.go b/config/server.go new file mode 100644 index 0000000..d9df934 --- /dev/null +++ b/config/server.go @@ -0,0 +1,36 @@ +package config + + +import ( + "log" + + "github.com/BurntSushi/toml" +) + +type config struct { + Admin string `toml:"admin"` + Views string `toml:"views"` + Layouts string `toml:"layouts"` + Port string `toml:"port"` + + Database struct { + Driver string `toml:"driver"` + Url string `toml:"url"` + } `toml:"database"` +} + +var Settings config + +func Load(path string) { + metadata, err := toml.DecodeFile(path, &Settings) + + if err != nil { + log.Fatalf("error loading config.toml: %v", err) + } + + bad_keys := metadata.Undecoded() + + if len(bad_keys) > 0 { + log.Fatalf("unknown configuration keys: %v", bad_keys); + } +} diff --git a/config_example.toml b/config_example.toml new file mode 100644 index 0000000..7b22feb --- /dev/null +++ b/config_example.toml @@ -0,0 +1,9 @@ +admin = "zedshaw" +views = "./views" +layouts = "layouts/main" +port = ":7001" + + +[database] +driver = "sqlite3" +url = "db.sqlite3" diff --git a/data/crud.go b/data/crud.go new file mode 100644 index 0000000..f645f9b --- /dev/null +++ b/data/crud.go @@ -0,0 +1,57 @@ +package data + +import ( + "log" + "github.com/gofiber/fiber/v2" + _ "github.com/mattn/go-sqlite3" + "github.com/jmoiron/sqlx" + ) + +var configured bool +var DB *sqlx.DB + +func Setup(driver string, url string) { + if(!configured) { + var err error + + DB, err = sqlx.Connect(driver, url) + if err != nil { + log.Fatalln(err) + } + configured = true; + } +} + +func Shutdown() { + DB.Close() +} + +func SelectJson[T any](c *fiber.Ctx, err error, sql string, args ...interface{}) error { + var result []T + if err != nil { goto fail } + + err = DB.Select(&result, sql, args...) + if err != nil { goto fail } + + return c.JSON(&result) + +fail: return err +} + +func GetJson[T any](c *fiber.Ctx, err error, sql string, args ...interface{}) error { + var result T + if err != nil { goto fail } + + err = DB.Get(&result, sql, args...) + if err != nil { goto fail } + + return c.JSON(&result) + +fail: return err +} + +func Exec(err error, sql_query string, args ...interface{}) (error) { + if err != nil { return err } + DB.MustExec(sql_query, args...) + return err +} diff --git a/data/models.go b/data/models.go new file mode 100644 index 0000000..4d9754d --- /dev/null +++ b/data/models.go @@ -0,0 +1,21 @@ +package data + +import "reflect" + +type Login struct { + Username string `db:"username" validate:"required,max=30"` + Password string `db:"password" validate:"required,max=128"` +} + +type User struct { + Id int `db:"id" json:"id" validate:"numeric"` + Username string `db:"username" validate:"required,max=30"` + Email string `db:"email" validate:"required,email,max=128"` + Password string `db:"password" validate:"required,min=8,max=64"` +} + +func Models() map[string]reflect.Type { + return map[string]reflect.Type{ + "user": reflect.TypeFor[User](), + } +} diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..6be0c03 --- /dev/null +++ b/go.mod @@ -0,0 +1,129 @@ +module zedshaw.games/webapp + +go 1.24.2 + +require ( + github.com/BurntSushi/toml v1.5.0 + github.com/Masterminds/squirrel v1.5.4 + github.com/chromedp/chromedp v0.13.6 + github.com/go-playground/validator/v10 v10.26.0 + github.com/gofiber/fiber/v2 v2.52.8 + github.com/gofiber/template/html/v2 v2.1.3 + github.com/jmoiron/sqlx v1.4.0 + github.com/mattn/go-sqlite3 v1.14.28 + github.com/stretchr/testify v1.10.0 + golang.org/x/crypto v0.40.0 +) + +require ( + dario.cat/mergo v1.0.2 // indirect + filippo.io/edwards25519 v1.1.0 // indirect + git.learnjsthehardway.com/learn-code-the-hard-way/ssgod v0.0.0-20250819005110-6eacdff12eb8 // indirect + github.com/ClickHouse/ch-go v0.65.1 // indirect + github.com/ClickHouse/clickhouse-go/v2 v2.34.0 // indirect + github.com/air-verse/air v1.62.0 // indirect + github.com/alecthomas/chroma/v2 v2.19.0 // indirect + github.com/andybalholm/brotli v1.1.1 // indirect + github.com/antlr4-go/antlr/v4 v4.13.1 // indirect + github.com/bep/godartsass/v2 v2.5.0 // indirect + github.com/bep/golibsass v1.2.0 // indirect + github.com/chromedp/cdproto v0.0.0-20250611220608-a17eb1ae8ff0 // indirect + github.com/chromedp/sysutil v1.1.0 // indirect + github.com/coder/websocket v1.8.13 // indirect + github.com/creack/pty v1.1.24 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/dustin/go-humanize v1.0.1 // indirect + github.com/elastic/go-sysinfo v1.15.3 // indirect + github.com/elastic/go-windows v1.0.2 // indirect + github.com/fatih/color v1.18.0 // indirect + github.com/fsnotify/fsnotify v1.9.0 // indirect + github.com/gabriel-vasile/mimetype v1.4.9 // indirect + github.com/go-faster/city v1.0.1 // indirect + github.com/go-faster/errors v0.7.1 // indirect + github.com/go-json-experiment/json v0.0.0-20250517221953-25912455fbc8 // indirect + github.com/go-playground/locales v0.14.1 // indirect + github.com/go-playground/universal-translator v0.18.1 // indirect + github.com/go-sql-driver/mysql v1.9.2 // indirect + github.com/gobwas/glob v0.2.3 // indirect + github.com/gobwas/httphead v0.1.0 // indirect + github.com/gobwas/pool v0.2.1 // indirect + github.com/gobwas/ws v1.4.0 // indirect + github.com/gofiber/template v1.8.3 // indirect + github.com/gofiber/utils v1.1.0 // indirect + github.com/gohugoio/hugo v0.147.6 // indirect + github.com/golang-jwt/jwt/v4 v4.5.2 // indirect + github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 // indirect + github.com/golang-sql/sqlexp v0.1.0 // indirect + github.com/google/licensecheck v0.3.1 // indirect + github.com/google/safehtml v0.0.3-0.20211026203422-d6f0e11a5516 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/jackc/pgpassfile v1.0.0 // indirect + github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect + github.com/jackc/pgx/v5 v5.7.4 // indirect + github.com/jackc/puddle/v2 v2.2.2 // indirect + github.com/joho/godotenv v1.5.1 // indirect + github.com/jonboulle/clockwork v0.5.0 // indirect + github.com/klauspost/compress v1.18.0 // indirect + github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 // indirect + github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 // indirect + github.com/leodido/go-urn v1.4.0 // indirect + github.com/mattn/go-colorable v0.1.14 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mattn/go-runewidth v0.0.16 // indirect + github.com/mfridman/interpolate v0.0.2 // indirect + github.com/mfridman/xflag v0.1.0 // indirect + github.com/microsoft/go-mssqldb v1.8.0 // indirect + github.com/ncruces/go-strftime v0.1.9 // indirect + github.com/paulmach/orb v0.11.1 // indirect + github.com/pelletier/go-toml v1.9.5 // indirect + github.com/pelletier/go-toml/v2 v2.2.4 // indirect + github.com/pierrec/lz4/v4 v4.1.22 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/pressly/goose/v3 v3.24.3 // indirect + github.com/prometheus/procfs v0.16.1 // indirect + github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect + github.com/rivo/uniseg v0.4.7 // indirect + github.com/segmentio/asm v1.2.0 // indirect + github.com/sethvargo/go-retry v0.3.0 // indirect + github.com/shopspring/decimal v1.4.0 // indirect + github.com/spf13/afero v1.14.0 // indirect + github.com/spf13/cast v1.8.0 // indirect + github.com/tdewolff/parse/v2 v2.8.1 // indirect + github.com/tursodatabase/libsql-client-go v0.0.0-20240902231107-85af5b9d094d // indirect + github.com/valyala/bytebufferpool v1.0.0 // indirect + github.com/valyala/fasthttp v1.62.0 // indirect + github.com/vertica/vertica-sql-go v1.3.3 // indirect + github.com/ydb-platform/ydb-go-genproto v0.0.0-20241112172322-ea1f63298f77 // indirect + github.com/ydb-platform/ydb-go-sdk/v3 v3.108.1 // indirect + github.com/yuin/goldmark v1.7.13 // indirect + github.com/ziutek/mymysql v1.5.4 // indirect + go.opentelemetry.io/otel v1.35.0 // indirect + go.opentelemetry.io/otel/trace v1.35.0 // indirect + go.uber.org/multierr v1.11.0 // indirect + golang.org/x/exp v0.0.0-20250531010427-b6e5de432a8b // indirect + golang.org/x/mod v0.26.0 // indirect + golang.org/x/net v0.42.0 // indirect + golang.org/x/pkgsite v0.0.0-20250721174030-d4de6668b910 // indirect + golang.org/x/sync v0.16.0 // indirect + golang.org/x/sys v0.34.0 // indirect + golang.org/x/text v0.27.0 // indirect + golang.org/x/tools v0.35.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250324211829-b45e905df463 // indirect + google.golang.org/grpc v1.71.0 // indirect + google.golang.org/protobuf v1.36.6 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect + howett.net/plist v1.0.1 // indirect + modernc.org/libc v1.65.0 // indirect + modernc.org/mathutil v1.7.1 // indirect + modernc.org/memory v1.10.0 // indirect + modernc.org/sqlite v1.37.0 // indirect + rsc.io/markdown v0.0.0-20231214224604-88bb533a6020 // indirect +) + +tool ( + git.learnjsthehardway.com/learn-code-the-hard-way/ssgod + github.com/air-verse/air + github.com/pressly/goose/v3/cmd/goose + golang.org/x/pkgsite/cmd/pkgsite + golang.org/x/tools/cmd/goimports +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..3e62bca --- /dev/null +++ b/go.sum @@ -0,0 +1,586 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +dario.cat/mergo v1.0.2 h1:85+piFYR1tMbRrLcDwR18y4UKJ3aH1Tbzi24VRW1TK8= +dario.cat/mergo v1.0.2/go.mod h1:E/hbnu0NxMFBjpMIE34DRGLWqDy0g5FuKDhCb31ngxA= +filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= +filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= +git.learnjsthehardway.com/learn-code-the-hard-way/ssgod v0.0.0-20250819005110-6eacdff12eb8 h1:SCVz8GPnZKESrJTl1JzxGkIT+RBkoTiP6TEsK3kHQUY= +git.learnjsthehardway.com/learn-code-the-hard-way/ssgod v0.0.0-20250819005110-6eacdff12eb8/go.mod h1:QbY7C8GVlTo/Ru7sUi56BWgbY7MnTfWm0SoLZ/DMDcE= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.14.0 h1:nyQWyZvwGTvunIMxi1Y9uXkcyr+I7TeNrr/foo4Kpk8= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.14.0/go.mod h1:l38EPgmsp71HHLq9j7De57JcKOWPyhrsW1Awm1JS6K0= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0 h1:tfLQ34V6F7tVSwoTf/4lH5sE0o6eCJuNDTmH09nDpbc= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0/go.mod h1:9kIvujWAA58nmPmWB1m23fyWic1kYZMxD9CxaWn4Qpg= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0 h1:ywEEhmNahHBihViHepv3xPBn1663uRv2t2q/ESv9seY= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0/go.mod h1:iZDifYGJTIgIIkYRNWPENUnqx6bJ2xnSDFI2tjwZNuY= +github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys v1.0.1 h1:MyVTgWR8qd/Jw1Le0NZebGBUCLbtak3bJ3z1OlqZBpw= +github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys v1.0.1/go.mod h1:GpPjLhVR9dnUoJMyHWSPy71xY9/lcmpzIPZXmF0FCVY= +github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.0.0 h1:D3occbWoio4EBLkbkevetNMAVX197GkzbUMtqjGWn80= +github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.0.0/go.mod h1:bTSOgj05NGRuHHhQwAdPnYr9TOdNmKlZTgGLL6nyAdI= +github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 h1:XHOnouVk1mxXfQidrMEnLlPk9UMeRtyBTnEFtxkV0kU= +github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= +github.com/BurntSushi/locker v0.0.0-20171006230638-a6e239ea1c69 h1:+tu3HOoMXB7RXEINRVIpxJCT+KdYiI7LAEAUrOw3dIU= +github.com/BurntSushi/locker v0.0.0-20171006230638-a6e239ea1c69/go.mod h1:L1AbZdiDllfyYH5l5OkAaZtk7VkWe89bPJFmnDBNHxg= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/toml v1.5.0 h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg= +github.com/BurntSushi/toml v1.5.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= +github.com/ClickHouse/ch-go v0.65.1 h1:SLuxmLl5Mjj44/XbINsK2HFvzqup0s6rwKLFH347ZhU= +github.com/ClickHouse/ch-go v0.65.1/go.mod h1:bsodgURwmrkvkBe5jw1qnGDgyITsYErfONKAHn05nv4= +github.com/ClickHouse/clickhouse-go/v2 v2.34.0 h1:Y4rqkdrRHgExvC4o/NTbLdY5LFQ3LHS77/RNFxFX3Co= +github.com/ClickHouse/clickhouse-go/v2 v2.34.0/go.mod h1:yioSINoRLVZkLyDzdMXPLRIqhDvel8iLBlwh6Iefso8= +github.com/Masterminds/squirrel v1.5.4 h1:uUcX/aBc8O7Fg9kaISIUsHXdKuqehiXAMQTYX8afzqM= +github.com/Masterminds/squirrel v1.5.4/go.mod h1:NNaOrjSoIDfDA40n7sr2tPNZRfjzjA400rg+riTZj10= +github.com/air-verse/air v1.62.0 h1:6CoXL4MAX9dc4xAzLfjMcDfbBoGmW5VjuuTV/1+bI+M= +github.com/air-verse/air v1.62.0/go.mod h1:EO+jWuetL10tS9raffwg8WEV0t0KUeucRRaf9ii86dA= +github.com/alecthomas/chroma/v2 v2.19.0 h1:Im+SLRgT8maArxv81mULDWN8oKxkzboH07CHesxElq4= +github.com/alecthomas/chroma/v2 v2.19.0/go.mod h1:RVX6AvYm4VfYe/zsk7mjHueLDZor3aWCNE14TFlepBk= +github.com/andybalholm/brotli v1.1.1 h1:PR2pgnyFznKEugtsUo0xLdDop5SKXd5Qf5ysW+7XdTA= +github.com/andybalholm/brotli v1.1.1/go.mod h1:05ib4cKhjx3OQYUY22hTVd34Bc8upXjOLL2rKwwZBoA= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/antlr4-go/antlr/v4 v4.13.1 h1:SqQKkuVZ+zWkMMNkjy5FZe5mr5WURWnlpmOuzYWrPrQ= +github.com/antlr4-go/antlr/v4 v4.13.1/go.mod h1:GKmUxMtwp6ZgGwZSva4eWPC5mS6vUAmOABFgjdkM7Nw= +github.com/armon/go-radix v1.0.1-0.20221118154546-54df44f2176c h1:651/eoCRnQ7YtSjAnSzRucrJz+3iGEFt+ysraELS81M= +github.com/armon/go-radix v1.0.1-0.20221118154546-54df44f2176c/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/bep/clocks v0.5.0 h1:hhvKVGLPQWRVsBP/UB7ErrHYIO42gINVbvqxvYTPVps= +github.com/bep/clocks v0.5.0/go.mod h1:SUq3q+OOq41y2lRQqH5fsOoxN8GbxSiT6jvoVVLCVhU= +github.com/bep/debounce v1.2.1 h1:v67fRdBA9UQu2NhLFXrSg0Brw7CexQekrBwDMM8bzeY= +github.com/bep/debounce v1.2.1/go.mod h1:H8yggRPQKLUhUoqrJC1bO2xNya7vanpDl7xR3ISbCJ0= +github.com/bep/gitmap v1.6.0 h1:sDuQMm9HoTL0LtlrfxjbjgAg2wHQd4nkMup2FInYzhA= +github.com/bep/gitmap v1.6.0/go.mod h1:n+3W1f/rot2hynsqEGxGMErPRgT41n9CkGuzPvz9cIw= +github.com/bep/goat v0.5.0 h1:S8jLXHCVy/EHIoCY+btKkmcxcXFd34a0Q63/0D4TKeA= +github.com/bep/goat v0.5.0/go.mod h1:Md9x7gRxiWKs85yHlVTvHQw9rg86Bm+Y4SuYE8CTH7c= +github.com/bep/godartsass/v2 v2.5.0 h1:tKRvwVdyjCIr48qgtLa4gHEdtRkPF8H1OeEhJAEv7xg= +github.com/bep/godartsass/v2 v2.5.0/go.mod h1:rjsi1YSXAl/UbsGL85RLDEjRKdIKUlMQHr6ChUNYOFU= +github.com/bep/golibsass v1.2.0 h1:nyZUkKP/0psr8nT6GR2cnmt99xS93Ji82ZD9AgOK6VI= +github.com/bep/golibsass v1.2.0/go.mod h1:DL87K8Un/+pWUS75ggYv41bliGiolxzDKWJAq3eJ1MA= +github.com/bep/goportabletext v0.1.0 h1:8dqym2So1cEqVZiBa4ZnMM1R9l/DnC1h4ONg4J5kujw= +github.com/bep/goportabletext v0.1.0/go.mod h1:6lzSTsSue75bbcyvVc0zqd1CdApuT+xkZQ6Re5DzZFg= +github.com/bep/gowebp v0.4.0 h1:QihuVnvIKbRoeBNQkN0JPMM8ClLmD6V2jMftTFwSK3Q= +github.com/bep/gowebp v0.4.0/go.mod h1:95gtYkAA8iIn1t3HkAPurRCVGV/6NhgaHJ1urz0iIwc= +github.com/bep/imagemeta v0.12.0 h1:ARf+igs5B7pf079LrqRnwzQ/wEB8Q9v4NSDRZO1/F5k= +github.com/bep/imagemeta v0.12.0/go.mod h1:23AF6O+4fUi9avjiydpKLStUNtJr5hJB4rarG18JpN8= +github.com/bep/lazycache v0.8.0 h1:lE5frnRjxaOFbkPZ1YL6nijzOPPz6zeXasJq8WpG4L8= +github.com/bep/lazycache v0.8.0/go.mod h1:BQ5WZepss7Ko91CGdWz8GQZi/fFnCcyWupv8gyTeKwk= +github.com/bep/logg v0.4.0 h1:luAo5mO4ZkhA5M1iDVDqDqnBBnlHjmtZF6VAyTp+nCQ= +github.com/bep/logg v0.4.0/go.mod h1:Ccp9yP3wbR1mm++Kpxet91hAZBEQgmWgFgnXX3GkIV0= +github.com/bep/overlayfs v0.10.0 h1:wS3eQ6bRsLX+4AAmwGjvoFSAQoeheamxofFiJ2SthSE= +github.com/bep/overlayfs v0.10.0/go.mod h1:ouu4nu6fFJaL0sPzNICzxYsBeWwrjiTdFZdK4lI3tro= +github.com/bep/tmc v0.5.1 h1:CsQnSC6MsomH64gw0cT5f+EwQDcvZz4AazKunFwTpuI= +github.com/bep/tmc v0.5.1/go.mod h1:tGYHN8fS85aJPhDLgXETVKp+PR382OvFi2+q2GkGsq0= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/chromedp/cdproto v0.0.0-20250611220608-a17eb1ae8ff0 h1:tXxiImKSoSzfGjFxxNU0A1/idO0tbbNsPHNomsBlRd4= +github.com/chromedp/cdproto v0.0.0-20250611220608-a17eb1ae8ff0/go.mod h1:NItd7aLkcfOA/dcMXvl8p1u+lQqioRMq/SqDp71Pb/k= +github.com/chromedp/chromedp v0.13.6 h1:xlNunMyzS5bu3r/QKrb3fzX6ow3WBQ6oao+J65PGZxk= +github.com/chromedp/chromedp v0.13.6/go.mod h1:h8GPP6ZtLMLsU8zFbTcb7ZDGCvCy8j/vRoFmRltQx9A= +github.com/chromedp/sysutil v1.1.0 h1:PUFNv5EcprjqXZD9nJb9b/c9ibAbxiYo4exNWZyipwM= +github.com/chromedp/sysutil v1.1.0/go.mod h1:WiThHUdltqCNKGc4gaU50XgYjwjYIhKWoHGPTUfWTJ8= +github.com/clbanning/mxj/v2 v2.7.0 h1:WA/La7UGCanFe5NpHF0Q3DNtnCsVoxbPKuyBNHWRyME= +github.com/clbanning/mxj/v2 v2.7.0/go.mod h1:hNiWqW14h+kc+MdF9C6/YoRfjEJoR3ou6tn/Qo+ve2s= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= +github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/coder/websocket v1.8.13 h1:f3QZdXy7uGVz+4uCJy2nTZyM0yTBj8yANEHhqlXZ9FE= +github.com/coder/websocket v1.8.13/go.mod h1:LNVeNrXQZfe5qhS9ALED3uA+l5pPqvwXg3CKoDBB2gs= +github.com/creack/pty v1.1.24 h1:bJrF4RRfyJnbTJqzRLHzcGaZK1NeM5kTC9jGgovnR1s= +github.com/creack/pty v1.1.24/go.mod h1:08sCNb52WyoAwi2QDyzUCTgcvVFhUzewun7wtTfvcwE= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/disintegration/gift v1.2.1 h1:Y005a1X4Z7Uc+0gLpSAsKhWi4qLtsdEcMIbbdvdZ6pc= +github.com/disintegration/gift v1.2.1/go.mod h1:Jh2i7f7Q2BM7Ezno3PhfezbR1xpUg9dUg3/RlKGr4HI= +github.com/dlclark/regexp2 v1.11.5 h1:Q/sSnsKerHeCkc/jSTNq1oCm7KiVgUMZRDUoRu0JQZQ= +github.com/dlclark/regexp2 v1.11.5/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= +github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= +github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= +github.com/elastic/go-sysinfo v1.8.1/go.mod h1:JfllUnzoQV/JRYymbH3dO1yggI3mV2oTKSXsDHM+uIM= +github.com/elastic/go-sysinfo v1.15.3 h1:W+RnmhKFkqPTCRoFq2VCTmsT4p/fwpo+3gKNQsn1XU0= +github.com/elastic/go-sysinfo v1.15.3/go.mod h1:K/cNrqYTDrSoMh2oDkYEMS2+a72GRxMvNP+GC+vRIlo= +github.com/elastic/go-windows v1.0.0/go.mod h1:TsU0Nrp7/y3+VwE82FoZF8gC/XFg/Elz6CcloAxnPgU= +github.com/elastic/go-windows v1.0.2 h1:yoLLsAsV5cfg9FLhZ9EXZ2n2sQFKeDYrHenkcivY4vI= +github.com/elastic/go-windows v1.0.2/go.mod h1:bGcDpBzXgYSqM0Gx3DM4+UxFj300SZLixie9u9ixLM8= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/evanw/esbuild v0.25.3 h1:4JKyUsm/nHDhpxis4IyWXAi8GiyTwG1WdEp6OhGVE8U= +github.com/evanw/esbuild v0.25.3/go.mod h1:D2vIQZqV/vIf/VRHtViaUtViZmG7o+kKmlBfVQuRi48= +github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= +github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= +github.com/frankban/quicktest v1.7.2/go.mod h1:jaStnuzAqU1AJdCO0l53JDCJrVDKcS03DbaAcR7Ks/o= +github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= +github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k= +github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= +github.com/gabriel-vasile/mimetype v1.4.9 h1:5k+WDwEsD9eTLL8Tz3L0VnmVh9QxGjRmjBvAG7U/oYY= +github.com/gabriel-vasile/mimetype v1.4.9/go.mod h1:WnSQhFKJuBlRyLiKohA/2DtIlPFAbguNaG7QCHcyGok= +github.com/getkin/kin-openapi v0.132.0 h1:3ISeLMsQzcb5v26yeJrBcdTCEQTag36ZjaGk7MIRUwk= +github.com/getkin/kin-openapi v0.132.0/go.mod h1:3OlG51PCYNsPByuiMB0t4fjnNlIDnaEDsjiKUV8nL58= +github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/go-faster/city v1.0.1 h1:4WAxSZ3V2Ws4QRDrscLEDcibJY8uf41H6AhXDrNDcGw= +github.com/go-faster/city v1.0.1/go.mod h1:jKcUJId49qdW3L1qKHH/3wPeUstCVpVSXTM6vO3VcTw= +github.com/go-faster/errors v0.7.1 h1:MkJTnDoEdi9pDabt1dpWf7AA8/BaSYZqibYyhZ20AYg= +github.com/go-faster/errors v0.7.1/go.mod h1:5ySTjWFiphBs07IKuiL69nxdfd5+fzh1u7FPGZP2quo= +github.com/go-json-experiment/json v0.0.0-20250517221953-25912455fbc8 h1:o8UqXPI6SVwQt04RGsqKp3qqmbOfTNMqDrWsc4O47kk= +github.com/go-json-experiment/json v0.0.0-20250517221953-25912455fbc8/go.mod h1:TiCD2a1pcmjd7YnhGH0f/zKNcCD06B029pHhzV23c2M= +github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ= +github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY= +github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE= +github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= +github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= +github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= +github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= +github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= +github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= +github.com/go-playground/validator/v10 v10.26.0 h1:SP05Nqhjcvz81uJaRfEV0YBSSSGMc/iMaVtFbr3Sw2k= +github.com/go-playground/validator/v10 v10.26.0/go.mod h1:I5QpIEbmr8On7W0TktmJAumgzX4CA1XNl4ZmDuVHKKo= +github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg= +github.com/go-sql-driver/mysql v1.9.2 h1:4cNKDYQ1I84SXslGddlsrMhc8k4LeDVj6Ad6WRjiHuU= +github.com/go-sql-driver/mysql v1.9.2/go.mod h1:qn46aNg1333BRMNU69Lq93t8du/dwxI64Gl8i5p1WMU= +github.com/gobuffalo/flect v1.0.3 h1:xeWBM2nui+qnVvNM4S3foBhCAL2XgPU+a7FdpelbTq4= +github.com/gobuffalo/flect v1.0.3/go.mod h1:A5msMlrHtLqh9umBSnvabjsMrCcCpAyzglnDvkbYKHs= +github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= +github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= +github.com/gobwas/httphead v0.1.0 h1:exrUm0f4YX0L7EBwZHuCF4GDp8aJfVeBrlLQrs6NqWU= +github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM= +github.com/gobwas/pool v0.2.1 h1:xfeeEhW7pwmX8nuLVlqbzVc7udMDrwetjEv+TZIz1og= +github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= +github.com/gobwas/ws v1.4.0 h1:CTaoG1tojrh4ucGPcoJFiAQUAsEWekEWvLy7GsVNqGs= +github.com/gobwas/ws v1.4.0/go.mod h1:G3gNqMNtPppf5XUz7O4shetPpcZ1VJ7zt18dlUeakrc= +github.com/gofiber/fiber/v2 v2.52.8 h1:xl4jJQ0BV5EJTA2aWiKw/VddRpHrKeZLF0QPUxqn0x4= +github.com/gofiber/fiber/v2 v2.52.8/go.mod h1:YEcBbO/FB+5M1IZNBP9FO3J9281zgPAreiI1oqg8nDw= +github.com/gofiber/template v1.8.3 h1:hzHdvMwMo/T2kouz2pPCA0zGiLCeMnoGsQZBTSYgZxc= +github.com/gofiber/template v1.8.3/go.mod h1:bs/2n0pSNPOkRa5VJ8zTIvedcI/lEYxzV3+YPXdBvq8= +github.com/gofiber/template/html/v2 v2.1.3 h1:n1LYBtmr9C0V/k/3qBblXyMxV5B0o/gpb6dFLp8ea+o= +github.com/gofiber/template/html/v2 v2.1.3/go.mod h1:U5Fxgc5KpyujU9OqKzy6Kn6Qup6Tm7zdsISR+VpnHRE= +github.com/gofiber/utils v1.1.0 h1:vdEBpn7AzIUJRhe+CiTOJdUcTg4Q9RK+pEa0KPbLdrM= +github.com/gofiber/utils v1.1.0/go.mod h1:poZpsnhBykfnY1Mc0KeEa6mSHrS3dV0+oBWyeQmb2e0= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/gohugoio/go-i18n/v2 v2.1.3-0.20230805085216-e63c13218d0e h1:QArsSubW7eDh8APMXkByjQWvuljwPGAGQpJEFn0F0wY= +github.com/gohugoio/go-i18n/v2 v2.1.3-0.20230805085216-e63c13218d0e/go.mod h1:3Ltoo9Banwq0gOtcOwxuHG6omk+AwsQPADyw2vQYOJQ= +github.com/gohugoio/hashstructure v0.5.0 h1:G2fjSBU36RdwEJBWJ+919ERvOVqAg9tfcYp47K9swqg= +github.com/gohugoio/hashstructure v0.5.0/go.mod h1:Ser0TniXuu/eauYmrwM4o64EBvySxNzITEOLlm4igec= +github.com/gohugoio/httpcache v0.7.0 h1:ukPnn04Rgvx48JIinZvZetBfHaWE7I01JR2Q2RrQ3Vs= +github.com/gohugoio/httpcache v0.7.0/go.mod h1:fMlPrdY/vVJhAriLZnrF5QpN3BNAcoBClgAyQd+lGFI= +github.com/gohugoio/hugo v0.147.6 h1:rL4rnus/5qzj4+FoA+JMzsVvFJ2YZdVIH6pbuCB2P84= +github.com/gohugoio/hugo v0.147.6/go.mod h1:Sb2COQPDPYG+tRSpePtzKytiuVDqkBivEhgIew1QbNo= +github.com/gohugoio/hugo-goldmark-extensions/extras v0.3.0 h1:gj49kTR5Z4Hnm0ZaQrgPVazL3DUkppw+x6XhHCmh+Wk= +github.com/gohugoio/hugo-goldmark-extensions/extras v0.3.0/go.mod h1:IMMj7xiUbLt1YNJ6m7AM4cnsX4cFnnfkleO/lBHGzUg= +github.com/gohugoio/hugo-goldmark-extensions/passthrough v0.3.1 h1:nUzXfRTszLliZuN0JTKeunXTRaiFX6ksaWP0puLLYAY= +github.com/gohugoio/hugo-goldmark-extensions/passthrough v0.3.1/go.mod h1:Wy8ThAA8p2/w1DY05vEzq6EIeI2mzDjvHsu7ULBVwog= +github.com/gohugoio/locales v0.14.0 h1:Q0gpsZwfv7ATHMbcTNepFd59H7GoykzWJIxi113XGDc= +github.com/gohugoio/locales v0.14.0/go.mod h1:ip8cCAv/cnmVLzzXtiTpPwgJ4xhKZranqNqtoIu0b/4= +github.com/gohugoio/localescompressed v1.0.1 h1:KTYMi8fCWYLswFyJAeOtuk/EkXR/KPTHHNN9OS+RTxo= +github.com/gohugoio/localescompressed v1.0.1/go.mod h1:jBF6q8D7a0vaEmcWPNcAjUZLJaIVNiwvM3WlmTvooB0= +github.com/golang-jwt/jwt/v4 v4.5.2 h1:YtQM7lnr8iZ+j5q71MGKkNw9Mn7AjHM68uc9g5fXeUI= +github.com/golang-jwt/jwt/v4 v4.5.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang-jwt/jwt/v5 v5.2.2 h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeDy8= +github.com/golang-jwt/jwt/v5 v5.2.2/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= +github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 h1:au07oEsX2xN0ktxqI+Sida1w446QrXBRJ0nee3SNZlA= +github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= +github.com/golang-sql/sqlexp v0.1.0 h1:ZCD6MBpcuOVfGVqsEmY5/4FtYiKz6tSyUv9LPEDei6A= +github.com/golang-sql/sqlexp v0.1.0/go.mod h1:J4ad9Vo8ZCWQ2GMrC4UCQy1JpCbwU9m3EOqtpKwwwHI= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/licensecheck v0.3.1 h1:QoxgoDkaeC4nFrtGN1jV7IPmDCHFNIVh54e5hSt6sPs= +github.com/google/licensecheck v0.3.1/go.mod h1:ORkR35t/JjW+emNKtfJDII0zlciG9JgbT7SmsohlHmY= +github.com/google/pprof v0.0.0-20250317173921-a4b03ec1a45e h1:ijClszYn+mADRFY17kjQEVQ1XRhq2/JR1M3sGqeJoxs= +github.com/google/pprof v0.0.0-20250317173921-a4b03ec1a45e/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA= +github.com/google/safehtml v0.0.3-0.20211026203422-d6f0e11a5516 h1:pSEdbeokt55L2hwtWo6A2k7u5SG08rmw0LhWEyrdWgk= +github.com/google/safehtml v0.0.3-0.20211026203422-d6f0e11a5516/go.mod h1:L4KWwDsUJdECRAEpZoBn3O64bQaywRscowZjJAzjHnU= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= +github.com/hairyhenderson/go-codeowners v0.7.0 h1:s0W4wF8bdsBEjTWzwzSlsatSthWtTAF2xLgo4a4RwAo= +github.com/hairyhenderson/go-codeowners v0.7.0/go.mod h1:wUlNgQ3QjqC4z8DnM5nnCYVq/icpqXJyJOukKx5U8/Q= +github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= +github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= +github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= +github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= +github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 h1:iCEnooe7UlwOQYpKFhBabPMi4aNAfoODPEFNiAnClxo= +github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= +github.com/jackc/pgx/v5 v5.7.4 h1:9wKznZrhWa2QiHL+NjTSPP6yjl3451BX3imWDnokYlg= +github.com/jackc/pgx/v5 v5.7.4/go.mod h1:ncY89UGWxg82EykZUwSpUKEfccBGGYq1xjrOpsbsfGQ= +github.com/jackc/puddle/v2 v2.2.2 h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo= +github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= +github.com/jdkato/prose v1.2.1 h1:Fp3UnJmLVISmlc57BgKUzdjr0lOtjqTZicL3PaYy6cU= +github.com/jdkato/prose v1.2.1/go.mod h1:AiRHgVagnEx2JbQRQowVBKjG0bcs/vtkGCH1dYAL1rA= +github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/jmoiron/sqlx v1.4.0 h1:1PLqN7S1UYp5t4SrVVnt4nUVNemrDAtxlulVe+Qgm3o= +github.com/jmoiron/sqlx v1.4.0/go.mod h1:ZrZ7UsYB/weZdl2Bxg6jCRO9c3YHl8r3ahlKmRT4JLY= +github.com/joeshaw/multierror v0.0.0-20140124173710-69b34d4ec901/go.mod h1:Z86h9688Y0wesXCyonoVr47MasHilkuLMqGhRZ4Hpak= +github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= +github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= +github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= +github.com/jonboulle/clockwork v0.5.0/go.mod h1:3mZlmanh0g2NDKO5TWZVJAfofYk64M7XN3SzBPjZF60= +github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= +github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= +github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= +github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= +github.com/kyokomi/emoji/v2 v2.2.13 h1:GhTfQa67venUUvmleTNFnb+bi7S3aocF7ZCXU9fSO7U= +github.com/kyokomi/emoji/v2 v2.2.13/go.mod h1:JUcn42DTdsXJo1SWanHh4HKDEyPaR5CqkmoirZZP9qE= +github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 h1:SOEGU9fKiNWd/HOJuq6+3iTQz8KNCLtVX6idSoTLdUw= +github.com/lann/builder v0.0.0-20180802200727-47ae307949d0/go.mod h1:dXGbAdH5GtBTC4WfIxhKZfyBF/HBFgRZSWwZ9g/He9o= +github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 h1:P6pPBnrTSX3DEVR4fDembhRWSsG5rVo6hYhAB/ADZrk= +github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0/go.mod h1:vmVJ0l/dxyfGW6FmdpVm2joNMFikkuWg0EoCKLGUMNw= +github.com/ledongthuc/pdf v0.0.0-20220302134840-0c2507a12d80 h1:6Yzfa6GP0rIo/kULo2bwGEkFvCePZ3qHDDTC3/J9Swo= +github.com/ledongthuc/pdf v0.0.0-20220302134840-0c2507a12d80/go.mod h1:imJHygn/1yfhB7XSJJKlFZKl/J+dCPAknuiaGOshXAs= +github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= +github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= +github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= +github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= +github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/makeworld-the-better-one/dither/v2 v2.4.0 h1:Az/dYXiTcwcRSe59Hzw4RI1rSnAZns+1msaCXetrMFE= +github.com/makeworld-the-better-one/dither/v2 v2.4.0/go.mod h1:VBtN8DXO7SNtyGmLiGA7IsFeKrBkQPze1/iAeM95arc= +github.com/marekm4/color-extractor v1.2.1 h1:3Zb2tQsn6bITZ8MBVhc33Qn1k5/SEuZ18mrXGUqIwn0= +github.com/marekm4/color-extractor v1.2.1/go.mod h1:90VjmiHI6M8ez9eYUaXLdcKnS+BAOp7w+NpwBdkJmpA= +github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= +github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= +github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= +github.com/mattn/go-sqlite3 v1.14.28 h1:ThEiQrnbtumT+QMknw63Befp/ce/nUPgBPMlRFEum7A= +github.com/mattn/go-sqlite3 v1.14.28/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= +github.com/mfridman/interpolate v0.0.2 h1:pnuTK7MQIxxFz1Gr+rjSIx9u7qVjf5VOoM/u6BbAxPY= +github.com/mfridman/interpolate v0.0.2/go.mod h1:p+7uk6oE07mpE/Ik1b8EckO0O4ZXiGAfshKBWLUM9Xg= +github.com/mfridman/xflag v0.1.0 h1:TWZrZwG1QklFX5S4j1vxfF1sZbZeZSGofMwPMLAF29M= +github.com/mfridman/xflag v0.1.0/go.mod h1:/483ywM5ZO5SuMVjrIGquYNE5CzLrj5Ux/LxWWnjRaE= +github.com/microsoft/go-mssqldb v1.8.0 h1:7cyZ/AT7ycDsEoWPIXibd+aVKFtteUNhDGf3aobP+tw= +github.com/microsoft/go-mssqldb v1.8.0/go.mod h1:6znkekS3T2vp0waiMhen4GPU1BiAsrP+iXHcE7a7rFo= +github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c h1:cqn374mizHuIWj+OSJCajGr/phAmuMug9qIX3l9CflE= +github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw= +github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= +github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= +github.com/muesli/smartcrop v0.3.0 h1:JTlSkmxWg/oQ1TcLDoypuirdE8Y/jzNirQeLkxpA6Oc= +github.com/muesli/smartcrop v0.3.0/go.mod h1:i2fCI/UorTfgEpPPLWiFBv4pye+YAG78RwcQLUkocpI= +github.com/ncruces/go-strftime v0.1.9 h1:bY0MQC28UADQmHmaF5dgpLmImcShSi2kHU9XLdhx/f4= +github.com/ncruces/go-strftime v0.1.9/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls= +github.com/niklasfasching/go-org v1.7.0 h1:vyMdcMWWTe/XmANk19F4k8XGBYg0GQ/gJGMimOjGMek= +github.com/niklasfasching/go-org v1.7.0/go.mod h1:WuVm4d45oePiE0eX25GqTDQIt/qPW1T9DGkRscqLW5o= +github.com/oasdiff/yaml v0.0.0-20250309154309-f31be36b4037 h1:G7ERwszslrBzRxj//JalHPu/3yz+De2J+4aLtSRlHiY= +github.com/oasdiff/yaml v0.0.0-20250309154309-f31be36b4037/go.mod h1:2bpvgLBZEtENV5scfDFEtB/5+1M4hkQhDQrccEJ/qGw= +github.com/oasdiff/yaml3 v0.0.0-20250309153720-d2182401db90 h1:bQx3WeLcUWy+RletIKwUIt4x3t8n2SxavmoclizMb8c= +github.com/oasdiff/yaml3 v0.0.0-20250309153720-d2182401db90/go.mod h1:y5+oSEHCPT/DGrS++Wc/479ERge0zTFxaF8PbGKcg2o= +github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= +github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= +github.com/orisano/pixelmatch v0.0.0-20220722002657-fb0b55479cde h1:x0TT0RDC7UhAVbbWWBzr41ElhJx5tXPWkIHA2HWPRuw= +github.com/orisano/pixelmatch v0.0.0-20220722002657-fb0b55479cde/go.mod h1:nZgzbfBr3hhjoZnS66nKrHmduYNpc34ny7RK4z5/HM0= +github.com/paulmach/orb v0.11.1 h1:3koVegMC4X/WeiXYz9iswopaTwMem53NzTJuTF20JzU= +github.com/paulmach/orb v0.11.1/go.mod h1:5mULz1xQfs3bmQm63QEJA6lNGujuRafwA5S/EnuLaLU= +github.com/paulmach/protoscan v0.2.1/go.mod h1:SpcSwydNLrxUGSDvXvO0P7g7AuhJ7lcKfDlhJCDw2gY= +github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 h1:onHthvaw9LFnH4t2DcNVpwGmV9E1BkGknEliJkfwQj0= +github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58/go.mod h1:DXv8WO4yhMYhSNPKjeNKa5WY9YCIEBRbNzFFPJbWO6Y= +github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= +github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= +github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4= +github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= +github.com/perimeterx/marshmallow v1.1.5 h1:a2LALqQ1BlHM8PZblsDdidgv1mWi1DgC2UmX50IvK2s= +github.com/perimeterx/marshmallow v1.1.5/go.mod h1:dsXbUu8CRzfYP5a87xpp0xq9S3u0Vchtcl8we9tYaXw= +github.com/pierrec/lz4/v4 v4.1.22 h1:cKFw6uJDK+/gfw5BcDL0JL5aBsAFdsIT18eRtLj7VIU= +github.com/pierrec/lz4/v4 v4.1.22/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= +github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ= +github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pressly/goose/v3 v3.24.3 h1:DSWWNwwggVUsYZ0X2VitiAa9sKuqtBfe+Jr9zFGwWlM= +github.com/pressly/goose/v3 v3.24.3/go.mod h1:v9zYL4xdViLHCUUJh/mhjnm6JrK7Eul8AS93IxiZM4E= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/procfs v0.0.0-20190425082905-87a4384529e0/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= +github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= +github.com/rekby/fixenv v0.6.1 h1:jUFiSPpajT4WY2cYuc++7Y1zWrnCxnovGCIX72PZniM= +github.com/rekby/fixenv v0.6.1/go.mod h1:/b5LRc06BYJtslRtHKxsPWFT/ySpHV+rWvzTg+XWk4c= +github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= +github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= +github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= +github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= +github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= +github.com/segmentio/asm v1.2.0 h1:9BQrFxC+YOHJlTlHGkTrFWf59nbL3XnCoFLTwDCI7ys= +github.com/segmentio/asm v1.2.0/go.mod h1:BqMnlJP91P8d+4ibuonYZw9mfnzI9HfxselHZr5aAcs= +github.com/sethvargo/go-retry v0.3.0 h1:EEt31A35QhrcRZtrYFDTBg91cqZVnFL2navjDrah2SE= +github.com/sethvargo/go-retry v0.3.0/go.mod h1:mNX17F0C/HguQMyMyJxcnU471gOZGxCLyYaFyAZraas= +github.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp81k= +github.com/shopspring/decimal v1.4.0/go.mod h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME= +github.com/spf13/afero v1.14.0 h1:9tH6MapGnn/j0eb0yIXiLjERO8RB6xIVZRDCX7PtqWA= +github.com/spf13/afero v1.14.0/go.mod h1:acJQ8t0ohCGuMN3O+Pv0V0hgMxNYDlvdk+VTfyZmbYo= +github.com/spf13/cast v1.8.0 h1:gEN9K4b8Xws4EX0+a0reLmhq8moKn7ntRlQYgjPeCDk= +github.com/spf13/cast v1.8.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/tdewolff/minify/v2 v2.23.5 h1:/P548KcpTkIOUvNg22zN83/GiaYSOIrbqtoue4I7kYM= +github.com/tdewolff/minify/v2 v2.23.5/go.mod h1:2RI9tiIrzJU1Z5EasXEPaI1MqobRyxKHOOgrRkq5oEw= +github.com/tdewolff/parse/v2 v2.8.1 h1:J5GSHru6o3jF1uLlEKVXkDxxcVx6yzOlIVIotK4w2po= +github.com/tdewolff/parse/v2 v2.8.1/go.mod h1:Hwlni2tiVNKyzR1o6nUs4FOF07URA+JLBLd6dlIXYqo= +github.com/tdewolff/test v1.0.11 h1:FdLbwQVHxqG16SlkGveC0JVyrJN62COWTRyUFzfbtBE= +github.com/tdewolff/test v1.0.11/go.mod h1:XPuWBzvdUzhCuxWO1ojpXsyzsA5bFoS3tO/Q3kFuTG8= +github.com/tetratelabs/wazero v1.9.0 h1:IcZ56OuxrtaEz8UYNRHBrUa9bYeX9oVY93KspZZBf/I= +github.com/tetratelabs/wazero v1.9.0/go.mod h1:TSbcXCfFP0L2FGkRPxHphadXPjo1T6W+CseNNY7EkjM= +github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= +github.com/tursodatabase/libsql-client-go v0.0.0-20240902231107-85af5b9d094d h1:dOMI4+zEbDI37KGb0TI44GUAwxHF9cMsIoDTJ7UmgfU= +github.com/tursodatabase/libsql-client-go v0.0.0-20240902231107-85af5b9d094d/go.mod h1:l8xTsYB90uaVdMHXMCxKKLSgw5wLYBwBKKefNIUnm9s= +github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/fasthttp v1.62.0 h1:8dKRBX/y2rCzyc6903Zu1+3qN0H/d2MsxPPmVNamiH0= +github.com/valyala/fasthttp v1.62.0/go.mod h1:FCINgr4GKdKqV8Q0xv8b+UxPV+H/O5nNFo3D+r54Htg= +github.com/vertica/vertica-sql-go v1.3.3 h1:fL+FKEAEy5ONmsvya2WH5T8bhkvY27y/Ik3ReR2T+Qw= +github.com/vertica/vertica-sql-go v1.3.3/go.mod h1:jnn2GFuv+O2Jcjktb7zyc4Utlbu9YVqpHH/lx63+1M4= +github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= +github.com/xdg-go/scram v1.1.1/go.mod h1:RaEWvsqvNKKvBPvcKeFjrG2cJqOkHTiyTpzz23ni57g= +github.com/xdg-go/stringprep v1.0.3/go.mod h1:W3f5j4i+9rC0kuIEJL0ky1VpHXQU3ocBgklLGvcBnW8= +github.com/xyproto/randomstring v1.0.5 h1:YtlWPoRdgMu3NZtP45drfy1GKoojuR7hmRcnhZqKjWU= +github.com/xyproto/randomstring v1.0.5/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3iGxZ18UQApw/E= +github.com/ydb-platform/ydb-go-genproto v0.0.0-20241112172322-ea1f63298f77 h1:LY6cI8cP4B9rrpTleZk95+08kl2gF4rixG7+V/dwL6Q= +github.com/ydb-platform/ydb-go-genproto v0.0.0-20241112172322-ea1f63298f77/go.mod h1:Er+FePu1dNUieD+XTMDduGpQuCPssK5Q4BjF+IIXJ3I= +github.com/ydb-platform/ydb-go-sdk/v3 v3.108.1 h1:ixAiqjj2S/dNuJqrz4AxSqgw2P5OBMXp68hB5nNriUk= +github.com/ydb-platform/ydb-go-sdk/v3 v3.108.1/go.mod h1:l5sSv153E18VvYcsmr51hok9Sjc16tEC8AXGbwrk+ho= +github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.7.13 h1:GPddIs617DnBLFFVJFgpo1aBfe/4xcvMc3SB5t/D0pA= +github.com/yuin/goldmark v1.7.13/go.mod h1:ip/1k0VRfGynBgxOz0yCqHrbZXhcjxyuS66Brc7iBKg= +github.com/yuin/goldmark-emoji v1.0.6 h1:QWfF2FYaXwL74tfGOW5izeiZepUDroDJfWubQI9HTHs= +github.com/yuin/goldmark-emoji v1.0.6/go.mod h1:ukxJDKFpdFb5x0a5HqbdlcKtebh086iJpI31LTKmWuA= +github.com/ziutek/mymysql v1.5.4 h1:GB0qdRGsTwQSBVYuVShFBKaXSnSnYYC2d9knnE1LHFs= +github.com/ziutek/mymysql v1.5.4/go.mod h1:LMSpPZ6DbqWFxNCHW77HeMg9I646SAhApZ/wKdgO/C0= +go.mongodb.org/mongo-driver v1.11.4/go.mod h1:PTSz5yu21bkT/wXpkS7WR5f0ddqw5quethTUn9WM+2g= +go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= +go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= +go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= +go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= +go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= +go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A= +go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= +go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk= +go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= +go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= +go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= +go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= +go.uber.org/mock v0.4.0 h1:VcM4ZOtdbR4f6VXfiOpwpVJDL6lCReaZ6mw31wqh7KU= +go.uber.org/mock v0.4.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc= +go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= +go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.40.0 h1:r4x+VvoG5Fm+eJcxMaY8CQM7Lb0l1lsmjGBQ6s8BfKM= +golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20250531010427-b6e5de432a8b h1:QoALfVG9rhQ/M7vYDScfPdWjGL9dlsVVM5VGh7aKoAA= +golang.org/x/exp v0.0.0-20250531010427-b6e5de432a8b/go.mod h1:U6Lno4MTRCDY+Ba7aCcauB9T60gsv5s4ralQzP72ZoQ= +golang.org/x/image v0.27.0 h1:C8gA4oWU/tKkdCfYT6T2u4faJu3MeNS5O8UPWlPF61w= +golang.org/x/image v0.27.0/go.mod h1:xbdrClrAUway1MUTEZDq9mz/UpRwYAkFFNUslZtcB+g= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.26.0 h1:EGMPT//Ezu+ylkCijjPc+f4Aih7sZvaAr+O3EHBxvZg= +golang.org/x/mod v0.26.0/go.mod h1:/j6NAhSk8iQ723BGAUyoAcn7SlD7s15Dp9Nd/SfeaFQ= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs= +golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/pkgsite v0.0.0-20250721174030-d4de6668b910 h1:pVfSCzQYqJGWW9yuI25d4eDh7kzYPKCIl2l3kKOquq4= +golang.org/x/pkgsite v0.0.0-20250721174030-d4de6668b910/go.mod h1:lHdU14GvKhxtIb9U1NN0ss4Ns49PaAz8Ecq/I97LUwI= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= +golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= +golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= +golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.35.0 h1:mBffYraMEf7aa0sB+NuKnuCy8qI/9Bughn8dC2Gu5r0= +golang.org/x/tools v0.35.0/go.mod h1:NKdj5HkL/73byiZSJjqJgKn3ep7KjFkBOkR/Hps3VPw= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250324211829-b45e905df463 h1:e0AIkUUhxyBKh6ssZNrAMeqhA7RKUj42346d1y02i2g= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250324211829-b45e905df463/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= +google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.71.0 h1:kF77BGdPTQ4/JZWMlb9VpJ5pa25aqvVqogsxNHHdeBg= +google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= +google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/yaml.v1 v1.0.0-20140924161607-9f9df34309c0/go.mod h1:WDnlLJ4WF5VGsH/HVa3CI79GS0ol3YnhVnKP89i0kNg= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +howett.net/plist v0.0.0-20181124034731-591f970eefbb/go.mod h1:vMygbs4qMhSZSc4lCUl2OEE+rDiIIJAIdR4m7MiMcm0= +howett.net/plist v1.0.1 h1:37GdZ8tP09Q35o9ych3ehygcsL+HqKSwzctveSlarvM= +howett.net/plist v1.0.1/go.mod h1:lqaXoTrLY4hg8tnEzNru53gicrbv7rrk+2xJA/7hw9g= +modernc.org/cc/v4 v4.26.0 h1:QMYvbVduUGH0rrO+5mqF/PSPPRZNpRtg2CLELy7vUpA= +modernc.org/cc/v4 v4.26.0/go.mod h1:uVtb5OGqUKpoLWhqwNQo/8LwvoiEBLvZXIQ/SmO6mL0= +modernc.org/ccgo/v4 v4.26.0 h1:gVzXaDzGeBYJ2uXTOpR8FR7OlksDOe9jxnjhIKCsiTc= +modernc.org/ccgo/v4 v4.26.0/go.mod h1:Sem8f7TFUtVXkG2fiaChQtyyfkqhJBg/zjEJBkmuAVY= +modernc.org/fileutil v1.3.1 h1:8vq5fe7jdtEvoCf3Zf9Nm0Q05sH6kGx0Op2CPx1wTC8= +modernc.org/fileutil v1.3.1/go.mod h1:HxmghZSZVAz/LXcMNwZPA/DRrQZEVP9VX0V4LQGQFOc= +modernc.org/gc/v2 v2.6.5 h1:nyqdV8q46KvTpZlsw66kWqwXRHdjIlJOhG6kxiV/9xI= +modernc.org/gc/v2 v2.6.5/go.mod h1:YgIahr1ypgfe7chRuJi2gD7DBQiKSLMPgBQe9oIiito= +modernc.org/libc v1.65.0 h1:e183gLDnAp9VJh6gWKdTy0CThL9Pt7MfcR/0bgb7Y1Y= +modernc.org/libc v1.65.0/go.mod h1:7m9VzGq7APssBTydds2zBcxGREwvIGpuUBaKTXdm2Qs= +modernc.org/mathutil v1.7.1 h1:GCZVGXdaN8gTqB1Mf/usp1Y/hSqgI2vAGGP4jZMCxOU= +modernc.org/mathutil v1.7.1/go.mod h1:4p5IwJITfppl0G4sUEDtCr4DthTaT47/N3aT6MhfgJg= +modernc.org/memory v1.10.0 h1:fzumd51yQ1DxcOxSO+S6X7+QTuVU+n8/Aj7swYjFfC4= +modernc.org/memory v1.10.0/go.mod h1:/JP4VbVC+K5sU2wZi9bHoq2MAkCnrt2r98UGeSK7Mjw= +modernc.org/opt v0.1.4 h1:2kNGMRiUjrp4LcaPuLY2PzUfqM/w9N23quVwhKt5Qm8= +modernc.org/opt v0.1.4/go.mod h1:03fq9lsNfvkYSfxrfUhZCWPk1lm4cq4N+Bh//bEtgns= +modernc.org/sortutil v1.2.1 h1:+xyoGf15mM3NMlPDnFqrteY07klSFxLElE2PVuWIJ7w= +modernc.org/sortutil v1.2.1/go.mod h1:7ZI3a3REbai7gzCLcotuw9AC4VZVpYMjDzETGsSMqJE= +modernc.org/sqlite v1.37.0 h1:s1TMe7T3Q3ovQiK2Ouz4Jwh7dw4ZDqbebSDTlSJdfjI= +modernc.org/sqlite v1.37.0/go.mod h1:5YiWv+YviqGMuGw4V+PNplcyaJ5v+vQd7TQOgkACoJM= +modernc.org/strutil v1.2.1 h1:UneZBkQA+DX2Rp35KcM69cSsNES9ly8mQWD71HKlOA0= +modernc.org/strutil v1.2.1/go.mod h1:EHkiggD70koQxjVdSBM3JKM7k6L0FbGE5eymy9i3B9A= +modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y= +modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= +rsc.io/markdown v0.0.0-20231214224604-88bb533a6020 h1:GqQcl3Kno/rOntek8/d8axYjau8r/c1zVFojXS6WJFI= +rsc.io/markdown v0.0.0-20231214224604-88bb533a6020/go.mod h1:8xcPgWmwlZONN1D9bjxtHEjrUtSEa3fakVF8iaewYKQ= +rsc.io/qr v0.2.0 h1:6vBLea5/NRMVTz8V66gipeLycZMl/+UlFmk8DvqQ6WY= +rsc.io/qr v0.2.0/go.mod h1:IF+uZjkb9fqyeF/4tlBoynqmQxUoPfWEKh921coOuXs= diff --git a/main.go b/main.go new file mode 100644 index 0000000..dd8ba1a --- /dev/null +++ b/main.go @@ -0,0 +1,62 @@ +package main + +import ( + "log" + "os" + "os/signal" + "syscall" + "github.com/gofiber/fiber/v2" + "github.com/gofiber/fiber/v2/middleware/logger" + "github.com/gofiber/template/html/v2" + + _ "github.com/mattn/go-sqlite3" + recov "github.com/gofiber/fiber/v2/middleware/recover" + + "zedshaw.games/webapp/api" + "zedshaw.games/webapp/data" + "zedshaw.games/webapp/config" + "zedshaw.games/webapp/admin" +) + +func main() { + config.Load("config.toml") + log.Printf("ADMIN is %s", config.Settings.Admin) + + log.SetFlags(log.LstdFlags | log.Lshortfile) + + engine := html.New(config.Settings.Views, ".html") + engine.Reload(true) + + app := fiber.New(fiber.Config{ + Views: engine, + ViewsLayout: config.Settings.Layouts, + CaseSensitive: true, + StrictRouting: true, + }) + + app.Use(logger.New()) + app.Use(recov.New()) + + data.Setup(config.Settings.Database.Driver, config.Settings.Database.Url) + api.Setup(app) + admin.Setup(app) + + // this sets up graceful shutdown + go func() { + if err := app.Listen(config.Settings.Port); err != nil { + log.Panic(err) + } + }() + + c := make(chan os.Signal, 1) + signal.Notify(c, os.Interrupt, syscall.SIGINT, syscall.SIGTERM) + + _ = <-c + log.Println("Shutdown now...") + _ = app.Shutdown() + + api.Shutdown() + data.Shutdown() + + log.Println("Done.") +} diff --git a/migrations/20250802154952_init.sql b/migrations/20250802154952_init.sql new file mode 100644 index 0000000..7f0cc42 --- /dev/null +++ b/migrations/20250802154952_init.sql @@ -0,0 +1,9 @@ +-- +goose Up +-- +goose StatementBegin +CREATE TABLE user (id INTEGER PRIMARY KEY, username TEXT UNIQUE NOT NULL, email TEXT UNIQUE, password TEXT NOT NULL); +-- +goose StatementEnd + +-- +goose Down +-- +goose StatementBegin +DROP TABLE user; +-- +goose StatementEnd diff --git a/pages/about.md b/pages/about.md new file mode 100644 index 0000000..5e35bd4 --- /dev/null +++ b/pages/about.md @@ -0,0 +1,5 @@ +# About Me + +My name is Zed A. Shaw. I'm the author of Learn Python the Hardway, and many other books. I started +making games in 2025 using a variety of languages. What you're seeing here is the result of this +year's work. diff --git a/pages/error/index.html b/pages/error/index.html new file mode 100644 index 0000000..22074d2 --- /dev/null +++ b/pages/error/index.html @@ -0,0 +1,2 @@ +

ERROR

+

You have an error.

diff --git a/pages/examples/gitea.html b/pages/examples/gitea.html new file mode 100644 index 0000000..4a5f713 --- /dev/null +++ b/pages/examples/gitea.html @@ -0,0 +1,91 @@ +
+ + Home + Home + Home + + + + + + + + + + + + + + + + + + + + + + + +

SSG is a Static Site Generator that is only a Static Site Generator. No resumes here! Just a piece of code that generates static files from templates for websites, and can do it live while you develop said templates.

+ +

Manage Topics

+ + 21 Commits + 1 Branch + 0 Tags + 589 KiB + +
+ +
+ + + + Name + Time + + + Name + Time + + + Name + Time + + + Name + Time + + + Name + Time + + + Name + Time + + + Name + Time + + + Name + Time + + + Name + Time + + + Name + Time + + + Name + Time + + +
diff --git a/pages/examples/index.html b/pages/examples/index.html new file mode 100644 index 0000000..1786225 --- /dev/null +++ b/pages/examples/index.html @@ -0,0 +1,24 @@ + +
+

Copying Popular Websites to Learn Tailwind

+ +

I've advocated for years that copying other websites is the best way to learn web design. Copying is a very common and established way to learn almost any creative discipline including (but not limited to): Painting, Drawing, Writing, Music, Wood Working, Lutherie, Design, and Programming. To demonstrate this I've been doing copies of websites to learn Tailwind. +

+ +

Current Examples

+

Here's the ones I've done so far

+ + + +

View the Code

+

You can view this code at my git repository. The copies can be found in pages/copy and the tool I use to generate the pages is one I wrote called ssgod. +

+ +
diff --git a/pages/examples/linkedin.html b/pages/examples/linkedin.html new file mode 100644 index 0000000..a5ad3b0 --- /dev/null +++ b/pages/examples/linkedin.html @@ -0,0 +1,97 @@ +
+ + + + + + + + + + + Header Image + Avatar + + + +
Zed Shaw
+ I write books and stuff. + Miami Beach, Florida + Shavian Publishing, LLC +
+ + Show More + + + Avatar + + + + + Video + Photo + Write article + + + + Sort by: Top + + + + + Avatar + + Some Dude + Title + 14h Edited + + + + +

Zombie ipsum reversus ab viral inferno, nam rick grimes malum cerebro. De carne lumbering animata corpora quaeritis. Summus brains sit​​, morbo vel maleficia?

+
+ + Some Image + + + + + + + +
+ + + + Avatar + + Some Dude + Title + 14h Edited + + + + +

Zombie ipsum reversus ab viral inferno, nam rick grimes malum cerebro. De carne lumbering animata corpora quaeritis. Summus brains sit​​, morbo vel maleficia?

+
+ + Some Image + + + + + + + +
+ + + + Job search smarter + Zed reactivate this bullshit. + John and millions more use + + + Avatar + +
diff --git a/pages/examples/sample.html b/pages/examples/sample.html new file mode 100644 index 0000000..9b9d3b0 --- /dev/null +++ b/pages/examples/sample.html @@ -0,0 +1,154 @@ +
+

Sample Components

+

This is a list of components I've made for making websites quicker. They're just pre-styled things you commonly need to do HTML first layouts and designs.

+ +

Shapes

+ + + I'm a placeholder. + + +

Grids

+ + +0,0 +1,0 +0,1 +1,1 + + +

Blocks & Bars

+ + +

Use a block to automatically flex content vertically.

+

Like these two lines are done.

+ + Image +

Use a bar to flex things horizontally.

+
+ + + Image + + You can also combine them in arbitrary ways to layout your content. + + + 1 + 2 + 3 + + +
+ +

Stack

+ +

A stack lets you place multiple elements on top of eachother, like with layers in nearly every single layout composition system in existence for the last 500 years.

+ + +I'm on bottom +

Hello

+

There

+
+ +

Code

+ +
if(var != 'string') {
+  console.log("test");
+}
+
+ +

You should type ls -l to list the directory.

+ +if(var != 'string') + +

Highlight/Marking

+ + + + + + + + + +

This is some marked text.

+ +

Details

+ +
+ Details Test + A test of the details thing. +
+ +

Forms

+ +
+ + Test Form + + + + + + + + + + + + + +
+ + +

Cards

+ +

Cards organize information vertically.

+ + + Image + This shows a top large image with + some text in the middle. + + + +

Header/Nav

+ +

If you put nav inside header it "just works".

+ +
+ +
+ +

That's an example of a header with a nav bar in it.

+ +
diff --git a/pages/examples/starter.html b/pages/examples/starter.html new file mode 100644 index 0000000..46abfc4 --- /dev/null +++ b/pages/examples/starter.html @@ -0,0 +1,3 @@ +
+

Hello

+
diff --git a/pages/examples/stride.html b/pages/examples/stride.html new file mode 100644 index 0000000..b21c570 --- /dev/null +++ b/pages/examples/stride.html @@ -0,0 +1,155 @@ +
+ + STRIDE + + + + + + + + + +

Stride Game Engine

+ +

Stride is a free and open-source cross-platform C# game engine.

+ +

It is fit for both 2D and 3D games, as well as any other interactive content running on desktop and VR.

+ + + + + +
+
+ + + + + + +

Bet on the future

+
    +
  • Blah blah blah
  • +
  • Blah blah blah
  • +
  • Blah blah blah
  • +
  • Blah blah blah
  • +
  • Blah blah blah
  • +
+ + +
+ +
+ +
+ + + + + +

Bet on the future

+
    +
  • Blah blah blah
  • +
  • Blah blah blah
  • +
  • Blah blah blah
  • +
  • Blah blah blah
  • +
  • Blah blah blah
  • +
+ + +
+ +
+ +
+ + +

Recent blog posts

+ + + +
A look inside
+ April 09, 2025 + +

Distant Worlds 2, the sequel to the acclaimed 4X strategy game Distant Worlds: Universe, was developed by Code Force and published by Slitherine. In this blog post, the developers answer key questions from the Stride community, offering insights into their experience using the Stride engine to bring their ambitious galaxy-spanning strategy game to life.

+ + +
+ + +
A look inside
+ April 09, 2025 + +

Distant Worlds 2, the sequel to the acclaimed 4X strategy game Distant Worlds: Universe, was developed by Code Force and published by Slitherine. In this blog post, the developers answer key questions from the Stride community, offering insights into their experience using the Stride engine to bring their ambitious galaxy-spanning strategy game to life.

+ + +
+ +
A look inside
+ April 09, 2025 + +

Distant Worlds 2, the sequel to the acclaimed 4X strategy game Distant Worlds: Universe, was developed by Code Force and published by Slitherine. In this blog post, the developers answer key questions from the Stride community, offering insights into their experience using the Stride engine to bring their ambitious galaxy-spanning strategy game to life.

+ + +
+ +
+
+ +
+ + +

Featured Sponsors

+ +

Thanks to our featured sponsors for supporting Stride and empowering creators with the resources they need to bring their visions to life.

+ + + +
 
+ + +

+ A visual live-programming environment that takes you from rapid prototyping to final production. +

+
+
+ +
 
+ + +

+ A visual live-programming environment that takes you from rapid prototyping to final production. +

+
+
+
+
+
+ + + + Content1 + Content2 + Content3 + Content4 + + +
+ + + + + + + + +
+ +
+ Supported by the .NET Foundation + Website v.2.0.0.31 + © .NET Foundation and Contributors +
+
+
diff --git a/pages/examples/twitch.html b/pages/examples/twitch.html new file mode 100644 index 0000000..8d458b6 --- /dev/null +++ b/pages/examples/twitch.html @@ -0,0 +1,203 @@ +
+ + + Browse + + + + + + + + + + + +
+ + + + + Main Video + + + + + + + Live on Twitch + + + Sample Video +
+ Avatar +
+ Title + Name + Game Title + + Pill + Pill + Pill + Pill + +
+
+
+ + + Sample Video +
+ Avatar +
+ Title + Name + Game Title + + Pill + Pill + Pill + Pill + +
+
+
+ +
+ + + + + Categories we think you'll like + + + + Category +
+ Title + Name + Game Title + + Pill + Pill + Pill + Pill + +
+
+ + Category +
+ Title + Name + Game Title + + Pill + Pill + Pill + Pill + +
+
+ + Category +
+ Title + Name + Game Title + + Pill + Pill + Pill + Pill + +
+
+ + Category +
+ Title + Name + Game Title + + Pill + Pill + Pill + Pill + +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + Live on Twitch + + + Sample Video +
+ Avatar +
+ Title + Name + Game Title + + Pill + Pill + Pill + Pill + +
+
+
+ + + Sample Video +
+ Avatar +
+ Title + Name + Game Title + + Pill + Pill + Pill + Pill + +
+
+
+ +
+ + +

an amazon company

+
+
+
diff --git a/pages/index.html b/pages/index.html new file mode 100644 index 0000000..8de9470 --- /dev/null +++ b/pages/index.html @@ -0,0 +1,4 @@ +

Go Web Dev Starter Kit

+ +Instructions coming soon... + diff --git a/pages/layouts/examples.html b/pages/layouts/examples.html new file mode 100644 index 0000000..8f42783 --- /dev/null +++ b/pages/layouts/examples.html @@ -0,0 +1,15 @@ + + + + + + + + + + ZedShaw.games + + + {{embed}} + + diff --git a/pages/layouts/main.html b/pages/layouts/main.html new file mode 100644 index 0000000..608d647 --- /dev/null +++ b/pages/layouts/main.html @@ -0,0 +1,48 @@ + + + + + + + + + + + + + ZedShaw.games + + +
+ +
+ +
+ {{embed}} +
+ +
+
+ +
+

Blah blah about me.

+
+
+
+

Other Projects

+

Some other links to stuff.

+
+
+ + diff --git a/pages/login/index.html b/pages/login/index.html new file mode 100644 index 0000000..5509c18 --- /dev/null +++ b/pages/login/index.html @@ -0,0 +1,18 @@ +
+
+ +

Login

+ + + + + + + + + + +
+
+ +
diff --git a/pages/register/index.html b/pages/register/index.html new file mode 100644 index 0000000..6f4c67b --- /dev/null +++ b/pages/register/index.html @@ -0,0 +1,20 @@ +
+
+ +

Register

+ + + + + + + + + + + + +
+
+ +
diff --git a/ssgod.toml b/ssgod.toml new file mode 100644 index 0000000..71a1a2c --- /dev/null +++ b/ssgod.toml @@ -0,0 +1,5 @@ +views = "pages" +layout = "pages/layouts/main.html" +target = "public" +watch_delay = "500ms" +sync_dir = "static" diff --git a/static/default_theme.css b/static/default_theme.css new file mode 100644 index 0000000..52d447f --- /dev/null +++ b/static/default_theme.css @@ -0,0 +1,462 @@ +@theme default { + --font-sans: + ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', + 'Noto Color Emoji'; + --font-serif: ui-serif, Georgia, Cambria, 'Times New Roman', Times, serif; + --font-mono: + ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', + monospace; + + --color-red-50: oklch(97.1% 0.013 17.38); + --color-red-100: oklch(93.6% 0.032 17.717); + --color-red-200: oklch(88.5% 0.062 18.334); + --color-red-300: oklch(80.8% 0.114 19.571); + --color-red-400: oklch(70.4% 0.191 22.216); + --color-red-500: oklch(63.7% 0.237 25.331); + --color-red-600: oklch(57.7% 0.245 27.325); + --color-red-700: oklch(50.5% 0.213 27.518); + --color-red-800: oklch(44.4% 0.177 26.899); + --color-red-900: oklch(39.6% 0.141 25.723); + --color-red-950: oklch(25.8% 0.092 26.042); + + --color-orange-50: oklch(98% 0.016 73.684); + --color-orange-100: oklch(95.4% 0.038 75.164); + --color-orange-200: oklch(90.1% 0.076 70.697); + --color-orange-300: oklch(83.7% 0.128 66.29); + --color-orange-400: oklch(75% 0.183 55.934); + --color-orange-500: oklch(70.5% 0.213 47.604); + --color-orange-600: oklch(64.6% 0.222 41.116); + --color-orange-700: oklch(55.3% 0.195 38.402); + --color-orange-800: oklch(47% 0.157 37.304); + --color-orange-900: oklch(40.8% 0.123 38.172); + --color-orange-950: oklch(26.6% 0.079 36.259); + + --color-amber-50: oklch(98.7% 0.022 95.277); + --color-amber-100: oklch(96.2% 0.059 95.617); + --color-amber-200: oklch(92.4% 0.12 95.746); + --color-amber-300: oklch(87.9% 0.169 91.605); + --color-amber-400: oklch(82.8% 0.189 84.429); + --color-amber-500: oklch(76.9% 0.188 70.08); + --color-amber-600: oklch(66.6% 0.179 58.318); + --color-amber-700: oklch(55.5% 0.163 48.998); + --color-amber-800: oklch(47.3% 0.137 46.201); + --color-amber-900: oklch(41.4% 0.112 45.904); + --color-amber-950: oklch(27.9% 0.077 45.635); + + --color-yellow-50: oklch(98.7% 0.026 102.212); + --color-yellow-100: oklch(97.3% 0.071 103.193); + --color-yellow-200: oklch(94.5% 0.129 101.54); + --color-yellow-300: oklch(90.5% 0.182 98.111); + --color-yellow-400: oklch(85.2% 0.199 91.936); + --color-yellow-500: oklch(79.5% 0.184 86.047); + --color-yellow-600: oklch(68.1% 0.162 75.834); + --color-yellow-700: oklch(55.4% 0.135 66.442); + --color-yellow-800: oklch(47.6% 0.114 61.907); + --color-yellow-900: oklch(42.1% 0.095 57.708); + --color-yellow-950: oklch(28.6% 0.066 53.813); + + --color-lime-50: oklch(98.6% 0.031 120.757); + --color-lime-100: oklch(96.7% 0.067 122.328); + --color-lime-200: oklch(93.8% 0.127 124.321); + --color-lime-300: oklch(89.7% 0.196 126.665); + --color-lime-400: oklch(84.1% 0.238 128.85); + --color-lime-500: oklch(76.8% 0.233 130.85); + --color-lime-600: oklch(64.8% 0.2 131.684); + --color-lime-700: oklch(53.2% 0.157 131.589); + --color-lime-800: oklch(45.3% 0.124 130.933); + --color-lime-900: oklch(40.5% 0.101 131.063); + --color-lime-950: oklch(27.4% 0.072 132.109); + + --color-green-50: oklch(98.2% 0.018 155.826); + --color-green-100: oklch(96.2% 0.044 156.743); + --color-green-200: oklch(92.5% 0.084 155.995); + --color-green-300: oklch(87.1% 0.15 154.449); + --color-green-400: oklch(79.2% 0.209 151.711); + --color-green-500: oklch(72.3% 0.219 149.579); + --color-green-600: oklch(62.7% 0.194 149.214); + --color-green-700: oklch(52.7% 0.154 150.069); + --color-green-800: oklch(44.8% 0.119 151.328); + --color-green-900: oklch(39.3% 0.095 152.535); + --color-green-950: oklch(26.6% 0.065 152.934); + + --color-emerald-50: oklch(97.9% 0.021 166.113); + --color-emerald-100: oklch(95% 0.052 163.051); + --color-emerald-200: oklch(90.5% 0.093 164.15); + --color-emerald-300: oklch(84.5% 0.143 164.978); + --color-emerald-400: oklch(76.5% 0.177 163.223); + --color-emerald-500: oklch(69.6% 0.17 162.48); + --color-emerald-600: oklch(59.6% 0.145 163.225); + --color-emerald-700: oklch(50.8% 0.118 165.612); + --color-emerald-800: oklch(43.2% 0.095 166.913); + --color-emerald-900: oklch(37.8% 0.077 168.94); + --color-emerald-950: oklch(26.2% 0.051 172.552); + + --color-teal-50: oklch(98.4% 0.014 180.72); + --color-teal-100: oklch(95.3% 0.051 180.801); + --color-teal-200: oklch(91% 0.096 180.426); + --color-teal-300: oklch(85.5% 0.138 181.071); + --color-teal-400: oklch(77.7% 0.152 181.912); + --color-teal-500: oklch(70.4% 0.14 182.503); + --color-teal-600: oklch(60% 0.118 184.704); + --color-teal-700: oklch(51.1% 0.096 186.391); + --color-teal-800: oklch(43.7% 0.078 188.216); + --color-teal-900: oklch(38.6% 0.063 188.416); + --color-teal-950: oklch(27.7% 0.046 192.524); + + --color-cyan-50: oklch(98.4% 0.019 200.873); + --color-cyan-100: oklch(95.6% 0.045 203.388); + --color-cyan-200: oklch(91.7% 0.08 205.041); + --color-cyan-300: oklch(86.5% 0.127 207.078); + --color-cyan-400: oklch(78.9% 0.154 211.53); + --color-cyan-500: oklch(71.5% 0.143 215.221); + --color-cyan-600: oklch(60.9% 0.126 221.723); + --color-cyan-700: oklch(52% 0.105 223.128); + --color-cyan-800: oklch(45% 0.085 224.283); + --color-cyan-900: oklch(39.8% 0.07 227.392); + --color-cyan-950: oklch(30.2% 0.056 229.695); + + --color-sky-50: oklch(97.7% 0.013 236.62); + --color-sky-100: oklch(95.1% 0.026 236.824); + --color-sky-200: oklch(90.1% 0.058 230.902); + --color-sky-300: oklch(82.8% 0.111 230.318); + --color-sky-400: oklch(74.6% 0.16 232.661); + --color-sky-500: oklch(68.5% 0.169 237.323); + --color-sky-600: oklch(58.8% 0.158 241.966); + --color-sky-700: oklch(50% 0.134 242.749); + --color-sky-800: oklch(44.3% 0.11 240.79); + --color-sky-900: oklch(39.1% 0.09 240.876); + --color-sky-950: oklch(29.3% 0.066 243.157); + + --color-blue-50: oklch(97% 0.014 254.604); + --color-blue-100: oklch(93.2% 0.032 255.585); + --color-blue-200: oklch(88.2% 0.059 254.128); + --color-blue-300: oklch(80.9% 0.105 251.813); + --color-blue-400: oklch(70.7% 0.165 254.624); + --color-blue-500: oklch(62.3% 0.214 259.815); + --color-blue-600: oklch(54.6% 0.245 262.881); + --color-blue-700: oklch(48.8% 0.243 264.376); + --color-blue-800: oklch(42.4% 0.199 265.638); + --color-blue-900: oklch(37.9% 0.146 265.522); + --color-blue-950: oklch(28.2% 0.091 267.935); + + --color-indigo-50: oklch(96.2% 0.018 272.314); + --color-indigo-100: oklch(93% 0.034 272.788); + --color-indigo-200: oklch(87% 0.065 274.039); + --color-indigo-300: oklch(78.5% 0.115 274.713); + --color-indigo-400: oklch(67.3% 0.182 276.935); + --color-indigo-500: oklch(58.5% 0.233 277.117); + --color-indigo-600: oklch(51.1% 0.262 276.966); + --color-indigo-700: oklch(45.7% 0.24 277.023); + --color-indigo-800: oklch(39.8% 0.195 277.366); + --color-indigo-900: oklch(35.9% 0.144 278.697); + --color-indigo-950: oklch(25.7% 0.09 281.288); + + --color-violet-50: oklch(96.9% 0.016 293.756); + --color-violet-100: oklch(94.3% 0.029 294.588); + --color-violet-200: oklch(89.4% 0.057 293.283); + --color-violet-300: oklch(81.1% 0.111 293.571); + --color-violet-400: oklch(70.2% 0.183 293.541); + --color-violet-500: oklch(60.6% 0.25 292.717); + --color-violet-600: oklch(54.1% 0.281 293.009); + --color-violet-700: oklch(49.1% 0.27 292.581); + --color-violet-800: oklch(43.2% 0.232 292.759); + --color-violet-900: oklch(38% 0.189 293.745); + --color-violet-950: oklch(28.3% 0.141 291.089); + + --color-purple-50: oklch(97.7% 0.014 308.299); + --color-purple-100: oklch(94.6% 0.033 307.174); + --color-purple-200: oklch(90.2% 0.063 306.703); + --color-purple-300: oklch(82.7% 0.119 306.383); + --color-purple-400: oklch(71.4% 0.203 305.504); + --color-purple-500: oklch(62.7% 0.265 303.9); + --color-purple-600: oklch(55.8% 0.288 302.321); + --color-purple-700: oklch(49.6% 0.265 301.924); + --color-purple-800: oklch(43.8% 0.218 303.724); + --color-purple-900: oklch(38.1% 0.176 304.987); + --color-purple-950: oklch(29.1% 0.149 302.717); + + --color-fuchsia-50: oklch(97.7% 0.017 320.058); + --color-fuchsia-100: oklch(95.2% 0.037 318.852); + --color-fuchsia-200: oklch(90.3% 0.076 319.62); + --color-fuchsia-300: oklch(83.3% 0.145 321.434); + --color-fuchsia-400: oklch(74% 0.238 322.16); + --color-fuchsia-500: oklch(66.7% 0.295 322.15); + --color-fuchsia-600: oklch(59.1% 0.293 322.896); + --color-fuchsia-700: oklch(51.8% 0.253 323.949); + --color-fuchsia-800: oklch(45.2% 0.211 324.591); + --color-fuchsia-900: oklch(40.1% 0.17 325.612); + --color-fuchsia-950: oklch(29.3% 0.136 325.661); + + --color-pink-50: oklch(97.1% 0.014 343.198); + --color-pink-100: oklch(94.8% 0.028 342.258); + --color-pink-200: oklch(89.9% 0.061 343.231); + --color-pink-300: oklch(82.3% 0.12 346.018); + --color-pink-400: oklch(71.8% 0.202 349.761); + --color-pink-500: oklch(65.6% 0.241 354.308); + --color-pink-600: oklch(59.2% 0.249 0.584); + --color-pink-700: oklch(52.5% 0.223 3.958); + --color-pink-800: oklch(45.9% 0.187 3.815); + --color-pink-900: oklch(40.8% 0.153 2.432); + --color-pink-950: oklch(28.4% 0.109 3.907); + + --color-rose-50: oklch(96.9% 0.015 12.422); + --color-rose-100: oklch(94.1% 0.03 12.58); + --color-rose-200: oklch(89.2% 0.058 10.001); + --color-rose-300: oklch(81% 0.117 11.638); + --color-rose-400: oklch(71.2% 0.194 13.428); + --color-rose-500: oklch(64.5% 0.246 16.439); + --color-rose-600: oklch(58.6% 0.253 17.585); + --color-rose-700: oklch(51.4% 0.222 16.935); + --color-rose-800: oklch(45.5% 0.188 13.697); + --color-rose-900: oklch(41% 0.159 10.272); + --color-rose-950: oklch(27.1% 0.105 12.094); + + --color-slate-50: oklch(98.4% 0.003 247.858); + --color-slate-100: oklch(96.8% 0.007 247.896); + --color-slate-200: oklch(92.9% 0.013 255.508); + --color-slate-300: oklch(86.9% 0.022 252.894); + --color-slate-400: oklch(70.4% 0.04 256.788); + --color-slate-500: oklch(55.4% 0.046 257.417); + --color-slate-600: oklch(44.6% 0.043 257.281); + --color-slate-700: oklch(37.2% 0.044 257.287); + --color-slate-800: oklch(27.9% 0.041 260.031); + --color-slate-900: oklch(20.8% 0.042 265.755); + --color-slate-950: oklch(12.9% 0.042 264.695); + + --color-gray-50: oklch(98.5% 0.002 247.839); + --color-gray-100: oklch(96.7% 0.003 264.542); + --color-gray-200: oklch(92.8% 0.006 264.531); + --color-gray-300: oklch(87.2% 0.01 258.338); + --color-gray-400: oklch(70.7% 0.022 261.325); + --color-gray-500: oklch(55.1% 0.027 264.364); + --color-gray-600: oklch(44.6% 0.03 256.802); + --color-gray-700: oklch(37.3% 0.034 259.733); + --color-gray-800: oklch(27.8% 0.033 256.848); + --color-gray-900: oklch(21% 0.034 264.665); + --color-gray-950: oklch(13% 0.028 261.692); + + --color-zinc-50: oklch(98.5% 0 0); + --color-zinc-100: oklch(96.7% 0.001 286.375); + --color-zinc-200: oklch(92% 0.004 286.32); + --color-zinc-300: oklch(87.1% 0.006 286.286); + --color-zinc-400: oklch(70.5% 0.015 286.067); + --color-zinc-500: oklch(55.2% 0.016 285.938); + --color-zinc-600: oklch(44.2% 0.017 285.786); + --color-zinc-700: oklch(37% 0.013 285.805); + --color-zinc-800: oklch(27.4% 0.006 286.033); + --color-zinc-900: oklch(21% 0.006 285.885); + --color-zinc-950: oklch(14.1% 0.005 285.823); + + --color-neutral-50: oklch(98.5% 0 0); + --color-neutral-100: oklch(97% 0 0); + --color-neutral-200: oklch(92.2% 0 0); + --color-neutral-300: oklch(87% 0 0); + --color-neutral-400: oklch(70.8% 0 0); + --color-neutral-500: oklch(55.6% 0 0); + --color-neutral-600: oklch(43.9% 0 0); + --color-neutral-700: oklch(37.1% 0 0); + --color-neutral-800: oklch(26.9% 0 0); + --color-neutral-900: oklch(20.5% 0 0); + --color-neutral-950: oklch(14.5% 0 0); + + --color-stone-50: oklch(98.5% 0.001 106.423); + --color-stone-100: oklch(97% 0.001 106.424); + --color-stone-200: oklch(92.3% 0.003 48.717); + --color-stone-300: oklch(86.9% 0.005 56.366); + --color-stone-400: oklch(70.9% 0.01 56.259); + --color-stone-500: oklch(55.3% 0.013 58.071); + --color-stone-600: oklch(44.4% 0.011 73.639); + --color-stone-700: oklch(37.4% 0.01 67.558); + --color-stone-800: oklch(26.8% 0.007 34.298); + --color-stone-900: oklch(21.6% 0.006 56.043); + --color-stone-950: oklch(14.7% 0.004 49.25); + + --color-black: #000; + --color-white: #fff; + + --spacing: 0.25rem; + + --breakpoint-sm: 40rem; + --breakpoint-md: 48rem; + --breakpoint-lg: 64rem; + --breakpoint-xl: 80rem; + --breakpoint-2xl: 96rem; + + --container-3xs: 16rem; + --container-2xs: 18rem; + --container-xs: 20rem; + --container-sm: 24rem; + --container-md: 28rem; + --container-lg: 32rem; + --container-xl: 36rem; + --container-2xl: 42rem; + --container-3xl: 48rem; + --container-4xl: 56rem; + --container-5xl: 64rem; + --container-6xl: 72rem; + --container-7xl: 80rem; + + --text-xs: 0.75rem; + --text-xs--line-height: calc(1 / 0.75); + --text-sm: 0.875rem; + --text-sm--line-height: calc(1.25 / 0.875); + --text-base: 1rem; + --text-base--line-height: calc(1.5 / 1); + --text-lg: 1.125rem; + --text-lg--line-height: calc(1.75 / 1.125); + --text-xl: 1.25rem; + --text-xl--line-height: calc(1.75 / 1.25); + --text-2xl: 1.5rem; + --text-2xl--line-height: calc(2 / 1.5); + --text-3xl: 1.875rem; + --text-3xl--line-height: calc(2.25 / 1.875); + --text-4xl: 2.25rem; + --text-4xl--line-height: calc(2.5 / 2.25); + --text-5xl: 3rem; + --text-5xl--line-height: 1; + --text-6xl: 3.75rem; + --text-6xl--line-height: 1; + --text-7xl: 4.5rem; + --text-7xl--line-height: 1; + --text-8xl: 6rem; + --text-8xl--line-height: 1; + --text-9xl: 8rem; + --text-9xl--line-height: 1; + + --font-weight-thin: 100; + --font-weight-extralight: 200; + --font-weight-light: 300; + --font-weight-normal: 400; + --font-weight-medium: 500; + --font-weight-semibold: 600; + --font-weight-bold: 700; + --font-weight-extrabold: 800; + --font-weight-black: 900; + + --tracking-tighter: -0.05em; + --tracking-tight: -0.025em; + --tracking-normal: 0em; + --tracking-wide: 0.025em; + --tracking-wider: 0.05em; + --tracking-widest: 0.1em; + + --leading-tight: 1.25; + --leading-snug: 1.375; + --leading-normal: 1.5; + --leading-relaxed: 1.625; + --leading-loose: 2; + + --radius-xs: 0.125rem; + --radius-sm: 0.25rem; + --radius-md: 0.375rem; + --radius-lg: 0.5rem; + --radius-xl: 0.75rem; + --radius-2xl: 1rem; + --radius-3xl: 1.5rem; + --radius-4xl: 2rem; + + --shadow-2xs: 0 1px rgb(0 0 0 / 0.05); + --shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 0.05); + --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1); + --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1); + --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1); + --shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.25); + + --inset-shadow-2xs: inset 0 1px rgb(0 0 0 / 0.05); + --inset-shadow-xs: inset 0 1px 1px rgb(0 0 0 / 0.05); + --inset-shadow-sm: inset 0 2px 4px rgb(0 0 0 / 0.05); + + --drop-shadow-xs: 0 1px 1px rgb(0 0 0 / 0.05); + --drop-shadow-sm: 0 1px 2px rgb(0 0 0 / 0.15); + --drop-shadow-md: 0 3px 3px rgb(0 0 0 / 0.12); + --drop-shadow-lg: 0 4px 4px rgb(0 0 0 / 0.15); + --drop-shadow-xl: 0 9px 7px rgb(0 0 0 / 0.1); + --drop-shadow-2xl: 0 25px 25px rgb(0 0 0 / 0.15); + + --text-shadow-2xs: 0px 1px 0px rgb(0 0 0 / 0.15); + --text-shadow-xs: 0px 1px 1px rgb(0 0 0 / 0.2); + --text-shadow-sm: + 0px 1px 0px rgb(0 0 0 / 0.075), 0px 1px 1px rgb(0 0 0 / 0.075), 0px 2px 2px rgb(0 0 0 / 0.075); + --text-shadow-md: + 0px 1px 1px rgb(0 0 0 / 0.1), 0px 1px 2px rgb(0 0 0 / 0.1), 0px 2px 4px rgb(0 0 0 / 0.1); + --text-shadow-lg: + 0px 1px 2px rgb(0 0 0 / 0.1), 0px 3px 2px rgb(0 0 0 / 0.1), 0px 4px 8px rgb(0 0 0 / 0.1); + + --ease-in: cubic-bezier(0.4, 0, 1, 1); + --ease-out: cubic-bezier(0, 0, 0.2, 1); + --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1); + + --animate-spin: spin 1s linear infinite; + --animate-ping: ping 1s cubic-bezier(0, 0, 0.2, 1) infinite; + --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; + --animate-bounce: bounce 1s infinite; + + @keyframes spin { + to { + transform: rotate(360deg); + } + } + + @keyframes ping { + 75%, + 100% { + transform: scale(2); + opacity: 0; + } + } + + @keyframes pulse { + 50% { + opacity: 0.5; + } + } + + @keyframes bounce { + 0%, + 100% { + transform: translateY(-25%); + animation-timing-function: cubic-bezier(0.8, 0, 1, 1); + } + + 50% { + transform: none; + animation-timing-function: cubic-bezier(0, 0, 0.2, 1); + } + } + + --blur-xs: 4px; + --blur-sm: 8px; + --blur-md: 12px; + --blur-lg: 16px; + --blur-xl: 24px; + --blur-2xl: 40px; + --blur-3xl: 64px; + + --perspective-dramatic: 100px; + --perspective-near: 300px; + --perspective-normal: 500px; + --perspective-midrange: 800px; + --perspective-distant: 1200px; + + --aspect-video: 16 / 9; + + --default-transition-duration: 150ms; + --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + --default-font-family: --theme(--font-sans, initial); + --default-font-feature-settings: --theme(--font-sans--font-feature-settings, initial); + --default-font-variation-settings: --theme(--font-sans--font-variation-settings, initial); + --default-mono-font-family: --theme(--font-mono, initial); + --default-mono-font-feature-settings: --theme(--font-mono--font-feature-settings, initial); + --default-mono-font-variation-settings: --theme(--font-mono--font-variation-settings, initial); +} + +/* Deprecated */ +@theme default inline reference { + --blur: 8px; + --shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1); + --shadow-inner: inset 0 2px 4px 0 rgb(0 0 0 / 0.05); + --drop-shadow: 0 1px 2px rgb(0 0 0 / 0.1), 0 1px 1px rgb(0 0 0 / 0.06); + --radius: 0.25rem; + --max-width-prose: 65ch; +} diff --git a/static/favicon.ico b/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..7cf06c4ce281c8c966a60cb30a18d7d6bef5749e GIT binary patch literal 2734 zcmeH}&x;&I6vyA_vh3_8I-{qFIV_8Z4Js@w1VOb6AjVnjk76OCJOo z#Edl?gd99fPcLCuB)UZoVJ_LRCPBeHm?@fp5Ji?cd6Dc;e}nH;PxX&oy$F(vkLjxV ze%`D1x_gSQ0w}?=u(VXcehU0)fYSglKcDD7p8>dqtWrtzVhNyG23W+HCA`+~qIqPE zq%-4+X_Mx{rR%V??7(}g*I@1a58?Sr4R*F}!RF@;IP=!qP(Ah>MBo1g3opM0A72aM z(W7^ucmIi*{CjAuEzyMNqd2aNC44}9C`1@Sf|a_7o`|sFH!W7G9EQShN;Jtr-f|e3 zG*sYj7OvFD@}an&=W5R65m+~u1|vqqhb~%?t7B5`p)Z!jJZetL4@7*RWudN8`*LqA z^g(=t4>WQq$A=2|b_?P4#%ge~Iy^woB)ypvwEUon$cU8I) z)y#F*_57yix^>U<{ImpPtVw{HL)?%AGh1Oq(fIS5I1$bA8Dt)&N+@gOIpU^|PPB|; z2AV>X(9+u(CAWhG2sd)P$!xgie{It%#XO%lhU1lnD>ajZ`-Ib~IBmo{L_Py7oC`+> zP(}7tmfDWU0oj|hm}(SLWS;+Il>3bRKYR*rfcBYryjJkC`wZZoWbN=ibFu!3*=s7t zUod+N?Jxhdx7Zxif9s&(&cVKP9Q<%`zT!CNNHb^FXzn;I)NQtsNZvh5I%E?!=QF5r z)lS@;cU$2%tkq8aycM2}qW)$YP>yy5>o+njb|cZx5=@Ey7grav0%g%}w^)=WEaN^F zg`#5#iC3*|? zhNsR6$9Y#cXVx#7iqqaYe(q@ZyJ9p+vbr}*x=Y@5^F1-{E=kt_qj|kf(HO9n({-FO zo9Nr?Nrs7=^Jz*3ka(%>qRbS5qAd7|BEJ@%#+cSQt>t;V>^g7Y*jj#_cfR`-@@FbK zOI7hqWzSN7caE}ocG)Hm8~DfLGTWJ>BS7c2N1f>0=@`BB@I*xVqlY^`Qor@ni`4h- v$Xe20Ing!xy!-|GdmH$teTMyN5Cqh_?&=0|5x5(lQZEA2P8xe3|F-`NoX+Fg literal 0 HcmV?d00001 diff --git a/static/icons/LICENSE b/static/icons/LICENSE new file mode 100644 index 0000000..f9e4672 --- /dev/null +++ b/static/icons/LICENSE @@ -0,0 +1,15 @@ +ISC License + +Icons are Copyright (c) for portions of Lucide are held by Cole Bemis 2013-2022 as part of Feather (MIT). All other copyright (c) for Lucide are held by Lucide Contributors 2022. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/static/icons/accessibility.svg b/static/icons/accessibility.svg new file mode 100644 index 0000000..758ff89 --- /dev/null +++ b/static/icons/accessibility.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/activity.svg b/static/icons/activity.svg new file mode 100644 index 0000000..2eccd9c --- /dev/null +++ b/static/icons/activity.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/air-vent.svg b/static/icons/air-vent.svg new file mode 100644 index 0000000..0b705dc --- /dev/null +++ b/static/icons/air-vent.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/airplay.svg b/static/icons/airplay.svg new file mode 100644 index 0000000..efa8ec3 --- /dev/null +++ b/static/icons/airplay.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/alarm-check.svg b/static/icons/alarm-check.svg new file mode 100644 index 0000000..c806f73 --- /dev/null +++ b/static/icons/alarm-check.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/alarm-clock-off.svg b/static/icons/alarm-clock-off.svg new file mode 100644 index 0000000..2c675ff --- /dev/null +++ b/static/icons/alarm-clock-off.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/alarm-clock.svg b/static/icons/alarm-clock.svg new file mode 100644 index 0000000..73bed01 --- /dev/null +++ b/static/icons/alarm-clock.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/alarm-minus.svg b/static/icons/alarm-minus.svg new file mode 100644 index 0000000..fc7b396 --- /dev/null +++ b/static/icons/alarm-minus.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/alarm-plus.svg b/static/icons/alarm-plus.svg new file mode 100644 index 0000000..07d8d98 --- /dev/null +++ b/static/icons/alarm-plus.svg @@ -0,0 +1,19 @@ + + + + + + + + + diff --git a/static/icons/album.svg b/static/icons/album.svg new file mode 100644 index 0000000..2d56097 --- /dev/null +++ b/static/icons/album.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/alert-circle.svg b/static/icons/alert-circle.svg new file mode 100644 index 0000000..57fbe36 --- /dev/null +++ b/static/icons/alert-circle.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/alert-octagon.svg b/static/icons/alert-octagon.svg new file mode 100644 index 0000000..6cb9665 --- /dev/null +++ b/static/icons/alert-octagon.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/alert-triangle.svg b/static/icons/alert-triangle.svg new file mode 100644 index 0000000..a90c7c8 --- /dev/null +++ b/static/icons/alert-triangle.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/align-center-horizontal.svg b/static/icons/align-center-horizontal.svg new file mode 100644 index 0000000..f77f047 --- /dev/null +++ b/static/icons/align-center-horizontal.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/align-center-vertical.svg b/static/icons/align-center-vertical.svg new file mode 100644 index 0000000..a378004 --- /dev/null +++ b/static/icons/align-center-vertical.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/align-center.svg b/static/icons/align-center.svg new file mode 100644 index 0000000..ef63a63 --- /dev/null +++ b/static/icons/align-center.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/align-end-horizontal.svg b/static/icons/align-end-horizontal.svg new file mode 100644 index 0000000..56f5fae --- /dev/null +++ b/static/icons/align-end-horizontal.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/align-end-vertical.svg b/static/icons/align-end-vertical.svg new file mode 100644 index 0000000..c5219f8 --- /dev/null +++ b/static/icons/align-end-vertical.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/align-horizontal-distribute-center.svg b/static/icons/align-horizontal-distribute-center.svg new file mode 100644 index 0000000..928045d --- /dev/null +++ b/static/icons/align-horizontal-distribute-center.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/align-horizontal-distribute-end.svg b/static/icons/align-horizontal-distribute-end.svg new file mode 100644 index 0000000..8537be6 --- /dev/null +++ b/static/icons/align-horizontal-distribute-end.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/align-horizontal-distribute-start.svg b/static/icons/align-horizontal-distribute-start.svg new file mode 100644 index 0000000..7424192 --- /dev/null +++ b/static/icons/align-horizontal-distribute-start.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/align-horizontal-justify-center.svg b/static/icons/align-horizontal-justify-center.svg new file mode 100644 index 0000000..a53129d --- /dev/null +++ b/static/icons/align-horizontal-justify-center.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/align-horizontal-justify-end.svg b/static/icons/align-horizontal-justify-end.svg new file mode 100644 index 0000000..2850b0c --- /dev/null +++ b/static/icons/align-horizontal-justify-end.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/align-horizontal-justify-start.svg b/static/icons/align-horizontal-justify-start.svg new file mode 100644 index 0000000..45befff --- /dev/null +++ b/static/icons/align-horizontal-justify-start.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/align-horizontal-space-around.svg b/static/icons/align-horizontal-space-around.svg new file mode 100644 index 0000000..70e2a80 --- /dev/null +++ b/static/icons/align-horizontal-space-around.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/align-horizontal-space-between.svg b/static/icons/align-horizontal-space-between.svg new file mode 100644 index 0000000..e38bc34 --- /dev/null +++ b/static/icons/align-horizontal-space-between.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/align-justify.svg b/static/icons/align-justify.svg new file mode 100644 index 0000000..bd9cc4e --- /dev/null +++ b/static/icons/align-justify.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/align-left.svg b/static/icons/align-left.svg new file mode 100644 index 0000000..c776bae --- /dev/null +++ b/static/icons/align-left.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/align-right.svg b/static/icons/align-right.svg new file mode 100644 index 0000000..779e275 --- /dev/null +++ b/static/icons/align-right.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/align-start-horizontal.svg b/static/icons/align-start-horizontal.svg new file mode 100644 index 0000000..d80d2bf --- /dev/null +++ b/static/icons/align-start-horizontal.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/align-start-vertical.svg b/static/icons/align-start-vertical.svg new file mode 100644 index 0000000..7fbab04 --- /dev/null +++ b/static/icons/align-start-vertical.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/align-vertical-distribute-center.svg b/static/icons/align-vertical-distribute-center.svg new file mode 100644 index 0000000..2e227da --- /dev/null +++ b/static/icons/align-vertical-distribute-center.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/align-vertical-distribute-end.svg b/static/icons/align-vertical-distribute-end.svg new file mode 100644 index 0000000..a43fc0d --- /dev/null +++ b/static/icons/align-vertical-distribute-end.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/align-vertical-distribute-start.svg b/static/icons/align-vertical-distribute-start.svg new file mode 100644 index 0000000..ca342c3 --- /dev/null +++ b/static/icons/align-vertical-distribute-start.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/align-vertical-justify-center.svg b/static/icons/align-vertical-justify-center.svg new file mode 100644 index 0000000..c1ffbe8 --- /dev/null +++ b/static/icons/align-vertical-justify-center.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/align-vertical-justify-end.svg b/static/icons/align-vertical-justify-end.svg new file mode 100644 index 0000000..cd78255 --- /dev/null +++ b/static/icons/align-vertical-justify-end.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/align-vertical-justify-start.svg b/static/icons/align-vertical-justify-start.svg new file mode 100644 index 0000000..4f4bf69 --- /dev/null +++ b/static/icons/align-vertical-justify-start.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/align-vertical-space-around.svg b/static/icons/align-vertical-space-around.svg new file mode 100644 index 0000000..4ee0ec8 --- /dev/null +++ b/static/icons/align-vertical-space-around.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/align-vertical-space-between.svg b/static/icons/align-vertical-space-between.svg new file mode 100644 index 0000000..d6a6ca3 --- /dev/null +++ b/static/icons/align-vertical-space-between.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/anchor.svg b/static/icons/anchor.svg new file mode 100644 index 0000000..696a416 --- /dev/null +++ b/static/icons/anchor.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/angry.svg b/static/icons/angry.svg new file mode 100644 index 0000000..f2b05eb --- /dev/null +++ b/static/icons/angry.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/annoyed.svg b/static/icons/annoyed.svg new file mode 100644 index 0000000..3279b66 --- /dev/null +++ b/static/icons/annoyed.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/aperture.svg b/static/icons/aperture.svg new file mode 100644 index 0000000..15652da --- /dev/null +++ b/static/icons/aperture.svg @@ -0,0 +1,19 @@ + + + + + + + + + diff --git a/static/icons/apple.svg b/static/icons/apple.svg new file mode 100644 index 0000000..2d593c3 --- /dev/null +++ b/static/icons/apple.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/archive-restore.svg b/static/icons/archive-restore.svg new file mode 100644 index 0000000..95b7a27 --- /dev/null +++ b/static/icons/archive-restore.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/archive.svg b/static/icons/archive.svg new file mode 100644 index 0000000..12695a6 --- /dev/null +++ b/static/icons/archive.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/armchair.svg b/static/icons/armchair.svg new file mode 100644 index 0000000..3938cf7 --- /dev/null +++ b/static/icons/armchair.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/arrow-big-down.svg b/static/icons/arrow-big-down.svg new file mode 100644 index 0000000..af3f172 --- /dev/null +++ b/static/icons/arrow-big-down.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/arrow-big-left.svg b/static/icons/arrow-big-left.svg new file mode 100644 index 0000000..a8cacaf --- /dev/null +++ b/static/icons/arrow-big-left.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/arrow-big-right.svg b/static/icons/arrow-big-right.svg new file mode 100644 index 0000000..31a8473 --- /dev/null +++ b/static/icons/arrow-big-right.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/arrow-big-up.svg b/static/icons/arrow-big-up.svg new file mode 100644 index 0000000..9464eae --- /dev/null +++ b/static/icons/arrow-big-up.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/arrow-down-circle.svg b/static/icons/arrow-down-circle.svg new file mode 100644 index 0000000..eb9f1a0 --- /dev/null +++ b/static/icons/arrow-down-circle.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/arrow-down-left.svg b/static/icons/arrow-down-left.svg new file mode 100644 index 0000000..b9c6b8b --- /dev/null +++ b/static/icons/arrow-down-left.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/arrow-down-right.svg b/static/icons/arrow-down-right.svg new file mode 100644 index 0000000..2294d9b --- /dev/null +++ b/static/icons/arrow-down-right.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/arrow-down.svg b/static/icons/arrow-down.svg new file mode 100644 index 0000000..708e35f --- /dev/null +++ b/static/icons/arrow-down.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/arrow-left-circle.svg b/static/icons/arrow-left-circle.svg new file mode 100644 index 0000000..c1ba4a2 --- /dev/null +++ b/static/icons/arrow-left-circle.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/arrow-left-right.svg b/static/icons/arrow-left-right.svg new file mode 100644 index 0000000..2216947 --- /dev/null +++ b/static/icons/arrow-left-right.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/arrow-left.svg b/static/icons/arrow-left.svg new file mode 100644 index 0000000..ce06f88 --- /dev/null +++ b/static/icons/arrow-left.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/arrow-right-circle.svg b/static/icons/arrow-right-circle.svg new file mode 100644 index 0000000..55bec77 --- /dev/null +++ b/static/icons/arrow-right-circle.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/arrow-right.svg b/static/icons/arrow-right.svg new file mode 100644 index 0000000..5c5494f --- /dev/null +++ b/static/icons/arrow-right.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/arrow-up-circle.svg b/static/icons/arrow-up-circle.svg new file mode 100644 index 0000000..fd794fb --- /dev/null +++ b/static/icons/arrow-up-circle.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/arrow-up-down.svg b/static/icons/arrow-up-down.svg new file mode 100644 index 0000000..5861a33 --- /dev/null +++ b/static/icons/arrow-up-down.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/arrow-up-left.svg b/static/icons/arrow-up-left.svg new file mode 100644 index 0000000..170f9cc --- /dev/null +++ b/static/icons/arrow-up-left.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/arrow-up-right.svg b/static/icons/arrow-up-right.svg new file mode 100644 index 0000000..e2568f7 --- /dev/null +++ b/static/icons/arrow-up-right.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/arrow-up.svg b/static/icons/arrow-up.svg new file mode 100644 index 0000000..f1ff621 --- /dev/null +++ b/static/icons/arrow-up.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/asterisk.svg b/static/icons/asterisk.svg new file mode 100644 index 0000000..9629c6d --- /dev/null +++ b/static/icons/asterisk.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/at-sign.svg b/static/icons/at-sign.svg new file mode 100644 index 0000000..0b7fdfb --- /dev/null +++ b/static/icons/at-sign.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/award.svg b/static/icons/award.svg new file mode 100644 index 0000000..6b51368 --- /dev/null +++ b/static/icons/award.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/axe.svg b/static/icons/axe.svg new file mode 100644 index 0000000..2a67e4d --- /dev/null +++ b/static/icons/axe.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/axis-3d.svg b/static/icons/axis-3d.svg new file mode 100644 index 0000000..7185ef6 --- /dev/null +++ b/static/icons/axis-3d.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/baby.svg b/static/icons/baby.svg new file mode 100644 index 0000000..0939ba7 --- /dev/null +++ b/static/icons/baby.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/backpack.svg b/static/icons/backpack.svg new file mode 100644 index 0000000..217a28d --- /dev/null +++ b/static/icons/backpack.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/baggage-claim.svg b/static/icons/baggage-claim.svg new file mode 100644 index 0000000..6e858a5 --- /dev/null +++ b/static/icons/baggage-claim.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/banana.svg b/static/icons/banana.svg new file mode 100644 index 0000000..4156613 --- /dev/null +++ b/static/icons/banana.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/banknote.svg b/static/icons/banknote.svg new file mode 100644 index 0000000..af14b58 --- /dev/null +++ b/static/icons/banknote.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/bar-chart-2.svg b/static/icons/bar-chart-2.svg new file mode 100644 index 0000000..5463d30 --- /dev/null +++ b/static/icons/bar-chart-2.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/bar-chart-3.svg b/static/icons/bar-chart-3.svg new file mode 100644 index 0000000..f049a03 --- /dev/null +++ b/static/icons/bar-chart-3.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/bar-chart-4.svg b/static/icons/bar-chart-4.svg new file mode 100644 index 0000000..f44017f --- /dev/null +++ b/static/icons/bar-chart-4.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/bar-chart-horizontal.svg b/static/icons/bar-chart-horizontal.svg new file mode 100644 index 0000000..886f6b4 --- /dev/null +++ b/static/icons/bar-chart-horizontal.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/bar-chart.svg b/static/icons/bar-chart.svg new file mode 100644 index 0000000..103ce11 --- /dev/null +++ b/static/icons/bar-chart.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/baseline.svg b/static/icons/baseline.svg new file mode 100644 index 0000000..976c18b --- /dev/null +++ b/static/icons/baseline.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/bath.svg b/static/icons/bath.svg new file mode 100644 index 0000000..707ea59 --- /dev/null +++ b/static/icons/bath.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/battery-charging.svg b/static/icons/battery-charging.svg new file mode 100644 index 0000000..d7fa254 --- /dev/null +++ b/static/icons/battery-charging.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/battery-full.svg b/static/icons/battery-full.svg new file mode 100644 index 0000000..032e316 --- /dev/null +++ b/static/icons/battery-full.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/battery-low.svg b/static/icons/battery-low.svg new file mode 100644 index 0000000..1e8c86c --- /dev/null +++ b/static/icons/battery-low.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/battery-medium.svg b/static/icons/battery-medium.svg new file mode 100644 index 0000000..77ed447 --- /dev/null +++ b/static/icons/battery-medium.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/battery.svg b/static/icons/battery.svg new file mode 100644 index 0000000..b3546de --- /dev/null +++ b/static/icons/battery.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/beaker.svg b/static/icons/beaker.svg new file mode 100644 index 0000000..e6f7bb2 --- /dev/null +++ b/static/icons/beaker.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/bean-off.svg b/static/icons/bean-off.svg new file mode 100644 index 0000000..17dcccc --- /dev/null +++ b/static/icons/bean-off.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/bean.svg b/static/icons/bean.svg new file mode 100644 index 0000000..e9135e1 --- /dev/null +++ b/static/icons/bean.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/bed-double.svg b/static/icons/bed-double.svg new file mode 100644 index 0000000..e47647d --- /dev/null +++ b/static/icons/bed-double.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/bed-single.svg b/static/icons/bed-single.svg new file mode 100644 index 0000000..903361e --- /dev/null +++ b/static/icons/bed-single.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/bed.svg b/static/icons/bed.svg new file mode 100644 index 0000000..492513b --- /dev/null +++ b/static/icons/bed.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/beer.svg b/static/icons/beer.svg new file mode 100644 index 0000000..5a8a575 --- /dev/null +++ b/static/icons/beer.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/bell-minus.svg b/static/icons/bell-minus.svg new file mode 100644 index 0000000..7551dcf --- /dev/null +++ b/static/icons/bell-minus.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/bell-off.svg b/static/icons/bell-off.svg new file mode 100644 index 0000000..582b5b4 --- /dev/null +++ b/static/icons/bell-off.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/bell-plus.svg b/static/icons/bell-plus.svg new file mode 100644 index 0000000..08dc7f5 --- /dev/null +++ b/static/icons/bell-plus.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/bell-ring.svg b/static/icons/bell-ring.svg new file mode 100644 index 0000000..f1d0213 --- /dev/null +++ b/static/icons/bell-ring.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/bell.svg b/static/icons/bell.svg new file mode 100644 index 0000000..464fce5 --- /dev/null +++ b/static/icons/bell.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/bike.svg b/static/icons/bike.svg new file mode 100644 index 0000000..d932cac --- /dev/null +++ b/static/icons/bike.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/binary.svg b/static/icons/binary.svg new file mode 100644 index 0000000..b92a397 --- /dev/null +++ b/static/icons/binary.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/bitcoin.svg b/static/icons/bitcoin.svg new file mode 100644 index 0000000..e7346fa --- /dev/null +++ b/static/icons/bitcoin.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/bluetooth-connected.svg b/static/icons/bluetooth-connected.svg new file mode 100644 index 0000000..508ad44 --- /dev/null +++ b/static/icons/bluetooth-connected.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/bluetooth-off.svg b/static/icons/bluetooth-off.svg new file mode 100644 index 0000000..633256d --- /dev/null +++ b/static/icons/bluetooth-off.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/bluetooth-searching.svg b/static/icons/bluetooth-searching.svg new file mode 100644 index 0000000..001e6d5 --- /dev/null +++ b/static/icons/bluetooth-searching.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/bluetooth.svg b/static/icons/bluetooth.svg new file mode 100644 index 0000000..e759115 --- /dev/null +++ b/static/icons/bluetooth.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/bold.svg b/static/icons/bold.svg new file mode 100644 index 0000000..42bc5f1 --- /dev/null +++ b/static/icons/bold.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/bomb.svg b/static/icons/bomb.svg new file mode 100644 index 0000000..0021680 --- /dev/null +++ b/static/icons/bomb.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/bone.svg b/static/icons/bone.svg new file mode 100644 index 0000000..bba0135 --- /dev/null +++ b/static/icons/bone.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/book-open-check.svg b/static/icons/book-open-check.svg new file mode 100644 index 0000000..f376746 --- /dev/null +++ b/static/icons/book-open-check.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/book-open.svg b/static/icons/book-open.svg new file mode 100644 index 0000000..c0a279d --- /dev/null +++ b/static/icons/book-open.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/book.svg b/static/icons/book.svg new file mode 100644 index 0000000..3becfa4 --- /dev/null +++ b/static/icons/book.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/bookmark-minus.svg b/static/icons/bookmark-minus.svg new file mode 100644 index 0000000..30e1398 --- /dev/null +++ b/static/icons/bookmark-minus.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/bookmark-plus.svg b/static/icons/bookmark-plus.svg new file mode 100644 index 0000000..1fffdf5 --- /dev/null +++ b/static/icons/bookmark-plus.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/bookmark.svg b/static/icons/bookmark.svg new file mode 100644 index 0000000..6d6a7c0 --- /dev/null +++ b/static/icons/bookmark.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/bot.svg b/static/icons/bot.svg new file mode 100644 index 0000000..4bce681 --- /dev/null +++ b/static/icons/bot.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/box-select.svg b/static/icons/box-select.svg new file mode 100644 index 0000000..f0822a3 --- /dev/null +++ b/static/icons/box-select.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + diff --git a/static/icons/box.svg b/static/icons/box.svg new file mode 100644 index 0000000..4f7fca3 --- /dev/null +++ b/static/icons/box.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/boxes.svg b/static/icons/boxes.svg new file mode 100644 index 0000000..fddb08c --- /dev/null +++ b/static/icons/boxes.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + diff --git a/static/icons/briefcase.svg b/static/icons/briefcase.svg new file mode 100644 index 0000000..4178c4e --- /dev/null +++ b/static/icons/briefcase.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/brush.svg b/static/icons/brush.svg new file mode 100644 index 0000000..6613483 --- /dev/null +++ b/static/icons/brush.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/bug.svg b/static/icons/bug.svg new file mode 100644 index 0000000..f4be113 --- /dev/null +++ b/static/icons/bug.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + diff --git a/static/icons/building-2.svg b/static/icons/building-2.svg new file mode 100644 index 0000000..a9161eb --- /dev/null +++ b/static/icons/building-2.svg @@ -0,0 +1,19 @@ + + + + + + + + + diff --git a/static/icons/building.svg b/static/icons/building.svg new file mode 100644 index 0000000..1a010d7 --- /dev/null +++ b/static/icons/building.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + diff --git a/static/icons/bus.svg b/static/icons/bus.svg new file mode 100644 index 0000000..dd21ed1 --- /dev/null +++ b/static/icons/bus.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/cake.svg b/static/icons/cake.svg new file mode 100644 index 0000000..175b143 --- /dev/null +++ b/static/icons/cake.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + diff --git a/static/icons/calculator.svg b/static/icons/calculator.svg new file mode 100644 index 0000000..c10484d --- /dev/null +++ b/static/icons/calculator.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + diff --git a/static/icons/calendar-check-2.svg b/static/icons/calendar-check-2.svg new file mode 100644 index 0000000..7fbce61 --- /dev/null +++ b/static/icons/calendar-check-2.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/calendar-check.svg b/static/icons/calendar-check.svg new file mode 100644 index 0000000..11de0fd --- /dev/null +++ b/static/icons/calendar-check.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/calendar-clock.svg b/static/icons/calendar-clock.svg new file mode 100644 index 0000000..a1c19bd --- /dev/null +++ b/static/icons/calendar-clock.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/calendar-days.svg b/static/icons/calendar-days.svg new file mode 100644 index 0000000..c7b2667 --- /dev/null +++ b/static/icons/calendar-days.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + diff --git a/static/icons/calendar-heart.svg b/static/icons/calendar-heart.svg new file mode 100644 index 0000000..18bb1f7 --- /dev/null +++ b/static/icons/calendar-heart.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/calendar-minus.svg b/static/icons/calendar-minus.svg new file mode 100644 index 0000000..1cb7cd2 --- /dev/null +++ b/static/icons/calendar-minus.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/calendar-off.svg b/static/icons/calendar-off.svg new file mode 100644 index 0000000..b3aaa40 --- /dev/null +++ b/static/icons/calendar-off.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/calendar-plus.svg b/static/icons/calendar-plus.svg new file mode 100644 index 0000000..b8d6946 --- /dev/null +++ b/static/icons/calendar-plus.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/calendar-range.svg b/static/icons/calendar-range.svg new file mode 100644 index 0000000..b4cf879 --- /dev/null +++ b/static/icons/calendar-range.svg @@ -0,0 +1,20 @@ + + + + + + + + + + diff --git a/static/icons/calendar-search.svg b/static/icons/calendar-search.svg new file mode 100644 index 0000000..5ad25ae --- /dev/null +++ b/static/icons/calendar-search.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/calendar-x-2.svg b/static/icons/calendar-x-2.svg new file mode 100644 index 0000000..bd86174 --- /dev/null +++ b/static/icons/calendar-x-2.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/calendar-x.svg b/static/icons/calendar-x.svg new file mode 100644 index 0000000..0cbb311 --- /dev/null +++ b/static/icons/calendar-x.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/calendar.svg b/static/icons/calendar.svg new file mode 100644 index 0000000..c002b85 --- /dev/null +++ b/static/icons/calendar.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/camera-off.svg b/static/icons/camera-off.svg new file mode 100644 index 0000000..db9ba74 --- /dev/null +++ b/static/icons/camera-off.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/camera.svg b/static/icons/camera.svg new file mode 100644 index 0000000..155a04c --- /dev/null +++ b/static/icons/camera.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/candy-off.svg b/static/icons/candy-off.svg new file mode 100644 index 0000000..0416ba4 --- /dev/null +++ b/static/icons/candy-off.svg @@ -0,0 +1,20 @@ + + + + + + + + + + diff --git a/static/icons/candy.svg b/static/icons/candy.svg new file mode 100644 index 0000000..a59286c --- /dev/null +++ b/static/icons/candy.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/car.svg b/static/icons/car.svg new file mode 100644 index 0000000..2e89572 --- /dev/null +++ b/static/icons/car.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/carrot.svg b/static/icons/carrot.svg new file mode 100644 index 0000000..6cad8b2 --- /dev/null +++ b/static/icons/carrot.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/cast.svg b/static/icons/cast.svg new file mode 100644 index 0000000..51249e5 --- /dev/null +++ b/static/icons/cast.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/cat.svg b/static/icons/cat.svg new file mode 100644 index 0000000..c4f2b75 --- /dev/null +++ b/static/icons/cat.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/check-check.svg b/static/icons/check-check.svg new file mode 100644 index 0000000..f1c28ab --- /dev/null +++ b/static/icons/check-check.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/check-circle-2.svg b/static/icons/check-circle-2.svg new file mode 100644 index 0000000..903d759 --- /dev/null +++ b/static/icons/check-circle-2.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/check-circle.svg b/static/icons/check-circle.svg new file mode 100644 index 0000000..418f300 --- /dev/null +++ b/static/icons/check-circle.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/check-square.svg b/static/icons/check-square.svg new file mode 100644 index 0000000..7f8fe6b --- /dev/null +++ b/static/icons/check-square.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/check.svg b/static/icons/check.svg new file mode 100644 index 0000000..80aaf84 --- /dev/null +++ b/static/icons/check.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/chef-hat.svg b/static/icons/chef-hat.svg new file mode 100644 index 0000000..ac18b7b --- /dev/null +++ b/static/icons/chef-hat.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/cherry.svg b/static/icons/cherry.svg new file mode 100644 index 0000000..e713ce1 --- /dev/null +++ b/static/icons/cherry.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/chevron-down.svg b/static/icons/chevron-down.svg new file mode 100644 index 0000000..bda8e89 --- /dev/null +++ b/static/icons/chevron-down.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/chevron-first.svg b/static/icons/chevron-first.svg new file mode 100644 index 0000000..b34973c --- /dev/null +++ b/static/icons/chevron-first.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/chevron-last.svg b/static/icons/chevron-last.svg new file mode 100644 index 0000000..2204009 --- /dev/null +++ b/static/icons/chevron-last.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/chevron-left.svg b/static/icons/chevron-left.svg new file mode 100644 index 0000000..5af8840 --- /dev/null +++ b/static/icons/chevron-left.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/chevron-right.svg b/static/icons/chevron-right.svg new file mode 100644 index 0000000..fde2d64 --- /dev/null +++ b/static/icons/chevron-right.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/chevron-up.svg b/static/icons/chevron-up.svg new file mode 100644 index 0000000..085188c --- /dev/null +++ b/static/icons/chevron-up.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/chevrons-down-up.svg b/static/icons/chevrons-down-up.svg new file mode 100644 index 0000000..955914e --- /dev/null +++ b/static/icons/chevrons-down-up.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/chevrons-down.svg b/static/icons/chevrons-down.svg new file mode 100644 index 0000000..fac1aef --- /dev/null +++ b/static/icons/chevrons-down.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/chevrons-left-right.svg b/static/icons/chevrons-left-right.svg new file mode 100644 index 0000000..c19b695 --- /dev/null +++ b/static/icons/chevrons-left-right.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/chevrons-left.svg b/static/icons/chevrons-left.svg new file mode 100644 index 0000000..712f4bc --- /dev/null +++ b/static/icons/chevrons-left.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/chevrons-right-left.svg b/static/icons/chevrons-right-left.svg new file mode 100644 index 0000000..b60920f --- /dev/null +++ b/static/icons/chevrons-right-left.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/chevrons-right.svg b/static/icons/chevrons-right.svg new file mode 100644 index 0000000..1794243 --- /dev/null +++ b/static/icons/chevrons-right.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/chevrons-up-down.svg b/static/icons/chevrons-up-down.svg new file mode 100644 index 0000000..bd8833d --- /dev/null +++ b/static/icons/chevrons-up-down.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/chevrons-up.svg b/static/icons/chevrons-up.svg new file mode 100644 index 0000000..7e38fb5 --- /dev/null +++ b/static/icons/chevrons-up.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/chrome.svg b/static/icons/chrome.svg new file mode 100644 index 0000000..7b4bc1a --- /dev/null +++ b/static/icons/chrome.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/cigarette-off.svg b/static/icons/cigarette-off.svg new file mode 100644 index 0000000..84b00b0 --- /dev/null +++ b/static/icons/cigarette-off.svg @@ -0,0 +1,19 @@ + + + + + + + + + diff --git a/static/icons/cigarette.svg b/static/icons/cigarette.svg new file mode 100644 index 0000000..eade385 --- /dev/null +++ b/static/icons/cigarette.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/circle-dot.svg b/static/icons/circle-dot.svg new file mode 100644 index 0000000..357549b --- /dev/null +++ b/static/icons/circle-dot.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/circle-ellipsis.svg b/static/icons/circle-ellipsis.svg new file mode 100644 index 0000000..5efa1b3 --- /dev/null +++ b/static/icons/circle-ellipsis.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/circle-slashed.svg b/static/icons/circle-slashed.svg new file mode 100644 index 0000000..fc6a046 --- /dev/null +++ b/static/icons/circle-slashed.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/circle.svg b/static/icons/circle.svg new file mode 100644 index 0000000..1717bb4 --- /dev/null +++ b/static/icons/circle.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/citrus.svg b/static/icons/citrus.svg new file mode 100644 index 0000000..1bc6580 --- /dev/null +++ b/static/icons/citrus.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/clapperboard.svg b/static/icons/clapperboard.svg new file mode 100644 index 0000000..3f91059 --- /dev/null +++ b/static/icons/clapperboard.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/clipboard-check.svg b/static/icons/clipboard-check.svg new file mode 100644 index 0000000..8d6bcb6 --- /dev/null +++ b/static/icons/clipboard-check.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/clipboard-copy.svg b/static/icons/clipboard-copy.svg new file mode 100644 index 0000000..83f6954 --- /dev/null +++ b/static/icons/clipboard-copy.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/clipboard-edit.svg b/static/icons/clipboard-edit.svg new file mode 100644 index 0000000..ee8f55f --- /dev/null +++ b/static/icons/clipboard-edit.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/clipboard-list.svg b/static/icons/clipboard-list.svg new file mode 100644 index 0000000..0ae6032 --- /dev/null +++ b/static/icons/clipboard-list.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/clipboard-signature.svg b/static/icons/clipboard-signature.svg new file mode 100644 index 0000000..5dfd4df --- /dev/null +++ b/static/icons/clipboard-signature.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/clipboard-type.svg b/static/icons/clipboard-type.svg new file mode 100644 index 0000000..95e6897 --- /dev/null +++ b/static/icons/clipboard-type.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/clipboard-x.svg b/static/icons/clipboard-x.svg new file mode 100644 index 0000000..e5641c3 --- /dev/null +++ b/static/icons/clipboard-x.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/clipboard.svg b/static/icons/clipboard.svg new file mode 100644 index 0000000..f61cea7 --- /dev/null +++ b/static/icons/clipboard.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/clock-1.svg b/static/icons/clock-1.svg new file mode 100644 index 0000000..154c5b7 --- /dev/null +++ b/static/icons/clock-1.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/clock-10.svg b/static/icons/clock-10.svg new file mode 100644 index 0000000..ca654e2 --- /dev/null +++ b/static/icons/clock-10.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/clock-11.svg b/static/icons/clock-11.svg new file mode 100644 index 0000000..7d015ad --- /dev/null +++ b/static/icons/clock-11.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/clock-12.svg b/static/icons/clock-12.svg new file mode 100644 index 0000000..910bccf --- /dev/null +++ b/static/icons/clock-12.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/clock-2.svg b/static/icons/clock-2.svg new file mode 100644 index 0000000..75c848a --- /dev/null +++ b/static/icons/clock-2.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/clock-3.svg b/static/icons/clock-3.svg new file mode 100644 index 0000000..4a25e0f --- /dev/null +++ b/static/icons/clock-3.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/clock-4.svg b/static/icons/clock-4.svg new file mode 100644 index 0000000..8ce25b2 --- /dev/null +++ b/static/icons/clock-4.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/clock-5.svg b/static/icons/clock-5.svg new file mode 100644 index 0000000..0f9081a --- /dev/null +++ b/static/icons/clock-5.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/clock-6.svg b/static/icons/clock-6.svg new file mode 100644 index 0000000..5b0f26f --- /dev/null +++ b/static/icons/clock-6.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/clock-7.svg b/static/icons/clock-7.svg new file mode 100644 index 0000000..7fd365a --- /dev/null +++ b/static/icons/clock-7.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/clock-8.svg b/static/icons/clock-8.svg new file mode 100644 index 0000000..602695f --- /dev/null +++ b/static/icons/clock-8.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/clock-9.svg b/static/icons/clock-9.svg new file mode 100644 index 0000000..8e6e3fa --- /dev/null +++ b/static/icons/clock-9.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/clock.svg b/static/icons/clock.svg new file mode 100644 index 0000000..8ce25b2 --- /dev/null +++ b/static/icons/clock.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/cloud-cog.svg b/static/icons/cloud-cog.svg new file mode 100644 index 0000000..2c3a938 --- /dev/null +++ b/static/icons/cloud-cog.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + diff --git a/static/icons/cloud-drizzle.svg b/static/icons/cloud-drizzle.svg new file mode 100644 index 0000000..01670e3 --- /dev/null +++ b/static/icons/cloud-drizzle.svg @@ -0,0 +1,19 @@ + + + + + + + + + diff --git a/static/icons/cloud-fog.svg b/static/icons/cloud-fog.svg new file mode 100644 index 0000000..aee9fc0 --- /dev/null +++ b/static/icons/cloud-fog.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/cloud-hail.svg b/static/icons/cloud-hail.svg new file mode 100644 index 0000000..3158de5 --- /dev/null +++ b/static/icons/cloud-hail.svg @@ -0,0 +1,19 @@ + + + + + + + + + diff --git a/static/icons/cloud-lightning.svg b/static/icons/cloud-lightning.svg new file mode 100644 index 0000000..3f11bb3 --- /dev/null +++ b/static/icons/cloud-lightning.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/cloud-moon-rain.svg b/static/icons/cloud-moon-rain.svg new file mode 100644 index 0000000..d76f103 --- /dev/null +++ b/static/icons/cloud-moon-rain.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/cloud-moon.svg b/static/icons/cloud-moon.svg new file mode 100644 index 0000000..0d205e8 --- /dev/null +++ b/static/icons/cloud-moon.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/cloud-off.svg b/static/icons/cloud-off.svg new file mode 100644 index 0000000..6bc830e --- /dev/null +++ b/static/icons/cloud-off.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/cloud-rain-wind.svg b/static/icons/cloud-rain-wind.svg new file mode 100644 index 0000000..f6a4560 --- /dev/null +++ b/static/icons/cloud-rain-wind.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/cloud-rain.svg b/static/icons/cloud-rain.svg new file mode 100644 index 0000000..2a79fcf --- /dev/null +++ b/static/icons/cloud-rain.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/cloud-snow.svg b/static/icons/cloud-snow.svg new file mode 100644 index 0000000..53a3ffa --- /dev/null +++ b/static/icons/cloud-snow.svg @@ -0,0 +1,19 @@ + + + + + + + + + diff --git a/static/icons/cloud-sun-rain.svg b/static/icons/cloud-sun-rain.svg new file mode 100644 index 0000000..b3de2ba --- /dev/null +++ b/static/icons/cloud-sun-rain.svg @@ -0,0 +1,20 @@ + + + + + + + + + + diff --git a/static/icons/cloud-sun.svg b/static/icons/cloud-sun.svg new file mode 100644 index 0000000..8d7705d --- /dev/null +++ b/static/icons/cloud-sun.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/cloud.svg b/static/icons/cloud.svg new file mode 100644 index 0000000..96c52fc --- /dev/null +++ b/static/icons/cloud.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/cloudy.svg b/static/icons/cloudy.svg new file mode 100644 index 0000000..088fa86 --- /dev/null +++ b/static/icons/cloudy.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/clover.svg b/static/icons/clover.svg new file mode 100644 index 0000000..9880c30 --- /dev/null +++ b/static/icons/clover.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/code-2.svg b/static/icons/code-2.svg new file mode 100644 index 0000000..74f2299 --- /dev/null +++ b/static/icons/code-2.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/code.svg b/static/icons/code.svg new file mode 100644 index 0000000..da0f522 --- /dev/null +++ b/static/icons/code.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/codepen.svg b/static/icons/codepen.svg new file mode 100644 index 0000000..2f350f1 --- /dev/null +++ b/static/icons/codepen.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/codesandbox.svg b/static/icons/codesandbox.svg new file mode 100644 index 0000000..db203af --- /dev/null +++ b/static/icons/codesandbox.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/coffee.svg b/static/icons/coffee.svg new file mode 100644 index 0000000..c1aa9cf --- /dev/null +++ b/static/icons/coffee.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/cog.svg b/static/icons/cog.svg new file mode 100644 index 0000000..5db1c80 --- /dev/null +++ b/static/icons/cog.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + diff --git a/static/icons/coins.svg b/static/icons/coins.svg new file mode 100644 index 0000000..063bdb2 --- /dev/null +++ b/static/icons/coins.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/columns.svg b/static/icons/columns.svg new file mode 100644 index 0000000..9bc777f --- /dev/null +++ b/static/icons/columns.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/command.svg b/static/icons/command.svg new file mode 100644 index 0000000..0817c6c --- /dev/null +++ b/static/icons/command.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/compass.svg b/static/icons/compass.svg new file mode 100644 index 0000000..5550490 --- /dev/null +++ b/static/icons/compass.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/component.svg b/static/icons/component.svg new file mode 100644 index 0000000..e7f1b43 --- /dev/null +++ b/static/icons/component.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/concierge-bell.svg b/static/icons/concierge-bell.svg new file mode 100644 index 0000000..0f49fa9 --- /dev/null +++ b/static/icons/concierge-bell.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/contact.svg b/static/icons/contact.svg new file mode 100644 index 0000000..6c8d8f8 --- /dev/null +++ b/static/icons/contact.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/contrast.svg b/static/icons/contrast.svg new file mode 100644 index 0000000..334f528 --- /dev/null +++ b/static/icons/contrast.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/cookie.svg b/static/icons/cookie.svg new file mode 100644 index 0000000..1bdedba --- /dev/null +++ b/static/icons/cookie.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/copy.svg b/static/icons/copy.svg new file mode 100644 index 0000000..c8d4956 --- /dev/null +++ b/static/icons/copy.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/copyleft.svg b/static/icons/copyleft.svg new file mode 100644 index 0000000..7048bbb --- /dev/null +++ b/static/icons/copyleft.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/copyright.svg b/static/icons/copyright.svg new file mode 100644 index 0000000..d151d9e --- /dev/null +++ b/static/icons/copyright.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/corner-down-left.svg b/static/icons/corner-down-left.svg new file mode 100644 index 0000000..71696a4 --- /dev/null +++ b/static/icons/corner-down-left.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/corner-down-right.svg b/static/icons/corner-down-right.svg new file mode 100644 index 0000000..dd9f7a4 --- /dev/null +++ b/static/icons/corner-down-right.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/corner-left-down.svg b/static/icons/corner-left-down.svg new file mode 100644 index 0000000..5c44b7d --- /dev/null +++ b/static/icons/corner-left-down.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/corner-left-up.svg b/static/icons/corner-left-up.svg new file mode 100644 index 0000000..cd75292 --- /dev/null +++ b/static/icons/corner-left-up.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/corner-right-down.svg b/static/icons/corner-right-down.svg new file mode 100644 index 0000000..aa4690a --- /dev/null +++ b/static/icons/corner-right-down.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/corner-right-up.svg b/static/icons/corner-right-up.svg new file mode 100644 index 0000000..fd80c2c --- /dev/null +++ b/static/icons/corner-right-up.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/corner-up-left.svg b/static/icons/corner-up-left.svg new file mode 100644 index 0000000..76b5bfb --- /dev/null +++ b/static/icons/corner-up-left.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/corner-up-right.svg b/static/icons/corner-up-right.svg new file mode 100644 index 0000000..755cbfd --- /dev/null +++ b/static/icons/corner-up-right.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/cpu.svg b/static/icons/cpu.svg new file mode 100644 index 0000000..8aa6bb9 --- /dev/null +++ b/static/icons/cpu.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + diff --git a/static/icons/credit-card.svg b/static/icons/credit-card.svg new file mode 100644 index 0000000..5a081c9 --- /dev/null +++ b/static/icons/credit-card.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/croissant.svg b/static/icons/croissant.svg new file mode 100644 index 0000000..7fea7ea --- /dev/null +++ b/static/icons/croissant.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/crop.svg b/static/icons/crop.svg new file mode 100644 index 0000000..4ca1e6f --- /dev/null +++ b/static/icons/crop.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/cross.svg b/static/icons/cross.svg new file mode 100644 index 0000000..c0eb300 --- /dev/null +++ b/static/icons/cross.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/crosshair.svg b/static/icons/crosshair.svg new file mode 100644 index 0000000..2c44849 --- /dev/null +++ b/static/icons/crosshair.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/crown.svg b/static/icons/crown.svg new file mode 100644 index 0000000..d61ac2d --- /dev/null +++ b/static/icons/crown.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/cup-soda.svg b/static/icons/cup-soda.svg new file mode 100644 index 0000000..f745c7a --- /dev/null +++ b/static/icons/cup-soda.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/curly-braces.svg b/static/icons/curly-braces.svg new file mode 100644 index 0000000..d56b1dc --- /dev/null +++ b/static/icons/curly-braces.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/currency.svg b/static/icons/currency.svg new file mode 100644 index 0000000..928a9e2 --- /dev/null +++ b/static/icons/currency.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/database.svg b/static/icons/database.svg new file mode 100644 index 0000000..0afca6b --- /dev/null +++ b/static/icons/database.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/delete.svg b/static/icons/delete.svg new file mode 100644 index 0000000..53858ee --- /dev/null +++ b/static/icons/delete.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/diamond.svg b/static/icons/diamond.svg new file mode 100644 index 0000000..87581fe --- /dev/null +++ b/static/icons/diamond.svg @@ -0,0 +1,20 @@ + + + diff --git a/static/icons/dice-1.svg b/static/icons/dice-1.svg new file mode 100644 index 0000000..cd1846a --- /dev/null +++ b/static/icons/dice-1.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/dice-2.svg b/static/icons/dice-2.svg new file mode 100644 index 0000000..09e2066 --- /dev/null +++ b/static/icons/dice-2.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/dice-3.svg b/static/icons/dice-3.svg new file mode 100644 index 0000000..46e7f1b --- /dev/null +++ b/static/icons/dice-3.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/dice-4.svg b/static/icons/dice-4.svg new file mode 100644 index 0000000..53495a9 --- /dev/null +++ b/static/icons/dice-4.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/dice-5.svg b/static/icons/dice-5.svg new file mode 100644 index 0000000..256ee64 --- /dev/null +++ b/static/icons/dice-5.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/dice-6.svg b/static/icons/dice-6.svg new file mode 100644 index 0000000..3106d1c --- /dev/null +++ b/static/icons/dice-6.svg @@ -0,0 +1,19 @@ + + + + + + + + + diff --git a/static/icons/dices.svg b/static/icons/dices.svg new file mode 100644 index 0000000..e5f4b0d --- /dev/null +++ b/static/icons/dices.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/diff.svg b/static/icons/diff.svg new file mode 100644 index 0000000..ac0307b --- /dev/null +++ b/static/icons/diff.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/disc.svg b/static/icons/disc.svg new file mode 100644 index 0000000..df07c00 --- /dev/null +++ b/static/icons/disc.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/divide-circle.svg b/static/icons/divide-circle.svg new file mode 100644 index 0000000..fc1b2ae --- /dev/null +++ b/static/icons/divide-circle.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/divide-square.svg b/static/icons/divide-square.svg new file mode 100644 index 0000000..bec8c4a --- /dev/null +++ b/static/icons/divide-square.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/divide.svg b/static/icons/divide.svg new file mode 100644 index 0000000..1f4b79d --- /dev/null +++ b/static/icons/divide.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/dna-off.svg b/static/icons/dna-off.svg new file mode 100644 index 0000000..70653e1 --- /dev/null +++ b/static/icons/dna-off.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + diff --git a/static/icons/dna.svg b/static/icons/dna.svg new file mode 100644 index 0000000..4b496b8 --- /dev/null +++ b/static/icons/dna.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + diff --git a/static/icons/dog.svg b/static/icons/dog.svg new file mode 100644 index 0000000..ad6591a --- /dev/null +++ b/static/icons/dog.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/dollar-sign.svg b/static/icons/dollar-sign.svg new file mode 100644 index 0000000..6987c9b --- /dev/null +++ b/static/icons/dollar-sign.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/download-cloud.svg b/static/icons/download-cloud.svg new file mode 100644 index 0000000..045af58 --- /dev/null +++ b/static/icons/download-cloud.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/download.svg b/static/icons/download.svg new file mode 100644 index 0000000..6865ea3 --- /dev/null +++ b/static/icons/download.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/dribbble.svg b/static/icons/dribbble.svg new file mode 100644 index 0000000..18d2e1f --- /dev/null +++ b/static/icons/dribbble.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/droplet.svg b/static/icons/droplet.svg new file mode 100644 index 0000000..36aa334 --- /dev/null +++ b/static/icons/droplet.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/droplets.svg b/static/icons/droplets.svg new file mode 100644 index 0000000..b531e9c --- /dev/null +++ b/static/icons/droplets.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/drumstick.svg b/static/icons/drumstick.svg new file mode 100644 index 0000000..259fd75 --- /dev/null +++ b/static/icons/drumstick.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/dumbbell.svg b/static/icons/dumbbell.svg new file mode 100644 index 0000000..9a8c14e --- /dev/null +++ b/static/icons/dumbbell.svg @@ -0,0 +1,19 @@ + + + + + + + + + diff --git a/static/icons/ear-off.svg b/static/icons/ear-off.svg new file mode 100644 index 0000000..6500235 --- /dev/null +++ b/static/icons/ear-off.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/ear.svg b/static/icons/ear.svg new file mode 100644 index 0000000..1d2b7fb --- /dev/null +++ b/static/icons/ear.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/edit-2.svg b/static/icons/edit-2.svg new file mode 100644 index 0000000..dcd4409 --- /dev/null +++ b/static/icons/edit-2.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/edit-3.svg b/static/icons/edit-3.svg new file mode 100644 index 0000000..70cfb53 --- /dev/null +++ b/static/icons/edit-3.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/edit.svg b/static/icons/edit.svg new file mode 100644 index 0000000..559141b --- /dev/null +++ b/static/icons/edit.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/egg-fried.svg b/static/icons/egg-fried.svg new file mode 100644 index 0000000..240883b --- /dev/null +++ b/static/icons/egg-fried.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/egg-off.svg b/static/icons/egg-off.svg new file mode 100644 index 0000000..e06179f --- /dev/null +++ b/static/icons/egg-off.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/egg.svg b/static/icons/egg.svg new file mode 100644 index 0000000..357deaf --- /dev/null +++ b/static/icons/egg.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/equal-not.svg b/static/icons/equal-not.svg new file mode 100644 index 0000000..9525f33 --- /dev/null +++ b/static/icons/equal-not.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/equal.svg b/static/icons/equal.svg new file mode 100644 index 0000000..2358e0a --- /dev/null +++ b/static/icons/equal.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/eraser.svg b/static/icons/eraser.svg new file mode 100644 index 0000000..4ff842c --- /dev/null +++ b/static/icons/eraser.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/euro.svg b/static/icons/euro.svg new file mode 100644 index 0000000..9889770 --- /dev/null +++ b/static/icons/euro.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/expand.svg b/static/icons/expand.svg new file mode 100644 index 0000000..2fd8475 --- /dev/null +++ b/static/icons/expand.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/external-link.svg b/static/icons/external-link.svg new file mode 100644 index 0000000..537b731 --- /dev/null +++ b/static/icons/external-link.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/eye-off.svg b/static/icons/eye-off.svg new file mode 100644 index 0000000..feabed1 --- /dev/null +++ b/static/icons/eye-off.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/eye.svg b/static/icons/eye.svg new file mode 100644 index 0000000..663693c --- /dev/null +++ b/static/icons/eye.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/facebook.svg b/static/icons/facebook.svg new file mode 100644 index 0000000..8be7109 --- /dev/null +++ b/static/icons/facebook.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/factory.svg b/static/icons/factory.svg new file mode 100644 index 0000000..fd673ee --- /dev/null +++ b/static/icons/factory.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/fan.svg b/static/icons/fan.svg new file mode 100644 index 0000000..5b1ecb8 --- /dev/null +++ b/static/icons/fan.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/fast-forward.svg b/static/icons/fast-forward.svg new file mode 100644 index 0000000..6c8409c --- /dev/null +++ b/static/icons/fast-forward.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/feather.svg b/static/icons/feather.svg new file mode 100644 index 0000000..40d7ef8 --- /dev/null +++ b/static/icons/feather.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/figma.svg b/static/icons/figma.svg new file mode 100644 index 0000000..cfc932a --- /dev/null +++ b/static/icons/figma.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/file-archive.svg b/static/icons/file-archive.svg new file mode 100644 index 0000000..00486c0 --- /dev/null +++ b/static/icons/file-archive.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/file-audio-2.svg b/static/icons/file-audio-2.svg new file mode 100644 index 0000000..5386d89 --- /dev/null +++ b/static/icons/file-audio-2.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/file-audio.svg b/static/icons/file-audio.svg new file mode 100644 index 0000000..51a8950 --- /dev/null +++ b/static/icons/file-audio.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/file-axis-3d.svg b/static/icons/file-axis-3d.svg new file mode 100644 index 0000000..e3add4a --- /dev/null +++ b/static/icons/file-axis-3d.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/file-badge-2.svg b/static/icons/file-badge-2.svg new file mode 100644 index 0000000..5aef3c4 --- /dev/null +++ b/static/icons/file-badge-2.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/file-badge.svg b/static/icons/file-badge.svg new file mode 100644 index 0000000..a5c68e9 --- /dev/null +++ b/static/icons/file-badge.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/file-bar-chart-2.svg b/static/icons/file-bar-chart-2.svg new file mode 100644 index 0000000..db3a136 --- /dev/null +++ b/static/icons/file-bar-chart-2.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/file-bar-chart.svg b/static/icons/file-bar-chart.svg new file mode 100644 index 0000000..40f679a --- /dev/null +++ b/static/icons/file-bar-chart.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/file-box.svg b/static/icons/file-box.svg new file mode 100644 index 0000000..f96a3fb --- /dev/null +++ b/static/icons/file-box.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/file-check-2.svg b/static/icons/file-check-2.svg new file mode 100644 index 0000000..b8b8211 --- /dev/null +++ b/static/icons/file-check-2.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/file-check.svg b/static/icons/file-check.svg new file mode 100644 index 0000000..111eeb5 --- /dev/null +++ b/static/icons/file-check.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/file-clock.svg b/static/icons/file-clock.svg new file mode 100644 index 0000000..217b647 --- /dev/null +++ b/static/icons/file-clock.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/file-code.svg b/static/icons/file-code.svg new file mode 100644 index 0000000..913eb0a --- /dev/null +++ b/static/icons/file-code.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/file-cog-2.svg b/static/icons/file-cog-2.svg new file mode 100644 index 0000000..688e5b5 --- /dev/null +++ b/static/icons/file-cog-2.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + diff --git a/static/icons/file-cog.svg b/static/icons/file-cog.svg new file mode 100644 index 0000000..01f804a --- /dev/null +++ b/static/icons/file-cog.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + diff --git a/static/icons/file-diff.svg b/static/icons/file-diff.svg new file mode 100644 index 0000000..2706d2a --- /dev/null +++ b/static/icons/file-diff.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/file-digit.svg b/static/icons/file-digit.svg new file mode 100644 index 0000000..745fbae --- /dev/null +++ b/static/icons/file-digit.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/file-down.svg b/static/icons/file-down.svg new file mode 100644 index 0000000..bb06695 --- /dev/null +++ b/static/icons/file-down.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/file-edit.svg b/static/icons/file-edit.svg new file mode 100644 index 0000000..805577a --- /dev/null +++ b/static/icons/file-edit.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/file-heart.svg b/static/icons/file-heart.svg new file mode 100644 index 0000000..7e0ac99 --- /dev/null +++ b/static/icons/file-heart.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/file-image.svg b/static/icons/file-image.svg new file mode 100644 index 0000000..ba9f50e --- /dev/null +++ b/static/icons/file-image.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/file-input.svg b/static/icons/file-input.svg new file mode 100644 index 0000000..2e25fd3 --- /dev/null +++ b/static/icons/file-input.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/file-json-2.svg b/static/icons/file-json-2.svg new file mode 100644 index 0000000..82cc38c --- /dev/null +++ b/static/icons/file-json-2.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/file-json.svg b/static/icons/file-json.svg new file mode 100644 index 0000000..a4ade48 --- /dev/null +++ b/static/icons/file-json.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/file-key-2.svg b/static/icons/file-key-2.svg new file mode 100644 index 0000000..e640838 --- /dev/null +++ b/static/icons/file-key-2.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/file-key.svg b/static/icons/file-key.svg new file mode 100644 index 0000000..e849483 --- /dev/null +++ b/static/icons/file-key.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/file-line-chart.svg b/static/icons/file-line-chart.svg new file mode 100644 index 0000000..b8bf128 --- /dev/null +++ b/static/icons/file-line-chart.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/file-lock-2.svg b/static/icons/file-lock-2.svg new file mode 100644 index 0000000..c736d16 --- /dev/null +++ b/static/icons/file-lock-2.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/file-lock.svg b/static/icons/file-lock.svg new file mode 100644 index 0000000..a9433ed --- /dev/null +++ b/static/icons/file-lock.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/file-minus-2.svg b/static/icons/file-minus-2.svg new file mode 100644 index 0000000..f3d869f --- /dev/null +++ b/static/icons/file-minus-2.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/file-minus.svg b/static/icons/file-minus.svg new file mode 100644 index 0000000..607b5d6 --- /dev/null +++ b/static/icons/file-minus.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/file-output.svg b/static/icons/file-output.svg new file mode 100644 index 0000000..4bf81f9 --- /dev/null +++ b/static/icons/file-output.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/file-pie-chart.svg b/static/icons/file-pie-chart.svg new file mode 100644 index 0000000..137da77 --- /dev/null +++ b/static/icons/file-pie-chart.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/file-plus-2.svg b/static/icons/file-plus-2.svg new file mode 100644 index 0000000..d5976a8 --- /dev/null +++ b/static/icons/file-plus-2.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/file-plus.svg b/static/icons/file-plus.svg new file mode 100644 index 0000000..ba5161f --- /dev/null +++ b/static/icons/file-plus.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/file-question.svg b/static/icons/file-question.svg new file mode 100644 index 0000000..721e75a --- /dev/null +++ b/static/icons/file-question.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/file-scan.svg b/static/icons/file-scan.svg new file mode 100644 index 0000000..0aa2ed5 --- /dev/null +++ b/static/icons/file-scan.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/file-search-2.svg b/static/icons/file-search-2.svg new file mode 100644 index 0000000..da61de3 --- /dev/null +++ b/static/icons/file-search-2.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/file-search.svg b/static/icons/file-search.svg new file mode 100644 index 0000000..036f59f --- /dev/null +++ b/static/icons/file-search.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/file-signature.svg b/static/icons/file-signature.svg new file mode 100644 index 0000000..b4cd452 --- /dev/null +++ b/static/icons/file-signature.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/file-spreadsheet.svg b/static/icons/file-spreadsheet.svg new file mode 100644 index 0000000..78635bb --- /dev/null +++ b/static/icons/file-spreadsheet.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/file-symlink.svg b/static/icons/file-symlink.svg new file mode 100644 index 0000000..05b7b0a --- /dev/null +++ b/static/icons/file-symlink.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/file-terminal.svg b/static/icons/file-terminal.svg new file mode 100644 index 0000000..148b75e --- /dev/null +++ b/static/icons/file-terminal.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/file-text.svg b/static/icons/file-text.svg new file mode 100644 index 0000000..7d30acf --- /dev/null +++ b/static/icons/file-text.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/file-type-2.svg b/static/icons/file-type-2.svg new file mode 100644 index 0000000..c3f5ecb --- /dev/null +++ b/static/icons/file-type-2.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/file-type.svg b/static/icons/file-type.svg new file mode 100644 index 0000000..67d7da3 --- /dev/null +++ b/static/icons/file-type.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/file-up.svg b/static/icons/file-up.svg new file mode 100644 index 0000000..ad6e941 --- /dev/null +++ b/static/icons/file-up.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/file-video-2.svg b/static/icons/file-video-2.svg new file mode 100644 index 0000000..8d36f0d --- /dev/null +++ b/static/icons/file-video-2.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/file-video.svg b/static/icons/file-video.svg new file mode 100644 index 0000000..d41a0fe --- /dev/null +++ b/static/icons/file-video.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/file-volume-2.svg b/static/icons/file-volume-2.svg new file mode 100644 index 0000000..edab47c --- /dev/null +++ b/static/icons/file-volume-2.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/file-volume.svg b/static/icons/file-volume.svg new file mode 100644 index 0000000..f6c27b1 --- /dev/null +++ b/static/icons/file-volume.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/file-warning.svg b/static/icons/file-warning.svg new file mode 100644 index 0000000..51f8b1c --- /dev/null +++ b/static/icons/file-warning.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/file-x-2.svg b/static/icons/file-x-2.svg new file mode 100644 index 0000000..47d5932 --- /dev/null +++ b/static/icons/file-x-2.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/file-x.svg b/static/icons/file-x.svg new file mode 100644 index 0000000..c68afae --- /dev/null +++ b/static/icons/file-x.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/file.svg b/static/icons/file.svg new file mode 100644 index 0000000..534d34d --- /dev/null +++ b/static/icons/file.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/files.svg b/static/icons/files.svg new file mode 100644 index 0000000..0470ba8 --- /dev/null +++ b/static/icons/files.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/film.svg b/static/icons/film.svg new file mode 100644 index 0000000..a9f5b15 --- /dev/null +++ b/static/icons/film.svg @@ -0,0 +1,20 @@ + + + + + + + + + + diff --git a/static/icons/filter.svg b/static/icons/filter.svg new file mode 100644 index 0000000..adc513c --- /dev/null +++ b/static/icons/filter.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/fingerprint.svg b/static/icons/fingerprint.svg new file mode 100644 index 0000000..99e4e7d --- /dev/null +++ b/static/icons/fingerprint.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + diff --git a/static/icons/flag-off.svg b/static/icons/flag-off.svg new file mode 100644 index 0000000..a0ba907 --- /dev/null +++ b/static/icons/flag-off.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/flag-triangle-left.svg b/static/icons/flag-triangle-left.svg new file mode 100644 index 0000000..732b7fa --- /dev/null +++ b/static/icons/flag-triangle-left.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/flag-triangle-right.svg b/static/icons/flag-triangle-right.svg new file mode 100644 index 0000000..5415554 --- /dev/null +++ b/static/icons/flag-triangle-right.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/flag.svg b/static/icons/flag.svg new file mode 100644 index 0000000..8100a2f --- /dev/null +++ b/static/icons/flag.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/flame.svg b/static/icons/flame.svg new file mode 100644 index 0000000..0abb88a --- /dev/null +++ b/static/icons/flame.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/flashlight-off.svg b/static/icons/flashlight-off.svg new file mode 100644 index 0000000..8390dcf --- /dev/null +++ b/static/icons/flashlight-off.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/flashlight.svg b/static/icons/flashlight.svg new file mode 100644 index 0000000..db03439 --- /dev/null +++ b/static/icons/flashlight.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/flask-conical-off.svg b/static/icons/flask-conical-off.svg new file mode 100644 index 0000000..51553e5 --- /dev/null +++ b/static/icons/flask-conical-off.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/flask-conical.svg b/static/icons/flask-conical.svg new file mode 100644 index 0000000..f069951 --- /dev/null +++ b/static/icons/flask-conical.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/flask-round.svg b/static/icons/flask-round.svg new file mode 100644 index 0000000..58751f1 --- /dev/null +++ b/static/icons/flask-round.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/flip-horizontal-2.svg b/static/icons/flip-horizontal-2.svg new file mode 100644 index 0000000..7e0459d --- /dev/null +++ b/static/icons/flip-horizontal-2.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/flip-horizontal.svg b/static/icons/flip-horizontal.svg new file mode 100644 index 0000000..5319777 --- /dev/null +++ b/static/icons/flip-horizontal.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/flip-vertical-2.svg b/static/icons/flip-vertical-2.svg new file mode 100644 index 0000000..26b0775 --- /dev/null +++ b/static/icons/flip-vertical-2.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/flip-vertical.svg b/static/icons/flip-vertical.svg new file mode 100644 index 0000000..5678c27 --- /dev/null +++ b/static/icons/flip-vertical.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/flower-2.svg b/static/icons/flower-2.svg new file mode 100644 index 0000000..7d89e5e --- /dev/null +++ b/static/icons/flower-2.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/flower.svg b/static/icons/flower.svg new file mode 100644 index 0000000..9eedfe8 --- /dev/null +++ b/static/icons/flower.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/focus.svg b/static/icons/focus.svg new file mode 100644 index 0000000..c04d45a --- /dev/null +++ b/static/icons/focus.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/folder-archive.svg b/static/icons/folder-archive.svg new file mode 100644 index 0000000..3bd6201 --- /dev/null +++ b/static/icons/folder-archive.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/folder-check.svg b/static/icons/folder-check.svg new file mode 100644 index 0000000..c2a4689 --- /dev/null +++ b/static/icons/folder-check.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/folder-clock.svg b/static/icons/folder-clock.svg new file mode 100644 index 0000000..7260da8 --- /dev/null +++ b/static/icons/folder-clock.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/folder-closed.svg b/static/icons/folder-closed.svg new file mode 100644 index 0000000..79a18d5 --- /dev/null +++ b/static/icons/folder-closed.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/folder-cog-2.svg b/static/icons/folder-cog-2.svg new file mode 100644 index 0000000..7ca430d --- /dev/null +++ b/static/icons/folder-cog-2.svg @@ -0,0 +1,20 @@ + + + + + + + + + + diff --git a/static/icons/folder-cog.svg b/static/icons/folder-cog.svg new file mode 100644 index 0000000..419c6f5 --- /dev/null +++ b/static/icons/folder-cog.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + diff --git a/static/icons/folder-down.svg b/static/icons/folder-down.svg new file mode 100644 index 0000000..c4ac0ca --- /dev/null +++ b/static/icons/folder-down.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/folder-edit.svg b/static/icons/folder-edit.svg new file mode 100644 index 0000000..a5cbf02 --- /dev/null +++ b/static/icons/folder-edit.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/folder-heart.svg b/static/icons/folder-heart.svg new file mode 100644 index 0000000..a3f86d5 --- /dev/null +++ b/static/icons/folder-heart.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/folder-input.svg b/static/icons/folder-input.svg new file mode 100644 index 0000000..31df454 --- /dev/null +++ b/static/icons/folder-input.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/folder-key.svg b/static/icons/folder-key.svg new file mode 100644 index 0000000..82756ad --- /dev/null +++ b/static/icons/folder-key.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/folder-lock.svg b/static/icons/folder-lock.svg new file mode 100644 index 0000000..4c2993a --- /dev/null +++ b/static/icons/folder-lock.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/folder-minus.svg b/static/icons/folder-minus.svg new file mode 100644 index 0000000..ad247ae --- /dev/null +++ b/static/icons/folder-minus.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/folder-open.svg b/static/icons/folder-open.svg new file mode 100644 index 0000000..1135501 --- /dev/null +++ b/static/icons/folder-open.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/folder-output.svg b/static/icons/folder-output.svg new file mode 100644 index 0000000..422b1a7 --- /dev/null +++ b/static/icons/folder-output.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/folder-plus.svg b/static/icons/folder-plus.svg new file mode 100644 index 0000000..34dfa27 --- /dev/null +++ b/static/icons/folder-plus.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/folder-search-2.svg b/static/icons/folder-search-2.svg new file mode 100644 index 0000000..6c75150 --- /dev/null +++ b/static/icons/folder-search-2.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/folder-search.svg b/static/icons/folder-search.svg new file mode 100644 index 0000000..92d43a7 --- /dev/null +++ b/static/icons/folder-search.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/folder-symlink.svg b/static/icons/folder-symlink.svg new file mode 100644 index 0000000..2b9fd7f --- /dev/null +++ b/static/icons/folder-symlink.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/folder-tree.svg b/static/icons/folder-tree.svg new file mode 100644 index 0000000..8f9564e --- /dev/null +++ b/static/icons/folder-tree.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/folder-up.svg b/static/icons/folder-up.svg new file mode 100644 index 0000000..2381511 --- /dev/null +++ b/static/icons/folder-up.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/folder-x.svg b/static/icons/folder-x.svg new file mode 100644 index 0000000..331c4fa --- /dev/null +++ b/static/icons/folder-x.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/folder.svg b/static/icons/folder.svg new file mode 100644 index 0000000..6e46360 --- /dev/null +++ b/static/icons/folder.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/folders.svg b/static/icons/folders.svg new file mode 100644 index 0000000..9e71c62 --- /dev/null +++ b/static/icons/folders.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/form-input.svg b/static/icons/form-input.svg new file mode 100644 index 0000000..0546ed8 --- /dev/null +++ b/static/icons/form-input.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/forward.svg b/static/icons/forward.svg new file mode 100644 index 0000000..c722387 --- /dev/null +++ b/static/icons/forward.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/frame.svg b/static/icons/frame.svg new file mode 100644 index 0000000..fc2144d --- /dev/null +++ b/static/icons/frame.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/framer.svg b/static/icons/framer.svg new file mode 100644 index 0000000..f8eeb8c --- /dev/null +++ b/static/icons/framer.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/frown.svg b/static/icons/frown.svg new file mode 100644 index 0000000..5a24d7d --- /dev/null +++ b/static/icons/frown.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/fuel.svg b/static/icons/fuel.svg new file mode 100644 index 0000000..d6bc1ec --- /dev/null +++ b/static/icons/fuel.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/function-square.svg b/static/icons/function-square.svg new file mode 100644 index 0000000..eed6935 --- /dev/null +++ b/static/icons/function-square.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/gamepad-2.svg b/static/icons/gamepad-2.svg new file mode 100644 index 0000000..7a90a81 --- /dev/null +++ b/static/icons/gamepad-2.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/gamepad.svg b/static/icons/gamepad.svg new file mode 100644 index 0000000..7f9cfb6 --- /dev/null +++ b/static/icons/gamepad.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/gauge.svg b/static/icons/gauge.svg new file mode 100644 index 0000000..16219c6 --- /dev/null +++ b/static/icons/gauge.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/gavel.svg b/static/icons/gavel.svg new file mode 100644 index 0000000..91f1874 --- /dev/null +++ b/static/icons/gavel.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/gem.svg b/static/icons/gem.svg new file mode 100644 index 0000000..d455b4f --- /dev/null +++ b/static/icons/gem.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/ghost.svg b/static/icons/ghost.svg new file mode 100644 index 0000000..3226449 --- /dev/null +++ b/static/icons/ghost.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/gift.svg b/static/icons/gift.svg new file mode 100644 index 0000000..df02c7f --- /dev/null +++ b/static/icons/gift.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/git-branch-plus.svg b/static/icons/git-branch-plus.svg new file mode 100644 index 0000000..6dc8ddb --- /dev/null +++ b/static/icons/git-branch-plus.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/git-branch.svg b/static/icons/git-branch.svg new file mode 100644 index 0000000..17d903f --- /dev/null +++ b/static/icons/git-branch.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/git-commit.svg b/static/icons/git-commit.svg new file mode 100644 index 0000000..ceeb9f9 --- /dev/null +++ b/static/icons/git-commit.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/git-compare.svg b/static/icons/git-compare.svg new file mode 100644 index 0000000..38c3296 --- /dev/null +++ b/static/icons/git-compare.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/git-fork.svg b/static/icons/git-fork.svg new file mode 100644 index 0000000..5d4a51a --- /dev/null +++ b/static/icons/git-fork.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/git-merge.svg b/static/icons/git-merge.svg new file mode 100644 index 0000000..02d4dc0 --- /dev/null +++ b/static/icons/git-merge.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/git-pull-request-closed.svg b/static/icons/git-pull-request-closed.svg new file mode 100644 index 0000000..d6d40f1 --- /dev/null +++ b/static/icons/git-pull-request-closed.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/git-pull-request-draft.svg b/static/icons/git-pull-request-draft.svg new file mode 100644 index 0000000..bd26c86 --- /dev/null +++ b/static/icons/git-pull-request-draft.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/git-pull-request.svg b/static/icons/git-pull-request.svg new file mode 100644 index 0000000..cab3581 --- /dev/null +++ b/static/icons/git-pull-request.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/github.svg b/static/icons/github.svg new file mode 100644 index 0000000..60c011f --- /dev/null +++ b/static/icons/github.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/gitlab.svg b/static/icons/gitlab.svg new file mode 100644 index 0000000..10ee9ea --- /dev/null +++ b/static/icons/gitlab.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/glass-water.svg b/static/icons/glass-water.svg new file mode 100644 index 0000000..3db6743 --- /dev/null +++ b/static/icons/glass-water.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/glasses.svg b/static/icons/glasses.svg new file mode 100644 index 0000000..42f0387 --- /dev/null +++ b/static/icons/glasses.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/globe-2.svg b/static/icons/globe-2.svg new file mode 100644 index 0000000..ac5498e --- /dev/null +++ b/static/icons/globe-2.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/globe.svg b/static/icons/globe.svg new file mode 100644 index 0000000..a9c820f --- /dev/null +++ b/static/icons/globe.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/grab.svg b/static/icons/grab.svg new file mode 100644 index 0000000..e8d5c74 --- /dev/null +++ b/static/icons/grab.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/graduation-cap.svg b/static/icons/graduation-cap.svg new file mode 100644 index 0000000..464ae8f --- /dev/null +++ b/static/icons/graduation-cap.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/grape.svg b/static/icons/grape.svg new file mode 100644 index 0000000..d31456c --- /dev/null +++ b/static/icons/grape.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + diff --git a/static/icons/grid.svg b/static/icons/grid.svg new file mode 100644 index 0000000..17bbc84 --- /dev/null +++ b/static/icons/grid.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/grip-horizontal.svg b/static/icons/grip-horizontal.svg new file mode 100644 index 0000000..033a60b --- /dev/null +++ b/static/icons/grip-horizontal.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/grip-vertical.svg b/static/icons/grip-vertical.svg new file mode 100644 index 0000000..2cbd8aa --- /dev/null +++ b/static/icons/grip-vertical.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/hammer.svg b/static/icons/hammer.svg new file mode 100644 index 0000000..838fe6a --- /dev/null +++ b/static/icons/hammer.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/hand-metal.svg b/static/icons/hand-metal.svg new file mode 100644 index 0000000..5eb2b4b --- /dev/null +++ b/static/icons/hand-metal.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/hand.svg b/static/icons/hand.svg new file mode 100644 index 0000000..a5bc9ed --- /dev/null +++ b/static/icons/hand.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/hard-drive.svg b/static/icons/hard-drive.svg new file mode 100644 index 0000000..ebbde07 --- /dev/null +++ b/static/icons/hard-drive.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/hard-hat.svg b/static/icons/hard-hat.svg new file mode 100644 index 0000000..f1f7723 --- /dev/null +++ b/static/icons/hard-hat.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/hash.svg b/static/icons/hash.svg new file mode 100644 index 0000000..9cc4f15 --- /dev/null +++ b/static/icons/hash.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/haze.svg b/static/icons/haze.svg new file mode 100644 index 0000000..c4480cc --- /dev/null +++ b/static/icons/haze.svg @@ -0,0 +1,20 @@ + + + + + + + + + + diff --git a/static/icons/heading-1.svg b/static/icons/heading-1.svg new file mode 100644 index 0000000..9c2d8e6 --- /dev/null +++ b/static/icons/heading-1.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/heading-2.svg b/static/icons/heading-2.svg new file mode 100644 index 0000000..8f29e37 --- /dev/null +++ b/static/icons/heading-2.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/heading-3.svg b/static/icons/heading-3.svg new file mode 100644 index 0000000..11a32e5 --- /dev/null +++ b/static/icons/heading-3.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/heading-4.svg b/static/icons/heading-4.svg new file mode 100644 index 0000000..2f6cc2b --- /dev/null +++ b/static/icons/heading-4.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/heading-5.svg b/static/icons/heading-5.svg new file mode 100644 index 0000000..df659b7 --- /dev/null +++ b/static/icons/heading-5.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/heading-6.svg b/static/icons/heading-6.svg new file mode 100644 index 0000000..b8fd857 --- /dev/null +++ b/static/icons/heading-6.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/heading.svg b/static/icons/heading.svg new file mode 100644 index 0000000..e0eea76 --- /dev/null +++ b/static/icons/heading.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/headphones.svg b/static/icons/headphones.svg new file mode 100644 index 0000000..f9c1cbd --- /dev/null +++ b/static/icons/headphones.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/heart-crack.svg b/static/icons/heart-crack.svg new file mode 100644 index 0000000..21786fc --- /dev/null +++ b/static/icons/heart-crack.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/heart-handshake.svg b/static/icons/heart-handshake.svg new file mode 100644 index 0000000..cbfc5cd --- /dev/null +++ b/static/icons/heart-handshake.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/heart-off.svg b/static/icons/heart-off.svg new file mode 100644 index 0000000..2b44283 --- /dev/null +++ b/static/icons/heart-off.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/heart-pulse.svg b/static/icons/heart-pulse.svg new file mode 100644 index 0000000..e1e6121 --- /dev/null +++ b/static/icons/heart-pulse.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/heart.svg b/static/icons/heart.svg new file mode 100644 index 0000000..e0f5330 --- /dev/null +++ b/static/icons/heart.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/help-circle.svg b/static/icons/help-circle.svg new file mode 100644 index 0000000..dab1358 --- /dev/null +++ b/static/icons/help-circle.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/hexagon.svg b/static/icons/hexagon.svg new file mode 100644 index 0000000..522c2e3 --- /dev/null +++ b/static/icons/hexagon.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/highlighter.svg b/static/icons/highlighter.svg new file mode 100644 index 0000000..ce0937c --- /dev/null +++ b/static/icons/highlighter.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/history.svg b/static/icons/history.svg new file mode 100644 index 0000000..8226ef3 --- /dev/null +++ b/static/icons/history.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/home.svg b/static/icons/home.svg new file mode 100644 index 0000000..772edd7 --- /dev/null +++ b/static/icons/home.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/hop-off.svg b/static/icons/hop-off.svg new file mode 100644 index 0000000..48799ce --- /dev/null +++ b/static/icons/hop-off.svg @@ -0,0 +1,20 @@ + + + + + + + + + + diff --git a/static/icons/hop.svg b/static/icons/hop.svg new file mode 100644 index 0000000..5eac5f1 --- /dev/null +++ b/static/icons/hop.svg @@ -0,0 +1,20 @@ + + + + + + + + + + diff --git a/static/icons/hourglass.svg b/static/icons/hourglass.svg new file mode 100644 index 0000000..97a2081 --- /dev/null +++ b/static/icons/hourglass.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/ice-cream.svg b/static/icons/ice-cream.svg new file mode 100644 index 0000000..913b539 --- /dev/null +++ b/static/icons/ice-cream.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/image-minus.svg b/static/icons/image-minus.svg new file mode 100644 index 0000000..e4b3625 --- /dev/null +++ b/static/icons/image-minus.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/image-off.svg b/static/icons/image-off.svg new file mode 100644 index 0000000..37538b9 --- /dev/null +++ b/static/icons/image-off.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/image-plus.svg b/static/icons/image-plus.svg new file mode 100644 index 0000000..ab9ab9b --- /dev/null +++ b/static/icons/image-plus.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/image.svg b/static/icons/image.svg new file mode 100644 index 0000000..e6d86fa --- /dev/null +++ b/static/icons/image.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/import.svg b/static/icons/import.svg new file mode 100644 index 0000000..bcc91e7 --- /dev/null +++ b/static/icons/import.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/inbox.svg b/static/icons/inbox.svg new file mode 100644 index 0000000..c1f6868 --- /dev/null +++ b/static/icons/inbox.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/indent.svg b/static/icons/indent.svg new file mode 100644 index 0000000..c6c1952 --- /dev/null +++ b/static/icons/indent.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/indian-rupee.svg b/static/icons/indian-rupee.svg new file mode 100644 index 0000000..15b042e --- /dev/null +++ b/static/icons/indian-rupee.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/infinity.svg b/static/icons/infinity.svg new file mode 100644 index 0000000..4c0e56d --- /dev/null +++ b/static/icons/infinity.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/info.svg b/static/icons/info.svg new file mode 100644 index 0000000..9fbefeb --- /dev/null +++ b/static/icons/info.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/inspect.svg b/static/icons/inspect.svg new file mode 100644 index 0000000..4592513 --- /dev/null +++ b/static/icons/inspect.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/instagram.svg b/static/icons/instagram.svg new file mode 100644 index 0000000..d76b412 --- /dev/null +++ b/static/icons/instagram.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/italic.svg b/static/icons/italic.svg new file mode 100644 index 0000000..9dfd524 --- /dev/null +++ b/static/icons/italic.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/japanese-yen.svg b/static/icons/japanese-yen.svg new file mode 100644 index 0000000..632ea64 --- /dev/null +++ b/static/icons/japanese-yen.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/joystick.svg b/static/icons/joystick.svg new file mode 100644 index 0000000..d948ff1 --- /dev/null +++ b/static/icons/joystick.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/key.svg b/static/icons/key.svg new file mode 100644 index 0000000..d2cd46a --- /dev/null +++ b/static/icons/key.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/keyboard.svg b/static/icons/keyboard.svg new file mode 100644 index 0000000..980a608 --- /dev/null +++ b/static/icons/keyboard.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + diff --git a/static/icons/lamp-ceiling.svg b/static/icons/lamp-ceiling.svg new file mode 100644 index 0000000..8673f73 --- /dev/null +++ b/static/icons/lamp-ceiling.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/lamp-desk.svg b/static/icons/lamp-desk.svg new file mode 100644 index 0000000..536a803 --- /dev/null +++ b/static/icons/lamp-desk.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/lamp-floor.svg b/static/icons/lamp-floor.svg new file mode 100644 index 0000000..a051439 --- /dev/null +++ b/static/icons/lamp-floor.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/lamp-wall-down.svg b/static/icons/lamp-wall-down.svg new file mode 100644 index 0000000..2197096 --- /dev/null +++ b/static/icons/lamp-wall-down.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/lamp-wall-up.svg b/static/icons/lamp-wall-up.svg new file mode 100644 index 0000000..b3f1a3e --- /dev/null +++ b/static/icons/lamp-wall-up.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/lamp.svg b/static/icons/lamp.svg new file mode 100644 index 0000000..4c0a674 --- /dev/null +++ b/static/icons/lamp.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/landmark.svg b/static/icons/landmark.svg new file mode 100644 index 0000000..f3875f5 --- /dev/null +++ b/static/icons/landmark.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/languages.svg b/static/icons/languages.svg new file mode 100644 index 0000000..c3c1486 --- /dev/null +++ b/static/icons/languages.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/laptop-2.svg b/static/icons/laptop-2.svg new file mode 100644 index 0000000..18c5e3c --- /dev/null +++ b/static/icons/laptop-2.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/laptop.svg b/static/icons/laptop.svg new file mode 100644 index 0000000..e4006cd --- /dev/null +++ b/static/icons/laptop.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/lasso-select.svg b/static/icons/lasso-select.svg new file mode 100644 index 0000000..d577704 --- /dev/null +++ b/static/icons/lasso-select.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/lasso.svg b/static/icons/lasso.svg new file mode 100644 index 0000000..857820d --- /dev/null +++ b/static/icons/lasso.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/laugh.svg b/static/icons/laugh.svg new file mode 100644 index 0000000..f4b6320 --- /dev/null +++ b/static/icons/laugh.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/layers.svg b/static/icons/layers.svg new file mode 100644 index 0000000..43b3255 --- /dev/null +++ b/static/icons/layers.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/layout-dashboard.svg b/static/icons/layout-dashboard.svg new file mode 100644 index 0000000..1ee7f7e --- /dev/null +++ b/static/icons/layout-dashboard.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/layout-grid.svg b/static/icons/layout-grid.svg new file mode 100644 index 0000000..1c0b49a --- /dev/null +++ b/static/icons/layout-grid.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/layout-list.svg b/static/icons/layout-list.svg new file mode 100644 index 0000000..936d214 --- /dev/null +++ b/static/icons/layout-list.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/layout-template.svg b/static/icons/layout-template.svg new file mode 100644 index 0000000..e9d887c --- /dev/null +++ b/static/icons/layout-template.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/layout.svg b/static/icons/layout.svg new file mode 100644 index 0000000..80c5066 --- /dev/null +++ b/static/icons/layout.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/leaf.svg b/static/icons/leaf.svg new file mode 100644 index 0000000..f322ef0 --- /dev/null +++ b/static/icons/leaf.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/library.svg b/static/icons/library.svg new file mode 100644 index 0000000..bb6f673 --- /dev/null +++ b/static/icons/library.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/life-buoy.svg b/static/icons/life-buoy.svg new file mode 100644 index 0000000..b171b39 --- /dev/null +++ b/static/icons/life-buoy.svg @@ -0,0 +1,19 @@ + + + + + + + + + diff --git a/static/icons/lightbulb-off.svg b/static/icons/lightbulb-off.svg new file mode 100644 index 0000000..2b773d5 --- /dev/null +++ b/static/icons/lightbulb-off.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/lightbulb.svg b/static/icons/lightbulb.svg new file mode 100644 index 0000000..01c7b7f --- /dev/null +++ b/static/icons/lightbulb.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/line-chart.svg b/static/icons/line-chart.svg new file mode 100644 index 0000000..4d6df0b --- /dev/null +++ b/static/icons/line-chart.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/link-2-off.svg b/static/icons/link-2-off.svg new file mode 100644 index 0000000..15581d7 --- /dev/null +++ b/static/icons/link-2-off.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/link-2.svg b/static/icons/link-2.svg new file mode 100644 index 0000000..516fa23 --- /dev/null +++ b/static/icons/link-2.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/link.svg b/static/icons/link.svg new file mode 100644 index 0000000..645e746 --- /dev/null +++ b/static/icons/link.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/linkedin.svg b/static/icons/linkedin.svg new file mode 100644 index 0000000..a5e423b --- /dev/null +++ b/static/icons/linkedin.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/list-checks.svg b/static/icons/list-checks.svg new file mode 100644 index 0000000..93906f4 --- /dev/null +++ b/static/icons/list-checks.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/list-end.svg b/static/icons/list-end.svg new file mode 100644 index 0000000..4e70739 --- /dev/null +++ b/static/icons/list-end.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/list-minus.svg b/static/icons/list-minus.svg new file mode 100644 index 0000000..d5ab955 --- /dev/null +++ b/static/icons/list-minus.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/list-music.svg b/static/icons/list-music.svg new file mode 100644 index 0000000..186caae --- /dev/null +++ b/static/icons/list-music.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/list-ordered.svg b/static/icons/list-ordered.svg new file mode 100644 index 0000000..6201c84 --- /dev/null +++ b/static/icons/list-ordered.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/list-plus.svg b/static/icons/list-plus.svg new file mode 100644 index 0000000..acc00c4 --- /dev/null +++ b/static/icons/list-plus.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/list-start.svg b/static/icons/list-start.svg new file mode 100644 index 0000000..e2b4e72 --- /dev/null +++ b/static/icons/list-start.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/list-video.svg b/static/icons/list-video.svg new file mode 100644 index 0000000..44d11ff --- /dev/null +++ b/static/icons/list-video.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/list-x.svg b/static/icons/list-x.svg new file mode 100644 index 0000000..c568a93 --- /dev/null +++ b/static/icons/list-x.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/list.svg b/static/icons/list.svg new file mode 100644 index 0000000..382b821 --- /dev/null +++ b/static/icons/list.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/loader-2.svg b/static/icons/loader-2.svg new file mode 100644 index 0000000..cc065ca --- /dev/null +++ b/static/icons/loader-2.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/loader.svg b/static/icons/loader.svg new file mode 100644 index 0000000..0b4bb93 --- /dev/null +++ b/static/icons/loader.svg @@ -0,0 +1,20 @@ + + + + + + + + + + diff --git a/static/icons/locate-fixed.svg b/static/icons/locate-fixed.svg new file mode 100644 index 0000000..7db097b --- /dev/null +++ b/static/icons/locate-fixed.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/locate-off.svg b/static/icons/locate-off.svg new file mode 100644 index 0000000..8d4939f --- /dev/null +++ b/static/icons/locate-off.svg @@ -0,0 +1,19 @@ + + + + + + + + + diff --git a/static/icons/locate.svg b/static/icons/locate.svg new file mode 100644 index 0000000..91d179c --- /dev/null +++ b/static/icons/locate.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/lock.svg b/static/icons/lock.svg new file mode 100644 index 0000000..cd6b7f6 --- /dev/null +++ b/static/icons/lock.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/log-in.svg b/static/icons/log-in.svg new file mode 100644 index 0000000..bffc91e --- /dev/null +++ b/static/icons/log-in.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/log-out.svg b/static/icons/log-out.svg new file mode 100644 index 0000000..4abe340 --- /dev/null +++ b/static/icons/log-out.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/luggage.svg b/static/icons/luggage.svg new file mode 100644 index 0000000..8ce3799 --- /dev/null +++ b/static/icons/luggage.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/magnet.svg b/static/icons/magnet.svg new file mode 100644 index 0000000..337f517 --- /dev/null +++ b/static/icons/magnet.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/mail-check.svg b/static/icons/mail-check.svg new file mode 100644 index 0000000..375a058 --- /dev/null +++ b/static/icons/mail-check.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/mail-minus.svg b/static/icons/mail-minus.svg new file mode 100644 index 0000000..e180e79 --- /dev/null +++ b/static/icons/mail-minus.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/mail-open.svg b/static/icons/mail-open.svg new file mode 100644 index 0000000..0cb2603 --- /dev/null +++ b/static/icons/mail-open.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/mail-plus.svg b/static/icons/mail-plus.svg new file mode 100644 index 0000000..31243a5 --- /dev/null +++ b/static/icons/mail-plus.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/mail-question.svg b/static/icons/mail-question.svg new file mode 100644 index 0000000..3b16ae7 --- /dev/null +++ b/static/icons/mail-question.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/mail-search.svg b/static/icons/mail-search.svg new file mode 100644 index 0000000..87cc431 --- /dev/null +++ b/static/icons/mail-search.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/mail-warning.svg b/static/icons/mail-warning.svg new file mode 100644 index 0000000..ac3a395 --- /dev/null +++ b/static/icons/mail-warning.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/mail-x.svg b/static/icons/mail-x.svg new file mode 100644 index 0000000..6b3393c --- /dev/null +++ b/static/icons/mail-x.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/mail.svg b/static/icons/mail.svg new file mode 100644 index 0000000..d211c87 --- /dev/null +++ b/static/icons/mail.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/mails.svg b/static/icons/mails.svg new file mode 100644 index 0000000..03659eb --- /dev/null +++ b/static/icons/mails.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/map-pin-off.svg b/static/icons/map-pin-off.svg new file mode 100644 index 0000000..fd91b11 --- /dev/null +++ b/static/icons/map-pin-off.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/map-pin.svg b/static/icons/map-pin.svg new file mode 100644 index 0000000..5af81c8 --- /dev/null +++ b/static/icons/map-pin.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/map.svg b/static/icons/map.svg new file mode 100644 index 0000000..627b3c9 --- /dev/null +++ b/static/icons/map.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/martini.svg b/static/icons/martini.svg new file mode 100644 index 0000000..31dc459 --- /dev/null +++ b/static/icons/martini.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/maximize-2.svg b/static/icons/maximize-2.svg new file mode 100644 index 0000000..abfa104 --- /dev/null +++ b/static/icons/maximize-2.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/maximize.svg b/static/icons/maximize.svg new file mode 100644 index 0000000..f78ca32 --- /dev/null +++ b/static/icons/maximize.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/medal.svg b/static/icons/medal.svg new file mode 100644 index 0000000..977e7f2 --- /dev/null +++ b/static/icons/medal.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/megaphone-off.svg b/static/icons/megaphone-off.svg new file mode 100644 index 0000000..f90dcab --- /dev/null +++ b/static/icons/megaphone-off.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/megaphone.svg b/static/icons/megaphone.svg new file mode 100644 index 0000000..ee83043 --- /dev/null +++ b/static/icons/megaphone.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/meh.svg b/static/icons/meh.svg new file mode 100644 index 0000000..04a7982 --- /dev/null +++ b/static/icons/meh.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/menu.svg b/static/icons/menu.svg new file mode 100644 index 0000000..2368627 --- /dev/null +++ b/static/icons/menu.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/message-circle.svg b/static/icons/message-circle.svg new file mode 100644 index 0000000..0ac1044 --- /dev/null +++ b/static/icons/message-circle.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/message-square.svg b/static/icons/message-square.svg new file mode 100644 index 0000000..be1caf3 --- /dev/null +++ b/static/icons/message-square.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/mic-2.svg b/static/icons/mic-2.svg new file mode 100644 index 0000000..fb317da --- /dev/null +++ b/static/icons/mic-2.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/mic-off.svg b/static/icons/mic-off.svg new file mode 100644 index 0000000..5acbb4b --- /dev/null +++ b/static/icons/mic-off.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/mic.svg b/static/icons/mic.svg new file mode 100644 index 0000000..62e62c3 --- /dev/null +++ b/static/icons/mic.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/microscope.svg b/static/icons/microscope.svg new file mode 100644 index 0000000..149a7a9 --- /dev/null +++ b/static/icons/microscope.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/microwave.svg b/static/icons/microwave.svg new file mode 100644 index 0000000..54825da --- /dev/null +++ b/static/icons/microwave.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/milestone.svg b/static/icons/milestone.svg new file mode 100644 index 0000000..c7550e0 --- /dev/null +++ b/static/icons/milestone.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/milk-off.svg b/static/icons/milk-off.svg new file mode 100644 index 0000000..a7126d3 --- /dev/null +++ b/static/icons/milk-off.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/milk.svg b/static/icons/milk.svg new file mode 100644 index 0000000..caec132 --- /dev/null +++ b/static/icons/milk.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/minimize-2.svg b/static/icons/minimize-2.svg new file mode 100644 index 0000000..cb6c3a8 --- /dev/null +++ b/static/icons/minimize-2.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/minimize.svg b/static/icons/minimize.svg new file mode 100644 index 0000000..13eb99c --- /dev/null +++ b/static/icons/minimize.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/minus-circle.svg b/static/icons/minus-circle.svg new file mode 100644 index 0000000..92a2ed6 --- /dev/null +++ b/static/icons/minus-circle.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/minus-square.svg b/static/icons/minus-square.svg new file mode 100644 index 0000000..3d03133 --- /dev/null +++ b/static/icons/minus-square.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/minus.svg b/static/icons/minus.svg new file mode 100644 index 0000000..38b1ffc --- /dev/null +++ b/static/icons/minus.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/monitor-off.svg b/static/icons/monitor-off.svg new file mode 100644 index 0000000..f03db2c --- /dev/null +++ b/static/icons/monitor-off.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/monitor-smartphone.svg b/static/icons/monitor-smartphone.svg new file mode 100644 index 0000000..46d46c7 --- /dev/null +++ b/static/icons/monitor-smartphone.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/monitor-speaker.svg b/static/icons/monitor-speaker.svg new file mode 100644 index 0000000..859cf39 --- /dev/null +++ b/static/icons/monitor-speaker.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/monitor.svg b/static/icons/monitor.svg new file mode 100644 index 0000000..d983a85 --- /dev/null +++ b/static/icons/monitor.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/moon.svg b/static/icons/moon.svg new file mode 100644 index 0000000..ce4a59d --- /dev/null +++ b/static/icons/moon.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/more-horizontal.svg b/static/icons/more-horizontal.svg new file mode 100644 index 0000000..68456c3 --- /dev/null +++ b/static/icons/more-horizontal.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/more-vertical.svg b/static/icons/more-vertical.svg new file mode 100644 index 0000000..1de6160 --- /dev/null +++ b/static/icons/more-vertical.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/mountain-snow.svg b/static/icons/mountain-snow.svg new file mode 100644 index 0000000..399e24c --- /dev/null +++ b/static/icons/mountain-snow.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/mountain.svg b/static/icons/mountain.svg new file mode 100644 index 0000000..b6691e7 --- /dev/null +++ b/static/icons/mountain.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/mouse-pointer-2.svg b/static/icons/mouse-pointer-2.svg new file mode 100644 index 0000000..26541f9 --- /dev/null +++ b/static/icons/mouse-pointer-2.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/mouse-pointer-click.svg b/static/icons/mouse-pointer-click.svg new file mode 100644 index 0000000..1df3480 --- /dev/null +++ b/static/icons/mouse-pointer-click.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/mouse-pointer.svg b/static/icons/mouse-pointer.svg new file mode 100644 index 0000000..7312adc --- /dev/null +++ b/static/icons/mouse-pointer.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/mouse.svg b/static/icons/mouse.svg new file mode 100644 index 0000000..39a62ad --- /dev/null +++ b/static/icons/mouse.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/move-3d.svg b/static/icons/move-3d.svg new file mode 100644 index 0000000..c86f871 --- /dev/null +++ b/static/icons/move-3d.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/move-diagonal-2.svg b/static/icons/move-diagonal-2.svg new file mode 100644 index 0000000..469dc3c --- /dev/null +++ b/static/icons/move-diagonal-2.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/move-diagonal.svg b/static/icons/move-diagonal.svg new file mode 100644 index 0000000..66ce964 --- /dev/null +++ b/static/icons/move-diagonal.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/move-horizontal.svg b/static/icons/move-horizontal.svg new file mode 100644 index 0000000..29992b4 --- /dev/null +++ b/static/icons/move-horizontal.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/move-vertical.svg b/static/icons/move-vertical.svg new file mode 100644 index 0000000..bcef50b --- /dev/null +++ b/static/icons/move-vertical.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/move.svg b/static/icons/move.svg new file mode 100644 index 0000000..40de93c --- /dev/null +++ b/static/icons/move.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/music-2.svg b/static/icons/music-2.svg new file mode 100644 index 0000000..9b1aa29 --- /dev/null +++ b/static/icons/music-2.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/music-3.svg b/static/icons/music-3.svg new file mode 100644 index 0000000..02cb44c --- /dev/null +++ b/static/icons/music-3.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/music-4.svg b/static/icons/music-4.svg new file mode 100644 index 0000000..911a724 --- /dev/null +++ b/static/icons/music-4.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/music.svg b/static/icons/music.svg new file mode 100644 index 0000000..dd9faac --- /dev/null +++ b/static/icons/music.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/navigation-2-off.svg b/static/icons/navigation-2-off.svg new file mode 100644 index 0000000..688ec1b --- /dev/null +++ b/static/icons/navigation-2-off.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/navigation-2.svg b/static/icons/navigation-2.svg new file mode 100644 index 0000000..febc406 --- /dev/null +++ b/static/icons/navigation-2.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/navigation-off.svg b/static/icons/navigation-off.svg new file mode 100644 index 0000000..f2d91b3 --- /dev/null +++ b/static/icons/navigation-off.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/navigation.svg b/static/icons/navigation.svg new file mode 100644 index 0000000..b2be022 --- /dev/null +++ b/static/icons/navigation.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/network.svg b/static/icons/network.svg new file mode 100644 index 0000000..0809c07 --- /dev/null +++ b/static/icons/network.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/newspaper.svg b/static/icons/newspaper.svg new file mode 100644 index 0000000..d4e95b3 --- /dev/null +++ b/static/icons/newspaper.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/nut-off.svg b/static/icons/nut-off.svg new file mode 100644 index 0000000..b9508eb --- /dev/null +++ b/static/icons/nut-off.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/nut.svg b/static/icons/nut.svg new file mode 100644 index 0000000..9e232b5 --- /dev/null +++ b/static/icons/nut.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/octagon.svg b/static/icons/octagon.svg new file mode 100644 index 0000000..8a550f1 --- /dev/null +++ b/static/icons/octagon.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/option.svg b/static/icons/option.svg new file mode 100644 index 0000000..d8ca90f --- /dev/null +++ b/static/icons/option.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/outdent.svg b/static/icons/outdent.svg new file mode 100644 index 0000000..bed6981 --- /dev/null +++ b/static/icons/outdent.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/package-2.svg b/static/icons/package-2.svg new file mode 100644 index 0000000..dbe5a5f --- /dev/null +++ b/static/icons/package-2.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/package-check.svg b/static/icons/package-check.svg new file mode 100644 index 0000000..2263dda --- /dev/null +++ b/static/icons/package-check.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/package-minus.svg b/static/icons/package-minus.svg new file mode 100644 index 0000000..5a3a3f6 --- /dev/null +++ b/static/icons/package-minus.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/package-open.svg b/static/icons/package-open.svg new file mode 100644 index 0000000..43cba38 --- /dev/null +++ b/static/icons/package-open.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/package-plus.svg b/static/icons/package-plus.svg new file mode 100644 index 0000000..e3dcea7 --- /dev/null +++ b/static/icons/package-plus.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/package-search.svg b/static/icons/package-search.svg new file mode 100644 index 0000000..a4a2875 --- /dev/null +++ b/static/icons/package-search.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/package-x.svg b/static/icons/package-x.svg new file mode 100644 index 0000000..8e0beb0 --- /dev/null +++ b/static/icons/package-x.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/package.svg b/static/icons/package.svg new file mode 100644 index 0000000..9e03077 --- /dev/null +++ b/static/icons/package.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/paint-bucket.svg b/static/icons/paint-bucket.svg new file mode 100644 index 0000000..56967be --- /dev/null +++ b/static/icons/paint-bucket.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/paintbrush-2.svg b/static/icons/paintbrush-2.svg new file mode 100644 index 0000000..2a05fbd --- /dev/null +++ b/static/icons/paintbrush-2.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/paintbrush.svg b/static/icons/paintbrush.svg new file mode 100644 index 0000000..b1b2dfa --- /dev/null +++ b/static/icons/paintbrush.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/palette.svg b/static/icons/palette.svg new file mode 100644 index 0000000..113ebe1 --- /dev/null +++ b/static/icons/palette.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/palmtree.svg b/static/icons/palmtree.svg new file mode 100644 index 0000000..6d82389 --- /dev/null +++ b/static/icons/palmtree.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/paperclip.svg b/static/icons/paperclip.svg new file mode 100644 index 0000000..047382d --- /dev/null +++ b/static/icons/paperclip.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/party-popper.svg b/static/icons/party-popper.svg new file mode 100644 index 0000000..4d3dafd --- /dev/null +++ b/static/icons/party-popper.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + diff --git a/static/icons/pause-circle.svg b/static/icons/pause-circle.svg new file mode 100644 index 0000000..39ce681 --- /dev/null +++ b/static/icons/pause-circle.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/pause-octagon.svg b/static/icons/pause-octagon.svg new file mode 100644 index 0000000..fc9521a --- /dev/null +++ b/static/icons/pause-octagon.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/pause.svg b/static/icons/pause.svg new file mode 100644 index 0000000..756b604 --- /dev/null +++ b/static/icons/pause.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/pen-tool.svg b/static/icons/pen-tool.svg new file mode 100644 index 0000000..be52e6d --- /dev/null +++ b/static/icons/pen-tool.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/pencil.svg b/static/icons/pencil.svg new file mode 100644 index 0000000..49ab50e --- /dev/null +++ b/static/icons/pencil.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/percent.svg b/static/icons/percent.svg new file mode 100644 index 0000000..3d18ed1 --- /dev/null +++ b/static/icons/percent.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/person-standing.svg b/static/icons/person-standing.svg new file mode 100644 index 0000000..2af3f24 --- /dev/null +++ b/static/icons/person-standing.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/phone-call.svg b/static/icons/phone-call.svg new file mode 100644 index 0000000..ce5f80b --- /dev/null +++ b/static/icons/phone-call.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/phone-forwarded.svg b/static/icons/phone-forwarded.svg new file mode 100644 index 0000000..7a86479 --- /dev/null +++ b/static/icons/phone-forwarded.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/phone-incoming.svg b/static/icons/phone-incoming.svg new file mode 100644 index 0000000..9493b36 --- /dev/null +++ b/static/icons/phone-incoming.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/phone-missed.svg b/static/icons/phone-missed.svg new file mode 100644 index 0000000..876970c --- /dev/null +++ b/static/icons/phone-missed.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/phone-off.svg b/static/icons/phone-off.svg new file mode 100644 index 0000000..0d8390f --- /dev/null +++ b/static/icons/phone-off.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/phone-outgoing.svg b/static/icons/phone-outgoing.svg new file mode 100644 index 0000000..3065330 --- /dev/null +++ b/static/icons/phone-outgoing.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/phone.svg b/static/icons/phone.svg new file mode 100644 index 0000000..b1972e9 --- /dev/null +++ b/static/icons/phone.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/pie-chart.svg b/static/icons/pie-chart.svg new file mode 100644 index 0000000..f128b88 --- /dev/null +++ b/static/icons/pie-chart.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/piggy-bank.svg b/static/icons/piggy-bank.svg new file mode 100644 index 0000000..54e0139 --- /dev/null +++ b/static/icons/piggy-bank.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/pin-off.svg b/static/icons/pin-off.svg new file mode 100644 index 0000000..ca54194 --- /dev/null +++ b/static/icons/pin-off.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/pin.svg b/static/icons/pin.svg new file mode 100644 index 0000000..0d2c2b3 --- /dev/null +++ b/static/icons/pin.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/pipette.svg b/static/icons/pipette.svg new file mode 100644 index 0000000..c57e264 --- /dev/null +++ b/static/icons/pipette.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/pizza.svg b/static/icons/pizza.svg new file mode 100644 index 0000000..9a0b1ad --- /dev/null +++ b/static/icons/pizza.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/plane.svg b/static/icons/plane.svg new file mode 100644 index 0000000..6f843bf --- /dev/null +++ b/static/icons/plane.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/play-circle.svg b/static/icons/play-circle.svg new file mode 100644 index 0000000..f814cfd --- /dev/null +++ b/static/icons/play-circle.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/play.svg b/static/icons/play.svg new file mode 100644 index 0000000..d1e20e2 --- /dev/null +++ b/static/icons/play.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/plug-2.svg b/static/icons/plug-2.svg new file mode 100644 index 0000000..04a756b --- /dev/null +++ b/static/icons/plug-2.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/plug-zap.svg b/static/icons/plug-zap.svg new file mode 100644 index 0000000..c58f547 --- /dev/null +++ b/static/icons/plug-zap.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/plug.svg b/static/icons/plug.svg new file mode 100644 index 0000000..16bb1e7 --- /dev/null +++ b/static/icons/plug.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/plus-circle.svg b/static/icons/plus-circle.svg new file mode 100644 index 0000000..413fb48 --- /dev/null +++ b/static/icons/plus-circle.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/plus-square.svg b/static/icons/plus-square.svg new file mode 100644 index 0000000..c8f4798 --- /dev/null +++ b/static/icons/plus-square.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/plus.svg b/static/icons/plus.svg new file mode 100644 index 0000000..1e1b1c5 --- /dev/null +++ b/static/icons/plus.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/pocket.svg b/static/icons/pocket.svg new file mode 100644 index 0000000..00376f4 --- /dev/null +++ b/static/icons/pocket.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/podcast.svg b/static/icons/podcast.svg new file mode 100644 index 0000000..555039f --- /dev/null +++ b/static/icons/podcast.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/pointer.svg b/static/icons/pointer.svg new file mode 100644 index 0000000..6431931 --- /dev/null +++ b/static/icons/pointer.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/pound-sterling.svg b/static/icons/pound-sterling.svg new file mode 100644 index 0000000..4bbf3d3 --- /dev/null +++ b/static/icons/pound-sterling.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/power-off.svg b/static/icons/power-off.svg new file mode 100644 index 0000000..3f7ffbd --- /dev/null +++ b/static/icons/power-off.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/power.svg b/static/icons/power.svg new file mode 100644 index 0000000..cc03e38 --- /dev/null +++ b/static/icons/power.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/printer.svg b/static/icons/printer.svg new file mode 100644 index 0000000..5df50ae --- /dev/null +++ b/static/icons/printer.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/puzzle.svg b/static/icons/puzzle.svg new file mode 100644 index 0000000..11822cf --- /dev/null +++ b/static/icons/puzzle.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/qr-code.svg b/static/icons/qr-code.svg new file mode 100644 index 0000000..b09a10d --- /dev/null +++ b/static/icons/qr-code.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + diff --git a/static/icons/quote.svg b/static/icons/quote.svg new file mode 100644 index 0000000..de2fa25 --- /dev/null +++ b/static/icons/quote.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/radio-receiver.svg b/static/icons/radio-receiver.svg new file mode 100644 index 0000000..1156035 --- /dev/null +++ b/static/icons/radio-receiver.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/radio.svg b/static/icons/radio.svg new file mode 100644 index 0000000..a141545 --- /dev/null +++ b/static/icons/radio.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/rectangle-horizontal.svg b/static/icons/rectangle-horizontal.svg new file mode 100644 index 0000000..3b67813 --- /dev/null +++ b/static/icons/rectangle-horizontal.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/rectangle-vertical.svg b/static/icons/rectangle-vertical.svg new file mode 100644 index 0000000..9395a8d --- /dev/null +++ b/static/icons/rectangle-vertical.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/recycle.svg b/static/icons/recycle.svg new file mode 100644 index 0000000..bd207b3 --- /dev/null +++ b/static/icons/recycle.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/redo-2.svg b/static/icons/redo-2.svg new file mode 100644 index 0000000..157ff12 --- /dev/null +++ b/static/icons/redo-2.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/redo.svg b/static/icons/redo.svg new file mode 100644 index 0000000..6e585d0 --- /dev/null +++ b/static/icons/redo.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/refresh-ccw.svg b/static/icons/refresh-ccw.svg new file mode 100644 index 0000000..7933c31 --- /dev/null +++ b/static/icons/refresh-ccw.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/refresh-cw.svg b/static/icons/refresh-cw.svg new file mode 100644 index 0000000..babf4fa --- /dev/null +++ b/static/icons/refresh-cw.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/refrigerator.svg b/static/icons/refrigerator.svg new file mode 100644 index 0000000..4884513 --- /dev/null +++ b/static/icons/refrigerator.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/regex.svg b/static/icons/regex.svg new file mode 100644 index 0000000..1b0287b --- /dev/null +++ b/static/icons/regex.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/repeat-1.svg b/static/icons/repeat-1.svg new file mode 100644 index 0000000..4b7fa56 --- /dev/null +++ b/static/icons/repeat-1.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/repeat.svg b/static/icons/repeat.svg new file mode 100644 index 0000000..b8dccd7 --- /dev/null +++ b/static/icons/repeat.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/reply-all.svg b/static/icons/reply-all.svg new file mode 100644 index 0000000..d6380ed --- /dev/null +++ b/static/icons/reply-all.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/reply.svg b/static/icons/reply.svg new file mode 100644 index 0000000..335bb63 --- /dev/null +++ b/static/icons/reply.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/rewind.svg b/static/icons/rewind.svg new file mode 100644 index 0000000..749f98d --- /dev/null +++ b/static/icons/rewind.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/rocket.svg b/static/icons/rocket.svg new file mode 100644 index 0000000..4ca5ac0 --- /dev/null +++ b/static/icons/rocket.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/rocking-chair.svg b/static/icons/rocking-chair.svg new file mode 100644 index 0000000..b7d5d25 --- /dev/null +++ b/static/icons/rocking-chair.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/rotate-3d.svg b/static/icons/rotate-3d.svg new file mode 100644 index 0000000..e701674 --- /dev/null +++ b/static/icons/rotate-3d.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/rotate-ccw.svg b/static/icons/rotate-ccw.svg new file mode 100644 index 0000000..f308977 --- /dev/null +++ b/static/icons/rotate-ccw.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/rotate-cw.svg b/static/icons/rotate-cw.svg new file mode 100644 index 0000000..12fe2bf --- /dev/null +++ b/static/icons/rotate-cw.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/rss.svg b/static/icons/rss.svg new file mode 100644 index 0000000..3b87036 --- /dev/null +++ b/static/icons/rss.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/ruler.svg b/static/icons/ruler.svg new file mode 100644 index 0000000..a2123f5 --- /dev/null +++ b/static/icons/ruler.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/russian-ruble.svg b/static/icons/russian-ruble.svg new file mode 100644 index 0000000..dc1295b --- /dev/null +++ b/static/icons/russian-ruble.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/sailboat.svg b/static/icons/sailboat.svg new file mode 100644 index 0000000..5749a41 --- /dev/null +++ b/static/icons/sailboat.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/save.svg b/static/icons/save.svg new file mode 100644 index 0000000..ddf6bf3 --- /dev/null +++ b/static/icons/save.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/scale-3d.svg b/static/icons/scale-3d.svg new file mode 100644 index 0000000..0c96b48 --- /dev/null +++ b/static/icons/scale-3d.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/scale.svg b/static/icons/scale.svg new file mode 100644 index 0000000..ae70a27 --- /dev/null +++ b/static/icons/scale.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/scaling.svg b/static/icons/scaling.svg new file mode 100644 index 0000000..d214cb9 --- /dev/null +++ b/static/icons/scaling.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/scan-face.svg b/static/icons/scan-face.svg new file mode 100644 index 0000000..d1227a0 --- /dev/null +++ b/static/icons/scan-face.svg @@ -0,0 +1,19 @@ + + + + + + + + + diff --git a/static/icons/scan-line.svg b/static/icons/scan-line.svg new file mode 100644 index 0000000..5d7a75d --- /dev/null +++ b/static/icons/scan-line.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/scan.svg b/static/icons/scan.svg new file mode 100644 index 0000000..33d067b --- /dev/null +++ b/static/icons/scan.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/scissors.svg b/static/icons/scissors.svg new file mode 100644 index 0000000..1bf1774 --- /dev/null +++ b/static/icons/scissors.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/screen-share-off.svg b/static/icons/screen-share-off.svg new file mode 100644 index 0000000..1fafd2c --- /dev/null +++ b/static/icons/screen-share-off.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/screen-share.svg b/static/icons/screen-share.svg new file mode 100644 index 0000000..bb3a854 --- /dev/null +++ b/static/icons/screen-share.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/scroll.svg b/static/icons/scroll.svg new file mode 100644 index 0000000..5f75973 --- /dev/null +++ b/static/icons/scroll.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/search.svg b/static/icons/search.svg new file mode 100644 index 0000000..89a8636 --- /dev/null +++ b/static/icons/search.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/send.svg b/static/icons/send.svg new file mode 100644 index 0000000..715d37c --- /dev/null +++ b/static/icons/send.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/separator-horizontal.svg b/static/icons/separator-horizontal.svg new file mode 100644 index 0000000..d9075fd --- /dev/null +++ b/static/icons/separator-horizontal.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/separator-vertical.svg b/static/icons/separator-vertical.svg new file mode 100644 index 0000000..76d5367 --- /dev/null +++ b/static/icons/separator-vertical.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/server-cog.svg b/static/icons/server-cog.svg new file mode 100644 index 0000000..7d977a0 --- /dev/null +++ b/static/icons/server-cog.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + diff --git a/static/icons/server-crash.svg b/static/icons/server-crash.svg new file mode 100644 index 0000000..cc86d31 --- /dev/null +++ b/static/icons/server-crash.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/server-off.svg b/static/icons/server-off.svg new file mode 100644 index 0000000..7d32fed --- /dev/null +++ b/static/icons/server-off.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/server.svg b/static/icons/server.svg new file mode 100644 index 0000000..b48d693 --- /dev/null +++ b/static/icons/server.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/settings-2.svg b/static/icons/settings-2.svg new file mode 100644 index 0000000..ad6f98d --- /dev/null +++ b/static/icons/settings-2.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/settings.svg b/static/icons/settings.svg new file mode 100644 index 0000000..c044792 --- /dev/null +++ b/static/icons/settings.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/share-2.svg b/static/icons/share-2.svg new file mode 100644 index 0000000..704394f --- /dev/null +++ b/static/icons/share-2.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/share.svg b/static/icons/share.svg new file mode 100644 index 0000000..69208c3 --- /dev/null +++ b/static/icons/share.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/sheet.svg b/static/icons/sheet.svg new file mode 100644 index 0000000..0617394 --- /dev/null +++ b/static/icons/sheet.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/shield-alert.svg b/static/icons/shield-alert.svg new file mode 100644 index 0000000..deccbb9 --- /dev/null +++ b/static/icons/shield-alert.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/shield-check.svg b/static/icons/shield-check.svg new file mode 100644 index 0000000..fc67169 --- /dev/null +++ b/static/icons/shield-check.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/shield-close.svg b/static/icons/shield-close.svg new file mode 100644 index 0000000..abc2515 --- /dev/null +++ b/static/icons/shield-close.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/shield-off.svg b/static/icons/shield-off.svg new file mode 100644 index 0000000..9f0cfde --- /dev/null +++ b/static/icons/shield-off.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/shield.svg b/static/icons/shield.svg new file mode 100644 index 0000000..343c137 --- /dev/null +++ b/static/icons/shield.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/shirt.svg b/static/icons/shirt.svg new file mode 100644 index 0000000..90bba75 --- /dev/null +++ b/static/icons/shirt.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/shopping-bag.svg b/static/icons/shopping-bag.svg new file mode 100644 index 0000000..bcead53 --- /dev/null +++ b/static/icons/shopping-bag.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/shopping-cart.svg b/static/icons/shopping-cart.svg new file mode 100644 index 0000000..6d9f884 --- /dev/null +++ b/static/icons/shopping-cart.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/shovel.svg b/static/icons/shovel.svg new file mode 100644 index 0000000..cb7dbdc --- /dev/null +++ b/static/icons/shovel.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/shower-head.svg b/static/icons/shower-head.svg new file mode 100644 index 0000000..5c2ccd6 --- /dev/null +++ b/static/icons/shower-head.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + diff --git a/static/icons/shrink.svg b/static/icons/shrink.svg new file mode 100644 index 0000000..0c6ce11 --- /dev/null +++ b/static/icons/shrink.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/shrub.svg b/static/icons/shrub.svg new file mode 100644 index 0000000..93bbbf8 --- /dev/null +++ b/static/icons/shrub.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/shuffle.svg b/static/icons/shuffle.svg new file mode 100644 index 0000000..a2282eb --- /dev/null +++ b/static/icons/shuffle.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/sidebar-close.svg b/static/icons/sidebar-close.svg new file mode 100644 index 0000000..d6895c7 --- /dev/null +++ b/static/icons/sidebar-close.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/sidebar-open.svg b/static/icons/sidebar-open.svg new file mode 100644 index 0000000..e9a5730 --- /dev/null +++ b/static/icons/sidebar-open.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/sidebar.svg b/static/icons/sidebar.svg new file mode 100644 index 0000000..25f0449 --- /dev/null +++ b/static/icons/sidebar.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/sigma.svg b/static/icons/sigma.svg new file mode 100644 index 0000000..254859a --- /dev/null +++ b/static/icons/sigma.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/signal-high.svg b/static/icons/signal-high.svg new file mode 100644 index 0000000..9e12de5 --- /dev/null +++ b/static/icons/signal-high.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/signal-low.svg b/static/icons/signal-low.svg new file mode 100644 index 0000000..3393764 --- /dev/null +++ b/static/icons/signal-low.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/signal-medium.svg b/static/icons/signal-medium.svg new file mode 100644 index 0000000..4245f67 --- /dev/null +++ b/static/icons/signal-medium.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/signal-zero.svg b/static/icons/signal-zero.svg new file mode 100644 index 0000000..188042a --- /dev/null +++ b/static/icons/signal-zero.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/signal.svg b/static/icons/signal.svg new file mode 100644 index 0000000..5e3726e --- /dev/null +++ b/static/icons/signal.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/siren.svg b/static/icons/siren.svg new file mode 100644 index 0000000..527976a --- /dev/null +++ b/static/icons/siren.svg @@ -0,0 +1,20 @@ + + + + + + + + + + diff --git a/static/icons/skip-back.svg b/static/icons/skip-back.svg new file mode 100644 index 0000000..1dfebcf --- /dev/null +++ b/static/icons/skip-back.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/skip-forward.svg b/static/icons/skip-forward.svg new file mode 100644 index 0000000..dcc0b54 --- /dev/null +++ b/static/icons/skip-forward.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/skull.svg b/static/icons/skull.svg new file mode 100644 index 0000000..6009869 --- /dev/null +++ b/static/icons/skull.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/slack.svg b/static/icons/slack.svg new file mode 100644 index 0000000..0c5bd14 --- /dev/null +++ b/static/icons/slack.svg @@ -0,0 +1,20 @@ + + + + + + + + + + diff --git a/static/icons/slash.svg b/static/icons/slash.svg new file mode 100644 index 0000000..56f6123 --- /dev/null +++ b/static/icons/slash.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/slice.svg b/static/icons/slice.svg new file mode 100644 index 0000000..3809180 --- /dev/null +++ b/static/icons/slice.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/sliders-horizontal.svg b/static/icons/sliders-horizontal.svg new file mode 100644 index 0000000..db5329e --- /dev/null +++ b/static/icons/sliders-horizontal.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + diff --git a/static/icons/sliders.svg b/static/icons/sliders.svg new file mode 100644 index 0000000..e7fb94c --- /dev/null +++ b/static/icons/sliders.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + diff --git a/static/icons/smartphone-charging.svg b/static/icons/smartphone-charging.svg new file mode 100644 index 0000000..cb49409 --- /dev/null +++ b/static/icons/smartphone-charging.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/smartphone.svg b/static/icons/smartphone.svg new file mode 100644 index 0000000..0f005b9 --- /dev/null +++ b/static/icons/smartphone.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/smile-plus.svg b/static/icons/smile-plus.svg new file mode 100644 index 0000000..c189090 --- /dev/null +++ b/static/icons/smile-plus.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/smile.svg b/static/icons/smile.svg new file mode 100644 index 0000000..41bc8f1 --- /dev/null +++ b/static/icons/smile.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/snowflake.svg b/static/icons/snowflake.svg new file mode 100644 index 0000000..9a3763a --- /dev/null +++ b/static/icons/snowflake.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/sofa.svg b/static/icons/sofa.svg new file mode 100644 index 0000000..9b26edc --- /dev/null +++ b/static/icons/sofa.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/sort-asc.svg b/static/icons/sort-asc.svg new file mode 100644 index 0000000..ab52fab --- /dev/null +++ b/static/icons/sort-asc.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/sort-desc.svg b/static/icons/sort-desc.svg new file mode 100644 index 0000000..59528b7 --- /dev/null +++ b/static/icons/sort-desc.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/speaker.svg b/static/icons/speaker.svg new file mode 100644 index 0000000..6f6fef3 --- /dev/null +++ b/static/icons/speaker.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/spline.svg b/static/icons/spline.svg new file mode 100644 index 0000000..6a2b782 --- /dev/null +++ b/static/icons/spline.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/sprout.svg b/static/icons/sprout.svg new file mode 100644 index 0000000..bb82fed --- /dev/null +++ b/static/icons/sprout.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/square.svg b/static/icons/square.svg new file mode 100644 index 0000000..f6ad269 --- /dev/null +++ b/static/icons/square.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/star-half.svg b/static/icons/star-half.svg new file mode 100644 index 0000000..7236c07 --- /dev/null +++ b/static/icons/star-half.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/star-off.svg b/static/icons/star-off.svg new file mode 100644 index 0000000..d993f91 --- /dev/null +++ b/static/icons/star-off.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/star.svg b/static/icons/star.svg new file mode 100644 index 0000000..47e496c --- /dev/null +++ b/static/icons/star.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/stethoscope.svg b/static/icons/stethoscope.svg new file mode 100644 index 0000000..0bc41fb --- /dev/null +++ b/static/icons/stethoscope.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/sticker.svg b/static/icons/sticker.svg new file mode 100644 index 0000000..cef1427 --- /dev/null +++ b/static/icons/sticker.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/sticky-note.svg b/static/icons/sticky-note.svg new file mode 100644 index 0000000..4012b89 --- /dev/null +++ b/static/icons/sticky-note.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/stop-circle.svg b/static/icons/stop-circle.svg new file mode 100644 index 0000000..8376238 --- /dev/null +++ b/static/icons/stop-circle.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/stretch-horizontal.svg b/static/icons/stretch-horizontal.svg new file mode 100644 index 0000000..3950cfe --- /dev/null +++ b/static/icons/stretch-horizontal.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/stretch-vertical.svg b/static/icons/stretch-vertical.svg new file mode 100644 index 0000000..e085640 --- /dev/null +++ b/static/icons/stretch-vertical.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/strikethrough.svg b/static/icons/strikethrough.svg new file mode 100644 index 0000000..3581a43 --- /dev/null +++ b/static/icons/strikethrough.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/subscript.svg b/static/icons/subscript.svg new file mode 100644 index 0000000..b201152 --- /dev/null +++ b/static/icons/subscript.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/sun-dim.svg b/static/icons/sun-dim.svg new file mode 100644 index 0000000..693057c --- /dev/null +++ b/static/icons/sun-dim.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + diff --git a/static/icons/sun-medium.svg b/static/icons/sun-medium.svg new file mode 100644 index 0000000..9852e70 --- /dev/null +++ b/static/icons/sun-medium.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + diff --git a/static/icons/sun-moon.svg b/static/icons/sun-moon.svg new file mode 100644 index 0000000..3a9239b --- /dev/null +++ b/static/icons/sun-moon.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + diff --git a/static/icons/sun-snow.svg b/static/icons/sun-snow.svg new file mode 100644 index 0000000..b29b6cc --- /dev/null +++ b/static/icons/sun-snow.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + diff --git a/static/icons/sun.svg b/static/icons/sun.svg new file mode 100644 index 0000000..3ecadd6 --- /dev/null +++ b/static/icons/sun.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + diff --git a/static/icons/sunrise.svg b/static/icons/sunrise.svg new file mode 100644 index 0000000..11c3f5b --- /dev/null +++ b/static/icons/sunrise.svg @@ -0,0 +1,20 @@ + + + + + + + + + + diff --git a/static/icons/sunset.svg b/static/icons/sunset.svg new file mode 100644 index 0000000..5e899c5 --- /dev/null +++ b/static/icons/sunset.svg @@ -0,0 +1,20 @@ + + + + + + + + + + diff --git a/static/icons/superscript.svg b/static/icons/superscript.svg new file mode 100644 index 0000000..b07c36a --- /dev/null +++ b/static/icons/superscript.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/swiss-franc.svg b/static/icons/swiss-franc.svg new file mode 100644 index 0000000..4e263b4 --- /dev/null +++ b/static/icons/swiss-franc.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/switch-camera.svg b/static/icons/switch-camera.svg new file mode 100644 index 0000000..8efaa2c --- /dev/null +++ b/static/icons/switch-camera.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/sword.svg b/static/icons/sword.svg new file mode 100644 index 0000000..ddb9735 --- /dev/null +++ b/static/icons/sword.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/swords.svg b/static/icons/swords.svg new file mode 100644 index 0000000..12fa5ef --- /dev/null +++ b/static/icons/swords.svg @@ -0,0 +1,20 @@ + + + + + + + + + + diff --git a/static/icons/syringe.svg b/static/icons/syringe.svg new file mode 100644 index 0000000..c343360 --- /dev/null +++ b/static/icons/syringe.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/table-2.svg b/static/icons/table-2.svg new file mode 100644 index 0000000..a60705c --- /dev/null +++ b/static/icons/table-2.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/table.svg b/static/icons/table.svg new file mode 100644 index 0000000..e70fd9d --- /dev/null +++ b/static/icons/table.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/tablet.svg b/static/icons/tablet.svg new file mode 100644 index 0000000..c2c0a87 --- /dev/null +++ b/static/icons/tablet.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/tag.svg b/static/icons/tag.svg new file mode 100644 index 0000000..efbbdb0 --- /dev/null +++ b/static/icons/tag.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/tags.svg b/static/icons/tags.svg new file mode 100644 index 0000000..d3c3a11 --- /dev/null +++ b/static/icons/tags.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/target.svg b/static/icons/target.svg new file mode 100644 index 0000000..260624a --- /dev/null +++ b/static/icons/target.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/tent.svg b/static/icons/tent.svg new file mode 100644 index 0000000..c1fd205 --- /dev/null +++ b/static/icons/tent.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/terminal-square.svg b/static/icons/terminal-square.svg new file mode 100644 index 0000000..beef5d3 --- /dev/null +++ b/static/icons/terminal-square.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/terminal.svg b/static/icons/terminal.svg new file mode 100644 index 0000000..fc7b7bf --- /dev/null +++ b/static/icons/terminal.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/text-cursor-input.svg b/static/icons/text-cursor-input.svg new file mode 100644 index 0000000..c21bd27 --- /dev/null +++ b/static/icons/text-cursor-input.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/text-cursor.svg b/static/icons/text-cursor.svg new file mode 100644 index 0000000..748a20a --- /dev/null +++ b/static/icons/text-cursor.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/thermometer-snowflake.svg b/static/icons/thermometer-snowflake.svg new file mode 100644 index 0000000..76f4085 --- /dev/null +++ b/static/icons/thermometer-snowflake.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/thermometer-sun.svg b/static/icons/thermometer-sun.svg new file mode 100644 index 0000000..be25fc8 --- /dev/null +++ b/static/icons/thermometer-sun.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/thermometer.svg b/static/icons/thermometer.svg new file mode 100644 index 0000000..808334d --- /dev/null +++ b/static/icons/thermometer.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/thumbs-down.svg b/static/icons/thumbs-down.svg new file mode 100644 index 0000000..1243b64 --- /dev/null +++ b/static/icons/thumbs-down.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/thumbs-up.svg b/static/icons/thumbs-up.svg new file mode 100644 index 0000000..5a5fcd9 --- /dev/null +++ b/static/icons/thumbs-up.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/ticket.svg b/static/icons/ticket.svg new file mode 100644 index 0000000..1361c6c --- /dev/null +++ b/static/icons/ticket.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/timer-off.svg b/static/icons/timer-off.svg new file mode 100644 index 0000000..e6854e4 --- /dev/null +++ b/static/icons/timer-off.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/timer-reset.svg b/static/icons/timer-reset.svg new file mode 100644 index 0000000..db90462 --- /dev/null +++ b/static/icons/timer-reset.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/timer.svg b/static/icons/timer.svg new file mode 100644 index 0000000..77bade6 --- /dev/null +++ b/static/icons/timer.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/toggle-left.svg b/static/icons/toggle-left.svg new file mode 100644 index 0000000..8d7c6da --- /dev/null +++ b/static/icons/toggle-left.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/toggle-right.svg b/static/icons/toggle-right.svg new file mode 100644 index 0000000..652658c --- /dev/null +++ b/static/icons/toggle-right.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/tornado.svg b/static/icons/tornado.svg new file mode 100644 index 0000000..1f69168 --- /dev/null +++ b/static/icons/tornado.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/toy-brick.svg b/static/icons/toy-brick.svg new file mode 100644 index 0000000..bed2415 --- /dev/null +++ b/static/icons/toy-brick.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/train.svg b/static/icons/train.svg new file mode 100644 index 0000000..a3a1a66 --- /dev/null +++ b/static/icons/train.svg @@ -0,0 +1,19 @@ + + + + + + + + + diff --git a/static/icons/trash-2.svg b/static/icons/trash-2.svg new file mode 100644 index 0000000..e34831f --- /dev/null +++ b/static/icons/trash-2.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/trash.svg b/static/icons/trash.svg new file mode 100644 index 0000000..74b6684 --- /dev/null +++ b/static/icons/trash.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/tree-deciduous.svg b/static/icons/tree-deciduous.svg new file mode 100644 index 0000000..24bfadd --- /dev/null +++ b/static/icons/tree-deciduous.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/tree-pine.svg b/static/icons/tree-pine.svg new file mode 100644 index 0000000..2dbd307 --- /dev/null +++ b/static/icons/tree-pine.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/trees.svg b/static/icons/trees.svg new file mode 100644 index 0000000..b1b4474 --- /dev/null +++ b/static/icons/trees.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/trello.svg b/static/icons/trello.svg new file mode 100644 index 0000000..bc39307 --- /dev/null +++ b/static/icons/trello.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/trending-down.svg b/static/icons/trending-down.svg new file mode 100644 index 0000000..e379601 --- /dev/null +++ b/static/icons/trending-down.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/trending-up.svg b/static/icons/trending-up.svg new file mode 100644 index 0000000..20e5225 --- /dev/null +++ b/static/icons/trending-up.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/triangle.svg b/static/icons/triangle.svg new file mode 100644 index 0000000..ca0b789 --- /dev/null +++ b/static/icons/triangle.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/trophy.svg b/static/icons/trophy.svg new file mode 100644 index 0000000..2854a6b --- /dev/null +++ b/static/icons/trophy.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/truck.svg b/static/icons/truck.svg new file mode 100644 index 0000000..49b2311 --- /dev/null +++ b/static/icons/truck.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/tv-2.svg b/static/icons/tv-2.svg new file mode 100644 index 0000000..f5a05b9 --- /dev/null +++ b/static/icons/tv-2.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/tv.svg b/static/icons/tv.svg new file mode 100644 index 0000000..cdfcfad --- /dev/null +++ b/static/icons/tv.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/twitch.svg b/static/icons/twitch.svg new file mode 100644 index 0000000..5d49c52 --- /dev/null +++ b/static/icons/twitch.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/twitter.svg b/static/icons/twitter.svg new file mode 100644 index 0000000..a3e00b1 --- /dev/null +++ b/static/icons/twitter.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/type.svg b/static/icons/type.svg new file mode 100644 index 0000000..6128bdd --- /dev/null +++ b/static/icons/type.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/umbrella.svg b/static/icons/umbrella.svg new file mode 100644 index 0000000..82613f6 --- /dev/null +++ b/static/icons/umbrella.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/underline.svg b/static/icons/underline.svg new file mode 100644 index 0000000..f2827da --- /dev/null +++ b/static/icons/underline.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/undo-2.svg b/static/icons/undo-2.svg new file mode 100644 index 0000000..5ed8daf --- /dev/null +++ b/static/icons/undo-2.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/undo.svg b/static/icons/undo.svg new file mode 100644 index 0000000..a647749 --- /dev/null +++ b/static/icons/undo.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/unlink-2.svg b/static/icons/unlink-2.svg new file mode 100644 index 0000000..dd01893 --- /dev/null +++ b/static/icons/unlink-2.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/unlink.svg b/static/icons/unlink.svg new file mode 100644 index 0000000..e82005f --- /dev/null +++ b/static/icons/unlink.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/static/icons/unlock.svg b/static/icons/unlock.svg new file mode 100644 index 0000000..0e6fc78 --- /dev/null +++ b/static/icons/unlock.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/upload-cloud.svg b/static/icons/upload-cloud.svg new file mode 100644 index 0000000..8742ec6 --- /dev/null +++ b/static/icons/upload-cloud.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/upload.svg b/static/icons/upload.svg new file mode 100644 index 0000000..2f861e6 --- /dev/null +++ b/static/icons/upload.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/usb.svg b/static/icons/usb.svg new file mode 100644 index 0000000..1daba79 --- /dev/null +++ b/static/icons/usb.svg @@ -0,0 +1,19 @@ + + + + + + + + + diff --git a/static/icons/user-check.svg b/static/icons/user-check.svg new file mode 100644 index 0000000..8fb3156 --- /dev/null +++ b/static/icons/user-check.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/user-cog.svg b/static/icons/user-cog.svg new file mode 100644 index 0000000..c6f9c95 --- /dev/null +++ b/static/icons/user-cog.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + diff --git a/static/icons/user-minus.svg b/static/icons/user-minus.svg new file mode 100644 index 0000000..747a34c --- /dev/null +++ b/static/icons/user-minus.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/user-plus.svg b/static/icons/user-plus.svg new file mode 100644 index 0000000..32b8435 --- /dev/null +++ b/static/icons/user-plus.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/user-x.svg b/static/icons/user-x.svg new file mode 100644 index 0000000..0929815 --- /dev/null +++ b/static/icons/user-x.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/user.svg b/static/icons/user.svg new file mode 100644 index 0000000..8e61592 --- /dev/null +++ b/static/icons/user.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/users.svg b/static/icons/users.svg new file mode 100644 index 0000000..1dcebab --- /dev/null +++ b/static/icons/users.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/utensils-crossed.svg b/static/icons/utensils-crossed.svg new file mode 100644 index 0000000..470edbe --- /dev/null +++ b/static/icons/utensils-crossed.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/utensils.svg b/static/icons/utensils.svg new file mode 100644 index 0000000..d51eda8 --- /dev/null +++ b/static/icons/utensils.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/vegan.svg b/static/icons/vegan.svg new file mode 100644 index 0000000..39030a0 --- /dev/null +++ b/static/icons/vegan.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/venetian-mask.svg b/static/icons/venetian-mask.svg new file mode 100644 index 0000000..a1db42e --- /dev/null +++ b/static/icons/venetian-mask.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/verified.svg b/static/icons/verified.svg new file mode 100644 index 0000000..0226c9b --- /dev/null +++ b/static/icons/verified.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/vibrate-off.svg b/static/icons/vibrate-off.svg new file mode 100644 index 0000000..f7484d4 --- /dev/null +++ b/static/icons/vibrate-off.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/vibrate.svg b/static/icons/vibrate.svg new file mode 100644 index 0000000..2bce33f --- /dev/null +++ b/static/icons/vibrate.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/video-off.svg b/static/icons/video-off.svg new file mode 100644 index 0000000..79967eb --- /dev/null +++ b/static/icons/video-off.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/video.svg b/static/icons/video.svg new file mode 100644 index 0000000..e6dcc9b --- /dev/null +++ b/static/icons/video.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/view.svg b/static/icons/view.svg new file mode 100644 index 0000000..f4d1850 --- /dev/null +++ b/static/icons/view.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/voicemail.svg b/static/icons/voicemail.svg new file mode 100644 index 0000000..6c346cc --- /dev/null +++ b/static/icons/voicemail.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/volume-1.svg b/static/icons/volume-1.svg new file mode 100644 index 0000000..c6f9a5b --- /dev/null +++ b/static/icons/volume-1.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/volume-2.svg b/static/icons/volume-2.svg new file mode 100644 index 0000000..b1622de --- /dev/null +++ b/static/icons/volume-2.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/volume-x.svg b/static/icons/volume-x.svg new file mode 100644 index 0000000..6a67192 --- /dev/null +++ b/static/icons/volume-x.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/volume.svg b/static/icons/volume.svg new file mode 100644 index 0000000..bdeeb83 --- /dev/null +++ b/static/icons/volume.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/wallet.svg b/static/icons/wallet.svg new file mode 100644 index 0000000..0031bac --- /dev/null +++ b/static/icons/wallet.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/wand-2.svg b/static/icons/wand-2.svg new file mode 100644 index 0000000..5a756e4 --- /dev/null +++ b/static/icons/wand-2.svg @@ -0,0 +1,20 @@ + + + + + + + + + + diff --git a/static/icons/wand.svg b/static/icons/wand.svg new file mode 100644 index 0000000..3544b98 --- /dev/null +++ b/static/icons/wand.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + diff --git a/static/icons/watch.svg b/static/icons/watch.svg new file mode 100644 index 0000000..b129d06 --- /dev/null +++ b/static/icons/watch.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/waves.svg b/static/icons/waves.svg new file mode 100644 index 0000000..67bdab1 --- /dev/null +++ b/static/icons/waves.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/webcam.svg b/static/icons/webcam.svg new file mode 100644 index 0000000..f846af3 --- /dev/null +++ b/static/icons/webcam.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/webhook.svg b/static/icons/webhook.svg new file mode 100644 index 0000000..a73e537 --- /dev/null +++ b/static/icons/webhook.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/wheat-off.svg b/static/icons/wheat-off.svg new file mode 100644 index 0000000..0f83244 --- /dev/null +++ b/static/icons/wheat-off.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + diff --git a/static/icons/wheat.svg b/static/icons/wheat.svg new file mode 100644 index 0000000..30bb265 --- /dev/null +++ b/static/icons/wheat.svg @@ -0,0 +1,20 @@ + + + + + + + + + + diff --git a/static/icons/wifi-off.svg b/static/icons/wifi-off.svg new file mode 100644 index 0000000..379dab3 --- /dev/null +++ b/static/icons/wifi-off.svg @@ -0,0 +1,19 @@ + + + + + + + + + diff --git a/static/icons/wifi.svg b/static/icons/wifi.svg new file mode 100644 index 0000000..f0ad5eb --- /dev/null +++ b/static/icons/wifi.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/wind.svg b/static/icons/wind.svg new file mode 100644 index 0000000..4299161 --- /dev/null +++ b/static/icons/wind.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/wine-off.svg b/static/icons/wine-off.svg new file mode 100644 index 0000000..108a9cc --- /dev/null +++ b/static/icons/wine-off.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/static/icons/wine.svg b/static/icons/wine.svg new file mode 100644 index 0000000..fbddb1d --- /dev/null +++ b/static/icons/wine.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/wrap-text.svg b/static/icons/wrap-text.svg new file mode 100644 index 0000000..bfc9e74 --- /dev/null +++ b/static/icons/wrap-text.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/wrench.svg b/static/icons/wrench.svg new file mode 100644 index 0000000..7a3c0e0 --- /dev/null +++ b/static/icons/wrench.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/x-circle.svg b/static/icons/x-circle.svg new file mode 100644 index 0000000..0e28b25 --- /dev/null +++ b/static/icons/x-circle.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/x-octagon.svg b/static/icons/x-octagon.svg new file mode 100644 index 0000000..77c4f6e --- /dev/null +++ b/static/icons/x-octagon.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/x-square.svg b/static/icons/x-square.svg new file mode 100644 index 0000000..f343ec1 --- /dev/null +++ b/static/icons/x-square.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/icons/x.svg b/static/icons/x.svg new file mode 100644 index 0000000..559b116 --- /dev/null +++ b/static/icons/x.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/youtube.svg b/static/icons/youtube.svg new file mode 100644 index 0000000..24d82a7 --- /dev/null +++ b/static/icons/youtube.svg @@ -0,0 +1,14 @@ + + + + diff --git a/static/icons/zap-off.svg b/static/icons/zap-off.svg new file mode 100644 index 0000000..238fbcd --- /dev/null +++ b/static/icons/zap-off.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/zap.svg b/static/icons/zap.svg new file mode 100644 index 0000000..c5d0d35 --- /dev/null +++ b/static/icons/zap.svg @@ -0,0 +1,13 @@ + + + diff --git a/static/icons/zoom-in.svg b/static/icons/zoom-in.svg new file mode 100644 index 0000000..0a15151 --- /dev/null +++ b/static/icons/zoom-in.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/static/icons/zoom-out.svg b/static/icons/zoom-out.svg new file mode 100644 index 0000000..049de6c --- /dev/null +++ b/static/icons/zoom-out.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/static/input_style.css b/static/input_style.css new file mode 100644 index 0000000..2eccdc8 --- /dev/null +++ b/static/input_style.css @@ -0,0 +1,221 @@ +@import "tailwindcss"; +@import "./theme.css" layer(theme); + +body { + @apply text-gray-950 dark:text-gray-50; +} + +main { + @apply flex flex-col gap-4 p-0 min-h-screen bg-gray-100 text-gray-950 dark:bg-gray-900 dark:text-gray-50; +} + +header { + @apply flex flex-col justify-stretch; +} + +nav { + @apply flex bg-gray-950 *:text-gray-50 *:flex-1 *:text-xl p-6; +} + +code { + speak-as: literal-punctuation; + @apply inline-block bg-gray-800 text-gray-50; +} + +pre { + @apply bg-gray-950 rounded-lg border-1 border-gray-300 mb-4 p-1; +} + +pre > code { + @apply !bg-gray-950 p-1; +} + +footer { + @apply bg-gray-950 text-gray-50 text-lg flex p-6; +} + +h1 { + @apply text-6xl mb-2 mt-4; +} + +h2 { + @apply text-5xl mb-2 mt-4; +} + +h3 { + @apply text-4xl mb-2 mt-4; +} + +h4 { + @apply text-3xl mb-2 mt-4; +} + +h5 { + @apply text-2xl mb-2 mt-4; +} + +details { + @apply rounded-lg bg-gray-200 text-gray-950 p-2 text-xl; +} + +aside { + @apply p-2 rounded-lg bg-gray-100 text-gray-950; +} + +aside > mark { + @apply p-1 rounded-sm bg-gray-300; +} + +aside > mark.info { + @apply bg-purple-300; +} + +aside > mark.warning { + @apply bg-yellow-300; +} + +aside > mark.alert { + @apply bg-red-300; +} + +card { + @apply flex flex-col bg-gray-200 dark:bg-gray-800 dark:text-gray-100 max-w-md rounded-lg shadow-lg outline; +} + +card > top { + @apply text-3xl font-bold text-center dark:text-gray-50; +} + +card > top > img { + @apply rounded-t-lg; +} + +card > top > shape { + @apply rounded-t-lg; +} + +card > bottom { + @apply flex text-gray-50 p-3 justify-stretch *:flex-1 gap-2; +} + +card > middle { + @apply flex flex-col text-xl p-4 gap-4; +} + +label { + @apply font-bold text-gray-950 dark:text-gray-100; +} + +input { + @apply shadow-sm outline rounded-sm p-1 bg-gray-200 text-gray-950 dark:text-gray-950; +} + +input::placeholder { + @apply text-gray-700 dark:text-gray-700; +} + +button { + @apply rounded-sm shadow-sm bg-gray-600 text-gray-50 dark:bg-gray-300 dark:text-gray-950 p-3; +} + +@utility btn-hover { + @apply !bg-gray-900 !text-gray-50; +} + +@utility btn-alert { + @apply !bg-red-800 !text-gray-50; +} + +@utility btn-warning { + @apply !bg-yellow-800 !text-gray-50; +} + +@utility btn-primary { + @apply !bg-teal-300 !text-gray-950; +} + +shape { + @apply bg-gray-300 flex flex-col justify-center items-center aspect-square p-1 text-gray-950; +} + +shape.tiny { + @apply min-w-15 w-15 max-w-15 p-0; +} + +shape.xxs { + @apply min-w-30 w-30 max-w-30 p-0; +} + +shape.xs { + @apply min-w-xs w-xs max-w-xs; +} + +shape.sm { + @apply min-w-sm w-sm max-w-sm; +} + +shape.md { + @apply min-w-md w-md max-w-md; +} + +shape.lg { + @apply min-w-lg w-lg max-w-lg; +} + +shape.xl { + @apply min-w-xl w-xl max-w-xl; +} + +shape.video { + @apply w-full aspect-video; +} + +block { + @apply flex flex-col p-4 mb-10 gap-4; +} + +bar { + @apply flex flex-row p-4 gap-4; +} + +stack { + display: grid; + grid-template-rows: 1fr; + grid-template-columns: 1fr; + grid-template-areas: "cover"; +} + +stack > * { + width: 100%; + height: 100%; + position: relative; + grid-area: cover; +} + +stack > .top { + z-index: 10; +} + +grid { + @apply grid gap-2 p-4; +} + +hr { + visibility: hidden; +} + +select { + @apply text-red-50 bg-gray-800 rounded-lg border-1 border-gray-600 p-1; +} + +table { + @apply bg-gray-200 dark:bg-gray-800 shadow-lg rounded-sm; +} + +@utility table-header { + @apply text-gray-50 bg-gray-950 *:border-x *:border-black; +} + +@utility table-row { + @apply *:border-2 *:border-black *:p-1 hover:bg-gray-100 hover:text-gray-950; +} diff --git a/static/js/alpine.js b/static/js/alpine.js new file mode 100644 index 0000000..2fdd6ec --- /dev/null +++ b/static/js/alpine.js @@ -0,0 +1,5 @@ +(()=>{var nt=!1,it=!1,W=[],ot=-1;function Ut(e){Rn(e)}function Rn(e){W.includes(e)||W.push(e),Mn()}function Wt(e){let t=W.indexOf(e);t!==-1&&t>ot&&W.splice(t,1)}function Mn(){!it&&!nt&&(nt=!0,queueMicrotask(Nn))}function Nn(){nt=!1,it=!0;for(let e=0;ee.effect(t,{scheduler:r=>{st?Ut(r):r()}}),at=e.raw}function ct(e){N=e}function Yt(e){let t=()=>{};return[n=>{let i=N(n);return e._x_effects||(e._x_effects=new Set,e._x_runEffects=()=>{e._x_effects.forEach(o=>o())}),e._x_effects.add(i),t=()=>{i!==void 0&&(e._x_effects.delete(i),$(i))},i},()=>{t()}]}function ve(e,t){let r=!0,n,i=N(()=>{let o=e();JSON.stringify(o),r?n=o:queueMicrotask(()=>{t(o,n),n=o}),r=!1});return()=>$(i)}var Xt=[],Zt=[],Qt=[];function er(e){Qt.push(e)}function te(e,t){typeof t=="function"?(e._x_cleanups||(e._x_cleanups=[]),e._x_cleanups.push(t)):(t=e,Zt.push(t))}function Ae(e){Xt.push(e)}function Oe(e,t,r){e._x_attributeCleanups||(e._x_attributeCleanups={}),e._x_attributeCleanups[t]||(e._x_attributeCleanups[t]=[]),e._x_attributeCleanups[t].push(r)}function lt(e,t){e._x_attributeCleanups&&Object.entries(e._x_attributeCleanups).forEach(([r,n])=>{(t===void 0||t.includes(r))&&(n.forEach(i=>i()),delete e._x_attributeCleanups[r])})}function tr(e){for(e._x_effects?.forEach(Wt);e._x_cleanups?.length;)e._x_cleanups.pop()()}var ut=new MutationObserver(mt),ft=!1;function ue(){ut.observe(document,{subtree:!0,childList:!0,attributes:!0,attributeOldValue:!0}),ft=!0}function dt(){kn(),ut.disconnect(),ft=!1}var le=[];function kn(){let e=ut.takeRecords();le.push(()=>e.length>0&&mt(e));let t=le.length;queueMicrotask(()=>{if(le.length===t)for(;le.length>0;)le.shift()()})}function m(e){if(!ft)return e();dt();let t=e();return ue(),t}var pt=!1,Se=[];function rr(){pt=!0}function nr(){pt=!1,mt(Se),Se=[]}function mt(e){if(pt){Se=Se.concat(e);return}let t=[],r=new Set,n=new Map,i=new Map;for(let o=0;o{s.nodeType===1&&s._x_marker&&r.add(s)}),e[o].addedNodes.forEach(s=>{if(s.nodeType===1){if(r.has(s)){r.delete(s);return}s._x_marker||t.push(s)}})),e[o].type==="attributes")){let s=e[o].target,a=e[o].attributeName,c=e[o].oldValue,l=()=>{n.has(s)||n.set(s,[]),n.get(s).push({name:a,value:s.getAttribute(a)})},u=()=>{i.has(s)||i.set(s,[]),i.get(s).push(a)};s.hasAttribute(a)&&c===null?l():s.hasAttribute(a)?(u(),l()):u()}i.forEach((o,s)=>{lt(s,o)}),n.forEach((o,s)=>{Xt.forEach(a=>a(s,o))});for(let o of r)t.some(s=>s.contains(o))||Zt.forEach(s=>s(o));for(let o of t)o.isConnected&&Qt.forEach(s=>s(o));t=null,r=null,n=null,i=null}function Ce(e){return z(B(e))}function k(e,t,r){return e._x_dataStack=[t,...B(r||e)],()=>{e._x_dataStack=e._x_dataStack.filter(n=>n!==t)}}function B(e){return e._x_dataStack?e._x_dataStack:typeof ShadowRoot=="function"&&e instanceof ShadowRoot?B(e.host):e.parentNode?B(e.parentNode):[]}function z(e){return new Proxy({objects:e},Dn)}var Dn={ownKeys({objects:e}){return Array.from(new Set(e.flatMap(t=>Object.keys(t))))},has({objects:e},t){return t==Symbol.unscopables?!1:e.some(r=>Object.prototype.hasOwnProperty.call(r,t)||Reflect.has(r,t))},get({objects:e},t,r){return t=="toJSON"?Pn:Reflect.get(e.find(n=>Reflect.has(n,t))||{},t,r)},set({objects:e},t,r,n){let i=e.find(s=>Object.prototype.hasOwnProperty.call(s,t))||e[e.length-1],o=Object.getOwnPropertyDescriptor(i,t);return o?.set&&o?.get?o.set.call(n,r)||!0:Reflect.set(i,t,r)}};function Pn(){return Reflect.ownKeys(this).reduce((t,r)=>(t[r]=Reflect.get(this,r),t),{})}function Te(e){let t=n=>typeof n=="object"&&!Array.isArray(n)&&n!==null,r=(n,i="")=>{Object.entries(Object.getOwnPropertyDescriptors(n)).forEach(([o,{value:s,enumerable:a}])=>{if(a===!1||s===void 0||typeof s=="object"&&s!==null&&s.__v_skip)return;let c=i===""?o:`${i}.${o}`;typeof s=="object"&&s!==null&&s._x_interceptor?n[o]=s.initialize(e,c,o):t(s)&&s!==n&&!(s instanceof Element)&&r(s,c)})};return r(e)}function Re(e,t=()=>{}){let r={initialValue:void 0,_x_interceptor:!0,initialize(n,i,o){return e(this.initialValue,()=>In(n,i),s=>ht(n,i,s),i,o)}};return t(r),n=>{if(typeof n=="object"&&n!==null&&n._x_interceptor){let i=r.initialize.bind(r);r.initialize=(o,s,a)=>{let c=n.initialize(o,s,a);return r.initialValue=c,i(o,s,a)}}else r.initialValue=n;return r}}function In(e,t){return t.split(".").reduce((r,n)=>r[n],e)}function ht(e,t,r){if(typeof t=="string"&&(t=t.split(".")),t.length===1)e[t[0]]=r;else{if(t.length===0)throw error;return e[t[0]]||(e[t[0]]={}),ht(e[t[0]],t.slice(1),r)}}var ir={};function y(e,t){ir[e]=t}function fe(e,t){let r=Ln(t);return Object.entries(ir).forEach(([n,i])=>{Object.defineProperty(e,`$${n}`,{get(){return i(t,r)},enumerable:!1})}),e}function Ln(e){let[t,r]=_t(e),n={interceptor:Re,...t};return te(e,r),n}function or(e,t,r,...n){try{return r(...n)}catch(i){re(i,e,t)}}function re(e,t,r=void 0){e=Object.assign(e??{message:"No error message given."},{el:t,expression:r}),console.warn(`Alpine Expression Error: ${e.message} + +${r?'Expression: "'+r+`" + +`:""}`,t),setTimeout(()=>{throw e},0)}var Me=!0;function ke(e){let t=Me;Me=!1;let r=e();return Me=t,r}function R(e,t,r={}){let n;return x(e,t)(i=>n=i,r),n}function x(...e){return sr(...e)}var sr=xt;function ar(e){sr=e}function xt(e,t){let r={};fe(r,e);let n=[r,...B(e)],i=typeof t=="function"?$n(n,t):Fn(n,t,e);return or.bind(null,e,t,i)}function $n(e,t){return(r=()=>{},{scope:n={},params:i=[]}={})=>{let o=t.apply(z([n,...e]),i);Ne(r,o)}}var gt={};function jn(e,t){if(gt[e])return gt[e];let r=Object.getPrototypeOf(async function(){}).constructor,n=/^[\n\s]*if.*\(.*\)/.test(e.trim())||/^(let|const)\s/.test(e.trim())?`(async()=>{ ${e} })()`:e,o=(()=>{try{let s=new r(["__self","scope"],`with (scope) { __self.result = ${n} }; __self.finished = true; return __self.result;`);return Object.defineProperty(s,"name",{value:`[Alpine] ${e}`}),s}catch(s){return re(s,t,e),Promise.resolve()}})();return gt[e]=o,o}function Fn(e,t,r){let n=jn(t,r);return(i=()=>{},{scope:o={},params:s=[]}={})=>{n.result=void 0,n.finished=!1;let a=z([o,...e]);if(typeof n=="function"){let c=n(n,a).catch(l=>re(l,r,t));n.finished?(Ne(i,n.result,a,s,r),n.result=void 0):c.then(l=>{Ne(i,l,a,s,r)}).catch(l=>re(l,r,t)).finally(()=>n.result=void 0)}}}function Ne(e,t,r,n,i){if(Me&&typeof t=="function"){let o=t.apply(r,n);o instanceof Promise?o.then(s=>Ne(e,s,r,n)).catch(s=>re(s,i,t)):e(o)}else typeof t=="object"&&t instanceof Promise?t.then(o=>e(o)):e(t)}var wt="x-";function C(e=""){return wt+e}function cr(e){wt=e}var De={};function d(e,t){return De[e]=t,{before(r){if(!De[r]){console.warn(String.raw`Cannot find directive \`${r}\`. \`${e}\` will use the default order of execution`);return}let n=G.indexOf(r);G.splice(n>=0?n:G.indexOf("DEFAULT"),0,e)}}}function lr(e){return Object.keys(De).includes(e)}function pe(e,t,r){if(t=Array.from(t),e._x_virtualDirectives){let o=Object.entries(e._x_virtualDirectives).map(([a,c])=>({name:a,value:c})),s=Et(o);o=o.map(a=>s.find(c=>c.name===a.name)?{name:`x-bind:${a.name}`,value:`"${a.value}"`}:a),t=t.concat(o)}let n={};return t.map(dr((o,s)=>n[o]=s)).filter(mr).map(zn(n,r)).sort(Kn).map(o=>Bn(e,o))}function Et(e){return Array.from(e).map(dr()).filter(t=>!mr(t))}var yt=!1,de=new Map,ur=Symbol();function fr(e){yt=!0;let t=Symbol();ur=t,de.set(t,[]);let r=()=>{for(;de.get(t).length;)de.get(t).shift()();de.delete(t)},n=()=>{yt=!1,r()};e(r),n()}function _t(e){let t=[],r=a=>t.push(a),[n,i]=Yt(e);return t.push(i),[{Alpine:K,effect:n,cleanup:r,evaluateLater:x.bind(x,e),evaluate:R.bind(R,e)},()=>t.forEach(a=>a())]}function Bn(e,t){let r=()=>{},n=De[t.type]||r,[i,o]=_t(e);Oe(e,t.original,o);let s=()=>{e._x_ignore||e._x_ignoreSelf||(n.inline&&n.inline(e,t,i),n=n.bind(n,e,t,i),yt?de.get(ur).push(n):n())};return s.runCleanups=o,s}var Pe=(e,t)=>({name:r,value:n})=>(r.startsWith(e)&&(r=r.replace(e,t)),{name:r,value:n}),Ie=e=>e;function dr(e=()=>{}){return({name:t,value:r})=>{let{name:n,value:i}=pr.reduce((o,s)=>s(o),{name:t,value:r});return n!==t&&e(n,t),{name:n,value:i}}}var pr=[];function ne(e){pr.push(e)}function mr({name:e}){return hr().test(e)}var hr=()=>new RegExp(`^${wt}([^:^.]+)\\b`);function zn(e,t){return({name:r,value:n})=>{let i=r.match(hr()),o=r.match(/:([a-zA-Z0-9\-_:]+)/),s=r.match(/\.[^.\]]+(?=[^\]]*$)/g)||[],a=t||e[r]||r;return{type:i?i[1]:null,value:o?o[1]:null,modifiers:s.map(c=>c.replace(".","")),expression:n,original:a}}}var bt="DEFAULT",G=["ignore","ref","data","id","anchor","bind","init","for","model","modelable","transition","show","if",bt,"teleport"];function Kn(e,t){let r=G.indexOf(e.type)===-1?bt:e.type,n=G.indexOf(t.type)===-1?bt:t.type;return G.indexOf(r)-G.indexOf(n)}function J(e,t,r={}){e.dispatchEvent(new CustomEvent(t,{detail:r,bubbles:!0,composed:!0,cancelable:!0}))}function D(e,t){if(typeof ShadowRoot=="function"&&e instanceof ShadowRoot){Array.from(e.children).forEach(i=>D(i,t));return}let r=!1;if(t(e,()=>r=!0),r)return;let n=e.firstElementChild;for(;n;)D(n,t,!1),n=n.nextElementSibling}function E(e,...t){console.warn(`Alpine Warning: ${e}`,...t)}var _r=!1;function gr(){_r&&E("Alpine has already been initialized on this page. Calling Alpine.start() more than once can cause problems."),_r=!0,document.body||E("Unable to initialize. Trying to load Alpine before `` is available. Did you forget to add `defer` in Alpine's ` + +

« Admin {{ .Table }}

+ + + + + + + + + + + + + + + +
#
+
diff --git a/views/admin/table/index.html b/views/admin/table/index.html new file mode 100644 index 0000000..fa30432 --- /dev/null +++ b/views/admin/table/index.html @@ -0,0 +1,19 @@ + + +
+

Admin Rows

+ + +
    + +
+
+
diff --git a/views/admin/table/new.html b/views/admin/table/new.html new file mode 100644 index 0000000..d005f4a --- /dev/null +++ b/views/admin/table/new.html @@ -0,0 +1,26 @@ + + +

«Admin {{ .Table }}

+ + +
+ +

New {{ .Table }}

+ + + + + + + + +
+
+
diff --git a/views/admin/table/view.html b/views/admin/table/view.html new file mode 100644 index 0000000..7f428fb --- /dev/null +++ b/views/admin/table/view.html @@ -0,0 +1,26 @@ + + +

«Admin {{ .Table }}

+ + +
+ +

{{ .Table }} : {{ .Id }}

+ + + + + + + + +
+
+
diff --git a/views/layouts/main.html b/views/layouts/main.html new file mode 100644 index 0000000..5ae7108 --- /dev/null +++ b/views/layouts/main.html @@ -0,0 +1,49 @@ + + + + + + + + + + + + + ZedShaw.games + + +
+ + + + + + Live + Streams + Games + Register + Login +
+ +
+ {{embed}} +
+ + + +