This repo now only contains the web app.
I did this because they are 2 separate concerns and I have diverged so far from the original repo. I didn't start a new repo because it contains valuable history of all the people who contributed to it. Additionally if there is an issue with this we can revert, but I rather not. Forks are forks.
1
.envrc
|
@ -1 +0,0 @@
|
|||
export TODO_FILE=$PWD/TODO
|
5
.gitignore
vendored
|
@ -1,5 +1,2 @@
|
|||
TODO.bak
|
||||
*.mp4
|
||||
channels/index.html
|
||||
node_modules
|
||||
.DS_Store
|
||||
tags
|
||||
|
|
17
Makefile
|
@ -1,4 +1,17 @@
|
|||
dist: fake
|
||||
rsync -avzP --exclude .git/ ./ charon:/www/damus.io/
|
||||
|
||||
all: fake
|
||||
@echo "you don't need to build anything."
|
||||
|
||||
tags: fake
|
||||
find js -name '*.js' | grep -v noble-secp256k1 | xargs ctags > "$@"
|
||||
|
||||
emojiregex: fake
|
||||
@curl -sL 'https://raw.githubusercontent.com/mathiasbynens/emoji-test-regex-pattern/main/dist/latest/javascript.txt'
|
||||
|
||||
dist:
|
||||
rsync -avzP --delete ./ charon:/www/damus.io/web/
|
||||
|
||||
dist-staging:
|
||||
rsync -avzP ./ charon:/www/damus.io/web-staging/
|
||||
|
||||
.PHONY: fake
|
||||
|
|
63
README.md
|
@ -1,23 +1,62 @@
|
|||
# Damus Web
|
||||
|
||||
# damus.io
|
||||
Here lies the code for the Damus web app, a client for the Nostr protocol. The
|
||||
goal of this client is to be a better version of Twitter, but not to reproduce
|
||||
all of it's functionality.
|
||||
|
||||
The damus.io website
|
||||
[Issue Tracker](https://todo.sr.ht/~tomtom/damus-web-issues)
|
||||
|
||||
## Damus Web
|
||||
## Roadmap
|
||||
|
||||
You can find the damus web app in the `web` directory
|
||||
Here is what is confirmed for development.
|
||||
|
||||
## Contributing
|
||||
- [ ] Share event
|
||||
- [ ] Profile view (with ability to follow user)
|
||||
- [ ] Edit metadata (from profile view)
|
||||
- [ ] Global timeline view
|
||||
- [ ] Notifications view
|
||||
- [ ] Settings view (with ability to configure relays)
|
||||
- [ ] Multiple reaction picker
|
||||
- [ ] Direct Messages (subject to discussion)
|
||||
|
||||
You can send me patches over nostr or [email][email] at jb55@jb55.com
|
||||
## Contribution Guide
|
||||
|
||||
You can also just hit me up with a git-request-pull and ask me to pull one of
|
||||
your branches. eg, from github:
|
||||
There are rules to contributing to this client. Please ensure you read them
|
||||
before making changes and supplying patch notes.
|
||||
|
||||
git request-pull origin/master https://github.com/bob/my-damus-io-fork
|
||||
- No transpilers. All source code should work out of the box.
|
||||
- Keep source code organised. Refer to the folder structure. If you have a
|
||||
question, ask it.
|
||||
- Do not include your personal tools in the source code. Use your own scripts
|
||||
outside of the project. This does not include build tools such as Make.
|
||||
- Use tabs & write JS with snake_case. End of discussion.
|
||||
- Do not include binary files.
|
||||
- No NPM (and kin) environments. If you need a file from an external resource
|
||||
mark the location in the "sources" file and add it to the repo.
|
||||
- No frameworks. Learn the browser tools and write good code.
|
||||
- No experimental browser APIs.
|
||||
- Do not write animations in JavaScript, CSS only. Keep them short and snappy.
|
||||
Animations should not be a forefront, but an enjoyable addition.
|
||||
- All new & modified code should be properly documented.
|
||||
- Source code should be readable in the browser.
|
||||
|
||||
If you email or nostr me the output of this command I will be able to review &
|
||||
merge your changes!
|
||||
These rules are subject to discussion.
|
||||
|
||||
## Style Guide
|
||||
|
||||
TODO Write about the style guide.
|
||||
|
||||
## Terminology
|
||||
|
||||
* Sign Out - Not "log out", "logout", "log off", etc.
|
||||
* Sign In - Not "login", "log in", "signin", "sign-in", etc.
|
||||
* Share - Not "boosted", "retweeted", "repost", etc.
|
||||
* Send - Not "tweet", "toot", "post", etc.
|
||||
* Link - Not "share".
|
||||
|
||||
## Known Issues
|
||||
|
||||
* You cannot send events when running from an IP address that is not secure.
|
||||
Work arounds are not known at this time.
|
||||
|
||||
[email]: https://git-send-email.io/
|
||||
|
||||
|
|
1
TODO
|
@ -1 +0,0 @@
|
|||
video player needs to be outside the timeline, since re-rendering destroys it
|
|
@ -1,56 +0,0 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>damus</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<meta property="og:title" content="Damus">
|
||||
<meta property="og:description" content="A new social network that you control">
|
||||
<meta property="og:image" content="https://damus.io/img/damus.png">
|
||||
<meta property="og:url" content="https://damus.io">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
|
||||
<link rel="stylesheet" href="/css/normalize.css">
|
||||
<link rel="stylesheet" href="/css/skeleton.css?v=3">
|
||||
<link rel="stylesheet" href="/css/custom.css?v=4">
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<section class="header">
|
||||
<span class="logo">
|
||||
<img src="/img/damus-nobg.svg"/>
|
||||
</span>
|
||||
<span class="damus">damus</span>
|
||||
</section>
|
||||
<div class="container">
|
||||
<section class="hero">
|
||||
<h2>Damus Android crowdfund</h2>
|
||||
<h5 class="subtitle">If ya'll help crowdfund me an android phone I can start working on an android version</h5>
|
||||
|
||||
<!-- <div class="row"> -->
|
||||
<!-- <h4 class="subtitle">Developers First</h4> -->
|
||||
<!-- <img class="code-example" src="img/code-placeholder.svg"> -->
|
||||
<!-- </div> -->
|
||||
</section>
|
||||
|
||||
<h4>Donations</h4>
|
||||
|
||||
<p>This is a bolt12 offer, you can pay this with a CLN node. Otherwise press the button to get a bolt11 invoice.</p>
|
||||
<a id="bolt12" href="lightning:lno1pgt5gctdw4ejqstwv3ex76tyyp3hymmhv3n82mnyzsyxgctdw4eju6t0rcs08sggen2ndwzjdpqlpfw9sgfth8n9sjs7kjfssrnurnp5lqk66ug">
|
||||
<div id="qrcode" class="tipjar-copy" style="float: left; width: 256px; cursor: pointer" ></div>
|
||||
</a>
|
||||
|
||||
<button style="margin-left: 20px; height: 50px" onclick="click_make_invoice(this)">Request bolt11 invoice</button>
|
||||
|
||||
<div id="tipjar-summary" style="clear: left; width: 100%; margin-bottom: 30px;">
|
||||
Loading donations...
|
||||
</div>
|
||||
|
||||
</body>
|
||||
|
||||
<script src="/js/qrcode.min.js" > </script>
|
||||
<script src="/js/lnsocket.js?v=10" > </script>
|
||||
<script src="/js/tipjar.js?v=23" ></script>
|
||||
</html>
|
|
@ -1,5 +0,0 @@
|
|||
|
||||
index.html: channels.ejs ../stats/channels-last-week.json
|
||||
npx ejs $< -f ../stats/channels-last-week.json -o $@
|
||||
|
||||
|
|
@ -1,69 +0,0 @@
|
|||
|
||||
|
||||
@import url('https://rsms.me/inter/inter.css');
|
||||
|
||||
.header {
|
||||
display: flex;
|
||||
margin: 50px 0 0 0;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.logo {
|
||||
margin-bottom: 0;
|
||||
letter-spacing: -0.05em;
|
||||
}
|
||||
|
||||
.date {
|
||||
font-size: 0.7em;
|
||||
margin-left: 10px;
|
||||
color: #eee;
|
||||
}
|
||||
|
||||
.logo img {
|
||||
padding-right: 18px;
|
||||
width: 60px;
|
||||
}
|
||||
|
||||
a {
|
||||
font-family: -system-ui, sans-serif;
|
||||
color: white;
|
||||
}
|
||||
|
||||
a:visited {
|
||||
color: #eee;
|
||||
}
|
||||
|
||||
body {
|
||||
color: white;
|
||||
min-height: 800px;
|
||||
}
|
||||
|
||||
html {
|
||||
line-height: 1.5;
|
||||
font-size: 20px;
|
||||
font-family: sans-serif;
|
||||
|
||||
background: linear-gradient(45deg, rgba(28,85,255,1) 0%, rgba(127,53,171,1) 59%, rgba(255,11,214,1) 100%);
|
||||
}
|
||||
|
||||
.channel {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.channel img {
|
||||
width: 64px;
|
||||
height: 64px;
|
||||
border-radius: 50%;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.container {
|
||||
margin: 0 auto 0 auto;
|
||||
max-width: 50em;
|
||||
hyphens: auto;
|
||||
word-wrap: break-word;
|
||||
text-rendering: optimizeLegibility;
|
||||
font-kerning: normal;
|
||||
}
|
|
@ -1,61 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<title>Active nostr channels past week</title>
|
||||
<link rel="stylesheet" href="../log/comments.css?v=5">
|
||||
<link rel="stylesheet" href="channels.css?v=7">
|
||||
</head>
|
||||
<body>
|
||||
<section class="header">
|
||||
<span class="logo">
|
||||
<img src="/img/damus-nobg.svg"/>
|
||||
</span>
|
||||
</section>
|
||||
<div class="container">
|
||||
|
||||
<h2>Active nostr channels past week</h2>
|
||||
<table>
|
||||
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Channel</th>
|
||||
<th>Messages</th>
|
||||
<th>ID</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<% channels.forEach((channel) => { %>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="channel">
|
||||
<img onerror="this.onerror=null;this.src='https://robohash.org/<%= channel[3] %>'" src="<%= channel[2] %>" />
|
||||
<%= channel[1].slice(0,20) %>
|
||||
</div>
|
||||
</td>
|
||||
<td><%= channel[0] %></td>
|
||||
<td><pre><%= channel[3] %></pre></td>
|
||||
</tr>
|
||||
<% }) %>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h3>Raw Data</h3>
|
||||
<a href="https://damus.io/stats/channels-last-week.json">json</a><br/>
|
||||
<a href="https://damus.io/stats/channels-last-week.csv">csv</a>
|
||||
|
||||
<!--
|
||||
<h3><a href="nostr:e:2ed9b99190f0acf8f5cf768d4edd4be004a1262c6d296f341333e5e94b5ec423">Comments</a></h3>
|
||||
<div id="comments">
|
||||
</div>
|
||||
<script src="nostr.js?v=4" ></script>
|
||||
<script src="comments.js?v=16" ></script>
|
||||
<script>
|
||||
const relay = comments_init("2ed9b99190f0acf8f5cf768d4edd4be004a1262c6d296f341333e5e94b5ec423")
|
||||
</script>
|
||||
-->
|
||||
</div> <!-- container -->
|
||||
</body>
|
||||
</html>
|
130
channels/package-lock.json
generated
|
@ -1,130 +0,0 @@
|
|||
{
|
||||
"name": "stats",
|
||||
"version": "1.0.0",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
"ansi-styles": {
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
|
||||
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
|
||||
"requires": {
|
||||
"color-convert": "^2.0.1"
|
||||
}
|
||||
},
|
||||
"async": {
|
||||
"version": "3.2.4",
|
||||
"resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz",
|
||||
"integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ=="
|
||||
},
|
||||
"balanced-match": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
|
||||
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
|
||||
},
|
||||
"brace-expansion": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
|
||||
"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
|
||||
"requires": {
|
||||
"balanced-match": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"chalk": {
|
||||
"version": "4.1.2",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
|
||||
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
|
||||
"requires": {
|
||||
"ansi-styles": "^4.1.0",
|
||||
"supports-color": "^7.1.0"
|
||||
}
|
||||
},
|
||||
"color-convert": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
|
||||
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
|
||||
"requires": {
|
||||
"color-name": "~1.1.4"
|
||||
}
|
||||
},
|
||||
"color-name": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
|
||||
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
|
||||
},
|
||||
"concat-map": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
||||
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
|
||||
},
|
||||
"ejs": {
|
||||
"version": "3.1.8",
|
||||
"resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz",
|
||||
"integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==",
|
||||
"requires": {
|
||||
"jake": "^10.8.5"
|
||||
}
|
||||
},
|
||||
"filelist": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz",
|
||||
"integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==",
|
||||
"requires": {
|
||||
"minimatch": "^5.0.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"minimatch": {
|
||||
"version": "5.1.0",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz",
|
||||
"integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==",
|
||||
"requires": {
|
||||
"brace-expansion": "^2.0.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"has-flag": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
|
||||
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
|
||||
},
|
||||
"jake": {
|
||||
"version": "10.8.5",
|
||||
"resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz",
|
||||
"integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==",
|
||||
"requires": {
|
||||
"async": "^3.2.3",
|
||||
"chalk": "^4.0.2",
|
||||
"filelist": "^1.0.1",
|
||||
"minimatch": "^3.0.4"
|
||||
}
|
||||
},
|
||||
"minimatch": {
|
||||
"version": "3.1.2",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
|
||||
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
|
||||
"requires": {
|
||||
"brace-expansion": "^1.1.7"
|
||||
},
|
||||
"dependencies": {
|
||||
"brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||
"requires": {
|
||||
"balanced-match": "^1.0.0",
|
||||
"concat-map": "0.0.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"supports-color": {
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
|
||||
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
|
||||
"requires": {
|
||||
"has-flag": "^4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,14 +0,0 @@
|
|||
{
|
||||
"name": "stats",
|
||||
"version": "1.0.0",
|
||||
"description": "damus stats",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"author": "jb55",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"ejs": "^3.1.8"
|
||||
}
|
||||
}
|
191
css/custom.css
|
@ -1,191 +0,0 @@
|
|||
@import url('https://rsms.me/inter/inter.css');
|
||||
html { font-family: 'Inter', sans-serif; }
|
||||
@supports (font-variation-settings: normal) {
|
||||
html { font-family: 'Inter var', sans-serif; }
|
||||
}
|
||||
|
||||
.container {
|
||||
max-width: 800px;
|
||||
}
|
||||
|
||||
.blog-container {
|
||||
font-family: serif;
|
||||
}
|
||||
|
||||
a {
|
||||
text-decoration: underline;
|
||||
font-family: -system-ui, sans-serif;
|
||||
color: white;
|
||||
}
|
||||
|
||||
a:visited {
|
||||
color: #eee;
|
||||
}
|
||||
|
||||
label {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
blockquote:before {
|
||||
color: #ccc;
|
||||
content: open-quote;
|
||||
display: block;
|
||||
position: relative;
|
||||
left: -0.6em;
|
||||
top: 0.3em;
|
||||
font-size: 4em;
|
||||
line-height: 0.1em;
|
||||
vertical-align: -0.4em;
|
||||
}
|
||||
|
||||
blockquote:after {
|
||||
color: #ccc;
|
||||
content: close-quote;
|
||||
font-size: 4em;
|
||||
position:relative;
|
||||
top: 0.2em;
|
||||
left: -0.1em;
|
||||
line-height: 0.1em;
|
||||
vertical-align: -0.4em;
|
||||
}
|
||||
|
||||
.author {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
label input {
|
||||
margin-left: 10px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
ul.socials {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
list-style-type: none;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.profile {
|
||||
display: flex;
|
||||
align-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.socials-container {
|
||||
display: flex;
|
||||
margin: auto;
|
||||
justify-content: space-evenly;
|
||||
width: 110px;
|
||||
}
|
||||
|
||||
ul.socials > li {
|
||||
float: left;
|
||||
display: block;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.socials-container img {
|
||||
color: #ff0000;
|
||||
width: 20px;
|
||||
}
|
||||
|
||||
.row {
|
||||
margin-bottom: 8rem;
|
||||
}
|
||||
|
||||
.hero {
|
||||
margin-top: 5rem;
|
||||
text-align: center;
|
||||
clear: left;
|
||||
}
|
||||
|
||||
.header {
|
||||
display: flex;
|
||||
margin-left: 50px;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.portrait {
|
||||
border-radius: 50%;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
box-shadow: 0px 0px 10px #aaa;
|
||||
border: 2px solid white;
|
||||
}
|
||||
|
||||
.centered {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.value-img {
|
||||
margin: 2.5rem auto 2.5rem auto;
|
||||
width: 100px;
|
||||
display: block;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.credits {
|
||||
margin-top: 10rem;
|
||||
text-align: center;
|
||||
color: #252D3A;
|
||||
}
|
||||
|
||||
.code-example {
|
||||
width: 80%;
|
||||
}
|
||||
|
||||
.value-prop {
|
||||
margin-top: 3rem;
|
||||
}
|
||||
|
||||
.value-props {
|
||||
margin-bottom: 7rem;
|
||||
}
|
||||
|
||||
.damus {
|
||||
font-size: 4rem;
|
||||
letter-spacing: -0.08em;
|
||||
font-weight: 100;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.title {
|
||||
font-size: 8rem;
|
||||
font-weight: 500;
|
||||
letter-spacing: -0.055em;
|
||||
}
|
||||
|
||||
|
||||
.logo {
|
||||
margin-bottom: 0;
|
||||
letter-spacing: -0.05em;
|
||||
}
|
||||
|
||||
.logo img {
|
||||
padding-right: 18px;
|
||||
width: 60px;
|
||||
}
|
||||
|
||||
.wizards {
|
||||
font-size: 1.5rem;
|
||||
top: -2em;
|
||||
left: 0.2em;
|
||||
position: relative;
|
||||
color: #999;
|
||||
}
|
||||
|
||||
body {
|
||||
letter-spacing: -0.044em;
|
||||
margin: 3rem 0 10em 0;
|
||||
color: white;
|
||||
background: linear-gradient(45deg, rgba(28,85,255,1) 0%, rgba(127,53,171,1) 59%, rgba(255,11,214,1) 100%);
|
||||
}
|
||||
|
||||
input {
|
||||
color: #252D3A;
|
||||
}
|
||||
|
429
css/normalize.css
vendored
|
@ -1,429 +0,0 @@
|
|||
/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
|
||||
|
||||
/**
|
||||
* 1. Set default font family to sans-serif.
|
||||
* 2. Prevent iOS text size adjust after orientation change, without disabling
|
||||
* user zoom.
|
||||
*/
|
||||
|
||||
html {
|
||||
-ms-text-size-adjust: 100%; /* 2 */
|
||||
-webkit-text-size-adjust: 100%; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove default margin.
|
||||
*/
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* HTML5 display definitions
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Correct `block` display not defined for any HTML5 element in IE 8/9.
|
||||
* Correct `block` display not defined for `details` or `summary` in IE 10/11
|
||||
* and Firefox.
|
||||
* Correct `block` display not defined for `main` in IE 11.
|
||||
*/
|
||||
|
||||
article,
|
||||
aside,
|
||||
details,
|
||||
figcaption,
|
||||
figure,
|
||||
footer,
|
||||
header,
|
||||
hgroup,
|
||||
main,
|
||||
menu,
|
||||
nav,
|
||||
section,
|
||||
summary {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Correct `inline-block` display not defined in IE 8/9.
|
||||
* 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
|
||||
*/
|
||||
|
||||
audio,
|
||||
canvas,
|
||||
progress,
|
||||
video {
|
||||
display: inline-block; /* 1 */
|
||||
vertical-align: baseline; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Prevent modern browsers from displaying `audio` without controls.
|
||||
* Remove excess height in iOS 5 devices.
|
||||
*/
|
||||
|
||||
audio:not([controls]) {
|
||||
display: none;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address `[hidden]` styling not present in IE 8/9/10.
|
||||
* Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.
|
||||
*/
|
||||
|
||||
[hidden],
|
||||
template {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* Links
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Remove the gray background color from active links in IE 10.
|
||||
*/
|
||||
|
||||
a {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
/**
|
||||
* Improve readability when focused and also mouse hovered in all browsers.
|
||||
*/
|
||||
|
||||
a:active,
|
||||
a:hover {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
/* Text-level semantics
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Address styling not present in IE 8/9/10/11, Safari, and Chrome.
|
||||
*/
|
||||
|
||||
abbr[title] {
|
||||
border-bottom: 1px dotted;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
|
||||
*/
|
||||
|
||||
b,
|
||||
strong {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address styling not present in Safari and Chrome.
|
||||
*/
|
||||
|
||||
dfn {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address variable `h1` font-size and margin within `section` and `article`
|
||||
* contexts in Firefox 4+, Safari, and Chrome.
|
||||
*/
|
||||
|
||||
@media only screen and (max-width: 988px)
|
||||
{
|
||||
h1 {
|
||||
font-size: calc(100vw / 12.2);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Address styling not present in IE 8/9.
|
||||
*/
|
||||
|
||||
mark {
|
||||
background: #ff0;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address inconsistent and variable font size in all browsers.
|
||||
*/
|
||||
|
||||
small {
|
||||
font-size: 80%;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prevent `sub` and `sup` affecting `line-height` in all browsers.
|
||||
*/
|
||||
|
||||
sub,
|
||||
sup {
|
||||
font-size: 75%;
|
||||
line-height: 0;
|
||||
position: relative;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
sup {
|
||||
top: -0.5em;
|
||||
}
|
||||
|
||||
sub {
|
||||
bottom: -0.25em;
|
||||
}
|
||||
|
||||
/* Embedded content
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Remove border when inside `a` element in IE 8/9/10.
|
||||
*/
|
||||
|
||||
img {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Correct overflow not hidden in IE 9/10/11.
|
||||
*/
|
||||
|
||||
svg:not(:root) {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* Grouping content
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Address margin not present in IE 8/9 and Safari.
|
||||
*/
|
||||
|
||||
figure {
|
||||
margin: 1em 40px;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address differences between Firefox and other browsers.
|
||||
*/
|
||||
|
||||
hr {
|
||||
-moz-box-sizing: content-box;
|
||||
box-sizing: content-box;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Contain overflow in all browsers.
|
||||
*/
|
||||
|
||||
pre {
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address odd `em`-unit font size rendering in all browsers.
|
||||
*/
|
||||
|
||||
code,
|
||||
kbd,
|
||||
pre,
|
||||
samp {
|
||||
font-family: monospace, monospace;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
/* Forms
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Known limitation: by default, Chrome and Safari on OS X allow very limited
|
||||
* styling of `select`, unless a `border` property is set.
|
||||
*/
|
||||
|
||||
/**
|
||||
* 1. Correct color not being inherited.
|
||||
* Known issue: affects color of disabled elements.
|
||||
* 2. Correct font properties not being inherited.
|
||||
* 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
|
||||
*/
|
||||
|
||||
button,
|
||||
input,
|
||||
optgroup,
|
||||
select,
|
||||
textarea {
|
||||
color: inherit; /* 1 */
|
||||
font: inherit; /* 2 */
|
||||
margin: 0; /* 3 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Address `overflow` set to `hidden` in IE 8/9/10/11.
|
||||
*/
|
||||
|
||||
button {
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address inconsistent `text-transform` inheritance for `button` and `select`.
|
||||
* All other form control elements do not inherit `text-transform` values.
|
||||
* Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
|
||||
* Correct `select` style inheritance in Firefox.
|
||||
*/
|
||||
|
||||
button,
|
||||
select {
|
||||
text-transform: none;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
|
||||
* and `video` controls.
|
||||
* 2. Correct inability to style clickable `input` types in iOS.
|
||||
* 3. Improve usability and consistency of cursor style between image-type
|
||||
* `input` and others.
|
||||
*/
|
||||
|
||||
button,
|
||||
html input[type="button"], /* 1 */
|
||||
input[type="reset"],
|
||||
input[type="submit"] {
|
||||
-webkit-appearance: button; /* 2 */
|
||||
cursor: pointer; /* 3 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Re-set default cursor for disabled elements.
|
||||
*/
|
||||
|
||||
button[disabled],
|
||||
html input[disabled] {
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove inner padding and border in Firefox 4+.
|
||||
*/
|
||||
|
||||
button::-moz-focus-inner,
|
||||
input::-moz-focus-inner {
|
||||
border: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address Firefox 4+ setting `line-height` on `input` using `!important` in
|
||||
* the UA stylesheet.
|
||||
*/
|
||||
|
||||
input {
|
||||
line-height: normal;
|
||||
}
|
||||
|
||||
/**
|
||||
* It's recommended that you don't attempt to style these elements.
|
||||
* Firefox's implementation doesn't respect box-sizing, padding, or width.
|
||||
*
|
||||
* 1. Address box sizing set to `content-box` in IE 8/9/10.
|
||||
* 2. Remove excess padding in IE 8/9/10.
|
||||
*/
|
||||
|
||||
input[type="checkbox"],
|
||||
input[type="radio"] {
|
||||
box-sizing: border-box; /* 1 */
|
||||
padding: 0; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Fix the cursor style for Chrome's increment/decrement buttons. For certain
|
||||
* `font-size` values of the `input`, it causes the cursor style of the
|
||||
* decrement button to change from `default` to `text`.
|
||||
*/
|
||||
|
||||
input[type="number"]::-webkit-inner-spin-button,
|
||||
input[type="number"]::-webkit-outer-spin-button {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Address `appearance` set to `searchfield` in Safari and Chrome.
|
||||
* 2. Address `box-sizing` set to `border-box` in Safari and Chrome
|
||||
* (include `-moz` to future-proof).
|
||||
*/
|
||||
|
||||
input[type="search"] {
|
||||
-webkit-appearance: textfield; /* 1 */
|
||||
-moz-box-sizing: content-box;
|
||||
-webkit-box-sizing: content-box; /* 2 */
|
||||
box-sizing: content-box;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove inner padding and search cancel button in Safari and Chrome on OS X.
|
||||
* Safari (but not Chrome) clips the cancel button when the search input has
|
||||
* padding (and `textfield` appearance).
|
||||
*/
|
||||
|
||||
input[type="search"]::-webkit-search-cancel-button,
|
||||
input[type="search"]::-webkit-search-decoration {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
/**
|
||||
* Define consistent border, margin, and padding.
|
||||
*/
|
||||
|
||||
fieldset {
|
||||
border: 1px solid #c0c0c0;
|
||||
margin: 0 2px;
|
||||
padding: 0.35em 0.625em 0.75em;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Correct `color` not being inherited in IE 8/9/10/11.
|
||||
* 2. Remove padding so people aren't caught out if they zero out fieldsets.
|
||||
*/
|
||||
|
||||
legend {
|
||||
border: 0; /* 1 */
|
||||
padding: 0; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove default vertical scrollbar in IE 8/9/10/11.
|
||||
*/
|
||||
|
||||
textarea {
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
/**
|
||||
* Don't inherit the `font-weight` (applied by a rule above).
|
||||
* NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
|
||||
*/
|
||||
|
||||
optgroup {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* Tables
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Remove most spacing between table cells.
|
||||
*/
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
}
|
||||
|
||||
td,
|
||||
th {
|
||||
padding: 0;
|
||||
}
|
421
css/skeleton.css
vendored
|
@ -1,421 +0,0 @@
|
|||
/*
|
||||
* Skeleton V2.0.4
|
||||
* Copyright 2014, Dave Gamache
|
||||
* www.getskeleton.com
|
||||
* Free to use under the MIT license.
|
||||
* http://www.opensource.org/licenses/mit-license.php
|
||||
* 12/29/2014
|
||||
*/
|
||||
|
||||
|
||||
/* Table of contents
|
||||
––––––––––––––––––––––––––––––––––––––––––––––––––
|
||||
- Grid
|
||||
- Base Styles
|
||||
- Typography
|
||||
- Links
|
||||
- Buttons
|
||||
- Forms
|
||||
- Lists
|
||||
- Code
|
||||
- Tables
|
||||
- Spacing
|
||||
- Utilities
|
||||
- Clearing
|
||||
- Media Queries
|
||||
*/
|
||||
|
||||
|
||||
/* Grid
|
||||
–––––––––––––––––––––––––––––––––––––––––––––––––– */
|
||||
.container {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
max-width: 960px;
|
||||
margin: 0 auto;
|
||||
padding: 0 20px;
|
||||
box-sizing: border-box; }
|
||||
.column,
|
||||
.columns {
|
||||
width: 100%;
|
||||
float: left;
|
||||
box-sizing: border-box; }
|
||||
|
||||
/* For devices larger than 400px */
|
||||
@media (min-width: 400px) {
|
||||
.container {
|
||||
width: 85%;
|
||||
padding: 0; }
|
||||
}
|
||||
|
||||
/* For devices larger than 550px */
|
||||
@media (min-width: 550px) {
|
||||
.container {
|
||||
width: 80%; }
|
||||
.column,
|
||||
.columns {
|
||||
margin-left: 4%; }
|
||||
.column:first-child,
|
||||
.columns:first-child {
|
||||
margin-left: 0; }
|
||||
|
||||
.one.column,
|
||||
.one.columns { width: 4.66666666667%; }
|
||||
.two.columns { width: 13.3333333333%; }
|
||||
.three.columns { width: 22%; }
|
||||
.four.columns { width: 30.6666666667%; }
|
||||
.five.columns { width: 39.3333333333%; }
|
||||
.six.columns { width: 48%; }
|
||||
.seven.columns { width: 56.6666666667%; }
|
||||
.eight.columns { width: 65.3333333333%; }
|
||||
.nine.columns { width: 74.0%; }
|
||||
.ten.columns { width: 82.6666666667%; }
|
||||
.eleven.columns { width: 91.3333333333%; }
|
||||
.twelve.columns { width: 100%; margin-left: 0; }
|
||||
|
||||
.one-third.column { width: 30.6666666667%; }
|
||||
.two-thirds.column { width: 65.3333333333%; }
|
||||
|
||||
.one-half.column { width: 48%; }
|
||||
|
||||
/* Offsets */
|
||||
.offset-by-one.column,
|
||||
.offset-by-one.columns { margin-left: 8.66666666667%; }
|
||||
.offset-by-two.column,
|
||||
.offset-by-two.columns { margin-left: 17.3333333333%; }
|
||||
.offset-by-three.column,
|
||||
.offset-by-three.columns { margin-left: 26%; }
|
||||
.offset-by-four.column,
|
||||
.offset-by-four.columns { margin-left: 34.6666666667%; }
|
||||
.offset-by-five.column,
|
||||
.offset-by-five.columns { margin-left: 43.3333333333%; }
|
||||
.offset-by-six.column,
|
||||
.offset-by-six.columns { margin-left: 52%; }
|
||||
.offset-by-seven.column,
|
||||
.offset-by-seven.columns { margin-left: 60.6666666667%; }
|
||||
.offset-by-eight.column,
|
||||
.offset-by-eight.columns { margin-left: 69.3333333333%; }
|
||||
.offset-by-nine.column,
|
||||
.offset-by-nine.columns { margin-left: 78.0%; }
|
||||
.offset-by-ten.column,
|
||||
.offset-by-ten.columns { margin-left: 86.6666666667%; }
|
||||
.offset-by-eleven.column,
|
||||
.offset-by-eleven.columns { margin-left: 95.3333333333%; }
|
||||
|
||||
.offset-by-one-third.column,
|
||||
.offset-by-one-third.columns { margin-left: 34.6666666667%; }
|
||||
.offset-by-two-thirds.column,
|
||||
.offset-by-two-thirds.columns { margin-left: 69.3333333333%; }
|
||||
|
||||
.offset-by-one-half.column,
|
||||
.offset-by-one-half.columns { margin-left: 52%; }
|
||||
|
||||
}
|
||||
|
||||
|
||||
/* Base Styles
|
||||
–––––––––––––––––––––––––––––––––––––––––––––––––– */
|
||||
/* NOTE
|
||||
html is set to 62.5% so that all the REM measurements throughout Skeleton
|
||||
are based on 10px sizing. So basically 1.5rem = 15px :) */
|
||||
html {
|
||||
font-size: 62.5%; }
|
||||
body {
|
||||
min-height: 800px;
|
||||
font-size: 1.6em; /* currently ems cause chrome bug misinterpreting rems on body element */
|
||||
line-height: 1.6;
|
||||
font-weight: 400;
|
||||
color: #222; }
|
||||
|
||||
|
||||
/* Typography
|
||||
–––––––––––––––––––––––––––––––––––––––––––––––––– */
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
margin-top: 0;
|
||||
margin-bottom: 2rem;
|
||||
font-weight: 300; }
|
||||
h1 { font-size: 4.0rem; line-height: 1.2; letter-spacing: -.1rem;}
|
||||
h2 { font-size: 3.6rem; line-height: 1.25; letter-spacing: -.1rem; }
|
||||
h3 { font-size: 3.0rem; line-height: 1.3; letter-spacing: -.1rem; }
|
||||
h4 { font-size: 2.4rem; line-height: 1.35; letter-spacing: -.08rem; }
|
||||
h5 { font-size: 1.8rem; line-height: 1.5; letter-spacing: -.08rem; }
|
||||
h6 { font-size: 1.5rem; line-height: 1.6; letter-spacing: 0; }
|
||||
|
||||
/* Larger than phablet */
|
||||
@media (min-width: 550px) {
|
||||
h1 { font-size: 5.0rem; }
|
||||
h2 { font-size: 4.2rem; }
|
||||
h3 { font-size: 3.6rem; }
|
||||
h4 { font-size: 3.0rem; }
|
||||
h5 { font-size: 2.4rem; }
|
||||
h6 { font-size: 1.5rem; }
|
||||
}
|
||||
|
||||
p {
|
||||
margin-top: 0; }
|
||||
|
||||
|
||||
/* Links
|
||||
–––––––––––––––––––––––––––––––––––––––––––––––––– */
|
||||
a {
|
||||
color: #0595ad;
|
||||
text-decoration: none;
|
||||
}
|
||||
a:hover {
|
||||
color: #9BBDF2;
|
||||
}
|
||||
|
||||
|
||||
/* Buttons
|
||||
–––––––––––––––––––––––––––––––––––––––––––––––––– */
|
||||
.button,
|
||||
button,
|
||||
input[type="submit"],
|
||||
input[type="reset"],
|
||||
input[type="button"] {
|
||||
display: inline-block;
|
||||
height: 38px;
|
||||
padding: 0 30px;
|
||||
color: white;
|
||||
text-align: center;
|
||||
font-size: 11px;
|
||||
font-weight: 600;
|
||||
line-height: 38px;
|
||||
letter-spacing: .1rem;
|
||||
text-transform: uppercase;
|
||||
text-decoration: none;
|
||||
white-space: nowrap;
|
||||
background-color: transparent;
|
||||
border-radius: 4px;
|
||||
border: 1px solid #bbb;
|
||||
cursor: pointer;
|
||||
box-sizing: border-box; }
|
||||
.button:hover,
|
||||
button:hover,
|
||||
input[type="submit"]:hover,
|
||||
input[type="reset"]:hover,
|
||||
input[type="button"]:hover,
|
||||
.button:focus,
|
||||
button:focus,
|
||||
input[type="submit"]:focus,
|
||||
input[type="reset"]:focus,
|
||||
input[type="button"]:focus {
|
||||
color: #999;
|
||||
border-color: #999;
|
||||
outline: 0; }
|
||||
.button.button-primary,
|
||||
button.button-primary,
|
||||
input[type="submit"].button-primary,
|
||||
input[type="reset"].button-primary,
|
||||
input[type="button"].button-primary {
|
||||
color: #FFF;
|
||||
background-color: #33C3F0;
|
||||
border-color: #33C3F0; }
|
||||
.button.button-primary:hover,
|
||||
button.button-primary:hover,
|
||||
input[type="submit"].button-primary:hover,
|
||||
input[type="reset"].button-primary:hover,
|
||||
input[type="button"].button-primary:hover,
|
||||
.button.button-primary:focus,
|
||||
button.button-primary:focus,
|
||||
input[type="submit"].button-primary:focus,
|
||||
input[type="reset"].button-primary:focus,
|
||||
input[type="button"].button-primary:focus {
|
||||
color: #FFF;
|
||||
background-color: #1EAEDB;
|
||||
border-color: #1EAEDB; }
|
||||
|
||||
|
||||
/* Forms
|
||||
–––––––––––––––––––––––––––––––––––––––––––––––––– */
|
||||
input[type="email"],
|
||||
input[type="number"],
|
||||
input[type="search"],
|
||||
input[type="text"],
|
||||
input[type="tel"],
|
||||
input[type="url"],
|
||||
input[type="password"],
|
||||
textarea,
|
||||
select {
|
||||
height: 38px;
|
||||
padding: 6px 10px; /* The 6px vertically centers text on FF, ignored by Webkit */
|
||||
background-color: #fff;
|
||||
border: 1px solid #D1D1D1;
|
||||
border-radius: 4px;
|
||||
box-shadow: none;
|
||||
box-sizing: border-box; }
|
||||
/* Removes awkward default styles on some inputs for iOS */
|
||||
input[type="email"],
|
||||
input[type="number"],
|
||||
input[type="search"],
|
||||
input[type="text"],
|
||||
input[type="tel"],
|
||||
input[type="url"],
|
||||
input[type="password"],
|
||||
textarea {
|
||||
-webkit-appearance: none;
|
||||
-moz-appearance: none;
|
||||
appearance: none; }
|
||||
textarea {
|
||||
min-height: 65px;
|
||||
padding-top: 6px;
|
||||
padding-bottom: 6px; }
|
||||
input[type="email"]:focus,
|
||||
input[type="number"]:focus,
|
||||
input[type="search"]:focus,
|
||||
input[type="text"]:focus,
|
||||
input[type="tel"]:focus,
|
||||
input[type="url"]:focus,
|
||||
input[type="password"]:focus,
|
||||
textarea:focus,
|
||||
select:focus {
|
||||
border: 1px solid #33C3F0;
|
||||
outline: 0; }
|
||||
label,
|
||||
legend {
|
||||
/* display: block; */
|
||||
margin-bottom: .5rem;
|
||||
/* font-weight: 600; */ }
|
||||
fieldset {
|
||||
padding: 0;
|
||||
border-width: 0; }
|
||||
input[type="checkbox"],
|
||||
input[type="radio"] {
|
||||
display: inline; }
|
||||
label > .label-body {
|
||||
display: inline-block;
|
||||
margin-left: .5rem;
|
||||
font-weight: normal; }
|
||||
|
||||
|
||||
/* Lists
|
||||
–––––––––––––––––––––––––––––––––––––––––––––––––– */
|
||||
ul {
|
||||
list-style: circle inside; }
|
||||
ol {
|
||||
list-style: decimal inside; }
|
||||
ol, ul {
|
||||
padding-left: 0;
|
||||
margin-top: 0; }
|
||||
ul ul,
|
||||
ul ol,
|
||||
ol ol,
|
||||
ol ul {
|
||||
margin: 1.5rem 0 1.5rem 3rem;
|
||||
font-size: 90%; }
|
||||
li {
|
||||
margin-bottom: 0.2rem; }
|
||||
|
||||
|
||||
/* Code
|
||||
–––––––––––––––––––––––––––––––––––––––––––––––––– */
|
||||
code {
|
||||
padding: .2rem .5rem;
|
||||
margin: 0 .2rem;
|
||||
font-size: 90%;
|
||||
white-space: nowrap;
|
||||
background: #F1F1F1;
|
||||
border: 1px solid #E1E1E1;
|
||||
border-radius: 4px; }
|
||||
pre > code {
|
||||
display: block;
|
||||
padding: 1rem 1.5rem;
|
||||
white-space: pre; }
|
||||
|
||||
|
||||
/* Tables
|
||||
–––––––––––––––––––––––––––––––––––––––––––––––––– */
|
||||
th,
|
||||
td {
|
||||
padding: 12px 15px;
|
||||
text-align: left;
|
||||
border-bottom: 1px solid #E1E1E1; }
|
||||
th:first-child,
|
||||
td:first-child {
|
||||
padding-left: 0; }
|
||||
th:last-child,
|
||||
td:last-child {
|
||||
padding-right: 0; }
|
||||
|
||||
|
||||
/* Spacing
|
||||
–––––––––––––––––––––––––––––––––––––––––––––––––– */
|
||||
button,
|
||||
.button {
|
||||
margin-bottom: 1rem; }
|
||||
input,
|
||||
textarea,
|
||||
select,
|
||||
fieldset {
|
||||
margin-bottom: 1.5rem; }
|
||||
pre,
|
||||
blockquote,
|
||||
dl,
|
||||
figure,
|
||||
table,
|
||||
p,
|
||||
ul,
|
||||
ol,
|
||||
form {
|
||||
margin-bottom: 2.5rem; }
|
||||
|
||||
|
||||
/* Utilities
|
||||
–––––––––––––––––––––––––––––––––––––––––––––––––– */
|
||||
.u-full-width {
|
||||
width: 100%;
|
||||
box-sizing: border-box; }
|
||||
.u-max-full-width {
|
||||
max-width: 100%;
|
||||
box-sizing: border-box; }
|
||||
.u-pull-right {
|
||||
float: right; }
|
||||
.u-pull-left {
|
||||
float: left; }
|
||||
|
||||
|
||||
/* Misc
|
||||
–––––––––––––––––––––––––––––––––––––––––––––––––– */
|
||||
hr {
|
||||
margin-top: 3rem;
|
||||
margin-bottom: 3.5rem;
|
||||
border-width: 0;
|
||||
border-top: 1px solid #E1E1E1; }
|
||||
|
||||
|
||||
/* Clearing
|
||||
–––––––––––––––––––––––––––––––––––––––––––––––––– */
|
||||
|
||||
/* Self Clearing Goodness */
|
||||
.container:after,
|
||||
.row:after,
|
||||
.u-cf {
|
||||
content: "";
|
||||
display: table;
|
||||
clear: both; }
|
||||
|
||||
|
||||
/* Media Queries
|
||||
–––––––––––––––––––––––––––––––––––––––––––––––––– */
|
||||
/*
|
||||
Note: The best way to structure the use of media queries is to create the queries
|
||||
near the relevant code. For example, if you wanted to change the styles for buttons
|
||||
on small devices, paste the mobile query code up in the buttons section and style it
|
||||
there.
|
||||
*/
|
||||
|
||||
|
||||
/* Larger than mobile */
|
||||
@media (min-width: 400px) {}
|
||||
|
||||
/* Larger than phablet (also point when grid becomes active) */
|
||||
@media (min-width: 550px) {}
|
||||
|
||||
/* Larger than tablet */
|
||||
@media (min-width: 750px) {}
|
||||
|
||||
/* Larger than desktop */
|
||||
@media (min-width: 1000px) {}
|
||||
|
||||
/* Larger than Desktop HD */
|
||||
@media (min-width: 1200px) {}
|
BIN
favicon.ico
Before Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 550 B After Width: | Height: | Size: 550 B |
Before Width: | Height: | Size: 606 B After Width: | Height: | Size: 606 B |
Before Width: | Height: | Size: 956 B After Width: | Height: | Size: 956 B |
Before Width: | Height: | Size: 869 B After Width: | Height: | Size: 869 B |
Before Width: | Height: | Size: 639 B After Width: | Height: | Size: 639 B |
Before Width: | Height: | Size: 529 B After Width: | Height: | Size: 529 B |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 833 B After Width: | Height: | Size: 833 B |
Before Width: | Height: | Size: 895 B After Width: | Height: | Size: 895 B |
Before Width: | Height: | Size: 791 B After Width: | Height: | Size: 791 B |
Before Width: | Height: | Size: 503 B After Width: | Height: | Size: 503 B |
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 646 B After Width: | Height: | Size: 646 B |
Before Width: | Height: | Size: 2 KiB After Width: | Height: | Size: 2 KiB |
Before Width: | Height: | Size: 748 B After Width: | Height: | Size: 748 B |
Before Width: | Height: | Size: 890 B After Width: | Height: | Size: 890 B |
Before Width: | Height: | Size: 755 B After Width: | Height: | Size: 755 B |
Before Width: | Height: | Size: 761 B After Width: | Height: | Size: 761 B |
Before Width: | Height: | Size: 745 B After Width: | Height: | Size: 745 B |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 7.5 KiB |
|
@ -1,148 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
|
||||
<svg
|
||||
version="1.1"
|
||||
id="livetype"
|
||||
x="0px"
|
||||
y="0px"
|
||||
viewBox="0 0 3000 1002.812"
|
||||
enable-background="new 0 0 3000 3000"
|
||||
xml:space="preserve"
|
||||
sodipodi:docname="app-store-coming-soon.svg"
|
||||
width="3000"
|
||||
height="1002.812"
|
||||
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"><defs
|
||||
id="defs69" /><sodipodi:namedview
|
||||
id="namedview67"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
showgrid="false"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0"
|
||||
inkscape:zoom="0.24233333"
|
||||
inkscape:cx="730.3989"
|
||||
inkscape:cy="501.37552"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1060"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="20"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="livetype" />
|
||||
<title
|
||||
id="title2">Download_on_the_App_Store_Badge_US-UK_RGB_blk_4SVG_092917</title>
|
||||
<g
|
||||
id="g64"
|
||||
transform="translate(0,-998.596)">
|
||||
<g
|
||||
id="g33">
|
||||
<g
|
||||
id="g8">
|
||||
<path
|
||||
fill="#a6a6a6"
|
||||
d="M 2761.099,998.599 H 239.036 c -9.193,0 -18.276,0 -27.445,0.05 -7.675,0.05 -15.289,0.195 -23.038,0.318 -16.834,0.198 -33.629,1.679 -50.238,4.431 -16.585,2.811 -32.652,8.109 -47.655,15.719 -14.985,7.673 -28.677,17.643 -40.58,29.549 -11.965,11.873 -21.939,25.596 -29.539,40.642 -7.62,15.016 -12.903,31.106 -15.668,47.716 -2.792,16.59 -4.293,33.37 -4.493,50.19 -0.232,7.687 -0.257,15.399 -0.38,23.087 v 579.479 c 0.123,7.784 0.147,15.325 0.38,23.112 0.199,16.82 1.701,33.6 4.493,50.188 2.757,16.62 8.042,32.72 15.668,47.741 7.596,14.997 17.571,28.665 29.539,40.471 11.857,11.959 25.559,21.937 40.58,29.551 15.003,7.629 31.068,12.96 47.655,15.813 16.612,2.729 33.405,4.211 50.238,4.433 7.749,0.171 15.363,0.269 23.038,0.269 9.169,0.05 18.252,0.05 27.445,0.05 h 2522.063 c 9.011,0 18.166,0 27.177,-0.05 7.639,0 15.473,-0.098 23.111,-0.269 16.802,-0.21 33.563,-1.691 50.141,-4.432 16.642,-2.875 32.764,-8.204 47.84,-15.814 15.007,-7.619 28.695,-17.596 40.543,-29.551 11.937,-11.853 21.934,-25.51 29.623,-40.471 7.57,-15.032 12.804,-31.131 15.521,-47.741 2.795,-16.59 4.351,-33.366 4.652,-50.188 0.098,-7.787 0.098,-15.328 0.098,-23.112 0.195,-9.108 0.195,-18.166 0.195,-27.422 v -524.686 c 0,-9.181 0,-18.289 -0.195,-27.371 0,-7.688 0,-15.4 -0.098,-23.088 -0.302,-16.822 -1.857,-33.599 -4.652,-50.19 -2.725,-16.601 -7.959,-32.689 -15.521,-47.716 -15.475,-30.158 -40.015,-54.706 -70.166,-70.192 -15.076,-7.59 -31.2,-12.888 -47.84,-15.719 -16.574,-2.763 -33.338,-4.244 -50.141,-4.432 -7.639,-0.122 -15.473,-0.269 -23.111,-0.317 -9.011,-0.051 -18.166,-0.051 -27.176,-0.051 z"
|
||||
id="path4" />
|
||||
<path
|
||||
d="m 211.713,1979.469 c -7.638,0 -15.092,-0.098 -22.67,-0.268 -15.7,-0.205 -31.362,-1.571 -46.86,-4.089 -14.451,-2.489 -28.45,-7.119 -41.535,-13.736 -12.965,-6.563 -24.791,-15.168 -35.023,-25.486 -10.38,-10.196 -19.022,-22.023 -25.584,-35.011 -6.634,-13.071 -11.225,-27.083 -13.613,-41.546 -2.579,-15.541 -3.975,-31.255 -4.174,-47.007 -0.159,-5.287 -0.367,-22.892 -0.367,-22.892 V 1210.3 c 0,0 0.222,-17.334 0.368,-22.427 0.191,-15.727 1.578,-31.417 4.15,-46.933 2.393,-14.503 6.987,-28.555 13.625,-41.67 6.538,-12.979 15.132,-24.813 25.45,-35.047 10.307,-10.33 22.169,-18.979 35.157,-25.633 13.056,-6.597 27.028,-11.193 41.449,-13.637 15.548,-2.543 31.266,-3.918 47.02,-4.113 l 22.621,-0.307 h 2576.427 l 22.892,0.319 c 15.61,0.185 31.185,1.548 46.59,4.075 14.567,2.475 28.686,7.104 41.89,13.735 26.019,13.408 47.189,34.622 60.545,60.668 6.531,13.024 11.055,26.961 13.418,41.339 2.602,15.644 4.058,31.457 4.356,47.313 0.073,7.1 0.073,14.727 0.073,22.316 0.197,9.401 0.197,18.35 0.197,27.371 v 524.686 c 0,9.108 0,17.995 -0.197,26.955 0,8.153 0,15.621 -0.098,23.308 -0.293,15.573 -1.725,31.104 -4.285,46.468 -2.339,14.567 -6.905,28.688 -13.537,41.867 -6.608,12.847 -15.201,24.57 -25.462,34.74 -10.241,10.373 -22.088,19.029 -35.083,25.634 -13.168,6.669 -27.266,11.315 -41.817,13.784 -15.496,2.53 -31.16,3.897 -46.861,4.089 -7.343,0.17 -15.032,0.268 -22.498,0.268 l -27.176,0.051 z"
|
||||
id="path6" />
|
||||
</g>
|
||||
<g
|
||||
id="_Group_">
|
||||
<g
|
||||
id="_Group_2">
|
||||
<g
|
||||
id="_Group_3">
|
||||
<path
|
||||
id="_Path_"
|
||||
fill="#ffffff"
|
||||
d="m 620.96,1507.54 c 0.548,-42.531 22.846,-81.816 59.08,-104.093 -22.963,-32.795 -60.045,-52.842 -100.06,-54.094 -42.099,-4.419 -82.912,25.191 -104.364,25.191 -21.868,0 -54.898,-24.753 -90.466,-24.021 -46.798,1.512 -89.369,27.474 -112.137,68.388 -48.486,83.945 -12.32,207.317 34.125,275.173 23.238,33.227 50.396,70.342 85.932,69.025 34.773,-1.442 47.761,-22.174 89.736,-22.174 41.585,0 53.771,22.174 90.027,21.337 37.313,-0.605 60.823,-33.374 83.245,-66.916 16.696,-23.675 29.544,-49.841 38.067,-77.529 -44.317,-18.743 -73.133,-62.169 -73.185,-110.287 z" />
|
||||
<path
|
||||
id="_Path_2"
|
||||
fill="#ffffff"
|
||||
d="m 552.478,1304.728 c 20.346,-24.424 30.369,-55.816 27.941,-87.511 -31.083,3.265 -59.794,18.12 -80.414,41.606 -20.361,23.173 -30.677,53.489 -28.674,84.271 31.5,0.325 61.408,-13.816 81.147,-38.366 z" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g30">
|
||||
<path
|
||||
fill="#ffffff"
|
||||
d="M 1060.525,1678.994 H 941.858 l -28.498,84.146 h -50.263 l 112.4,-311.321 h 52.221 l 112.399,311.321 h -51.12 z m -106.377,-38.829 h 94.063 l -46.37,-136.564 h -1.298 z"
|
||||
id="path14" />
|
||||
<path
|
||||
fill="#ffffff"
|
||||
d="m 1382.863,1649.664 c 0,70.534 -37.752,115.852 -94.723,115.852 -29.448,1.541 -57.187,-13.884 -71.416,-39.711 h -1.078 v 112.424 h -46.59 v -302.065 h 45.098 v 37.752 h 0.856 c 14.862,-25.666 42.63,-41.083 72.272,-40.127 57.608,-10e-4 95.581,45.536 95.581,115.875 z m -47.887,0 c 0,-45.953 -23.748,-76.165 -59.982,-76.165 -35.598,0 -59.542,30.848 -59.542,76.165 0,45.733 23.944,76.361 59.542,76.361 36.234,0 59.982,-29.991 59.982,-76.361 z"
|
||||
id="path16" />
|
||||
<path
|
||||
fill="#ffffff"
|
||||
d="m 1632.684,1649.664 c 0,70.534 -37.752,115.852 -94.723,115.852 -29.448,1.541 -57.187,-13.884 -71.416,-39.711 h -1.078 v 112.424 h -46.59 v -302.065 h 45.097 v 37.752 h 0.856 c 14.862,-25.666 42.631,-41.083 72.273,-40.127 57.608,-10e-4 95.581,45.536 95.581,115.875 z m -47.888,0 c 0,-45.953 -23.748,-76.165 -59.982,-76.165 -35.598,0 -59.542,30.848 -59.542,76.165 0,45.733 23.944,76.361 59.542,76.361 36.234,0 59.982,-29.991 59.982,-76.361 z"
|
||||
id="path18" />
|
||||
<path
|
||||
fill="#ffffff"
|
||||
d="m 1797.795,1676.399 c 3.452,30.872 33.443,51.143 74.427,51.143 39.271,0 67.523,-20.271 67.523,-48.108 0,-24.164 -17.04,-38.633 -57.388,-48.549 l -40.347,-9.72 c -57.167,-13.808 -83.706,-40.543 -83.706,-83.927 0,-53.715 46.811,-90.609 113.28,-90.609 65.784,0 110.882,36.895 112.399,90.609 h -47.031 c -2.815,-31.068 -28.498,-49.821 -66.029,-49.821 -37.532,0 -63.214,18.974 -63.214,46.59 0,22.01 16.403,34.961 56.53,44.876 l 34.3,8.422 c 63.875,15.106 90.414,40.765 90.414,86.301 0,58.244 -46.395,94.724 -120.185,94.724 -69.041,0 -115.656,-35.622 -118.668,-91.933 z"
|
||||
id="path20" />
|
||||
<path
|
||||
fill="#ffffff"
|
||||
d="m 2089.505,1482.448 v 53.715 h 43.163 v 36.895 h -43.163 v 125.131 c 0,19.439 8.642,28.498 27.616,28.498 5.124,-0.09 10.24,-0.449 15.326,-1.078 v 36.675 c -8.531,1.594 -17.201,2.315 -25.878,2.154 -45.954,0 -63.876,-17.26 -63.876,-61.28 v -130.1 h -33.002 v -36.895 h 33.002 v -53.715 z"
|
||||
id="path22" />
|
||||
<path
|
||||
fill="#ffffff"
|
||||
d="m 2157.665,1649.664 c 0,-71.416 42.062,-116.292 107.65,-116.292 65.81,0 107.675,44.875 107.675,116.292 0,71.611 -41.645,116.292 -107.675,116.292 -66.006,0 -107.65,-44.681 -107.65,-116.292 z m 167.853,0 c 0,-48.989 -22.45,-77.903 -60.202,-77.903 -37.752,0 -60.179,29.134 -60.179,77.903 0,49.186 22.427,77.879 60.179,77.879 37.752,0 60.201,-28.693 60.202,-77.879 z"
|
||||
id="path24" />
|
||||
<path
|
||||
fill="#ffffff"
|
||||
d="m 2411.402,1536.163 h 44.436 v 38.633 h 1.078 c 6.197,-24.87 28.984,-41.986 54.596,-41.009 5.369,-0.019 10.724,0.564 15.963,1.739 v 43.578 c -6.778,-2.071 -13.849,-3.021 -20.934,-2.815 -25.907,-1.051 -47.761,19.099 -48.813,45.006 -0.098,2.408 -0.01,4.821 0.264,7.216 v 134.63 h -46.591 z"
|
||||
id="path26" />
|
||||
<path
|
||||
fill="#ffffff"
|
||||
d="m 2742.284,1696.475 c -6.268,41.204 -46.395,69.481 -97.734,69.481 -66.029,0 -107.013,-44.24 -107.013,-115.215 0,-71.195 41.203,-117.369 105.055,-117.369 62.798,0 102.288,43.138 102.288,111.958 v 15.963 h -160.313 v 2.815 c -2.88,32.521 21.148,61.221 53.67,64.101 2.457,0.218 4.925,0.281 7.39,0.19 22.609,2.119 43.926,-10.864 52.418,-31.925 h 44.239 z m -157.496,-67.744 h 113.477 c 1.676,-30.101 -21.366,-55.859 -51.466,-57.536 -1.401,-0.078 -2.805,-0.102 -4.207,-0.071 -31.734,-0.189 -57.613,25.383 -57.803,57.117 0,0.163 0,0.327 0,0.49 z"
|
||||
id="path28" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="_Group_4">
|
||||
<g
|
||||
id="g61">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<metadata
|
||||
id="metadata71"><rdf:RDF><cc:Work
|
||||
rdf:about=""><dc:title>Download_on_the_App_Store_Badge_US-UK_RGB_blk_4SVG_092917</dc:title></cc:Work></rdf:RDF></metadata><text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:192px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none"
|
||||
x="1046.0166"
|
||||
y="312.38776"
|
||||
id="text4830"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4828"
|
||||
x="1046.0166"
|
||||
y="312.38776"
|
||||
style="font-size:192px;fill:#ffffff;fill-opacity:1"
|
||||
dx="0">Coming soon to</tspan></text></svg>
|
Before Width: | Height: | Size: 9.6 KiB |
|
@ -1,45 +0,0 @@
|
|||
<svg id="livetype" xmlns="http://www.w3.org/2000/svg" width="119.66407" height="40" viewBox="0 0 119.66407 40">
|
||||
<g>
|
||||
<g>
|
||||
<g>
|
||||
<path d="M110.13477,0H9.53468c-.3667,0-.729,0-1.09473.002-.30615.002-.60986.00781-.91895.0127A13.21476,13.21476,0,0,0,5.5171.19141a6.66509,6.66509,0,0,0-1.90088.627A6.43779,6.43779,0,0,0,1.99757,1.99707,6.25844,6.25844,0,0,0,.81935,3.61816a6.60119,6.60119,0,0,0-.625,1.90332,12.993,12.993,0,0,0-.1792,2.002C.00587,7.83008.00489,8.1377,0,8.44434V31.5586c.00489.3105.00587.6113.01515.9219a12.99232,12.99232,0,0,0,.1792,2.0019,6.58756,6.58756,0,0,0,.625,1.9043A6.20778,6.20778,0,0,0,1.99757,38.001a6.27445,6.27445,0,0,0,1.61865,1.1787,6.70082,6.70082,0,0,0,1.90088.6308,13.45514,13.45514,0,0,0,2.0039.1768c.30909.0068.6128.0107.91895.0107C8.80567,40,9.168,40,9.53468,40H110.13477c.3594,0,.7246,0,1.084-.002.3047,0,.6172-.0039.9219-.0107a13.279,13.279,0,0,0,2-.1768,6.80432,6.80432,0,0,0,1.9082-.6308,6.27742,6.27742,0,0,0,1.6172-1.1787,6.39482,6.39482,0,0,0,1.1816-1.6143,6.60413,6.60413,0,0,0,.6191-1.9043,13.50643,13.50643,0,0,0,.1856-2.0019c.0039-.3106.0039-.6114.0039-.9219.0078-.3633.0078-.7246.0078-1.0938V9.53613c0-.36621,0-.72949-.0078-1.09179,0-.30664,0-.61426-.0039-.9209a13.5071,13.5071,0,0,0-.1856-2.002,6.6177,6.6177,0,0,0-.6191-1.90332,6.46619,6.46619,0,0,0-2.7988-2.7998,6.76754,6.76754,0,0,0-1.9082-.627,13.04394,13.04394,0,0,0-2-.17676c-.3047-.00488-.6172-.01074-.9219-.01269-.3594-.002-.7246-.002-1.084-.002Z" style="fill: #a6a6a6"/>
|
||||
<path d="M8.44483,39.125c-.30468,0-.602-.0039-.90429-.0107a12.68714,12.68714,0,0,1-1.86914-.1631,5.88381,5.88381,0,0,1-1.65674-.5479,5.40573,5.40573,0,0,1-1.397-1.0166,5.32082,5.32082,0,0,1-1.02051-1.3965,5.72186,5.72186,0,0,1-.543-1.6572,12.41351,12.41351,0,0,1-.1665-1.875c-.00634-.2109-.01464-.9131-.01464-.9131V8.44434S.88185,7.75293.8877,7.5498a12.37039,12.37039,0,0,1,.16553-1.87207,5.7555,5.7555,0,0,1,.54346-1.6621A5.37349,5.37349,0,0,1,2.61183,2.61768,5.56543,5.56543,0,0,1,4.01417,1.59521a5.82309,5.82309,0,0,1,1.65332-.54394A12.58589,12.58589,0,0,1,7.543.88721L8.44532.875H111.21387l.9131.0127a12.38493,12.38493,0,0,1,1.8584.16259,5.93833,5.93833,0,0,1,1.6709.54785,5.59374,5.59374,0,0,1,2.415,2.41993,5.76267,5.76267,0,0,1,.5352,1.64892,12.995,12.995,0,0,1,.1738,1.88721c.0029.2832.0029.5874.0029.89014.0079.375.0079.73193.0079,1.09179V30.4648c0,.3633,0,.7178-.0079,1.0752,0,.3252,0,.6231-.0039.9297a12.73126,12.73126,0,0,1-.1709,1.8535,5.739,5.739,0,0,1-.54,1.67,5.48029,5.48029,0,0,1-1.0156,1.3857,5.4129,5.4129,0,0,1-1.3994,1.0225,5.86168,5.86168,0,0,1-1.668.5498,12.54218,12.54218,0,0,1-1.8692.1631c-.2929.0068-.5996.0107-.8974.0107l-1.084.002Z"/>
|
||||
</g>
|
||||
<g id="_Group_" data-name="<Group>">
|
||||
<g id="_Group_2" data-name="<Group>">
|
||||
<g id="_Group_3" data-name="<Group>">
|
||||
<path id="_Path_" data-name="<Path>" d="M24.76888,20.30068a4.94881,4.94881,0,0,1,2.35656-4.15206,5.06566,5.06566,0,0,0-3.99116-2.15768c-1.67924-.17626-3.30719,1.00483-4.1629,1.00483-.87227,0-2.18977-.98733-3.6085-.95814a5.31529,5.31529,0,0,0-4.47292,2.72787c-1.934,3.34842-.49141,8.26947,1.3612,10.97608.9269,1.32535,2.01018,2.8058,3.42763,2.7533,1.38706-.05753,1.9051-.88448,3.5794-.88448,1.65876,0,2.14479.88448,3.591.8511,1.48838-.02416,2.42613-1.33124,3.32051-2.66914a10.962,10.962,0,0,0,1.51842-3.09251A4.78205,4.78205,0,0,1,24.76888,20.30068Z" style="fill: #fff"/>
|
||||
<path id="_Path_2" data-name="<Path>" d="M22.03725,12.21089a4.87248,4.87248,0,0,0,1.11452-3.49062,4.95746,4.95746,0,0,0-3.20758,1.65961,4.63634,4.63634,0,0,0-1.14371,3.36139A4.09905,4.09905,0,0,0,22.03725,12.21089Z" style="fill: #fff"/>
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
<path d="M42.30227,27.13965h-4.7334l-1.13672,3.35645H34.42727l4.4834-12.418h2.083l4.4834,12.418H43.438ZM38.0591,25.59082h3.752l-1.84961-5.44727h-.05176Z" style="fill: #fff"/>
|
||||
<path d="M55.15969,25.96973c0,2.81348-1.50586,4.62109-3.77832,4.62109a3.0693,3.0693,0,0,1-2.84863-1.584h-.043v4.48438h-1.8584V21.44238H48.4302v1.50586h.03418a3.21162,3.21162,0,0,1,2.88281-1.60059C53.645,21.34766,55.15969,23.16406,55.15969,25.96973Zm-1.91016,0c0-1.833-.94727-3.03809-2.39258-3.03809-1.41992,0-2.375,1.23047-2.375,3.03809,0,1.82422.95508,3.0459,2.375,3.0459C52.30227,29.01563,53.24953,27.81934,53.24953,25.96973Z" style="fill: #fff"/>
|
||||
<path d="M65.12453,25.96973c0,2.81348-1.50586,4.62109-3.77832,4.62109a3.0693,3.0693,0,0,1-2.84863-1.584h-.043v4.48438h-1.8584V21.44238H58.395v1.50586h.03418A3.21162,3.21162,0,0,1,61.312,21.34766C63.60988,21.34766,65.12453,23.16406,65.12453,25.96973Zm-1.91016,0c0-1.833-.94727-3.03809-2.39258-3.03809-1.41992,0-2.375,1.23047-2.375,3.03809,0,1.82422.95508,3.0459,2.375,3.0459C62.26711,29.01563,63.21438,27.81934,63.21438,25.96973Z" style="fill: #fff"/>
|
||||
<path d="M71.71047,27.03613c.1377,1.23145,1.334,2.04,2.96875,2.04,1.56641,0,2.69336-.80859,2.69336-1.91895,0-.96387-.67969-1.541-2.28906-1.93652l-1.60937-.3877c-2.28027-.55078-3.33887-1.61719-3.33887-3.34766,0-2.14258,1.86719-3.61426,4.51855-3.61426,2.624,0,4.42285,1.47168,4.4834,3.61426h-1.876c-.1123-1.23926-1.13672-1.9873-2.63379-1.9873s-2.52148.75684-2.52148,1.8584c0,.87793.6543,1.39453,2.25488,1.79l1.36816.33594c2.54785.60254,3.60645,1.626,3.60645,3.44238,0,2.32324-1.85059,3.77832-4.79395,3.77832-2.75391,0-4.61328-1.4209-4.7334-3.667Z" style="fill: #fff"/>
|
||||
<path d="M83.34621,19.2998v2.14258h1.72168v1.47168H83.34621v4.99121c0,.77539.34473,1.13672,1.10156,1.13672a5.80752,5.80752,0,0,0,.61133-.043v1.46289a5.10351,5.10351,0,0,1-1.03223.08594c-1.833,0-2.54785-.68848-2.54785-2.44434V22.91406H80.16262V21.44238H81.479V19.2998Z" style="fill: #fff"/>
|
||||
<path d="M86.065,25.96973c0-2.84863,1.67773-4.63867,4.29395-4.63867,2.625,0,4.29492,1.79,4.29492,4.63867,0,2.85645-1.66113,4.63867-4.29492,4.63867C87.72609,30.6084,86.065,28.82617,86.065,25.96973Zm6.69531,0c0-1.9541-.89551-3.10742-2.40137-3.10742s-2.40039,1.16211-2.40039,3.10742c0,1.96191.89453,3.10645,2.40039,3.10645S92.76027,27.93164,92.76027,25.96973Z" style="fill: #fff"/>
|
||||
<path d="M96.18606,21.44238h1.77246v1.541h.043a2.1594,2.1594,0,0,1,2.17773-1.63574,2.86616,2.86616,0,0,1,.63672.06934v1.73828a2.59794,2.59794,0,0,0-.835-.1123,1.87264,1.87264,0,0,0-1.93652,2.083v5.37012h-1.8584Z" style="fill: #fff"/>
|
||||
<path d="M109.3843,27.83691c-.25,1.64355-1.85059,2.77148-3.89844,2.77148-2.63379,0-4.26855-1.76465-4.26855-4.5957,0-2.83984,1.64355-4.68164,4.19043-4.68164,2.50488,0,4.08008,1.7207,4.08008,4.46582v.63672h-6.39453v.1123a2.358,2.358,0,0,0,2.43555,2.56445,2.04834,2.04834,0,0,0,2.09082-1.27344Zm-6.28223-2.70215h4.52637a2.1773,2.1773,0,0,0-2.2207-2.29785A2.292,2.292,0,0,0,103.10207,25.13477Z" style="fill: #fff"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="_Group_4" data-name="<Group>">
|
||||
<g>
|
||||
<path d="M37.82619,8.731a2.63964,2.63964,0,0,1,2.80762,2.96484c0,1.90625-1.03027,3.002-2.80762,3.002H35.67092V8.731Zm-1.22852,5.123h1.125a1.87588,1.87588,0,0,0,1.96777-2.146,1.881,1.881,0,0,0-1.96777-2.13379h-1.125Z" style="fill: #fff"/>
|
||||
<path d="M41.68068,12.44434a2.13323,2.13323,0,1,1,4.24707,0,2.13358,2.13358,0,1,1-4.24707,0Zm3.333,0c0-.97607-.43848-1.54687-1.208-1.54687-.77246,0-1.207.5708-1.207,1.54688,0,.98389.43457,1.55029,1.207,1.55029C44.57522,13.99463,45.01369,13.42432,45.01369,12.44434Z" style="fill: #fff"/>
|
||||
<path d="M51.57326,14.69775h-.92187l-.93066-3.31641h-.07031l-.92676,3.31641h-.91309l-1.24121-4.50293h.90137l.80664,3.436h.06641l.92578-3.436h.85254l.92578,3.436h.07031l.80273-3.436h.88867Z" style="fill: #fff"/>
|
||||
<path d="M53.85354,10.19482H54.709v.71533h.06641a1.348,1.348,0,0,1,1.34375-.80225,1.46456,1.46456,0,0,1,1.55859,1.6748v2.915h-.88867V12.00586c0-.72363-.31445-1.0835-.97168-1.0835a1.03294,1.03294,0,0,0-1.0752,1.14111v2.63428h-.88867Z" style="fill: #fff"/>
|
||||
<path d="M59.09377,8.437h.88867v6.26074h-.88867Z" style="fill: #fff"/>
|
||||
<path d="M61.21779,12.44434a2.13346,2.13346,0,1,1,4.24756,0,2.1338,2.1338,0,1,1-4.24756,0Zm3.333,0c0-.97607-.43848-1.54687-1.208-1.54687-.77246,0-1.207.5708-1.207,1.54688,0,.98389.43457,1.55029,1.207,1.55029C64.11232,13.99463,64.5508,13.42432,64.5508,12.44434Z" style="fill: #fff"/>
|
||||
<path d="M66.4009,13.42432c0-.81055.60352-1.27783,1.6748-1.34424l1.21973-.07031v-.38867c0-.47559-.31445-.74414-.92187-.74414-.49609,0-.83984.18213-.93848.50049h-.86035c.09082-.77344.81836-1.26953,1.83984-1.26953,1.12891,0,1.76563.562,1.76563,1.51318v3.07666h-.85547v-.63281h-.07031a1.515,1.515,0,0,1-1.35254.707A1.36026,1.36026,0,0,1,66.4009,13.42432Zm2.89453-.38477v-.37646l-1.09961.07031c-.62012.0415-.90137.25244-.90137.64941,0,.40527.35156.64111.835.64111A1.0615,1.0615,0,0,0,69.29543,13.03955Z" style="fill: #fff"/>
|
||||
<path d="M71.34816,12.44434c0-1.42285.73145-2.32422,1.86914-2.32422a1.484,1.484,0,0,1,1.38086.79h.06641V8.437h.88867v6.26074h-.85156v-.71143h-.07031a1.56284,1.56284,0,0,1-1.41406.78564C72.0718,14.772,71.34816,13.87061,71.34816,12.44434Zm.918,0c0,.95508.4502,1.52979,1.20313,1.52979.749,0,1.21191-.583,1.21191-1.52588,0-.93848-.46777-1.52979-1.21191-1.52979C72.72121,10.91846,72.26613,11.49707,72.26613,12.44434Z" style="fill: #fff"/>
|
||||
<path d="M79.23,12.44434a2.13323,2.13323,0,1,1,4.24707,0,2.13358,2.13358,0,1,1-4.24707,0Zm3.333,0c0-.97607-.43848-1.54687-1.208-1.54687-.77246,0-1.207.5708-1.207,1.54688,0,.98389.43457,1.55029,1.207,1.55029C82.12453,13.99463,82.563,13.42432,82.563,12.44434Z" style="fill: #fff"/>
|
||||
<path d="M84.66945,10.19482h.85547v.71533h.06641a1.348,1.348,0,0,1,1.34375-.80225,1.46456,1.46456,0,0,1,1.55859,1.6748v2.915H87.605V12.00586c0-.72363-.31445-1.0835-.97168-1.0835a1.03294,1.03294,0,0,0-1.0752,1.14111v2.63428h-.88867Z" style="fill: #fff"/>
|
||||
<path d="M93.51516,9.07373v1.1416h.97559v.74854h-.97559V13.2793c0,.47168.19434.67822.63672.67822a2.96657,2.96657,0,0,0,.33887-.02051v.74023a2.9155,2.9155,0,0,1-.4834.04541c-.98828,0-1.38184-.34766-1.38184-1.21582v-2.543h-.71484v-.74854h.71484V9.07373Z" style="fill: #fff"/>
|
||||
<path d="M95.70461,8.437h.88086v2.48145h.07031a1.3856,1.3856,0,0,1,1.373-.80664,1.48339,1.48339,0,0,1,1.55078,1.67871v2.90723H98.69v-2.688c0-.71924-.335-1.0835-.96289-1.0835a1.05194,1.05194,0,0,0-1.13379,1.1416v2.62988h-.88867Z" style="fill: #fff"/>
|
||||
<path d="M104.76125,13.48193a1.828,1.828,0,0,1-1.95117,1.30273A2.04531,2.04531,0,0,1,100.73,12.46045a2.07685,2.07685,0,0,1,2.07617-2.35254c1.25293,0,2.00879.856,2.00879,2.27V12.688h-3.17969v.0498a1.1902,1.1902,0,0,0,1.19922,1.29,1.07934,1.07934,0,0,0,1.07129-.5459Zm-3.126-1.45117h2.27441a1.08647,1.08647,0,0,0-1.1084-1.1665A1.15162,1.15162,0,0,0,101.63527,12.03076Z" style="fill: #fff"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 187 KiB |
Before Width: | Height: | Size: 5.3 KiB |
|
@ -1 +0,0 @@
|
|||
<svg height="512" viewBox="0 0 64 64" width="512" xmlns="http://www.w3.org/2000/svg"><g id="Filled_outline" data-name="Filled outline"><g fill="#195c85"><path d="m46.707 18.707-1.414-1.414 3-3a1 1 0 0 1 .707-.293h8v2h-7.586z"/><path d="m17.293 20.707-4.707-4.707h-5.586v-2h6a1 1 0 0 1 .707.293l5 5z"/><path d="m13 45h-6v-2h5.586l4.707-4.707 1.414 1.414-5 5a1 1 0 0 1 -.707.293z"/><path d="m17.628 29.929-4.82-1.929h-6.808v-2h7a1.012 1.012 0 0 1 .372.071l5 2z"/><path d="m17.628 37.929-4.82-1.929h-6.808v-2h7a1.012 1.012 0 0 1 .372.071l5 2z"/><path d="m46.515 27.857-1.03-1.714 5-3a1 1 0 0 1 .515-.143h7v2h-6.723z"/><path d="m58 36h-7a1 1 0 0 1 -.515-.143l-5-3 1.03-1.714 4.762 2.857h6.723z"/><path d="m58 44h-7a1 1 0 0 1 -.515-.143l-5-3 1.03-1.714 4.762 2.857h6.723z"/></g><rect fill="#767f87" height="58" rx="4" transform="matrix(-1 0 0 -1 64 64)" width="28" x="18" y="3"/><circle cx="32" cy="55" fill="#394d5c" r="2"/><path d="m30 6h8v2h-8z" fill="#394d5c"/><path d="m26 6h2v2h-2z" fill="#394d5c"/><path d="m18 11h28v38h-28z" fill="#f4f4e6"/><path d="m23 31h2v12h-2z" fill="#7fcac9"/><path d="m39 31h2v13h-2z" fill="#7fcac9"/><path d="m31 35h2v10h-2z" fill="#7fcac9"/><path d="m35 34h2v8h-2z" fill="#7fcac9"/><path d="m27 34h2v7h-2z" fill="#7fcac9"/><path d="m27 43h2v2h-2z" fill="#7fcac9"/><path d="m35 44h2v2h-2z" fill="#7fcac9"/><circle cx="5" cy="15" fill="#32b1cc" r="2"/><circle cx="5" cy="27" fill="#32b1cc" r="2"/><circle cx="5" cy="35" fill="#32b1cc" r="2"/><circle cx="5" cy="44" fill="#32b1cc" r="2"/><circle cx="59" cy="15" fill="#32b1cc" r="2"/><circle cx="59" cy="24" fill="#32b1cc" r="2"/><circle cx="59" cy="35" fill="#32b1cc" r="2"/><circle cx="59" cy="43" fill="#32b1cc" r="2"/><path d="m9 4h2v2h-2z" fill="#d9176c"/><path d="m9 8h2v2h-2z" fill="#d9176c"/><path d="m7 6h2v2h-2z" fill="#d9176c"/><path d="m11 6h2v2h-2z" fill="#d9176c"/><path d="m53 49h2v2h-2z" fill="#d9176c"/><path d="m53 53h2v2h-2z" fill="#d9176c"/><path d="m51 51h2v2h-2z" fill="#d9176c"/><path d="m55 51h2v2h-2z" fill="#d9176c"/><circle cx="32" cy="25" fill="#ffd782" r="10"/><path d="m33 18h2v3h-2z" fill="#e97424"/><path d="m29 18h2v3h-2z" fill="#e97424"/><path d="m29 29h2v3h-2z" fill="#e97424"/><path d="m33 29h2v3h-2z" fill="#e97424"/><path d="m35 26h-5a1 1 0 0 1 -1-1v-4a1 1 0 0 1 1-1h5a3 3 0 0 1 0 6zm-4-2h4a1 1 0 0 0 0-2h-4z" fill="#e97424"/><path d="m35 30h-5a1 1 0 0 1 -1-1v-4a1 1 0 0 1 1-1h5a3 3 0 0 1 0 6zm-4-2h4a1 1 0 0 0 0-2h-4z" fill="#e97424"/><path d="m27 20h3v2h-3z" fill="#e97424"/><path d="m27 28h4v2h-4z" fill="#e97424"/><path d="m32 52a3 3 0 1 0 3 3 3 3 0 0 0 -3-3zm0 4a1 1 0 1 1 1-1 1 1 0 0 1 -1 1z"/><path d="m30 6h8v2h-8z"/><path d="m26 6h2v2h-2z"/><path d="m32 14a10.985 10.985 0 0 0 -9 17.305v11.695h2v-9.521a11.013 11.013 0 0 0 2 1.307v6.214h2v-5.426a10.9 10.9 0 0 0 2 .375v9.051h2v-9.051a10.9 10.9 0 0 0 2-.375v6.426h2v-7.214a11.013 11.013 0 0 0 2-1.307v10.521h2v-12.695a10.985 10.985 0 0 0 -9-17.305zm0 20a9 9 0 1 1 9-9 9.011 9.011 0 0 1 -9 9z"/><path d="m35 20v-2h-2v2h-2v-2h-2v2h-2v2h2v6h-2v2h2v2h2v-2h2v2h2v-2a2.987 2.987 0 0 0 2.22-5 2.987 2.987 0 0 0 -2.22-5zm1 3a1 1 0 0 1 -1 1h-4v-2h4a1 1 0 0 1 1 1zm-1 5h-4v-2h4a1 1 0 0 1 0 2z"/><path d="m27 43h2v2h-2z"/><path d="m35 44h2v2h-2z"/><path d="m49.414 16h6.77a3 3 0 1 0 0-2h-7.184a1 1 0 0 0 -.707.293l-1.293 1.293v-8.586a5.006 5.006 0 0 0 -5-5h-20a5.006 5.006 0 0 0 -5 5v10.586l-3.293-3.293a1 1 0 0 0 -.707-.293h-5.184a3 3 0 1 0 0 2h4.77l4.414 4.414v7.109l-3.628-1.452a1.012 1.012 0 0 0 -.372-.071h-5.184a3 3 0 1 0 0 2h4.992l4.192 1.677v5.846l-3.628-1.452a1.012 1.012 0 0 0 -.372-.071h-5.184a3 3 0 1 0 0 2h4.992l4.192 1.677v.909l-4.414 4.414h-4.77a3 3 0 1 0 0 2h5.184a1 1 0 0 0 .707-.293l3.293-3.293v15.586a5.006 5.006 0 0 0 5 5h20a5.006 5.006 0 0 0 5-5v-15.234l3.485 2.091a1 1 0 0 0 .515.143h5.184a3 3 0 1 0 0-2h-4.907l-4.277-2.566v-5.668l3.485 2.091a1 1 0 0 0 .515.143h5.184a3 3 0 1 0 0-2h-4.907l-4.277-2.566v-3.868l4.277-2.566h4.907a3 3 0 1 0 0-2h-5.184a1 1 0 0 0 -.515.143l-3.485 2.091v-6.82zm9.586-2a1 1 0 1 1 -1 1 1 1 0 0 1 1-1zm-54 2a1 1 0 1 1 1-1 1 1 0 0 1 -1 1zm0 12a1 1 0 1 1 1-1 1 1 0 0 1 -1 1zm0 8a1 1 0 1 1 1-1 1 1 0 0 1 -1 1zm0 9a1 1 0 1 1 1-1 1 1 0 0 1 -1 1zm54-3a1 1 0 1 1 -1 1 1 1 0 0 1 1-1zm0-8a1 1 0 1 1 -1 1 1 1 0 0 1 1-1zm0-11a1 1 0 1 1 -1 1 1 1 0 0 1 1-1zm-40-11h26v36h-26zm3-8h20a3 3 0 0 1 3 3v3h-26v-3a3 3 0 0 1 3-3zm20 56h-20a3 3 0 0 1 -3-3v-7h26v7a3 3 0 0 1 -3 3z"/><path d="m9 4h2v2h-2z"/><path d="m9 8h2v2h-2z"/><path d="m7 6h2v2h-2z"/><path d="m11 6h2v2h-2z"/><path d="m53 49h2v2h-2z"/><path d="m53 53h2v2h-2z"/><path d="m51 51h2v2h-2z"/><path d="m55 51h2v2h-2z"/></g></svg>
|
Before Width: | Height: | Size: 4.5 KiB |
|
@ -1 +0,0 @@
|
|||
<svg height="512" viewBox="0 0 60 60" width="512" xmlns="http://www.w3.org/2000/svg"><g id="Page-1" fill="none" fill-rule="evenodd"><g id="002---Bot-Message" fill-rule="nonzero" transform="translate(-1)"><path id="Shape" d="m48 39c0 15-10.3 20-23 20s-23-5-23-20c0-14 10.3-24 23-24 3.0903976-.0100698 6.1511982.6020903 9 1.8v1.2c0 1.6568542 1.3431458 3 3 3h1c.5522847 0 1 .4477153 1 1v3.23c.0000627.3593049.1928829.6909565.505101.8687761.3122182.1778196.6958342.1744694 1.004899-.0087761l2.93-1.76c3.0318572 4.2853551 4.6282198 9.4210217 4.56 14.67z" fill="#f5f5f5"/><path id="Shape" d="m43.44 24.33-2.146 1.289c2.4703306 4.0225352 3.754925 8.6607321 3.706 13.381 0 14.4-9.5 19.584-21.5 19.973.5.016 1 .027 1.5.027 12.7 0 23-5 23-20 .0682198-5.2489783-1.5281428-10.3846449-4.56-14.67z" fill="#cfd8dc"/><rect id="Rectangle-path" fill="#607d8b" height="22" rx="11" width="38" x="6" y="28"/><path id="Shape" d="m33 28h-3c6.0751322 0 11 4.9248678 11 11s-4.9248678 11-11 11h3c6.0751322-.0000001 10.9999998-4.9248678 10.9999998-11s-4.9248676-10.9999999-10.9999998-11z" fill="#37474f"/><circle id="Oval" cx="14" cy="38" fill="#00bcd4" r="3"/><circle id="Oval" cx="36" cy="38" fill="#00bcd4" r="3"/><circle id="Oval" cx="8" cy="13" fill="#02a9f4" r="2"/><path id="Shape" d="m60 4v14c0 1.6568542-1.3431458 3-3 3h-7.72c-.1824524.0014388-.3614878.0496407-.52.14l-5.32 3.19-2.93 1.76c-.3090648.1832455-.6926808.1865957-1.004899.0087761-.3122181-.1778196-.5050383-.5094712-.505101-.8687761v-3.23c0-.5522847-.4477153-1-1-1h-1c-1.6568542 0-3-1.3431458-3-3v-14c0-1.65685425 1.3431458-3 3-3h20c1.6568542 0 3 1.34314575 3 3z" fill="#ffdf00"/><path id="Shape" d="m57 1h-3c1.6568542 0 3 1.34314575 3 3v14c0 1.6568542-1.3431458 3-3 3h3c1.6568542 0 3-1.3431458 3-3v-14c0-1.65685425-1.3431458-3-3-3z" fill="#fec108"/><g fill="#000"><path id="Shape" d="m17 27c-6.627417 0-12 5.372583-12 12s5.372583 12 12 12h16c6.627417 0 12-5.372583 12-12s-5.372583-12-12-12zm26 12c-.0060624 5.5203344-4.4796656 9.9939376-10 10h-16c-5.5228475 0-10-4.4771525-10-10s4.4771525-10 10-10h16c5.5203344.0060624 9.9939376 4.4796656 10 10z"/><path id="Shape" d="m14 34c-2.209139 0-4 1.790861-4 4s1.790861 4 4 4 4-1.790861 4-4-1.790861-4-4-4zm0 6c-1.1045695 0-2-.8954305-2-2s.8954305-2 2-2 2 .8954305 2 2-.8954305 2-2 2z"/><path id="Shape" d="m36 42c2.209139 0 4-1.790861 4-4s-1.790861-4-4-4-4 1.790861-4 4 1.790861 4 4 4zm0-6c1.1045695 0 2 .8954305 2 2s-.8954305 2-2 2-2-.8954305-2-2 .8954305-2 2-2z"/><path id="Shape" d="m22 25h6c.5522847 0 1-.4477153 1-1s-.4477153-1-1-1h-6c-.5522847 0-1 .4477153-1 1s.4477153 1 1 1z"/><path id="Shape" d="m24 22h2c.5522847 0 1-.4477153 1-1s-.4477153-1-1-1h-2c-.5522847 0-1 .4477153-1 1s.4477153 1 1 1z"/><path id="Shape" d="m57 0h-20c-2.209139 0-4 1.790861-4 4v11.347c-2.5712007-.8985807-5.276313-1.3540539-8-1.347-5.9058605-.0610987-11.6181844 2.1038721-16 6.064v-4.248c1.3775467-.4870363 2.2038721-1.8956662 1.9567957-3.3357331-.2470764-1.4400668-1.4956868-2.49269402-2.9567957-2.49269402s-2.70971927 1.05262722-2.95679568 2.49269402c-.24707641 1.4400669.57924899 2.8486968 1.95679568 3.3357331v6.3c-3.96356752 4.7243441-6.09348037 10.7179189-6 16.884 0 13.738 8.3 21 24 21s24-7.262 24-21c.0508124-5.0845422-1.3914304-10.0722404-4.148-14.345l4.425-2.655h7.723c2.209139 0 4-1.790861 4-4v-14c0-2.209139-1.790861-4-4-4zm-49 12c.55228475 0 1 .4477153 1 1s-.44771525 1-1 1-1-.4477153-1-1 .44771525-1 1-1zm39 27c0 12.607-7.4 19-22 19s-22-6.393-22-19c0-13.112 9.458-23 22-23 2.7368223-.0026943 5.4500512.5060361 8 1.5v.5c0 2.209139 1.790861 4 4 4h1v3.234c.0049282 1.1025217.8974783 1.9950718 2 2 .3627718-.0009.7184675-.1004533 1.029-.288l2.108-1.265c2.5710617 3.9624335 3.9149107 8.595808 3.863 13.319zm12-21c0 1.1045695-.8954305 2-2 2h-7.723c-.3624418.0003443-.7180261.0988297-1.029.285l-8.248 4.949v-3.234c0-1.1045695-.8954305-2-2-2h-1c-1.1045695 0-2-.8954305-2-2v-14c0-1.1045695.8954305-2 2-2h20c1.1045695 0 2 .8954305 2 2z"/><path id="Shape" d="m27.3 43.282c-.6559217.5070896-1.4720819.7618735-2.3.718-.8276815.0432642-1.643525-.2110662-2.3-.717-.3985064-.3506401-1.0015362-.3288293-1.37367.049684-.3721338.3785132-.3836925.9818266-.02633 1.374316 1.023374.8869696 2.346923 1.3494963 3.7 1.293 1.35546.0583036 2.6818413-.4043376 3.707-1.293.3854708-.3870661.3854708-1.0129339 0-1.4-.3841726-.3895471-1.0092311-.4006534-1.407-.025z"/><path id="Shape" d="m55 6h-16c-.5522847 0-1 .44771525-1 1s.4477153 1 1 1h16c.5522847 0 1-.44771525 1-1s-.4477153-1-1-1z"/><path id="Shape" d="m39 12h5c.5522847 0 1-.4477153 1-1s-.4477153-1-1-1h-5c-.5522847 0-1 .4477153-1 1s.4477153 1 1 1z"/><path id="Shape" d="m52 14h-13c-.5522847 0-1 .4477153-1 1s.4477153 1 1 1h13c.5522847 0 1-.4477153 1-1s-.4477153-1-1-1z"/></g></g></g></svg>
|
Before Width: | Height: | Size: 4.6 KiB |
Before Width: | Height: | Size: 7.3 KiB |
|
@ -1,186 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="146.15311mm"
|
||||
height="184.664mm"
|
||||
viewBox="0 0 146.15311 184.66401"
|
||||
version="1.1"
|
||||
id="svg5"
|
||||
inkscape:version="1.2-alpha (0bd5040e, 2022-02-05)"
|
||||
sodipodi:docname="damus-nobg.svg"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview7"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:blackoutopacity="0.0"
|
||||
inkscape:document-units="mm"
|
||||
showgrid="false"
|
||||
inkscape:zoom="0.5946522"
|
||||
inkscape:cx="73.992831"
|
||||
inkscape:cy="206.8436"
|
||||
inkscape:window-width="1435"
|
||||
inkscape:window-height="844"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="25"
|
||||
inkscape:window-maximized="0"
|
||||
inkscape:current-layer="layer2" />
|
||||
<defs
|
||||
id="defs2">
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient39361">
|
||||
<stop
|
||||
style="stop-color:#0de8ff;stop-opacity:0.78082192;"
|
||||
offset="0"
|
||||
id="stop39357" />
|
||||
<stop
|
||||
style="stop-color:#d600fc;stop-opacity:0.95433789;"
|
||||
offset="1"
|
||||
id="stop39359" />
|
||||
</linearGradient>
|
||||
<inkscape:path-effect
|
||||
effect="bspline"
|
||||
id="path-effect255"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
weight="33.333333"
|
||||
steps="2"
|
||||
helper_size="0"
|
||||
apply_no_weight="true"
|
||||
apply_with_weight="true"
|
||||
only_selected="false" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient2119">
|
||||
<stop
|
||||
style="stop-color:#1c55ff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2115" />
|
||||
<stop
|
||||
style="stop-color:#7f35ab;stop-opacity:1;"
|
||||
offset="0.5"
|
||||
id="stop2123" />
|
||||
<stop
|
||||
style="stop-color:#ff0bd6;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop2117" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2119"
|
||||
id="linearGradient2121"
|
||||
x1="10.067794"
|
||||
y1="248.81357"
|
||||
x2="246.56145"
|
||||
y2="7.1864405"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient39361"
|
||||
id="linearGradient39367"
|
||||
x1="62.104473"
|
||||
y1="128.78963"
|
||||
x2="208.25758"
|
||||
y2="128.78963"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
</defs>
|
||||
<g
|
||||
inkscape:label="Background"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
sodipodi:insensitive="true"
|
||||
style="display:none"
|
||||
transform="translate(-62.104473,-36.457485)">
|
||||
<rect
|
||||
style="fill:url(#linearGradient2121);fill-opacity:1;stroke-width:0.264583"
|
||||
id="rect61"
|
||||
width="256"
|
||||
height="256"
|
||||
x="-5.3875166e-08"
|
||||
y="-1.0775033e-07"
|
||||
ry="0"
|
||||
inkscape:label="Gradient"
|
||||
sodipodi:insensitive="true" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer2"
|
||||
inkscape:label="Logo"
|
||||
sodipodi:insensitive="true"
|
||||
transform="translate(-62.104473,-36.457485)">
|
||||
<path
|
||||
style="fill:url(#linearGradient39367);fill-opacity:1;stroke:#ffffff;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 101.1429,213.87373 C 67.104473,239.1681 67.104473,42.67112 67.104473,42.67112 135.18122,57.58146 203.25844,72.491904 203.25758,105.24181 c -8.6e-4,32.74991 -68.07625,83.33755 -102.11468,108.63192 z"
|
||||
id="path253"
|
||||
sodipodi:insensitive="true" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer3"
|
||||
inkscape:label="Poly"
|
||||
sodipodi:insensitive="true"
|
||||
transform="translate(-62.104473,-36.457485)">
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:0.325424;stroke:#ffffff;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 67.32839,76.766948 112.00424,99.41949 100.04873,52.226693 Z"
|
||||
id="path4648" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:0.274576;stroke:#ffffff;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 111.45696,98.998695 107.00758,142.60261 70.077729,105.67276 Z"
|
||||
id="path9299" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:0.379661;stroke:#ffffff;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 111.01202,99.221164 29.14343,-37.15232 25.80641,39.377006 z"
|
||||
id="path9301" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:0.447458;stroke:#ffffff;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 111.45696,99.443631 57.17452,55.172309 -2.89209,-53.17009 z"
|
||||
id="path9368" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:0.20678;stroke:#ffffff;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 106.78511,142.38015 62.06884,12.68073 -57.17452,-55.617249 z"
|
||||
id="path9370" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:0.244068;stroke:#ffffff;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 106.78511,142.38015 -28.47603,32.9254 62.51378,7.56395 z"
|
||||
id="path9372" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:0.216949;stroke:#ffffff;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 165.96186,101.44585 195.7727,125.02756 182.64703,78.754017 Z"
|
||||
id="path9374" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer4"
|
||||
inkscape:label="Vertices"
|
||||
transform="translate(-62.104473,-36.457485)">
|
||||
<circle
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path27764"
|
||||
cx="106.86934"
|
||||
cy="142.38014"
|
||||
r="2.0022209" />
|
||||
<circle
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle28773"
|
||||
cx="111.54119"
|
||||
cy="99.221161"
|
||||
r="2.0022209" />
|
||||
<circle
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle29091"
|
||||
cx="165.90784"
|
||||
cy="101.36163"
|
||||
r="2.0022209" />
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 6.5 KiB |
184
img/damus.svg
|
@ -1,184 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="256mm"
|
||||
height="256mm"
|
||||
viewBox="0 0 256 256"
|
||||
version="1.1"
|
||||
id="svg5"
|
||||
inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)"
|
||||
sodipodi:docname="damus.svg"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview7"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:blackoutopacity="0.0"
|
||||
inkscape:document-units="mm"
|
||||
showgrid="false"
|
||||
inkscape:zoom="0.5946522"
|
||||
inkscape:cx="406.11975"
|
||||
inkscape:cy="491.88416"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1060"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="20"
|
||||
inkscape:window-maximized="0"
|
||||
inkscape:current-layer="svg5"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:deskcolor="#d1d1d1" />
|
||||
<defs
|
||||
id="defs2">
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient39361">
|
||||
<stop
|
||||
style="stop-color:#0de8ff;stop-opacity:0.78082192;"
|
||||
offset="0"
|
||||
id="stop39357" />
|
||||
<stop
|
||||
style="stop-color:#d600fc;stop-opacity:0.95433789;"
|
||||
offset="1"
|
||||
id="stop39359" />
|
||||
</linearGradient>
|
||||
<inkscape:path-effect
|
||||
effect="bspline"
|
||||
id="path-effect255"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
weight="33.333333"
|
||||
steps="2"
|
||||
helper_size="0"
|
||||
apply_no_weight="true"
|
||||
apply_with_weight="true"
|
||||
only_selected="false" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient2119">
|
||||
<stop
|
||||
style="stop-color:#1c55ff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2115" />
|
||||
<stop
|
||||
style="stop-color:#7f35ab;stop-opacity:1;"
|
||||
offset="0.5"
|
||||
id="stop2123" />
|
||||
<stop
|
||||
style="stop-color:#ff0bd6;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop2117" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2119"
|
||||
id="linearGradient2121"
|
||||
x1="10.067794"
|
||||
y1="248.81357"
|
||||
x2="246.56145"
|
||||
y2="7.1864405"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient39361"
|
||||
id="linearGradient39367"
|
||||
x1="62.104473"
|
||||
y1="128.78963"
|
||||
x2="208.25758"
|
||||
y2="128.78963"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
</defs>
|
||||
<g
|
||||
inkscape:label="Background"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
sodipodi:insensitive="true">
|
||||
<rect
|
||||
style="fill:url(#linearGradient2121);fill-opacity:1;stroke-width:0.264583"
|
||||
id="rect61"
|
||||
width="256"
|
||||
height="256"
|
||||
x="-5.3875166e-08"
|
||||
y="-1.0775033e-07"
|
||||
ry="0"
|
||||
inkscape:label="Gradient"
|
||||
sodipodi:insensitive="true" />
|
||||
</g>
|
||||
<g
|
||||
id="g407"
|
||||
inkscape:label="Logo">
|
||||
<g
|
||||
id="layer2"
|
||||
inkscape:label="LogoStroke"
|
||||
style="display:inline">
|
||||
<path
|
||||
style="fill:url(#linearGradient39367);fill-opacity:1;stroke:#ffffff;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 101.1429,213.87373 C 67.104473,239.1681 67.104473,42.67112 67.104473,42.67112 135.18122,57.58146 203.25844,72.491904 203.25758,105.24181 c -8.6e-4,32.74991 -68.07625,83.33755 -102.11468,108.63192 z"
|
||||
id="path253" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer3"
|
||||
inkscape:label="Poly">
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:0.325424;stroke:#ffffff;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 67.32839,76.766948 112.00424,99.41949 100.04873,52.226693 Z"
|
||||
id="path4648" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:0.274576;stroke:#ffffff;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 111.45696,98.998695 107.00758,142.60261 70.077729,105.67276 Z"
|
||||
id="path9299" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:0.379661;stroke:#ffffff;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 111.01202,99.221164 29.14343,-37.15232 25.80641,39.377006 z"
|
||||
id="path9301" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:0.447458;stroke:#ffffff;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 111.45696,99.443631 57.17452,55.172309 -2.89209,-53.17009 z"
|
||||
id="path9368" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:0.20678;stroke:#ffffff;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 106.78511,142.38015 62.06884,12.68073 -57.17452,-55.617249 z"
|
||||
id="path9370" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:0.244068;stroke:#ffffff;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 106.78511,142.38015 -28.47603,32.9254 62.51378,7.56395 z"
|
||||
id="path9372" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:0.216949;stroke:#ffffff;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 165.96186,101.44585 195.7727,125.02756 182.64703,78.754017 Z"
|
||||
id="path9374" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer4"
|
||||
inkscape:label="Vertices">
|
||||
<circle
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path27764"
|
||||
cx="106.86934"
|
||||
cy="142.38014"
|
||||
r="2.0022209" />
|
||||
<circle
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle28773"
|
||||
cx="111.54119"
|
||||
cy="99.221161"
|
||||
r="2.0022209" />
|
||||
<circle
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle29091"
|
||||
cx="165.90784"
|
||||
cy="101.36163"
|
||||
r="2.0022209" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 6.4 KiB |
|
@ -1,190 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="256mm"
|
||||
height="256mm"
|
||||
viewBox="0 0 256 256"
|
||||
version="1.1"
|
||||
id="svg5"
|
||||
inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)"
|
||||
sodipodi:docname="damus_notif.svg"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview7"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:blackoutopacity="0.0"
|
||||
inkscape:document-units="mm"
|
||||
showgrid="false"
|
||||
inkscape:zoom="0.5946522"
|
||||
inkscape:cx="407.8014"
|
||||
inkscape:cy="491.88416"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1060"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="20"
|
||||
inkscape:window-maximized="0"
|
||||
inkscape:current-layer="svg5"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:deskcolor="#d1d1d1" />
|
||||
<defs
|
||||
id="defs2">
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient39361">
|
||||
<stop
|
||||
style="stop-color:#0de8ff;stop-opacity:0.78082192;"
|
||||
offset="0"
|
||||
id="stop39357" />
|
||||
<stop
|
||||
style="stop-color:#d600fc;stop-opacity:0.95433789;"
|
||||
offset="1"
|
||||
id="stop39359" />
|
||||
</linearGradient>
|
||||
<inkscape:path-effect
|
||||
effect="bspline"
|
||||
id="path-effect255"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
weight="33.333333"
|
||||
steps="2"
|
||||
helper_size="0"
|
||||
apply_no_weight="true"
|
||||
apply_with_weight="true"
|
||||
only_selected="false" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient2119">
|
||||
<stop
|
||||
style="stop-color:#1c55ff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2115" />
|
||||
<stop
|
||||
style="stop-color:#7f35ab;stop-opacity:1;"
|
||||
offset="0.5"
|
||||
id="stop2123" />
|
||||
<stop
|
||||
style="stop-color:#ff0bd6;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop2117" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2119"
|
||||
id="linearGradient2121"
|
||||
x1="10.067794"
|
||||
y1="248.81357"
|
||||
x2="246.56145"
|
||||
y2="7.1864405"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient39361"
|
||||
id="linearGradient39367"
|
||||
x1="62.104473"
|
||||
y1="128.78963"
|
||||
x2="208.25758"
|
||||
y2="128.78963"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
</defs>
|
||||
<g
|
||||
inkscape:label="Background"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
sodipodi:insensitive="true">
|
||||
<rect
|
||||
style="fill:url(#linearGradient2121);fill-opacity:1;stroke-width:0.264583"
|
||||
id="rect61"
|
||||
width="256"
|
||||
height="256"
|
||||
x="-5.3875166e-08"
|
||||
y="-1.0775033e-07"
|
||||
ry="0"
|
||||
inkscape:label="Gradient"
|
||||
sodipodi:insensitive="true" />
|
||||
</g>
|
||||
<g
|
||||
id="g407"
|
||||
inkscape:label="Logo">
|
||||
<g
|
||||
id="layer2"
|
||||
inkscape:label="LogoStroke"
|
||||
style="display:inline">
|
||||
<path
|
||||
style="fill:url(#linearGradient39367);fill-opacity:1;stroke:#ffffff;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 101.1429,213.87373 C 67.104473,239.1681 67.104473,42.67112 67.104473,42.67112 135.18122,57.58146 203.25844,72.491904 203.25758,105.24181 c -8.6e-4,32.74991 -68.07625,83.33755 -102.11468,108.63192 z"
|
||||
id="path253" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer3"
|
||||
inkscape:label="Poly">
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:0.325424;stroke:#ffffff;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 67.32839,76.766948 112.00424,99.41949 100.04873,52.226693 Z"
|
||||
id="path4648" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:0.274576;stroke:#ffffff;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 111.45696,98.998695 107.00758,142.60261 70.077729,105.67276 Z"
|
||||
id="path9299" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:0.379661;stroke:#ffffff;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 111.01202,99.221164 29.14343,-37.15232 25.80641,39.377006 z"
|
||||
id="path9301" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:0.447458;stroke:#ffffff;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 111.45696,99.443631 57.17452,55.172309 -2.89209,-53.17009 z"
|
||||
id="path9368" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:0.20678;stroke:#ffffff;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 106.78511,142.38015 62.06884,12.68073 -57.17452,-55.617249 z"
|
||||
id="path9370" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:0.244068;stroke:#ffffff;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 106.78511,142.38015 -28.47603,32.9254 62.51378,7.56395 z"
|
||||
id="path9372" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:0.216949;stroke:#ffffff;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 165.96186,101.44585 195.7727,125.02756 182.64703,78.754017 Z"
|
||||
id="path9374" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer4"
|
||||
inkscape:label="Vertices">
|
||||
<circle
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path27764"
|
||||
cx="106.86934"
|
||||
cy="142.38014"
|
||||
r="2.0022209" />
|
||||
<circle
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle28773"
|
||||
cx="111.54119"
|
||||
cy="99.221161"
|
||||
r="2.0022209" />
|
||||
<circle
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle29091"
|
||||
cx="165.90784"
|
||||
cy="101.36163"
|
||||
r="2.0022209" />
|
||||
</g>
|
||||
</g>
|
||||
<circle
|
||||
style="fill:#ff2a2a;stroke-width:1.5875;stroke-linejoin:round;paint-order:stroke fill markers"
|
||||
id="path1029"
|
||||
cx="169.51305"
|
||||
cy="171.74377"
|
||||
r="66.864555" />
|
||||
</svg>
|
Before Width: | Height: | Size: 6.6 KiB |
Before Width: | Height: | Size: 146 KiB |
Before Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 94 KiB |
Before Width: | Height: | Size: 16 KiB |
BIN
img/logo.png
Before Width: | Height: | Size: 143 KiB |
Before Width: | Height: | Size: 8.4 KiB |
|
@ -1 +0,0 @@
|
|||
<svg id="Layer_5" enable-background="new 0 0 64 64" height="512" viewBox="0 0 64 64" width="512" xmlns="http://www.w3.org/2000/svg"><g><g><g><path d="m6 16c-2.21 0-4 1.79-4 4v28c0 2.21 1.79 4 4 4h42c2.21 0 4-1.79 4-4v-32z" fill="#ccd1d9"/></g><g><path d="m62 8v7.88c0 4.36-1.17 8.56-3.29 12.21-1.67 2.89-3.95 5.44-6.71 7.44-.72.54-1.48 1.03-2.26 1.48-.55.31-1.13.55-1.74.72-.65.18-1.32.27-2 .27-1.31 0-2.6-.34-3.74-.99-3.82-2.19-6.9-5.32-9.02-9.01-1.42-2.46-2.4-5.17-2.88-8-.23-1.31-.35-2.65-.36-4 0-.04 0-.08 0-.12v-7.88c0-1.1.9-2 2-2h.79c4.7 0 9.3-1.39 13.21-4 3.91 2.61 8.51 4 13.21 4h.79c1.1 0 2 .9 2 2z" fill="#aab2bd"/></g><g><path d="m46.14 6.73c-.05-.02-.09-.05-.14-.07-3.7 2-7.78 3.13-12 3.31v5.91c0 7.28 3.93 14.04 10.25 17.66.53.3 1.14.46 1.75.46s1.22-.16 1.75-.46c6.32-3.62 10.25-10.38 10.25-17.66v-5.91c-4.17-.18-8.2-1.28-11.86-3.24z" fill="#fcd770"/></g><g><path d="m54 13v10l-6.67-5z" fill="#dfb28b"/></g><g><path d="m54 13-6.67 5-1.33 1-1.33-1-6.67-5h8z" fill="#cf9e76"/></g><g><path d="m54 23h-8-8l6.67-5 1.33 1 1.33-1z" fill="#d3a06c"/></g><g><path d="m48 37.73v5.27c0 .55-.45 1-1 1h-40c-.55 0-1-.45-1-1v-15h27.24c2.12 3.69 5.2 6.82 9.02 9.01 1.14.65 2.43.99 3.74.99.68 0 1.35-.09 2-.27z" fill="#f0d0b4"/></g><g><path d="m44.67 18-6.67 5v-10z" fill="#dfb28b"/></g><g><path d="m42 62h-30c0-1.1.45-2.1 1.17-2.83.73-.72 1.73-1.17 2.83-1.17h2 18 2c2.21 0 4 1.79 4 4z" fill="#969faa"/></g><g><path d="m34 52 2 6h-18l2-6z" fill="#aab2bd"/></g><g><path d="m33.24 28h-27.24v-7c0-.55.45-1 1-1h23.36c.48 2.83 1.46 5.54 2.88 8z" fill="#b4dd7f"/></g><g><path d="m10 32h8v8h-8z" fill="#ff826e"/></g></g><g><path d="m41 47h8v2h-8z"/><path d="m37 47h2v2h-2z"/><path d="m46.476 5.784-.476-.257-.476.257c-3.591 1.941-7.483 3.015-11.567 3.19l-.957.042v6.86c0 7.639 4.12 14.738 10.753 18.527.684.391 1.46.597 2.247.597.786 0 1.563-.206 2.248-.597 6.632-3.79 10.752-10.888 10.752-18.527v-6.86l-.957-.041c-4.085-.176-7.977-1.249-11.567-3.191zm-5.476 16.216 3.667-2.75 1.333 1 1.333-1 3.667 2.75zm-2-7 4 3-4 3zm14 6-4-3 4-3zm-7-3.25-5-3.75h10zm-11-1.874v-4.96c3.492-.264 6.844-1.152 10-2.635v3.719h-8v12h8v8.77c-.084-.036-.175-.057-.255-.103-6.011-3.435-9.745-9.868-9.745-16.791zm22 0c0 6.923-3.734 13.356-9.743 16.79-.081.046-.172.067-.257.104v-8.77h8v-12h-8v-3.719c3.156 1.483 6.508 2.371 10 2.635z"/><path d="m60 5h-.789c-4.52 0-8.896-1.325-12.656-3.832l-.555-.37-.555.37c-3.759 2.507-8.136 3.832-12.656 3.832h-.789c-1.654 0-3 1.346-3 3v7h-23c-2.757 0-5 2.243-5 5v28c0 2.757 2.243 5 5 5h12.612l-1.333 4h-1.279c-2.757 0-5 2.243-5 5v1h32v-1c0-2.757-2.243-5-5-5h-1.279l-1.333-4h12.612c2.757 0 5-2.243 5-5v-11.959c6.237-4.751 10-12.211 10-20.165v-7.876c0-1.654-1.346-3-3-3zm-53 24h25.687c2.196 3.623 5.288 6.708 9.081 8.876 1.286.735 2.749 1.124 4.232 1.124.335 0 .669-.026 1-.065v4.065h-40zm0-2v-6h22.53c.434 2.089 1.128 4.103 2.057 6zm33.829 34h-27.658c.413-1.164 1.525-2 2.829-2h22c1.304 0 2.416.836 2.829 2zm-6.217-4h-15.224l1.333-4h12.558zm16.388-9c0 1.654-1.346 3-3 3h-42c-1.654 0-3-1.346-3-3v-28c0-1.654 1.346-3 3-3h23.038c.03.671.081 1.339.164 2h-22.202c-1.103 0-2 .897-2 2v22c0 1.103.897 2 2 2h40c1.103 0 2-.897 2-2v-4.559c.423-.159.838-.34 1.232-.565.262-.15.512-.315.768-.473zm10-32.124c0 8.354-4.506 16.119-11.76 20.264-1.97 1.125-4.511 1.125-6.48 0-7.254-4.145-11.76-11.91-11.76-20.264v-7.876c0-.552.449-1 1-1h.789c4.695 0 9.249-1.314 13.211-3.809 3.962 2.495 8.516 3.809 13.211 3.809h.789c.551 0 1 .448 1 1z"/><path d="m13 23h2v2h-2z"/><path d="m17 23h2v2h-2z"/><path d="m9 23h2v2h-2z"/><path d="m9 41h10v-10h-10zm2-8h6v6h-6z"/><path d="m21 31h2v2h-2z"/><path d="m25 31h7v2h-7z"/><path d="m21 35h11v2h-11z"/><path d="m21 39h11v2h-11z"/></g></g></svg>
|
Before Width: | Height: | Size: 3.6 KiB |
Before Width: | Height: | Size: 7.6 KiB |
BIN
img/ss.png
Before Width: | Height: | Size: 750 KiB |
Before Width: | Height: | Size: 226 KiB |
Before Width: | Height: | Size: 124 KiB |
Before Width: | Height: | Size: 6.5 KiB |
335
index.html
|
@ -1,83 +1,272 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>damus</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta http-equiv="Content-Security-Policy"
|
||||
content="default-src 'none'; connect-src 'self' ws: wss:; script-src 'self'; script-src-elem 'self'; script-src-attr 'unsafe-inline'; style-src 'self' fonts.googleapis.com; img-src http: https: data:; media-src *; font-src 'self' fonts.gstatic.com; child-src 'none';" />
|
||||
|
||||
<meta property="og:title" content="Damus">
|
||||
<meta property="og:description" content="A new social network that you control">
|
||||
<meta property="og:image" content="https://damus.io/img/logo.png">
|
||||
<meta property="og:url" content="https://damus.io">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:image" content="https://damus.io/img/logo.png">
|
||||
|
||||
<link rel="stylesheet" href="css/normalize.css">
|
||||
<link rel="stylesheet" href="css/skeleton.css?v=2">
|
||||
<link rel="stylesheet" href="css/custom.css?v=5">
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<section class="header">
|
||||
<span class="logo">
|
||||
<img src="img/damus-nobg.svg"/>
|
||||
</span>
|
||||
<span class="damus">damus</span>
|
||||
</section>
|
||||
<div class="container">
|
||||
<section class="hero">
|
||||
<h2 class="title">The social network you control
|
||||
<h5 class="subtitle">Your very own Twitter for your friends or business.</h5>
|
||||
|
||||
<img style="width: 50%; height: 50%" src="img/ss.png" />
|
||||
|
||||
<div class="value-props row">
|
||||
<div class="four columns value-prop">
|
||||
<img class="value-img" src="img/digital-nomad.svg">
|
||||
<b>You are in control</b>. Built on open internet protocols, there is no platform that can ban or censor you. You are in control of your data & speech.
|
||||
</div>
|
||||
<div class="four columns value-prop">
|
||||
<img class="value-img" src="img/message.svg">
|
||||
<b>Encrypted</b>. End-to-End encrypted private messaging. Keep big tech out of your DMs.
|
||||
</div>
|
||||
<div class="four columns value-prop">
|
||||
<img class="value-img" src="img/undercover.svg">
|
||||
<b>No registration required</b>. Creating an account doesn't require a phone number, email or name. Get started right away with zero friction.
|
||||
</div>
|
||||
</div>
|
||||
<div class="value-props row">
|
||||
<div class="four columns value-prop">
|
||||
<img class="value-img" src="img/social-media.svg">
|
||||
<b>No servers required.</b> Messages are distributed via decentralized relays. No need to run any infrastructure and there are no single points of failure. Simple!
|
||||
</div>
|
||||
<div class="four columns value-prop">
|
||||
<img class="value-img" src="img/bot.svg">
|
||||
<b>Programmable.</b> Easily integrate bots that automate your life or business. Get notified when your servers go down, retweet to your team and collaborate in realtime.
|
||||
</div>
|
||||
<div class="four columns value-prop">
|
||||
<img class="value-img" src="img/bitcoin-phone.svg">
|
||||
<b>Earn money</b>. Tip your friend's posts and stack sats with Bitcoin & ⚡️, the native currency of the internet.</div>
|
||||
</div>
|
||||
<!-- <div class="row"> -->
|
||||
<!-- <h4 class="subtitle">Developers First</h4> -->
|
||||
<!-- <img class="code-example" src="img/code-placeholder.svg"> -->
|
||||
<!-- </div> -->
|
||||
<div>
|
||||
<img style="width: 200px" src="img/app-store-coming-soon.svg" />
|
||||
<title>Damus</title>
|
||||
<link rel="stylesheet" href="css/vars.css?v=1">
|
||||
<link rel="stylesheet" href="css/utils.css?v=1">
|
||||
<link rel="stylesheet" href="css/styles.css?v=13">
|
||||
<link rel="stylesheet" href="css/responsive.css?v=10">
|
||||
<script defer src="js/ui/safe-html.js?v=1"></script>
|
||||
<script defer src="js/util.js?v=5"></script>
|
||||
<script defer src="js/ui/util.js?v=8"></script>
|
||||
<script defer src="js/ui/render.js?v=15"></script>
|
||||
<script defer src="js/ui/state.js?v=1"></script>
|
||||
<script defer src="js/ui/fmt.js?v=1"></script>
|
||||
<script defer src="js/noble-secp256k1.js?v=1"></script>
|
||||
<script defer src="js/bech32.js?v=1"></script>
|
||||
<script defer src="js/nostr.js?v=7"></script>
|
||||
<script defer src="js/core.js?v=1"></script>
|
||||
<script defer src="js/model.js?v=1"></script>
|
||||
<script defer src="js/contacts.js?v=1"></script>
|
||||
<script defer src="js/event.js?v=1"></script>
|
||||
<script defer src="js/unknowns.js?v=1"></script>
|
||||
<script defer src="js/lib.js?v=1"></script>
|
||||
<script defer src="js/main.js?v=1"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="container-busy">
|
||||
<div class="loader" title="Loading...">
|
||||
<img class="dark-invert" src="icon/loader-fragment.svg"/>
|
||||
</div>
|
||||
</div>
|
||||
<div style="margin-top: 20px">
|
||||
<div id="container-welcome" class="hide">
|
||||
<div class="hero-box">
|
||||
<div class="padded">
|
||||
<h1>
|
||||
Yo, Sup?
|
||||
<img class="icon svg" src="icon/logo-inverted.svg"/>
|
||||
</h1>
|
||||
<p>The blue bird experience for Nostr.</p>
|
||||
<button class="action" onclick="signin()">
|
||||
Sign In with Key
|
||||
<img src="./icon/key.svg" class="icon svg small dark-noinvert"/>
|
||||
</button>
|
||||
<br/>
|
||||
<br/>
|
||||
<button class="btn-text" onclick="open_faqs()">
|
||||
What's Nostr?
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="container-app" class="hide">
|
||||
<nav id="gnav" class="">
|
||||
<button class="icon" role="open-gnav" title="Open Menu" onclick="toggle_gnav(this)">
|
||||
<img class="icon svg invert" src="icon/logo.svg"/>
|
||||
</button>
|
||||
<button class="icon" role="home" title="Home" onclick="switch_view('friends')">
|
||||
<img class="icon svg invert" src="icon/home.svg"/>
|
||||
</button>
|
||||
<button class="icon" role="explore" title="Explore" onclick="switch_view('explore')">
|
||||
<img class="icon svg invert" src="icon/explore.svg"/>
|
||||
</button>
|
||||
<button class="icon" role="notifications" title="Notifications" onclick="switch_view('notifications')">
|
||||
<img class="icon svg invert" src="icon/notifications.svg"/>
|
||||
<div class="new-notifications hide"></div>
|
||||
</button>
|
||||
<button class="icon" role="sign-out" title="Sign Out" onclick="press_logout()">
|
||||
<img class="icon svg invert" src="icon/sign-out.svg"/>
|
||||
</button>
|
||||
</nav>
|
||||
|
||||
<div id="container">
|
||||
<div class="flex-fill vertical-hide"></div>
|
||||
<div id="nav" class="flex-noshrink vertical-hide">
|
||||
<div data-active="home">
|
||||
<div id="app-icon-logo">
|
||||
<img class="icon svg" title="Damus" src="icon/logo-inverted.svg"/>
|
||||
</div>
|
||||
<button role="home" class="nav icon"
|
||||
title="Home" onclick="switch_view('friends')">
|
||||
<img class="icon svg inactive" src="icon/home.svg"/>
|
||||
<img class="icon svg active" src="icon/home-active.svg"/>
|
||||
</button>
|
||||
<button role="explore" class="nav icon"
|
||||
title="Explore" onclick="switch_view('explore')">
|
||||
<img class="icon svg inactive" src="icon/explore.svg"/>
|
||||
<img class="icon svg active" src="icon/explore-active.svg"/>
|
||||
</button>
|
||||
<button role="notifications" class="nav icon"
|
||||
title="Notifications" onclick="switch_view('notifications')">
|
||||
<img class="icon svg inactive" src="icon/notifications.svg"/>
|
||||
<img class="icon svg active" src="icon/notifications-active.svg"/>
|
||||
<div class="new-notifications hide"></div>
|
||||
</button>
|
||||
<button title="Sign Out" class="nav icon" onclick="press_logout()">
|
||||
<img class="icon svg" src="icon/sign-out.svg"/>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div id="view">
|
||||
<div>
|
||||
<header>
|
||||
<label>Home</label>
|
||||
</header>
|
||||
<div id="newpost">
|
||||
<div class="my-userpic vertical-hide">
|
||||
<!-- To be loaded dynamically. -->
|
||||
</div>
|
||||
<div>
|
||||
<textarea placeholder="What's up?"
|
||||
oninput="post_input_changed(this)"
|
||||
class="post-input" id="post-input"></textarea>
|
||||
<div class="post-tools">
|
||||
<input id="content-warning-input" class="cw hide" type="text" placeholder="Reason"/>
|
||||
<button title="Mark this message as sensitive."
|
||||
onclick="toggle_cw(this)" class="cw icon">
|
||||
<img class="icon svg small" src="icon/content-warning.svg"/>
|
||||
</button>
|
||||
<button onclick="send_post(this)" class="action"
|
||||
role="send" id="post-button" disabled>Send</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div role="profile-info" class="bottom-border hide">
|
||||
<div class="flex">
|
||||
<img role="profile-image" class="pfp jumbo"
|
||||
src="./icon/no-user.svg"
|
||||
onerror="this.src='./icon/no-user.svg';"/>
|
||||
<div class="profile-tools">
|
||||
<!--
|
||||
<button class="icon" title="Message User" role="message-user">
|
||||
<img class="icon" src="icon/message-user.svg"/></button>
|
||||
-->
|
||||
<button class="icon" role="copy-pk"
|
||||
data-pk="" onclick="click_copy_pk(this)" title="Copy Public Key">
|
||||
<img class="icon svg" src="icon/pubkey.svg"/></button>
|
||||
<button class="action" role="follow-user" data-pk=""
|
||||
onclick="click_toggle_follow_user(this)">Follow</button>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<label role="profile-nip5"></label>
|
||||
<p role="profile-desc"></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="loading-events">
|
||||
<div class="loader" title="Loading...">
|
||||
<img class="dark-invert" src="icon/loader-fragment.svg"/>
|
||||
</div>
|
||||
</div>
|
||||
<div id="show-new" class="show-new bottom-border hide">
|
||||
<button onclick="show_new()">
|
||||
Show New (<span role="count">0</span>)</button>
|
||||
</div>
|
||||
<div id="timeline" class="events"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex-fill vertical-hide"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal closed" id="media-preview">
|
||||
<div class="media-container">
|
||||
<img onclick="close_media_preview()" src=""/>
|
||||
</div>
|
||||
<!-- TODO add loader to media preview -->
|
||||
</div>
|
||||
|
||||
<div class="modal closed" id="reply-modal">
|
||||
<div id="reply-modal-content" class="modal-content">
|
||||
<header>
|
||||
<label>Reply To</label>
|
||||
<button class="icon" onclick="close_reply()">
|
||||
<img class="icon svg" src="icon/close-modal.svg"/>
|
||||
</button>
|
||||
</header>
|
||||
<div id="replying-to"></div>
|
||||
<div id="replybox">
|
||||
<textarea id="reply-content" class="post-input" oninput="post_input_changed(this)"
|
||||
placeholder="Write your reply here..."></textarea>
|
||||
<div class="post-tools">
|
||||
<button id="reply-button" class="action" onclick="do_send_reply()">
|
||||
Reply
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="faqs" class="modal scrollable closed">
|
||||
<button class="icon modal-floating-close-btn" onclick="close_modal(this)">
|
||||
<img class="icon svg" src="icon/close-modal.svg"/>
|
||||
</button>
|
||||
<div class="page-content">
|
||||
<h1>Welcome to Nostr</h1>
|
||||
<p>The open social network for "literally" everyone.</p>
|
||||
|
||||
<h2>What is Nostr?</h2>
|
||||
<p>
|
||||
<a href="https://damus.io/log">The Damus Log</a>
|
||||
Nostr is a protocol, not a platform or an app. This means that
|
||||
users can pick and choose which clients (apps) to use and which
|
||||
relays (servers) they wish to connect to.
|
||||
</p>
|
||||
<p>Nostr uses encryption to validate content authors. This means
|
||||
that there is no centralized account system. We use
|
||||
<a href="https://en.wikipedia.org/wiki/Public-key_cryptography"
|
||||
target="_blank">public & private</a> keys to sign our
|
||||
content when we post. Do not confuse this with blockchain
|
||||
technology.
|
||||
</p>
|
||||
<p>
|
||||
<a href="https://testflight.apple.com/join/CLwjLxWl">Join the TestFlight Beta</a>
|
||||
Nostr stands for "Notes and Other Stuff Transmitted by Relays".
|
||||
</p>
|
||||
<p>
|
||||
Read more about the protocol <a
|
||||
href="https://github.com/nostr-protocol/nostr"
|
||||
target="_blank">here</a>.
|
||||
</p>
|
||||
|
||||
<h2>Apps</h2>
|
||||
<p>
|
||||
You are using one right now! You just haven't signed in yet to see
|
||||
the actual application. Scroll to the top to do that.
|
||||
</p>
|
||||
<p>
|
||||
A rich app ecosystem for Nostr. Anyone can build an app for the
|
||||
protocol that fits their needs. This is the best option for users
|
||||
as everyone has their own style. Another benifit is that you can
|
||||
use multiple apps with the same account.
|
||||
</p>
|
||||
<p>
|
||||
Since there are many apps for Nostr it allows developers to focus
|
||||
on building certain experiences. Some apps may offer features that
|
||||
others don't, such as direct messages, content viewing methods,
|
||||
etc. You are allowed to choose how you want to interact with
|
||||
Nostr.
|
||||
</p>
|
||||
<h3>Pick One</h3>
|
||||
<p>
|
||||
Here are a list of (trusted) apps that work with Nostr. Pick one
|
||||
that fits you.
|
||||
</p>
|
||||
<ul>
|
||||
<li>Yo, Sup (this web app)</li>
|
||||
<li><a href="https://damus.io" target="_blank">Damus</a></li>
|
||||
<li><a href="https://github.com/fiatjaf/noscl" target="_blank">noscl</a></li>
|
||||
</ul>
|
||||
|
||||
<h2>Relays</h2>
|
||||
<p>
|
||||
Relays are points of connection, a server. They allow you to read
|
||||
events (content) and write to it depending on it's configuration.
|
||||
Some may be read only, others may require some sort of payment to
|
||||
use. Some may simply clone other relays.
|
||||
</p>
|
||||
<p>
|
||||
Relays allow for specific needs and niches. You can host your
|
||||
own relay for your club or community (such as gaming, art, sciences,
|
||||
etc.) Or you can build your own relay with your own logic that
|
||||
dictates who can access what and how. This is great for all kinds
|
||||
of use cases for a range of users from individuals to businesses.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
<!-- daniel-testimonial -->
|
||||
</body>
|
||||
</body>
|
||||
</html>
|
||||
|
|
391
js/lnsocket.js
BIN
js/lnsocket.wasm
1
js/qrcode.min.js
vendored
172
js/tipjar.js
|
@ -1,172 +0,0 @@
|
|||
async function make_request(method, rune, params) {
|
||||
const LNSocket = await lnsocket_init()
|
||||
const ln = LNSocket()
|
||||
|
||||
ln.genkey()
|
||||
await ln.connect_and_init("03f3c108ccd536b8526841f0a5c58212bb9e6584a1eb493080e7c1cc34f82dad71", "wss://cln.jb55.com:443")
|
||||
|
||||
const {result} = await ln.rpc({ rune, method, params })
|
||||
|
||||
ln.disconnect()
|
||||
return result
|
||||
}
|
||||
|
||||
function fetch_tipjar_summary() {
|
||||
const rune = "5sgpXcVRMy19h2Ai9LiklJ7jI_J3qNnnG36wvyViqR49OTQmbWV0aG9kPW9mZmVyLXN1bW1hcnkmcG5hbWVkZXNjcmlwdGlvbj1AZGFtdXMtYW5kcm9pZCZwbmFtZWxpbWl0PTU="
|
||||
return make_request("offer-summary", rune, {
|
||||
offerid: "2043536dfec68d559102f73510927622812a230cfdda079e96fccbfe35a96d11",
|
||||
description: "@damus-android",
|
||||
limit: 5
|
||||
})
|
||||
}
|
||||
|
||||
function make_invoice(description) {
|
||||
const rune = "LZwGZJO7wZgmoScFQb5reZ0Ii8qPKCeUfTb-UcbDxWw9MTImbWV0aG9kPWludm9pY2U="
|
||||
description = (description && `${description} @damus-android`) || "@damus-android donation"
|
||||
return make_request("invoice", rune, {
|
||||
amount_msat: "any",
|
||||
label: `damus-android-${new Date().getTime()}`,
|
||||
description: description
|
||||
})
|
||||
}
|
||||
|
||||
function make_qrcode(dat) {
|
||||
const link = dat.toUpperCase()
|
||||
document.querySelector("#qrcode").innerHTML = ""
|
||||
const qr = new QRCode("qrcode", {
|
||||
text: link,
|
||||
width: 256,
|
||||
height: 256,
|
||||
colorDark : "#000000",
|
||||
colorLight : "#ffffff",
|
||||
correctLevel : QRCode.CorrectLevel.L
|
||||
})
|
||||
}
|
||||
|
||||
async function click_make_invoice(el) {
|
||||
const offerdata = document.querySelector("#offerdata")
|
||||
const tipjar_img = document.querySelector("#tipjar-offer-qr")
|
||||
|
||||
const note = prompt("Leave a note!", "")
|
||||
|
||||
const invoice = await make_invoice(note)
|
||||
|
||||
make_qrcode("LIGHTNING:" + invoice.bolt11)
|
||||
document.querySelector("#bolt12").href = "lightning:" + invoice.bolt11
|
||||
|
||||
el.style.display = "none";
|
||||
}
|
||||
|
||||
async function copy_tip() {
|
||||
const offer = document.querySelector("#offerdata").value.trim();
|
||||
try {
|
||||
await navigator.clipboard.writeText(offer)
|
||||
alert("Invoice copied to clipboard!")
|
||||
} catch(err) {
|
||||
console.log("clipboard copy error", err)
|
||||
document.querySelector("#offerdata").style.display = "block"
|
||||
}
|
||||
}
|
||||
|
||||
async function go() {
|
||||
const summary = await fetch_tipjar_summary()
|
||||
|
||||
const el = document.querySelector("#tipjar-summary")
|
||||
const bolt12 = document.querySelector("#bolt12")
|
||||
|
||||
make_qrcode(bolt12.href)
|
||||
el.innerHTML = render_tips(summary)
|
||||
}
|
||||
|
||||
function render_tips(res) {
|
||||
const total_sats = res.total_msatoshi / 1000
|
||||
const goal = 3000000
|
||||
const perc = `${((total_sats / goal) * 100).toPrecision(2)}%`
|
||||
const total_fmt = `${format_amount(total_sats)} / ${format_amount(goal)} sats goal (${perc})`
|
||||
return `
|
||||
<p>Total: <b>${total_fmt}</b></p>
|
||||
<div class="progres" style="height:20px; background-color: #f1f1f1">
|
||||
<div class="progress-bar" style="background-color: #f44336; height: 100%;width: ${perc}"></div>
|
||||
</div>
|
||||
<h5>Recent Donors</h5>
|
||||
${render_table(res.paid_invoices)}
|
||||
<h5>Top Donors</h5>
|
||||
${render_table(res.top_donors)}
|
||||
`
|
||||
}
|
||||
|
||||
function render_table(invoices)
|
||||
{
|
||||
return `
|
||||
<table style="width: 100%">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Note</th>
|
||||
<th>Amount</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
${invoices.map(render_tip).join("\n")}
|
||||
</tbody>
|
||||
</table>
|
||||
`
|
||||
}
|
||||
|
||||
function format_amount(amt)
|
||||
{
|
||||
return amt.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
|
||||
}
|
||||
|
||||
function render_tip(tip)
|
||||
{
|
||||
let note = tip.payer_note ? tip.payer_note : (tip.description || "Anonymous")
|
||||
note = note.replace("@damus-android", "")
|
||||
const amount = format_amount(tip.amount_msat / 1000)
|
||||
const now = Math.floor(new Date().getTime() / 1000)
|
||||
const date = time_delta(now * 1000, tip.paid_at * 1000)
|
||||
|
||||
return `
|
||||
<tr>
|
||||
<td>${note}</td>
|
||||
<td>${amount} sats</td>
|
||||
<td class="reldate">${date}</td>
|
||||
</tr>
|
||||
`
|
||||
}
|
||||
|
||||
function time_delta(current, previous) {
|
||||
var msPerMinute = 60 * 1000;
|
||||
var msPerHour = msPerMinute * 60;
|
||||
var msPerDay = msPerHour * 24;
|
||||
var msPerMonth = msPerDay * 30;
|
||||
var msPerYear = msPerDay * 365;
|
||||
|
||||
var elapsed = current - previous;
|
||||
|
||||
if (elapsed < msPerMinute) {
|
||||
return Math.round(elapsed/1000) + ' seconds ago';
|
||||
}
|
||||
|
||||
else if (elapsed < msPerHour) {
|
||||
return Math.round(elapsed/msPerMinute) + ' minutes ago';
|
||||
}
|
||||
|
||||
else if (elapsed < msPerDay ) {
|
||||
return Math.round(elapsed/msPerHour ) + ' hours ago';
|
||||
}
|
||||
|
||||
else if (elapsed < msPerMonth) {
|
||||
return Math.round(elapsed/msPerDay) + ' days ago';
|
||||
}
|
||||
|
||||
else if (elapsed < msPerYear) {
|
||||
return Math.round(elapsed/msPerMonth) + ' months ago';
|
||||
}
|
||||
|
||||
else {
|
||||
return Math.round(elapsed/msPerYear ) + ' years ago';
|
||||
}
|
||||
}
|
||||
|
||||
go()
|
168
key/bech32.js
|
@ -1,168 +0,0 @@
|
|||
var ALPHABET = 'qpzry9x8gf2tvdw0s3jn54khce6mua7l';
|
||||
var ALPHABET_MAP = {};
|
||||
for (var z = 0; z < ALPHABET.length; z++) {
|
||||
var x = ALPHABET.charAt(z);
|
||||
ALPHABET_MAP[x] = z;
|
||||
}
|
||||
function polymodStep(pre) {
|
||||
var b = pre >> 25;
|
||||
return (((pre & 0x1ffffff) << 5) ^
|
||||
(-((b >> 0) & 1) & 0x3b6a57b2) ^
|
||||
(-((b >> 1) & 1) & 0x26508e6d) ^
|
||||
(-((b >> 2) & 1) & 0x1ea119fa) ^
|
||||
(-((b >> 3) & 1) & 0x3d4233dd) ^
|
||||
(-((b >> 4) & 1) & 0x2a1462b3));
|
||||
}
|
||||
function prefixChk(prefix) {
|
||||
var chk = 1;
|
||||
for (var i = 0; i < prefix.length; ++i) {
|
||||
var c = prefix.charCodeAt(i);
|
||||
if (c < 33 || c > 126)
|
||||
return 'Invalid prefix (' + prefix + ')';
|
||||
chk = polymodStep(chk) ^ (c >> 5);
|
||||
}
|
||||
chk = polymodStep(chk);
|
||||
for (var i = 0; i < prefix.length; ++i) {
|
||||
var v = prefix.charCodeAt(i);
|
||||
chk = polymodStep(chk) ^ (v & 0x1f);
|
||||
}
|
||||
return chk;
|
||||
}
|
||||
function convertbits(data, inBits, outBits, pad) {
|
||||
var value = 0;
|
||||
var bits = 0;
|
||||
var maxV = (1 << outBits) - 1;
|
||||
var result = [];
|
||||
for (var i = 0; i < data.length; ++i) {
|
||||
value = (value << inBits) | data[i];
|
||||
bits += inBits;
|
||||
while (bits >= outBits) {
|
||||
bits -= outBits;
|
||||
result.push((value >> bits) & maxV);
|
||||
}
|
||||
}
|
||||
if (pad) {
|
||||
if (bits > 0) {
|
||||
result.push((value << (outBits - bits)) & maxV);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (bits >= inBits)
|
||||
return 'Excess padding';
|
||||
if ((value << (outBits - bits)) & maxV)
|
||||
return 'Non-zero padding';
|
||||
}
|
||||
return result;
|
||||
}
|
||||
function toWords(bytes) {
|
||||
return convertbits(bytes, 8, 5, true);
|
||||
}
|
||||
function fromWordsUnsafe(words) {
|
||||
var res = convertbits(words, 5, 8, false);
|
||||
if (Array.isArray(res))
|
||||
return res;
|
||||
}
|
||||
function fromWords(words) {
|
||||
var res = convertbits(words, 5, 8, false);
|
||||
if (Array.isArray(res))
|
||||
return res;
|
||||
throw new Error(res);
|
||||
}
|
||||
function getLibraryFromEncoding(encoding) {
|
||||
var ENCODING_CONST;
|
||||
if (encoding === 'bech32') {
|
||||
ENCODING_CONST = 1;
|
||||
}
|
||||
else {
|
||||
ENCODING_CONST = 0x2bc830a3;
|
||||
}
|
||||
function encode(prefix, words, LIMIT) {
|
||||
LIMIT = LIMIT || 90;
|
||||
if (prefix.length + 7 + words.length > LIMIT)
|
||||
throw new TypeError('Exceeds length limit');
|
||||
prefix = prefix.toLowerCase();
|
||||
// determine chk mod
|
||||
var chk = prefixChk(prefix);
|
||||
if (typeof chk === 'string')
|
||||
throw new Error(chk);
|
||||
var result = prefix + '1';
|
||||
for (var i = 0; i < words.length; ++i) {
|
||||
var x = words[i];
|
||||
if (x >> 5 !== 0)
|
||||
throw new Error('Non 5-bit word');
|
||||
chk = polymodStep(chk) ^ x;
|
||||
result += ALPHABET.charAt(x);
|
||||
}
|
||||
for (var i = 0; i < 6; ++i) {
|
||||
chk = polymodStep(chk);
|
||||
}
|
||||
chk ^= ENCODING_CONST;
|
||||
for (var i = 0; i < 6; ++i) {
|
||||
var v = (chk >> ((5 - i) * 5)) & 0x1f;
|
||||
result += ALPHABET.charAt(v);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
function __decode(str, LIMIT) {
|
||||
LIMIT = LIMIT || 90;
|
||||
if (str.length < 8)
|
||||
return str + ' too short';
|
||||
if (str.length > LIMIT)
|
||||
return 'Exceeds length limit';
|
||||
// don't allow mixed case
|
||||
var lowered = str.toLowerCase();
|
||||
var uppered = str.toUpperCase();
|
||||
if (str !== lowered && str !== uppered)
|
||||
return 'Mixed-case string ' + str;
|
||||
str = lowered;
|
||||
var split = str.lastIndexOf('1');
|
||||
if (split === -1)
|
||||
return 'No separator character for ' + str;
|
||||
if (split === 0)
|
||||
return 'Missing prefix for ' + str;
|
||||
var prefix = str.slice(0, split);
|
||||
var wordChars = str.slice(split + 1);
|
||||
if (wordChars.length < 6)
|
||||
return 'Data too short';
|
||||
var chk = prefixChk(prefix);
|
||||
if (typeof chk === 'string')
|
||||
return chk;
|
||||
var words = [];
|
||||
for (var i = 0; i < wordChars.length; ++i) {
|
||||
var c = wordChars.charAt(i);
|
||||
var v = ALPHABET_MAP[c];
|
||||
if (v === undefined)
|
||||
return 'Unknown character ' + c;
|
||||
chk = polymodStep(chk) ^ v;
|
||||
// not in the checksum?
|
||||
if (i + 6 >= wordChars.length)
|
||||
continue;
|
||||
words.push(v);
|
||||
}
|
||||
if (chk !== ENCODING_CONST)
|
||||
return 'Invalid checksum for ' + str;
|
||||
return { prefix: prefix, words: words };
|
||||
}
|
||||
function decodeUnsafe(str, LIMIT) {
|
||||
var res = __decode(str, LIMIT);
|
||||
if (typeof res === 'object')
|
||||
return res;
|
||||
}
|
||||
function decode(str, LIMIT) {
|
||||
var res = __decode(str, LIMIT);
|
||||
if (typeof res === 'object')
|
||||
return res;
|
||||
throw new Error(res);
|
||||
}
|
||||
return {
|
||||
decodeUnsafe: decodeUnsafe,
|
||||
decode: decode,
|
||||
encode: encode,
|
||||
toWords: toWords,
|
||||
fromWordsUnsafe: fromWordsUnsafe,
|
||||
fromWords: fromWords
|
||||
};
|
||||
}
|
||||
|
||||
const bech32 = getLibraryFromEncoding('bech32');
|
||||
const bech32m = getLibraryFromEncoding('bech32m');
|
|
@ -1,50 +0,0 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>damus key converter</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<meta property="og:title" content="Damus">
|
||||
<meta property="og:description" content="A new social network that you control">
|
||||
<meta property="og:image" content="https://damus.io/img/logo.png">
|
||||
<meta property="og:url" content="https://damus.io">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
|
||||
<link rel="stylesheet" href="/css/normalize.css">
|
||||
<link rel="stylesheet" href="/css/skeleton.css?v=3">
|
||||
<link rel="stylesheet" href="/css/custom.css?v=4">
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<section class="header">
|
||||
<span class="logo">
|
||||
<img src="/img/damus-nobg.svg"/>
|
||||
</span>
|
||||
|
||||
<span class="damus">damus</span>
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
<div class="container">
|
||||
<h1>Key Converter</h2>
|
||||
<p>Convert a damus key to an old-style hex key</p>
|
||||
<label for="bech32">damus key</label>
|
||||
<input type="text" class="u-full-width" placeholder="npub... OR nsec..." id="damus-key">
|
||||
|
||||
<label for="bech32">hex key</label>
|
||||
<input type="text" class="u-full-width" placeholder="" id="hex-key">
|
||||
|
||||
<div>
|
||||
<h2>Links</h2>
|
||||
<a id="note-link" href="">Damus Note Link</a><br/>
|
||||
<a id="profile-link" href="">Damus Profile Link</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="bech32.js" ></script>
|
||||
<script src="key.js?v=3" ></script>
|
||||
</body>
|
||||
</html>
|
44
key/key.js
|
@ -1,44 +0,0 @@
|
|||
|
||||
function hex_char(val)
|
||||
{
|
||||
if (val < 10)
|
||||
return String.fromCharCode(48 + val)
|
||||
if (val < 16)
|
||||
return String.fromCharCode(97 + val - 10)
|
||||
}
|
||||
|
||||
function hex_encode(buf)
|
||||
{
|
||||
str = ""
|
||||
for (let i = 0; i < buf.length; i++) {
|
||||
const c = buf[i]
|
||||
str += hex_char(c >> 4)
|
||||
str += hex_char(c & 0xF)
|
||||
}
|
||||
return str
|
||||
}
|
||||
|
||||
function go() {
|
||||
const el = document.querySelector("#damus-key")
|
||||
const hex_el = document.querySelector("#hex-key")
|
||||
const note_link_el = document.querySelector("#note-link")
|
||||
const profile_link_el = document.querySelector("#profile-link")
|
||||
|
||||
el.addEventListener("input", () => {
|
||||
const decoded = bech32.decode(el.value)
|
||||
const bytes = fromWords(decoded.words)
|
||||
hex_el.value = hex_encode(bytes)
|
||||
update_note_link(hex_el.value)
|
||||
});
|
||||
|
||||
hex_el.addEventListener("input", () => {
|
||||
update_note_link(hex_el.value)
|
||||
})
|
||||
|
||||
function update_note_link(id) {
|
||||
note_link_el.href = `nostr:e:${id}`
|
||||
profile_link_el.href = `nostr:p:${id}`
|
||||
}
|
||||
}
|
||||
|
||||
go()
|
|
@ -1 +0,0 @@
|
|||
export PATH=$PWD:$PATH
|
|
@ -1,16 +0,0 @@
|
|||
|
||||
# The Damus Log - Powered by #nostr
|
||||
|
||||
Hey there, Welcome to the damus log! A blog powered by... nostr! What does this mean!? What is nostr? Let's find out!
|
||||
|
||||
nostr is what powers damus, an iOS nostr client we're working on. It's a fancy pants new internet protocol designed to be the email of social networks. Imagine if email was controlled by a single company. Everyone would have to use the same email client (probably something like gmail), and a single company would have complete control over all your data... everyone's data!
|
||||
|
||||
This isn't good, this is why the internet today was originally built on these decentralized protocols. Things like websites and email are all available on different platforms, clients and servers. This freedom to pick and choose prevents any single company to have complete control over our data.
|
||||
|
||||
nostr is an attempt to do the same for social networks themselves. It provides a censorship resistant, real-time database. Anyone can run a nostr relay and no single relay is in control of the data. It's quite ingenious if we say so ourselves.
|
||||
|
||||
We like it so much we've made our blog nostr-powered! The comments below are from the nostr network. You can comment on it from the damus client itself! If you're interested in trying it out, try out the testflight at the bottom of our homepage:
|
||||
|
||||
=> https://damus.io damus.io
|
||||
|
||||
Looking forward to seeing you on nostr!
|
|
@ -1,69 +0,0 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<title>The Damus Log</title>
|
||||
<link rel="stylesheet" href="log.css?v=29">
|
||||
<link rel="stylesheet" href="comments.css?v=5">
|
||||
</head>
|
||||
<body>
|
||||
<section class="header">
|
||||
<span class="logo">
|
||||
<img src="/img/damus-nobg.svg"/>
|
||||
</span>
|
||||
</section>
|
||||
<div class="container">
|
||||
<a href="https://damus.io/log" class="date">< The Damus Log</a>
|
||||
<h1 id="the-damus-log---powered-by-nostr">The Damus Log - Powered by
|
||||
#nostr</h1>
|
||||
<p>Hey there, Welcome to the damus log! A blog powered by… nostr! What
|
||||
does this mean!? What is nostr? Let’s find out!</p>
|
||||
<p>nostr is what powers damus, an iOS nostr client we’re working on.
|
||||
It’s a fancy pants new internet protocol designed to be the email of
|
||||
social networks. Imagine if email was controlled by a single company.
|
||||
Everyone would have to use the same email client (probably something
|
||||
like gmail), and a single company would have complete control over all
|
||||
your data… everyone’s data!</p>
|
||||
<p>This isn’t good, this is why the internet today was originally built
|
||||
on these decentralized protocols. Things like websites and email are all
|
||||
available on different platforms, clients and servers. This freedom to
|
||||
pick and choose prevents any single company to have complete control
|
||||
over our data.</p>
|
||||
<p>nostr is an attempt to do the same for social networks themselves. It
|
||||
provides a censorship resistant, real-time database. Anyone can run a
|
||||
nostr relay and no single relay is in control of the data. It’s quite
|
||||
ingenious if we say so ourselves.</p>
|
||||
<p>We like it so much we’ve made our blog nostr-powered! The comments
|
||||
below are from the nostr network. You can comment on it from the damus
|
||||
client itself! If you’re interested in trying it out, try out the
|
||||
testflight at the bottom of our homepage:</p>
|
||||
<p><a href="https://damus.io">damus.io</a></p>
|
||||
<p>Looking forward to seeing you on nostr!</p>
|
||||
|
||||
<h3><a id="comment-link" href="nostr:e:">Comments</a></h3>
|
||||
<div id="comments">
|
||||
</div>
|
||||
<script src="nostr.js?v=4" ></script>
|
||||
<script src="comments.js?v=16" ></script>
|
||||
<script>
|
||||
const threads = {
|
||||
"the-stuff-loads-better-release": "9941b55c2844f275b7b8714a1c39859088a425ce798f740ea8fea879f9098641",
|
||||
"introducing-damus-log": "4e8b44bb43018f79bd3efcdcd71af43814cdf996e0c62adedda1ac33bf5e1371",
|
||||
"stop-developing": "7328ba525fba9240a13dc67bc8ccf9248d90fa0c752419ccbe0558e129ea96d5",
|
||||
}
|
||||
let relay
|
||||
for (const key of Object.keys(threads)) {
|
||||
if (window.location.href.includes(key)) {
|
||||
const id = threads[key]
|
||||
relay = comments_init(id)
|
||||
document.querySelector("#comment-link").href = 'nostr:e:' + id
|
||||
break
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</div> <!-- container -->
|
||||
</body>
|
||||
</html>
|
|
@ -1,51 +0,0 @@
|
|||
|
||||
|
||||
# v0.1.3 - The "Stuff Loads Better" Release
|
||||
|
||||
It's that time again! A new damus release. This one fixes a bunch of annoying issues such as profiles not loading properly in some situations. We also do a much better job at caching profile pictures, so no more weird poppyness and wasting your cell data.
|
||||
|
||||
If you're not on the testflight already, you can get it here:
|
||||
|
||||
=> https://testflight.apple.com/join/CLwjLxWl Damus TestFlight
|
||||
|
||||
This was the last release before lightning support, so next version will be exciting!!
|
||||
|
||||
Anyways, here's the full changlog!
|
||||
|
||||
```
|
||||
# Added
|
||||
|
||||
- Support kind 42 chat messages (ArcadeCity).
|
||||
- Friend icons next to names on some views. Check is friend. Arrows are friend-of-friends
|
||||
- Load chat view first if content contains #chat
|
||||
- Cancel button on search box
|
||||
- Added profile picture cache
|
||||
- Multiline DM messages
|
||||
|
||||
# Changed
|
||||
|
||||
- #hashtags now use the `t` tag instead of `hashtag`
|
||||
- Clicking a chatroom quote reply will now expand it instead of jumping to it
|
||||
- Clicking on a note will now always scroll it to the bottom
|
||||
- Check note ids and signatures on every note
|
||||
- use bech32 ids everywhere
|
||||
- Don't animate scroll in chat view
|
||||
- Post button is not shown if the content is only whitespace
|
||||
|
||||
# Fixed
|
||||
|
||||
- Fixed thread loading issue when clicking on boosts
|
||||
- Fixed various issues with chatroom view
|
||||
- Fix bug where sometimes nested navigation views weren't dismissed when tapping the tab bar
|
||||
- Fixed minor carousel spacing issue on homescreen
|
||||
- You can now reference users, notes hashtags in DMs
|
||||
- Profile pics are now loaded in the background
|
||||
- Limit post sizes to max 32,000 as an upper bound sanity limit.
|
||||
- Missing profiles are now loaded everywhere
|
||||
- No longer parse hashtags in urls
|
||||
- Logging out now resets your keypair and actually logs out
|
||||
- Copying text in DMs will now copy the decrypted text
|
||||
```
|
||||
|
||||
=> https://damus.io Damus TestFlight
|
||||
|
|
@ -1,89 +0,0 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<title>The Damus Log</title>
|
||||
<link rel="stylesheet" href="log.css?v=29">
|
||||
<link rel="stylesheet" href="comments.css?v=5">
|
||||
</head>
|
||||
<body>
|
||||
<section class="header">
|
||||
<span class="logo">
|
||||
<img src="/img/damus-nobg.svg"/>
|
||||
</span>
|
||||
</section>
|
||||
<div class="container">
|
||||
<a href="https://damus.io/log" class="date">< The Damus Log</a>
|
||||
<h1 id="v0.1.3---the-stuff-loads-better-release">v0.1.3 - The “Stuff
|
||||
Loads Better” Release</h1>
|
||||
<p>It’s that time again! A new damus release. This one fixes a bunch of
|
||||
annoying issues such as profiles not loading properly in some
|
||||
situations. We also do a much better job at caching profile pictures, so
|
||||
no more weird poppyness and wasting your cell data.</p>
|
||||
<p>If you’re not on the testflight already, you can get it here:</p>
|
||||
<p><a href="https://testflight.apple.com/join/CLwjLxWl">Damus
|
||||
TestFlight</a></p>
|
||||
<p>This was the last release before lightning support, so next version
|
||||
will be exciting!!</p>
|
||||
<p>Anyways, here’s the full changlog!</p>
|
||||
<pre><code># Added
|
||||
|
||||
- Support kind 42 chat messages (ArcadeCity).
|
||||
- Friend icons next to names on some views. Check is friend. Arrows are friend-of-friends
|
||||
- Load chat view first if content contains #chat
|
||||
- Cancel button on search box
|
||||
- Added profile picture cache
|
||||
- Multiline DM messages
|
||||
|
||||
# Changed
|
||||
|
||||
- #hashtags now use the `t` tag instead of `hashtag`
|
||||
- Clicking a chatroom quote reply will now expand it instead of jumping to it
|
||||
- Clicking on a note will now always scroll it to the bottom
|
||||
- Check note ids and signatures on every note
|
||||
- use bech32 ids everywhere
|
||||
- Don't animate scroll in chat view
|
||||
- Post button is not shown if the content is only whitespace
|
||||
|
||||
# Fixed
|
||||
|
||||
- Fixed thread loading issue when clicking on boosts
|
||||
- Fixed various issues with chatroom view
|
||||
- Fix bug where sometimes nested navigation views weren't dismissed when tapping the tab bar
|
||||
- Fixed minor carousel spacing issue on homescreen
|
||||
- You can now reference users, notes hashtags in DMs
|
||||
- Profile pics are now loaded in the background
|
||||
- Limit post sizes to max 32,000 as an upper bound sanity limit.
|
||||
- Missing profiles are now loaded everywhere
|
||||
- No longer parse hashtags in urls
|
||||
- Logging out now resets your keypair and actually logs out
|
||||
- Copying text in DMs will now copy the decrypted text</code></pre>
|
||||
<p><a href="https://damus.io">Damus TestFlight</a></p>
|
||||
|
||||
<h3><a id="comment-link" href="nostr:e:">Comments</a></h3>
|
||||
<div id="comments">
|
||||
</div>
|
||||
<script src="nostr.js?v=4" ></script>
|
||||
<script src="comments.js?v=16" ></script>
|
||||
<script>
|
||||
const threads = {
|
||||
"the-stuff-loads-better-release": "9941b55c2844f275b7b8714a1c39859088a425ce798f740ea8fea879f9098641",
|
||||
"introducing-damus-log": "4e8b44bb43018f79bd3efcdcd71af43814cdf996e0c62adedda1ac33bf5e1371",
|
||||
"stop-developing": "7328ba525fba9240a13dc67bc8ccf9248d90fa0c752419ccbe0558e129ea96d5",
|
||||
}
|
||||
let relay
|
||||
for (const key of Object.keys(threads)) {
|
||||
if (window.location.href.includes(key)) {
|
||||
const id = threads[key]
|
||||
relay = comments_init(id)
|
||||
document.querySelector("#comment-link").href = 'nostr:e:' + id
|
||||
break
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</div> <!-- container -->
|
||||
</body>
|
||||
</html>
|
|
@ -1,17 +0,0 @@
|
|||
|
||||
# v0.1.4 - Ok can you guys stop developing
|
||||
|
||||
So someone had the smart idea[1] to create nostr chatrooms, so naturally damus should support these. I know I said the previous release would be the last release before lightning support, but chatrooms are pretty cool and I wanted to squeeze in an initial chatroom release. So here we are.
|
||||
|
||||
I haven't added full chatroom support yet, like searching for and joining channels. The way that this release currently works is that if you see one of your friends chatting in a chatroom, you'll be able to reply to that chat from your home feed, or pop into the chatroom by clicking on the post.
|
||||
|
||||
In the future I plan on having full chatroom support, probably something like how telegram displays their chatrooms.
|
||||
|
||||
It's up on testflight now so check it out!
|
||||
|
||||
Enjoy!
|
||||
|
||||
=> https://anigma.io [1] Anigma
|
||||
|
||||
=> https://testflight.apple.com/join/CLwjLxWl Damus TestFlight
|
||||
|
|
@ -1,63 +0,0 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<title>The Damus Log</title>
|
||||
<link rel="stylesheet" href="log.css?v=29">
|
||||
<link rel="stylesheet" href="comments.css?v=5">
|
||||
</head>
|
||||
<body>
|
||||
<section class="header">
|
||||
<span class="logo">
|
||||
<img src="/img/damus-nobg.svg"/>
|
||||
</span>
|
||||
</section>
|
||||
<div class="container">
|
||||
<a href="https://damus.io/log" class="date">< The Damus Log</a>
|
||||
<h1 id="v0.1.4---ok-can-you-guys-stop-developing">v0.1.4 - Ok can you
|
||||
guys stop developing</h1>
|
||||
<p>So someone had the smart idea[1] to create nostr chatrooms, so
|
||||
naturally damus should support these. I know I said the previous release
|
||||
would be the last release before lightning support, but chatrooms are
|
||||
pretty cool and I wanted to squeeze in an initial chatroom release. So
|
||||
here we are.</p>
|
||||
<p>I haven’t added full chatroom support yet, like searching for and
|
||||
joining channels. The way that this release currently works is that if
|
||||
you see one of your friends chatting in a chatroom, you’ll be able to
|
||||
reply to that chat from your home feed, or pop into the chatroom by
|
||||
clicking on the post.</p>
|
||||
<p>In the future I plan on having full chatroom support, probably
|
||||
something like how telegram displays their chatrooms.</p>
|
||||
<p>It’s up on testflight now so check it out!</p>
|
||||
<p>Enjoy!</p>
|
||||
<p><a href="https://anigma.io">[1] Anigma</a></p>
|
||||
<p><a href="https://testflight.apple.com/join/CLwjLxWl">Damus
|
||||
TestFlight</a></p>
|
||||
|
||||
<h3><a id="comment-link" href="nostr:e:">Comments</a></h3>
|
||||
<div id="comments">
|
||||
</div>
|
||||
<script src="nostr.js?v=4" ></script>
|
||||
<script src="comments.js?v=16" ></script>
|
||||
<script>
|
||||
const threads = {
|
||||
"the-stuff-loads-better-release": "9941b55c2844f275b7b8714a1c39859088a425ce798f740ea8fea879f9098641",
|
||||
"introducing-damus-log": "4e8b44bb43018f79bd3efcdcd71af43814cdf996e0c62adedda1ac33bf5e1371",
|
||||
"stop-developing": "7328ba525fba9240a13dc67bc8ccf9248d90fa0c752419ccbe0558e129ea96d5",
|
||||
}
|
||||
let relay
|
||||
for (const key of Object.keys(threads)) {
|
||||
if (window.location.href.includes(key)) {
|
||||
const id = threads[key]
|
||||
relay = comments_init(id)
|
||||
document.querySelector("#comment-link").href = 'nostr:e:' + id
|
||||
break
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</div> <!-- container -->
|
||||
</body>
|
||||
</html>
|
17
log/Makefile
|
@ -1,17 +0,0 @@
|
|||
|
||||
POSTS=$(wildcard *.gmi)
|
||||
HTMLS=$(POSTS:.gmi=.html)
|
||||
|
||||
|
||||
all: $(HTMLS)
|
||||
|
||||
clean: fake
|
||||
rm -f $(HTMLS)
|
||||
|
||||
dist: all
|
||||
rsync -avzP ./ charon:/www/damus.io/log/
|
||||
|
||||
%.html: %.gmi head.html tail.html
|
||||
./gmi2md < $< | pandoc -f markdown -t html -o - | cat head.html - tail.html > $@
|
||||
|
||||
.PHONY: fake
|
|
@ -1,69 +0,0 @@
|
|||
|
||||
.pfp {
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
margin: 0 15px 0 15px;
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
.comment {
|
||||
display: flex;
|
||||
font-family: system-ui, sans;
|
||||
margin-bottom: 20px;
|
||||
flex-wrap: wrap;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.comment p {
|
||||
background-color: rgba(255.0,255.0,255.0,0.1);
|
||||
padding: 10px;
|
||||
border-radius: 8px;
|
||||
margin: 0;
|
||||
width: 55%;
|
||||
}
|
||||
|
||||
.comment .info {
|
||||
text-align: right;
|
||||
width: 18%;
|
||||
line-height: 0.8em;
|
||||
}
|
||||
|
||||
.quote {
|
||||
border-left: 2px solid white;
|
||||
margin-left: 10px;
|
||||
padding: 10px;
|
||||
background-color: rgba(255.0,255.0,255.0,0.1);
|
||||
display: block;
|
||||
}
|
||||
|
||||
.comment .info span {
|
||||
font-size: 11px;
|
||||
color: rgba(255.0,255.0,255.0,0.7);
|
||||
}
|
||||
|
||||
@media (max-width: 800px){
|
||||
/* Reverse the order of elements in the user comments,
|
||||
so that the avatar and info appear after the text. */
|
||||
.comment .info {
|
||||
order: 2;
|
||||
width: 50%;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.pfp {
|
||||
order: 1;
|
||||
margin: 0 15px 0 0;
|
||||
}
|
||||
|
||||
.comment {
|
||||
padding: 10px;
|
||||
border-radius: 8px;
|
||||
background-color: rgba(255.0,255.0,255.0,0.1);
|
||||
}
|
||||
|
||||
.comment p {
|
||||
order: 3;
|
||||
margin-top: 10px;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
177
log/comments.js
|
@ -1,177 +0,0 @@
|
|||
|
||||
function uuidv4() {
|
||||
return ([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g, c =>
|
||||
(c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
async function comments_init(thread)
|
||||
{
|
||||
const relay = await Relay("wss://relay.damus.io")
|
||||
const now = (new Date().getTime()) / 1000
|
||||
const model = {events: [], profiles: {}}
|
||||
const comments_id = uuidv4()
|
||||
const profiles_id = uuidv4()
|
||||
|
||||
model.pool = relay
|
||||
model.el = document.querySelector("#comments")
|
||||
|
||||
relay.subscribe(comments_id, {kinds: [1], "#e": [thread]})
|
||||
|
||||
relay.event = (sub_id, ev) => {
|
||||
if (sub_id === comments_id) {
|
||||
if (ev.content !== "")
|
||||
insert_event_sorted(model.events, ev)
|
||||
if (model.realtime)
|
||||
render_home_view(model)
|
||||
} else if (sub_id === profiles_id) {
|
||||
try {
|
||||
model.profiles[ev.pubkey] = JSON.parse(ev.content)
|
||||
} catch {
|
||||
console.log("failed to parse", ev.content)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
relay.eose = async (sub_id) => {
|
||||
if (sub_id === comments_id) {
|
||||
handle_comments_loaded(profiles_id, model)
|
||||
} else if (sub_id === profiles_id) {
|
||||
handle_profiles_loaded(profiles_id, model)
|
||||
}
|
||||
}
|
||||
|
||||
return relay
|
||||
}
|
||||
|
||||
function handle_profiles_loaded(profiles_id, model) {
|
||||
// stop asking for profiles
|
||||
model.pool.unsubscribe(profiles_id)
|
||||
model.realtime = true
|
||||
render_home_view(model)
|
||||
}
|
||||
|
||||
// load profiles after comment notes are loaded
|
||||
function handle_comments_loaded(profiles_id, model)
|
||||
{
|
||||
const pubkeys = model.events.reduce((s, ev) => {
|
||||
s.add(ev.pubkey)
|
||||
return s
|
||||
}, new Set())
|
||||
const authors = Array.from(pubkeys)
|
||||
|
||||
// load profiles
|
||||
model.pool.subscribe(profiles_id, {kinds: [0], authors: authors})
|
||||
}
|
||||
|
||||
function render_home_view(model) {
|
||||
model.el.innerHTML = render_events(model)
|
||||
}
|
||||
|
||||
function render_events(model) {
|
||||
const render = render_event.bind(null, model)
|
||||
return model.events.map(render).join("\n")
|
||||
}
|
||||
|
||||
function render_event(model, ev) {
|
||||
const profile = model.profiles[ev.pubkey] || {
|
||||
name: "anon",
|
||||
display_name: "Anonymous",
|
||||
}
|
||||
const delta = time_delta(new Date().getTime(), ev.created_at*1000)
|
||||
return `
|
||||
<div class="comment">
|
||||
<div class="info">
|
||||
${render_name(ev.pubkey, profile)}
|
||||
<span>${delta}</span>
|
||||
</div>
|
||||
<img class="pfp" src="${get_picture(ev.pubkey, profile)}">
|
||||
<p>
|
||||
${format_content(ev.content)}
|
||||
</p>
|
||||
</div>
|
||||
`
|
||||
}
|
||||
|
||||
function convert_quote_blocks(content)
|
||||
{
|
||||
const split = content.split("\n")
|
||||
let blockin = false
|
||||
return split.reduce((str, line) => {
|
||||
if (line !== "" && line[0] === '>') {
|
||||
if (!blockin) {
|
||||
str += "<span class='quote'>"
|
||||
blockin = true
|
||||
}
|
||||
str += sanitize(line.slice(1))
|
||||
} else {
|
||||
if (blockin) {
|
||||
blockin = false
|
||||
str += "</span>"
|
||||
}
|
||||
str += sanitize(line)
|
||||
}
|
||||
return str + "<br/>"
|
||||
}, "")
|
||||
}
|
||||
|
||||
function format_content(content)
|
||||
{
|
||||
return convert_quote_blocks(content)
|
||||
}
|
||||
|
||||
function sanitize(content)
|
||||
{
|
||||
if (!content)
|
||||
return ""
|
||||
return content.replaceAll("<","<").replaceAll(">",">")
|
||||
}
|
||||
|
||||
function get_picture(pk, profile)
|
||||
{
|
||||
return sanitize(profile.picture) || "https://robohash.org/" + pk
|
||||
}
|
||||
|
||||
function render_name(pk, profile={})
|
||||
{
|
||||
const display_name = profile.display_name || profile.user
|
||||
const username = profile.name || "anon"
|
||||
const name = display_name || username
|
||||
|
||||
return `<div class="username">${sanitize(name)}</div>`
|
||||
}
|
||||
|
||||
function time_delta(current, previous) {
|
||||
var msPerMinute = 60 * 1000;
|
||||
var msPerHour = msPerMinute * 60;
|
||||
var msPerDay = msPerHour * 24;
|
||||
var msPerMonth = msPerDay * 30;
|
||||
var msPerYear = msPerDay * 365;
|
||||
|
||||
var elapsed = current - previous;
|
||||
|
||||
if (elapsed < msPerMinute) {
|
||||
return Math.round(elapsed/1000) + ' seconds ago';
|
||||
}
|
||||
|
||||
else if (elapsed < msPerHour) {
|
||||
return Math.round(elapsed/msPerMinute) + ' minutes ago';
|
||||
}
|
||||
|
||||
else if (elapsed < msPerDay ) {
|
||||
return Math.round(elapsed/msPerHour ) + ' hours ago';
|
||||
}
|
||||
|
||||
else if (elapsed < msPerMonth) {
|
||||
return Math.round(elapsed/msPerDay) + ' days ago';
|
||||
}
|
||||
|
||||
else if (elapsed < msPerYear) {
|
||||
return Math.round(elapsed/msPerMonth) + ' months ago';
|
||||
}
|
||||
|
||||
else {
|
||||
return Math.round(elapsed/msPerYear ) + ' years ago';
|
||||
}
|
||||
}
|
25
log/gmi2md
|
@ -1,25 +0,0 @@
|
|||
#!/usr/bin/env sedef
|
||||
|
||||
# gmi2md: Sed script to convert text/gemini to markdown.
|
||||
# Based on v0.14.2 of the gemini spec.
|
||||
#
|
||||
# This script is dedicated to the public domain according to the terms of CC0:
|
||||
# https://creativecommons.org/publicdomain/zero/1.0/
|
||||
|
||||
x
|
||||
/^```/ {
|
||||
x
|
||||
/^```/ {
|
||||
x
|
||||
s/.*//
|
||||
x
|
||||
}
|
||||
b
|
||||
}
|
||||
g
|
||||
|
||||
/^=>/ {
|
||||
s/[][()]/\\&/g
|
||||
s/^=>\s*([^[:space:]]+)\s*$/[\1](\1)/
|
||||
s/^=>\s*([^[:space:]]+)\s+(.+)/[\2](\1)/
|
||||
}
|
|
@ -1,19 +0,0 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<title>The Damus Log</title>
|
||||
<link rel="stylesheet" href="log.css?v=29">
|
||||
<link rel="stylesheet" href="comments.css?v=5">
|
||||
</head>
|
||||
<body>
|
||||
<section class="header">
|
||||
<span class="logo">
|
||||
<img src="/img/damus-nobg.svg"/>
|
||||
</span>
|
||||
</section>
|
||||
<div class="container">
|
||||
<a href="https://damus.io/log" class="date">< The Damus Log</a>
|