Compare commits
12 commits
f09a1db84a
...
847e516fcf
| Author | SHA1 | Date | |
|---|---|---|---|
| 847e516fcf | |||
| 130801a2d4 | |||
| 37fa852960 | |||
| 7115cb882d | |||
| 43e1477a14 | |||
| dd3e366e17 | |||
| 9a3db42f74 | |||
| 08264e5759 | |||
| 4af811c97c | |||
| 301e3f802b | |||
| b80c878487 | |||
| 2aae067337 |
|
|
@ -2,12 +2,6 @@
|
||||||
|
|
||||||
SHIFT is an independent shell fork focused on convergence. It builds on KDE Plasma Mobile, keeps the upstream phone UI available, and layers desktop-oriented behaviour on top of the same session.
|
SHIFT is an independent shell fork focused on convergence. It builds on KDE Plasma Mobile, keeps the upstream phone UI available, and layers desktop-oriented behaviour on top of the same session.
|
||||||
|
|
||||||
### Desktop demos
|
|
||||||
|
|
||||||

|
|
||||||

|
|
||||||

|
|
||||||
|
|
||||||
SHIFT tracks [plasma-mobile](https://invent.kde.org/plasma/plasma-mobile) as its upstream base.
|
SHIFT tracks [plasma-mobile](https://invent.kde.org/plasma/plasma-mobile) as its upstream base.
|
||||||
The upstream phone UI remains intact; convergence-specific behaviour is added on top.
|
The upstream phone UI remains intact; convergence-specific behaviour is added on top.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,9 +18,6 @@ GameModeControl::GameModeControl(QObject *parent)
|
||||||
, m_iface(new QDBusInterface(s_service, s_path, s_iface, QDBusConnection::sessionBus(), this))
|
, m_iface(new QDBusInterface(s_service, s_path, s_iface, QDBusConnection::sessionBus(), this))
|
||||||
{
|
{
|
||||||
m_available = m_iface->isValid();
|
m_available = m_iface->isValid();
|
||||||
if (!m_available) {
|
|
||||||
qDebug() << "GameModeControl: Feral GameMode not available";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GameModeControl::available() const
|
bool GameModeControl::available() const
|
||||||
|
|
|
||||||
|
|
@ -25,8 +25,6 @@ PowerProfileControl::PowerProfileControl(QObject *parent)
|
||||||
// Subscribe to property changes
|
// Subscribe to property changes
|
||||||
QDBusConnection::systemBus()
|
QDBusConnection::systemBus()
|
||||||
.connect(s_service, s_path, s_propIface, QStringLiteral("PropertiesChanged"), this, SLOT(onPropertiesChanged(QString, QVariantMap, QStringList)));
|
.connect(s_service, s_path, s_propIface, QStringLiteral("PropertiesChanged"), this, SLOT(onPropertiesChanged(QString, QVariantMap, QStringList)));
|
||||||
} else {
|
|
||||||
qDebug() << "PowerProfileControl: power-profiles-daemon not available";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -71,6 +71,8 @@ Item {
|
||||||
MobileShell.NotificationsWidget {
|
MobileShell.NotificationsWidget {
|
||||||
id: notificationWidget
|
id: notificationWidget
|
||||||
readonly property bool isConvergence: ShellSettings.Settings.convergenceModeEnabled
|
readonly property bool isConvergence: ShellSettings.Settings.convergenceModeEnabled
|
||||||
|
Kirigami.Theme.inherit: false
|
||||||
|
Kirigami.Theme.colorSet: Kirigami.Theme.Window
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
anchors.topMargin: root.topMargin + (isConvergence ? Kirigami.Units.gridUnit : 0)
|
anchors.topMargin: root.topMargin + (isConvergence ? Kirigami.Units.gridUnit : 0)
|
||||||
anchors.rightMargin: actionDrawer.mode == MobileShell.ActionDrawer.Portrait ? 0 : (isConvergence ? Kirigami.Units.gridUnit : Math.max(root.width - Kirigami.Units.gridUnit * 25, 0))
|
anchors.rightMargin: actionDrawer.mode == MobileShell.ActionDrawer.Portrait ? 0 : (isConvergence ? Kirigami.Units.gridUnit : Math.max(root.width - Kirigami.Units.gridUnit * 25, 0))
|
||||||
|
|
|
||||||
|
|
@ -29,12 +29,12 @@ Item {
|
||||||
|
|
||||||
required property QS.QuickSettingsModel quickSettingsModel
|
required property QS.QuickSettingsModel quickSettingsModel
|
||||||
|
|
||||||
readonly property real columns: Math.round(Math.min(6, Math.max(ShellSettings.Settings.quickSettingsColumns, width / intendedColumnWidth)))
|
readonly property int columns: Math.max(1, Math.round(Math.min(6, Math.max(ShellSettings.Settings.quickSettingsColumns, width / intendedColumnWidth))))
|
||||||
readonly property real columnWidth: Math.floor(width / columns)
|
readonly property real columnWidth: Math.max(1, Math.floor(width / columns))
|
||||||
readonly property int minimizedColumns: Math.round(Math.min(8, Math.max(5, width / intendedMinimizedColumnWidth)))
|
readonly property int minimizedColumns: Math.max(1, Math.round(Math.min(8, Math.max(5, width / intendedMinimizedColumnWidth))))
|
||||||
readonly property real minimizedColumnWidth: Math.floor(width / minimizedColumns)
|
readonly property real minimizedColumnWidth: Math.max(1, Math.floor(width / minimizedColumns))
|
||||||
|
|
||||||
readonly property real rowHeight: columnWidth * 0.7
|
readonly property real rowHeight: Math.max(1, columnWidth * 0.7)
|
||||||
readonly property real fullHeight: fullView.implicitHeight
|
readonly property real fullHeight: fullView.implicitHeight
|
||||||
|
|
||||||
readonly property real intendedColumnWidth: Kirigami.Units.gridUnit * 7
|
readonly property real intendedColumnWidth: Kirigami.Units.gridUnit * 7
|
||||||
|
|
@ -43,16 +43,17 @@ Item {
|
||||||
|
|
||||||
property real fullViewProgress: 1
|
property real fullViewProgress: 1
|
||||||
|
|
||||||
readonly property int columnCount: Math.floor(width/columnWidth)
|
readonly property int columnCount: Math.max(1, Math.floor(width / columnWidth))
|
||||||
readonly property int rowCount: {
|
readonly property int rowCount: {
|
||||||
let totalRows = Math.ceil(quickSettingsCount / columnCount);
|
let totalRows = Math.ceil(quickSettingsCount / columnCount);
|
||||||
let maxRows = root.isConvergence ? 3 : 5; // more than 5 is just disorienting
|
let maxRows = root.isConvergence ? 3 : 5; // more than 5 is just disorienting
|
||||||
let targetRows = Math.floor(Window.height * (root.isConvergence ? 0.42 : 0.65) / rowHeight);
|
let targetRows = Math.max(1, Math.floor(Window.height * (root.isConvergence ? 0.42 : 0.65) / rowHeight));
|
||||||
return Math.max(1, Math.min(maxRows, Math.min(totalRows, targetRows)));
|
return Math.max(1, Math.min(maxRows, Math.min(totalRows, targetRows)));
|
||||||
}
|
}
|
||||||
|
|
||||||
readonly property int pageSize: rowCount * columnCount
|
readonly property int pageSize: Math.max(1, rowCount * columnCount)
|
||||||
readonly property int quickSettingsCount: quickSettingsModel.count
|
readonly property int quickSettingsCount: Math.max(0, quickSettingsModel.count)
|
||||||
|
readonly property int pageCount: Math.max(1, Math.ceil(quickSettingsCount / pageSize))
|
||||||
|
|
||||||
// Management tiles — promoted to full-width status rows in convergence.
|
// Management tiles — promoted to full-width status rows in convergence.
|
||||||
readonly property var __managementCommands: ({
|
readonly property var __managementCommands: ({
|
||||||
|
|
@ -279,7 +280,7 @@ Item {
|
||||||
Layout.maximumHeight: visible ? rowCount * rowHeight : 0
|
Layout.maximumHeight: visible ? rowCount * rowHeight : 0
|
||||||
|
|
||||||
Repeater {
|
Repeater {
|
||||||
model: Math.ceil(quickSettingsCount / pageSize)
|
model: root.isConvergence ? 0 : root.pageCount
|
||||||
delegate: Flow {
|
delegate: Flow {
|
||||||
id: flow
|
id: flow
|
||||||
spacing: 0
|
spacing: 0
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,6 @@ MobileShell.BaseItem {
|
||||||
required property string text
|
required property string text
|
||||||
required property string status
|
required property string status
|
||||||
required property string icon
|
required property string icon
|
||||||
required property bool enabled
|
|
||||||
required property string settingsCommand
|
required property string settingsCommand
|
||||||
required property var toggleFunction
|
required property var toggleFunction
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,6 @@ Item {
|
||||||
required property string text
|
required property string text
|
||||||
required property string status
|
required property string status
|
||||||
required property string icon
|
required property string icon
|
||||||
required property bool enabled
|
|
||||||
required property var toggleFunction
|
required property var toggleFunction
|
||||||
property bool compact: false
|
property bool compact: false
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -32,12 +32,19 @@ Controls.AbstractButton {
|
||||||
property string type // sink, source, source-output
|
property string type // sink, source, source-output
|
||||||
|
|
||||||
property bool onlyOne: false
|
property bool onlyOne: false
|
||||||
|
property bool useVolumeObject: true
|
||||||
|
|
||||||
// Whether this item is selected
|
// Whether this item is selected
|
||||||
readonly property bool supportsSelection: (baseItem.type == "sink" || baseItem.type == "source")
|
readonly property bool supportsSelection: (baseItem.type == "sink" || baseItem.type == "source")
|
||||||
readonly property bool selected: supportsSelection && (model.PulseObject.hasOwnProperty("default") ? model.PulseObject.default : false)
|
readonly property bool hasPulseObject: model.PulseObject !== null && model.PulseObject !== undefined
|
||||||
|
readonly property bool hasVolumeObject: useVolumeObject && hasPulseObject
|
||||||
|
readonly property bool selected: supportsSelection && hasPulseObject && (model.PulseObject.hasOwnProperty("default") ? model.PulseObject.default : false)
|
||||||
|
|
||||||
onClicked: {
|
onClicked: {
|
||||||
|
if (!hasPulseObject || !model.PulseObject.hasOwnProperty("default")) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Set as the default audio device
|
// Set as the default audio device
|
||||||
model.PulseObject.default = true
|
model.PulseObject.default = true
|
||||||
}
|
}
|
||||||
|
|
@ -175,7 +182,7 @@ Controls.AbstractButton {
|
||||||
visible: model.HasVolume !== false // Devices always have volume but Streams don't necessarily
|
visible: model.HasVolume !== false // Devices always have volume but Streams don't necessarily
|
||||||
enabled: model.VolumeWritable
|
enabled: model.VolumeWritable
|
||||||
muted: model.Muted
|
muted: model.Muted
|
||||||
volumeObject: model.PulseObject
|
volumeObject: baseItem.hasVolumeObject ? model.PulseObject : null
|
||||||
activeFocusOnTab: false // access from delegate
|
activeFocusOnTab: false // access from delegate
|
||||||
|
|
||||||
value: to, model.Volume
|
value: to, model.Volume
|
||||||
|
|
@ -215,7 +222,7 @@ Controls.AbstractButton {
|
||||||
}
|
}
|
||||||
PlasmaComponents.Label {
|
PlasmaComponents.Label {
|
||||||
id: percentText
|
id: percentText
|
||||||
readonly property real value: model.PulseObject.volume > slider.to ? model.PulseObject.volume : slider.value
|
readonly property real value: baseItem.hasVolumeObject && model.PulseObject.volume > slider.to ? model.PulseObject.volume : slider.value
|
||||||
readonly property real displayValue: Math.round(value / PulseAudio.NormalVolume * 100.0)
|
readonly property real displayValue: Math.round(value / PulseAudio.NormalVolume * 100.0)
|
||||||
Layout.alignment: Qt.AlignHCenter
|
Layout.alignment: Qt.AlignHCenter
|
||||||
Layout.minimumWidth: percentMetrics.advanceWidth
|
Layout.minimumWidth: percentMetrics.advanceWidth
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ ListItemBase {
|
||||||
|
|
||||||
property QtObject devicesModel
|
property QtObject devicesModel
|
||||||
readonly property bool isEventStream: Name == "sink-input-by-media-role:event"
|
readonly property bool isEventStream: Name == "sink-input-by-media-role:event"
|
||||||
|
useVolumeObject: !isEventStream
|
||||||
|
|
||||||
label: {
|
label: {
|
||||||
if (isEventStream) {
|
if (isEventStream) {
|
||||||
|
|
|
||||||
|
|
@ -157,11 +157,13 @@ Window {
|
||||||
anchors.leftMargin: Kirigami.Units.smallSpacing * 2
|
anchors.leftMargin: Kirigami.Units.smallSpacing * 2
|
||||||
anchors.rightMargin: Kirigami.Units.smallSpacing
|
anchors.rightMargin: Kirigami.Units.smallSpacing
|
||||||
|
|
||||||
property int volumePercent: PreferredDevice.sink.volume / PulseAudio.NormalVolume * 100.0
|
readonly property bool hasSink: PreferredDevice.sink !== null
|
||||||
|
property int volumePercent: hasSink ? PreferredDevice.sink.volume / PulseAudio.NormalVolume * 100.0 : 0
|
||||||
|
|
||||||
PlasmaComponents.ToolButton {
|
PlasmaComponents.ToolButton {
|
||||||
icon.name: !PreferredDevice.sink || (PreferredDevice.sink.muted ? "audio-volume-muted" : MobileShell.AudioInfo.icon)
|
enabled: containerLayout.hasSink
|
||||||
text: !PreferredDevice.sink || (PreferredDevice.sink.muted ? i18n("Unmute") : i18n("Mute"))
|
icon.name: containerLayout.hasSink ? (PreferredDevice.sink.muted ? "audio-volume-muted" : MobileShell.AudioInfo.icon) : "audio-volume-muted"
|
||||||
|
text: containerLayout.hasSink && PreferredDevice.sink.muted ? i18n("Unmute") : i18n("Mute")
|
||||||
display: Controls.AbstractButton.IconOnly
|
display: Controls.AbstractButton.IconOnly
|
||||||
Layout.alignment: Qt.AlignVCenter
|
Layout.alignment: Qt.AlignVCenter
|
||||||
Layout.preferredWidth: Kirigami.Units.iconSizes.medium
|
Layout.preferredWidth: Kirigami.Units.iconSizes.medium
|
||||||
|
|
@ -169,6 +171,9 @@ Window {
|
||||||
Layout.rightMargin: Kirigami.Units.smallSpacing
|
Layout.rightMargin: Kirigami.Units.smallSpacing
|
||||||
|
|
||||||
onClicked: {
|
onClicked: {
|
||||||
|
if (!containerLayout.hasSink) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
hideTimer.restart();
|
hideTimer.restart();
|
||||||
PreferredDevice.sink.muted = !PreferredDevice.sink.muted;
|
PreferredDevice.sink.muted = !PreferredDevice.sink.muted;
|
||||||
}
|
}
|
||||||
|
|
@ -185,11 +190,15 @@ Window {
|
||||||
to: PulseAudio.NormalVolume
|
to: PulseAudio.NormalVolume
|
||||||
stepSize: to / (to / PulseAudio.NormalVolume * 100.0)
|
stepSize: to / (to / PulseAudio.NormalVolume * 100.0)
|
||||||
|
|
||||||
volumeObject: PreferredDevice.sink
|
enabled: containerLayout.hasSink
|
||||||
muted: PreferredDevice.sink.muted
|
volumeObject: containerLayout.hasSink ? PreferredDevice.sink : null
|
||||||
value: PreferredDevice.sink.volume
|
muted: containerLayout.hasSink ? PreferredDevice.sink.muted : false
|
||||||
|
value: containerLayout.hasSink ? PreferredDevice.sink.volume : PulseAudio.MinimalVolume
|
||||||
|
|
||||||
onMoved: {
|
onMoved: {
|
||||||
|
if (!containerLayout.hasSink) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
PreferredDevice.sink.volume = value;
|
PreferredDevice.sink.volume = value;
|
||||||
PreferredDevice.sink.muted = value === 0;
|
PreferredDevice.sink.muted = value === 0;
|
||||||
}
|
}
|
||||||
|
|
@ -202,7 +211,7 @@ Window {
|
||||||
// Otherwise it might be that the slider is at v10
|
// Otherwise it might be that the slider is at v10
|
||||||
// whereas PA rejected the volume change and is
|
// whereas PA rejected the volume change and is
|
||||||
// still at v15 (e.g.).
|
// still at v15 (e.g.).
|
||||||
value = Qt.binding(() => PreferredDevice.sink.volume);
|
value = Qt.binding(() => containerLayout.hasSink ? PreferredDevice.sink.volume : PulseAudio.MinimalVolume);
|
||||||
hideTimer.restart();
|
hideTimer.restart();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -201,7 +201,7 @@ Window {
|
||||||
}
|
}
|
||||||
PlasmaComponents.Label {
|
PlasmaComponents.Label {
|
||||||
text: i18n("Open audio settings")
|
text: i18n("Open audio settings")
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
Layout.alignment: Qt.AlignVCenter
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -119,7 +119,7 @@ QHash<int, QByteArray> PaginateModel::roleNames() const
|
||||||
|
|
||||||
int PaginateModel::rowsByPageSize(int size) const
|
int PaginateModel::rowsByPageSize(int size) const
|
||||||
{
|
{
|
||||||
return d->m_hasStaticRowCount ? size : !d->m_sourceModel ? 0 : qMin(d->m_sourceModel->rowCount() - d->m_firstItem, size);
|
return d->m_hasStaticRowCount ? qMax(size, 0) : !d->m_sourceModel ? 0 : qMax(qMin(d->m_sourceModel->rowCount() - d->m_firstItem, size), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
int PaginateModel::rowCount(const QModelIndex &parent) const
|
int PaginateModel::rowCount(const QModelIndex &parent) const
|
||||||
|
|
|
||||||
|
|
@ -90,7 +90,6 @@ void RaiseLockscreen::setOverlay()
|
||||||
// Add event filter to listen for when wayland window appears, and try again
|
// Add event filter to listen for when wayland window appears, and try again
|
||||||
m_window->installEventFilter(this);
|
m_window->installEventFilter(this);
|
||||||
setInitialized(false);
|
setInitialized(false);
|
||||||
qCWarning(LOGGING_CATEGORY) << "Unable to set overlay: unable to get wayland window";
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -99,13 +98,11 @@ void RaiseLockscreen::setOverlay()
|
||||||
connect(waylandWindow, &QNativeInterface::Private::QWaylandWindow::surfaceRoleCreated, this, [this, waylandWindow]() {
|
connect(waylandWindow, &QNativeInterface::Private::QWaylandWindow::surfaceRoleCreated, this, [this, waylandWindow]() {
|
||||||
m_implementation->allow(waylandWindow->surface());
|
m_implementation->allow(waylandWindow->surface());
|
||||||
setInitialized(true);
|
setInitialized(true);
|
||||||
qCDebug(LOGGING_CATEGORY) << "Initialized overlay successfully";
|
|
||||||
});
|
});
|
||||||
|
|
||||||
if (waylandWindow->surface()) {
|
if (waylandWindow->surface()) {
|
||||||
m_implementation->allow(waylandWindow->surface());
|
m_implementation->allow(waylandWindow->surface());
|
||||||
setInitialized(true);
|
setInitialized(true);
|
||||||
qCDebug(LOGGING_CATEGORY) << "Initialized overlay successfully";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,11 +6,16 @@
|
||||||
#include <QDBusPendingCallWatcher>
|
#include <QDBusPendingCallWatcher>
|
||||||
#include <QDBusPendingReply>
|
#include <QDBusPendingReply>
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
|
const QString SOLID_POWER_MANAGEMENT_SERVICE = QStringLiteral("org.kde.Solid.PowerManagement");
|
||||||
|
}
|
||||||
|
|
||||||
ScreenBrightnessUtil::ScreenBrightnessUtil(QObject *parent)
|
ScreenBrightnessUtil::ScreenBrightnessUtil(QObject *parent)
|
||||||
: QObject{parent}
|
: QObject{parent}
|
||||||
{
|
{
|
||||||
m_brightnessInterface =
|
m_brightnessInterface =
|
||||||
new org::kde::Solid::PowerManagement::Actions::BrightnessControl(QStringLiteral("org.kde.Solid.PowerManagement"),
|
new org::kde::Solid::PowerManagement::Actions::BrightnessControl(SOLID_POWER_MANAGEMENT_SERVICE,
|
||||||
QStringLiteral("/org/kde/Solid/PowerManagement/Actions/BrightnessControl"),
|
QStringLiteral("/org/kde/Solid/PowerManagement/Actions/BrightnessControl"),
|
||||||
QDBusConnection::sessionBus(),
|
QDBusConnection::sessionBus(),
|
||||||
this);
|
this);
|
||||||
|
|
@ -24,14 +29,14 @@ ScreenBrightnessUtil::ScreenBrightnessUtil(QObject *parent)
|
||||||
this,
|
this,
|
||||||
&ScreenBrightnessUtil::fetchMaxBrightness);
|
&ScreenBrightnessUtil::fetchMaxBrightness);
|
||||||
|
|
||||||
fetchBrightness();
|
if (brightnessAvailable()) {
|
||||||
fetchMaxBrightness();
|
fetchBrightness();
|
||||||
|
fetchMaxBrightness();
|
||||||
|
}
|
||||||
|
|
||||||
// watch for brightness interface
|
// watch for brightness interface
|
||||||
m_brightnessInterfaceWatcher = new QDBusServiceWatcher(QStringLiteral("org.kde.Solid.PowerManagement.Actions.BrightnessControl"),
|
m_brightnessInterfaceWatcher =
|
||||||
QDBusConnection::sessionBus(),
|
new QDBusServiceWatcher(SOLID_POWER_MANAGEMENT_SERVICE, QDBusConnection::sessionBus(), QDBusServiceWatcher::WatchForOwnerChange, this);
|
||||||
QDBusServiceWatcher::WatchForOwnerChange,
|
|
||||||
this);
|
|
||||||
|
|
||||||
connect(m_brightnessInterfaceWatcher, &QDBusServiceWatcher::serviceRegistered, this, [this]() -> void {
|
connect(m_brightnessInterfaceWatcher, &QDBusServiceWatcher::serviceRegistered, this, [this]() -> void {
|
||||||
fetchBrightness();
|
fetchBrightness();
|
||||||
|
|
@ -51,6 +56,10 @@ int ScreenBrightnessUtil::brightness() const
|
||||||
|
|
||||||
void ScreenBrightnessUtil::setBrightness(int brightness)
|
void ScreenBrightnessUtil::setBrightness(int brightness)
|
||||||
{
|
{
|
||||||
|
if (!brightnessAvailable()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
m_brightnessInterface->setBrightness(brightness);
|
m_brightnessInterface->setBrightness(brightness);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -66,6 +75,10 @@ bool ScreenBrightnessUtil::brightnessAvailable() const
|
||||||
|
|
||||||
void ScreenBrightnessUtil::fetchBrightness()
|
void ScreenBrightnessUtil::fetchBrightness()
|
||||||
{
|
{
|
||||||
|
if (!brightnessAvailable()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
QDBusPendingReply<int> reply = m_brightnessInterface->brightness();
|
QDBusPendingReply<int> reply = m_brightnessInterface->brightness();
|
||||||
QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(reply, this);
|
QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(reply, this);
|
||||||
|
|
||||||
|
|
@ -83,6 +96,10 @@ void ScreenBrightnessUtil::fetchBrightness()
|
||||||
|
|
||||||
void ScreenBrightnessUtil::fetchMaxBrightness()
|
void ScreenBrightnessUtil::fetchMaxBrightness()
|
||||||
{
|
{
|
||||||
|
if (!brightnessAvailable()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
QDBusPendingReply<int> reply = m_brightnessInterface->brightnessMax();
|
QDBusPendingReply<int> reply = m_brightnessInterface->brightnessMax();
|
||||||
QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(reply, this);
|
QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(reply, this);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ target_link_libraries(shellsettingsplugin PRIVATE
|
||||||
Qt::DBus
|
Qt::DBus
|
||||||
Qt::Gui
|
Qt::Gui
|
||||||
Qt::Quick
|
Qt::Quick
|
||||||
|
KF6::ConfigCore
|
||||||
Plasma::KWaylandClient
|
Plasma::KWaylandClient
|
||||||
KF6::Service
|
KF6::Service
|
||||||
KF6::Package
|
KF6::Package
|
||||||
|
|
|
||||||
|
|
@ -15,16 +15,163 @@
|
||||||
#include <QDBusMessage>
|
#include <QDBusMessage>
|
||||||
#include <QDBusPendingCall>
|
#include <QDBusPendingCall>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
#include <QDir>
|
||||||
|
#include <QFile>
|
||||||
|
#include <QProcess>
|
||||||
|
#include <QStandardPaths>
|
||||||
|
#include <QtMath>
|
||||||
|
|
||||||
const QString CONFIG_FILE = QStringLiteral("plasmamobilerc");
|
const QString CONFIG_FILE = QStringLiteral("plasmamobilerc");
|
||||||
const QString GENERAL_CONFIG_GROUP = QStringLiteral("General");
|
const QString GENERAL_CONFIG_GROUP = QStringLiteral("General");
|
||||||
|
const QString KDE_GLOBALS_CONFIG_GROUP = QStringLiteral("General");
|
||||||
const QString LOCKSCREEN_CONFIG_GROUP = QStringLiteral("Lockscreen");
|
const QString LOCKSCREEN_CONFIG_GROUP = QStringLiteral("Lockscreen");
|
||||||
const QString QUICKSETTINGS_CONFIG_GROUP = QStringLiteral("QuickSettings");
|
const QString QUICKSETTINGS_CONFIG_GROUP = QStringLiteral("QuickSettings");
|
||||||
|
const QString WALLPAPER_THEME_MANUAL_DARK_KEY = QStringLiteral("wallpaperThemeManualDarkTheme");
|
||||||
|
const QString SHIFT_DARK_COLOR_SCHEME = QStringLiteral("ShiftDark");
|
||||||
|
const QString SHIFT_LIGHT_COLOR_SCHEME = QStringLiteral("ShiftLight");
|
||||||
|
const QString SHIFT_WALLPAPER_DARK_COLOR_SCHEME = QStringLiteral("ShiftWallpaperDark");
|
||||||
|
const QString SHIFT_WALLPAPER_LIGHT_COLOR_SCHEME = QStringLiteral("ShiftWallpaperLight");
|
||||||
|
const QString SHIFT_DARK_PLASMA_THEME = QStringLiteral("shift-dark");
|
||||||
|
const QString SHIFT_LIGHT_PLASMA_THEME = QStringLiteral("shift-light");
|
||||||
|
constexpr qreal MIN_NORMAL_CONTRAST = 4.5;
|
||||||
|
constexpr qreal MIN_INACTIVE_CONTRAST = 3.0;
|
||||||
|
constexpr qreal MIN_LINK_CONTRAST = 3.5;
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
|
QString baseColorSchemeName(bool dark)
|
||||||
|
{
|
||||||
|
return dark ? SHIFT_DARK_COLOR_SCHEME : SHIFT_LIGHT_COLOR_SCHEME;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString wallpaperColorSchemeName(bool dark)
|
||||||
|
{
|
||||||
|
return dark ? SHIFT_WALLPAPER_DARK_COLOR_SCHEME : SHIFT_WALLPAPER_LIGHT_COLOR_SCHEME;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString wallpaperColorSchemeDisplayName(bool dark)
|
||||||
|
{
|
||||||
|
return dark ? QStringLiteral("SHIFT Wallpaper Dark") : QStringLiteral("SHIFT Wallpaper Light");
|
||||||
|
}
|
||||||
|
|
||||||
|
QString rgbString(const QColor &color)
|
||||||
|
{
|
||||||
|
return QStringLiteral("%1,%2,%3").arg(color.red()).arg(color.green()).arg(color.blue());
|
||||||
|
}
|
||||||
|
|
||||||
|
qreal relativeLuminance(const QColor &color)
|
||||||
|
{
|
||||||
|
return 0.2126 * color.redF() + 0.7152 * color.greenF() + 0.0722 * color.blueF();
|
||||||
|
}
|
||||||
|
|
||||||
|
qreal linearizedChannel(qreal channel)
|
||||||
|
{
|
||||||
|
return channel <= 0.04045 ? channel / 12.92 : qPow((channel + 0.055) / 1.055, 2.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
qreal wcagLuminance(const QColor &color)
|
||||||
|
{
|
||||||
|
return 0.2126 * linearizedChannel(color.redF()) + 0.7152 * linearizedChannel(color.greenF()) + 0.0722 * linearizedChannel(color.blueF());
|
||||||
|
}
|
||||||
|
|
||||||
|
qreal contrastRatio(const QColor &left, const QColor &right)
|
||||||
|
{
|
||||||
|
const qreal leftLum = wcagLuminance(left);
|
||||||
|
const qreal rightLum = wcagLuminance(right);
|
||||||
|
const qreal lighter = qMax(leftLum, rightLum);
|
||||||
|
const qreal darker = qMin(leftLum, rightLum);
|
||||||
|
return (lighter + 0.05) / (darker + 0.05);
|
||||||
|
}
|
||||||
|
|
||||||
|
QColor contrastingTextColor(const QColor &color);
|
||||||
|
QColor blendColors(const QColor &base, const QColor &overlay, qreal overlayAmount);
|
||||||
|
|
||||||
|
QColor ensureContrast(const QColor &foreground, const QColor &background, qreal minimumContrast)
|
||||||
|
{
|
||||||
|
if (contrastRatio(foreground, background) >= minimumContrast) {
|
||||||
|
return foreground;
|
||||||
|
}
|
||||||
|
|
||||||
|
const QColor highContrastTarget = contrastingTextColor(background);
|
||||||
|
for (int i = 1; i <= 12; ++i) {
|
||||||
|
const qreal amount = i / 12.0;
|
||||||
|
const QColor candidate = blendColors(foreground, highContrastTarget, amount);
|
||||||
|
if (contrastRatio(candidate, background) >= minimumContrast) {
|
||||||
|
return candidate;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return highContrastTarget;
|
||||||
|
}
|
||||||
|
|
||||||
|
QColor contrastingTextColor(const QColor &color)
|
||||||
|
{
|
||||||
|
const QColor white{Qt::white};
|
||||||
|
const QColor black{Qt::black};
|
||||||
|
return contrastRatio(color, white) >= contrastRatio(color, black) ? white : black;
|
||||||
|
}
|
||||||
|
|
||||||
|
QColor blendColors(const QColor &base, const QColor &overlay, qreal overlayAmount)
|
||||||
|
{
|
||||||
|
const qreal clampedAmount = qBound(0.0, overlayAmount, 1.0);
|
||||||
|
const qreal baseAmount = 1.0 - clampedAmount;
|
||||||
|
return QColor::fromRgbF(base.redF() * baseAmount + overlay.redF() * clampedAmount,
|
||||||
|
base.greenF() * baseAmount + overlay.greenF() * clampedAmount,
|
||||||
|
base.blueF() * baseAmount + overlay.blueF() * clampedAmount,
|
||||||
|
1.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void writeAccentEntries(const KSharedConfig::Ptr &config, const QString &groupName, const QColor &accentColor)
|
||||||
|
{
|
||||||
|
auto group = KConfigGroup{config, groupName};
|
||||||
|
group.writeEntry("DecorationFocus", rgbString(accentColor));
|
||||||
|
group.writeEntry("DecorationHover", rgbString(accentColor));
|
||||||
|
group.writeEntry("ForegroundActive", rgbString(accentColor));
|
||||||
|
}
|
||||||
|
|
||||||
|
void tintBackgroundEntries(const KSharedConfig::Ptr &config, const QString &groupName, const QColor &accentColor, bool dark)
|
||||||
|
{
|
||||||
|
auto group = KConfigGroup{config, groupName};
|
||||||
|
const QColor defaultBase = dark ? QColor(38, 41, 47) : QColor(244, 246, 251);
|
||||||
|
const QColor baseNormal = group.readEntry("BackgroundNormal", defaultBase);
|
||||||
|
const QColor baseAlternate = group.readEntry("BackgroundAlternate", baseNormal);
|
||||||
|
const qreal normalBlend = dark ? 0.22 : 0.12;
|
||||||
|
const qreal alternateBlend = dark ? 0.16 : 0.08;
|
||||||
|
|
||||||
|
group.writeEntry("BackgroundNormal", rgbString(blendColors(baseNormal, accentColor, normalBlend)));
|
||||||
|
group.writeEntry("BackgroundAlternate", rgbString(blendColors(baseAlternate, accentColor, alternateBlend)));
|
||||||
|
}
|
||||||
|
|
||||||
|
void tuneForegroundEntries(const KSharedConfig::Ptr &config, const QString &groupName, const QColor &accentColor, bool dark)
|
||||||
|
{
|
||||||
|
auto group = KConfigGroup{config, groupName};
|
||||||
|
const QColor bgNormal = group.readEntry("BackgroundNormal", dark ? QColor(34, 37, 50) : QColor(252, 252, 252));
|
||||||
|
const QColor baseNormal = contrastingTextColor(bgNormal);
|
||||||
|
const QColor baseInactive = blendColors(baseNormal, bgNormal, dark ? 0.44 : 0.56);
|
||||||
|
const QColor baseLink = dark ? blendColors(accentColor, QColor(Qt::white), 0.28) : blendColors(accentColor, QColor(Qt::black), 0.24);
|
||||||
|
const QColor fgNormal = ensureContrast(baseNormal, bgNormal, MIN_NORMAL_CONTRAST);
|
||||||
|
const QColor fgInactive = ensureContrast(baseInactive, bgNormal, MIN_INACTIVE_CONTRAST);
|
||||||
|
const QColor fgLink = ensureContrast(baseLink, bgNormal, MIN_LINK_CONTRAST);
|
||||||
|
const QColor fgActive = ensureContrast(accentColor, bgNormal, MIN_LINK_CONTRAST);
|
||||||
|
|
||||||
|
group.writeEntry("ForegroundNormal", rgbString(fgNormal));
|
||||||
|
group.writeEntry("ForegroundInactive", rgbString(fgInactive));
|
||||||
|
group.writeEntry("ForegroundActive", rgbString(fgActive));
|
||||||
|
group.writeEntry("ForegroundLink", rgbString(fgLink));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
MobileShellSettings::MobileShellSettings(QObject *parent)
|
MobileShellSettings::MobileShellSettings(QObject *parent)
|
||||||
: QObject{parent}
|
: QObject{parent}
|
||||||
, m_config{KSharedConfig::openConfig(CONFIG_FILE)}
|
, m_config{KSharedConfig::openConfig(CONFIG_FILE)}
|
||||||
|
, m_kdeGlobalsConfig{KSharedConfig::openConfig()}
|
||||||
{
|
{
|
||||||
|
m_wallpaperThemeTimer.setSingleShot(true);
|
||||||
|
m_wallpaperThemeTimer.setInterval(450);
|
||||||
|
connect(&m_wallpaperThemeTimer, &QTimer::timeout, this, [this]() -> void {
|
||||||
|
setDarkThemeEnabled(m_pendingWallpaperThemeDark);
|
||||||
|
});
|
||||||
|
|
||||||
m_configWatcher = KConfigWatcher::create(m_config);
|
m_configWatcher = KConfigWatcher::create(m_config);
|
||||||
connect(m_configWatcher.data(), &KConfigWatcher::configChanged, this, [this](const KConfigGroup &group, const QByteArrayList &names) -> void {
|
connect(m_configWatcher.data(), &KConfigWatcher::configChanged, this, [this](const KConfigGroup &group, const QByteArrayList &names) -> void {
|
||||||
Q_UNUSED(names)
|
Q_UNUSED(names)
|
||||||
|
|
@ -53,6 +200,7 @@ MobileShellSettings::MobileShellSettings(QObject *parent)
|
||||||
Q_EMIT dynamicTilingLayoutStateChanged();
|
Q_EMIT dynamicTilingLayoutStateChanged();
|
||||||
Q_EMIT snapLayoutsEnabledChanged();
|
Q_EMIT snapLayoutsEnabledChanged();
|
||||||
Q_EMIT allowLogoutChanged();
|
Q_EMIT allowLogoutChanged();
|
||||||
|
Q_EMIT wallpaperThemeEnabledChanged();
|
||||||
}
|
}
|
||||||
if (group.name() == LOCKSCREEN_CONFIG_GROUP) {
|
if (group.name() == LOCKSCREEN_CONFIG_GROUP) {
|
||||||
Q_EMIT lockscreenLeftButtonActionChanged();
|
Q_EMIT lockscreenLeftButtonActionChanged();
|
||||||
|
|
@ -62,6 +210,24 @@ MobileShellSettings::MobileShellSettings(QObject *parent)
|
||||||
Q_EMIT quickSettingsColumnsChanged();
|
Q_EMIT quickSettingsColumnsChanged();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
m_kdeGlobalsConfigWatcher = KConfigWatcher::create(m_kdeGlobalsConfig);
|
||||||
|
connect(m_kdeGlobalsConfigWatcher.data(), &KConfigWatcher::configChanged, this, [this](const KConfigGroup &group, const QByteArrayList &names) -> void {
|
||||||
|
if (group.name() != KDE_GLOBALS_CONFIG_GROUP) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (names.contains(QByteArrayLiteral("ColorScheme"))) {
|
||||||
|
Q_EMIT colorSchemeChanged();
|
||||||
|
Q_EMIT darkThemeEnabledChanged();
|
||||||
|
}
|
||||||
|
if (names.contains(QByteArrayLiteral("AccentColor")) || names.contains(QByteArrayLiteral("LastUsedCustomAccentColor"))) {
|
||||||
|
Q_EMIT accentColorChanged();
|
||||||
|
}
|
||||||
|
if (names.contains(QByteArrayLiteral("accentColorFromWallpaper"))) {
|
||||||
|
Q_EMIT wallpaperAccentEnabledChanged();
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
bool MobileShellSettings::vibrationsEnabled() const
|
bool MobileShellSettings::vibrationsEnabled() const
|
||||||
|
|
@ -243,6 +409,312 @@ void MobileShellSettings::setConvergenceModeEnabled(bool enabled)
|
||||||
job->start();
|
job->start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString MobileShellSettings::colorScheme() const
|
||||||
|
{
|
||||||
|
auto group = KConfigGroup{m_kdeGlobalsConfig, KDE_GLOBALS_CONFIG_GROUP};
|
||||||
|
return group.readEntry("ColorScheme", SHIFT_DARK_COLOR_SCHEME);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool MobileShellSettings::darkThemeEnabled() const
|
||||||
|
{
|
||||||
|
return isDarkColorScheme(colorScheme());
|
||||||
|
}
|
||||||
|
|
||||||
|
void MobileShellSettings::setDarkThemeEnabled(bool enabled)
|
||||||
|
{
|
||||||
|
const QString currentColorScheme = colorScheme();
|
||||||
|
const QString nextColorScheme = effectiveColorSchemeName(enabled);
|
||||||
|
const QString plasmaTheme = enabled ? SHIFT_DARK_PLASMA_THEME : SHIFT_LIGHT_PLASMA_THEME;
|
||||||
|
QColor accentOverride;
|
||||||
|
|
||||||
|
if (wallpaperAccentEnabled() && m_lastWallpaperThemeColor.isValid() && m_lastWallpaperThemeColor.alpha() != 0) {
|
||||||
|
accentOverride = m_lastWallpaperThemeColor;
|
||||||
|
} else if (!wallpaperAccentEnabled()) {
|
||||||
|
const QColor manualAccent = accentColor();
|
||||||
|
if (manualAccent.isValid() && manualAccent.alpha() != 0) {
|
||||||
|
accentOverride = manualAccent;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (currentColorScheme == nextColorScheme && nextColorScheme == baseColorSchemeName(enabled)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (accentOverride.isValid() && accentOverride.alpha() != 0) {
|
||||||
|
applyColorScheme({QStringLiteral("--accent-color"), accentOverride.name(QColor::HexRgb), nextColorScheme});
|
||||||
|
} else {
|
||||||
|
QProcess::execute(QStringLiteral("plasma-apply-colorscheme"), {nextColorScheme});
|
||||||
|
m_kdeGlobalsConfig->reparseConfiguration();
|
||||||
|
}
|
||||||
|
QProcess::execute(QStringLiteral("plasma-apply-desktoptheme"), {plasmaTheme});
|
||||||
|
|
||||||
|
Q_EMIT colorSchemeChanged();
|
||||||
|
Q_EMIT darkThemeEnabledChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool MobileShellSettings::wallpaperThemeEnabled() const
|
||||||
|
{
|
||||||
|
auto group = KConfigGroup{m_config, GENERAL_CONFIG_GROUP};
|
||||||
|
return group.readEntry("wallpaperThemeEnabled", false);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MobileShellSettings::setWallpaperThemeEnabled(bool enabled)
|
||||||
|
{
|
||||||
|
if (wallpaperThemeEnabled() == enabled) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto group = KConfigGroup{m_config, GENERAL_CONFIG_GROUP};
|
||||||
|
if (enabled) {
|
||||||
|
group.writeEntry(WALLPAPER_THEME_MANUAL_DARK_KEY, darkThemeEnabled(), KConfigGroup::Notify);
|
||||||
|
}
|
||||||
|
group.writeEntry("wallpaperThemeEnabled", enabled, KConfigGroup::Notify);
|
||||||
|
m_config->sync();
|
||||||
|
|
||||||
|
if (!enabled) {
|
||||||
|
m_wallpaperThemeTimer.stop();
|
||||||
|
setDarkThemeEnabled(group.readEntry(WALLPAPER_THEME_MANUAL_DARK_KEY, darkThemeEnabled()));
|
||||||
|
}
|
||||||
|
|
||||||
|
Q_EMIT wallpaperThemeEnabledChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
void MobileShellSettings::applyWallpaperThemeColor(const QColor &color)
|
||||||
|
{
|
||||||
|
if (!wallpaperThemeEnabled() || !color.isValid() || color.alpha() == 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
QColor opaqueColor = color;
|
||||||
|
opaqueColor.setAlpha(255);
|
||||||
|
|
||||||
|
const bool colorChanged = m_lastWallpaperThemeColor != opaqueColor;
|
||||||
|
m_lastWallpaperThemeColor = opaqueColor;
|
||||||
|
|
||||||
|
if (colorChanged) {
|
||||||
|
Q_EMIT wallpaperThemeColorChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
const qreal luminance = relativeLuminance(opaqueColor);
|
||||||
|
const bool shouldUseDarkTheme = luminance < 0.5;
|
||||||
|
const bool sameThemeBucket = darkThemeEnabled() == shouldUseDarkTheme;
|
||||||
|
|
||||||
|
if (wallpaperAccentEnabled() && colorChanged && sameThemeBucket) {
|
||||||
|
applyColorScheme({QStringLiteral("--accent-color"), opaqueColor.name(QColor::HexRgb), colorScheme()});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!m_wallpaperThemeTimer.isActive() && darkThemeEnabled() == shouldUseDarkTheme && !colorChanged) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
m_pendingWallpaperThemeDark = shouldUseDarkTheme;
|
||||||
|
m_wallpaperThemeTimer.start();
|
||||||
|
}
|
||||||
|
|
||||||
|
QColor MobileShellSettings::wallpaperThemeColor() const
|
||||||
|
{
|
||||||
|
return m_lastWallpaperThemeColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
QColor MobileShellSettings::accentColor() const
|
||||||
|
{
|
||||||
|
auto group = KConfigGroup{m_kdeGlobalsConfig, KDE_GLOBALS_CONFIG_GROUP};
|
||||||
|
return group.readEntry("AccentColor", QColor(Qt::transparent));
|
||||||
|
}
|
||||||
|
|
||||||
|
void MobileShellSettings::setAccentColor(const QColor &color)
|
||||||
|
{
|
||||||
|
if (!color.isValid() || color.alpha() == 0) {
|
||||||
|
resetAccentColor();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
QColor opaqueColor = color;
|
||||||
|
opaqueColor.setAlpha(255);
|
||||||
|
|
||||||
|
auto group = KConfigGroup{m_kdeGlobalsConfig, KDE_GLOBALS_CONFIG_GROUP};
|
||||||
|
group.writeEntry("accentColorFromWallpaper", false, KConfigGroup::Notify);
|
||||||
|
group.writeEntry("LastUsedCustomAccentColor", opaqueColor, KConfigGroup::Notify);
|
||||||
|
m_kdeGlobalsConfig->sync();
|
||||||
|
|
||||||
|
applyColorScheme({QStringLiteral("--accent-color"), opaqueColor.name(QColor::HexRgb), colorScheme()});
|
||||||
|
|
||||||
|
Q_EMIT wallpaperAccentEnabledChanged();
|
||||||
|
Q_EMIT accentColorChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool MobileShellSettings::wallpaperAccentEnabled() const
|
||||||
|
{
|
||||||
|
auto group = KConfigGroup{m_kdeGlobalsConfig, KDE_GLOBALS_CONFIG_GROUP};
|
||||||
|
return group.readEntry("accentColorFromWallpaper", false);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MobileShellSettings::setWallpaperAccentEnabled(bool enabled)
|
||||||
|
{
|
||||||
|
if (wallpaperAccentEnabled() == enabled) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto group = KConfigGroup{m_kdeGlobalsConfig, KDE_GLOBALS_CONFIG_GROUP};
|
||||||
|
group.writeEntry("accentColorFromWallpaper", enabled, KConfigGroup::Notify);
|
||||||
|
m_kdeGlobalsConfig->sync();
|
||||||
|
|
||||||
|
if (enabled && m_lastWallpaperThemeColor.isValid() && m_lastWallpaperThemeColor.alpha() != 0) {
|
||||||
|
applyColorScheme({QStringLiteral("--accent-color"), m_lastWallpaperThemeColor.name(QColor::HexRgb), colorScheme()});
|
||||||
|
Q_EMIT accentColorChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!enabled) {
|
||||||
|
const QColor lastCustomColor = lastUsedCustomAccentColor();
|
||||||
|
if (lastCustomColor.isValid() && lastCustomColor.alpha() != 0) {
|
||||||
|
applyColorScheme({QStringLiteral("--accent-color"), lastCustomColor.name(QColor::HexRgb), colorScheme()});
|
||||||
|
} else {
|
||||||
|
resetAccentColor();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Q_EMIT wallpaperAccentEnabledChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
void MobileShellSettings::resetAccentColor()
|
||||||
|
{
|
||||||
|
auto group = KConfigGroup{m_kdeGlobalsConfig, KDE_GLOBALS_CONFIG_GROUP};
|
||||||
|
group.writeEntry("accentColorFromWallpaper", false, KConfigGroup::Notify);
|
||||||
|
group.deleteEntry("AccentColor", KConfigGroup::Notify);
|
||||||
|
m_kdeGlobalsConfig->sync();
|
||||||
|
|
||||||
|
applyColorScheme({colorScheme()});
|
||||||
|
|
||||||
|
Q_EMIT wallpaperAccentEnabledChanged();
|
||||||
|
Q_EMIT accentColorChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
QColor MobileShellSettings::lastUsedCustomAccentColor() const
|
||||||
|
{
|
||||||
|
auto group = KConfigGroup{m_kdeGlobalsConfig, KDE_GLOBALS_CONFIG_GROUP};
|
||||||
|
return group.readEntry("LastUsedCustomAccentColor", QColor(Qt::transparent));
|
||||||
|
}
|
||||||
|
|
||||||
|
void MobileShellSettings::applyColorScheme(const QStringList &arguments)
|
||||||
|
{
|
||||||
|
QProcess::execute(QStringLiteral("plasma-apply-colorscheme"), arguments);
|
||||||
|
m_kdeGlobalsConfig->reparseConfiguration();
|
||||||
|
}
|
||||||
|
|
||||||
|
QString MobileShellSettings::effectiveColorSchemeName(bool dark) const
|
||||||
|
{
|
||||||
|
if (!wallpaperThemeEnabled() || !m_lastWallpaperThemeColor.isValid() || m_lastWallpaperThemeColor.alpha() == 0) {
|
||||||
|
return baseColorSchemeName(dark);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!ensureWallpaperColorScheme(m_lastWallpaperThemeColor, dark)) {
|
||||||
|
return baseColorSchemeName(dark);
|
||||||
|
}
|
||||||
|
|
||||||
|
return wallpaperColorSchemeName(dark);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool MobileShellSettings::isDarkColorScheme(const QString &schemeName) const
|
||||||
|
{
|
||||||
|
return schemeName == SHIFT_DARK_COLOR_SCHEME || schemeName == SHIFT_WALLPAPER_DARK_COLOR_SCHEME;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool MobileShellSettings::ensureWallpaperColorScheme(const QColor &accentColor, bool dark) const
|
||||||
|
{
|
||||||
|
if (!accentColor.isValid() || accentColor.alpha() == 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
const QString sourcePath =
|
||||||
|
QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("color-schemes/%1.colors").arg(baseColorSchemeName(dark)));
|
||||||
|
if (sourcePath.isEmpty()) {
|
||||||
|
qWarning() << "Unable to locate base Shift color scheme for wallpaper generation:" << baseColorSchemeName(dark);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
const QString outputDir = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + QStringLiteral("/color-schemes");
|
||||||
|
if (!QDir().mkpath(outputDir)) {
|
||||||
|
qWarning() << "Unable to create dynamic color-scheme directory:" << outputDir;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
const QString outputPath = outputDir + QStringLiteral("/%1.colors").arg(wallpaperColorSchemeName(dark));
|
||||||
|
QFile::remove(outputPath);
|
||||||
|
if (!QFile::copy(sourcePath, outputPath)) {
|
||||||
|
qWarning() << "Unable to create wallpaper-derived color scheme:" << outputPath;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto generatedConfig = KSharedConfig::openConfig(outputPath, KConfig::SimpleConfig);
|
||||||
|
auto generalGroup = KConfigGroup{generatedConfig, QStringLiteral("General")};
|
||||||
|
generalGroup.writeEntry("ColorScheme", wallpaperColorSchemeName(dark));
|
||||||
|
generalGroup.writeEntry("Name", wallpaperColorSchemeDisplayName(dark));
|
||||||
|
|
||||||
|
writeAccentEntries(generatedConfig, QStringLiteral("Colors:Button"), accentColor);
|
||||||
|
writeAccentEntries(generatedConfig, QStringLiteral("Colors:Complementary"), accentColor);
|
||||||
|
writeAccentEntries(generatedConfig, QStringLiteral("Colors:Header"), accentColor);
|
||||||
|
writeAccentEntries(generatedConfig, QStringLiteral("Colors:Header][Inactive"), accentColor);
|
||||||
|
writeAccentEntries(generatedConfig, QStringLiteral("Colors:Tooltip"), accentColor);
|
||||||
|
writeAccentEntries(generatedConfig, QStringLiteral("Colors:View"), accentColor);
|
||||||
|
writeAccentEntries(generatedConfig, QStringLiteral("Colors:Window"), accentColor);
|
||||||
|
|
||||||
|
tintBackgroundEntries(generatedConfig, QStringLiteral("Colors:Button"), accentColor, dark);
|
||||||
|
tintBackgroundEntries(generatedConfig, QStringLiteral("Colors:View"), accentColor, dark);
|
||||||
|
tintBackgroundEntries(generatedConfig, QStringLiteral("Colors:Window"), accentColor, dark);
|
||||||
|
tintBackgroundEntries(generatedConfig, QStringLiteral("Colors:Header"), accentColor, dark);
|
||||||
|
tintBackgroundEntries(generatedConfig, QStringLiteral("Colors:Header][Inactive"), accentColor, dark);
|
||||||
|
tintBackgroundEntries(generatedConfig, QStringLiteral("Colors:Tooltip"), accentColor, dark);
|
||||||
|
|
||||||
|
tuneForegroundEntries(generatedConfig, QStringLiteral("Colors:Button"), accentColor, dark);
|
||||||
|
tuneForegroundEntries(generatedConfig, QStringLiteral("Colors:View"), accentColor, dark);
|
||||||
|
tuneForegroundEntries(generatedConfig, QStringLiteral("Colors:Window"), accentColor, dark);
|
||||||
|
tuneForegroundEntries(generatedConfig, QStringLiteral("Colors:Header"), accentColor, dark);
|
||||||
|
tuneForegroundEntries(generatedConfig, QStringLiteral("Colors:Header][Inactive"), accentColor, dark);
|
||||||
|
tuneForegroundEntries(generatedConfig, QStringLiteral("Colors:Tooltip"), accentColor, dark);
|
||||||
|
|
||||||
|
auto complementaryGroup = KConfigGroup{generatedConfig, QStringLiteral("Colors:Complementary")};
|
||||||
|
const QColor complementaryBase = complementaryGroup.readEntry("BackgroundNormal", dark ? QColor(24, 27, 38) : QColor(42, 46, 50));
|
||||||
|
complementaryGroup.writeEntry("BackgroundNormal", rgbString(blendColors(complementaryBase, accentColor, dark ? 0.18 : 0.14)));
|
||||||
|
complementaryGroup.writeEntry("BackgroundAlternate", rgbString(blendColors(complementaryBase, accentColor, dark ? 0.12 : 0.09)));
|
||||||
|
tuneForegroundEntries(generatedConfig, QStringLiteral("Colors:Complementary"), accentColor, dark);
|
||||||
|
|
||||||
|
auto selectionGroup = KConfigGroup{generatedConfig, QStringLiteral("Colors:Selection")};
|
||||||
|
const QColor selectionBackground = blendColors(accentColor, dark ? QColor(18, 20, 28) : QColor(255, 255, 255), dark ? 0.82 : 0.9);
|
||||||
|
const QColor selectionAlternate = blendColors(selectionBackground, dark ? QColor(0, 0, 0) : QColor(255, 255, 255), dark ? 0.16 : 0.24);
|
||||||
|
const QColor selectionForeground = ensureContrast(contrastingTextColor(selectionBackground), selectionBackground, MIN_NORMAL_CONTRAST);
|
||||||
|
const QColor selectionInactive =
|
||||||
|
ensureContrast(blendColors(selectionForeground, selectionBackground, dark ? 0.4 : 0.52), selectionBackground, MIN_INACTIVE_CONTRAST);
|
||||||
|
const QColor selectionLink = ensureContrast(blendColors(accentColor, selectionForeground, dark ? 0.3 : 0.2), selectionBackground, MIN_LINK_CONTRAST);
|
||||||
|
selectionGroup.writeEntry("BackgroundNormal", rgbString(selectionBackground));
|
||||||
|
selectionGroup.writeEntry("BackgroundAlternate", rgbString(selectionAlternate));
|
||||||
|
selectionGroup.writeEntry("DecorationFocus", rgbString(accentColor));
|
||||||
|
selectionGroup.writeEntry("DecorationHover", rgbString(accentColor));
|
||||||
|
selectionGroup.writeEntry("ForegroundActive", rgbString(selectionForeground));
|
||||||
|
selectionGroup.writeEntry("ForegroundNormal", rgbString(selectionForeground));
|
||||||
|
selectionGroup.writeEntry("ForegroundInactive", rgbString(selectionInactive));
|
||||||
|
selectionGroup.writeEntry("ForegroundLink", rgbString(selectionLink));
|
||||||
|
|
||||||
|
auto wmGroup = KConfigGroup{generatedConfig, QStringLiteral("WM")};
|
||||||
|
const QColor currentActiveBackground = wmGroup.readEntry("activeBackground", accentColor);
|
||||||
|
const QColor tintedActiveBackground = blendColors(currentActiveBackground, accentColor, dark ? 0.42 : 0.26);
|
||||||
|
const QColor currentInactiveBackground = wmGroup.readEntry("inactiveBackground", tintedActiveBackground);
|
||||||
|
const QColor tintedInactiveBackground = blendColors(currentInactiveBackground, accentColor, dark ? 0.24 : 0.14);
|
||||||
|
const QColor activeForeground = ensureContrast(contrastingTextColor(tintedActiveBackground), tintedActiveBackground, MIN_NORMAL_CONTRAST);
|
||||||
|
const QColor inactiveForeground = ensureContrast(blendColors(contrastingTextColor(tintedInactiveBackground), tintedInactiveBackground, dark ? 0.36 : 0.52),
|
||||||
|
tintedInactiveBackground,
|
||||||
|
MIN_INACTIVE_CONTRAST);
|
||||||
|
wmGroup.writeEntry("activeBackground", rgbString(tintedActiveBackground));
|
||||||
|
wmGroup.writeEntry("activeBlend", rgbString(activeForeground));
|
||||||
|
wmGroup.writeEntry("activeForeground", rgbString(activeForeground));
|
||||||
|
wmGroup.writeEntry("inactiveBackground", rgbString(tintedInactiveBackground));
|
||||||
|
wmGroup.writeEntry("inactiveBlend", rgbString(inactiveForeground));
|
||||||
|
wmGroup.writeEntry("inactiveForeground", rgbString(inactiveForeground));
|
||||||
|
|
||||||
|
generatedConfig->sync();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
bool MobileShellSettings::autoHidePanelsEnabled() const
|
bool MobileShellSettings::autoHidePanelsEnabled() const
|
||||||
{
|
{
|
||||||
auto group = KConfigGroup{m_config, GENERAL_CONFIG_GROUP};
|
auto group = KConfigGroup{m_config, GENERAL_CONFIG_GROUP};
|
||||||
|
|
|
||||||
|
|
@ -9,9 +9,11 @@
|
||||||
#include <KConfigGroup>
|
#include <KConfigGroup>
|
||||||
#include <KConfigWatcher>
|
#include <KConfigWatcher>
|
||||||
#include <KSharedConfig>
|
#include <KSharedConfig>
|
||||||
|
#include <QColor>
|
||||||
#include <QDBusConnection>
|
#include <QDBusConnection>
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include <QStringList>
|
#include <QStringList>
|
||||||
|
#include <QTimer>
|
||||||
#include <qqmlregistration.h>
|
#include <qqmlregistration.h>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -50,6 +52,14 @@ class MobileShellSettings : public QObject
|
||||||
// convergence mode
|
// convergence mode
|
||||||
Q_PROPERTY(bool convergenceModeEnabled READ convergenceModeEnabled WRITE setConvergenceModeEnabled NOTIFY convergenceModeEnabledChanged)
|
Q_PROPERTY(bool convergenceModeEnabled READ convergenceModeEnabled WRITE setConvergenceModeEnabled NOTIFY convergenceModeEnabledChanged)
|
||||||
|
|
||||||
|
// theme
|
||||||
|
Q_PROPERTY(QString colorScheme READ colorScheme NOTIFY colorSchemeChanged)
|
||||||
|
Q_PROPERTY(bool darkThemeEnabled READ darkThemeEnabled WRITE setDarkThemeEnabled NOTIFY darkThemeEnabledChanged)
|
||||||
|
Q_PROPERTY(bool wallpaperThemeEnabled READ wallpaperThemeEnabled WRITE setWallpaperThemeEnabled NOTIFY wallpaperThemeEnabledChanged)
|
||||||
|
Q_PROPERTY(QColor wallpaperThemeColor READ wallpaperThemeColor NOTIFY wallpaperThemeColorChanged)
|
||||||
|
Q_PROPERTY(QColor accentColor READ accentColor WRITE setAccentColor NOTIFY accentColorChanged)
|
||||||
|
Q_PROPERTY(bool wallpaperAccentEnabled READ wallpaperAccentEnabled WRITE setWallpaperAccentEnabled NOTIFY wallpaperAccentEnabledChanged)
|
||||||
|
|
||||||
// Auto Hide Panels
|
// Auto Hide Panels
|
||||||
Q_PROPERTY(bool autoHidePanelsEnabled READ autoHidePanelsEnabled WRITE setAutoHidePanelsEnabled NOTIFY autoHidePanelsEnabledChanged)
|
Q_PROPERTY(bool autoHidePanelsEnabled READ autoHidePanelsEnabled WRITE setAutoHidePanelsEnabled NOTIFY autoHidePanelsEnabledChanged)
|
||||||
|
|
||||||
|
|
@ -274,6 +284,19 @@ public:
|
||||||
*/
|
*/
|
||||||
void setConvergenceModeEnabled(bool enabled);
|
void setConvergenceModeEnabled(bool enabled);
|
||||||
|
|
||||||
|
QString colorScheme() const;
|
||||||
|
bool darkThemeEnabled() const;
|
||||||
|
void setDarkThemeEnabled(bool enabled);
|
||||||
|
bool wallpaperThemeEnabled() const;
|
||||||
|
void setWallpaperThemeEnabled(bool enabled);
|
||||||
|
Q_INVOKABLE void applyWallpaperThemeColor(const QColor &color);
|
||||||
|
QColor wallpaperThemeColor() const;
|
||||||
|
QColor accentColor() const;
|
||||||
|
void setAccentColor(const QColor &color);
|
||||||
|
bool wallpaperAccentEnabled() const;
|
||||||
|
void setWallpaperAccentEnabled(bool enabled);
|
||||||
|
Q_INVOKABLE void resetAccentColor();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Whether Auto Hide Panels is enabled.
|
* Whether Auto Hide Panels is enabled.
|
||||||
*/
|
*/
|
||||||
|
|
@ -368,6 +391,12 @@ Q_SIGNALS:
|
||||||
void actionDrawerTopRightModeChanged();
|
void actionDrawerTopRightModeChanged();
|
||||||
void quickSettingsColumnsChanged();
|
void quickSettingsColumnsChanged();
|
||||||
void convergenceModeEnabledChanged();
|
void convergenceModeEnabledChanged();
|
||||||
|
void colorSchemeChanged();
|
||||||
|
void darkThemeEnabledChanged();
|
||||||
|
void wallpaperThemeEnabledChanged();
|
||||||
|
void wallpaperThemeColorChanged();
|
||||||
|
void accentColorChanged();
|
||||||
|
void wallpaperAccentEnabledChanged();
|
||||||
void autoHidePanelsEnabledChanged();
|
void autoHidePanelsEnabledChanged();
|
||||||
void gamingModeEnabledChanged();
|
void gamingModeEnabledChanged();
|
||||||
void gamingDismissHintEnabledChanged();
|
void gamingDismissHintEnabledChanged();
|
||||||
|
|
@ -383,7 +412,17 @@ Q_SIGNALS:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void updateNavigationBarsInPlasma();
|
void updateNavigationBarsInPlasma();
|
||||||
|
QColor lastUsedCustomAccentColor() const;
|
||||||
|
void applyColorScheme(const QStringList &arguments);
|
||||||
|
QString effectiveColorSchemeName(bool dark) const;
|
||||||
|
bool isDarkColorScheme(const QString &schemeName) const;
|
||||||
|
bool ensureWallpaperColorScheme(const QColor &accentColor, bool dark) const;
|
||||||
|
|
||||||
KConfigWatcher::Ptr m_configWatcher;
|
KConfigWatcher::Ptr m_configWatcher;
|
||||||
|
KConfigWatcher::Ptr m_kdeGlobalsConfigWatcher;
|
||||||
KSharedConfig::Ptr m_config;
|
KSharedConfig::Ptr m_config;
|
||||||
|
KSharedConfig::Ptr m_kdeGlobalsConfig;
|
||||||
|
QTimer m_wallpaperThemeTimer;
|
||||||
|
bool m_pendingWallpaperThemeDark = false;
|
||||||
|
QColor m_lastWallpaperThemeColor;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,8 @@ import 'private'
|
||||||
Item {
|
Item {
|
||||||
id: root
|
id: root
|
||||||
required property Folio.HomeScreen folio
|
required property Folio.HomeScreen folio
|
||||||
|
Kirigami.Theme.inherit: false
|
||||||
|
Kirigami.Theme.colorSet: Kirigami.Theme.Window
|
||||||
|
|
||||||
property var homeScreen
|
property var homeScreen
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -147,7 +147,7 @@ MobileShell.GridView {
|
||||||
|
|
||||||
contentItem: Rectangle {
|
contentItem: Rectangle {
|
||||||
radius: width / 2
|
radius: width / 2
|
||||||
color: Qt.rgba(1, 1, 1, 0.3)
|
color: Qt.rgba(Kirigami.Theme.textColor.r, Kirigami.Theme.textColor.g, Kirigami.Theme.textColor.b, 0.3)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,9 +16,8 @@ Item {
|
||||||
id: root
|
id: root
|
||||||
property Folio.HomeScreen folio
|
property Folio.HomeScreen folio
|
||||||
|
|
||||||
// Do not override the colorset: in mobile mode we inherit Complementary
|
// The AppDrawer owns a Window colorset so mobile and convergence use the
|
||||||
// from the containment (wallpaper context, white text); in convergence mode
|
// same Shift theme roles.
|
||||||
// the drawerOverlay Window gives us Window context (system-adaptive).
|
|
||||||
|
|
||||||
function addSearchText(text: string) {
|
function addSearchText(text: string) {
|
||||||
searchField.text += text;
|
searchField.text += text;
|
||||||
|
|
|
||||||
|
|
@ -96,13 +96,12 @@ MouseArea {
|
||||||
property real pagerButtonWidth: showPager ? Math.min(root.height, Kirigami.Units.gridUnit * 2.5) : 0
|
property real pagerButtonWidth: showPager ? Math.min(root.height, Kirigami.Units.gridUnit * 2.5) : 0
|
||||||
property int pagerWheelDelta: 0
|
property int pagerWheelDelta: 0
|
||||||
property bool pagerWheelLocked: false
|
property bool pagerWheelLocked: false
|
||||||
readonly property int pagerLeftCount: showPager ? Math.ceil(virtualDesktopInfo.numberOfDesktops / 2) : 0
|
readonly property int pagerLeftCount: showPager ? virtualDesktopInfo.numberOfDesktops : 0
|
||||||
readonly property int pagerRightCount: showPager ? virtualDesktopInfo.numberOfDesktops - pagerLeftCount : 0
|
|
||||||
property real desktopButtonWidth: convergenceMode ? root.height : 0
|
property real desktopButtonWidth: convergenceMode ? root.height : 0
|
||||||
property real trashButtonWidth: convergenceMode ? root.height : 0
|
property real trashButtonWidth: convergenceMode ? root.height : 0
|
||||||
property real searchButtonWidth: convergenceMode ? root.height : 0
|
property real searchButtonWidth: convergenceMode ? root.height : 0
|
||||||
readonly property real leftControlsWidth: convergenceMode ? navButtonWidth + desktopButtonWidth + pagerLeftCount * pagerButtonWidth : 0
|
readonly property real leftControlsWidth: convergenceMode ? navButtonWidth + desktopButtonWidth + pagerLeftCount * pagerButtonWidth : 0
|
||||||
readonly property real rightControlsWidth: convergenceMode ? navButtonWidth + searchButtonWidth + trashButtonWidth + pagerRightCount * pagerButtonWidth : 0
|
readonly property real rightControlsWidth: convergenceMode ? navButtonWidth + searchButtonWidth + trashButtonWidth : 0
|
||||||
readonly property real dockCenterX: convergenceMode
|
readonly property real dockCenterX: convergenceMode
|
||||||
? leftControlsWidth + (root.width - leftControlsWidth - rightControlsWidth) / 2
|
? leftControlsWidth + (root.width - leftControlsWidth - rightControlsWidth) / 2
|
||||||
: root.width / 2
|
: root.width / 2
|
||||||
|
|
@ -296,16 +295,33 @@ MouseArea {
|
||||||
if (x >= bx && x < bx + pagerButtonWidth)
|
if (x >= bx && x < bx + pagerButtonWidth)
|
||||||
return (ids && i < ids.length) ? String(ids[i]) : ""
|
return (ids && i < ids.length) ? String(ids[i]) : ""
|
||||||
}
|
}
|
||||||
for (let i = 0; i < pagerRightCount; ++i) {
|
|
||||||
let bx = root.width - navButtonWidth - root.searchButtonWidth - root.trashButtonWidth - (pagerRightCount - i) * pagerButtonWidth
|
|
||||||
if (x >= bx && x < bx + pagerButtonWidth) {
|
|
||||||
let di = pagerLeftCount + i
|
|
||||||
return (ids && di < ids.length) ? String(ids[di]) : ""
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function focusFirstDockContent() {
|
||||||
|
let firstPager = leftPagerRepeater.itemAt(0)
|
||||||
|
if (firstPager) { firstPager.forceActiveFocus(); return }
|
||||||
|
root.focusAfterPager()
|
||||||
|
}
|
||||||
|
|
||||||
|
function focusAfterPager() {
|
||||||
|
let first = repeater.itemAt(0)
|
||||||
|
if (first) { first.keyboardFocus(); return }
|
||||||
|
let firstTask = taskRepeater.itemAt(0)
|
||||||
|
if (firstTask) { firstTask.forceActiveFocus(); return }
|
||||||
|
searchButton.forceActiveFocus()
|
||||||
|
}
|
||||||
|
|
||||||
|
function focusBeforeSearch() {
|
||||||
|
let lastTask = taskRepeater.itemAt(taskRepeater.count - 1)
|
||||||
|
if (lastTask) { lastTask.forceActiveFocus(); return }
|
||||||
|
let lastFav = repeater.itemAt(repeater.count - 1)
|
||||||
|
if (lastFav) { lastFav.keyboardFocus(); return }
|
||||||
|
let lastPager = leftPagerRepeater.itemAt(leftPagerRepeater.count - 1)
|
||||||
|
if (lastPager) { lastPager.forceActiveFocus(); return }
|
||||||
|
desktopButton.forceActiveFocus()
|
||||||
|
}
|
||||||
|
|
||||||
function runningTaskStorageId(taskModel) {
|
function runningTaskStorageId(taskModel) {
|
||||||
var id = taskModel ? taskModel.AppId || "" : ""
|
var id = taskModel ? taskModel.AppId || "" : ""
|
||||||
if (id && !id.endsWith(".desktop"))
|
if (id && !id.endsWith(".desktop"))
|
||||||
|
|
@ -448,13 +464,7 @@ MouseArea {
|
||||||
Keys.onEnterPressed: desktopButton.toggleDesktop()
|
Keys.onEnterPressed: desktopButton.toggleDesktop()
|
||||||
Keys.onSpacePressed: desktopButton.toggleDesktop()
|
Keys.onSpacePressed: desktopButton.toggleDesktop()
|
||||||
Keys.onLeftPressed: homeButton.forceActiveFocus()
|
Keys.onLeftPressed: homeButton.forceActiveFocus()
|
||||||
Keys.onRightPressed: {
|
Keys.onRightPressed: root.focusFirstDockContent()
|
||||||
let first = repeater.itemAt(0)
|
|
||||||
if (first) { first.keyboardFocus(); return }
|
|
||||||
let firstTask = taskRepeater.itemAt(0)
|
|
||||||
if (firstTask) { firstTask.forceActiveFocus(); return }
|
|
||||||
searchButton.forceActiveFocus()
|
|
||||||
}
|
|
||||||
|
|
||||||
KeyboardHighlight {
|
KeyboardHighlight {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
|
@ -561,9 +571,7 @@ MouseArea {
|
||||||
Keys.onReturnPressed: root.folio.triggerOverview()
|
Keys.onReturnPressed: root.folio.triggerOverview()
|
||||||
Keys.onEnterPressed: root.folio.triggerOverview()
|
Keys.onEnterPressed: root.folio.triggerOverview()
|
||||||
Keys.onSpacePressed: root.folio.triggerOverview()
|
Keys.onSpacePressed: root.folio.triggerOverview()
|
||||||
Keys.onLeftPressed: {
|
Keys.onLeftPressed: searchButton.forceActiveFocus()
|
||||||
searchButton.forceActiveFocus()
|
|
||||||
}
|
|
||||||
|
|
||||||
KeyboardHighlight {
|
KeyboardHighlight {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
|
@ -622,13 +630,7 @@ MouseArea {
|
||||||
Keys.onReturnPressed: root.folio.HomeScreenState.openSearchWidget()
|
Keys.onReturnPressed: root.folio.HomeScreenState.openSearchWidget()
|
||||||
Keys.onEnterPressed: root.folio.HomeScreenState.openSearchWidget()
|
Keys.onEnterPressed: root.folio.HomeScreenState.openSearchWidget()
|
||||||
Keys.onSpacePressed: root.folio.HomeScreenState.openSearchWidget()
|
Keys.onSpacePressed: root.folio.HomeScreenState.openSearchWidget()
|
||||||
Keys.onLeftPressed: {
|
Keys.onLeftPressed: trashButton.forceActiveFocus()
|
||||||
let lastTask = taskRepeater.itemAt(taskRepeater.count - 1)
|
|
||||||
if (lastTask) { lastTask.forceActiveFocus(); return }
|
|
||||||
let lastFav = repeater.itemAt(repeater.count - 1)
|
|
||||||
if (lastFav) { lastFav.keyboardFocus(); return }
|
|
||||||
desktopButton.forceActiveFocus()
|
|
||||||
}
|
|
||||||
Keys.onRightPressed: overviewButton.forceActiveFocus()
|
Keys.onRightPressed: overviewButton.forceActiveFocus()
|
||||||
|
|
||||||
KeyboardHighlight {
|
KeyboardHighlight {
|
||||||
|
|
@ -684,7 +686,7 @@ MouseArea {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---- Virtual desktop pager: left wing (desktops 1 .. ceil(N/2)) ----
|
// ---- Virtual desktop pager: compact group next to the Desktop button ----
|
||||||
Repeater {
|
Repeater {
|
||||||
id: leftPagerRepeater
|
id: leftPagerRepeater
|
||||||
model: root.pagerLeftCount
|
model: root.pagerLeftCount
|
||||||
|
|
@ -708,6 +710,36 @@ MouseArea {
|
||||||
y: 0
|
y: 0
|
||||||
width: root.pagerButtonWidth
|
width: root.pagerButtonWidth
|
||||||
height: root.height
|
height: root.height
|
||||||
|
activeFocusOnTab: root.showPager
|
||||||
|
|
||||||
|
function activateDesktop() {
|
||||||
|
if (leftDesktopBtn.desktopId) {
|
||||||
|
root.folio.activateVirtualDesktop(leftDesktopBtn.desktopId)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Accessible.role: Accessible.Button
|
||||||
|
Accessible.name: root.pagerDesktopName(leftDesktopBtn.index)
|
||||||
|
Accessible.onPressAction: leftDesktopBtn.activateDesktop()
|
||||||
|
|
||||||
|
Keys.onReturnPressed: leftDesktopBtn.activateDesktop()
|
||||||
|
Keys.onEnterPressed: leftDesktopBtn.activateDesktop()
|
||||||
|
Keys.onSpacePressed: leftDesktopBtn.activateDesktop()
|
||||||
|
Keys.onLeftPressed: {
|
||||||
|
let previous = leftPagerRepeater.itemAt(index - 1)
|
||||||
|
if (previous) { previous.forceActiveFocus(); return }
|
||||||
|
desktopButton.forceActiveFocus()
|
||||||
|
}
|
||||||
|
Keys.onRightPressed: {
|
||||||
|
let next = leftPagerRepeater.itemAt(index + 1)
|
||||||
|
if (next) { next.forceActiveFocus(); return }
|
||||||
|
root.focusAfterPager()
|
||||||
|
}
|
||||||
|
|
||||||
|
KeyboardHighlight {
|
||||||
|
anchors.fill: parent
|
||||||
|
visible: leftDesktopBtn.activeFocus
|
||||||
|
}
|
||||||
|
|
||||||
MobileShell.MotionStateLayer {
|
MobileShell.MotionStateLayer {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
|
@ -745,8 +777,8 @@ MouseArea {
|
||||||
root.hideDockToolTip(leftDesktopBtn)
|
root.hideDockToolTip(leftDesktopBtn)
|
||||||
if (mouse.button === Qt.RightButton) {
|
if (mouse.button === Qt.RightButton) {
|
||||||
leftPagerContextMenu.open()
|
leftPagerContextMenu.open()
|
||||||
} else if (leftDesktopBtn.desktopId) {
|
} else {
|
||||||
root.folio.activateVirtualDesktop(leftDesktopBtn.desktopId)
|
leftDesktopBtn.activateDesktop()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
onPressAndHold: {
|
onPressAndHold: {
|
||||||
|
|
@ -793,117 +825,7 @@ MouseArea {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---- Virtual desktop pager: right wing (desktops ceil(N/2)+1 .. N) ----
|
// ---- Trash button (convergence mode, sits between Search and Overview) ----
|
||||||
Repeater {
|
|
||||||
id: rightPagerRepeater
|
|
||||||
model: root.pagerRightCount
|
|
||||||
|
|
||||||
delegate: Item {
|
|
||||||
id: rightDesktopBtn
|
|
||||||
required property int index
|
|
||||||
|
|
||||||
readonly property int desktopIndex: root.pagerLeftCount + index
|
|
||||||
readonly property string desktopId: {
|
|
||||||
let ids = virtualDesktopInfo.desktopIds
|
|
||||||
return (ids && desktopIndex < ids.length) ? String(ids[desktopIndex]) : ""
|
|
||||||
}
|
|
||||||
readonly property bool isCurrent: desktopId !== "" && String(desktopId) === String(virtualDesktopInfo.currentDesktop)
|
|
||||||
readonly property bool isDragTarget: {
|
|
||||||
if (root.taskPinDragIndex < 0) return false
|
|
||||||
let cx = root.taskBaseX(root.taskPinDragIndex) + root.dockCellWidth / 2 + root.taskPinDragOffset
|
|
||||||
return root.pagerButtonDesktopAt(cx) === desktopId
|
|
||||||
}
|
|
||||||
|
|
||||||
x: root.width - root.navButtonWidth - root.searchButtonWidth - root.trashButtonWidth - (root.pagerRightCount - index) * root.pagerButtonWidth
|
|
||||||
y: 0
|
|
||||||
width: root.pagerButtonWidth
|
|
||||||
height: root.height
|
|
||||||
|
|
||||||
MobileShell.MotionStateLayer {
|
|
||||||
anchors.fill: parent
|
|
||||||
anchors.margins: root.dockItemInset
|
|
||||||
radius: Kirigami.Units.cornerRadius
|
|
||||||
hovered: rightPagerHover.containsMouse
|
|
||||||
pressed: rightPagerHover.containsPress
|
|
||||||
active: rightDesktopBtn.isCurrent || rightDesktopBtn.isDragTarget
|
|
||||||
pressedOpacity: 0.18
|
|
||||||
activeOpacity: 0.18
|
|
||||||
activeHoverOpacity: 0.25
|
|
||||||
}
|
|
||||||
|
|
||||||
PC3.Label {
|
|
||||||
anchors.centerIn: parent
|
|
||||||
text: (rightDesktopBtn.desktopIndex + 1).toString()
|
|
||||||
color: rightDesktopBtn.isCurrent ? Kirigami.Theme.highlightColor : Kirigami.Theme.textColor
|
|
||||||
font.pixelSize: Math.round(parent.height * 0.3)
|
|
||||||
font.bold: rightDesktopBtn.isCurrent
|
|
||||||
}
|
|
||||||
|
|
||||||
PC3.ToolTip {
|
|
||||||
visible: root.activeDockToolTipItem === rightDesktopBtn && rightPagerHover.containsMouse && !rightPagerHover.containsPress && !rightPagerContextMenu.opened
|
|
||||||
text: root.pagerDesktopName(rightDesktopBtn.desktopIndex)
|
|
||||||
}
|
|
||||||
|
|
||||||
MouseArea {
|
|
||||||
id: rightPagerHover
|
|
||||||
anchors.fill: parent
|
|
||||||
hoverEnabled: true
|
|
||||||
acceptedButtons: Qt.LeftButton | Qt.RightButton
|
|
||||||
cursorShape: Qt.PointingHandCursor
|
|
||||||
onWheel: (wheel) => root.handlePagerWheel(wheel)
|
|
||||||
onClicked: (mouse) => {
|
|
||||||
root.hideDockToolTip(rightDesktopBtn)
|
|
||||||
if (mouse.button === Qt.RightButton) {
|
|
||||||
rightPagerContextMenu.open()
|
|
||||||
} else if (rightDesktopBtn.desktopId) {
|
|
||||||
root.folio.activateVirtualDesktop(rightDesktopBtn.desktopId)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
onPressAndHold: {
|
|
||||||
root.hideDockToolTip(rightDesktopBtn)
|
|
||||||
rightPagerContextMenu.open()
|
|
||||||
haptics.buttonVibrate()
|
|
||||||
}
|
|
||||||
onContainsMouseChanged: {
|
|
||||||
if (containsMouse) {
|
|
||||||
root.requestDockToolTip(rightDesktopBtn)
|
|
||||||
} else {
|
|
||||||
root.hideDockToolTip(rightDesktopBtn)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
onPressedChanged: {
|
|
||||||
if (pressed) {
|
|
||||||
root.hideDockToolTip(rightDesktopBtn)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
PC3.Menu {
|
|
||||||
id: rightPagerContextMenu
|
|
||||||
popupType: T.Popup.Window
|
|
||||||
|
|
||||||
PC3.MenuItem {
|
|
||||||
icon.name: "list-add"
|
|
||||||
text: i18n("Add Virtual Desktop")
|
|
||||||
onTriggered: root.folio.createVirtualDesktop()
|
|
||||||
}
|
|
||||||
PC3.MenuItem {
|
|
||||||
icon.name: "list-remove"
|
|
||||||
text: i18n("Remove Virtual Desktop")
|
|
||||||
enabled: virtualDesktopInfo.numberOfDesktops > 1
|
|
||||||
onTriggered: root.folio.removeLastVirtualDesktop()
|
|
||||||
}
|
|
||||||
Controls.MenuSeparator {}
|
|
||||||
PC3.MenuItem {
|
|
||||||
icon.name: "preferences-desktop-virtual"
|
|
||||||
text: i18n("Configure Virtual Desktops…")
|
|
||||||
onTriggered: MobileShell.ShellUtil.executeCommand("plasma-open-settings kcm_kwin_virtualdesktops")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// ---- Trash button (convergence mode, sits between the right pager wing and the Overview button) ----
|
|
||||||
|
|
||||||
// Watches ~/.local/share/Trash/files to detect empty/full state.
|
// Watches ~/.local/share/Trash/files to detect empty/full state.
|
||||||
// FolderListModel reacts to directory changes automatically.
|
// FolderListModel reacts to directory changes automatically.
|
||||||
|
|
@ -960,6 +882,8 @@ MouseArea {
|
||||||
Keys.onReturnPressed: Qt.openUrlExternally("trash:/")
|
Keys.onReturnPressed: Qt.openUrlExternally("trash:/")
|
||||||
Keys.onEnterPressed: Qt.openUrlExternally("trash:/")
|
Keys.onEnterPressed: Qt.openUrlExternally("trash:/")
|
||||||
Keys.onSpacePressed: Qt.openUrlExternally("trash:/")
|
Keys.onSpacePressed: Qt.openUrlExternally("trash:/")
|
||||||
|
Keys.onLeftPressed: root.focusBeforeSearch()
|
||||||
|
Keys.onRightPressed: searchButton.forceActiveFocus()
|
||||||
|
|
||||||
KeyboardHighlight {
|
KeyboardHighlight {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,6 @@ Item {
|
||||||
property real rightMargin: 0
|
property real rightMargin: 0
|
||||||
|
|
||||||
property bool interactive: true
|
property bool interactive: true
|
||||||
readonly property color favouritesBarScrimColor: Qt.rgba(Kirigami.Theme.highlightColor.r, Kirigami.Theme.highlightColor.g, Kirigami.Theme.highlightColor.b, 0.14)
|
|
||||||
|
|
||||||
// non-widget drop animation
|
// non-widget drop animation
|
||||||
readonly property bool dropAnimationRunning: delegateDragItem.dropAnimationRunning || widgetDragItem.dropAnimationRunning
|
readonly property bool dropAnimationRunning: delegateDragItem.dropAnimationRunning || widgetDragItem.dropAnimationRunning
|
||||||
|
|
@ -363,7 +362,9 @@ Item {
|
||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
id: favouritesBarScrim
|
id: favouritesBarScrim
|
||||||
color: root.favouritesBarScrimColor
|
Kirigami.Theme.inherit: false
|
||||||
|
Kirigami.Theme.colorSet: Kirigami.Theme.Window
|
||||||
|
color: Qt.rgba(Kirigami.Theme.backgroundColor.r, Kirigami.Theme.backgroundColor.g, Kirigami.Theme.backgroundColor.b, 0.38)
|
||||||
|
|
||||||
Component.onCompleted: maskManager.assignToMask(this)
|
Component.onCompleted: maskManager.assignToMask(this)
|
||||||
|
|
||||||
|
|
@ -389,6 +390,8 @@ Item {
|
||||||
folio: root.folio
|
folio: root.folio
|
||||||
maskManager: root.maskManager
|
maskManager: root.maskManager
|
||||||
homeScreen: root
|
homeScreen: root
|
||||||
|
Kirigami.Theme.inherit: false
|
||||||
|
Kirigami.Theme.colorSet: Kirigami.Theme.Window
|
||||||
|
|
||||||
// don't show in settings mode
|
// don't show in settings mode
|
||||||
opacity: 1 - folio.HomeScreenState.settingsOpenProgress
|
opacity: 1 - folio.HomeScreenState.settingsOpenProgress
|
||||||
|
|
@ -493,6 +496,7 @@ Item {
|
||||||
|
|
||||||
// don't show in settings mode
|
// don't show in settings mode
|
||||||
opacity: 1 - folio.HomeScreenState.settingsOpenProgress
|
opacity: 1 - folio.HomeScreenState.settingsOpenProgress
|
||||||
|
visible: opacity > 0 && !ShellSettings.Settings.convergenceModeEnabled
|
||||||
|
|
||||||
anchors.top: parent.top
|
anchors.top: parent.top
|
||||||
anchors.left: parent.left
|
anchors.left: parent.left
|
||||||
|
|
|
||||||
|
|
@ -246,10 +246,12 @@ ContainmentItem {
|
||||||
Rectangle {
|
Rectangle {
|
||||||
id: appDrawerBackground
|
id: appDrawerBackground
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
Kirigami.Theme.inherit: false
|
||||||
|
Kirigami.Theme.colorSet: Kirigami.Theme.Window
|
||||||
// Convergence: no scrim (popup has own background); mobile: dark scrim
|
// Convergence: no scrim (popup has own background); mobile: dark scrim
|
||||||
color: ShellSettings.Settings.convergenceModeEnabled
|
color: ShellSettings.Settings.convergenceModeEnabled
|
||||||
? "transparent"
|
? "transparent"
|
||||||
: Qt.rgba(0, 0, 0, 0.6)
|
: Qt.rgba(Kirigami.Theme.backgroundColor.r, Kirigami.Theme.backgroundColor.g, Kirigami.Theme.backgroundColor.b, 0.46)
|
||||||
|
|
||||||
opacity: folio.HomeScreenState.appDrawerOpenProgress
|
opacity: folio.HomeScreenState.appDrawerOpenProgress
|
||||||
}
|
}
|
||||||
|
|
@ -257,7 +259,9 @@ ContainmentItem {
|
||||||
Rectangle {
|
Rectangle {
|
||||||
id: searchWidgetBackground
|
id: searchWidgetBackground
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
color: Qt.rgba(0, 0, 0, 0.3)
|
Kirigami.Theme.inherit: false
|
||||||
|
Kirigami.Theme.colorSet: Kirigami.Theme.Window
|
||||||
|
color: Qt.rgba(Kirigami.Theme.backgroundColor.r, Kirigami.Theme.backgroundColor.g, Kirigami.Theme.backgroundColor.b, 0.30)
|
||||||
|
|
||||||
opacity: folio.HomeScreenState.searchWidgetOpenProgress
|
opacity: folio.HomeScreenState.searchWidgetOpenProgress
|
||||||
}
|
}
|
||||||
|
|
@ -265,7 +269,9 @@ ContainmentItem {
|
||||||
Rectangle {
|
Rectangle {
|
||||||
id: settingsViewBackground
|
id: settingsViewBackground
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
color: Qt.rgba(0, 0, 0, 0.3)
|
Kirigami.Theme.inherit: false
|
||||||
|
Kirigami.Theme.colorSet: Kirigami.Theme.Window
|
||||||
|
color: Qt.rgba(Kirigami.Theme.backgroundColor.r, Kirigami.Theme.backgroundColor.g, Kirigami.Theme.backgroundColor.b, 0.30)
|
||||||
|
|
||||||
opacity: folio.HomeScreenState.settingsOpenProgress
|
opacity: folio.HomeScreenState.settingsOpenProgress
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,6 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
||||||
<g class="ColorScheme-Text" fill="currentColor">
|
<g class="ColorScheme-Text" fill="currentColor">
|
||||||
<circle cx="128" cy="44" r="16"/>
|
<polyline points="104 72 104 136 192 136 224 200 248 192" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><circle cx="104" cy="48" r="24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M168,96H112a64,64,0,0,0,0,128c29.82,0,56.9-20.4,64-48" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
<path d="M72,88c18.67-8,37.33-12,56-12s37.33,4,56,12" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
||||||
<line x1="128" y1="76" x2="128" y2="212" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
||||||
<line x1="128" y1="120" x2="84" y2="212" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
||||||
<line x1="128" y1="120" x2="172" y2="212" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 834 B After Width: | Height: | Size: 674 B |
|
|
@ -1,7 +1,6 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
||||||
<g class="ColorScheme-Text" fill="currentColor">
|
<g class="ColorScheme-Text" fill="currentColor">
|
||||||
<line x1="40" y1="128" x2="216" y2="128" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
<line x1="40" y1="128" x2="216" y2="128" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><polyline points="144 56 216 128 144 200" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
<polyline points="144 56 216 128 144 200" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 503 B After Width: | Height: | Size: 503 B |
|
|
@ -1,9 +1,6 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
||||||
<g class="ColorScheme-Text" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
|
<g class="ColorScheme-Text" fill="currentColor">
|
||||||
<rect x="88" y="24" width="80" height="128" rx="40"/>
|
<rect x="88" y="24" width="80" height="144" rx="40" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="128" y1="200" x2="128" y2="240" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M200,128a72,72,0,0,1-144,0" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
<path d="M48 112a80 80 0 0 0 160 0"/>
|
|
||||||
<line x1="128" y1="192" x2="128" y2="232"/>
|
|
||||||
<line x1="88" y1="232" x2="168" y2="232"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 476 B After Width: | Height: | Size: 651 B |
|
|
@ -1,8 +1,6 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
||||||
<g class="ColorScheme-Text" fill="currentColor">
|
<g class="ColorScheme-Text" fill="currentColor">
|
||||||
<circle cx="128" cy="132" r="84" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
<circle cx="128" cy="128" r="96" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><polyline points="128 72 128 128 184 128" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
<line x1="128" y1="132" x2="128" y2="84" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
||||||
<line x1="128" y1="132" x2="168" y2="156" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 637 B After Width: | Height: | Size: 495 B |
1
icons/org.shift.icons/actions/symbolic/color-picker-symbolic.svg
Symbolic link
|
|
@ -0,0 +1 @@
|
||||||
|
color-picker.svg
|
||||||
1
icons/org.shift.icons/actions/symbolic/color-picker.svg
Symbolic link
|
|
@ -0,0 +1 @@
|
||||||
|
color.svg
|
||||||
|
|
@ -1,10 +1,6 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
||||||
<g class="ColorScheme-Text" fill="currentColor">
|
<g class="ColorScheme-Text" fill="currentColor">
|
||||||
<path d="M128,24a104,104,0,0,0,0,208h16a24,24,0,0,0,0-48h-8a16,16,0,0,1,0-32h24a72,72,0,0,0,0-144Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
<path d="M128,192a24,24,0,0,1,24-24h46.21a24,24,0,0,0,23.4-18.65A96.48,96.48,0,0,0,224,127.17c-.45-52.82-44.16-95.7-97-95.17a96,96,0,0,0-95,96c0,41.81,26.73,73.44,64,86.61A24,24,0,0,0,128,192Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><circle cx="128" cy="76" r="12"/><circle cx="84" cy="100" r="12"/><circle cx="84" cy="156" r="12"/><circle cx="172" cy="100" r="12"/>
|
||||||
<circle cx="84" cy="108" r="10"/>
|
|
||||||
<circle cx="116" cy="76" r="10"/>
|
|
||||||
<circle cx="160" cy="80" r="10"/>
|
|
||||||
<circle cx="184" cy="120" r="10"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 556 B After Width: | Height: | Size: 647 B |
|
|
@ -1,6 +1,6 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
||||||
<g class="ColorScheme-Text" fill="currentColor">
|
<g class="ColorScheme-Text" fill="currentColor">
|
||||||
<polyline points="40 144 96 200 216 56" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
<polyline points="88 136 112 160 168 104" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><circle cx="128" cy="128" r="96" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 359 B After Width: | Height: | Size: 495 B |
|
|
@ -1,8 +1,6 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
||||||
<g class="ColorScheme-Text" fill="currentColor">
|
<g class="ColorScheme-Text" fill="currentColor">
|
||||||
<path d="M152,40H72A16,16,0,0,0,56,56V200a16,16,0,0,0,16,16H184a16,16,0,0,0,16-16V88Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
<polygon points="128 160 96 160 96 128 192 32 224 64 128 160" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="168" y1="56" x2="200" y2="88" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M216,128v80a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V48a8,8,0,0,1,8-8h80" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
<polyline points="152 40 152 88 200 88" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
||||||
<path d="M104,168l-8,32,32-8,66.34-66.34a16,16,0,0,0-22.63-22.63Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 715 B After Width: | Height: | Size: 695 B |
|
|
@ -1,8 +1,6 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
||||||
<g class="ColorScheme-Text" fill="currentColor">
|
<g class="ColorScheme-Text" fill="currentColor">
|
||||||
<path d="M48,40H168l40,40V208a8,8,0,0,1-8,8H56a8,8,0,0,1-8-8Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
<path d="M216,83.31V208a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V48a8,8,0,0,1,8-8H172.69a8,8,0,0,1,5.65,2.34l35.32,35.32A8,8,0,0,1,216,83.31Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M80,216V152a8,8,0,0,1,8-8h80a8,8,0,0,1,8,8v64" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="152" y1="72" x2="96" y2="72" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
<polyline points="88 40 88 104 160 104 160 40" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
||||||
<rect x="88" y="152" width="80" height="64" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 675 B After Width: | Height: | Size: 748 B |
|
|
@ -0,0 +1 @@
|
||||||
|
color.svg
|
||||||
1
icons/org.shift.icons/actions/symbolic/draw-highlight.svg
Symbolic link
|
|
@ -0,0 +1 @@
|
||||||
|
../../preferences/scalable/preferences-desktop-color.svg
|
||||||
|
|
@ -1,9 +1,6 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
||||||
<g class="ColorScheme-Text" fill="currentColor">
|
<g class="ColorScheme-Text" fill="currentColor">
|
||||||
<rect x="40" y="48" width="176" height="160" rx="16" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
<rect x="40" y="144" width="176" height="64" rx="8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><rect x="40" y="48" width="176" height="64" rx="8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><circle cx="180" cy="80" r="12"/><circle cx="180" cy="176" r="12"/>
|
||||||
<line x1="40" y1="160" x2="216" y2="160" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
||||||
<circle cx="80" cy="184" r="8"/>
|
|
||||||
<line x1="112" y1="184" x2="176" y2="184" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 690 B After Width: | Height: | Size: 590 B |
|
|
@ -1,7 +1,6 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
||||||
<g class="ColorScheme-Text" fill="currentColor">
|
<g class="ColorScheme-Text" fill="currentColor">
|
||||||
<path d="M24,88V64A16,16,0,0,1,40,48h60.69a8,8,0,0,1,5.65,2.34l19.32,19.32A8,8,0,0,0,131.31,72H216a16,16,0,0,1,16,16V192a16,16,0,0,1-16,16H40a16,16,0,0,1-16-16Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
<path d="M216.89,208H39.38A7.4,7.4,0,0,1,32,200.62V80H216a8,8,0,0,1,8,8V200.89A7.11,7.11,0,0,1,216.89,208Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M32,80V56a8,8,0,0,1,8-8H92.69a8,8,0,0,1,5.65,2.34L128,80" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
<line x1="24" y1="96" x2="232" y2="96" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 621 B After Width: | Height: | Size: 595 B |
|
|
@ -1,10 +1,6 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
||||||
<g class="ColorScheme-Text" fill="currentColor">
|
<g class="ColorScheme-Text" fill="currentColor">
|
||||||
<circle cx="128" cy="128" r="88" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
<circle cx="128" cy="128" r="96" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M168,128c0,64-40,96-40,96s-40-32-40-96,40-96,40-96S168,64,168,128Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="37.46" y1="96" x2="218.54" y2="96" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="37.46" y1="160" x2="218.54" y2="160" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
<ellipse cx="128" cy="128" rx="40" ry="88" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
||||||
<line x1="40" y1="128" x2="216" y2="128" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
||||||
<path d="M56,88c18,13.33,44.85,20,72,20s54-6.67,72-20" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
||||||
<path d="M56,168c18-13.33,44.85-20,72-20s54,6.67,72,20" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 951 B After Width: | Height: | Size: 822 B |
|
|
@ -1,6 +1,6 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
||||||
<g class="ColorScheme-Text" fill="currentColor">
|
<g class="ColorScheme-Text" fill="currentColor">
|
||||||
<polyline points="96 48 176 128 96 208" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
<line x1="40" y1="128" x2="216" y2="128" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><polyline points="144 56 216 128 144 200" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 360 B After Width: | Height: | Size: 503 B |
|
|
@ -1,12 +1,6 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
||||||
<g class="ColorScheme-Text" fill="currentColor">
|
<g class="ColorScheme-Text" fill="currentColor">
|
||||||
<path d="M96,144V80a16,16,0,0,1,32,0v48" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
<path d="M64,76a52,52,0,0,1,104,0" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M72,224,42.68,174a20,20,0,0,1,34.64-20L96,184V76a20,20,0,0,1,40,0v56a20,20,0,0,1,40,0v16a20,20,0,0,1,40,0v36c0,24-8,40-8,40" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
<path d="M128,128V96a16,16,0,0,1,32,0v40" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
||||||
<path d="M160,136v-24a16,16,0,0,1,32,0v48a56,56,0,0,1-56,56h-8a56,56,0,0,1-56-56v-16a16,16,0,0,1,32,0v8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
||||||
<circle cx="112" cy="48" r="16" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
||||||
<line x1="112" y1="8" x2="112" y2="16" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
||||||
<line x1="80" y1="20" x2="86" y2="26" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
||||||
<line x1="144" y1="20" x2="138" y2="26" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 589 B |
|
|
@ -0,0 +1 @@
|
||||||
|
dialog-information.svg
|
||||||
1
icons/org.shift.icons/actions/symbolic/help-contents.svg
Symbolic link
|
|
@ -0,0 +1 @@
|
||||||
|
../../preferences/scalable/ktip.svg
|
||||||
|
|
@ -1,11 +1,6 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
||||||
<g class="ColorScheme-Text" fill="currentColor">
|
<g class="ColorScheme-Text" fill="currentColor">
|
||||||
<rect x="24" y="64" width="208" height="128" rx="16" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
<rect x="24" y="56" width="208" height="144" rx="8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="56" y1="128" x2="200" y2="128" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="56" y1="96" x2="200" y2="96" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="56" y1="160" x2="64" y2="160" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="96" y1="160" x2="160" y2="160" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="192" y1="160" x2="200" y2="160" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
<line x1="64" y1="104" x2="64.01" y2="104" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
|
|
||||||
<line x1="104" y1="104" x2="104.01" y2="104" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
|
|
||||||
<line x1="144" y1="104" x2="144.01" y2="104" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
|
|
||||||
<line x1="184" y1="104" x2="184.01" y2="104" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
|
|
||||||
<line x1="72" y1="152" x2="184" y2="152" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1 KiB |
|
|
@ -1,8 +1,6 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
||||||
<g class="ColorScheme-Text" fill="currentColor">
|
<g class="ColorScheme-Text" fill="currentColor">
|
||||||
<rect x="80" y="24" width="96" height="208" rx="48" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
<rect x="56" y="24" width="144" height="208" rx="56" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="128" y1="112" x2="128" y2="24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="56" y1="112" x2="200" y2="112" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
<line x1="128" y1="24" x2="128" y2="88" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
||||||
<line x1="80" y1="96" x2="176" y2="96" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 652 B After Width: | Height: | Size: 655 B |
|
|
@ -1,7 +1,6 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
||||||
<g class="ColorScheme-Text" fill="currentColor">
|
<g class="ColorScheme-Text" fill="currentColor">
|
||||||
<line x1="128" y1="56" x2="128" y2="200" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
<line x1="40" y1="128" x2="216" y2="128" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="128" y1="40" x2="128" y2="216" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
<line x1="56" y1="128" x2="200" y2="128" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 502 B After Width: | Height: | Size: 502 B |
|
|
@ -1,6 +1,6 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
||||||
<g class="ColorScheme-Text" fill="currentColor">
|
<g class="ColorScheme-Text" fill="currentColor">
|
||||||
<line x1="56" y1="128" x2="200" y2="128" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
<line x1="40" y1="128" x2="216" y2="128" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 360 B After Width: | Height: | Size: 361 B |
|
|
@ -1,6 +1,6 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
||||||
<g class="ColorScheme-Text" fill="currentColor">
|
<g class="ColorScheme-Text" fill="currentColor">
|
||||||
<line x1="128" y1="40" x2="128" y2="32" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><circle cx="128" cy="128" r="56" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="64" y1="64" x2="56" y2="56" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="64" y1="192" x2="56" y2="200" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="192" y1="64" x2="200" y2="56" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="192" y1="192" x2="200" y2="200" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="40" y1="128" x2="32" y2="128" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="128" y1="216" x2="128" y2="224" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="216" y1="128" x2="224" y2="128" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
<path d="M108.11,28.11A96.09,96.09,0,0,0,227.89,147.89,96,96,0,1,1,108.11,28.11Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 402 B |
|
|
@ -1,7 +1,6 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
||||||
<g class="ColorScheme-Text" fill="currentColor">
|
<g class="ColorScheme-Text" fill="currentColor">
|
||||||
<rect x="72" y="48" width="40" height="160" rx="8"/>
|
<rect x="152" y="40" width="56" height="176" rx="8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><rect x="48" y="40" width="56" height="176" rx="8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
<rect x="144" y="48" width="40" height="160" rx="8"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 325 B After Width: | Height: | Size: 523 B |
|
|
@ -1,6 +1,6 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
||||||
<g class="ColorScheme-Text" fill="currentColor">
|
<g class="ColorScheme-Text" fill="currentColor">
|
||||||
<circle cx="128" cy="128" r="72"/>
|
<circle cx="128" cy="128" r="96" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 253 B After Width: | Height: | Size: 353 B |
|
|
@ -1,8 +1,6 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
||||||
<g class="ColorScheme-Text" fill="currentColor" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
|
<g class="ColorScheme-Text" fill="currentColor">
|
||||||
<rect x="32" y="48" width="192" height="160" rx="8" fill="none"/>
|
<rect x="32" y="48" width="192" height="160" rx="8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><circle cx="68" cy="84" r="12"/><circle cx="108" cy="84" r="12"/>
|
||||||
<circle cx="68" cy="84" r="12" stroke="none"/>
|
|
||||||
<circle cx="108" cy="84" r="12" stroke="none"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 467 B After Width: | Height: | Size: 437 B |
|
|
@ -1,10 +1,6 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
||||||
<g class="ColorScheme-Text" fill="currentColor">
|
<g class="ColorScheme-Text" fill="currentColor">
|
||||||
<polyline points="88 48 48 48 48 88" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
<path d="M208,208H48a16,16,0,0,1-16-16V80A16,16,0,0,1,48,64H80L96,40h64l16,24h32a16,16,0,0,1,16,16V192A16,16,0,0,1,208,208Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><circle cx="128" cy="132" r="36" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
<polyline points="168 48 208 48 208 88" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
||||||
<polyline points="208 168 208 208 168 208" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
||||||
<polyline points="88 208 48 208 48 168" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
||||||
<circle cx="128" cy="128" r="24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 916 B After Width: | Height: | Size: 578 B |
|
|
@ -1,10 +1,6 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
||||||
<g class="ColorScheme-Text" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
|
<g class="ColorScheme-Text" fill="currentColor">
|
||||||
<path d="M40 176a96 96 0 0 1 176 0"/>
|
<line x1="120" y1="160" x2="216" y2="64" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M56.44,160a73,73,0,0,1-.44-8,72.06,72.06,0,0,1,95-68.25" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M220.62,104.64a104.38,104.38,0,0,1,5.48,82,8,8,0,0,1-7.57,5.37H37.46a8.05,8.05,0,0,1-7.57-5.41A104.06,104.06,0,0,1,24,151.19C24.44,94,71.73,47.49,129,48a103.68,103.68,0,0,1,46.4,11.38" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
<line x1="128" y1="176" x2="176" y2="112"/>
|
|
||||||
<line x1="72" y1="176" x2="184" y2="176"/>
|
|
||||||
<line x1="80" y1="112" x2="96" y2="128"/>
|
|
||||||
<line x1="128" y1="80" x2="128" y2="104"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 507 B After Width: | Height: | Size: 821 B |
|
|
@ -1,8 +1,6 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
||||||
<g class="ColorScheme-Text" fill="currentColor">
|
<g class="ColorScheme-Text" fill="currentColor">
|
||||||
<rect x="48" y="32" width="160" height="192" rx="20" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
<rect x="32" y="48" width="192" height="160" rx="16" transform="translate(256) rotate(90)" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="48" y1="64" x2="208" y2="64" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="48" y1="192" x2="208" y2="192" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
<line x1="96" y1="64" x2="160" y2="64" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
||||||
<circle cx="128" cy="184" r="10"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 547 B After Width: | Height: | Size: 691 B |
|
|
@ -1,8 +1,6 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
||||||
<g class="ColorScheme-Text" fill="currentColor">
|
<g class="ColorScheme-Text" fill="currentColor">
|
||||||
<circle cx="100" cy="124" r="56" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
<path d="M128,192a24,24,0,0,1,24-24h46.21a24,24,0,0,0,23.4-18.65A96.48,96.48,0,0,0,224,127.17c-.45-52.82-44.16-95.7-97-95.17a96,96,0,0,0-95,96c0,41.81,26.73,73.44,64,86.61A24,24,0,0,0,128,192Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><circle cx="128" cy="76" r="12"/><circle cx="84" cy="100" r="12"/><circle cx="84" cy="156" r="12"/><circle cx="172" cy="100" r="12"/>
|
||||||
<path d="M148,68a72,72,0,1,1-48,132c24,0,40-16,40-36s-16-32-32-32H92a24,24,0,0,1,0-48h16a40,40,0,0,0,40-16Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
||||||
<circle cx="172" cy="88" r="12"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 596 B After Width: | Height: | Size: 647 B |
|
|
@ -1,9 +1,6 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
||||||
<g class="ColorScheme-Text" fill="currentColor">
|
<g class="ColorScheme-Text" fill="currentColor">
|
||||||
<rect x="40" y="56" width="176" height="120" rx="16" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
<path d="M64,76a52,52,0,0,1,104,0" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M72,224,42.68,174a20,20,0,0,1,34.64-20L96,184V76a20,20,0,0,1,40,0v56a20,20,0,0,1,40,0v16a20,20,0,0,1,40,0v36c0,24-8,40-8,40" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
<line x1="88" y1="208" x2="168" y2="208" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
||||||
<path d="M120,112V88a12,12,0,0,1,24,0v32" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
||||||
<path d="M144,120V104a12,12,0,0,1,24,0v28a40,40,0,0,1-40,40h-4a40,40,0,0,1-40-40v-12a12,12,0,0,1,24,0v4" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 863 B After Width: | Height: | Size: 589 B |
|
|
@ -1,10 +1,6 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
||||||
<g class="ColorScheme-Text" fill="currentColor" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
|
<g class="ColorScheme-Text" fill="currentColor">
|
||||||
<line x1="216" y1="56" x2="40" y2="56"/>
|
<line x1="216" y1="56" x2="40" y2="56" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="104" y1="104" x2="104" y2="168" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="152" y1="104" x2="152" y2="168" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M200,56V208a8,8,0,0,1-8,8H64a8,8,0,0,1-8-8V56" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M168,56V40a16,16,0,0,0-16-16H104A16,16,0,0,0,88,40V56" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
<line x1="104" y1="104" x2="104" y2="176"/>
|
|
||||||
<line x1="152" y1="104" x2="152" y2="176"/>
|
|
||||||
<path d="M200,56l-8,152a16,16,0,0,1-16,16H80a16,16,0,0,1-16-16L56,56" fill="none"/>
|
|
||||||
<path d="M96,56V40a16,16,0,0,1,16-16h32a16,16,0,0,1,16,16V56" fill="none"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 595 B After Width: | Height: | Size: 963 B |
|
|
@ -1,7 +1,6 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
||||||
<g class="ColorScheme-Text" fill="currentColor">
|
<g class="ColorScheme-Text" fill="currentColor">
|
||||||
<circle cx="128" cy="88" r="40" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
<circle cx="128" cy="96" r="64" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M32,216c19.37-33.47,54.55-56,96-56s76.63,22.53,96,56" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
<path d="M56,216c12.53-35.11,39-56,72-56s59.47,20.89,72,56" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 512 B After Width: | Height: | Size: 515 B |
|
|
@ -1,12 +1,6 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
||||||
<g class="ColorScheme-Text" fill="currentColor">
|
<g class="ColorScheme-Text" fill="currentColor">
|
||||||
<rect x="40" y="40" width="56" height="56" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
<rect x="48" y="48" width="64" height="64" rx="8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><rect x="48" y="144" width="64" height="64" rx="8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><rect x="144" y="48" width="64" height="64" rx="8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="144" y1="144" x2="144" y2="176" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><polyline points="144 208 176 208 176 144" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="176" y1="160" x2="208" y2="160" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="208" y1="192" x2="208" y2="208" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
<rect x="160" y="40" width="56" height="56" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
||||||
<rect x="40" y="160" width="56" height="56" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
||||||
<line x1="136" y1="136" x2="136" y2="176" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
||||||
<line x1="176" y1="136" x2="216" y2="136" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
||||||
<line x1="176" y1="176" x2="176" y2="216" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
||||||
<line x1="136" y1="216" x2="216" y2="216" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
|
|
@ -1,14 +1,6 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
||||||
<g class="ColorScheme-Text" fill="currentColor">
|
<g class="ColorScheme-Text" fill="currentColor">
|
||||||
<rect x="40" y="48" width="176" height="168" rx="16" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
<rect x="40" y="40" width="176" height="176" rx="8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="176" y1="24" x2="176" y2="56" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="80" y1="24" x2="80" y2="56" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="40" y1="88" x2="216" y2="88" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><polyline points="88 128 104 120 104 184" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M138.14,128a16,16,0,1,1,26.64,17.63L136,184h32" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
<line x1="40" y1="96" x2="216" y2="96" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
||||||
<line x1="88" y1="32" x2="88" y2="64" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
||||||
<line x1="168" y1="32" x2="168" y2="64" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
||||||
<circle cx="92" cy="136" r="8"/>
|
|
||||||
<circle cx="128" cy="136" r="8"/>
|
|
||||||
<circle cx="164" cy="136" r="8"/>
|
|
||||||
<circle cx="92" cy="172" r="8"/>
|
|
||||||
<circle cx="128" cy="172" r="8"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 960 B After Width: | Height: | Size: 1.1 KiB |
|
|
@ -1,6 +1,6 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
||||||
<g class="ColorScheme-Text" fill="currentColor">
|
<g class="ColorScheme-Text" fill="currentColor">
|
||||||
<path d="M40,56H216l-72,80v56l-32,16V136Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
<path d="M34.1,61.38A8,8,0,0,1,40,48H216a8,8,0,0,1,5.92,13.38L152,136v58.65a8,8,0,0,1-3.56,6.66l-32,21.33A8,8,0,0,1,104,216V136Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 362 B After Width: | Height: | Size: 450 B |
|
|
@ -1,6 +1,6 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
||||||
<g class="ColorScheme-Text" fill="currentColor">
|
<g class="ColorScheme-Text" fill="currentColor">
|
||||||
<polyline points="64 24 64 192 232 192" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="24" y1="64" x2="64" y2="64" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><polyline points="96 64 192 64 192 160" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="192" y1="192" x2="192" y2="232" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
<polyline points="160 48 208 48 208 96" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="152" y1="104" x2="208" y2="48" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><polyline points="96 208 48 208 48 160" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="104" y1="152" x2="48" y2="208" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><polyline points="208 160 208 208 160 208" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="152" y1="152" x2="208" y2="208" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><polyline points="48 96 48 48 96 48" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="104" y1="104" x2="48" y2="48" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 780 B After Width: | Height: | Size: 1.3 KiB |
|
|
@ -1,6 +1,6 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
||||||
<g class="ColorScheme-Text" fill="currentColor">
|
<g class="ColorScheme-Text" fill="currentColor">
|
||||||
<polyline points="64 24 64 192 232 192" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="24" y1="64" x2="64" y2="64" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><polyline points="96 64 192 64 192 160" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="192" y1="192" x2="192" y2="232" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
<polyline points="160 48 208 48 208 96" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="152" y1="104" x2="208" y2="48" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><polyline points="96 208 48 208 48 160" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="104" y1="152" x2="48" y2="208" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><polyline points="208 160 208 208 160 208" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="152" y1="152" x2="208" y2="208" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><polyline points="48 96 48 48 96 48" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="104" y1="104" x2="48" y2="48" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 780 B After Width: | Height: | Size: 1.3 KiB |
1
icons/org.shift.icons/actions/symbolic/view-hidden-symbolic.svg
Symbolic link
|
|
@ -0,0 +1 @@
|
||||||
|
preferences-system-windows-effect-eyeonscreen.svg
|
||||||
1
icons/org.shift.icons/actions/symbolic/view-hidden.svg
Symbolic link
|
|
@ -0,0 +1 @@
|
||||||
|
../../preferences/scalable/preferences-desktop-effects.svg
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
||||||
<g class="ColorScheme-Text" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
|
<g class="ColorScheme-Text" fill="currentColor">
|
||||||
<rect x="56" y="56" width="144" height="144" rx="8"/>
|
<rect x="40" y="40" width="176" height="176" rx="8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 351 B After Width: | Height: | Size: 372 B |
|
|
@ -1,6 +1,6 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
||||||
<g class="ColorScheme-Text" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
|
<g class="ColorScheme-Text" fill="currentColor">
|
||||||
<line x1="64" y1="184" x2="192" y2="184"/>
|
<line x1="40" y1="128" x2="216" y2="128" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 340 B After Width: | Height: | Size: 361 B |
|
|
@ -1,6 +1,6 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
||||||
<g class="ColorScheme-Text" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
|
<g class="ColorScheme-Text" fill="currentColor">
|
||||||
<path d="M96 32h64l-16 56 40 40-56 16-40 80-16-16 40-80-40-40 56-16Z"/>
|
<path d="M229.66,98.34a8,8,0,0,0,0-11.31L169,26.34a8,8,0,0,0-11.31,0L100.39,83.8S72.64,69.93,43,93.85a8,8,0,0,0-.65,11.91l107.9,107.89a8,8,0,0,0,12-.83c8.39-11.16,21.57-34.09,10.11-57Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="96.29" y1="159.71" x2="48" y2="208" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 369 B After Width: | Height: | Size: 652 B |
|
|
@ -1,7 +1,6 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
||||||
<g class="ColorScheme-Text" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
|
<g class="ColorScheme-Text" fill="currentColor">
|
||||||
<rect x="64" y="80" width="112" height="112" rx="8"/>
|
<polyline points="168 168 216 168 216 40 88 40 88 88" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><rect x="40" y="88" width="128" height="128" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
<path d="M96 80V48h112v112h-32"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 385 B After Width: | Height: | Size: 519 B |
|
|
@ -1,9 +1,6 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
||||||
<g class="ColorScheme-Text" fill="currentColor">
|
<g class="ColorScheme-Text" fill="currentColor">
|
||||||
<circle cx="112" cy="112" r="72" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
<line x1="80" y1="112" x2="144" y2="112" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><circle cx="112" cy="112" r="80" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="168.57" y1="168.57" x2="224" y2="224" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="112" y1="80" x2="112" y2="144" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
<line x1="163" y1="163" x2="216" y2="216" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
||||||
<line x1="112" y1="80" x2="112" y2="144" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
||||||
<line x1="80" y1="112" x2="144" y2="112" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 779 B After Width: | Height: | Size: 783 B |
|
|
@ -1,8 +1,6 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
<style type="text/css" id="current-color-scheme">.ColorScheme-Text { color: #232629; }</style>
|
||||||
<g class="ColorScheme-Text" fill="currentColor">
|
<g class="ColorScheme-Text" fill="currentColor">
|
||||||
<circle cx="112" cy="112" r="72" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
<line x1="80" y1="112" x2="144" y2="112" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><circle cx="112" cy="112" r="80" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="168.57" y1="168.57" x2="224" y2="224" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
<line x1="163" y1="163" x2="216" y2="216" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
||||||
<line x1="80" y1="112" x2="144" y2="112" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 637 B After Width: | Height: | Size: 642 B |
|
|
@ -1,11 +1,7 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<rect x="24" y="24" width="208" height="208" rx="56" fill="#0f766e"/>
|
<rect x="24" y="24" width="208" height="208" rx="56" fill="#0f766e"/>
|
||||||
<rect x="40" y="40" width="176" height="176" rx="44" fill="#bef264" fill-opacity="0.14"/>
|
<rect x="40" y="40" width="176" height="176" rx="44" fill="#bef264" fill-opacity="0.14"/>
|
||||||
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
|
<g style="color:#ffffff" fill="currentColor">
|
||||||
<rect x="48" y="88" width="144" height="80" rx="16"/>
|
<rect x="16" y="64" width="200" height="128" rx="16" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="96" y1="96" x2="96" y2="160" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="56" y1="96" x2="56" y2="160" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="248" y1="96" x2="248" y2="160" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
<line x1="208" y1="112" x2="208" y2="144"/>
|
|
||||||
<line x1="84" y1="112" x2="84" y2="144"/>
|
|
||||||
<line x1="120" y1="112" x2="120" y2="144"/>
|
|
||||||
<line x1="156" y1="112" x2="156" y2="144"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 560 B After Width: | Height: | Size: 853 B |
|
|
@ -1,9 +1,7 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<rect x="24" y="24" width="208" height="208" rx="56" fill="#2563eb"/>
|
<rect x="24" y="24" width="208" height="208" rx="56" fill="#2563eb"/>
|
||||||
<rect x="40" y="40" width="176" height="176" rx="44" fill="#bfdbfe" fill-opacity="0.2"/>
|
<rect x="40" y="40" width="176" height="176" rx="44" fill="#bfdbfe" fill-opacity="0.2"/>
|
||||||
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
|
<g style="color:#ffffff" fill="currentColor">
|
||||||
<circle cx="128" cy="128" r="72"/>
|
<circle cx="128" cy="128" r="96" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M120,120a8,8,0,0,1,8,8v40a8,8,0,0,0,8,8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><circle cx="124" cy="84" r="12"/>
|
||||||
<path d="M120 120h8v48h8"/>
|
|
||||||
<line x1="124" y1="88" x2="124" y2="88" stroke-width="24"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 454 B After Width: | Height: | Size: 596 B |
|
|
@ -1,10 +1,7 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<rect x="24" y="24" width="208" height="208" rx="56" fill="#7c3aed"/>
|
<rect x="24" y="24" width="208" height="208" rx="56" fill="#7c3aed"/>
|
||||||
<rect x="40" y="40" width="176" height="176" rx="44" fill="#ddd6fe" fill-opacity="0.18"/>
|
<rect x="40" y="40" width="176" height="176" rx="44" fill="#ddd6fe" fill-opacity="0.18"/>
|
||||||
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
|
<g style="color:#ffffff" fill="currentColor">
|
||||||
<circle cx="88" cy="176" r="24"/>
|
<path d="M80,168H32a8,8,0,0,1-8-8V96a8,8,0,0,1,8-8H80l72-56V224Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="80" y1="88" x2="80" y2="168" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M192,106.85a32,32,0,0,1,0,42.3" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M221.67,80a72,72,0,0,1,0,96" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
<circle cx="176" cy="152" r="24"/>
|
|
||||||
<path d="M112 176V80l88-24v96"/>
|
|
||||||
<line x1="112" y1="104" x2="200" y2="80"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 477 B After Width: | Height: | Size: 865 B |
|
|
@ -1,12 +1,7 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<rect x="24" y="24" width="208" height="208" rx="56" fill="#15803d"/>
|
<rect x="24" y="24" width="208" height="208" rx="56" fill="#15803d"/>
|
||||||
<rect x="40" y="40" width="176" height="176" rx="44" fill="#bbf7d0" fill-opacity="0.18"/>
|
<rect x="40" y="40" width="176" height="176" rx="44" fill="#bbf7d0" fill-opacity="0.18"/>
|
||||||
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
|
<g style="color:#ffffff" fill="currentColor">
|
||||||
<path d="M64 160v-24a64 64 0 0 1 128 0v24"/>
|
<circle cx="164" cy="148" r="12"/><circle cx="92" cy="148" r="12"/><path d="M24,184V161.13C24,103.65,70.15,56.2,127.63,56A104,104,0,0,1,232,160v24a8,8,0,0,1-8,8H32A8,8,0,0,1,24,184Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="32" y1="48" x2="63.07" y2="79.07" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="224" y1="48" x2="193.1" y2="78.9" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
<rect x="56" y="128" width="144" height="64" rx="16"/>
|
|
||||||
<line x1="88" y1="88" x2="68" y2="60"/>
|
|
||||||
<line x1="168" y1="88" x2="188" y2="60"/>
|
|
||||||
<line x1="104" y1="160" x2="104" y2="160" stroke-width="24"/>
|
|
||||||
<line x1="152" y1="160" x2="152" y2="160" stroke-width="24"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 638 B After Width: | Height: | Size: 852 B |
|
|
@ -1,10 +1,7 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<rect x="24" y="24" width="208" height="208" rx="56" fill="#0f766e"/>
|
<rect x="24" y="24" width="208" height="208" rx="56" fill="#0f766e"/>
|
||||||
<rect x="40" y="40" width="176" height="176" rx="44" fill="#67e8f9" fill-opacity="0.16"/>
|
<rect x="40" y="40" width="176" height="176" rx="44" fill="#67e8f9" fill-opacity="0.16"/>
|
||||||
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
|
<g style="color:#ffffff" fill="currentColor">
|
||||||
<rect x="48" y="72" width="160" height="112" rx="16"/>
|
<rect x="24" y="56" width="208" height="144" rx="8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="56" y1="128" x2="200" y2="128" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="56" y1="96" x2="200" y2="96" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="56" y1="160" x2="64" y2="160" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="96" y1="160" x2="160" y2="160" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="192" y1="160" x2="200" y2="160" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
<line x1="80" y1="112" x2="176" y2="112"/>
|
|
||||||
<line x1="80" y1="144" x2="176" y2="144"/>
|
|
||||||
<line x1="104" y1="176" x2="152" y2="176"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 517 B After Width: | Height: | Size: 1.1 KiB |
|
|
@ -1,9 +1,7 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<rect x="24" y="24" width="208" height="208" rx="56" fill="#2563eb"/>
|
<rect x="24" y="24" width="208" height="208" rx="56" fill="#2563eb"/>
|
||||||
<rect x="40" y="40" width="176" height="176" rx="44" fill="#bfdbfe" fill-opacity="0.2"/>
|
<rect x="40" y="40" width="176" height="176" rx="44" fill="#bfdbfe" fill-opacity="0.2"/>
|
||||||
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
|
<g style="color:#ffffff" fill="currentColor">
|
||||||
<circle cx="112" cy="112" r="56"/>
|
<circle cx="112" cy="112" r="80" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="168.57" y1="168.57" x2="224" y2="224" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
<line x1="152" y1="152" x2="200" y2="200"/>
|
|
||||||
<line x1="88" y1="112" x2="136" y2="112"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 453 B After Width: | Height: | Size: 561 B |
|
|
@ -1,11 +1,7 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<rect x="24" y="24" width="208" height="208" rx="56" fill="#0f766e"/>
|
<rect x="24" y="24" width="208" height="208" rx="56" fill="#0f766e"/>
|
||||||
<rect x="40" y="40" width="176" height="176" rx="44" fill="#86efac" fill-opacity="0.14"/>
|
<rect x="40" y="40" width="176" height="176" rx="44" fill="#86efac" fill-opacity="0.14"/>
|
||||||
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
|
<g style="color:#ffffff" fill="currentColor">
|
||||||
<circle cx="84" cy="128" r="32"/>
|
<line x1="160" y1="72" x2="160" y2="200" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="120" y1="112" x2="120" y2="200" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="80" y1="152" x2="80" y2="200" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="40" y1="192" x2="40" y2="200" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
<circle cx="172" cy="88" r="28"/>
|
|
||||||
<circle cx="172" cy="176" r="28"/>
|
|
||||||
<line x1="113" y1="115" x2="147" y2="100"/>
|
|
||||||
<line x1="113" y1="141" x2="147" y2="164"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 523 B After Width: | Height: | Size: 844 B |
|
|
@ -1,12 +1,7 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<rect x="24" y="24" width="208" height="208" rx="56" fill="#0f766e"/>
|
<rect x="24" y="24" width="208" height="208" rx="56" fill="#0f766e"/>
|
||||||
<rect x="40" y="40" width="176" height="176" rx="44" fill="#86efac" fill-opacity="0.14"/>
|
<rect x="40" y="40" width="176" height="176" rx="44" fill="#86efac" fill-opacity="0.14"/>
|
||||||
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
|
<g style="color:#ffffff" fill="currentColor">
|
||||||
<rect x="72" y="48" width="112" height="64" rx="12"/>
|
<line x1="160" y1="72" x2="160" y2="200" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="120" y1="112" x2="120" y2="200" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="80" y1="152" x2="80" y2="200" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="40" y1="192" x2="40" y2="200" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
<path d="M128 112v40"/>
|
|
||||||
<path d="M80 152h96v40"/>
|
|
||||||
<path d="M80 152v40"/>
|
|
||||||
<rect x="48" y="192" width="64" height="32" rx="8"/>
|
|
||||||
<rect x="144" y="192" width="64" height="32" rx="8"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 566 B After Width: | Height: | Size: 844 B |
|
|
@ -1,12 +1,7 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<rect x="24" y="24" width="208" height="208" rx="56" fill="#0f766e"/>
|
<rect x="24" y="24" width="208" height="208" rx="56" fill="#0f766e"/>
|
||||||
<rect x="40" y="40" width="176" height="176" rx="44" fill="#86efac" fill-opacity="0.14"/>
|
<rect x="40" y="40" width="176" height="176" rx="44" fill="#86efac" fill-opacity="0.14"/>
|
||||||
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
|
<g style="color:#ffffff" fill="currentColor">
|
||||||
<path d="M56 104a104 104 0 0 1 144 0"/>
|
<circle cx="128" cy="128" r="32" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M181.67,80a71.94,71.94,0,0,1,0,96" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M74.33,176a71.94,71.94,0,0,1,0-96" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M208,49.62a111.88,111.88,0,0,1,0,156.76" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M48,206.38A111.88,111.88,0,0,1,48,49.62" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
<path d="M84 132a64 64 0 0 1 88 0"/>
|
|
||||||
<path d="M112 160a24 24 0 0 1 32 0"/>
|
|
||||||
<circle cx="128" cy="196" r="10" fill="#ffffff" stroke="none"/>
|
|
||||||
<line x1="184" y1="164" x2="184" y2="212"/>
|
|
||||||
<line x1="160" y1="188" x2="208" y2="188"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 599 B After Width: | Height: | Size: 1,002 B |
|
|
@ -1,10 +1,7 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<rect x="24" y="24" width="208" height="208" rx="56" fill="#0f766e"/>
|
<rect x="24" y="24" width="208" height="208" rx="56" fill="#0f766e"/>
|
||||||
<rect x="40" y="40" width="176" height="176" rx="44" fill="#86efac" fill-opacity="0.14"/>
|
<rect x="40" y="40" width="176" height="176" rx="44" fill="#86efac" fill-opacity="0.14"/>
|
||||||
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
|
<g style="color:#ffffff" fill="currentColor">
|
||||||
<path d="M48 104a112 112 0 0 1 160 0"/>
|
<circle cx="128" cy="204" r="12"/><path d="M232,93.19a164,164,0,0,0-208,0" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M200,129a116,116,0,0,0-144,0" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M168,165a68,68,0,0,0-80,0" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
<path d="M80 136a68 68 0 0 1 96 0"/>
|
|
||||||
<path d="M112 168a24 24 0 0 1 32 0"/>
|
|
||||||
<circle cx="128" cy="200" r="10" fill="#ffffff" stroke="none"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 511 B After Width: | Height: | Size: 731 B |
|
|
@ -1,10 +1,7 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<rect x="24" y="24" width="208" height="208" rx="56" fill="#2563eb"/>
|
<rect x="24" y="24" width="208" height="208" rx="56" fill="#2563eb"/>
|
||||||
<rect x="40" y="40" width="176" height="176" rx="44" fill="#bfdbfe" fill-opacity="0.2"/>
|
<rect x="40" y="40" width="176" height="176" rx="44" fill="#bfdbfe" fill-opacity="0.2"/>
|
||||||
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
|
<g style="color:#ffffff" fill="currentColor">
|
||||||
<circle cx="112" cy="112" r="56"/>
|
<circle cx="112" cy="112" r="80" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="168.57" y1="168.57" x2="224" y2="224" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
<line x1="152" y1="152" x2="200" y2="200"/>
|
|
||||||
<path d="M92 112h40"/>
|
|
||||||
<path d="M112 92v40"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 456 B After Width: | Height: | Size: 561 B |
|
|
@ -1,11 +1,7 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<rect x="24" y="24" width="208" height="208" rx="56" fill="#0f766e"/>
|
<rect x="24" y="24" width="208" height="208" rx="56" fill="#0f766e"/>
|
||||||
<rect x="40" y="40" width="176" height="176" rx="44" fill="#14b8a6" fill-opacity="0.18"/>
|
<rect x="40" y="40" width="176" height="176" rx="44" fill="#14b8a6" fill-opacity="0.18"/>
|
||||||
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
|
<g style="color:#ffffff" fill="currentColor">
|
||||||
<circle cx="128" cy="68" r="16" fill="#ffffff" stroke="none"/>
|
<polyline points="104 72 104 136 192 136 224 200 248 192" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><circle cx="104" cy="48" r="24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M168,96H112a64,64,0,0,0,0,128c29.82,0,56.9-20.4,64-48" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
<path d="M72 108c18.67-8 37.33-12 56-12s37.33 4 56 12"/>
|
|
||||||
<line x1="128" y1="96" x2="128" y2="196"/>
|
|
||||||
<line x1="128" y1="132" x2="88" y2="208"/>
|
|
||||||
<line x1="128" y1="132" x2="168" y2="208"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 582 B After Width: | Height: | Size: 735 B |
|
|
@ -1,10 +1,7 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<rect x="24" y="24" width="208" height="208" rx="56" fill="#4f46e5"/>
|
<rect x="24" y="24" width="208" height="208" rx="56" fill="#4f46e5"/>
|
||||||
<rect x="40" y="40" width="176" height="176" rx="44" fill="#c7d2fe" fill-opacity="0.18"/>
|
<rect x="40" y="40" width="176" height="176" rx="44" fill="#c7d2fe" fill-opacity="0.18"/>
|
||||||
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
|
<g style="color:#ffffff" fill="currentColor">
|
||||||
<rect x="56" y="56" width="56" height="56" rx="10"/>
|
<rect x="48" y="48" width="64" height="64" rx="8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><rect x="144" y="48" width="64" height="64" rx="8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><rect x="48" y="144" width="64" height="64" rx="8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><rect x="144" y="144" width="64" height="64" rx="8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
<rect x="144" y="56" width="56" height="56" rx="10"/>
|
|
||||||
<rect x="56" y="144" width="56" height="56" rx="10"/>
|
|
||||||
<rect x="144" y="144" width="56" height="56" rx="10"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 548 B After Width: | Height: | Size: 885 B |
|
|
@ -1,10 +1,7 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<rect x="24" y="24" width="208" height="208" rx="56" fill="#0f766e"/>
|
<rect x="24" y="24" width="208" height="208" rx="56" fill="#0f766e"/>
|
||||||
<rect x="40" y="40" width="176" height="176" rx="44" fill="#c4b5fd" fill-opacity="0.16"/>
|
<rect x="40" y="40" width="176" height="176" rx="44" fill="#c4b5fd" fill-opacity="0.16"/>
|
||||||
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
|
<g style="color:#ffffff" fill="currentColor">
|
||||||
<rect x="64" y="72" width="112" height="112" rx="24"/>
|
<polyline points="160 48 208 48 208 96" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="152" y1="104" x2="208" y2="48" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><polyline points="96 208 48 208 48 160" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="104" y1="152" x2="48" y2="208" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><polyline points="208 160 208 208 160 208" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="152" y1="152" x2="208" y2="208" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><polyline points="48 96 48 48 96 48" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="104" y1="104" x2="48" y2="48" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
<path d="M184 96h24"/>
|
|
||||||
<path d="M184 128h32"/>
|
|
||||||
<path d="M184 160h24"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 458 B After Width: | Height: | Size: 1.4 KiB |
|
|
@ -1,10 +1,7 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<rect x="24" y="24" width="208" height="208" rx="56" fill="#2563eb"/>
|
<rect x="24" y="24" width="208" height="208" rx="56" fill="#2563eb"/>
|
||||||
<rect x="40" y="40" width="176" height="176" rx="44" fill="#bfdbfe" fill-opacity="0.2"/>
|
<rect x="40" y="40" width="176" height="176" rx="44" fill="#bfdbfe" fill-opacity="0.2"/>
|
||||||
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
|
<g style="color:#ffffff" fill="currentColor">
|
||||||
<circle cx="112" cy="112" r="56"/>
|
<circle cx="112" cy="112" r="80" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="168.57" y1="168.57" x2="224" y2="224" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
<line x1="152" y1="152" x2="200" y2="200"/>
|
|
||||||
<path d="M84 112h56"/>
|
|
||||||
<path d="M112 84v56"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 456 B After Width: | Height: | Size: 561 B |
|
|
@ -1,10 +1,7 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<rect x="24" y="24" width="208" height="208" rx="56" fill="#1d4ed8"/>
|
<rect x="24" y="24" width="208" height="208" rx="56" fill="#1d4ed8"/>
|
||||||
<rect x="40" y="40" width="176" height="176" rx="44" fill="#93c5fd" fill-opacity="0.16"/>
|
<rect x="40" y="40" width="176" height="176" rx="44" fill="#93c5fd" fill-opacity="0.16"/>
|
||||||
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
|
<g style="color:#ffffff" fill="currentColor">
|
||||||
<rect x="64" y="64" width="48" height="48" rx="10"/>
|
<rect x="48" y="48" width="64" height="64" rx="8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><rect x="144" y="48" width="64" height="64" rx="8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><rect x="48" y="144" width="64" height="64" rx="8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><rect x="144" y="144" width="64" height="64" rx="8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
<rect x="144" y="64" width="48" height="48" rx="10"/>
|
|
||||||
<rect x="64" y="144" width="48" height="48" rx="10"/>
|
|
||||||
<rect x="144" y="144" width="48" height="48" rx="10"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 548 B After Width: | Height: | Size: 885 B |
|
|
@ -1,10 +1,7 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<rect x="24" y="24" width="208" height="208" rx="56" fill="#1d4ed8"/>
|
<rect x="24" y="24" width="208" height="208" rx="56" fill="#1d4ed8"/>
|
||||||
<rect x="40" y="40" width="176" height="176" rx="44" fill="#60a5fa" fill-opacity="0.16"/>
|
<rect x="40" y="40" width="176" height="176" rx="44" fill="#60a5fa" fill-opacity="0.16"/>
|
||||||
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
|
<g style="color:#ffffff" fill="currentColor">
|
||||||
<rect x="48" y="64" width="160" height="108" rx="16"/>
|
<rect x="32" y="48" width="192" height="144" rx="16" transform="translate(256 240) rotate(180)" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="160" y1="224" x2="96" y2="224" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
<line x1="96" y1="204" x2="160" y2="204"/>
|
|
||||||
<line x1="112" y1="172" x2="104" y2="204"/>
|
|
||||||
<line x1="144" y1="172" x2="152" y2="204"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 518 B After Width: | Height: | Size: 618 B |
|
|
@ -1,9 +1,7 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<rect x="24" y="24" width="208" height="208" rx="56" fill="#2563eb"/>
|
<rect x="24" y="24" width="208" height="208" rx="56" fill="#2563eb"/>
|
||||||
<rect x="40" y="40" width="176" height="176" rx="44" fill="#bfdbfe" fill-opacity="0.2"/>
|
<rect x="40" y="40" width="176" height="176" rx="44" fill="#bfdbfe" fill-opacity="0.2"/>
|
||||||
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
|
<g style="color:#ffffff" fill="currentColor">
|
||||||
<path d="M64 80h128a16 16 0 0 1 16 16v64a16 16 0 0 1-16 16h-48l-40 32v-32H64a16 16 0 0 1-16-16V96a16 16 0 0 1 16-16Z"/>
|
<path d="M96,192a32,32,0,0,0,64,0" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M56,104a72,72,0,0,1,144,0c0,35.82,8.3,64.6,14.9,76A8,8,0,0,1,208,192H48a8,8,0,0,1-6.88-12C47.71,168.6,56,139.81,56,104Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
<line x1="92" y1="120" x2="164" y2="120"/>
|
|
||||||
<line x1="92" y1="148" x2="140" y2="148"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 537 B After Width: | Height: | Size: 645 B |
|
|
@ -1,10 +1,7 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<rect x="24" y="24" width="208" height="208" rx="56" fill="#4f46e5"/>
|
<rect x="24" y="24" width="208" height="208" rx="56" fill="#4f46e5"/>
|
||||||
<rect x="40" y="40" width="176" height="176" rx="44" fill="#c7d2fe" fill-opacity="0.18"/>
|
<rect x="40" y="40" width="176" height="176" rx="44" fill="#c7d2fe" fill-opacity="0.18"/>
|
||||||
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
|
<g style="color:#ffffff" fill="currentColor">
|
||||||
<path d="M80 48h72l40 40v120H80Z"/>
|
<circle cx="128" cy="128" r="12"/><circle cx="196" cy="128" r="12"/><circle cx="60" cy="128" r="12"/>
|
||||||
<path d="M152 48v40h40"/>
|
|
||||||
<line x1="104" y1="128" x2="152" y2="128"/>
|
|
||||||
<line x1="104" y1="160" x2="176" y2="160"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 482 B After Width: | Height: | Size: 382 B |
|
|
@ -1,10 +1,7 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<rect x="24" y="24" width="208" height="208" rx="56" fill="#db2777"/>
|
<rect x="24" y="24" width="208" height="208" rx="56" fill="#db2777"/>
|
||||||
<rect x="40" y="40" width="176" height="176" rx="44" fill="#fbcfe8" fill-opacity="0.18"/>
|
<rect x="40" y="40" width="176" height="176" rx="44" fill="#fbcfe8" fill-opacity="0.18"/>
|
||||||
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
|
<g style="color:#ffffff" fill="currentColor">
|
||||||
<path d="M72 184 120 64h16l48 120"/>
|
<line x1="128" y1="40" x2="128" y2="216" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><polyline points="56 144 128 216 200 144" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
<line x1="96" y1="136" x2="160" y2="136"/>
|
|
||||||
<line x1="192" y1="64" x2="192" y2="112"/>
|
|
||||||
<line x1="168" y1="88" x2="216" y2="88"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 497 B After Width: | Height: | Size: 564 B |
|
|
@ -1,8 +1,7 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<rect x="24" y="24" width="208" height="208" rx="56" fill="#be123c"/>
|
<rect x="24" y="24" width="208" height="208" rx="56" fill="#be123c"/>
|
||||||
<rect x="40" y="40" width="176" height="176" rx="44" fill="#fda4af" fill-opacity="0.16"/>
|
<rect x="40" y="40" width="176" height="176" rx="44" fill="#fda4af" fill-opacity="0.16"/>
|
||||||
<g fill="#ffffff">
|
<g style="color:#ffffff" fill="currentColor">
|
||||||
<path d="M73 184 119 68h18l46 116h-20l-11-30H104l-11 30zm38-48h34l-17-46z"/>
|
<polygon points="128 160 96 160 96 128 192 32 224 64 128 160" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="168" y1="56" x2="200" y2="88" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M216,128v80a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V48a8,8,0,0,1,8-8h80" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
<path d="M163 180c-13 0-23-8-23-20 0-14 13-21 32-21h12v-3c0-10-6-16-18-16-8 0-15 3-22 8l-8-13c9-7 20-11 33-11 22 0 35 12 35 32v48h-18l-1-9c-5 4-12 5-22 5zm6-15c9 0 15-4 15-11v-3h-10c-10 0-15 3-15 9 0 4 4 5 10 5z"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 545 B After Width: | Height: | Size: 756 B |
|
|
@ -1,11 +1,7 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<rect x="24" y="24" width="208" height="208" rx="56" fill="#7c3aed"/>
|
<rect x="24" y="24" width="208" height="208" rx="56" fill="#7c3aed"/>
|
||||||
<rect x="40" y="40" width="176" height="176" rx="44" fill="#ddd6fe" fill-opacity="0.18"/>
|
<rect x="40" y="40" width="176" height="176" rx="44" fill="#ddd6fe" fill-opacity="0.18"/>
|
||||||
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
|
<g style="color:#ffffff" fill="currentColor">
|
||||||
<path d="M80 88h96a48 48 0 0 1 46 62l-12 40a20 20 0 0 1-34 8l-28-30h-40l-28 30a20 20 0 0 1-34-8l-12-40a48 48 0 0 1 46-62Z"/>
|
<line x1="152" y1="104" x2="176" y2="104" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="72" y1="104" x2="104" y2="104" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="88" y1="88" x2="88" y2="120" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M105.91,152,63.8,199.8a28,28,0,0,1-47.37-24.66L32.79,91a52,52,0,0,1,51.1-43H172a52,52,0,1,1,0,104Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M150.09,152l42.11,47.8a28,28,0,0,0,47.37-24.66L223.21,91" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
<line x1="80" y1="128" x2="112" y2="128"/>
|
|
||||||
<line x1="96" y1="112" x2="96" y2="144"/>
|
|
||||||
<line x1="160" y1="124" x2="160" y2="124" stroke-width="24"/>
|
|
||||||
<line x1="188" y1="140" x2="188" y2="140" stroke-width="24"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 666 B After Width: | Height: | Size: 1.1 KiB |
|
|
@ -1,10 +1,7 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<rect x="24" y="24" width="208" height="208" rx="56" fill="#0f766e"/>
|
<rect x="24" y="24" width="208" height="208" rx="56" fill="#0f766e"/>
|
||||||
<rect x="40" y="40" width="176" height="176" rx="44" fill="#67e8f9" fill-opacity="0.14"/>
|
<rect x="40" y="40" width="176" height="176" rx="44" fill="#67e8f9" fill-opacity="0.14"/>
|
||||||
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
|
<g style="color:#ffffff" fill="currentColor">
|
||||||
<path d="M96 144V80a16 16 0 0 1 32 0v48"/>
|
<path d="M64,76a52,52,0,0,1,104,0" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M72,224,42.68,174a20,20,0,0,1,34.64-20L96,184V76a20,20,0,0,1,40,0v56a20,20,0,0,1,40,0v16a20,20,0,0,1,40,0v36c0,24-8,40-8,40" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
<path d="M128 128V96a16 16 0 0 1 32 0v40"/>
|
|
||||||
<path d="M160 136v-24a16 16 0 0 1 32 0v48a56 56 0 0 1-56 56h-8a56 56 0 0 1-56-56v-16a16 16 0 0 1 32 0v8"/>
|
|
||||||
<circle cx="112" cy="48" r="16"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 560 B After Width: | Height: | Size: 650 B |
|
|
@ -1,12 +1,7 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<rect x="24" y="24" width="208" height="208" rx="56" fill="#334155"/>
|
<rect x="24" y="24" width="208" height="208" rx="56" fill="#334155"/>
|
||||||
<rect x="40" y="40" width="176" height="176" rx="44" fill="#94a3b8" fill-opacity="0.14"/>
|
<rect x="40" y="40" width="176" height="176" rx="44" fill="#94a3b8" fill-opacity="0.14"/>
|
||||||
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
|
<g style="color:#ffffff" fill="currentColor">
|
||||||
<rect x="36" y="76" width="184" height="112" rx="20"/>
|
<rect x="24" y="56" width="208" height="144" rx="8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="56" y1="128" x2="200" y2="128" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="56" y1="96" x2="200" y2="96" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="56" y1="160" x2="64" y2="160" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="96" y1="160" x2="160" y2="160" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="192" y1="160" x2="200" y2="160" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
<line x1="76" y1="112" x2="76.01" y2="112" stroke-width="20"/>
|
|
||||||
<line x1="112" y1="112" x2="112.01" y2="112" stroke-width="20"/>
|
|
||||||
<line x1="148" y1="112" x2="148.01" y2="112" stroke-width="20"/>
|
|
||||||
<line x1="184" y1="112" x2="184.01" y2="112" stroke-width="20"/>
|
|
||||||
<line x1="88" y1="152" x2="168" y2="152"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 688 B After Width: | Height: | Size: 1.1 KiB |
|
|
@ -1,11 +1,7 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<rect x="24" y="24" width="208" height="208" rx="56" fill="#0369a1"/>
|
<rect x="24" y="24" width="208" height="208" rx="56" fill="#0369a1"/>
|
||||||
<rect x="40" y="40" width="176" height="176" rx="44" fill="#7dd3fc" fill-opacity="0.14"/>
|
<rect x="40" y="40" width="176" height="176" rx="44" fill="#7dd3fc" fill-opacity="0.14"/>
|
||||||
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="14">
|
<g style="color:#ffffff" fill="currentColor">
|
||||||
<circle cx="128" cy="128" r="72"/>
|
<circle cx="128" cy="128" r="96" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M168,128c0,64-40,96-40,96s-40-32-40-96,40-96,40-96S168,64,168,128Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="37.46" y1="96" x2="218.54" y2="96" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="37.46" y1="160" x2="218.54" y2="160" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
<ellipse cx="128" cy="128" rx="32" ry="72"/>
|
|
||||||
<line x1="56" y1="128" x2="200" y2="128"/>
|
|
||||||
<path d="M72 92c14 10 35 16 56 16s42-6 56-16"/>
|
|
||||||
<path d="M72 164c14-10 35-16 56-16s42 6 56 16"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 552 B After Width: | Height: | Size: 883 B |
|
|
@ -1,9 +1,7 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<rect x="24" y="24" width="208" height="208" rx="56" fill="#475569"/>
|
<rect x="24" y="24" width="208" height="208" rx="56" fill="#475569"/>
|
||||||
<rect x="40" y="40" width="176" height="176" rx="44" fill="#cbd5e1" fill-opacity="0.14"/>
|
<rect x="40" y="40" width="176" height="176" rx="44" fill="#cbd5e1" fill-opacity="0.14"/>
|
||||||
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
|
<g style="color:#ffffff" fill="currentColor">
|
||||||
<rect x="80" y="44" width="96" height="168" rx="48"/>
|
<rect x="56" y="24" width="144" height="208" rx="56" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="128" y1="112" x2="128" y2="24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="56" y1="112" x2="200" y2="112" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
<line x1="128" y1="44" x2="128" y2="96"/>
|
|
||||||
<line x1="80" y1="104" x2="176" y2="104"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 471 B After Width: | Height: | Size: 716 B |
|
|
@ -1,10 +1,7 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<rect x="24" y="24" width="208" height="208" rx="56" fill="#7c3aed"/>
|
<rect x="24" y="24" width="208" height="208" rx="56" fill="#7c3aed"/>
|
||||||
<rect x="40" y="40" width="176" height="176" rx="44" fill="#ddd6fe" fill-opacity="0.18"/>
|
<rect x="40" y="40" width="176" height="176" rx="44" fill="#ddd6fe" fill-opacity="0.18"/>
|
||||||
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
|
<g style="color:#ffffff" fill="currentColor">
|
||||||
<path d="M64 184h128"/>
|
<path d="M96,192a32,32,0,0,0,64,0" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M56,104a72,72,0,0,1,144,0c0,35.82,8.3,64.6,14.9,76A8,8,0,0,1,208,192H48a8,8,0,0,1-6.88-12C47.71,168.6,56,139.81,56,104Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
<path d="M88 184V112a40 40 0 0 1 80 0v72"/>
|
|
||||||
<path d="M112 208a24 24 0 0 0 32 0"/>
|
|
||||||
<path d="M128 56V40"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 461 B After Width: | Height: | Size: 646 B |
|
|
@ -1,10 +1,7 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<rect x="24" y="24" width="208" height="208" rx="56" fill="#475569"/>
|
<rect x="24" y="24" width="208" height="208" rx="56" fill="#475569"/>
|
||||||
<rect x="40" y="40" width="176" height="176" rx="44" fill="#cbd5e1" fill-opacity="0.14"/>
|
<rect x="40" y="40" width="176" height="176" rx="44" fill="#cbd5e1" fill-opacity="0.14"/>
|
||||||
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
|
<g style="color:#ffffff" fill="currentColor">
|
||||||
<rect x="52" y="84" width="88" height="88" rx="16"/>
|
<rect x="40" y="144" width="176" height="64" rx="8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><rect x="40" y="48" width="176" height="64" rx="8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><circle cx="180" cy="80" r="12"/><circle cx="180" cy="176" r="12"/>
|
||||||
<rect x="160" y="64" width="44" height="128" rx="22"/>
|
|
||||||
<line x1="182" y1="64" x2="182" y2="104"/>
|
|
||||||
<line x1="76" y1="200" x2="116" y2="200"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 526 B After Width: | Height: | Size: 651 B |
|
|
@ -1,15 +1,7 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<rect x="24" y="24" width="208" height="208" rx="56" fill="#4f46e5"/>
|
<rect x="24" y="24" width="208" height="208" rx="56" fill="#4f46e5"/>
|
||||||
<rect x="40" y="40" width="176" height="176" rx="44" fill="#c7d2fe" fill-opacity="0.18"/>
|
<rect x="40" y="40" width="176" height="176" rx="44" fill="#c7d2fe" fill-opacity="0.18"/>
|
||||||
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
|
<g style="color:#ffffff" fill="currentColor">
|
||||||
<circle cx="128" cy="128" r="40"/>
|
<circle cx="128" cy="128" r="40" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><path d="M41.43,178.09A99.14,99.14,0,0,1,31.36,153.8l16.78-21a81.59,81.59,0,0,1,0-9.64l-16.77-21a99.43,99.43,0,0,1,10.05-24.3l26.71-3a81,81,0,0,1,6.81-6.81l3-26.7A99.14,99.14,0,0,1,102.2,31.36l21,16.78a81.59,81.59,0,0,1,9.64,0l21-16.77a99.43,99.43,0,0,1,24.3,10.05l3,26.71a81,81,0,0,1,6.81,6.81l26.7,3a99.14,99.14,0,0,1,10.07,24.29l-16.78,21a81.59,81.59,0,0,1,0,9.64l16.77,21a99.43,99.43,0,0,1-10,24.3l-26.71,3a81,81,0,0,1-6.81,6.81l-3,26.7a99.14,99.14,0,0,1-24.29,10.07l-21-16.78a81.59,81.59,0,0,1-9.64,0l-21,16.77a99.43,99.43,0,0,1-24.3-10l-3-26.71a81,81,0,0,1-6.81-6.81Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
<path d="M128 48v24"/>
|
|
||||||
<path d="M128 184v24"/>
|
|
||||||
<path d="M48 128h24"/>
|
|
||||||
<path d="M184 128h24"/>
|
|
||||||
<path d="M72 72l17 17"/>
|
|
||||||
<path d="M167 167l17 17"/>
|
|
||||||
<path d="M184 72l-17 17"/>
|
|
||||||
<path d="M89 167l-17 17"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 567 B After Width: | Height: | Size: 1.1 KiB |
|
|
@ -1,8 +1,7 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
|
||||||
<rect x="24" y="24" width="208" height="208" rx="56" fill="#4f46e5"/>
|
<rect x="24" y="24" width="208" height="208" rx="56" fill="#4f46e5"/>
|
||||||
<rect x="40" y="40" width="176" height="176" rx="44" fill="#c4b5fd" fill-opacity="0.15"/>
|
<rect x="40" y="40" width="176" height="176" rx="44" fill="#c4b5fd" fill-opacity="0.15"/>
|
||||||
<g fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="16">
|
<g style="color:#ffffff" fill="currentColor">
|
||||||
<circle cx="112" cy="112" r="52"/>
|
<circle cx="112" cy="112" r="80" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="168.57" y1="168.57" x2="224" y2="224" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
||||||
<line x1="152" y1="152" x2="196" y2="196"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 411 B After Width: | Height: | Size: 562 B |