Compare commits
19 Commits
63861e1721
...
main
Author | SHA1 | Date | |
---|---|---|---|
8a862c65e6 | |||
fb9f237845 | |||
0b36579a36 | |||
6067707b74 | |||
09a787272b | |||
64a28d4914 | |||
852a2a8187 | |||
67a0e1c6bb | |||
514102f456 | |||
b91f892f55 | |||
ced9625083 | |||
ad1a614ff3 | |||
97a31721d0 | |||
d4ac24c869 | |||
cfa3fa5bea | |||
2dd4884e9f | |||
900fe7ed06 | |||
4acfe1d027 | |||
94950041f6 |
125
assets/bib2yaml.py
Normal file
125
assets/bib2yaml.py
Normal file
@@ -0,0 +1,125 @@
|
||||
import sys
|
||||
import re
|
||||
def remove_comments(text):
|
||||
return re.sub(r'(?m)^[ \t]*%.*\n?', '', text)
|
||||
|
||||
def find_entries(bibtex_content):
|
||||
entry_regex = re.compile(r'@(\w+)\s*[{(]', re.IGNORECASE)
|
||||
positions = [m.start() for m in entry_regex.finditer(bibtex_content)]
|
||||
entries = []
|
||||
for i, start in enumerate(positions):
|
||||
end = positions[i+1] if i+1 < len(positions) else len(bibtex_content)
|
||||
entries.append(bibtex_content[start:end].strip())
|
||||
return entries
|
||||
|
||||
def parse_bibtex_entry(entry):
|
||||
entry = entry.strip()
|
||||
if not entry or entry.startswith('%'):
|
||||
return None
|
||||
m = re.match(r'@(\w+)\s*[{(]\s*([^,]+),?', entry, re.DOTALL)
|
||||
if not m:
|
||||
return None
|
||||
entry_type, entry_key = m.groups()
|
||||
entry_type = entry_type.lower()
|
||||
if entry_type in ('comment', 'preamble'):
|
||||
return None
|
||||
if entry_type == 'string':
|
||||
return None
|
||||
body = entry[m.end():]
|
||||
body = body.rstrip('})').strip()
|
||||
fields = {}
|
||||
field_regex = re.compile(r'(\w+)\s*=\s*', re.DOTALL)
|
||||
pos = 0
|
||||
while pos < len(body):
|
||||
m = field_regex.match(body, pos)
|
||||
if not m:
|
||||
break
|
||||
field = m.group(1)
|
||||
pos = m.end()
|
||||
if body[pos] == '{':
|
||||
brace_level = 1
|
||||
val_start = pos + 1
|
||||
pos += 1
|
||||
while pos < len(body) and brace_level > 0:
|
||||
if body[pos] == '{':
|
||||
brace_level += 1
|
||||
elif body[pos] == '}':
|
||||
brace_level -= 1
|
||||
pos += 1
|
||||
value = body[val_start:pos-1]
|
||||
elif body[pos] == '"':
|
||||
val_start = pos + 1
|
||||
pos += 1
|
||||
while pos < len(body) and body[pos] != '"':
|
||||
if body[pos] == '\\':
|
||||
pos += 2
|
||||
else:
|
||||
pos += 1
|
||||
value = body[val_start:pos]
|
||||
pos += 1
|
||||
else:
|
||||
val_start = pos
|
||||
while pos < len(body) and body[pos] not in ',\n':
|
||||
pos += 1
|
||||
value = body[val_start:pos].strip()
|
||||
fields[field] = value.replace('\n', ' ').strip()
|
||||
while pos < len(body) and body[pos] in ', \n\r\t':
|
||||
pos += 1
|
||||
return entry_type, entry_key, fields
|
||||
|
||||
def escape_yaml_string(s):
|
||||
# Escape double quotes and backslashes, wrap in double quotes if needed
|
||||
if not s:
|
||||
return '""'
|
||||
if any(c in s for c in ':\'"{}[],&*#?|-<>=!%@`\\\n'):
|
||||
s = s.replace('\\', '\\\\').replace('"', '\\"')
|
||||
return f'"{s}"'
|
||||
return s
|
||||
|
||||
def dict_to_yaml(d, indent=0):
|
||||
lines = []
|
||||
for k, v in d.items():
|
||||
if isinstance(v, list):
|
||||
lines.append(' ' * indent + f"{k}:")
|
||||
for item in v:
|
||||
lines.append(' ' * (indent + 2) + f"- {escape_yaml_string(item)}")
|
||||
else:
|
||||
lines.append(' ' * indent + f"{k}: {escape_yaml_string(v)}")
|
||||
return '\n'.join(lines)
|
||||
|
||||
def bibtex_to_yaml(bibtex_content):
|
||||
bibtex_content = remove_comments(bibtex_content)
|
||||
entries = find_entries(bibtex_content)
|
||||
yaml_entries = []
|
||||
for entry in entries:
|
||||
parsed = parse_bibtex_entry(entry)
|
||||
if not parsed:
|
||||
continue
|
||||
entry_type, entry_key, fields = parsed
|
||||
entry_dict = {'key': entry_key}
|
||||
if "author" in fields:
|
||||
authors = [a.strip() for a in re.split(r'\s+and\s+', fields["author"])]
|
||||
entry_dict['author'] = authors
|
||||
del fields["author"]
|
||||
entry_dict.update(fields)
|
||||
yaml_entries.append(entry_dict)
|
||||
yaml_str = "publications:\n"
|
||||
for entry in yaml_entries:
|
||||
yaml_str += " - " + dict_to_yaml(entry, indent=4).lstrip().replace('\n', '\n ') + "\n"
|
||||
return yaml_str
|
||||
|
||||
def main():
|
||||
if len(sys.argv) != 2:
|
||||
print(f"Usage: {sys.argv[0]} <input.bib>")
|
||||
sys.exit(1)
|
||||
bibfile = sys.argv[1]
|
||||
with open(bibfile, 'r', encoding='utf-8') as f:
|
||||
bibtex_content = f.read()
|
||||
yaml_content = bibtex_to_yaml(bibtex_content)
|
||||
yamlfile = bibfile.rsplit('.', 1)[0] + '.yaml'
|
||||
with open(yamlfile, 'w', encoding='utf-8') as f:
|
||||
f.write(yaml_content)
|
||||
print(f"YAML exported to {yamlfile}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
@@ -1,22 +0,0 @@
|
||||
body {
|
||||
color: #222;
|
||||
font-family: sans-serif;
|
||||
line-height: 1.5;
|
||||
margin: 1rem;
|
||||
max-width: 768px;
|
||||
}
|
||||
|
||||
header {
|
||||
border-bottom: 1px solid #222;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
footer {
|
||||
border-top: 1px solid #222;
|
||||
margin-top: 1rem;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #00e;
|
||||
text-decoration: none;
|
||||
}
|
28
assets/sass/_colors.sass
Normal file
28
assets/sass/_colors.sass
Normal file
@@ -0,0 +1,28 @@
|
||||
//
|
||||
// _colors.sass
|
||||
// Attractive dark mode color scheme for fmtools
|
||||
//
|
||||
|
||||
// Primary palette
|
||||
$primary: #3380ff
|
||||
$primary-dark: #1a3e70
|
||||
$primary-light: #8fc6ff
|
||||
|
||||
// Accent colors
|
||||
$accent: #1de9b6
|
||||
$accent-dark: #00897b
|
||||
$accent-light: #6fffd2
|
||||
|
||||
|
||||
// Success, warning, error
|
||||
$success: #00e676
|
||||
$warning: #ffd600
|
||||
$error: #ff1744
|
||||
|
||||
// Neutral palette (dark mode)
|
||||
$darkest: #0a0c11
|
||||
$background: #10131a
|
||||
$surface: #1a1e29
|
||||
$border: #3a4054
|
||||
$text: #ffffff
|
||||
$text-subtle: #bfc9e6
|
99
assets/sass/_fonts.sass
Normal file
99
assets/sass/_fonts.sass
Normal file
@@ -0,0 +1,99 @@
|
||||
$font-path: '/fonts/static/'
|
||||
|
||||
@font-face
|
||||
font-family: 'Source Sans 3'
|
||||
font-style: normal
|
||||
font-display: swap
|
||||
font-weight: 100
|
||||
src: local('Source Sans 3 ExtraLight'), local('SourceSans3-ExtraLight'), url('#{$font-path}SourceSans3-ExtraLight.woff2') format('woff2'), url('#{$font-path}SourceSans3-ExtraLight.ttf') format('truetype')
|
||||
@font-face
|
||||
font-family: 'Source Sans 3'
|
||||
font-style: normal
|
||||
font-display: swap
|
||||
font-weight: 200
|
||||
src: local('Source Sans 3 ExtraLight'), local('SourceSans3-ExtraLight'), url('#{$font-path}SourceSans3-ExtraLight.woff2') format('woff2'), url('#{$font-path}SourceSans3-ExtraLight.ttf') format('truetype')
|
||||
|
||||
@font-face
|
||||
font-family: 'Source Sans 3'
|
||||
font-style: normal
|
||||
font-display: swap
|
||||
font-weight: 300
|
||||
src: local('Source Sans 3 Light'), local('SourceSans3-Light'), url('#{$font-path}SourceSans3-Light.woff2') format('woff2'), url('#{$font-path}SourceSans3-Light.ttf') format('truetype')
|
||||
|
||||
@font-face
|
||||
font-family: 'Source Sans 3'
|
||||
font-style: normal
|
||||
font-display: swap
|
||||
font-weight: 400
|
||||
src: local('Source Sans 3 Regular'), local('SourceSans3-Regular'), url('#{$font-path}SourceSans3-Regular.woff2') format('woff2'), url('#{$font-path}SourceSans3-Regular.ttf') format('truetype')
|
||||
|
||||
@font-face
|
||||
font-family: 'Source Sans 3'
|
||||
font-style: italic
|
||||
font-display: swap
|
||||
font-weight: 400
|
||||
src: local('Source Sans 3 Italic'), local('SourceSans3-Italic'), url('#{$font-path}SourceSans3-Italic.woff2') format('woff2'), url('#{$font-path}SourceSans3-Italic.ttf') format('truetype')
|
||||
|
||||
@font-face
|
||||
font-family: 'Source Sans 3'
|
||||
font-style: normal
|
||||
font-display: swap
|
||||
font-weight: 500
|
||||
src: local('Source Sans 3 Medium'), local('SourceSans3-Medium'), url('#{$font-path}SourceSans3-Medium.woff2') format('woff2'), url('#{$font-path}SourceSans3-Medium.ttf') format('truetype')
|
||||
|
||||
@font-face
|
||||
font-family: 'Source Sans 3'
|
||||
font-style: normal
|
||||
font-display: swap
|
||||
font-weight: 600
|
||||
src: local('Source Sans 3 SemiBold'), local('SourceSans3-SemiBold'), url('#{$font-path}SourceSans3-SemiBold.woff2') format('woff2'), url('#{$font-path}SourceSans3-SemiBold.ttf') format('truetype')
|
||||
|
||||
@font-face
|
||||
font-family: 'Source Sans 3'
|
||||
font-style: normal
|
||||
font-display: swap
|
||||
font-weight: 700
|
||||
src: local('Source Sans 3 Bold'), local('SourceSans3-Bold'), url('#{$font-path}SourceSans3-Bold.woff2') format('woff2'), url('#{$font-path}SourceSans3-Bold.ttf') format('truetype')
|
||||
|
||||
@font-face
|
||||
font-family: 'Source Sans 3'
|
||||
font-style: italic
|
||||
font-display: swap
|
||||
font-weight: 700
|
||||
src: local('Source Sans 3 Bold Italic'), local('SourceSans3-BoldItalic'), url('#{$font-path}SourceSans3-BoldItalic.woff2') format('woff2'), url('#{$font-path}SourceSans3-BoldItalic.ttf') format('truetype')
|
||||
|
||||
@font-face
|
||||
font-family: 'Source Sans 3'
|
||||
font-style: normal
|
||||
font-display: swap
|
||||
font-weight: 800
|
||||
src: local('Source Sans 3 ExtraBold'), local('SourceSans3-ExtraBold'), url('#{$font-path}SourceSans3-ExtraBold.woff2') format('woff2'), url('#{$font-path}SourceSans3-ExtraBold.ttf') format('truetype')
|
||||
|
||||
@font-face
|
||||
font-family: 'Source Sans 3'
|
||||
font-style: normal
|
||||
font-display: swap
|
||||
font-weight: 900
|
||||
src: local('Source Sans 3 Black'), local('SourceSans3-Black'), url('#{$font-path}SourceSans3-Black.woff2') format('woff2'), url('#{$font-path}SourceSans3-Black.ttf') format('truetype')
|
||||
|
||||
@font-face
|
||||
font-family: 'Source Code Pro'
|
||||
font-style: normal
|
||||
font-display: swap
|
||||
font-weight: 600
|
||||
src: local('Source Code Pro Medium'), local('SourceCodePro-Medium'), url('#{$font-path}SourceCodePro-Medium.woff2') format('woff2'), url('#{$font-path}SourceCodePro-Medium.ttf') format('truetype')
|
||||
|
||||
@font-face
|
||||
font-family: 'Source Code Pro'
|
||||
font-style: italic
|
||||
font-display: swap
|
||||
font-weight: 600
|
||||
src: local('Source Code Pro Medium Italic'), local('SourceCodePro-MediumItalic'), url('#{$font-path}SourceCodePro-MediumItalic.woff2') format('woff2'), url('#{$font-path}SourceCodePro-MediumItalic.ttf') format('truetype')
|
||||
|
||||
|
||||
|
||||
|
||||
*
|
||||
font-family: 'Source Sans 3', sans-serif
|
||||
code
|
||||
font-family: 'Source Code Pro', monospace
|
264
assets/sass/_layout.sass
Normal file
264
assets/sass/_layout.sass
Normal file
@@ -0,0 +1,264 @@
|
||||
/* _layout.sass */
|
||||
|
||||
/* Variables */
|
||||
$spacing-unit: 1.5rem
|
||||
$section-spacing: 2rem
|
||||
$border-radius: 8px
|
||||
$body-width: 1024px
|
||||
|
||||
html
|
||||
background: darken($background, 3%)
|
||||
|
||||
/* Base Layout */
|
||||
body
|
||||
background: $background
|
||||
color: $text
|
||||
font-family: 'Segoe UI', 'Helvetica Neue', Arial, sans-serif
|
||||
width: 100%
|
||||
height: 100%
|
||||
max-width: $body-width
|
||||
margin: $spacing-unit auto
|
||||
padding: $spacing-unit
|
||||
box-sizing: border-box
|
||||
border-radius: $border-radius
|
||||
|
||||
header
|
||||
background: $surface
|
||||
margin: $spacing-unit
|
||||
padding: $spacing-unit
|
||||
display: flex
|
||||
flex-wrap: wrap
|
||||
align-items: center
|
||||
justify-content: space-between
|
||||
border-radius: $border-radius
|
||||
margin: 0 auto
|
||||
|
||||
header h1, header h1 a
|
||||
margin: 0
|
||||
font-size: 1.6rem
|
||||
font-weight: 900
|
||||
color: $text
|
||||
text-decoration: none
|
||||
padding: 0
|
||||
transition: color 0.4s ease-in-out
|
||||
&:hover, &:focus
|
||||
color: $accent-light
|
||||
|
||||
nav
|
||||
display: flex
|
||||
gap: $spacing-unit
|
||||
align-items: center
|
||||
|
||||
nav ul
|
||||
list-style: none
|
||||
margin: 0
|
||||
padding: 0
|
||||
display: flex
|
||||
gap: 0.5rem
|
||||
flex-wrap: wrap
|
||||
|
||||
nav ul li
|
||||
margin: 0
|
||||
padding: 0
|
||||
|
||||
nav ul li a
|
||||
padding: 0.4rem 0.6rem
|
||||
border-radius: $border-radius
|
||||
background: $primary-dark
|
||||
color: $text
|
||||
text-decoration: none
|
||||
font-weight: 500
|
||||
transition: background 0.4s ease-in-out
|
||||
&:hover, &:focus
|
||||
background: $accent-dark
|
||||
color: $text
|
||||
|
||||
@media (max-width: 600px)
|
||||
header
|
||||
flex-direction: column
|
||||
align-items: flex-start
|
||||
gap: $spacing-unit
|
||||
|
||||
nav
|
||||
width: 100%
|
||||
justify-content: flex-start
|
||||
margin-top: $spacing-unit
|
||||
|
||||
main
|
||||
margin: $spacing-unit 0
|
||||
padding: $spacing-unit
|
||||
|
||||
footer
|
||||
background: $surface
|
||||
margin: $spacing-unit
|
||||
padding: $spacing-unit
|
||||
border-radius: $border-radius
|
||||
margin: 0 auto
|
||||
text-align: center
|
||||
|
||||
footer p
|
||||
margin: 0
|
||||
font-size: 0.9rem
|
||||
color: $text-subtle
|
||||
text-align: center
|
||||
|
||||
section
|
||||
border-bottom: 3px solid $surface
|
||||
margin: $section-spacing 0
|
||||
padding-bottom: $section-spacing
|
||||
|
||||
#page-header
|
||||
border-bottom: 3px solid $surface
|
||||
margin: $section-spacing 0
|
||||
padding-bottom: $section-spacing
|
||||
text-align: center
|
||||
h1
|
||||
margin: 0
|
||||
width: 100%
|
||||
font-size: 3rem
|
||||
word-break: break-word
|
||||
.subtitle
|
||||
margin: 0
|
||||
width: 100%
|
||||
font-size: 1.2rem
|
||||
font-weight: 300
|
||||
color: $text-subtle
|
||||
.time
|
||||
font-size: 0.8rem
|
||||
color: $text-subtle
|
||||
text-align: center
|
||||
|
||||
#tool-cards
|
||||
display: flex
|
||||
flex-wrap: wrap
|
||||
gap: $spacing-unit
|
||||
// justify-content: space-between
|
||||
|
||||
> article
|
||||
flex: 1 1 48%
|
||||
min-width: 300px
|
||||
max-width: 48%
|
||||
box-sizing: border-box
|
||||
|
||||
@media (max-width: 900px)
|
||||
> article
|
||||
flex-basis: 100%
|
||||
max-width: 100%
|
||||
|
||||
article
|
||||
background: $surface
|
||||
border-radius: 8px
|
||||
padding: 1rem 1.5rem
|
||||
// margin: $spacing-unit 0
|
||||
// position: relative
|
||||
transition: background 0.5s ease-in-out
|
||||
&:hover, &:focus
|
||||
background: $primary-dark
|
||||
h3
|
||||
margin: 0
|
||||
font-size: 1.5rem
|
||||
font-weight: 700
|
||||
color: $text
|
||||
a
|
||||
color: $text
|
||||
position: absolute
|
||||
top: 0
|
||||
left: 0
|
||||
width: 100%
|
||||
height: 100%
|
||||
z-index: 1
|
||||
text-indent: -9999px
|
||||
overflow: hidden
|
||||
text-decoration: none
|
||||
transition: color 0.3s ease-in-out
|
||||
&:hover, &:focus
|
||||
color: $accent-light
|
||||
&:not(a)
|
||||
position: relative
|
||||
z-index: 2
|
||||
p
|
||||
margin: 0.5rem 0
|
||||
font-size: 1rem
|
||||
color: $text
|
||||
font-weight: 300
|
||||
|
||||
.subtitle
|
||||
margin: 0 0 0 0.5rem
|
||||
width: 100%
|
||||
font-size: 1.1rem
|
||||
font-weight: 300
|
||||
color: $text-subtle
|
||||
|
||||
.term-title
|
||||
font-weight: 700
|
||||
padding: 0.3rem 0.8rem
|
||||
margin-bottom: 0.5rem
|
||||
border-radius: $border-radius
|
||||
|
||||
p code
|
||||
background: darken($primary-dark,10%)
|
||||
margin: 0 0.2rem
|
||||
padding: 0.2rem 0.4rem
|
||||
border-radius: 5px
|
||||
font-size: 0.8rem
|
||||
|
||||
pre
|
||||
padding: 0.5rem
|
||||
border-radius: 5px
|
||||
overflow-x: auto
|
||||
code
|
||||
font-size: 0.8rem
|
||||
|
||||
.banner
|
||||
position: fixed
|
||||
top: 0
|
||||
width: 100%
|
||||
max-width: $body-width
|
||||
background-color: $accent
|
||||
color: $darkest
|
||||
padding: 5px 0
|
||||
font-weight: 400
|
||||
text-align: center
|
||||
font-size: 1.1em
|
||||
border-radius: 0 0 8px 8px
|
||||
z-index: 1000
|
||||
font-size: 0.9rem
|
||||
height: 1.3rem
|
||||
margin-left: calc(0% - #{$spacing-unit})
|
||||
|
||||
a
|
||||
color: $darkest
|
||||
text-decoration: underline
|
||||
font-weight: 700
|
||||
transition: color 0.3s ease-in-out
|
||||
&:hover, &:focus
|
||||
color: $primary-dark
|
||||
|
||||
body:has(.banner)
|
||||
margin-top: 2.6rem
|
||||
|
||||
@media (max-width: 600px)
|
||||
.banner
|
||||
position: absolute
|
||||
top: 0
|
||||
width: calc(100% - #{$spacing-unit})
|
||||
max-width: $body-width
|
||||
background-color: $accent
|
||||
color: $darkest
|
||||
padding: 5px
|
||||
font-weight: 400
|
||||
text-align: center
|
||||
font-size: 1.1em
|
||||
border-radius: 0 0 8px 8px
|
||||
z-index: 1000
|
||||
font-size: 0.9rem
|
||||
height: 4.3rem
|
||||
margin-left: calc(0% - #{$spacing-unit})
|
||||
|
||||
.banner-text
|
||||
display: block
|
||||
margin: 0 5px
|
||||
|
||||
|
||||
body:has(.banner)
|
||||
margin-top: 5.6rem
|
57
assets/sass/_links.sass
Normal file
57
assets/sass/_links.sass
Normal file
@@ -0,0 +1,57 @@
|
||||
/* _text.sass */
|
||||
|
||||
a
|
||||
color: $accent-light
|
||||
text-decoration: underline
|
||||
transition: color 0.3s ease-in-out
|
||||
&:hover, &:focus
|
||||
color: $primary
|
||||
|
||||
#quick-links
|
||||
text-align: left
|
||||
|
||||
#link-list
|
||||
display: flex
|
||||
gap: $spacing-unit
|
||||
align-items: center
|
||||
flex-wrap: wrap
|
||||
margin: 2rem 0 $spacing-unit 0
|
||||
justify-content: center
|
||||
|
||||
#link-list h2
|
||||
flex: none
|
||||
|
||||
#link-list ul
|
||||
list-style: none
|
||||
margin: 0
|
||||
padding: 0
|
||||
display: flex
|
||||
gap: 1rem
|
||||
flex-wrap: wrap
|
||||
|
||||
#link-list ul li
|
||||
margin: 0
|
||||
padding: 0
|
||||
|
||||
#link-list ul li a
|
||||
padding: 0.3rem 0.6rem
|
||||
border-radius: $border-radius
|
||||
background: $primary-light
|
||||
color: $darkest
|
||||
text-decoration: none
|
||||
font-weight: 500
|
||||
transition: background 0.3s ease-in-out
|
||||
&:hover, &:focus
|
||||
background: $accent-light
|
||||
|
||||
a.button
|
||||
padding: 0.3rem 0.6rem
|
||||
margin: 0 0.2rem
|
||||
border-radius: $border-radius
|
||||
background: $primary-light
|
||||
color: $darkest
|
||||
text-decoration: none
|
||||
font-weight: 500
|
||||
transition: background 0.3s ease-in-out
|
||||
&:hover, &:focus
|
||||
background: $accent-light
|
21
assets/sass/_publications.sass
Normal file
21
assets/sass/_publications.sass
Normal file
@@ -0,0 +1,21 @@
|
||||
#publications
|
||||
font-weight: 300
|
||||
ul
|
||||
list-style: none
|
||||
margin: 0
|
||||
padding: 0
|
||||
display: flex
|
||||
flex-direction: column
|
||||
gap: 1em
|
||||
|
||||
li
|
||||
background: $surface
|
||||
border-radius: 8px
|
||||
padding: 1em 1.5em
|
||||
a
|
||||
color: $primary-light
|
||||
text-decoration: none
|
||||
font-weight: 100
|
||||
transition: color 0.3s ease-in-out
|
||||
&:hover, &:focus
|
||||
color: $accent-light
|
90
assets/sass/_taxonomy.sass
Normal file
90
assets/sass/_taxonomy.sass
Normal file
@@ -0,0 +1,90 @@
|
||||
|
||||
table#taxonomy-table
|
||||
width: 100%
|
||||
border-collapse: collapse
|
||||
// border: 3px solid $darkest
|
||||
box-sizing: border-box
|
||||
background: $surface
|
||||
text-align: left
|
||||
|
||||
tr
|
||||
border-bottom: 3px solid $background
|
||||
&:nth-child(even)
|
||||
background: darken($surface, 2%)
|
||||
transition: background 0.4s ease-in-out
|
||||
&:nth-child(odd)
|
||||
background: lighten($surface, 3%)
|
||||
transition: background 0.4s ease-in-out
|
||||
&:hover, &:focus
|
||||
background: $border
|
||||
|
||||
thead
|
||||
text-align: left
|
||||
border: none
|
||||
border-radius: $border-radius $border-radius 0 0
|
||||
|
||||
th
|
||||
color: $text
|
||||
background: $darkest !important
|
||||
padding: 0.6rem 0.6rem
|
||||
text-align: left
|
||||
font-weight: 600
|
||||
border: none
|
||||
|
||||
td
|
||||
padding: 0.3rem 0.6rem
|
||||
text-align: left
|
||||
font-weight: 600
|
||||
border: none
|
||||
|
||||
td.description
|
||||
font-weight: 300
|
||||
color: $text-subtle
|
||||
td.tool
|
||||
min-width: 100px
|
||||
|
||||
a.term-link
|
||||
padding: 0.2rem 0.6rem
|
||||
margin: 0.2rem
|
||||
display: inline-block
|
||||
border-radius: $border-radius
|
||||
text-decoration: none
|
||||
font-weight: 500
|
||||
color: $text
|
||||
transition: color 0.4s ease-in-out, background 0.4s ease-in-out
|
||||
&:hover, &:focus
|
||||
color: $darkest !important
|
||||
background: $text-subtle !important
|
||||
|
||||
a.taxonomy-name
|
||||
padding: 0
|
||||
margin: 0.2rem
|
||||
display: inline-block
|
||||
border-radius: $border-radius
|
||||
text-decoration: none
|
||||
font-weight: 500
|
||||
color: $text
|
||||
transition: color 0.4s ease-in-out
|
||||
&:hover, &:focus
|
||||
color: $accent-light
|
||||
|
||||
a
|
||||
color: $text
|
||||
text-decoration: none
|
||||
&:hover, &:focus
|
||||
color: $accent
|
||||
|
||||
#taxonomy-page a.term-link
|
||||
padding: 0.3rem 1.2rem
|
||||
margin: 0.2rem
|
||||
display: inline-block
|
||||
border-radius: $border-radius
|
||||
text-decoration: none
|
||||
font-weight: 500
|
||||
font-size: 1.2rem
|
||||
color: $text
|
||||
transition: color 0.4s ease-in-out, background 0.4s ease-in-out
|
||||
&:hover, &:focus
|
||||
color: $darkest !important
|
||||
background: $text-subtle !important
|
||||
|
0
assets/sass/_tools.sass
Normal file
0
assets/sass/_tools.sass
Normal file
6
assets/sass/main.sass
Normal file
6
assets/sass/main.sass
Normal file
@@ -0,0 +1,6 @@
|
||||
@import "fonts"
|
||||
@import "colors"
|
||||
@import "layout"
|
||||
@import "taxonomy"
|
||||
@import "links"
|
||||
@import "publications"
|
@@ -1,9 +0,0 @@
|
||||
+++
|
||||
title = 'Home'
|
||||
date = 2023-01-01T08:00:00-07:00
|
||||
draft = false
|
||||
+++
|
||||
|
||||
Laborum voluptate pariatur ex culpa magna nostrud est incididunt fugiat
|
||||
pariatur do dolor ipsum enim. Consequat tempor do dolor eu. Non id id anim anim
|
||||
excepteur excepteur pariatur nostrud qui irure ullamco.
|
@@ -1,7 +0,0 @@
|
||||
+++
|
||||
title = 'Posts'
|
||||
date = 2023-01-01T08:30:00-07:00
|
||||
draft = false
|
||||
+++
|
||||
|
||||
Tempor est exercitation ad qui pariatur quis adipisicing aliquip nisi ea consequat ipsum occaecat. Nostrud consequat ullamco laboris fugiat esse esse adipisicing velit laborum ipsum incididunt ut enim. Dolor pariatur nulla quis fugiat dolore excepteur. Aliquip ad quis aliqua enim do consequat.
|
@@ -1,10 +0,0 @@
|
||||
+++
|
||||
title = 'Post 1'
|
||||
date = 2023-01-15T09:00:00-07:00
|
||||
draft = false
|
||||
tags = ['red']
|
||||
+++
|
||||
|
||||
Tempor proident minim aliquip reprehenderit dolor et ad anim Lorem duis sint eiusmod. Labore ut ea duis dolor. Incididunt consectetur proident qui occaecat incididunt do nisi Lorem. Tempor do laborum elit laboris excepteur eiusmod do. Eiusmod nisi excepteur ut amet pariatur adipisicing Lorem.
|
||||
|
||||
Occaecat nulla excepteur dolore excepteur duis eiusmod ullamco officia anim in voluptate ea occaecat officia. Cillum sint esse velit ea officia minim fugiat. Elit ea esse id aliquip pariatur cupidatat id duis minim incididunt ea ea. Anim ut duis sunt nisi. Culpa cillum sit voluptate voluptate eiusmod dolor. Enim nisi Lorem ipsum irure est excepteur voluptate eu in enim nisi. Nostrud ipsum Lorem anim sint labore consequat do.
|
@@ -1,10 +0,0 @@
|
||||
+++
|
||||
title = 'Post 2'
|
||||
date = 2023-02-15T10:00:00-07:00
|
||||
draft = false
|
||||
tags = ['red','green']
|
||||
+++
|
||||
|
||||
Anim eiusmod irure incididunt sint cupidatat. Incididunt irure irure irure nisi ipsum do ut quis fugiat consectetur proident cupidatat incididunt cillum. Dolore voluptate occaecat qui mollit laborum ullamco et. Ipsum laboris officia anim laboris culpa eiusmod ex magna ex cupidatat anim ipsum aute. Mollit aliquip occaecat qui sunt velit ut cupidatat reprehenderit enim sunt laborum. Velit veniam in officia nulla adipisicing ut duis officia.
|
||||
|
||||
Exercitation voluptate irure in irure tempor mollit Lorem nostrud ad officia. Velit id fugiat occaecat do tempor. Sit officia Lorem aliquip eu deserunt consectetur. Aute proident deserunt in nulla aliquip dolore ipsum Lorem ut cupidatat consectetur sit sint laborum. Esse cupidatat sit sint sunt tempor exercitation deserunt. Labore dolor duis laborum est do nisi ut veniam dolor et nostrud nostrud.
|
Binary file not shown.
Before Width: | Height: | Size: 19 KiB |
@@ -1,12 +0,0 @@
|
||||
+++
|
||||
title = 'Post 3'
|
||||
date = 2023-03-15T11:00:00-07:00
|
||||
draft = false
|
||||
tags = ['red','green','blue']
|
||||
+++
|
||||
|
||||
Occaecat aliqua consequat laborum ut ex aute aliqua culpa quis irure esse magna dolore quis. Proident fugiat labore eu laboris officia Lorem enim. Ipsum occaecat cillum ut tempor id sint aliqua incididunt nisi incididunt reprehenderit. Voluptate ad minim sint est aute aliquip esse occaecat tempor officia qui sunt. Aute ex ipsum id ut in est velit est laborum incididunt. Aliqua qui id do esse sunt eiusmod id deserunt eu nostrud aute sit ipsum. Deserunt esse cillum Lorem non magna adipisicing mollit amet consequat.
|
||||
|
||||

|
||||
|
||||
Sit excepteur do velit veniam mollit in nostrud laboris incididunt ea. Amet eu cillum ut reprehenderit culpa aliquip labore laborum amet sit sit duis. Laborum id proident nostrud dolore laborum reprehenderit quis mollit nulla amet veniam officia id id. Aliquip in deserunt qui magna duis qui pariatur officia sunt deserunt.
|
23
hugo.toml
23
hugo.toml
@@ -1,24 +1,5 @@
|
||||
baseURL = 'https://example.org/'
|
||||
languageCode = 'en-US'
|
||||
title = 'My New Hugo Site'
|
||||
|
||||
[menus]
|
||||
[[menus.main]]
|
||||
name = 'Home'
|
||||
pageRef = '/'
|
||||
weight = 10
|
||||
|
||||
[[menus.main]]
|
||||
name = 'Posts'
|
||||
pageRef = '/posts'
|
||||
weight = 20
|
||||
|
||||
[[menus.main]]
|
||||
name = 'Tags'
|
||||
pageRef = '/tags'
|
||||
weight = 30
|
||||
|
||||
[module]
|
||||
[module.hugoVersion]
|
||||
extended = false
|
||||
extended = true
|
||||
min = '0.146.0'
|
||||
|
||||
|
17
layouts/404.html
Normal file
17
layouts/404.html
Normal file
@@ -0,0 +1,17 @@
|
||||
{{ define "main" }}
|
||||
|
||||
<div id="page-header">
|
||||
<h1>Oh No!</h1>
|
||||
<span class="subtitle">This is not the page you are looking for.</span>
|
||||
</div>
|
||||
|
||||
<section>
|
||||
<p>This is really embarrassing, but the page you were looking for does not exist. It may have been moved or deleted.</p>
|
||||
<p>Please <a href="https://gitmoss.fyi/fmtools/content/issues/new" target="_blank">submit an issue</a> if you think this is a mistake, or you can go back to the <a href="{{ "/" | relLangURL }}">home page</a>.</p>
|
||||
</section>
|
||||
|
||||
<!-- {{ $dateMachine := .Date | time.Format "2006-01-02T15:04:05-07:00" }}
|
||||
{{ $dateHuman := .Date | time.Format ":date_long" }}
|
||||
<p class="time">Updated <time datetime="{{ $dateMachine }}">{{ $dateHuman }}</time></p> -->
|
||||
|
||||
{{ end }}
|
1
layouts/_markup/render-link.html
Normal file
1
layouts/_markup/render-link.html
Normal file
@@ -0,0 +1 @@
|
||||
<a href="{{ .Destination | safeURL }}"{{ with .Title}} title="{{ . }}"{{ end }}{{ if or (strings.HasPrefix .Destination "http") (strings.HasPrefix .Destination "https") }} target="_blank"{{ end }} >{{ .Text | safeHTML }}</a>
|
5
layouts/_partials/banner.html
Normal file
5
layouts/_partials/banner.html
Normal file
@@ -0,0 +1,5 @@
|
||||
<div class="banner">
|
||||
<span class="banner-text">{{ .Site.Params.bannerTitle }}
|
||||
{{ .Site.Params.banner | markdownify }}
|
||||
</span>
|
||||
</div>
|
5
layouts/_partials/favicon.html
Normal file
5
layouts/_partials/favicon.html
Normal file
@@ -0,0 +1,5 @@
|
||||
{{- $faviconsDir := absURL site.Params.faviconsDir }}
|
||||
<link rel="apple-touch-icon" sizes="180x180" href='{{ printf "%sapple-touch-icon.png" $faviconsDir }}'>
|
||||
<link rel="icon" type="image/png" sizes="32x32" href='{{ printf "%sfavicon-32x32.png" $faviconsDir }}'>
|
||||
<link rel="icon" type="image/png" sizes='16x16' href='{{ printf "%sfavicon-16x16.png" $faviconsDir }}'>
|
||||
<link rel="manifest" href='{{ printf "%ssite.webmanifest" $faviconsDir }}'>
|
@@ -1 +1,4 @@
|
||||
<p>Copyright {{ now.Year }}. All rights reserved.</p>
|
||||
<p><a href="/contribute">Contribute</a> | <a href="/about">About</a> | <a href="/license">License</a> | <a href="/privacy">Privacy</a> </p>
|
||||
<!-- <p>Open-source under <a href="">MIT License</a></p> -->
|
||||
<!-- <p>The information on this website is presented for educational purposes only.</p> -->
|
||||
<p>© Copyright {{ now.Year }}. An open-source project.</p>
|
||||
|
@@ -1,5 +1,13 @@
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<!-- <meta name="viewport" content="width=device-width"> -->
|
||||
<meta name="viewport" content ="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
|
||||
<title>{{ if .IsHome }}{{ site.Title }}{{ else }}{{ printf "%s | %s" .Title site.Title }}{{ end }}</title>
|
||||
{{ partialCached "head/css.html" . }}
|
||||
{{ partialCached "head/js.html" . }}
|
||||
{{- partial "opengraph" . }}
|
||||
{{- partialCached "favicon" . }}
|
||||
{{- partialCached "styles" . }}
|
||||
|
||||
|
||||
|
||||
|
||||
|
@@ -1,9 +0,0 @@
|
||||
{{- with resources.Get "css/main.css" }}
|
||||
{{- if hugo.IsDevelopment }}
|
||||
<link rel="stylesheet" href="{{ .RelPermalink }}">
|
||||
{{- else }}
|
||||
{{- with . | minify | fingerprint }}
|
||||
<link rel="stylesheet" href="{{ .RelPermalink }}" integrity="{{ .Data.Integrity }}" crossorigin="anonymous">
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
@@ -1,16 +0,0 @@
|
||||
{{- with resources.Get "js/main.js" }}
|
||||
{{- $opts := dict
|
||||
"minify" (not hugo.IsDevelopment)
|
||||
"sourceMap" (cond hugo.IsDevelopment "external" "")
|
||||
"targetPath" "js/main.js"
|
||||
}}
|
||||
{{- with . | js.Build $opts }}
|
||||
{{- if hugo.IsDevelopment }}
|
||||
<script src="{{ .RelPermalink }}"></script>
|
||||
{{- else }}
|
||||
{{- with . | fingerprint }}
|
||||
<script src="{{ .RelPermalink }}" integrity="{{ .Data.Integrity }}" crossorigin="anonymous"></script>
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
0
layouts/_partials/head/sass.html
Normal file
0
layouts/_partials/head/sass.html
Normal file
@@ -1,2 +1,2 @@
|
||||
<h1>{{ site.Title }}</h1>
|
||||
<h1><a href="{{ "/" | relURL }}">{{ site.Title }}</a></h1>
|
||||
{{ partial "menu.html" (dict "menuID" "main" "page" .) }}
|
||||
|
70
layouts/_partials/opengraph.html
Normal file
70
layouts/_partials/opengraph.html
Normal file
@@ -0,0 +1,70 @@
|
||||
{{- $config := site.Params }}
|
||||
{{- $permalink := .Permalink }}
|
||||
{{ $st := site.Title }}
|
||||
{{- $summary := "" }}
|
||||
{{- with .Summary }}
|
||||
{{- $summary = . }}
|
||||
{{- else }}
|
||||
{{- $summary = $config.description }}
|
||||
{{- end }}
|
||||
{{- $summary = truncate 160 "" $summary }}
|
||||
{{- $logo := absURL (printf "images/%s" $config.logo) }}
|
||||
{{- if in $config.logo "https://" }}
|
||||
{{- $logo = $config.logo }}
|
||||
{{- end }}
|
||||
{{ $image := "" }}
|
||||
{{- with .Params.image }}
|
||||
{{ if in . "https://" }}
|
||||
{{- $image = . }}
|
||||
{{ else }}
|
||||
{{- $image = absURL (printf "images/%s" .) }}
|
||||
{{ end }}
|
||||
{{- else }}
|
||||
{{- $image = $logo }}
|
||||
{{- end }}
|
||||
<meta name="keywords" content="{{ $st }}">
|
||||
<meta property="og:locale" content='{{ default "en_US" $config.locale }}'>
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="og:title" content="{{ .Title }}">
|
||||
<meta property="og:description" content="{{ $summary }}">
|
||||
<meta property="og:url" content="{{ $permalink }}">
|
||||
<meta property="og:image" content="{{ $image }}">
|
||||
{{- if eq .Section $config.blogDir -}}
|
||||
{{- $date := .Date.Format "2006-02-01" -}}
|
||||
<meta property="article:published_time" content="{{ htmlUnescape $date }}" />
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "BlogPosting",
|
||||
"mainEntityOfPage":"{{ $permalink }}",
|
||||
"name": "{{ $st }}",
|
||||
"headline": "{{ .Title }}",
|
||||
"description": "{{ $summary }}",
|
||||
"url": "{{ $permalink }}",
|
||||
"datePublished": "{{ $date }}",
|
||||
"dateModified": "{{ $date }}",
|
||||
"author": {
|
||||
"@type": "Person",
|
||||
"name": "{{ .Params.author }}"
|
||||
},
|
||||
"image":{
|
||||
"@type":"ImageObject",
|
||||
"url": "{{ $image }}"
|
||||
},
|
||||
"publisher": {
|
||||
"@type": "Organization",
|
||||
"logo": {
|
||||
"@type":"ImageObject",
|
||||
"url": "{{ $logo }}"
|
||||
},
|
||||
"name": "{{ $st }}"
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:creator" content="{{ $config.twitter }}">
|
||||
<meta name="twitter:title" content="{{ .Title }}">
|
||||
<meta name="twitter:description" content="{{ $summary }}">
|
||||
<meta name="twitter:image" content="{{ $image }}">
|
||||
{{- end }}
|
||||
<link rel="canonical" href="{{ $permalink }}">
|
26
layouts/_partials/styles.html
Normal file
26
layouts/_partials/styles.html
Normal file
@@ -0,0 +1,26 @@
|
||||
{{- $options := (dict "targetPath" "css/styles.css" "outputStyle" "expanded" "enableSourceMap" "true") -}}
|
||||
{{ $mainSassFile := "sass/main.sass" }}
|
||||
{{- $styles := resources.Get $mainSassFile | resources.ExecuteAsTemplate $mainSassFile . | css.Sass $options | resources.Fingerprint "sha512" }}
|
||||
<link rel="stylesheet" href="{{ $styles.Permalink }}" integrity="{{ $styles.Data.Integrity }}">
|
||||
|
||||
<link href="/css/fontawesome.css" rel="stylesheet" />
|
||||
<link href="/css/brands.css" rel="stylesheet" />
|
||||
<link href="/css/solid.css" rel="stylesheet" />
|
||||
|
||||
<link rel="apple-touch-icon" sizes="57x57" href="/apple-icon-57x57.png">
|
||||
<link rel="apple-touch-icon" sizes="60x60" href="/apple-icon-60x60.png">
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="/apple-icon-72x72.png">
|
||||
<link rel="apple-touch-icon" sizes="76x76" href="/apple-icon-76x76.png">
|
||||
<link rel="apple-touch-icon" sizes="114x114" href="/apple-icon-114x114.png">
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="/apple-icon-120x120.png">
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="/apple-icon-144x144.png">
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="/apple-icon-152x152.png">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/apple-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" sizes="192x192" href="/android-icon-192x192.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="96x96" href="/favicon-96x96.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
|
||||
<link rel="manifest" href="/manifest.json">
|
||||
<meta name="msapplication-TileColor" content="#ffffff">
|
||||
<meta name="msapplication-TileImage" content="/ms-icon-144x144.png">
|
||||
<meta name="theme-color" content="#ffffff">
|
15
layouts/_partials/term-link.html
Normal file
15
layouts/_partials/term-link.html
Normal file
@@ -0,0 +1,15 @@
|
||||
{{ $name := .name }}
|
||||
{{ $taxonomy := .taxonomy }}
|
||||
|
||||
{{ $hash := md5 $name }}
|
||||
{{ $r := printf "0x%s" (substr $hash 0 2) | int }}
|
||||
{{ $g := printf "0x%s" (substr $hash 2 2) | int }}
|
||||
{{ $b := printf "0x%s" (substr $hash 4 2) | int }}
|
||||
{{ $rgba := printf "rgba(%d,%d,%d,0.2)" $r $g $b }}
|
||||
<a
|
||||
class="term-link"
|
||||
id="{{ $taxonomy | urlize }}_{{ $name | urlize }}"
|
||||
style="background:rgba({{ $r }},{{ $g }},{{ $b }},0.4)"
|
||||
href="{{ "/" | relLangURL}}{{ $taxonomy | urlize }}{{ "/" | relLangURL}}{{ $name | urlize }}">
|
||||
{{ $name }}
|
||||
</a>
|
@@ -1,23 +1,23 @@
|
||||
{{- /*
|
||||
For a given taxonomy, renders a list of terms assigned to the page.
|
||||
|
||||
@context {page} page The current page.
|
||||
@context {string} taxonomy The taxonomy.
|
||||
|
||||
@example: {{ partial "terms.html" (dict "taxonomy" "tags" "page" .) }}
|
||||
*/}}
|
||||
{{- .Site }}
|
||||
<section>
|
||||
<ul id="all-taxonomies">
|
||||
{{ range $taxonomyname, $taxonomy := .Site.Taxonomies }}
|
||||
{{ $taxonomyname }}
|
||||
<li><a href="{{ "/" | relLangURL}}{{ $taxonomyname | urlize }}">{{ $taxonomyname }}</a>
|
||||
<ul>
|
||||
{{ range $key, $value := $taxonomy }}
|
||||
<li> {{ $key }} </li>
|
||||
<ul>
|
||||
{{ range $value.Pages }}
|
||||
<li hugo-nav="{{ .RelPermalink}}"><a href="{{ .Permalink}}"> {{ .LinkTitle }} </a> </li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
{{ end }}
|
||||
</ul>
|
||||
</li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
{{- $page := .page }}
|
||||
{{- $taxonomy := .taxonomy }}
|
||||
|
||||
{{- with $page.GetTerms $taxonomy }}
|
||||
{{- $label := (index . 0).Parent.LinkTitle }}
|
||||
<div>
|
||||
<div>{{ $label }}:</div>
|
||||
<ul>
|
||||
{{- range . }}
|
||||
<li><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></li>
|
||||
{{- end }}
|
||||
</ul>
|
||||
</div>
|
||||
{{- end }}
|
||||
|
0
layouts/_partials/tool-table.html
Normal file
0
layouts/_partials/tool-table.html
Normal file
@@ -4,6 +4,9 @@
|
||||
{{ partial "head.html" . }}
|
||||
</head>
|
||||
<body>
|
||||
{{ if .Site.Params.banner }}
|
||||
{{ partial "banner.html" . }}
|
||||
{{ end }}
|
||||
<header>
|
||||
{{ partial "header.html" . }}
|
||||
</header>
|
||||
|
@@ -1,7 +1,51 @@
|
||||
{{ define "main" }}
|
||||
|
||||
<div id="page-header">
|
||||
<h1>{{ .Title }}</h1>
|
||||
{{ if .Params.subtitle }}
|
||||
<span class="subtitle">{{ .Params.subtitle }}</span>
|
||||
{{ end }}
|
||||
</div>
|
||||
|
||||
<section>
|
||||
{{ .Content }}
|
||||
{{ range site.RegularPages }}
|
||||
<h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
|
||||
{{ .Summary }}
|
||||
{{ end }}
|
||||
</section>
|
||||
|
||||
{{ $pages := shuffle (where site.RegularPages "Section" "tools") | first 20 }}
|
||||
<section>
|
||||
<h2>Try Something New</h2>
|
||||
<p>This list shows a selection of 20 random tools, refreshed every time this site is updated.</p>
|
||||
<div id="tool-cards">
|
||||
{{ range $pages }}
|
||||
<article class="tool-card">
|
||||
<h3>
|
||||
{{ .Title }}
|
||||
{{ if .Params.subtitle }}
|
||||
<span class="subtitle">{{ .Params.subtitle }}</span>
|
||||
{{ end }}
|
||||
</h3>
|
||||
<p>{{ .Content | plainify | truncate 100 }}</p>
|
||||
<a href="{{ .RelPermalink }}" style="position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;text-indent:-9999px;overflow:hidden;">{{ .Title }}</a>
|
||||
</article>
|
||||
{{ end }}
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<div class="time" style="display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap;">
|
||||
<div class="footer-links" style="text-align: left;">
|
||||
Help improve this page!<br/>
|
||||
Submit an
|
||||
<a href="https://gitmoss.fyi/fmtools/content/issues/new?template=.gitea%2fissue_template%2ffix_tool.md&title=[FIX]%20{{ .Title | urlquery }}" target="_blank">issue</a> or
|
||||
<a href="https://gitmoss.fyi/fmtools/content/fork" target="_blank">pull request</a>.
|
||||
</div>
|
||||
{{ if now }}
|
||||
<div class="footer-date" style="text-align: right;">
|
||||
{{ $dateMachine := now | time.Format "2006-01-02T15:04:05-07:00" }}
|
||||
{{ $dateHuman := now | time.Format "2 January 2006" }}
|
||||
Made with ♥ using <a href="https://gohugo.io" target="_blank">Hugo</a> <br/>
|
||||
Built <time datetime="{{ $dateMachine }}">{{ $dateHuman }}</time>
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
|
||||
{{ end }}
|
||||
|
@@ -1,10 +1,42 @@
|
||||
{{ define "main" }}
|
||||
<h1>{{ .Title }}</h1>
|
||||
|
||||
{{ $dateMachine := .Date | time.Format "2006-01-02T15:04:05-07:00" }}
|
||||
{{ $dateHuman := .Date | time.Format ":date_long" }}
|
||||
<time datetime="{{ $dateMachine }}">{{ $dateHuman }}</time>
|
||||
<div id="page-header">
|
||||
<h1>{{ .Title }}</h1>
|
||||
{{ if .Params.subtitle }}
|
||||
<span class="subtitle">{{ .Params.subtitle }}</span>
|
||||
{{ end }}
|
||||
{{ with .Params.links }}
|
||||
<!-- <section id="quick-links"> -->
|
||||
<!-- <h2>Quick Links</h2> -->
|
||||
<div id="link-list">
|
||||
<ul>
|
||||
{{ range . }}
|
||||
<li><a href="{{ .url }}" target="_blank" rel="noopener">{{ if .icon }}<i class="{{ .icon }}"></i> {{ end }}{{ .title }}</a></li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
</div>
|
||||
<!-- </section> -->
|
||||
{{ end }}
|
||||
</div>
|
||||
|
||||
<section>
|
||||
{{ .Content }}
|
||||
{{ partial "terms.html" (dict "taxonomy" "tags" "page" .) }}
|
||||
</section>
|
||||
|
||||
<div class="time" style="display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap;">
|
||||
<div class="footer-links" style="text-align: left;">
|
||||
Help improve this page!<br/>
|
||||
Submit an
|
||||
<a href="https://gitmoss.fyi/fmtools/content/issues/new?&title=[FIX]%20{{ .Title | urlquery }}" target="_blank">issue</a> or
|
||||
<a href="https://gitmoss.fyi/fmtools/content/fork" target="_blank">pull request</a>.
|
||||
</div>
|
||||
{{ if .Date }}
|
||||
<div class="footer-date" style="text-align: right;">
|
||||
{{ $dateMachine := .Date | time.Format "2006-01-02T15:04:05-07:00" }}
|
||||
{{ $dateHuman := .Date | time.Format "2 January 2006" }}
|
||||
Updated <time datetime="{{ $dateMachine }}">{{ $dateHuman }}</time>
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
|
||||
{{ end }}
|
||||
|
@@ -1,8 +1,12 @@
|
||||
{{ define "main" }}
|
||||
<h1>{{ .Title }}</h1>
|
||||
{{ .Content }}
|
||||
{{ range .Pages }}
|
||||
<h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
|
||||
{{ .Summary }}
|
||||
{{ end }}
|
||||
<section>
|
||||
{{ range .Pages }}
|
||||
<article>
|
||||
<h3><a href="{{ .RelPermalink }}">{{ .Title }}</a></h3>
|
||||
<p>{{ .Content | plainify | truncate 100 }}</p>
|
||||
</article>
|
||||
{{ end }}
|
||||
</section>
|
||||
{{ end }}
|
||||
|
3
layouts/shortcodes/button.html
Normal file
3
layouts/shortcodes/button.html
Normal file
@@ -0,0 +1,3 @@
|
||||
<a href="{{ .Get "href" }}" class="button">
|
||||
{{ .Inner | safeHTML }}
|
||||
</a>
|
6
layouts/shortcodes/closed-source.html
Normal file
6
layouts/shortcodes/closed-source.html
Normal file
@@ -0,0 +1,6 @@
|
||||
<div style="display: flex; align-items: center; gap: 8px;">
|
||||
<span style="display: inline-block; width: 12px; height: 12px; border-radius: 50%; background: rgb(226, 181, 59);"></span>
|
||||
<span style="display:none">[</span>
|
||||
<span style="color: rgb(226, 181, 59); font-size: 1rem;">Closed-Source Tool</span>
|
||||
<span style="display:none">] </span>
|
||||
</div>
|
12
layouts/shortcodes/inactive.html
Normal file
12
layouts/shortcodes/inactive.html
Normal file
@@ -0,0 +1,12 @@
|
||||
|
||||
|
||||
<div style="display: flex; align-items: center; gap: 8px;">
|
||||
<span style="display: inline-block; width: 12px; height: 12px; border-radius: 50%; background: rgb(240, 85, 85);"></span>
|
||||
<span style="display:none">[</span>
|
||||
{{ if .Get "year" }}
|
||||
<span style="color: rgb(240, 85, 85); font-size: 1rem;">Not Maintained Since {{ .Get "year" }}</span>
|
||||
{{ else }}
|
||||
<span style="color: rgb(240, 85, 85); font-size: 1rem;">No Longer Maintained</span>
|
||||
{{ end }}
|
||||
<span style="display:none">]</span>
|
||||
</div>
|
37
layouts/taxonomies.html
Normal file
37
layouts/taxonomies.html
Normal file
@@ -0,0 +1,37 @@
|
||||
{{ define "main" }}
|
||||
<h1>{{ .Title }}</h1>
|
||||
{{ .Content }}
|
||||
|
||||
<section>
|
||||
<table id="taxonomy-table">
|
||||
<!-- <thead>
|
||||
<tr>
|
||||
<th>Taxonomy</th>
|
||||
<th>Terms</th>
|
||||
</tr>
|
||||
</thead> -->
|
||||
<tbody>
|
||||
{{ range $taxonomyname, $taxonomy := .Site.Taxonomies }}
|
||||
{{ with $taxonomy }}
|
||||
<tr>
|
||||
<td>
|
||||
<a
|
||||
class="taxonomy-name"
|
||||
href="{{ "/" | relLangURL }}{{ $taxonomyname }}">
|
||||
{{ $taxonomyname | strings.FirstUpper }}
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
{{ range $key, $value := $taxonomy }}
|
||||
{{ partial "term-link.html" (dict "name" $value.Page.Title "taxonomy" $taxonomyname) }}
|
||||
{{ end }}
|
||||
</td>
|
||||
</tr>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</tbody>
|
||||
</table>
|
||||
</section>
|
||||
|
||||
|
||||
{{ end }}
|
@@ -1,7 +1,11 @@
|
||||
{{ define "main" }}
|
||||
<h1>{{ .Title }}</h1>
|
||||
<h1>All {{ .Title }}</h1>
|
||||
{{ .Content }}
|
||||
<section id="taxonomy-page">
|
||||
{{ $taxonomy := .Title | urlize }}
|
||||
{{ range .Pages }}
|
||||
<h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
|
||||
<!-- <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2> -->
|
||||
{{ partial "term-link.html" (dict "name" .LinkTitle "taxonomy" $taxonomy ) }}
|
||||
{{ end }}
|
||||
</section>
|
||||
{{ end }}
|
||||
|
@@ -1,7 +1,70 @@
|
||||
{{ define "main" }}
|
||||
<h1>{{ .Title }}</h1>
|
||||
<h1>
|
||||
{{ $hash := md5 .Title }}
|
||||
{{ $r := printf "0x%s" (substr $hash 0 2) | int }}
|
||||
{{ $g := printf "0x%s" (substr $hash 2 2) | int }}
|
||||
{{ $b := printf "0x%s" (substr $hash 4 2) | int }}
|
||||
{{ $rgba := printf "rgba(%d,%d,%d,0.2)" $r $g $b }}
|
||||
<span
|
||||
class="term-title"
|
||||
style="background:rgba({{ $r }},{{ $g }},{{ $b }},0.4)">
|
||||
{{ .Title }}
|
||||
</span>
|
||||
</h1>
|
||||
{{ .Content }}
|
||||
{{ range .Pages }}
|
||||
<h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
|
||||
{{ end }}
|
||||
<section id="tools-list">
|
||||
<table id="taxonomy-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Tool</th>
|
||||
<!-- <th>License</th> -->
|
||||
<th>Description</th>
|
||||
<!-- <th>Developers</th> -->
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{ range .Pages }}
|
||||
<tr onclick="window.location='{{ .RelPermalink }}'" style="cursor:pointer;">
|
||||
<td class="tool"><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></td>
|
||||
<td class="description">{{ .Content | plainify | truncate 100 }}</td>
|
||||
<!-- <td>
|
||||
{{ $sep := "" }}
|
||||
{{ range $key, $vals := .Params }}
|
||||
{{ if (in (slice "applications") $key) }}
|
||||
{{ $sep }}
|
||||
{{ range $i, $val := $vals }}
|
||||
{{ partial "term-link.html" (dict "name" $val "taxonomy" $key) }}
|
||||
{{ end }}
|
||||
{{ $sep = "; " }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</td> -->
|
||||
<!-- <td>
|
||||
{{ $sep := "" }}
|
||||
{{ range $key, $vals := .Params }}
|
||||
{{ if (in (slice "developers") $key) }}
|
||||
{{ $sep }}
|
||||
{{ range $i, $val := $vals }}
|
||||
{{ partial "term-link.html" (dict "name" $val "taxonomy" $key) }}
|
||||
{{ end }}
|
||||
{{ $sep = "; " }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</td> -->
|
||||
<!-- <td>
|
||||
{{ $sep := "" }}
|
||||
{{ range $key, $vals := .Params }}
|
||||
{{ if (in (slice "licenses") $key) }}
|
||||
{{ $sep }}
|
||||
{{ range $i, $val := $vals }}
|
||||
{{ partial "term-link.html" (dict "name" $val "taxonomy" $key) }}
|
||||
{{ end }}
|
||||
{{ $sep = "; " }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</td> -->
|
||||
</tr>
|
||||
{{ end }}
|
||||
</tbody>
|
||||
</table>
|
||||
{{ end }}
|
||||
|
107
layouts/tools/page.html
Normal file
107
layouts/tools/page.html
Normal file
@@ -0,0 +1,107 @@
|
||||
{{ define "main" }}
|
||||
|
||||
<div id="page-header">
|
||||
<h1>{{ .Title }}</h1>
|
||||
{{ if .Params.subtitle }}
|
||||
<span class="subtitle">{{ .Params.subtitle }}</span>
|
||||
{{ end }}
|
||||
{{ with .Params.links }}
|
||||
<!-- <section id="quick-links"> -->
|
||||
<!-- <h2>Quick Links</h2> -->
|
||||
<div id="link-list">
|
||||
<ul>
|
||||
{{ range . }}
|
||||
<li><a href="{{ .url }}" target="_blank" rel="noopener">{{ if .icon }}<i class="{{ .icon }}"></i> {{ end }}{{ .title }}</a></li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
</div>
|
||||
<!-- </section> -->
|
||||
{{ end }}
|
||||
</div>
|
||||
|
||||
|
||||
<section id="taxonomies">
|
||||
<h2>At a Glance</h2>
|
||||
<table id="taxonomy-table">
|
||||
<tbody>
|
||||
{{ $params := .Params }}
|
||||
{{ range $taxonomyname, $taxonomy := .Site.Taxonomies }}
|
||||
{{ $terms := index $params $taxonomyname }}
|
||||
{{ if $terms }}
|
||||
<tr>
|
||||
<td>
|
||||
<a
|
||||
class="taxonomy-name"
|
||||
href="{{ "/" | relLangURL }}{{ $taxonomyname }}">
|
||||
{{ $taxonomyname | strings.FirstUpper }}
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
{{ range $term := sort $terms }}
|
||||
{{ partial "term-link.html" (dict "name" $term "taxonomy" $taxonomyname) }}
|
||||
{{ end }}
|
||||
</td>
|
||||
</tr>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</tbody>
|
||||
</table>
|
||||
</section>
|
||||
|
||||
{{ if .Content }}
|
||||
<section>
|
||||
<h2>Description</h2>
|
||||
{{ .Content }}
|
||||
</section>
|
||||
{{ end }}
|
||||
|
||||
{{ with .Params.publications}}
|
||||
<section id="publications">
|
||||
<h2>Publications</h2>
|
||||
<ul>
|
||||
{{ range $citation, $pub := site.Data.publications }}
|
||||
{{ range $pub }}
|
||||
{{ if in $.Params.publications .key }}
|
||||
<li>
|
||||
{{ if .title }} <strong>{{ .title }}</strong> {{ end }}
|
||||
{{ if .year }}
|
||||
{{ if .month }}
|
||||
({{ .month }} {{.year }})
|
||||
{{ else }}
|
||||
({{ .year }})
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ if .author }} by {{ index .author 0 }}{{ if (gt (len .author) 1) }} et. al. {{ end }}{{ end }}
|
||||
{{ if .booktitle }} | Appears in <em>{{ .booktitle }}</em> {{ end }}
|
||||
{{ if .pages }} ({{ .pages }}) {{ end }}
|
||||
{{ if .journal }} | Appears in <em>{{ .journal }}</em> {{ end }}
|
||||
{{ if .volume }} | Volume {{ .volume }} {{ end }}
|
||||
{{ if .publisher }} | Published by {{ .publisher }} {{ end }}
|
||||
{{ if .doi }} | <a href="https://doi.org/{{ .doi }}" target="_blank" rel="noopener">{{ .doi }}</a>
|
||||
{{ else if .url }} | <a href="{{ . }}" target="_blank" rel="noopener">{{ .url }}</a> {{ end }}
|
||||
</li>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</ul>
|
||||
</section>
|
||||
{{ end }}
|
||||
|
||||
<div class="time" style="display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap;">
|
||||
<div class="footer-links" style="text-align: left;">
|
||||
Help improve this page!<br/>
|
||||
Submit an
|
||||
<a href="https://gitmoss.fyi/fmtools/content/issues/new?template=.gitea%2fissue_template%2ffix_tool.md&title=[FIX]%20{{ .Title | urlquery }}" target="_blank">issue</a> or
|
||||
<a href="https://gitmoss.fyi/fmtools/content/fork" target="_blank">pull request</a>.
|
||||
</div>
|
||||
{{ if .Date }}
|
||||
<div class="footer-date" style="text-align: right;">
|
||||
{{ $dateMachine := .Date | time.Format "2006-01-02T15:04:05-07:00" }}
|
||||
{{ $dateHuman := .Date | time.Format "2 January 2006" }}
|
||||
Updated <time datetime="{{ $dateMachine }}">{{ $dateHuman }}</time>
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
|
||||
|
||||
{{ end }}
|
120
layouts/tools/section.html
Normal file
120
layouts/tools/section.html
Normal file
@@ -0,0 +1,120 @@
|
||||
{{ define "main" }}
|
||||
|
||||
{{ $allPages := slice }}
|
||||
{{ $sections := slice }}
|
||||
{{ range .Pages }}
|
||||
{{ if .IsSection }}
|
||||
{{ $sections = $sections | append . }}
|
||||
{{ range .Pages }}
|
||||
{{ $allPages = $allPages | append . }}
|
||||
{{ end }}
|
||||
{{ else }}
|
||||
{{ $allPages = $allPages | append . }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ $sortedSections := sort $sections "LinkTitle" }}
|
||||
{{ $sortedPages := sort $allPages "LinkTitle" }}
|
||||
|
||||
<h1>{{ .Title }}</h1>
|
||||
{{ .Content }}
|
||||
<section id="tools-list">
|
||||
{{ if gt (len $sortedSections) 0 }}
|
||||
<!-- <h2>Sections</h2> -->
|
||||
<!-- <p>This list shows all sections, sorted alphabetically.</p> -->
|
||||
<div id="link-list" style="align-items: left; justify-content: left;">
|
||||
<ul>
|
||||
{{ range $sortedSections }}
|
||||
<li><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
{{ if eq (len $sortedPages) 0 }}
|
||||
<div style="display: flex; align-items: center; gap: 8px; margin: 1rem 0;">
|
||||
<span style="display: inline-block; width: 12px; height: 12px; border-radius: 50%; background: rgb(225, 82, 225);"></span>
|
||||
<span style="color: rgb(225, 82, 225); font-size: 1rem;">No Tools Found</span>
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
<table id="taxonomy-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Tool</th>
|
||||
<th>Applications</th>
|
||||
<th>Licenses</th>
|
||||
<!-- <th>Developers</th> -->
|
||||
<!-- <th>Description</th> -->
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{ range $sortedPages }}
|
||||
<tr onclick="window.location='{{ .RelPermalink }}'" style="cursor:pointer;">
|
||||
<td>
|
||||
{{ if .Params.maintenance }}
|
||||
{{ if in .Params.maintenance "Not Maintained" }}
|
||||
<div style="display: flex; align-items: center; gap: 8px;">
|
||||
<a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a>
|
||||
<span style="display: inline-block; width: 12px; height: 12px; border-radius: 50%; background: rgb(128, 28, 28);"></span>
|
||||
</div>
|
||||
{{ else }}
|
||||
<a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a>
|
||||
{{ end }}
|
||||
{{ else }}
|
||||
<a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a>
|
||||
{{ end }}
|
||||
</td>
|
||||
<td>
|
||||
{{ $sep := "" }}
|
||||
{{ range $key, $vals := .Params }}
|
||||
{{ if (in (slice "applications") $key) }}
|
||||
{{ $sep }}
|
||||
{{ range $i, $val := $vals }}
|
||||
{{ partial "term-link.html" (dict "name" $val "taxonomy" $key) }}
|
||||
{{ end }}
|
||||
{{ $sep = "; " }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</td>
|
||||
<td>
|
||||
{{ $sep := "" }}
|
||||
{{ range $key, $vals := .Params }}
|
||||
{{ if (in (slice "licenses") $key) }}
|
||||
{{ $sep }}
|
||||
{{ range $i, $val := $vals }}
|
||||
{{ partial "term-link.html" (dict "name" $val "taxonomy" $key) }}
|
||||
{{ end }}
|
||||
{{ $sep = "; " }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</td>
|
||||
<!-- <td>
|
||||
{{ $sep := "" }}
|
||||
{{ range $key, $vals := .Params }}
|
||||
{{ if (in (slice "developers") $key) }}
|
||||
{{ $sep }}
|
||||
{{ range $i, $val := $vals }}
|
||||
{{ partial "term-link.html" (dict "name" $val "taxonomy" $key) }}
|
||||
{{ end }}
|
||||
{{ $sep = "; " }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</td> -->
|
||||
<!-- <td class="description">{{ .Content | plainify | truncate 40 }}</td> -->
|
||||
</tr>
|
||||
{{ end }}
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div style="display: flex; align-items: center; gap: 8px; margin: 1rem 0 0 0;">
|
||||
<span style="display: inline-block; width: 12px; height: 12px; border-radius: 50%; background: rgb(128, 28, 28);"></span>
|
||||
<span style="color: rgb(128, 28, 28); font-size: 1rem;">Red dot indicates tool has not been updated or maintained recently</span>
|
||||
</div>
|
||||
<!-- <div style="display: flex; align-items: center; gap: 8px; margin: 0;">
|
||||
<span style="display: inline-block; width: 12px; height: 12px; border-radius: 50%; background: rgb(143, 96, 15);"></span>
|
||||
<span style="color: rgb(150, 150, 150); font-size: 1rem;">Orange dot indicates closed-source or restrictively licensed tool</span>
|
||||
</div> -->
|
||||
|
||||
{{ end }}
|
||||
|
1609
static/css/brands.css
Normal file
1609
static/css/brands.css
Normal file
File diff suppressed because it is too large
Load Diff
6243
static/css/fontawesome.css
vendored
Normal file
6243
static/css/fontawesome.css
vendored
Normal file
File diff suppressed because it is too large
Load Diff
19
static/css/solid.css
Normal file
19
static/css/solid.css
Normal file
@@ -0,0 +1,19 @@
|
||||
/*!
|
||||
* Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||
* Copyright 2024 Fonticons, Inc.
|
||||
*/
|
||||
:root, :host {
|
||||
--fa-style-family-classic: 'Font Awesome 6 Free';
|
||||
--fa-font-solid: normal 900 1em/1 'Font Awesome 6 Free'; }
|
||||
|
||||
@font-face {
|
||||
font-family: 'Font Awesome 6 Free';
|
||||
font-style: normal;
|
||||
font-weight: 900;
|
||||
font-display: block;
|
||||
src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); }
|
||||
|
||||
.fas,
|
||||
.fa-solid {
|
||||
font-weight: 900; }
|
93
static/fonts/OFL.txt
Normal file
93
static/fonts/OFL.txt
Normal file
@@ -0,0 +1,93 @@
|
||||
Copyright 2010-2020 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe in the United States and/or other countries.
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
https://openfontlicense.org
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
79
static/fonts/README.txt
Normal file
79
static/fonts/README.txt
Normal file
@@ -0,0 +1,79 @@
|
||||
Source Sans 3 Variable Font
|
||||
===========================
|
||||
|
||||
This download contains Source Sans 3 as both variable fonts and static fonts.
|
||||
|
||||
Source Sans 3 is a variable font with this axis:
|
||||
wght
|
||||
|
||||
This means all the styles are contained in these files:
|
||||
SourceSans3-VariableFont_wght.ttf
|
||||
SourceSans3-Italic-VariableFont_wght.ttf
|
||||
|
||||
If your app fully supports variable fonts, you can now pick intermediate styles
|
||||
that aren’t available as static fonts. Not all apps support variable fonts, and
|
||||
in those cases you can use the static font files for Source Sans 3:
|
||||
static/SourceSans3-ExtraLight.ttf
|
||||
static/SourceSans3-Light.ttf
|
||||
static/SourceSans3-Regular.ttf
|
||||
static/SourceSans3-Medium.ttf
|
||||
static/SourceSans3-SemiBold.ttf
|
||||
static/SourceSans3-Bold.ttf
|
||||
static/SourceSans3-ExtraBold.ttf
|
||||
static/SourceSans3-Black.ttf
|
||||
static/SourceSans3-ExtraLightItalic.ttf
|
||||
static/SourceSans3-LightItalic.ttf
|
||||
static/SourceSans3-Italic.ttf
|
||||
static/SourceSans3-MediumItalic.ttf
|
||||
static/SourceSans3-SemiBoldItalic.ttf
|
||||
static/SourceSans3-BoldItalic.ttf
|
||||
static/SourceSans3-ExtraBoldItalic.ttf
|
||||
static/SourceSans3-BlackItalic.ttf
|
||||
|
||||
Get started
|
||||
-----------
|
||||
|
||||
1. Install the font files you want to use
|
||||
|
||||
2. Use your app's font picker to view the font family and all the
|
||||
available styles
|
||||
|
||||
Learn more about variable fonts
|
||||
-------------------------------
|
||||
|
||||
https://developers.google.com/web/fundamentals/design-and-ux/typography/variable-fonts
|
||||
https://variablefonts.typenetwork.com
|
||||
https://medium.com/variable-fonts
|
||||
|
||||
In desktop apps
|
||||
|
||||
https://theblog.adobe.com/can-variable-fonts-illustrator-cc
|
||||
https://helpx.adobe.com/nz/photoshop/using/fonts.html#variable_fonts
|
||||
|
||||
Online
|
||||
|
||||
https://developers.google.com/fonts/docs/getting_started
|
||||
https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Fonts/Variable_Fonts_Guide
|
||||
https://developer.microsoft.com/en-us/microsoft-edge/testdrive/demos/variable-fonts
|
||||
|
||||
Installing fonts
|
||||
|
||||
MacOS: https://support.apple.com/en-us/HT201749
|
||||
Linux: https://www.google.com/search?q=how+to+install+a+font+on+gnu%2Blinux
|
||||
Windows: https://support.microsoft.com/en-us/help/314960/how-to-install-or-remove-a-font-in-windows
|
||||
|
||||
Android Apps
|
||||
|
||||
https://developers.google.com/fonts/docs/android
|
||||
https://developer.android.com/guide/topics/ui/look-and-feel/downloadable-fonts
|
||||
|
||||
License
|
||||
-------
|
||||
Please read the full license text (OFL.txt) to understand the permissions,
|
||||
restrictions and requirements for usage, redistribution, and modification.
|
||||
|
||||
You can use them in your products & projects – print or digital,
|
||||
commercial or otherwise.
|
||||
|
||||
This isn't legal advice, please consider consulting a lawyer and see the full
|
||||
license for all details.
|
BIN
static/fonts/SourceSans3-Italic-VariableFont_wght.ttf
Normal file
BIN
static/fonts/SourceSans3-Italic-VariableFont_wght.ttf
Normal file
Binary file not shown.
BIN
static/fonts/SourceSans3-Italic-VariableFont_wght.woff2
Normal file
BIN
static/fonts/SourceSans3-Italic-VariableFont_wght.woff2
Normal file
Binary file not shown.
BIN
static/fonts/SourceSans3-VariableFont_wght.ttf
Normal file
BIN
static/fonts/SourceSans3-VariableFont_wght.ttf
Normal file
Binary file not shown.
BIN
static/fonts/SourceSans3-VariableFont_wght.woff2
Normal file
BIN
static/fonts/SourceSans3-VariableFont_wght.woff2
Normal file
Binary file not shown.
BIN
static/fonts/static/SourceCodePro-Medium.ttf
Normal file
BIN
static/fonts/static/SourceCodePro-Medium.ttf
Normal file
Binary file not shown.
BIN
static/fonts/static/SourceCodePro-Medium.woff2
Normal file
BIN
static/fonts/static/SourceCodePro-Medium.woff2
Normal file
Binary file not shown.
BIN
static/fonts/static/SourceCodePro-MediumItalic.ttf
Normal file
BIN
static/fonts/static/SourceCodePro-MediumItalic.ttf
Normal file
Binary file not shown.
BIN
static/fonts/static/SourceCodePro-MediumItalic.woff2
Normal file
BIN
static/fonts/static/SourceCodePro-MediumItalic.woff2
Normal file
Binary file not shown.
BIN
static/fonts/static/SourceSans3-Black.ttf
Normal file
BIN
static/fonts/static/SourceSans3-Black.ttf
Normal file
Binary file not shown.
BIN
static/fonts/static/SourceSans3-Black.woff2
Normal file
BIN
static/fonts/static/SourceSans3-Black.woff2
Normal file
Binary file not shown.
BIN
static/fonts/static/SourceSans3-BlackItalic.ttf
Normal file
BIN
static/fonts/static/SourceSans3-BlackItalic.ttf
Normal file
Binary file not shown.
BIN
static/fonts/static/SourceSans3-BlackItalic.woff2
Normal file
BIN
static/fonts/static/SourceSans3-BlackItalic.woff2
Normal file
Binary file not shown.
BIN
static/fonts/static/SourceSans3-Bold.ttf
Normal file
BIN
static/fonts/static/SourceSans3-Bold.ttf
Normal file
Binary file not shown.
BIN
static/fonts/static/SourceSans3-Bold.woff2
Normal file
BIN
static/fonts/static/SourceSans3-Bold.woff2
Normal file
Binary file not shown.
BIN
static/fonts/static/SourceSans3-BoldItalic.ttf
Normal file
BIN
static/fonts/static/SourceSans3-BoldItalic.ttf
Normal file
Binary file not shown.
BIN
static/fonts/static/SourceSans3-BoldItalic.woff2
Normal file
BIN
static/fonts/static/SourceSans3-BoldItalic.woff2
Normal file
Binary file not shown.
BIN
static/fonts/static/SourceSans3-ExtraBold.ttf
Normal file
BIN
static/fonts/static/SourceSans3-ExtraBold.ttf
Normal file
Binary file not shown.
BIN
static/fonts/static/SourceSans3-ExtraBold.woff2
Normal file
BIN
static/fonts/static/SourceSans3-ExtraBold.woff2
Normal file
Binary file not shown.
BIN
static/fonts/static/SourceSans3-ExtraBoldItalic.ttf
Normal file
BIN
static/fonts/static/SourceSans3-ExtraBoldItalic.ttf
Normal file
Binary file not shown.
BIN
static/fonts/static/SourceSans3-ExtraBoldItalic.woff2
Normal file
BIN
static/fonts/static/SourceSans3-ExtraBoldItalic.woff2
Normal file
Binary file not shown.
BIN
static/fonts/static/SourceSans3-ExtraLight.ttf
Normal file
BIN
static/fonts/static/SourceSans3-ExtraLight.ttf
Normal file
Binary file not shown.
BIN
static/fonts/static/SourceSans3-ExtraLight.woff2
Normal file
BIN
static/fonts/static/SourceSans3-ExtraLight.woff2
Normal file
Binary file not shown.
BIN
static/fonts/static/SourceSans3-ExtraLightItalic.ttf
Normal file
BIN
static/fonts/static/SourceSans3-ExtraLightItalic.ttf
Normal file
Binary file not shown.
BIN
static/fonts/static/SourceSans3-ExtraLightItalic.woff2
Normal file
BIN
static/fonts/static/SourceSans3-ExtraLightItalic.woff2
Normal file
Binary file not shown.
BIN
static/fonts/static/SourceSans3-Italic.ttf
Normal file
BIN
static/fonts/static/SourceSans3-Italic.ttf
Normal file
Binary file not shown.
BIN
static/fonts/static/SourceSans3-Italic.woff2
Normal file
BIN
static/fonts/static/SourceSans3-Italic.woff2
Normal file
Binary file not shown.
BIN
static/fonts/static/SourceSans3-Light.ttf
Normal file
BIN
static/fonts/static/SourceSans3-Light.ttf
Normal file
Binary file not shown.
BIN
static/fonts/static/SourceSans3-Light.woff2
Normal file
BIN
static/fonts/static/SourceSans3-Light.woff2
Normal file
Binary file not shown.
BIN
static/fonts/static/SourceSans3-LightItalic.ttf
Normal file
BIN
static/fonts/static/SourceSans3-LightItalic.ttf
Normal file
Binary file not shown.
BIN
static/fonts/static/SourceSans3-LightItalic.woff2
Normal file
BIN
static/fonts/static/SourceSans3-LightItalic.woff2
Normal file
Binary file not shown.
BIN
static/fonts/static/SourceSans3-Medium.ttf
Normal file
BIN
static/fonts/static/SourceSans3-Medium.ttf
Normal file
Binary file not shown.
BIN
static/fonts/static/SourceSans3-Medium.woff2
Normal file
BIN
static/fonts/static/SourceSans3-Medium.woff2
Normal file
Binary file not shown.
BIN
static/fonts/static/SourceSans3-MediumItalic.ttf
Normal file
BIN
static/fonts/static/SourceSans3-MediumItalic.ttf
Normal file
Binary file not shown.
BIN
static/fonts/static/SourceSans3-MediumItalic.woff2
Normal file
BIN
static/fonts/static/SourceSans3-MediumItalic.woff2
Normal file
Binary file not shown.
BIN
static/fonts/static/SourceSans3-Regular.ttf
Normal file
BIN
static/fonts/static/SourceSans3-Regular.ttf
Normal file
Binary file not shown.
BIN
static/fonts/static/SourceSans3-Regular.woff2
Normal file
BIN
static/fonts/static/SourceSans3-Regular.woff2
Normal file
Binary file not shown.
BIN
static/fonts/static/SourceSans3-SemiBold.ttf
Normal file
BIN
static/fonts/static/SourceSans3-SemiBold.ttf
Normal file
Binary file not shown.
BIN
static/fonts/static/SourceSans3-SemiBold.woff2
Normal file
BIN
static/fonts/static/SourceSans3-SemiBold.woff2
Normal file
Binary file not shown.
BIN
static/fonts/static/SourceSans3-SemiBoldItalic.ttf
Normal file
BIN
static/fonts/static/SourceSans3-SemiBoldItalic.ttf
Normal file
Binary file not shown.
BIN
static/fonts/static/SourceSans3-SemiBoldItalic.woff2
Normal file
BIN
static/fonts/static/SourceSans3-SemiBoldItalic.woff2
Normal file
Binary file not shown.
8
static/fonts/static/woff2.sh
Executable file
8
static/fonts/static/woff2.sh
Executable file
@@ -0,0 +1,8 @@
|
||||
#!/bin/bash
|
||||
# Compress all font files in the current directory using woff2_compress
|
||||
|
||||
for font in *.ttf *.otf; do
|
||||
if [[ -f "$font" ]]; then
|
||||
woff2_compress "$font"
|
||||
fi
|
||||
done
|
165
static/webfonts/LICENSE.txt
Normal file
165
static/webfonts/LICENSE.txt
Normal file
@@ -0,0 +1,165 @@
|
||||
Fonticons, Inc. (https://fontawesome.com)
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Font Awesome Free License
|
||||
|
||||
Font Awesome Free is free, open source, and GPL friendly. You can use it for
|
||||
commercial projects, open source projects, or really almost whatever you want.
|
||||
Full Font Awesome Free license: https://fontawesome.com/license/free.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
# Icons: CC BY 4.0 License (https://creativecommons.org/licenses/by/4.0/)
|
||||
|
||||
The Font Awesome Free download is licensed under a Creative Commons
|
||||
Attribution 4.0 International License and applies to all icons packaged
|
||||
as SVG and JS file types.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
# Fonts: SIL OFL 1.1 License
|
||||
|
||||
In the Font Awesome Free download, the SIL OFL license applies to all icons
|
||||
packaged as web and desktop font files.
|
||||
|
||||
Copyright (c) 2024 Fonticons, Inc. (https://fontawesome.com)
|
||||
with Reserved Font Name: "Font Awesome".
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
http://scripts.sil.org/OFL
|
||||
|
||||
SIL OPEN FONT LICENSE
|
||||
Version 1.1 - 26 February 2007
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting — in part or in whole — any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
# Code: MIT License (https://opensource.org/licenses/MIT)
|
||||
|
||||
In the Font Awesome Free download, the MIT license applies to all non-font and
|
||||
non-icon files.
|
||||
|
||||
Copyright 2024 Fonticons, Inc.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in the
|
||||
Software without restriction, including without limitation the rights to use, copy,
|
||||
modify, merge, publish, distribute, sublicense, and/or sell copies of the Software,
|
||||
and to permit persons to whom the Software is furnished to do so, subject to the
|
||||
following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
|
||||
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
|
||||
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
# Attribution
|
||||
|
||||
Attribution is required by MIT, SIL OFL, and CC BY licenses. Downloaded Font
|
||||
Awesome Free files already contain embedded comments with sufficient
|
||||
attribution, so you shouldn't need to do anything additional when using these
|
||||
files normally.
|
||||
|
||||
We've kept attribution comments terse, so we ask that you do not actively work
|
||||
to remove them from files, especially code. They're a great way for folks to
|
||||
learn about Font Awesome.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
# Brand Icons
|
||||
|
||||
All brand icons are trademarks of their respective owners. The use of these
|
||||
trademarks does not indicate endorsement of the trademark holder by Font
|
||||
Awesome, nor vice versa. **Please do not use brand logos for any purpose except
|
||||
to represent the company, product, or service to which they refer.**
|
BIN
static/webfonts/fa-brands-400.ttf
Normal file
BIN
static/webfonts/fa-brands-400.ttf
Normal file
Binary file not shown.
BIN
static/webfonts/fa-brands-400.woff2
Normal file
BIN
static/webfonts/fa-brands-400.woff2
Normal file
Binary file not shown.
BIN
static/webfonts/fa-regular-400.ttf
Normal file
BIN
static/webfonts/fa-regular-400.ttf
Normal file
Binary file not shown.
BIN
static/webfonts/fa-regular-400.woff2
Normal file
BIN
static/webfonts/fa-regular-400.woff2
Normal file
Binary file not shown.
BIN
static/webfonts/fa-solid-900.ttf
Normal file
BIN
static/webfonts/fa-solid-900.ttf
Normal file
Binary file not shown.
BIN
static/webfonts/fa-solid-900.woff2
Normal file
BIN
static/webfonts/fa-solid-900.woff2
Normal file
Binary file not shown.
BIN
static/webfonts/fa-v4compatibility.ttf
Normal file
BIN
static/webfonts/fa-v4compatibility.ttf
Normal file
Binary file not shown.
BIN
static/webfonts/fa-v4compatibility.woff2
Normal file
BIN
static/webfonts/fa-v4compatibility.woff2
Normal file
Binary file not shown.
Reference in New Issue
Block a user