Browse Source

Some progress with schema management

pull/1/head
Sebastian 9 years ago
parent
commit
468bcda2eb
  1. 3
      src/Squidex/app/features/schemas/declarations.ts
  2. 10
      src/Squidex/app/features/schemas/module.ts
  3. 106
      src/Squidex/app/features/schemas/pages/schema/field.component.html
  4. 78
      src/Squidex/app/features/schemas/pages/schema/field.component.scss
  5. 109
      src/Squidex/app/features/schemas/pages/schema/field.component.ts
  6. 6
      src/Squidex/app/features/schemas/pages/schema/schema-page.component.html
  7. 2
      src/Squidex/app/features/schemas/pages/schema/schema-page.component.scss
  8. 11
      src/Squidex/app/features/schemas/pages/schema/schema-page.component.ts
  9. 21
      src/Squidex/app/features/schemas/pages/schema/types/string-ui.component.html
  10. 2
      src/Squidex/app/features/schemas/pages/schema/types/string-ui.component.scss
  11. 34
      src/Squidex/app/features/schemas/pages/schema/types/string-ui.component.ts
  12. 45
      src/Squidex/app/features/schemas/pages/schema/types/string-validation.component.html
  13. 16
      src/Squidex/app/features/schemas/pages/schema/types/string-validation.component.scss
  14. 51
      src/Squidex/app/features/schemas/pages/schema/types/string-validation.component.ts
  15. 4
      src/Squidex/app/features/schemas/pages/schemas/schema-form.component.html
  16. 6
      src/Squidex/app/features/settings/pages/clients/client.component.ts
  17. 2
      src/Squidex/app/features/settings/pages/languages/languages-page.component.ts
  18. 2
      src/Squidex/app/framework/utils/color.ts
  19. 2
      src/Squidex/app/framework/utils/immutable-array.ts
  20. 2
      src/Squidex/app/shared/components/app-form.component.html
  21. 3
      src/Squidex/app/shared/services/auth.service.ts
  22. 49
      src/Squidex/app/shared/services/schemas.service.ts
  23. 2
      src/Squidex/app/shell/pages/app/left-menu.component.html
  24. 40
      src/Squidex/app/theme/_bootstrap.scss
  25. BIN
      src/Squidex/app/theme/icomoon/fonts/icomoon.eot
  26. 4
      src/Squidex/app/theme/icomoon/fonts/icomoon.svg
  27. BIN
      src/Squidex/app/theme/icomoon/fonts/icomoon.ttf
  28. BIN
      src/Squidex/app/theme/icomoon/fonts/icomoon.woff
  29. 96
      src/Squidex/app/theme/icomoon/selection.json
  30. 18
      src/Squidex/app/theme/icomoon/style.css

3
src/Squidex/app/features/schemas/declarations.ts

@ -5,6 +5,9 @@
* Copyright (c) Sebastian Stehle. All rights reserved
*/
export * from './pages/schema/types/string-ui.component';
export * from './pages/schema/types/string-validation.component';
export * from './pages/schema/field.component';
export * from './pages/schema/schema-page.component';
export * from './pages/schemas/schema-form.component';
export * from './pages/schemas/schemas-page.component';

10
src/Squidex/app/features/schemas/module.ts

@ -11,9 +11,12 @@ import { RouterModule, Routes } from '@angular/router';
import { SqxFrameworkModule, SqxSharedModule } from 'shared';
import {
FieldComponent,
SchemaFormComponent,
SchemaPageComponent,
SchemasPageComponent
SchemasPageComponent,
StringUIComponent,
StringValidationComponent
} from './declarations';
const routes: Routes = [
@ -38,9 +41,12 @@ const routes: Routes = [
RouterModule.forChild(routes)
],
declarations: [
FieldComponent,
SchemaFormComponent,
SchemaPageComponent,
SchemasPageComponent
SchemasPageComponent,
StringUIComponent,
StringValidationComponent
]
})
export class SqxFeatureSchemasModule { }

106
src/Squidex/app/features/schemas/pages/schema/field.component.html

@ -0,0 +1,106 @@
<div class="table-items-row">
<div class="field-summary">
<div class="row">
<div class="col-xs-8">
{{field.name}}
</div>
<div class="col-xs-4">
<div class="float-xs-right">
<button type="button" class="btn btn-secondary field-edit-button" [class.active]="isEditing" (click)="toggleEditing()">
<i class="icon-settings"></i>
</button>
<button type="button" class="btn btn-simple">
<i class="icon-dots"></i>
</button>
</div>
</div>
</div>
</div>
<div class="field-details" *ngIf="isEditing">
<form [formGroup]="editForm" (submit)="save()">
<div class="field-details-tabs clearfix">
<ul class="nav nav-inline nav-field-tabs">
<li class="nav-item">
<a class="nav-link" (click)="selectTab(0)" [class.active]="selectedTab === 0">Common</a>
</li>
<li class="nav-item">
<a class="nav-link" (click)="selectTab(1)" [class.active]="selectedTab === 1">Validation</a>
</li>
<li class="nav-item">
<a class="nav-link" (click)="selectTab(2)" [class.active]="selectedTab === 2">User Interface</a>
</li>
</ul>
<div class="float-xs-right">
<button type="reset" class="btn btn-link" (click)="cancel()">Cancel</button>
<button type="submit" class="btn btn-primary">Save</button>
</div>
</div>
<div class="field-details-tab" *ngIf="selectedTab == 0">
<div class="form-group row">
<label for="field-label" class="col-xs-3 col-form-label">Label</label>
<div class="col-xs-6">
<div class="errors-box" *ngIf="editForm.get('label').invalid && editForm.get('label').touched" [@fade]>
<div class="errors">
<span *ngIf="editForm.get('label').hasError('maxlength')">
Label can not have more than 100 characters.
</span>
</div>
</div>
<input type="text" class="form-control" id="field-label" maxlength="100" formControlName="label" />
<span class="form-hint">
Define the display name for the field for documentation and user interfaces.
</span>
</div>
</div>
<div class="form-group row">
<label for="field-hints" class="col-xs-3 col-form-label">Hints</label>
<div class="col-xs-6">
<div class="errors-box" *ngIf="editForm.get('hints').invalid && editForm.get('hints').touched" [@fade]>
<div class="errors">
<span *ngIf="editForm.get('hints').hasError('maxlength')">
Hints can not have more than 100 characters.
</span>
</div>
</div>
<input type="text" class="form-control" id="field-hints" maxlength="100" formControlName="hints" />
<span class="form-hint">
Define some hints for the user and editor for the field for documentation and user interfaces.
</span>
</div>
</div>
</div>
<div class="field-details-tab" *ngIf="selectedTab == 1">
<div [ngSwitch]="field.properties.fieldType">
<div *ngSwitchCase="'number'">
asdsad
</div>
<div *ngSwitchCase="'string'">
<sqx-string-validation [editForm]="editForm" [properties]="field.properties"></sqx-string-validation>
</div>
</div>
</div>
<div class="field-details-tab" *ngIf="selectedTab == 2">
<div [ngSwitch]="field.properties.fieldType">
<div *ngSwitchCase="'number'">
asdsad
</div>
<div *ngSwitchCase="'string'">
<sqx-string-ui [editForm]="editForm" [properties]="field.properties"></sqx-string-ui>
</div>
</div>
</div>
</form>
</div>
</div>

78
src/Squidex/app/features/schemas/pages/schema/field.component.scss

@ -0,0 +1,78 @@
@import '_vars';
@import '_mixins';
$field-header: #e7ebef;
.table-items-row {
padding: 0;
}
.field {
&-summary {
padding: 15px 20px;
line-height: 40px;
}
&-edit-button {
& {
color: $color-theme-blue;
}
&:hover {
color: $color-theme-blue-dark;
}
&.active {
background: $color-theme-blue;
border: 0;
color: $color-accent-dark;
}
}
&-details {
& {
position: relative;
}
&::before {
@include caret-top;
@include absolute(-10px, 90px, auto, auto);
border-color: transparent transparent $color-border;
border-width: 10px;
}
&-tab {
padding: 15px 20px 20px;
}
&-tabs {
background: $color-border;
position: relative;
padding: 15px 20px;
}
}
}
.nav-field-tabs {
& {
@include absolute(auto, auto, 0, 20px);
}
& .nav-link {
& {
color: $color-text;
cursor: pointer;
padding: 18px 10px;
border-bottom: 4px solid transparent;
}
&.active {
font-weight: bold;
}
&.active,
&:hover {
border-color: $color-theme-blue;
}
}
}

109
src/Squidex/app/features/schemas/pages/schema/field.component.ts

@ -0,0 +1,109 @@
/*
* Squidex Headless CMS
*
* @license
* Copyright (c) Sebastian Stehle. All rights reserved
*/
import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { Observable} from 'rxjs';
import {
createProperties,
fadeAnimation,
FieldDto,
FieldPropertiesDto
} from 'shared';
const ESCAPE_KEY = 27;
@Component({
selector: 'sqx-field',
styleUrls: ['./field.component.scss'],
templateUrl: './field.component.html',
animations: [
fadeAnimation
]
})
export class FieldComponent implements OnInit {
private oldValue: any;
@Input()
public field: FieldDto;
@Output()
public saved = new EventEmitter<FieldDto>();
public isEditing: boolean = false;
public selectedTab = 0;
public editForm: FormGroup =
this.formBuilder.group({
label: ['',
[
Validators.maxLength(100)
]],
hints: ['',
[
Validators.maxLength(100)
]],
isRequired: [false]
});
constructor(
private readonly formBuilder: FormBuilder
) {
}
public ngOnInit() {
this.resetForm(this.field.properties);
}
public save() {
this.editForm.markAsTouched();
if (this.editForm.valid) {
const properties = createProperties(this.field.properties['fieldType'], this.editForm.value);
const field =
new FieldDto(
this.field.name,
this.field.isHidden,
this.field.isHidden,
properties);
this.saved.emit(field);
}
}
public cancel() {
this.resetForm(this.oldValue);
}
public toggleEditing() {
this.isEditing = true;
}
public selectTab(tab: number) {
this.selectedTab = tab;
}
private resetForm(properties: any) {
this.editForm.reset();
for (let property in properties) {
if (properties.hasOwnProperty(property)) {
const controlName = property + '';
if (this.editForm.contains(controlName)) {
this.editForm.get(controlName).setValue(properties[property]);
}
}
}
this.oldValue = Object.assign({}, this.editForm.value);
this.isEditing = false;
}
}

6
src/Squidex/app/features/schemas/pages/schema/schema-page.component.html

@ -1,4 +1,4 @@
<sqx-title message="{app} | {schema}" parameter1="app" value1="{{appName() | async}}" parameter="schema" value2="{{schemaName | async}}"></sqx-title>
<sqx-title message="{app} | {schema}" parameter1="app" value1="{{appName() | async}}" parameter2="schema" value2="{{schemaName | async}}"></sqx-title>
<div class="panel panel-light">
<div class="panel-header">
@ -12,6 +12,10 @@
</div>
<div class="panel-content">
<div *ngFor="let field of schemaFields">
<sqx-field [field]="field" (saved)="updateField(field, $event)"></sqx-field>
</div>
<div class="table-items-footer">
<form class="form-inline" [formGroup]="addFieldForm" (submit)="addField()">
<div class="form-group">

2
src/Squidex/app/features/schemas/pages/schema/schema-page.component.scss

@ -2,6 +2,6 @@
@import '_mixins';
.panel {
min-width: 700px;
min-width: 760px;
max-width: 700px;
}

11
src/Squidex/app/features/schemas/pages/schema/schema-page.component.ts

@ -73,6 +73,7 @@ export class SchemaPageComponent extends AppComponentBase implements OnInit {
public load() {
this.schemaName.combineLatest(this.appName(), (schemaName, appName) => { return { schemaName, appName }; })
.do(() => this.reset())
.switchMap(p => this.schemasService.getSchema(p.appName, p.schemaName)).retry(2)
.subscribe(dto => {
this.schemaFields = ImmutableArray.of(dto.fields);
@ -81,6 +82,10 @@ export class SchemaPageComponent extends AppComponentBase implements OnInit {
});
}
public updateField(field: FieldDto, newField: FieldDto) {
this.updateFields(this.schemaFields.replace(field, newField));
}
public addField() {
this.addFieldForm.markAsTouched();
@ -100,7 +105,7 @@ export class SchemaPageComponent extends AppComponentBase implements OnInit {
const dto = new AddFieldDto(this.addFieldForm.get('name').value, properties);
const reset = () => {
this.addFieldForm.reset();
this.addFieldForm.get('name').reset();
this.addFieldForm.enable();
};
@ -116,6 +121,10 @@ export class SchemaPageComponent extends AppComponentBase implements OnInit {
}
}
private reset() {
this.schemaFields = ImmutableArray.empty<FieldDto>();
}
private updateFields(fields: ImmutableArray<FieldDto>) {
this.schemaFields = fields;

21
src/Squidex/app/features/schemas/pages/schema/types/string-ui.component.html

@ -0,0 +1,21 @@
<div [formGroup]="editForm">
<div class="form-group row">
<label for="field-input-placeholder" class="col-xs-3 col-form-label">Placeholder</label>
<div class="col-xs-6">
<div class="errors-box" *ngIf="editForm.get('placeholder').invalid && editForm.get('placeholder').touched" [@fade]>
<div class="errors">
<span *ngIf="editForm.get('placeholder').hasError('maxlength')">
Placeholder can not have more than 100 characters.
</span>
</div>
</div>
<input type="text" class="form-control" id="field-input-placeholder" maxlength="100" formControlName="placeholder" />
<span class="form-hint">
Define the placeholder for the input control.
</span>
</div>
</div>
</div>

2
src/Squidex/app/features/schemas/pages/schema/types/string-ui.component.scss

@ -0,0 +1,2 @@
@import '_vars';
@import '_mixins';

34
src/Squidex/app/features/schemas/pages/schema/types/string-ui.component.ts

@ -0,0 +1,34 @@
/*
* Squidex Headless CMS
*
* @license
* Copyright (c) Sebastian Stehle. All rights reserved
*/
import { Component, Input, OnInit } from '@angular/core';
import { FormControl, FormGroup, Validators } from '@angular/forms';
import { fadeAnimation, StringFieldPropertiesDto } from 'shared';
@Component({
selector: 'sqx-string-ui',
styleUrls: ['string-ui.component.scss'],
templateUrl: 'string-ui.component.html',
animations: [
fadeAnimation
]
})
export class StringUIComponent implements OnInit {
@Input()
public editForm: FormGroup;
@Input()
public properties: StringFieldPropertiesDto;
public ngOnInit() {
this.editForm.addControl('placeholder',
new FormControl('', [
Validators.maxLength(100)
]));
}
}

45
src/Squidex/app/features/schemas/pages/schema/types/string-validation.component.html

@ -0,0 +1,45 @@
<div [formGroup]="editForm">
<div class="form-group row">
<label for="field-required" class="col-xs-3">Required</label>
<div class="col-xs-6">
<input type="checkbox" class="form-check-input" id="field-required" formControlName="isRequired" />
</div>
</div>
<div class="form-group row">
<label class="col-xs-3 col-form-label">Length</label>
<div class="col-xs-3 minlength-col">
<input type="number" class="form-control" id="field-min-length" formControlName="minLength" placeholder="Min Length" />
<label class="col-form-label minlength-label">-</label>
</div>
<div class="col-xs-3">
<input type="number" class="form-control" id="field-max-length" formControlName="maxLength" placeholder="Max Length" />
</div>
</div>
<div class="form-group row">
<label class="col-xs-3 col-form-label" for="field-pattern">Pattern</label>
<div class="col-xs-6">
<input type="text" class="form-control" id="field-pattern" formControlName="pattern" placeholder="Regex Pattern" />
</div>
</div>
<div class="form-group row" [class.hide]="hidePatternMessage | async">
<label class="col-xs-3 col-form-label" for="field-pattern-message">Pattern Message</label>
<div class="col-xs-6">
<input type="text" class="form-control" id="field-pattern-message" formControlName="patternMessage" />
</div>
</div>
<div class="form-group row" [class.hide]="(hideDefaultValue | async)">
<label class="col-xs-3 col-form-label" for="field-default-value">Default Value</label>
<div class="col-xs-6">
<input type="text" class="form-control" id="field-default-value" formControlName="defaultValue" />
</div>
</div>
</div>

16
src/Squidex/app/features/schemas/pages/schema/types/string-validation.component.scss

@ -0,0 +1,16 @@
@import '_vars';
@import '_mixins';
.minlength {
&-col {
position: relative;
}
&-label {
@include absolute(0, -4px, auto, auto);
}
}
.form-check-input {
margin: 0;
}

51
src/Squidex/app/features/schemas/pages/schema/types/string-validation.component.ts

@ -0,0 +1,51 @@
/*
* Squidex Headless CMS
*
* @license
* Copyright (c) Sebastian Stehle. All rights reserved
*/
import { Component, Input, OnInit } from '@angular/core';
import { FormControl, FormGroup } from '@angular/forms';
import { Observable } from 'rxjs';
import { StringFieldPropertiesDto } from 'shared';
@Component({
selector: 'sqx-string-validation',
styleUrls: ['string-validation.component.scss'],
templateUrl: 'string-validation.component.html'
})
export class StringValidationComponent implements OnInit {
@Input()
public editForm: FormGroup;
@Input()
public properties: StringFieldPropertiesDto;
public hidePatternMessage: Observable<boolean>;
public hideDefaultValue: Observable<boolean>;
public ngOnInit() {
this.editForm.addControl('maxLength',
new FormControl());
this.editForm.addControl('minLength',
new FormControl());
this.editForm.addControl('pattern',
new FormControl());
this.editForm.addControl('patternMessage',
new FormControl());
this.editForm.addControl('defaultValue',
new FormControl());
this.hideDefaultValue =
Observable.of(false)
.merge(this.editForm.get('isRequired').valueChanges)
.map(x => !!x);
this.hidePatternMessage =
Observable.of(false)
.merge(this.editForm.get('pattern').valueChanges)
.map(x => !x || x.trim().length === 0);
}
}

4
src/Squidex/app/features/schemas/pages/schemas/schema-form.component.html

@ -6,7 +6,7 @@
</div>
<div class="form-group">
<label for="app-name">Name</label>
<label for="schema-name">Name</label>
<div class="errors-box" *ngIf="createForm.get('name').invalid && createForm.get('name').touched" [@fade]>
<div class="errors">
@ -22,7 +22,7 @@
</div>
</div>
<input type="text" class="form-control" formControlName="name" />
<input type="text" class="form-control" id="schema-name" formControlName="name" />
<span class="form-hint">
<p>

6
src/Squidex/app/features/settings/pages/clients/client.component.ts

@ -47,15 +47,15 @@ export class ClientComponent {
public modalDialog = new ModalView();
public get clientName() {
public get clientName(): string {
return this.client.name || this.client.id;
}
public get clientId() {
public get clientId(): string {
return this.appName + ':' + this.client.id;
}
public get clientSecret() {
public get clientSecret(): string {
return this.client.secret;
}

2
src/Squidex/app/features/settings/pages/languages/languages-page.component.ts

@ -40,7 +40,7 @@ export class LanguagesPageComponent extends AppComponentBase implements OnInit {
]
});
public get newLanguages() {
public get newLanguages(): LanguageDto[] {
return this.allLanguages.filter(x => !this.appLanguages.find(l => l.iso2Code === x.iso2Code));
}

2
src/Squidex/app/framework/utils/color.ts

@ -48,7 +48,7 @@ export class Color {
public readonly g: number;
public readonly b: number;
public get luminance() {
public get luminance(): number {
return (this.r + this.r + this.b + this.g + this.g + this.g) / 6;
}

2
src/Squidex/app/framework/utils/immutable-array.ts

@ -15,7 +15,7 @@ export class ImmutableArray<T> implements Iterable<T> {
return this.items.values();
}
public get length() {
public get length(): number {
return this.items.length;
}

2
src/Squidex/app/shared/components/app-form.component.html

@ -22,7 +22,7 @@
</div>
</div>
<input type="text" class="form-control" formControlName="name" />
<input type="text" class="form-control" id="app-name" formControlName="name" />
<span class="form-hint">
<p>

3
src/Squidex/app/shared/services/auth.service.ts

@ -196,8 +196,7 @@ export class AuthService {
return Observable.empty<Response>();
}
return Observable.throw(response);
return Observable.throw(error);
});
}

49
src/Squidex/app/shared/services/schemas.service.ts

@ -17,6 +17,23 @@ import {
import { AuthService } from './auth.service';
export function createProperties(fieldType: string, values: {}): FieldPropertiesDto {
let properties: FieldPropertiesDto;
switch (fieldType) {
case 'number':
properties = new NumberFieldPropertiesDto();
break;
case 'string':
properties = new StringFieldPropertiesDto();
break;
}
Object.assign(properties, values);
return properties;
}
export class SchemaDto {
constructor(
public readonly id: string,
@ -156,34 +173,10 @@ export class SchemasService {
.map(response => response.json())
.map(response => {
const fields = response.fields.map((item: any) => {
const typeName = item['$type'];
let properties = item.properties;
let propertiesDto: FieldPropertiesDto;
if (typeName === 'String') {
propertiesDto = new StringFieldPropertiesDto(
properties.label,
properties.hints,
properties.placeholder,
properties.isRequired,
properties.defaultValue,
properties.pattern,
properties.patternMessage,
properties.minLength,
properties.maxLength,
properties.allowedValues);
} else {
propertiesDto = new NumberFieldPropertiesDto(
properties.label,
properties.hints,
properties.placeholder,
properties.isRequired,
properties.defaultValue,
properties.minValue,
properties.maxValue,
properties.allowedValues);
}
const propertiesDto =
createProperties(
item.properties.fieldType,
item.properties);
return new FieldDto(
item.name,

2
src/Squidex/app/shell/pages/app/left-menu.component.html

@ -17,7 +17,7 @@
</li>
<li class="nav-item" *ngIf="permission === 'Owner'">
<a class="nav-link" routerLink="settings" routerLinkActive="active">
<i class="nav-icon icon-settings"></i> <span class="nav-text">Settings</span>
<i class="nav-icon icon-settings2"></i> <span class="nav-text">Settings</span>
</a>
</li>
</ul>

40
src/Squidex/app/theme/_bootstrap.scss

@ -1,6 +1,10 @@
@import '_mixins';
@import '_vars';
.hide {
display: none;
}
.table {
&-fixed {
table-layout: fixed;
@ -117,7 +121,7 @@
}
&::after {
@include absolute(2rem, auto, auto, .6rem);
@include absolute(auto, auto, -.8rem, 10px);
content: '';
height: 0;
border-style: solid;
@ -127,15 +131,15 @@
}
& {
@include absolute(-2.4rem, auto, auto, 0);
@include absolute(auto, auto, .4rem, 0);
@include border-radius(2px);
color: $color-accent-dark;
cursor: none;
display: inline-block;
font-size: .9rem;
font-weight: normal;
line-height: 2rem;
padding: 0 .4rem;
line-height: 1.1rem;
padding: .3rem .4rem;
background: $color-theme-error;
}
}
@ -163,7 +167,7 @@
.form-group {
&:last-child {
margin: 0;
margin-bottom: 0;
}
}
@ -224,19 +228,25 @@
}
}
.btn-cancel {
padding: .2rem;
font-size: 1.5rem;
font-weight: normal;
}
.btn {
&-simple {
background: transparent;
}
.btn-link {
&.btn-danger {
@include link-button($color-theme-error);
&-cancel {
padding: .2rem;
font-size: 1.5rem;
font-weight: normal;
}
&.btn-primary {
@include link-button($color-theme-blue);
&-link {
&.btn-danger {
@include link-button($color-theme-error);
}
&.btn-primary {
@include link-button($color-theme-blue);
}
}
}

BIN
src/Squidex/app/theme/icomoon/fonts/icomoon.eot

Binary file not shown.

4
src/Squidex/app/theme/icomoon/fonts/icomoon.svg

@ -13,12 +13,14 @@
<glyph unicode="&#xe8b6;" glyph-name="search" d="M406 340.667c106 0 192 86 192 192s-86 192-192 192-192-86-192-192 86-192 192-192zM662 340.667l212-212-64-64-212 212v34l-12 12c-48-42-112-66-180-66-154 0-278 122-278 276s124 278 278 278 276-124 276-278c0-68-24-132-66-180l12-12h34z" />
<glyph unicode="&#xe900;" glyph-name="logo" d="M512.34 939.52c-0.174-0.065-226.41-96.5-283.902-294.74-5.545-19.035 40.453-10.673 38.399-31.6-2.517-25.409-55.264-35.821-48.385-108.78 7.001-74.289 74.617-149.342 84.791-194.72v-31.78c-0.615-9.802-5.639-36.405-22.285-49.4-9.13-7.105-21.442-9.661-37.671-7.78-22.528 2.612-31.493 16.604-35.078 27.9-5.881 18.616-0.409 40.331 12.793 50.52 13.271 10.243 15.084 28.513 4.029 40.82-11.055 12.296-30.785 13.965-44.056 3.7-32.168-24.839-45.65-70.615-32.785-111.34 12.146-38.328 44.789-64.147 87.363-69.080 6.067-0.699 11.848-1.040 17.335-1.040 32.945 0 55.27 11.669 68.785 22.32 40.671 32.105 43.867 85.623 44.099 91.62 0.011 0.355 0.022 0.705 0.022 1.060v24.36h0.129v1.64c0 14.177 12.394 25.66 27.707 25.66 14.869 0 26.889-10.843 27.578-24.46v-232.2c-0.255-3.343-3.155-34.297-22.157-49.28-9.118-7.201-21.512-9.802-37.799-7.9-22.54 2.612-31.526 16.605-35.099 27.88-5.893 18.627-0.387 40.341 12.814 50.52 13.271 10.254 15.062 28.523 4.007 40.84-11.044 12.274-30.764 13.945-44.035 3.68-32.191-24.828-45.65-70.615-32.785-111.34 12.122-38.328 44.789-64.136 87.363-69.080 6.067-0.699 11.848-1.040 17.335-1.040 32.945 0 55.262 11.669 68.742 22.32 40.683 32.105 43.879 85.623 44.099 91.62 0.024 0.376 0.042 0.696 0.042 1.040v259l0.129 0.060v1.14c0 14.456 12.65 26.18 28.264 26.18 15.288 0 27.657-11.292 28.135-25.36v-261.020c0-0.355-0.002-0.675 0.022-1.040 0.232-5.987 3.438-59.515 44.121-91.62 13.504-10.652 35.819-22.32 68.764-22.32 5.499 0 11.258 0.341 17.314 1.040 42.562 4.944 75.24 30.763 87.363 69.080 12.876 40.725-0.584 86.501-32.764 111.34-13.294 10.265-33.013 8.584-44.056-3.68-11.055-12.328-9.264-30.586 4.007-40.84 13.201-10.179 18.697-31.893 12.793-50.52-3.561-11.275-12.55-25.268-35.078-27.88-16.217-1.892-28.531 0.675-37.649 7.78-16.716 13.038-21.715 39.783-22.307 49.36v231.8c0.445 13.816 12.612 24.9 27.642 24.9 15.313 0 27.707-11.472 27.707-25.66v-1.64h0.085v-24.36c0-0.365-0.002-0.716 0.022-1.060 0.22-5.987 3.438-59.515 44.121-91.62 13.503-10.651 35.818-22.32 68.763-22.32 5.487 0 11.259 0.332 17.314 1.020 42.562 4.933 75.24 30.783 87.363 69.1 12.876 40.725-0.606 86.49-32.785 111.34-13.294 10.254-33.003 8.576-44.035-3.72-11.067-12.307-9.285-30.557 3.986-40.8 13.201-10.189 18.719-31.904 12.814-50.52-3.561-11.296-12.571-25.299-35.099-27.9-16.194-1.892-28.51 0.686-37.628 7.78-16.716 13.048-21.727 39.785-22.307 49.34v24.24c6.634 62.066 78.084 123.637 85.499 202.32 6.844 72.959-45.943 83.371-48.449 108.78-2.065 20.927 43.943 12.565 38.421 31.6-57.503 198.24-283.718 294.675-283.88 294.74z" />
<glyph unicode="&#xe901;" glyph-name="plus" d="M810 384.667h-256v-256h-84v256h-256v84h256v256h84v-256h256v-84z" />
<glyph unicode="&#xe902;" glyph-name="settings2" d="M972.512 554.24l-98.048 19.648c-4.928 14.176-10.752 27.936-17.184 41.248l55.552 83.328c16.928 25.376 13.568 59.2-8 80.736l-61.568 61.568c-12.384 12.384-28.736 18.752-45.312 18.752-12.256 0-24.64-3.52-35.424-10.752l-83.328-55.52c-13.376 6.464-27.136 12.224-41.312 17.152l-19.648 98.080c-5.952 29.952-32.256 51.456-62.752 51.456h-87.040c-30.496 0-56.768-21.536-62.752-51.456l-19.648-98.080c-14.176-4.928-27.936-10.72-41.248-17.152l-83.296 55.52c-10.848 7.232-23.2 10.752-35.488 10.752-16.544 0-32.896-6.368-45.28-18.752l-61.536-61.568c-21.568-21.568-24.928-55.36-8-80.736l55.52-83.328c-6.464-13.344-12.224-27.104-17.152-41.28l-98.112-19.616c-29.92-5.984-51.456-32.256-51.456-62.752v-87.040c0-30.496 21.536-56.8 51.456-62.752l98.080-19.68c4.928-14.176 10.72-27.936 17.152-41.248l-55.488-83.328c-16.928-25.376-13.568-59.2 8-80.736l61.568-61.568c12.384-12.384 28.736-18.752 45.28-18.752 12.288 0 24.672 3.552 35.456 10.752l83.328 55.552c13.344-6.496 27.104-12.256 41.28-17.184l19.616-98.048c5.984-29.952 32.256-51.488 62.752-51.488h87.040c30.496 0 56.8 21.568 62.752 51.488l19.68 98.048c14.176 4.928 27.936 10.752 41.248 17.184l83.328-55.552c10.816-7.2 23.2-10.752 35.424-10.752 16.576 0 32.928 6.368 45.312 18.752l61.568 61.568c21.568 21.568 24.928 55.36 8 80.736l-55.552 83.328c6.496 13.376 12.256 27.136 17.184 41.312l98.048 19.616c29.92 5.92 51.488 32.256 51.488 62.752v87.040c0 30.496-21.568 56.768-51.488 62.752zM861.888 384.8c-22.24-4.448-40.448-20.32-47.872-41.76-4.128-11.808-8.928-23.264-14.304-34.368-9.952-20.448-8.256-44.576 4.32-63.424l55.552-83.328-61.568-61.568-83.328 55.552c-10.688 7.136-23.072 10.752-35.488 10.752-9.504 0-19.072-2.112-27.872-6.368-11.136-5.376-22.56-10.24-34.432-14.368-21.376-7.424-37.248-25.632-41.696-47.872l-19.68-98.112h-87.040l-19.616 98.112c-4.448 22.24-20.32 40.448-41.728 47.872-11.808 4.128-23.296 8.928-34.4 14.304-8.832 4.32-18.368 6.432-27.904 6.432-12.448 0-24.8-3.616-35.488-10.752l-83.328-55.552-61.568 61.568 55.52 83.328c12.576 18.88 14.208 43.008 4.384 63.36-5.376 11.136-10.208 22.56-14.336 34.432-7.424 21.376-25.664 37.248-47.872 41.696l-98.080 19.68-0.064 87.072 98.112 19.616c22.208 4.448 40.448 20.32 47.872 41.728 4.128 11.808 8.896 23.296 14.304 34.4 9.92 20.416 8.256 44.544-4.352 63.392l-55.488 83.328 61.536 61.568 83.328-55.52c10.688-7.136 23.072-10.752 35.488-10.752 9.504 0 19.040 2.112 27.872 6.368 11.104 5.376 22.56 10.208 34.4 14.336 21.408 7.424 37.28 25.664 41.728 47.872l19.648 98.080 87.040 0.032 19.616-98.112c4.448-22.208 20.32-40.448 41.76-47.872 11.808-4.128 23.264-8.896 34.368-14.304 8.864-4.288 18.368-6.4 27.936-6.4 12.448 0 24.8 3.616 35.488 10.752l83.328 55.52 61.568-61.568-55.552-83.328c-12.576-18.88-14.176-42.976-4.384-63.36 5.376-11.104 10.24-22.56 14.368-34.4 7.424-21.408 25.632-37.28 47.872-41.728l98.048-19.648 0.096-87.040-98.112-19.648zM512 671.968c-123.68 0-224-100.32-224-224 0-123.712 100.32-224 224-224s224 100.32 224 224c0 123.68-100.32 224-224 224zM512 251.936c-108.224 0-196 87.808-196 196 0 108.224 87.776 196 196 196 108.192 0 196-87.776 196-196 0-108.192-87.808-196-196-196zM512 575.968c-70.72 0-128-57.28-128-128 0-70.688 57.28-128 128-128 70.688 0 128 57.312 128 128s-57.312 128-128 128zM512 351.936c-52.992 0-96 43.008-96 96s43.008 96 96 96 96-43.008 96-96c0-52.992-43.008-96-96-96z" />
<glyph unicode="&#xe903;" glyph-name="dots" d="M512.051 573.44c-62.208 0-112.691-50.432-112.691-112.64s50.483-112.64 112.691-112.64c62.208 0 112.589 50.432 112.589 112.64s-50.381 112.64-112.589 112.64zM153.651 573.44c-62.208 0-112.691-50.432-112.691-112.64s50.483-112.64 112.691-112.64c62.208 0 112.589 50.483 112.589 112.64s-50.381 112.64-112.589 112.64zM870.451 573.44c-62.208 0-112.691-50.432-112.691-112.64s50.483-112.64 112.691-112.64c62.208 0 112.589 50.432 112.589 112.64s-50.381 112.64-112.589 112.64z" />
<glyph unicode="&#xe905;" glyph-name="pencil" d="M864 960c88.364 0 160-71.634 160-160 0-36.020-11.91-69.258-32-96l-64-64-224 224 64 64c26.742 20.090 59.978 32 96 32zM64 224l-64-288 288 64 592 592-224 224-592-592zM715.578 596.422l-448-448-55.156 55.156 448 448 55.156-55.156z" />
<glyph unicode="&#xe90e;" glyph-name="media" horiz-adv-x="1152" d="M1088 832h-64v64c0 35.2-28.8 64-64 64h-896c-35.2 0-64-28.8-64-64v-768c0-35.2 28.8-64 64-64h64v-64c0-35.2 28.8-64 64-64h896c35.2 0 64 28.8 64 64v768c0 35.2-28.8 64-64 64zM128 768v-640h-63.886c-0.040 0.034-0.082 0.076-0.114 0.116v767.77c0.034 0.040 0.076 0.082 0.114 0.114h895.77c0.040-0.034 0.082-0.076 0.116-0.116v-63.884h-768c-35.2 0-64-28.8-64-64v0zM1088 0.116c-0.034-0.040-0.076-0.082-0.116-0.116h-895.77c-0.040 0.034-0.082 0.076-0.114 0.116v767.77c0.034 0.040 0.076 0.082 0.114 0.114h895.77c0.040-0.034 0.082-0.076 0.116-0.116v-767.768zM960 608c0-53.020-42.98-96-96-96s-96 42.98-96 96 42.98 96 96 96 96-42.98 96-96zM1024 64h-768v128l224 384 256-320h64l224 192z" />
<glyph unicode="&#xe925;" glyph-name="content" d="M917.806 602.924c-22.21 30.292-53.174 65.7-87.178 99.704s-69.412 64.964-99.704 87.178c-51.574 37.82-76.592 42.194-90.924 42.194h-368c-44.114 0-80-35.888-80-80v-736c0-44.112 35.886-80 80-80h608c44.112 0 80 35.888 80 80v496c0 14.332-4.372 39.35-42.194 90.924zM785.374 657.374c30.7-30.7 54.8-58.398 72.58-81.374h-153.954v153.946c22.982-17.78 50.678-41.878 81.374-72.572v0zM896 16c0-8.672-7.328-16-16-16h-608c-8.672 0-16 7.328-16 16v736c0 8.672 7.328 16 16 16 0 0 367.956 0.002 368 0v-224c0-17.672 14.324-32 32-32h224v-496zM602.924 917.804c-51.574 37.822-76.592 42.196-90.924 42.196h-368c-44.112 0-80-35.888-80-80v-736c0-38.632 27.528-70.958 64-78.39v814.39c0 8.672 7.328 16 16 16h486.876c-9.646 7.92-19.028 15.26-27.952 21.804z" />
<glyph unicode="&#xe92c;" glyph-name="copy" d="M640 704v256h-448l-192-192v-576h384v-256h640v768h-384zM192 869.49v-101.49h-101.49l101.49 101.49zM64 256v448h192v192h320v-192l-192-192v-256h-320zM576 613.49v-101.49h-101.49l101.49 101.49zM960 0h-512v448h192v192h320v-640z" />
<glyph unicode="&#xe92e;" glyph-name="schemas" d="M1024 640l-512 256-512-256 512-256 512 256zM512 811.030l342.058-171.030-342.058-171.030-342.058 171.030 342.058 171.030zM921.444 499.278l102.556-51.278-512-256-512 256 102.556 51.278 409.444-204.722zM921.444 307.278l102.556-51.278-512-256-512 256 102.556 51.278 409.444-204.722z" />
<glyph unicode="&#xe941;" glyph-name="lifebuoy" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM320 448c0 106.040 85.96 192 192 192s192-85.96 192-192-85.96-192-192-192-192 85.96-192 192zM925.98 276.524v0l-177.42 73.49c12.518 30.184 19.44 63.276 19.44 97.986s-6.922 67.802-19.44 97.986l177.42 73.49c21.908-52.822 34.020-110.73 34.020-171.476s-12.114-118.654-34.020-171.476v0zM683.478 861.98v0 0l-73.49-177.42c-30.184 12.518-63.276 19.44-97.988 19.44s-67.802-6.922-97.986-19.44l-73.49 177.422c52.822 21.904 110.732 34.018 171.476 34.018 60.746 0 118.654-12.114 171.478-34.020zM98.020 619.476l177.422-73.49c-12.518-30.184-19.442-63.276-19.442-97.986s6.922-67.802 19.44-97.986l-177.42-73.49c-21.906 52.822-34.020 110.73-34.020 171.476s12.114 118.654 34.020 171.476zM340.524 34.020l73.49 177.42c30.184-12.518 63.276-19.44 97.986-19.44s67.802 6.922 97.986 19.44l73.49-177.42c-52.822-21.904-110.73-34.020-171.476-34.020-60.744 0-118.654 12.114-171.476 34.020z" />
<glyph unicode="&#xe941;" glyph-name="help" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM320 448c0 106.040 85.96 192 192 192s192-85.96 192-192-85.96-192-192-192-192 85.96-192 192zM925.98 276.524v0l-177.42 73.49c12.518 30.184 19.44 63.276 19.44 97.986s-6.922 67.802-19.44 97.986l177.42 73.49c21.908-52.822 34.020-110.73 34.020-171.476s-12.114-118.654-34.020-171.476v0zM683.478 861.98v0 0l-73.49-177.42c-30.184 12.518-63.276 19.44-97.988 19.44s-67.802-6.922-97.986-19.44l-73.49 177.422c52.822 21.904 110.732 34.018 171.476 34.018 60.746 0 118.654-12.114 171.478-34.020zM98.020 619.476l177.422-73.49c-12.518-30.184-19.442-63.276-19.442-97.986s6.922-67.802 19.44-97.986l-177.42-73.49c-21.906 52.822-34.020 110.73-34.020 171.476s12.114 118.654 34.020 171.476zM340.524 34.020l73.49 177.42c30.184-12.518 63.276-19.44 97.986-19.44s67.802 6.922 97.986 19.44l73.49-177.42c-52.822-21.904-110.73-34.020-171.476-34.020-60.744 0-118.654 12.114-171.476 34.020z" />
<glyph unicode="&#xe94d;" glyph-name="history" horiz-adv-x="1088" d="M640 896c247.424 0 448-200.576 448-448s-200.576-448-448-448v96c94.024 0 182.418 36.614 248.902 103.098s103.098 154.878 103.098 248.902c0 94.022-36.614 182.418-103.098 248.902s-154.878 103.098-248.902 103.098c-94.022 0-182.418-36.614-248.902-103.098-51.14-51.138-84.582-115.246-97.306-184.902h186.208l-224-256-224 256h164.57c31.060 217.102 217.738 384 443.43 384zM832 512v-128h-256v320h128v-192z" />
<glyph unicode="&#xe994;" glyph-name="settings" d="M933.79 349.75c-53.726 93.054-21.416 212.304 72.152 266.488l-100.626 174.292c-28.75-16.854-62.176-26.518-97.846-26.518-107.536 0-194.708 87.746-194.708 195.99h-201.258c0.266-33.41-8.074-67.282-25.958-98.252-53.724-93.056-173.156-124.702-266.862-70.758l-100.624-174.292c28.97-16.472 54.050-40.588 71.886-71.478 53.638-92.908 21.512-211.92-71.708-266.224l100.626-174.292c28.65 16.696 61.916 26.254 97.4 26.254 107.196 0 194.144-87.192 194.7-194.958h201.254c-0.086 33.074 8.272 66.57 25.966 97.218 53.636 92.906 172.776 124.594 266.414 71.012l100.626 174.29c-28.78 16.466-53.692 40.498-71.434 71.228zM512 240.668c-114.508 0-207.336 92.824-207.336 207.334 0 114.508 92.826 207.334 207.336 207.334 114.508 0 207.332-92.826 207.332-207.334-0.002-114.51-92.824-207.334-207.332-207.334z" />
<glyph unicode="&#xe9a6;" glyph-name="dashboard" d="M512 896c282.77 0 512-229.23 512-512 0-192.792-106.576-360.666-264.008-448h-495.984c-157.432 87.334-264.008 255.208-264.008 448 0 282.77 229.23 512 512 512zM801.914 94.086c77.438 77.44 120.086 180.398 120.086 289.914h-90v64h85.038c-7.014 44.998-21.39 88.146-42.564 128h-106.474v64h64.284c-9.438 11.762-19.552 23.096-30.37 33.914-46.222 46.22-101.54 80.038-161.914 99.798v-69.712h-64v85.040c-20.982 3.268-42.36 4.96-64 4.96s-43.018-1.69-64-4.96v-85.040h-64v69.712c-60.372-19.76-115.692-53.576-161.914-99.798-10.818-10.818-20.932-22.152-30.37-33.914h64.284v-64h-106.476c-21.174-39.854-35.552-83.002-42.564-128h85.040v-64h-90c0-109.516 42.648-212.474 120.086-289.914 10.71-10.71 21.924-20.728 33.56-30.086h192.354l36.572 512h54.856l36.572-512h192.354c11.636 9.358 22.852 19.378 33.56 30.086z" />

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 14 KiB

BIN
src/Squidex/app/theme/icomoon/fonts/icomoon.ttf

Binary file not shown.

BIN
src/Squidex/app/theme/icomoon/fonts/icomoon.woff

Binary file not shown.

96
src/Squidex/app/theme/icomoon/selection.json

@ -1,6 +1,66 @@
{
"IcoMoonType": "selection",
"icons": [
{
"icon": {
"paths": [
"M512.051 399.36c-62.208 0-112.691 50.432-112.691 112.64s50.483 112.64 112.691 112.64c62.208 0 112.589-50.432 112.589-112.64s-50.381-112.64-112.589-112.64zM153.651 399.36c-62.208 0-112.691 50.432-112.691 112.64s50.483 112.64 112.691 112.64c62.208 0 112.589-50.483 112.589-112.64s-50.381-112.64-112.589-112.64zM870.451 399.36c-62.208 0-112.691 50.432-112.691 112.64s50.483 112.64 112.691 112.64c62.208 0 112.589-50.432 112.589-112.64s-50.381-112.64-112.589-112.64z"
],
"attrs": [
{}
],
"isMulticolor": false,
"isMulticolor2": false,
"tags": [
"dots-three-horizontal"
],
"grid": 20
},
"attrs": [
{}
],
"properties": {
"order": 1,
"id": 0,
"prevSize": 20,
"code": 59651,
"name": "dots"
},
"setIdx": 0,
"setId": 4,
"iconIdx": 0
},
{
"icon": {
"paths": [
"M972.512 405.76l-98.048-19.648c-4.928-14.176-10.752-27.936-17.184-41.248l55.552-83.328c16.928-25.376 13.568-59.2-8-80.736l-61.568-61.568c-12.384-12.384-28.736-18.752-45.312-18.752-12.256 0-24.64 3.52-35.424 10.752l-83.328 55.52c-13.376-6.464-27.136-12.224-41.312-17.152l-19.648-98.080c-5.952-29.952-32.256-51.456-62.752-51.456h-87.040c-30.496 0-56.768 21.536-62.752 51.456l-19.648 98.080c-14.176 4.928-27.936 10.72-41.248 17.152l-83.296-55.52c-10.848-7.232-23.2-10.752-35.488-10.752-16.544 0-32.896 6.368-45.28 18.752l-61.536 61.568c-21.568 21.568-24.928 55.36-8 80.736l55.52 83.328c-6.464 13.344-12.224 27.104-17.152 41.28l-98.112 19.616c-29.92 5.984-51.456 32.256-51.456 62.752v87.040c0 30.496 21.536 56.8 51.456 62.752l98.080 19.68c4.928 14.176 10.72 27.936 17.152 41.248l-55.488 83.328c-16.928 25.376-13.568 59.2 8 80.736l61.568 61.568c12.384 12.384 28.736 18.752 45.28 18.752 12.288 0 24.672-3.552 35.456-10.752l83.328-55.552c13.344 6.496 27.104 12.256 41.28 17.184l19.616 98.048c5.984 29.952 32.256 51.488 62.752 51.488h87.040c30.496 0 56.8-21.568 62.752-51.488l19.68-98.048c14.176-4.928 27.936-10.752 41.248-17.184l83.328 55.552c10.816 7.2 23.2 10.752 35.424 10.752 16.576 0 32.928-6.368 45.312-18.752l61.568-61.568c21.568-21.568 24.928-55.36 8-80.736l-55.552-83.328c6.496-13.376 12.256-27.136 17.184-41.312l98.048-19.616c29.92-5.92 51.488-32.256 51.488-62.752v-87.040c0-30.496-21.568-56.768-51.488-62.752zM861.888 575.2c-22.24 4.448-40.448 20.32-47.872 41.76-4.128 11.808-8.928 23.264-14.304 34.368-9.952 20.448-8.256 44.576 4.32 63.424l55.552 83.328-61.568 61.568-83.328-55.552c-10.688-7.136-23.072-10.752-35.488-10.752-9.504 0-19.072 2.112-27.872 6.368-11.136 5.376-22.56 10.24-34.432 14.368-21.376 7.424-37.248 25.632-41.696 47.872l-19.68 98.112h-87.040l-19.616-98.112c-4.448-22.24-20.32-40.448-41.728-47.872-11.808-4.128-23.296-8.928-34.4-14.304-8.832-4.32-18.368-6.432-27.904-6.432-12.448 0-24.8 3.616-35.488 10.752l-83.328 55.552-61.568-61.568 55.52-83.328c12.576-18.88 14.208-43.008 4.384-63.36-5.376-11.136-10.208-22.56-14.336-34.432-7.424-21.376-25.664-37.248-47.872-41.696l-98.080-19.68-0.064-87.072 98.112-19.616c22.208-4.448 40.448-20.32 47.872-41.728 4.128-11.808 8.896-23.296 14.304-34.4 9.92-20.416 8.256-44.544-4.352-63.392l-55.488-83.328 61.536-61.568 83.328 55.52c10.688 7.136 23.072 10.752 35.488 10.752 9.504 0 19.040-2.112 27.872-6.368 11.104-5.376 22.56-10.208 34.4-14.336 21.408-7.424 37.28-25.664 41.728-47.872l19.648-98.080 87.040-0.032 19.616 98.112c4.448 22.208 20.32 40.448 41.76 47.872 11.808 4.128 23.264 8.896 34.368 14.304 8.864 4.288 18.368 6.4 27.936 6.4 12.448 0 24.8-3.616 35.488-10.752l83.328-55.52 61.568 61.568-55.552 83.328c-12.576 18.88-14.176 42.976-4.384 63.36 5.376 11.104 10.24 22.56 14.368 34.4 7.424 21.408 25.632 37.28 47.872 41.728l98.048 19.648 0.096 87.040-98.112 19.648zM512 288.032c-123.68 0-224 100.32-224 224 0 123.712 100.32 224 224 224s224-100.32 224-224c0-123.68-100.32-224-224-224zM512 708.064c-108.224 0-196-87.808-196-196 0-108.224 87.776-196 196-196 108.192 0 196 87.776 196 196 0 108.192-87.808 196-196 196zM512 384.032c-70.72 0-128 57.28-128 128 0 70.688 57.28 128 128 128 70.688 0 128-57.312 128-128s-57.312-128-128-128zM512 608.064c-52.992 0-96-43.008-96-96s43.008-96 96-96 96 43.008 96 96c0 52.992-43.008 96-96 96z"
],
"attrs": [
{}
],
"isMulticolor": false,
"isMulticolor2": false,
"tags": [
"settings",
"cog",
"preferences"
],
"grid": 32
},
"attrs": [
{}
],
"properties": {
"order": 1,
"id": 0,
"name": "settings2",
"prevSize": 32,
"code": 59650
},
"setIdx": 1,
"setId": 3,
"iconIdx": 0
},
{
"icon": {
"paths": [
@ -24,7 +84,7 @@
"code": 59573,
"name": "time"
},
"setIdx": 0,
"setIdx": 2,
"setId": 2,
"iconIdx": 4
},
@ -51,7 +111,7 @@
"code": 58829,
"name": "close"
},
"setIdx": 0,
"setIdx": 2,
"setId": 2,
"iconIdx": 157
},
@ -78,7 +138,7 @@
"code": 59389,
"name": "person"
},
"setIdx": 0,
"setIdx": 2,
"setId": 2,
"iconIdx": 557
},
@ -105,7 +165,7 @@
"code": 59574,
"name": "search"
},
"setIdx": 0,
"setIdx": 2,
"setId": 2,
"iconIdx": 655
},
@ -134,7 +194,7 @@
"code": 59649,
"name": "plus"
},
"setIdx": 1,
"setIdx": 3,
"setId": 1,
"iconIdx": 11
},
@ -163,7 +223,7 @@
"prevSize": 32,
"code": 59653
},
"setIdx": 1,
"setIdx": 3,
"setId": 1,
"iconIdx": 0
},
@ -196,7 +256,7 @@
"prevSize": 32,
"code": 59662
},
"setIdx": 1,
"setIdx": 3,
"setId": 1,
"iconIdx": 1
},
@ -228,7 +288,7 @@
"prevSize": 32,
"code": 59685
},
"setIdx": 1,
"setIdx": 3,
"setId": 1,
"iconIdx": 2
},
@ -260,7 +320,7 @@
"prevSize": 32,
"code": 59692
},
"setIdx": 1,
"setIdx": 3,
"setId": 1,
"iconIdx": 3
},
@ -288,7 +348,7 @@
"prevSize": 32,
"code": 59694
},
"setIdx": 1,
"setIdx": 3,
"setId": 1,
"iconIdx": 4
},
@ -311,13 +371,13 @@
"attrs": [],
"properties": {
"ligatures": "lifebuoy, support",
"name": "lifebuoy",
"name": "help",
"id": 65,
"order": 12,
"prevSize": 32,
"code": 59713
},
"setIdx": 1,
"setIdx": 3,
"setId": 1,
"iconIdx": 5
},
@ -348,7 +408,7 @@
"prevSize": 32,
"code": 59725
},
"setIdx": 1,
"setIdx": 3,
"setId": 1,
"iconIdx": 6
},
@ -381,7 +441,7 @@
"prevSize": 32,
"code": 59796
},
"setIdx": 1,
"setIdx": 3,
"setId": 1,
"iconIdx": 7
},
@ -412,7 +472,7 @@
"prevSize": 32,
"code": 59814
},
"setIdx": 1,
"setIdx": 3,
"setId": 1,
"iconIdx": 8
},
@ -445,7 +505,7 @@
"prevSize": 32,
"code": 59820
},
"setIdx": 1,
"setIdx": 3,
"setId": 1,
"iconIdx": 9
},
@ -473,7 +533,7 @@
"prevSize": 32,
"code": 59995
},
"setIdx": 1,
"setIdx": 3,
"setId": 1,
"iconIdx": 10
},
@ -506,7 +566,7 @@
"prevSize": 32,
"code": 59648
},
"setIdx": 1,
"setIdx": 3,
"setId": 1,
"iconIdx": 12
}

18
src/Squidex/app/theme/icomoon/style.css

@ -1,10 +1,10 @@
@font-face {
font-family: 'icomoon';
src: url('fonts/icomoon.eot?gkm8eh');
src: url('fonts/icomoon.eot?gkm8eh#iefix') format('embedded-opentype'),
url('fonts/icomoon.ttf?gkm8eh') format('truetype'),
url('fonts/icomoon.woff?gkm8eh') format('woff'),
url('fonts/icomoon.svg?gkm8eh#icomoon') format('svg');
src: url('fonts/icomoon.eot?sp5644');
src: url('fonts/icomoon.eot?sp5644#iefix') format('embedded-opentype'),
url('fonts/icomoon.ttf?sp5644') format('truetype'),
url('fonts/icomoon.woff?sp5644') format('woff'),
url('fonts/icomoon.svg?sp5644#icomoon') format('svg');
font-weight: normal;
font-style: normal;
}
@ -24,6 +24,12 @@
-moz-osx-font-smoothing: grayscale;
}
.icon-dots:before {
content: "\e903";
}
.icon-settings2:before {
content: "\e902";
}
.icon-time:before {
content: "\e8b5";
}
@ -54,7 +60,7 @@
.icon-schemas:before {
content: "\e92e";
}
.icon-lifebuoy:before {
.icon-help:before {
content: "\e941";
}
.icon-history:before {

Loading…
Cancel
Save