Apply new card based design

Signed-off-by: Manish Tripathy <manisht@thougtworks.com>
Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: Sunil Mohan Adapa <sunil@medhas.org>
This commit is contained in:
Manish Tripathy 2018-06-11 17:28:00 +05:30 committed by Sunil Mohan Adapa
parent e11fcd8f53
commit 0932a07785
No known key found for this signature in database
GPG Key ID: 43EA1CFF0AA7C5F2
13 changed files with 727 additions and 173 deletions

View File

@ -23,7 +23,7 @@ from plinth.utils import format_lazy
class Menu(object):
"""One menu item."""
def __init__(self, label="", icon="", url="#", order=50):
def __init__(self, name="",short_description="", label="", icon="", url="#", order=50):
"""label is the text that is displayed on the menu.
icon is the icon to be displayed next to the label.
@ -41,6 +41,8 @@ class Menu(object):
use fractional orders.
"""
self.name = name
self.short_description = short_description
self.label = label
self.icon = icon
self.url = url
@ -61,7 +63,7 @@ class Menu(object):
def sorted_items(self):
"""Return menu items in sorted order according to current locale."""
return sorted(self.items, key=lambda x: (x.order, x.label))
return sorted(self.items, key=lambda x: (x.order, x.name.lower()))
def add_urlname(self, name, icon, urlname, short_description="", order=50,
url_args=None, url_kwargs=None):
@ -75,14 +77,14 @@ class Menu(object):
else:
label = name
url = reverse_lazy(urlname, args=url_args, kwargs=url_kwargs)
return self.add_item(label, icon, url, order)
return self.add_item(name, short_description, label, icon, url, order)
def add_item(self, label, icon, url, order=50):
def add_item(self, name, short_description, label, icon, url, order=50):
"""Create a new menu item with given parameters, add it to this menu and
return it.
"""
item = Menu(label=label, icon=icon, url=url, order=order)
item = Menu(name=name, short_description=short_description, label=label, icon=icon, url=url, order=order)
self.items.append(item)
return item

View File

@ -1,4 +1,4 @@
{% extends 'base.html' %}
{% extends 'cards.html' %}
{% comment %}
#
# This file is part of FreedomBox.
@ -18,35 +18,13 @@
#
{% endcomment %}
{% load static %}
{% load i18n %}
{% block submenu %}
{% if submenu %}
<div class="sidebar">
{% include "submenu.html" with menu=submenu %}
</div>
{% endif %}
{% endblock %}
{% block content %}
<h2>{% trans "Services and Applications" %}</h2>
<p>
{% blocktrans trimmed %}
You can install and run various services and applications on
your {{ box_name }}. Click on any app page link on the left to
read a description of the application and choose to install it.
{% endblocktrans %}
</p>
<p>
{% blocktrans trimmed %}
This box can be your photo sharing site, your instant messaging
site, your social networking site, your news site. Remember web
portals? We can be one of those too. Many of the services you
use on the web could soon be on site and under your control!
{% endblocktrans %}
</p>
{% block page_head %}
<style type="text/css">
body {
background-image: url({% static 'theme/img/apps-background.svg' %});
}
</style>
{% endblock %}

View File

@ -77,7 +77,7 @@
<body>
<div id="wrapper">
<!--[if lt IE 7]><p class=chromeframe>Your browser is <em>ancient!</em> <a href="http://mozilla.org/firefox">Upgrade to a modern version of Firefox</a> to experience this site.</p><![endif]-->
<div class="navbar navbar-fixed-top navbar-default" role="navigation">
<div class="navbar navbar-fixed-top navbar-default main-header" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse"
@ -90,7 +90,7 @@
{% block mainmenu_left %}
<a href="{% url 'index' %}" class="navbar-brand"
title="{{ box_name }}">
<img src="{% static 'theme/img/freedombox-logo-32px.png' %}"
<img src="{% static 'theme/img/FreedomBox-logo-32px-white.png' %}"
alt="{{ box_name }}" />
</a>
{% endblock %}
@ -99,18 +99,27 @@
<ul class="nav navbar-nav">
{% if user.is_authenticated and user_is_admin %}
<li>
<a href="{% url 'index' %}" title="{% trans "Home" %}">
{% url 'index' as index_url %}
<a href="{{ index_url }}" title='{% trans " Home" %}'
class="{% if not submenu.url %}
menu_link_active {% else %} menu_link {% endif %}">
{% trans "Home" %}
</a>
</li>
<li>
<a href="{% url 'apps' %}" title="{% trans "Apps" %}">
{% url 'apps' as apps_url %}
<a href="{{ apps_url }}" title='{% trans " Apps" %}'
class="{% if apps_url == submenu.url %}
menu_link_active {% else %} menu_link {% endif %}">
<span class="glyphicon glyphicon-th"></span>
{% trans "Apps" %}
</a>
</li>
<li>
<a href="{% url 'system' %}" title="{% trans "System" %}">
{% url 'system' as system_url %}
<a href="{{ system_url }}" title='{% trans " System" %}'
class="{% if system_url == submenu.url %}
menu_link_active {% else %} menu_link {% endif %}">
<span class="glyphicon glyphicon-cog nav-icon"></span>
{% trans "System" %}
</a>
@ -199,52 +208,27 @@
</div>
</div>
<div id="container-wrapper" class="container">
<div class="row">
{% block content_row %}
<div class="col-md-3">
{% block submenu %}
{% if submenu %}
<div class="sidebar visible-lg-block">
{% include "submenu.html" with menu=submenu %}
</div><!--/.sidebar -->
{% endif %}
{% endblock %}
{% block container %}
<div id="container-wrapper" class="container">
<div class="row">
{% block content_row %}
<div class="col-md-6">
{% block subsubmenu %}
{% if subsubmenu %}
{% show_subsubmenu subsubmenu %}
{% endif %}
{% endblock %}
{% block sidebar %}
{# this sidebar should contain help texts but no menus #}
{% endblock %}
</div><!--/col-->
{% include 'messages.html' %}
<div class="col-md-9">
{% block subsubmenu %}
{% if subsubmenu %}
{% show_subsubmenu subsubmenu %}
{% endif %}
{% endblock %}
{% include 'messages.html' %}
{% block content %}
{# main content goes here #}
{% endblock %}
</div><!--/col-->
<div class="col-md-12">
{% block icons %}
{# icons go here #}
{% endblock %}
</div><!--/col-->
{% endblock %}
</div><!--/row-->
<div class="text-center">
{% block center-info %}
{# this center-info should contain help texts but no menus #}
{% endblock %}
{% block content %}
{# main content goes here #}
{% endblock %}
</div>
{% endblock %}
</div>
</div>
</div><!--/.fluid-container-->
{% endblock %}
<footer>
<hr>

View File

@ -0,0 +1,52 @@
{% extends 'base.html' %}
{% comment %}
#
# This file is part of FreedomBox.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
{% endcomment %}
{% load i18n %}
{% load static %}
{% block container %}
<div class="container">
<div class="row">
<div class="col-md-6 col-md-offset-3">
{% include 'messages.html' %}
</div>
</div>
</div>
<div id="container-wrapper" class="container-fluid">
<div class="row">
<div class="card-list">
{% for item in submenu.sorted_items %}
<div class="card thumbnail">
<a href="{{ item.url }}" class="nav-link">
<div class="card-icon">
<span class="{{ item.icon }} glyphicon"></span>
</div>
<div class="card-title">{{ item.name }}</div>
<div class="card-description">{{ item.short_description}}</div>
</a>
</div>
{% endfor %}
</div>
</div>
</div>
{% endblock %}

View File

@ -21,72 +21,88 @@
{% load i18n %}
{% load static %}
{% block icons %}
{% block page_head %}
<style type="text/css">
body {
background-image: url({% static 'theme/img/freedombox-logo-background.svg' %});
}
</style>
{% endblock %}
<div class="row">
{% if shortcuts %}
{% block container %}
{% for shortcut in shortcuts %}
{% if not shortcut.hidden %}
{% if user.is_authenticated or not shortcut.login_required %}
<div class="col-sm-3">
<ul class="nav nav-pills nav-stacked">
{% if selected_id == shortcut.id %}
<li class="active">
<a href="{{ shortcut.url }}" class="active">
{% else %}
<li>
<a href="{{ shortcut.url }}">
{% endif %}
<center>
<img src="{% static 'theme/icons/' %}{{ shortcut.icon }}.png" style="max-width: 100px; height: 100px" />
<br>
<div class="shortcut-label">
{{ shortcut.label|linebreaks }}
</div>
</center>
</a>
</li>
</ul>
</div>
{% endif %}
<div class="container">
<div class="row">
<div class="col-md-6 col-md-offset-3">
{% include 'messages.html' %}
{% if not shortcuts %}
<h4>
{% url 'apps' as apps_url %}
{% blocktrans trimmed %}
Enable some <a href="{{ apps_url }}">applications</a> to add
shortcuts to this page.
{% endblocktrans %}
</h4>
{% endif %}
{% endfor %}
{% else %}
{% if details %}
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">{{ details_label }}</h3>
</div>
<h4>
{% url 'apps' as apps_url %}
{% blocktrans trimmed %}
Enable some <a href="{{ apps_url }}">applications</a> to add
shortcuts to this page.
{% endblocktrans %}
</h4>
{% for paragraph in details %}
<div class="panel-body">
{{ paragraph|safe }}
</div>
{% endfor %}
<br>
{% endif %}
{% if user.is_authenticated and user_is_admin and configure_url %}
<a class="btn btn-primary btn-sm"
style="margin-left : 10px; margin-bottom : 5px"
href="{{ configure_url }}">
{% trans "Configure &raquo;" %}</a>
{% endif %}
</div>
{% endif %}
</div>
</div>
</div>
<br>
{% if details %}
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">{{ details_label }}</h3>
</div>
{% for paragraph in details %}
<div class="panel-body">
{{ paragraph|safe }}
{% if shortcuts %}
<div id="container-wrapper" class="container-fluid">
<div class="row">
<div class="card-list">
{% for shortcut in shortcuts %}
{% if not shortcut.hidden %}
{% if user.is_authenticated or not shortcut.login_required %}
<div class="card thumbnail">
{% if selected_id == shortcut.id %}
<a href="{{ shortcut.url }}" class="active">
{% else %}
<a href="{{ shortcut.url }}">
{% endif %}
<div class="card-icon">
<img src="{% static 'theme/icons/' %}{{ shortcut.icon }}.png"
style="max-width: 100px; height: 100px; font-size: 80px"/>
</div>
<div class="card-title">
{{ shortcut.name }}
</div>
<div class="card-description">
{{ shortcut.short_description }}
</div>
</a>
</div>
{% endif %}
{% endif %}
{% endfor %}
</div>
{% endfor %}
<br>
{% if user.is_authenticated and user_is_admin and configure_url %}
<a class="btn btn-primary btn-sm"
style="margin-left : 10px; margin-bottom : 5px"
href="{{ configure_url }}">
{% trans "Configure &raquo;" %}</a>
{% endif %}
</div>
</div>
{% endif %}

View File

@ -1,4 +1,4 @@
{% extends 'base.html' %}
{% extends 'cards.html' %}
{% comment %}
#
# This file is part of FreedomBox.
@ -18,30 +18,13 @@
#
{% endcomment %}
{% load static %}
{% load i18n %}
{% block submenu %}
{% if submenu %}
<div class="sidebar">
{% include "submenu.html" with menu=submenu %}
</div>
{% endif %}
{% endblock %}
{% block content %}
<h2>{% trans "System Configuration" %}</h2>
<p>
{% blocktrans trimmed %}
Here you can administrate the underlying system of your {{ box_name }}.
{% endblocktrans %}
</p>
<p>
{% blocktrans trimmed %}
The options affect the {{ box_name }} at its most general level,
so be careful!
{% endblocktrans %}
</p>
{% block page_head %}
<style type="text/css">
body {
background-image: url({% static 'theme/img/system-background.svg' %});
}
</style>
{% endblock %}

View File

@ -38,14 +38,16 @@ def build_menu(size=5):
random.seed()
item_data = []
for index in range(1, size + 1):
item_data.append(['Item' + str(index),
item_data.append(['Name' + str(index),
'ShortDescription' + str(index),
'Item' + str(index),
'Icon' + str(index),
URL_TEMPLATE.format(index, index, index),
random.randint(0, 1000)])
menu = Menu()
for data in item_data:
menu.add_item(data[0], data[1], data[2], data[3])
menu.add_item(data[0], data[1], data[2], data[3], data[4], data[5])
return menu
@ -90,13 +92,17 @@ class MenuTestCase(TestCase):
def test_menu_creation_with_arguments(self):
"""Verify the Menu state with initialization parameters."""
expected_name = 'Name'
expected_short_description = 'ShortDescription'
expected_label = 'Label'
expected_icon = 'Icon'
expected_url = '/aaa/bbb/ccc/'
expected_order = 42
menu = Menu(expected_label, expected_icon, expected_url,
menu = Menu(expected_name, expected_short_description, expected_label, expected_icon, expected_url,
expected_order)
self.assertEqual(expected_name, menu.name)
self.assertEqual(expected_short_description, menu.short_description)
self.assertEqual(expected_label, menu.label)
self.assertEqual(expected_icon, menu.icon)
self.assertEqual(expected_url, menu.url)
@ -105,17 +111,21 @@ class MenuTestCase(TestCase):
def test_get(self):
"""Verify that a menu item can be correctly retrieved."""
expected_name = 'Name2'
expected_short_description = 'ShortDescription2'
expected_label = 'Label2'
expected_icon = 'Icon2'
expected_url = 'index'
reversed_url = reverse(expected_url)
expected_order = 2
menu = Menu()
menu.add_item(expected_label, expected_icon, reversed_url,
menu.add_item(expected_name, expected_short_description, expected_label, expected_icon, reversed_url,
expected_order)
actual_item = menu.get(expected_url)
self.assertIsNotNone(actual_item)
self.assertEqual(expected_name, actual_item.name)
self.assertEqual(expected_short_description, actual_item.short_description)
self.assertEqual(expected_label, actual_item.label)
self.assertEqual(expected_icon, actual_item.icon)
self.assertEqual(reversed_url, actual_item.url)
@ -124,12 +134,14 @@ class MenuTestCase(TestCase):
def test_get_with_item_not_found(self):
"""Verify that a KeyError is raised if a menu item is not found."""
expected_name = 'Name3'
expected_short_description = 'ShortDescription3'
expected_label = 'Label3'
expected_icon = 'Icon3'
expected_url = 'index'
expected_order = 3
menu = Menu()
menu.add_item(expected_label, expected_icon, expected_url,
menu.add_item(expected_name, expected_short_description, expected_label, expected_icon, expected_url,
expected_order)
self.assertRaises(KeyError, menu.get, expected_url)
@ -175,17 +187,21 @@ class MenuTestCase(TestCase):
def test_add_item(self):
"""Verify that a menu item can be correctly added."""
expected_name = 'Name5'
expected_short_description = 'ShortDescription5'
expected_label = 'Label5'
expected_icon = 'Icon5'
expected_url = '/jjj/kkk/lll/'
expected_order = 5
menu = Menu()
actual_item = menu.add_item(expected_label, expected_icon,
actual_item = menu.add_item(expected_name, expected_short_description, expected_label, expected_icon,
expected_url, expected_order)
self.assertEqual(1, len(menu.items))
self.assertIsNotNone(actual_item)
self.assertEqual(actual_item, menu.items[0])
self.assertEqual(expected_name, actual_item.name)
self.assertEqual(expected_short_description, actual_item.short_description)
self.assertEqual(expected_label, actual_item.label)
self.assertEqual(expected_icon, actual_item.icon)
self.assertEqual(expected_url, actual_item.url)

View File

@ -4,10 +4,12 @@
}
body {
padding-top: 70px;
padding-top: 6em;
position: relative;
font-family: LatoRegular, sans-serif;
font-size: 15px;
background-repeat: no-repeat;
background-position: 22.5px 75px;
}
.multiple-checkbox li {
@ -21,7 +23,7 @@ body {
.navbar-brand img {
float: left;
margin-top: -14px;
margin-top: -10px;
padding: 8px;
}
@ -63,6 +65,10 @@ body {
animation: spin 1s linear infinite;
}
.nav-link:hover, .nav-link:visited, .nav-link:link, .nav-link:active {
text-decoration: none;
}
@keyframes spin {
0% {
transform: rotate(0deg);
@ -178,3 +184,99 @@ footer license-info p {
.manual-page {
text-align: right;
}
/* applying styles to header - begin */
.main-header {
background: #4989D4;
box-shadow: 0 4px 6px 0 rgba(0, 0, 0, 0.25);
border: none;
}
.main-header .navbar-nav>li>a {
color: #FFF;
}
.main-header.navbar-default .navbar-nav>li>a:focus,
.main-header.navbar-default .navbar-nav>li>a:hover,
.main-header.navbar-default .navbar-nav>.active>a,
.main-header.navbar-default .navbar-nav>.active>a:hover,
.main-header.navbar-default .navbar-nav>.active>a:focus,
.main-header.navbar-default .navbar-nav>.open>a,
.main-header.navbar-default .navbar-nav>.open>a:hover,
.main-header.navbar-default .navbar-nav>.open>a:focus {
color: #FFF;
background: transparent;
}
.main-header .navbar-nav>li>a .nav-icon {
margin-right: 0px;
}
/* applying styles to header - end */
.card-list {
width: 100%;
max-width: 1500px;
margin: 0 auto;
padding: 0 10px;
display: flex;
flex-wrap: wrap;
justify-content: center;
}
a.menu_link {
text-decoration: none;
}
a.menu_link:hover,a.menu_link:active {
text-decoration: none;
}
a.menu_link_active {
border-bottom: white 3px solid;
}
.card {
text-align: center;
box-shadow: 0 3px 5px 0 rgba(0,0,0,0.08);
transition: box-shadow 0.3s ease-in-out;
width: 16rem;
padding: 0;
margin: 0 10px 20px;
}
.card:hover {
box-shadow: 0 5px 15px 2px rgba(0, 0, 0, 0.2);
}
.card .nav-link {
display: block;
padding: 20px 4px 4px 4px;
}
.card-title, .card-description {
margin: 4px;
color: #333;
}
.card-title {
font-weight: bold;
font-size: 1.75rem
}
.card-description {
font-size: small;
}
.card-icon {
background: radial-gradient(farthest-side at bottom,#eefff0, white);
background-position: 50% 100%;
background-repeat: no-repeat;
background-size: 150% 25%;
}
.card-icon span {
width: 100px;
height: 100px;
font-size: 80px
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 684 B

View File

@ -0,0 +1,127 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="1500"
height="1115"
id="svg14507"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="FreedomBox-logo-white.svg">
<defs
id="defs14509">
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient10958-4"
id="linearGradient14441"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-1834.4685,224.95153)"
x1="2677.0659"
y1="-1001.1581"
x2="2677.0659"
y2="-1126.5048" />
<linearGradient
inkscape:collect="always"
id="linearGradient10958-4">
<stop
style="stop-color:#646464;stop-opacity:1"
offset="0"
id="stop10960-1" />
<stop
style="stop-color:#969696;stop-opacity:1"
offset="1"
id="stop10962-1" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient12651"
id="radialGradient14443"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-7.2244231,7.2244502,-7.2148432,-7.214843,5889.8349,216.70132)"
cx="245.80219"
cy="466.2821"
fx="245.80219"
fy="466.2821"
r="34.49239" />
<linearGradient
id="linearGradient12651">
<stop
id="stop12653"
offset="0"
style="stop-color:#61a6ed;stop-opacity:1" />
<stop
id="stop12657"
offset="1"
style="stop-color:#257edb;stop-opacity:1" />
</linearGradient>
<linearGradient
id="linearGradient13380">
<stop
style="stop-color:#868686;stop-opacity:1"
offset="0"
id="stop13382" />
<stop
style="stop-color:#4d4d4d;stop-opacity:1"
offset="1"
id="stop13384" />
</linearGradient>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.29166667"
inkscape:cx="1022.6857"
inkscape:cy="357.34281"
inkscape:document-units="px"
inkscape:current-layer="g13600"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1440"
inkscape:window-height="805"
inkscape:window-x="0"
inkscape:window-y="1"
inkscape:window-maximized="1" />
<metadata
id="metadata14512">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(1170,216.56643)">
<g
id="g13600"
transform="translate(-2672.219,1449.2669)">
<path
inkscape:connector-curvature="0"
id="path13366"
d="m 2040.3438,-1422.0805 c -12.2944,0.3444 -23.1688,4.1084 -30.1875,12.1562 -21.9405,25.1615 2.2109,48.5609 10.5937,80.375 11.1932,42.4518 -1.5363,87.6244 32.4375,117.3438 11.7012,10.2333 25.8307,12.9293 39.4063,14.1875 -17.8481,21.0296 -28.6094,50.1918 -22.75,80.1562 10.2556,52.4474 62.0982,87.3643 113.5,78.5938 29.3208,-5.0046 52.9132,-22.9697 65.75,-47.5 0.4673,-0.8094 1.5618,-0.8131 2.0312,0 12.8381,24.5246 36.4336,42.4961 65.75,47.5 51.4018,8.7705 103.0255,-26.1464 113.2813,-78.5938 5.8592,-29.9644 -4.6832,-59.1266 -22.5313,-80.1562 13.5756,-1.2582 27.4862,-3.9542 39.1875,-14.1875 33.9738,-29.7194 21.2443,-74.892 32.4375,-117.3438 8.3828,-31.8141 32.5029,-55.2135 10.5625,-80.375 -7.0187,-8.0478 -17.6432,-11.8117 -29.9375,-12.1562 -27.0502,-0.7631 -55.2287,10.0899 -83.7812,23.625 -28.5526,13.5351 -60.0552,36.7754 -79.875,61.6562 l 73.1562,42.5 -115.7187,67.1875 -10.125,127.4688 -2.625,-133.3438 -13.6875,-7.9375 -10.0625,126.3125 -2.625,-133.6875 -13.7188,-7.9687 -10.0312,126.7188 -2.6875,-134.0938 -13.625,-7.9062 -10.0938,127.0312 -2.6562,-134.4687 -13.5938,-7.875 -10.125,127.4062 -2.6562,-134.8437 70.0625,-40.6875 c -20.0559,-25.7166 -52.7714,-49.9356 -81.2813,-63.4688 -28.5099,-13.5332 -56.2117,-24.2288 -83.7812,-23.625 z"
style="fill:#ffffff;fill-opacity:1;stroke:none"
sodipodi:nodetypes="cccccsccccsccccczcccccccccccccccccczc" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.8 KiB

View File

@ -0,0 +1,160 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="111.50169mm"
height="111.5124mm"
viewBox="0 0 395.08471 395.12267"
id="svg2"
version="1.1"
inkscape:version="0.92.3 (2405546, 2018-03-11)"
sodipodi:docname="apps-background.svg">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.49497475"
inkscape:cx="-401.04489"
inkscape:cy="-100.15367"
inkscape:document-units="px"
inkscape:current-layer="g3807"
showgrid="false"
inkscape:snap-page="false"
showguides="true"
inkscape:window-width="1509"
inkscape:window-height="1010"
inkscape:window-x="92"
inkscape:window-y="33"
inkscape:window-maximized="0"
inkscape:guide-bbox="true"
inkscape:measure-start="166.17,406.586"
inkscape:measure-end="115.662,389.414"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-48.218843,-45.219296)">
<g
id="g3807"
transform="translate(1.6503903e-6,-359.08813)">
<g
id="g5380"
style="fill:#000000;fill-opacity:0.03137255">
<g
id="g3777"
style="fill:#000000;fill-opacity:0.03137255">
<rect
style="fill:#000000;fill-opacity:0.03137255;fill-rule:evenodd;stroke:none;stroke-width:1.11995912px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect20"
width="112.5"
height="112.5"
x="48.218842"
y="404.30743"
ry="30.226379" />
<rect
ry="30.226379"
y="404.30743"
x="189.5112"
height="112.5"
width="112.5"
id="rect67"
style="fill:#000000;fill-opacity:0.03137255;fill-rule:evenodd;stroke:none;stroke-width:1.11995912px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
style="fill:#000000;fill-opacity:0.03137255;fill-rule:evenodd;stroke:none;stroke-width:1.11995912px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect69"
width="112.5"
height="112.5"
x="330.80356"
y="404.30743"
ry="30.226379" />
</g>
<g
id="g3785"
transform="translate(-5.5273489e-7,141.10568)"
style="fill:#000000;fill-opacity:0.03137255">
<rect
ry="30.226379"
y="404.30743"
x="48.218842"
height="112.5"
width="112.5"
id="rect3779"
style="fill:#000000;fill-opacity:0.03137255;fill-rule:evenodd;stroke:none;stroke-width:1.11995912px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
style="fill:#000000;fill-opacity:0.03137255;fill-rule:evenodd;stroke:none;stroke-width:1.11995912px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect3781"
width="112.5"
height="112.5"
x="189.5112"
y="404.30743"
ry="30.226379" />
<rect
ry="30.226379"
y="404.30743"
x="330.80356"
height="112.5"
width="112.5"
id="rect3783"
style="fill:#000000;fill-opacity:0.03137255;fill-rule:evenodd;stroke:none;stroke-width:1.11995912px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
<g
transform="translate(-5.5273489e-7,282.62267)"
id="g3793"
style="fill:#000000;fill-opacity:0.03137255">
<rect
style="fill:#000000;fill-opacity:0.03137255;fill-rule:evenodd;stroke:none;stroke-width:1.11995912px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect3787"
width="112.5"
height="112.5"
x="48.218842"
y="404.30743"
ry="30.226379" />
<rect
ry="30.226379"
y="404.30743"
x="189.5112"
height="112.5"
width="112.5"
id="rect3789"
style="fill:#000000;fill-opacity:0.03137255;fill-rule:evenodd;stroke:none;stroke-width:1.11995912px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
style="fill:#000000;fill-opacity:0.03137255;fill-rule:evenodd;stroke:none;stroke-width:1.11995912px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect3791"
width="112.5"
height="112.5"
x="330.80356"
y="404.30743"
ry="30.226379" />
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.6 KiB

View File

@ -0,0 +1,72 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="111.48425mm"
height="86.076721mm"
viewBox="0 0 395.02288 304.99626"
id="svg2"
version="1.1"
inkscape:version="0.92.3 (2405546, 2018-03-11)"
sodipodi:docname="freedombox-logo-background.svg">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.7"
inkscape:cx="253.51181"
inkscape:cy="-88.105928"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:snap-page="false"
showguides="true"
inkscape:window-width="1509"
inkscape:window-height="1010"
inkscape:window-x="1911"
inkscape:window-y="108"
inkscape:window-maximized="0"
inkscape:guide-bbox="true"
inkscape:measure-start="166.17,406.586"
inkscape:measure-end="115.662,389.414"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-48.207506,-45.194866)">
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:0.03137255;stroke:none;stroke-width:0.79384387"
d="m 81.328607,45.19699 c -0.682706,-0.008 -1.363109,0.008 -2.034146,0.02461 -9.759911,0.273399 -18.392412,3.261428 -23.964239,9.650126 -17.417333,19.974303 1.755187,38.549772 8.409817,63.805204 8.885659,33.7001 -1.219581,69.56009 25.750316,93.15265 9.288925,8.12364 20.505545,10.26385 31.282455,11.26267 -14.16868,16.69421 -22.711402,39.84445 -18.05995,63.63151 7.37807,37.73179 41.86685,64.03994 78.64008,63.45789 1.26809,-0.0198 2.548,-0.089 3.82046,-0.17361 2.54482,-0.16925 5.09036,-0.45789 7.64074,-0.89308 21.82134,-3.72455 39.64631,-16.48369 50.18578,-34.11051 0.35136,-0.58753 0.68207,-1.18791 1.01715,-1.78615 0.33501,-0.59817 0.67382,-1.20236 0.99231,-1.81092 0.37089,-0.64254 1.23982,-0.64548 1.61246,0 0.31848,0.6084 0.6573,1.21284 0.9923,1.81092 7.70592,13.75588 19.74075,24.73331 34.65621,31.05914 0.64856,0.27507 1.30063,0.53664 1.95984,0.79385 4.61437,1.80083 9.49596,3.17474 14.58688,4.04367 3.82546,0.65271 7.65972,1.00652 11.46112,1.06669 0.63357,0.0103 1.2534,0.008 1.88538,0 1.26404,-0.0119 2.53927,-0.0492 3.7956,-0.12399 24.49787,-1.45091 47.31707,-14.71287 61.02675,-35.05321 0.35152,-0.52148 0.70248,-1.03208 1.04185,-1.56285 0.67882,-1.0616 1.33112,-2.15219 1.95984,-3.24984 1.88625,-3.29294 3.56182,-6.75013 4.96152,-10.34474 1.63302,-4.19371 2.90507,-8.56938 3.79553,-13.12326 4.65129,-23.78706 -3.71765,-46.9373 -17.88625,-63.63151 10.7769,-0.99882 21.81975,-3.13903 31.10875,-11.26267 26.96989,-23.59256 16.86466,-59.45255 25.75031,-93.15265 6.65464,-25.255432 25.80223,-43.830901 8.38498,-63.805204 -5.57175,-6.388698 -14.00594,-9.376647 -23.7657,-9.650126 -0.67914,-0.01905 -1.36787,-0.02858 -2.05908,-0.02461 -20.8411,-0.02223 -42.50954,8.378546 -64.45012,18.77933 -26.28012,12.456919 -45.1817,27.227814 -60.40659,45.29872 -0.51076,0.59379 -0.99374,1.21426 -1.48847,1.81099 -0.50321,0.6142 -1.01794,1.21395 -1.51322,1.83577 l 58.07461,33.73836 -91.86266,53.33639 -8.03768,101.19025 -2.08384,-105.85408 -10.86566,-6.30114 -7.98813,100.27241 -2.08384,-106.12701 -10.89051,-6.32598 -7.96328,100.59494 -2.13338,-106.44954 -10.81612,-6.27629 -8.01291,100.84294 -2.1086,-106.74716 -10.79136,-6.25151 -8.03767,101.14063 -2.1086,-107.04485 55.6186,-32.29952 c -0.50147,-0.64309 -1.00365,-1.27515 -1.51322,-1.91023 -0.18703,-0.22989 -0.38112,-0.46495 -0.57061,-0.69461 -14.74454,-18.182675 -32.94135,-33.086224 -58.14908,-45.670792 -1.43732,-0.735973 -2.87712,-1.437176 -4.29167,-2.108688 -1.04748,-0.49655 -2.12957,-0.99818 -3.24984,-1.513226 -20.09878,-9.360451 -39.71474,-16.679851 -59.215759,-17.216489 -0.671427,-0.02382 -1.348028,-0.04605 -2.009454,-0.04921 z"
id="path13394"
sodipodi:nodetypes="cccccccccccccccscccccccccsccccccccccccccccccccccccccccccccccc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
viewBox="0 -240 421.42371 421.46419"
id="svg5455"
sodipodi:docname="system-background.svg"
width="111.50169mm"
height="111.5124mm"
inkscape:version="0.92.3 (2405546, 2018-03-11)">
<metadata
id="metadata5461">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs5459" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1053"
id="namedview5457"
showgrid="false"
inkscape:zoom="1.1125147"
inkscape:cx="252.43968"
inkscape:cy="139.00361"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg5455"
units="mm" />
<g
transform="matrix(0.3670157,0,0,-0.3670157,-9.5494289,190.93977)"
id="g5453"
style="fill:#000000;fill-opacity:0.03137255">
<path
d="m 600,1174 q 33,0 74,-5 l 38,-152 5,-1 q 49,-14 94,-39 l 5,-2 134,80 q 61,-48 104,-105 l -80,-134 3,-5 q 25,-44 39,-93 l 1,-6 152,-38 q 5,-43 5,-73 0,-34 -5,-74 l -152,-38 -1,-6 q -15,-49 -39,-93 l -3,-5 80,-134 Q 1006,190 950,146 l -134,81 -5,-3 q -44,-25 -94,-39 l -5,-2 -38,-151 q -43,-5 -74,-5 -33,0 -74,5 l -38,151 -5,2 q -49,14 -94,39 l -5,3 -134,-81 q -60,48 -104,105 l 80,134 -3,5 q -25,45 -38,93 l -2,6 -151,38 q -6,42 -6,74 0,33 6,73 l 151,38 2,6 q 13,48 38,93 l 3,5 -80,134 q 47,61 105,105 l 133,-80 5,2 q 45,25 94,39 l 5,1 38,152 q 43,5 74,5 z m 0,-359 q -89,0 -152,-63 -63,-63 -63,-151.5 0,-88.5 63,-151.5 63,-63 152,-63 89,0 152,63 63,63 63,151.5 0,88.5 -63,151.5 -63,63 -152,63 z"
id="path5451"
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:0.03137255" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB