├── .bowerrc ├── .gitignore ├── .travis.yml ├── CHANGELOG.md ├── LICENSE ├── Makefile ├── README.md ├── bin └── katana ├── bootstrap.php ├── bower.json ├── composer.json ├── composer.lock ├── data ├── configuration │ └── .empty ├── database │ └── .empty ├── home │ └── .empty ├── log │ └── .empty └── share │ └── update │ └── .empty ├── lib ├── Bin │ ├── AbstractCommand.php │ ├── Install.php │ ├── Update.php │ └── Welcome.php ├── CalDav │ ├── Principal │ │ ├── Collection.php │ │ └── User.php │ └── Schedule │ │ └── IMipPlugin.php ├── Client │ ├── Validator.js │ └── WebDAVAdapter.js ├── Configuration.php ├── Dav │ ├── Authentication │ │ └── BasicBackend.php │ └── System │ │ ├── Collection.php │ │ ├── Configuration │ │ ├── Node.php │ │ └── Plugin.php │ │ ├── ProtectedNode.php │ │ └── Version │ │ ├── Node.php │ │ └── Plugin.php ├── DavAcl │ ├── File │ │ ├── Directory.php │ │ ├── Home.php │ │ └── Plugin.php │ ├── Principal │ │ └── Backend.php │ └── User │ │ └── Plugin.php ├── Exception │ ├── Console.php │ ├── Dav │ │ ├── Exception.php │ │ └── InternalServerError.php │ ├── Environment.php │ ├── Exception.php │ ├── Installation.php │ └── Update.php ├── Server │ ├── Installer.php │ ├── Server.php │ └── Updater.php └── Version.php ├── package.json ├── public ├── .webserver.php ├── admin.php ├── install.php ├── server.php └── static │ ├── css │ ├── layout.css │ └── ui.css │ ├── font │ ├── Lato-Regular.eot │ ├── Lato-Regular.ttf │ └── Lato-Regular.woff │ ├── image │ ├── background.jpg │ ├── katana_logo.svg │ └── katana_logo_full.png │ ├── javascript │ ├── admin.js │ ├── install.js │ ├── katana-validator.js │ └── katana-webdav-adapter.js │ └── vendor │ ├── .empty │ └── README.md ├── resource ├── default │ ├── database │ │ ├── README.md │ │ ├── addressbooks.mysql.sql │ │ ├── addressbooks.sqlite.sql │ │ ├── calendars.mysql.sql │ │ ├── calendars.sqlite.sql │ │ ├── locks.mysql.sql │ │ ├── locks.sqlite.sql │ │ ├── principals.mysql.sql │ │ ├── principals.sqlite.sql │ │ ├── propertystorage.mysql.sql │ │ ├── propertystorage.sqlite.sql │ │ ├── users.mysql.sql │ │ └── users.sqlite.sql │ └── http_server │ │ └── built-in.php ├── mime.types └── view │ ├── admin.html │ ├── caldav_scheduling.html │ ├── caldav_scheduling.txt │ ├── install.html │ ├── install_bower.html │ ├── install_done.html │ ├── install_permissions.html │ └── semantic-ui │ ├── gulpfile.js │ ├── src │ ├── definitions │ │ ├── behaviors │ │ │ ├── api.js │ │ │ ├── colorize.js │ │ │ ├── form.js │ │ │ ├── state.js │ │ │ ├── visibility.js │ │ │ └── visit.js │ │ ├── collections │ │ │ ├── breadcrumb.less │ │ │ ├── form.less │ │ │ ├── grid.less │ │ │ ├── menu.less │ │ │ ├── message.less │ │ │ └── table.less │ │ ├── elements │ │ │ ├── button.less │ │ │ ├── divider.less │ │ │ ├── flag.less │ │ │ ├── header.less │ │ │ ├── icon.less │ │ │ ├── image.less │ │ │ ├── input.less │ │ │ ├── label.less │ │ │ ├── list.less │ │ │ ├── loader.less │ │ │ ├── rail.less │ │ │ ├── reveal.less │ │ │ ├── segment.less │ │ │ └── step.less │ │ ├── globals │ │ │ ├── reset.less │ │ │ ├── site.js │ │ │ └── site.less │ │ ├── modules │ │ │ ├── accordion.js │ │ │ ├── accordion.less │ │ │ ├── checkbox.js │ │ │ ├── checkbox.less │ │ │ ├── dimmer.js │ │ │ ├── dimmer.less │ │ │ ├── dropdown.js │ │ │ ├── dropdown.less │ │ │ ├── modal.js │ │ │ ├── modal.less │ │ │ ├── nag.js │ │ │ ├── nag.less │ │ │ ├── popup.js │ │ │ ├── popup.less │ │ │ ├── progress.js │ │ │ ├── progress.less │ │ │ ├── rating.js │ │ │ ├── rating.less │ │ │ ├── search.js │ │ │ ├── search.less │ │ │ ├── shape.js │ │ │ ├── shape.less │ │ │ ├── sidebar.js │ │ │ ├── sidebar.less │ │ │ ├── sticky.js │ │ │ ├── sticky.less │ │ │ ├── tab.js │ │ │ ├── tab.less │ │ │ ├── transition.js │ │ │ ├── transition.less │ │ │ ├── video.js │ │ │ └── video.less │ │ └── views │ │ │ ├── ad.less │ │ │ ├── card.less │ │ │ ├── comment.less │ │ │ ├── feed.less │ │ │ ├── item.less │ │ │ └── statistic.less │ ├── semantic.less │ ├── site │ │ ├── collections │ │ │ ├── breadcrumb.overrides │ │ │ ├── breadcrumb.variables │ │ │ ├── form.overrides │ │ │ ├── form.variables │ │ │ ├── grid.overrides │ │ │ ├── grid.variables │ │ │ ├── menu.overrides │ │ │ ├── menu.variables │ │ │ ├── message.overrides │ │ │ ├── message.variables │ │ │ ├── table.overrides │ │ │ └── table.variables │ │ ├── elements │ │ │ ├── button.overrides │ │ │ ├── button.variables │ │ │ ├── divider.overrides │ │ │ ├── divider.variables │ │ │ ├── flag.overrides │ │ │ ├── flag.variables │ │ │ ├── header.overrides │ │ │ ├── header.variables │ │ │ ├── icon.overrides │ │ │ ├── icon.variables │ │ │ ├── image.overrides │ │ │ ├── image.variables │ │ │ ├── input.overrides │ │ │ ├── input.variables │ │ │ ├── label.overrides │ │ │ ├── label.variables │ │ │ ├── list.overrides │ │ │ ├── list.variables │ │ │ ├── loader.overrides │ │ │ ├── loader.variables │ │ │ ├── rail.overrides │ │ │ ├── rail.variables │ │ │ ├── reveal.overrides │ │ │ ├── reveal.variables │ │ │ ├── segment.overrides │ │ │ ├── segment.variables │ │ │ ├── step.overrides │ │ │ └── step.variables │ │ ├── globals │ │ │ ├── reset.overrides │ │ │ ├── reset.variables │ │ │ ├── site.overrides │ │ │ └── site.variables │ │ ├── modules │ │ │ ├── accordion.overrides │ │ │ ├── accordion.variables │ │ │ ├── chatroom.overrides │ │ │ ├── chatroom.variables │ │ │ ├── checkbox.overrides │ │ │ ├── checkbox.variables │ │ │ ├── dimmer.overrides │ │ │ ├── dimmer.variables │ │ │ ├── dropdown.overrides │ │ │ ├── dropdown.variables │ │ │ ├── modal.overrides │ │ │ ├── modal.variables │ │ │ ├── nag.overrides │ │ │ ├── nag.variables │ │ │ ├── popup.overrides │ │ │ ├── popup.variables │ │ │ ├── progress.overrides │ │ │ ├── progress.variables │ │ │ ├── rating.overrides │ │ │ ├── rating.variables │ │ │ ├── search.overrides │ │ │ ├── search.variables │ │ │ ├── shape.overrides │ │ │ ├── shape.variables │ │ │ ├── sidebar.overrides │ │ │ ├── sidebar.variables │ │ │ ├── sticky.overrides │ │ │ ├── sticky.variables │ │ │ ├── tab.overrides │ │ │ ├── tab.variables │ │ │ ├── transition.overrides │ │ │ ├── transition.variables │ │ │ ├── video.overrides │ │ │ └── video.variables │ │ └── views │ │ │ ├── ad.overrides │ │ │ ├── ad.variables │ │ │ ├── card.overrides │ │ │ ├── card.variables │ │ │ ├── comment.overrides │ │ │ ├── comment.variables │ │ │ ├── feed.overrides │ │ │ ├── feed.variables │ │ │ ├── item.overrides │ │ │ ├── item.variables │ │ │ ├── statistic.overrides │ │ │ └── statistic.variables │ ├── theme.config │ ├── theme.less │ └── themes │ │ ├── default │ │ ├── assets │ │ │ ├── fonts │ │ │ │ ├── icons.eot │ │ │ │ ├── icons.svg │ │ │ │ ├── icons.ttf │ │ │ │ ├── icons.woff │ │ │ │ └── icons.woff2 │ │ │ └── images │ │ │ │ └── flags.png │ │ ├── collections │ │ │ ├── breadcrumb.overrides │ │ │ ├── breadcrumb.variables │ │ │ ├── form.overrides │ │ │ ├── form.variables │ │ │ ├── grid.overrides │ │ │ ├── grid.variables │ │ │ ├── menu.overrides │ │ │ ├── menu.variables │ │ │ ├── message.overrides │ │ │ ├── message.variables │ │ │ ├── table.overrides │ │ │ └── table.variables │ │ ├── elements │ │ │ ├── button.overrides │ │ │ ├── button.variables │ │ │ ├── divider.overrides │ │ │ ├── divider.variables │ │ │ ├── flag.overrides │ │ │ ├── flag.variables │ │ │ ├── header.overrides │ │ │ ├── header.variables │ │ │ ├── icon.overrides │ │ │ ├── icon.variables │ │ │ ├── image.overrides │ │ │ ├── image.variables │ │ │ ├── input.overrides │ │ │ ├── input.variables │ │ │ ├── label.overrides │ │ │ ├── label.variables │ │ │ ├── list.overrides │ │ │ ├── list.variables │ │ │ ├── loader.overrides │ │ │ ├── loader.variables │ │ │ ├── rail.overrides │ │ │ ├── rail.variables │ │ │ ├── reveal.overrides │ │ │ ├── reveal.variables │ │ │ ├── segment.overrides │ │ │ ├── segment.variables │ │ │ ├── step.overrides │ │ │ └── step.variables │ │ ├── globals │ │ │ ├── reset.overrides │ │ │ ├── reset.variables │ │ │ ├── site.overrides │ │ │ └── site.variables │ │ ├── modules │ │ │ ├── accordion.overrides │ │ │ ├── accordion.variables │ │ │ ├── chatroom.overrides │ │ │ ├── chatroom.variables │ │ │ ├── checkbox.overrides │ │ │ ├── checkbox.variables │ │ │ ├── dimmer.overrides │ │ │ ├── dimmer.variables │ │ │ ├── dropdown.overrides │ │ │ ├── dropdown.variables │ │ │ ├── modal.overrides │ │ │ ├── modal.variables │ │ │ ├── nag.overrides │ │ │ ├── nag.variables │ │ │ ├── popup.overrides │ │ │ ├── popup.variables │ │ │ ├── progress.overrides │ │ │ ├── progress.variables │ │ │ ├── rating.overrides │ │ │ ├── rating.variables │ │ │ ├── search.overrides │ │ │ ├── search.variables │ │ │ ├── shape.overrides │ │ │ ├── shape.variables │ │ │ ├── sidebar.overrides │ │ │ ├── sidebar.variables │ │ │ ├── sticky.overrides │ │ │ ├── sticky.variables │ │ │ ├── tab.overrides │ │ │ ├── tab.variables │ │ │ ├── transition.overrides │ │ │ ├── transition.variables │ │ │ ├── video.overrides │ │ │ └── video.variables │ │ └── views │ │ │ ├── ad.overrides │ │ │ ├── ad.variables │ │ │ ├── card.overrides │ │ │ ├── card.variables │ │ │ ├── comment.overrides │ │ │ ├── comment.variables │ │ │ ├── feed.overrides │ │ │ ├── feed.variables │ │ │ ├── item.overrides │ │ │ ├── item.variables │ │ │ ├── statistic.overrides │ │ │ └── statistic.variables │ │ └── resetcss │ │ └── globals │ │ ├── reset.overrides │ │ └── reset.variables │ └── tasks │ ├── README.md │ ├── admin │ ├── components │ │ ├── create.js │ │ ├── init.js │ │ └── update.js │ ├── distributions │ │ ├── create.js │ │ ├── init.js │ │ └── update.js │ ├── publish.js │ ├── register.js │ └── release.js │ ├── build.js │ ├── check-install.js │ ├── clean.js │ ├── collections │ ├── README.md │ ├── admin.js │ └── internal.js │ ├── config │ ├── admin │ │ ├── github.js │ │ ├── oauth.example.js │ │ ├── release.js │ │ └── templates │ │ │ ├── README.md │ │ │ ├── bower.json │ │ │ ├── component-package.js │ │ │ ├── composer.json │ │ │ ├── css-package.js │ │ │ ├── less-package.js │ │ │ └── package.json │ ├── defaults.js │ ├── docs.js │ ├── npm │ │ └── gulpfile.js │ ├── project │ │ ├── config.js │ │ ├── install.js │ │ ├── release.js │ │ └── tasks.js │ └── user.js │ ├── docs │ ├── build.js │ └── serve.js │ ├── install.js │ ├── rtl │ ├── build.js │ └── watch.js │ ├── version.js │ └── watch.js ├── semantic.json ├── tests ├── .atoum.php ├── .autoload.atoum.php ├── .bootstrap.atoum.php ├── Helper │ ├── Configuration.php │ ├── Helper.php │ ├── MySQL.php │ ├── SQLite.php │ ├── TemporaryDirectory.php │ └── TemporaryFile.php ├── Integration │ ├── Server │ │ └── Installer.php │ └── Suite.php ├── Mock │ ├── Sapi.php │ └── Server.php ├── README.md └── Unit │ ├── Configuration.php │ ├── Dav │ └── System │ │ └── Configuration.php │ ├── Server │ ├── Installer.php │ ├── Server.php │ └── Updater.php │ └── Suite.php └── vendor └── README.md /.bowerrc: -------------------------------------------------------------------------------- 1 | { 2 | "analytics": false, 3 | "directory": "public/static/vendor/" 4 | } 5 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Composer 2 | vendor/* 3 | 4 | # Composer binaries 5 | bin/atoum 6 | bin/generate_vcards 7 | bin/hoa 8 | bin/naturalselection 9 | bin/php-cs-fixer 10 | bin/praspel 11 | bin/sabre-cs-fixer 12 | bin/sabredav 13 | bin/vobject 14 | 15 | # Bower and NPM 16 | public/static/vendor/ 17 | 18 | # NPM 19 | node_modules/ 20 | resource/views/semantic-ui/dist/ 21 | 22 | # Vim 23 | .*.swp 24 | 25 | # Katana 26 | data/configuration/server.json 27 | data/database/katana_*.sqlite 28 | data/home/* 29 | data/log/*.log 30 | data/share/*.phar 31 | data/share/*.zip 32 | data/share/update/ 33 | 34 | build/ 35 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: php 2 | php: 3 | - 5.4 4 | - 5.5 5 | - 5.6 6 | - 7 7 | - hhvm 8 | 9 | matrix: 10 | allow_failures: 11 | - php: 7 12 | - php: hhvm 13 | 14 | env: 15 | matrix: 16 | - LOWEST_DEPS="" 17 | - LOWEST_DEPS="--prefer-lowest" 18 | 19 | services: 20 | - mysql 21 | 22 | sudo: false 23 | 24 | cache: vendor 25 | 26 | before_script: 27 | - rm -f ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/xdebug.ini 28 | - composer update --prefer-source $LOWEST_DEPS 29 | 30 | script: 31 | - bin/atoum --configurations tests/.atoum.php --bootstrap-file tests/.bootstrap.atoum.php 32 | - bin/sabre-cs-fixer fix --dry-run --diff . 33 | 34 | notifications: 35 | slack: 36 | rooms: 37 | secure: LVmBXAz0TKdB8dsB9Rt+M5+KnpStxEbOKuNVHN/lYOYmnB5CNogc/TDUKIFe5OUHAjGbn3xUy+tgBIME/RZLPAC6aAKpw0BPbGXYeagYlDBj9HUR9sUDrwV+l/75e4QWZPrUwS1dIa4ePirosIlYZwlwfGzEz8SgVY2x7BZFBEs= 38 | on_success: change 39 | on_failure: change 40 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | sabre/katana. 2 | Copyright (C) 2015-2016 fruux GmbH (https://fruux.com/) 3 | 4 | This program is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU Affero General Public License as 6 | published by the Free Software Foundation, either version 3 of the 7 | License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU Affero General Public License for more details. 13 | 14 | You should have received a copy of the GNU Affero General Public License 15 | along with this program. If not, see . 16 | -------------------------------------------------------------------------------- /bin/katana: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env php 2 | . 22 | */ 23 | require_once __DIR__ . '/../bootstrap.php'; 24 | 25 | use Hoa\Console; 26 | use Hoa\Dispatcher; 27 | use Hoa\Router; 28 | 29 | /** 30 | * Entry point of the CLI script. 31 | * 32 | * @copyright Copyright (C) 2015 fruux GmbH (https://fruux.com/). 33 | * @author Ivan Enderlin 34 | * @license GNU Affero General Public License, Version 3. 35 | */ 36 | try { 37 | $router = new Router\Cli(); 38 | $router 39 | ->get( 40 | 'global', 41 | '(?\w+)?(?<_tail>.*?)', 42 | 'main', 43 | 'main', 44 | ['command' => 'welcome'] 45 | ); 46 | 47 | $dispatcher = new Dispatcher\ClassMethod([ 48 | 'synchronous.call' => 'Sabre\Katana\Bin\(:%variables.command:lU:)', 49 | 'synchronous.able' => 'main' 50 | ]); 51 | $dispatcher->setKitName('Hoa\Console\Dispatcher\Kit'); 52 | 53 | exit((int)$dispatcher->dispatch($router)); 54 | } catch (\Exception $e) { 55 | ob_start(); 56 | Console\Cursor::colorize('foreground(white) background(red)'); 57 | echo $e->getMessage(), "\n"; 58 | Console\Cursor::colorize('normal'); 59 | $content = ob_get_contents(); 60 | ob_end_clean(); 61 | 62 | file_put_contents('php://stderr', $content); 63 | 64 | exit(1); 65 | } 66 | -------------------------------------------------------------------------------- /bootstrap.php: -------------------------------------------------------------------------------- 1 | . 21 | */ 22 | 23 | /** 24 | * Bootstrap the project. 25 | * 26 | * @copyright Copyright (C) 2015 fruux GmbH (https://fruux.com/). 27 | * @author Ivan Enderlin 28 | * @license GNU Affero General Public License, Version 3. 29 | */ 30 | if (defined('SABRE_KATANA')) { 31 | return; 32 | } 33 | 34 | /** 35 | * Set the default timezone. 36 | */ 37 | date_default_timezone_set('UTC'); 38 | 39 | /** 40 | * Load the autoloader. 41 | */ 42 | $autoloadFile = 43 | __DIR__ . DIRECTORY_SEPARATOR . 44 | 'vendor' . DIRECTORY_SEPARATOR . 45 | 'autoload.php'; 46 | 47 | if (false === file_exists($autoloadFile)) { 48 | echo 'Autoloader is not found. Did you run `composer install`?', "\n"; 49 | exit(1); 50 | } 51 | 52 | $autoloader = require_once $autoloadFile; 53 | 54 | /** 55 | * sabre/katana is now defined and set up, let the world knows that. 56 | */ 57 | define('SABRE_KATANA', true); 58 | 59 | /** 60 | * Define the prefix. 61 | */ 62 | define('SABRE_KATANA_PREFIX', __DIR__); 63 | 64 | 65 | /** 66 | * Default path to configuration file 67 | */ 68 | define('SABRE_KATANA_CONFIG', SABRE_KATANA_PREFIX . '/data/configuration/server.json'); 69 | 70 | //Mapping PHP errors to exceptions 71 | function exception_error_handler($errno, $errstr, $errfile, $errline) { 72 | throw new ErrorException($errstr, 0, $errno, $errfile, $errline); 73 | } 74 | set_error_handler("exception_error_handler"); 75 | -------------------------------------------------------------------------------- /bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "sabre/katana", 3 | "private": true, 4 | "dependencies": { 5 | "ember": "~1.12", 6 | "ember-data": "~1.0.0-beta.16", 7 | "ember-simple-auth": "~0.7.3", 8 | "event-source-polyfill": "~0.0.4", 9 | "node-uuid": "~1.4.3" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "sabre/katana", 3 | "type" : "project", 4 | "description": "A CalDAV, CardDAV and WebDAV ready-to-use server on top of sabre/dav", 5 | "homepage" : "http://sabre.io/katana/", 6 | "license" : "AGPL-3.0", 7 | "authors" : [ 8 | { 9 | "name": "fruux" 10 | } 11 | ], 12 | "support": { 13 | "forum" : "http://groups.google.com/group/sabredav-discuss", 14 | "source": "https://github.com/fruux/sabre-katana/" 15 | }, 16 | "require": { 17 | "php" : ">=5.4.7", 18 | "ext-spl" : "*", 19 | "ext-pdo" : ">=1.0", 20 | "sabre/dav" : "~3.0.1", 21 | "hoa/console" : "~2.0", 22 | "hoa/core" : "~2.0, >=2.15.04.13", 23 | "hoa/dispatcher" : "~0.0, >=0.15.01.23", 24 | "hoa/eventsource" : "~2.0", 25 | "hoa/iterator" : "~1.0", 26 | "hoa/mail" : "~0.0, >=0.15.06.03", 27 | "hoa/mime" : "~2.0", 28 | "hoa/router" : "~2.0", 29 | "hoa/socket" : "~0.0, >=0.15.02.25", 30 | "hoa/ustring" : "~3.0", 31 | "hoa/stringbuffer" : "~0.0", 32 | "hoa/file" : "~0.15.05.27", 33 | "ircmaxell/password-compat": "~1.0" 34 | }, 35 | "require-dev": { 36 | "atoum/atoum" : "~2.4, >=2.4.1", 37 | "atoum/praspel-extension" : "~0.1", 38 | "atoum/ruler-extension" : "~1.0, >=1.0.2", 39 | "sabre/cs" : "~0.0.4", 40 | "hoa/regex" : "~0.15.08.13" 41 | }, 42 | "suggest": { 43 | "ext-pdo_sqlite": "If you decide to use SQLite.", 44 | "ext-pdo_mysql" : "If you decide to use MySQL.", 45 | "ext-phar" : "If you plan to package sabre/katana as a phar archive" 46 | }, 47 | "autoload": { 48 | "psr-4": { 49 | "Sabre\\Katana\\": "lib/" 50 | } 51 | }, 52 | "bin": ["bin/katana"], 53 | "config": { 54 | "bin-dir" : "bin/", 55 | "optimize-autoloader": true 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /data/configuration/.empty: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sabre-io/katana/6a17acb16ddeeb621d8f52a0437ff6423484ded2/data/configuration/.empty -------------------------------------------------------------------------------- /data/database/.empty: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sabre-io/katana/6a17acb16ddeeb621d8f52a0437ff6423484ded2/data/database/.empty -------------------------------------------------------------------------------- /data/home/.empty: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sabre-io/katana/6a17acb16ddeeb621d8f52a0437ff6423484ded2/data/home/.empty -------------------------------------------------------------------------------- /data/log/.empty: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sabre-io/katana/6a17acb16ddeeb621d8f52a0437ff6423484ded2/data/log/.empty -------------------------------------------------------------------------------- /data/share/update/.empty: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sabre-io/katana/6a17acb16ddeeb621d8f52a0437ff6423484ded2/data/share/update/.empty -------------------------------------------------------------------------------- /lib/Bin/AbstractCommand.php: -------------------------------------------------------------------------------- 1 | . 21 | */ 22 | 23 | namespace Sabre\Katana\Bin; 24 | 25 | use Hoa\Console; 26 | 27 | /** 28 | * Abstract command. 29 | * 30 | * @copyright Copyright (C) fruux GmbH (https://fruux.com/) 31 | * @author Ivan Enderlin 32 | * @license GNU Affero General Public License, Version 3. 33 | */ 34 | abstract class AbstractCommand extends Console\Dispatcher\Kit { 35 | 36 | /** 37 | * Main method. 38 | * 39 | * @return int 40 | */ 41 | abstract function main(); 42 | 43 | /** 44 | * Print the usage. 45 | * 46 | * @return void 47 | */ 48 | abstract function usage(); 49 | } 50 | -------------------------------------------------------------------------------- /lib/CalDav/Principal/Collection.php: -------------------------------------------------------------------------------- 1 | . 21 | */ 22 | 23 | namespace Sabre\Katana\CalDav\Principal; 24 | 25 | use Sabre\CalDAV as SabreCalDav; 26 | 27 | /** 28 | * Principal collection. 29 | * We mainly override this class to use our own `User` implementation. 30 | * 31 | * @copyright Copyright (C) fruux GmbH (https://fruux.com/) 32 | * @author Ivan Enderlin 33 | * @license GNU Affero General Public License, Version 3. 34 | */ 35 | class Collection extends SabreCalDav\Principal\Collection { 36 | 37 | /** 38 | * Return a child object based on principal information. 39 | * 40 | * @param array $principalInformation Principal information. 41 | * @return User 42 | */ 43 | function getChildForPrincipal(array $principalInformation) { 44 | 45 | return new User($this->principalBackend, $principalInformation); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /lib/CalDav/Principal/User.php: -------------------------------------------------------------------------------- 1 | . 21 | */ 22 | 23 | namespace Sabre\Katana\CalDav\Principal; 24 | 25 | use Sabre\CalDAV as SabreCalDav; 26 | 27 | /** 28 | * Principal user: Represents one node in a collection, for instance: 29 | * `/principals/gordon`. 30 | * 31 | * @copyright Copyright (C) fruux GmbH (https://fruux.com/) 32 | * @author Ivan Enderlin 33 | * @license GNU Affero General Public License, Version 3. 34 | */ 35 | class User extends SabreCalDav\Principal\User { 36 | 37 | /** 38 | * Deletes the current node. 39 | * 40 | * @return void 41 | */ 42 | function delete() { 43 | 44 | $this->principalBackend->deletePrincipal($this->principalProperties['uri']); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /lib/Client/Validator.js: -------------------------------------------------------------------------------- 1 | ../../public/static/javascript/katana-validator.js -------------------------------------------------------------------------------- /lib/Client/WebDAVAdapter.js: -------------------------------------------------------------------------------- 1 | ../../public/static/javascript/katana-webdav-adapter.js -------------------------------------------------------------------------------- /lib/Dav/System/Collection.php: -------------------------------------------------------------------------------- 1 | . 21 | */ 22 | 23 | namespace Sabre\Katana\Dav\System; 24 | 25 | use Sabre\DAV as SabreDav; 26 | use Sabre\DAVACL as SabreDavAcl; 27 | 28 | /** 29 | * The system collection. A set of tools for sabre/katana. 30 | * 31 | * @copyright Copyright (C) fruux GmbH (https://fruux.com/) 32 | * @author Ivan Enderlin 33 | * @license GNU Affero General Public License, Version 3. 34 | */ 35 | class Collection extends SabreDav\SimpleCollection implements SabreDavAcl\IACL { 36 | 37 | use ProtectedNode; 38 | 39 | /** 40 | * Define the node name. 41 | * 42 | * @const string 43 | */ 44 | const NAME = 'system'; 45 | 46 | /** 47 | * Constructor. 48 | * 49 | * @params array $children Children. 50 | */ 51 | function __construct(array $children) { 52 | 53 | parent::__construct(self::NAME, $children); 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /lib/Dav/System/Configuration/Node.php: -------------------------------------------------------------------------------- 1 | . 21 | */ 22 | 23 | namespace Sabre\Katana\Dav\System\Configuration; 24 | 25 | use Sabre\Katana\Dav\System; 26 | use Sabre\DAV as SabreDav; 27 | use Sabre\DAVACL as SabreDavAcl; 28 | 29 | /** 30 | * The configurations node. 31 | * 32 | * @copyright Copyright (C) fruux GmbH (https://fruux.com/) 33 | * @author Ivan Enderlin 34 | * @license GNU Affero General Public License, Version 3. 35 | */ 36 | class Node extends SabreDav\Node implements SabreDavAcl\IACL { 37 | 38 | use System\ProtectedNode; 39 | 40 | /** 41 | * Define the node name. 42 | * 43 | * @const string 44 | */ 45 | const NAME = 'configurations'; 46 | } 47 | -------------------------------------------------------------------------------- /lib/Dav/System/Version/Node.php: -------------------------------------------------------------------------------- 1 | . 21 | */ 22 | 23 | namespace Sabre\Katana\Dav\System\Version; 24 | 25 | use Sabre\Katana\Dav\System; 26 | use Sabre\DAV as SabreDav; 27 | use Sabre\DAVACL as SabreDavAcl; 28 | 29 | /** 30 | * The versions node. 31 | * 32 | * @copyright Copyright (C) fruux GmbH (https://fruux.com/) 33 | * @author Ivan Enderlin 34 | * @license GNU Affero General Public License, Version 3. 35 | */ 36 | class Node extends SabreDav\Node implements SabreDavAcl\IACL { 37 | 38 | use System\ProtectedNode; 39 | 40 | /** 41 | * Define the node name. 42 | * 43 | * @const string 44 | */ 45 | const NAME = 'versions'; 46 | } 47 | -------------------------------------------------------------------------------- /lib/DavAcl/File/Home.php: -------------------------------------------------------------------------------- 1 | . 21 | */ 22 | 23 | namespace Sabre\Katana\DavAcl\File; 24 | 25 | use Sabre\DAVACL as SabreDavAcl; 26 | use Sabre\Uri as SabreUri; 27 | use Hoa\File as HoaFile; 28 | 29 | /** 30 | * This class represents a collection of home directories. A home directory is a 31 | * principal specific WebDAV folder. Only the owner can read and write inside 32 | * this folder, except for the `public/` directory where everyone can read. 33 | * 34 | * @copyright Copyright (C) fruux GmbH (https://fruux.com/) 35 | * @author Ivan Enderlin 36 | * @license GNU Affero General Public License, Version 3. 37 | */ 38 | class Home extends SabreDavAcl\FS\HomeCollection { 39 | 40 | /** 41 | * Returns a principals' collection of files. 42 | * 43 | * The passed array contains principal information, and is guaranteed to 44 | * at least contain a uri item. Other properties may or may not be 45 | * supplied by the authentication backend. 46 | * 47 | * @param array $principalInfo 48 | * @return void 49 | */ 50 | function getChildForPrincipal(array $principalInfo) { 51 | 52 | $owner = $principalInfo['uri']; 53 | $acl = [ 54 | [ 55 | 'privilege' => '{DAV:}read', 56 | 'principal' => $owner, 57 | 'protected' => true, 58 | ], 59 | [ 60 | 'privilege' => '{DAV:}write', 61 | 'principal' => $owner, 62 | 'protected' => true, 63 | ], 64 | ]; 65 | 66 | list(, $principalBaseName) = SabreUri\split($owner); 67 | 68 | $path = $this->storagePath . DS . $principalBaseName; 69 | 70 | if (!is_dir($path)) { 71 | HoaFile\Directory::create( 72 | $path, 73 | HoaFile\Directory::MODE_CREATE_RECURSIVE 74 | ); 75 | } 76 | 77 | $public = $path . DS . 'public'; 78 | 79 | if (!is_dir($public)) { 80 | HoaFile\Directory::create( 81 | $public, 82 | HoaFile\Directory::MODE_CREATE_RECURSIVE 83 | ); 84 | } 85 | 86 | $out = new Directory($path, $acl, $owner); 87 | $out->setRelativePath($this->storagePath); 88 | 89 | return $out; 90 | } 91 | } 92 | -------------------------------------------------------------------------------- /lib/Exception/Console.php: -------------------------------------------------------------------------------- 1 | . 21 | */ 22 | 23 | namespace Sabre\Katana\Exception; 24 | 25 | /** 26 | * This exception represents any console errors. 27 | * 28 | * @copyright Copyright (C) fruux GmbH (https://fruux.com/) 29 | * @author Ivan Enderlin 30 | * @license GNU Affero General Public License, Version 3. 31 | */ 32 | class Console extends Exception { 33 | } 34 | -------------------------------------------------------------------------------- /lib/Exception/Dav/Exception.php: -------------------------------------------------------------------------------- 1 | . 21 | */ 22 | 23 | namespace Sabre\Katana\Exception\Dav; 24 | 25 | use Sabre\DAV; 26 | 27 | /** 28 | * Extend Sabre\DAV\Exception. 29 | * 30 | * @copyright Copyright (C) fruux GmbH (https://fruux.com/) 31 | * @author Ivan Enderlin 32 | * @license GNU Affero General Public License, Version 3. 33 | */ 34 | class Exception extends DAV\Exception { 35 | } 36 | -------------------------------------------------------------------------------- /lib/Exception/Dav/InternalServerError.php: -------------------------------------------------------------------------------- 1 | . 21 | */ 22 | 23 | namespace Sabre\Katana\Exception\Dav; 24 | 25 | /** 26 | * This exception may be thrown when something unexpected happens. 27 | * 28 | * @copyright Copyright (C) fruux GmbH (https://fruux.com/) 29 | * @author Ivan Enderlin 30 | * @license GNU Affero General Public License, Version 3. 31 | */ 32 | class InternalServerError extends Exception { 33 | /** 34 | * Return the HTTP sttus code for this exception. 35 | */ 36 | function getHTTPCode() { 37 | 38 | return 500; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /lib/Exception/Environment.php: -------------------------------------------------------------------------------- 1 | . 21 | */ 22 | 23 | namespace Sabre\Katana\Exception; 24 | 25 | /** 26 | * This exception represents any environment issue (like a missing configuration 27 | * file). 28 | * 29 | * @copyright Copyright (C) fruux GmbH (https://fruux.com/) 30 | * @author Ivan Enderlin 31 | * @license GNU Affero General Public License, Version 3. 32 | */ 33 | class Environment extends Exception { 34 | } 35 | -------------------------------------------------------------------------------- /lib/Exception/Exception.php: -------------------------------------------------------------------------------- 1 | . 21 | */ 22 | 23 | namespace Sabre\Katana\Exception; 24 | 25 | use Hoa\Core; 26 | 27 | /** 28 | * Mother exception of this project. 29 | * 30 | * @copyright Copyright (C) fruux GmbH (https://fruux.com/) 31 | * @author Ivan Enderlin 32 | * @license GNU Affero General Public License, Version 3. 33 | */ 34 | class Exception extends Core\Exception { 35 | } 36 | -------------------------------------------------------------------------------- /lib/Exception/Installation.php: -------------------------------------------------------------------------------- 1 | . 21 | */ 22 | 23 | namespace Sabre\Katana\Exception; 24 | 25 | /** 26 | * This exception represents any installation issue. 27 | * 28 | * @copyright Copyright (C) fruux GmbH (https://fruux.com/) 29 | * @author Ivan Enderlin 30 | * @license GNU Affero General Public License, Version 3. 31 | */ 32 | class Installation extends Exception { 33 | } 34 | -------------------------------------------------------------------------------- /lib/Exception/Update.php: -------------------------------------------------------------------------------- 1 | . 21 | */ 22 | 23 | namespace Sabre\Katana\Exception; 24 | 25 | /** 26 | * This exception represents any update issue. 27 | * 28 | * @copyright Copyright (C) fruux GmbH (https://fruux.com/) 29 | * @author Ivan Enderlin 30 | * @license GNU Affero General Public License, Version 3. 31 | */ 32 | class Update extends Exception { 33 | } 34 | -------------------------------------------------------------------------------- /lib/Version.php: -------------------------------------------------------------------------------- 1 | . 21 | */ 22 | 23 | namespace Sabre\Katana; 24 | 25 | /** 26 | * This class contains the sabre/katana version constants. 27 | * 28 | * @copyright Copyright (C) fruux GmbH (https://fruux.com/) 29 | * @author Evert Pot (http://evertpot.com/) 30 | * @license http://sabre.io/license/ Modified BSD License 31 | */ 32 | class Version { 33 | 34 | /** 35 | * Full version number 36 | */ 37 | const VERSION = '0.4.2'; 38 | 39 | } 40 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "sabre-katana", 3 | "dependencies": { 4 | "better-console": "^0.2.4", 5 | "del": "^1.1.1", 6 | "extend": "^2.0.1", 7 | "gulp": "^3.8.11", 8 | "gulp-autoprefixer": "^2.2.0", 9 | "gulp-chmod": "^1.2.0", 10 | "gulp-clone": "^1.0.0", 11 | "gulp-concat": "^2.5.2", 12 | "gulp-concat-css": "^2.2.0", 13 | "gulp-copy": "0.0.2", 14 | "gulp-flatten": "0.0.4", 15 | "gulp-header": "^1.2.2", 16 | "gulp-help": "^1.3.4", 17 | "gulp-if": "^1.2.5", 18 | "gulp-less": "^3.0.3", 19 | "gulp-minify-css": "^0.5.1", 20 | "gulp-notify": "^2.2.0", 21 | "gulp-plumber": "^0.6.6", 22 | "gulp-print": "^1.1.0", 23 | "gulp-rename": "^1.2.2", 24 | "gulp-replace": "^0.5.3", 25 | "gulp-rtlcss": "^0.1.4", 26 | "gulp-uglify": "^1.2.0", 27 | "gulp-util": "^3.0.4", 28 | "gulp-watch": "^4.2.4", 29 | "moment": "^2.10.3", 30 | "require-dot-file": "^0.4.0", 31 | "semantic-ui": "^1.12.2" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /public/.webserver.php: -------------------------------------------------------------------------------- 1 | ../resource/default/http_server/built-in.php -------------------------------------------------------------------------------- /public/admin.php: -------------------------------------------------------------------------------- 1 | . 21 | */ 22 | require_once __DIR__ . '/../bootstrap.php'; 23 | 24 | use Sabre\Katana\Server\Installer; 25 | use Sabre\HTTP; 26 | 27 | /** 28 | * This file runs the administrator panel. 29 | * 30 | * @copyright Copyright (C) 2015 fruux GmbH (https://fruux.com/). 31 | * @author Ivan Enderlin 32 | * @license GNU Affero General Public License, Version 3. 33 | */ 34 | 35 | /** 36 | * If the applications has not already been installed, redirect to install.php. 37 | */ 38 | if (false === Installer::isInstalled()) { 39 | 40 | $request = HTTP\Sapi::getRequest(); 41 | $response = new HTTP\Response(); 42 | 43 | Installer::redirectToInstall($response, $request); 44 | HTTP\Sapi::sendResponse($response); 45 | 46 | return; 47 | 48 | } 49 | 50 | echo file_get_contents(__DIR__ . '/../resource/view/admin.html'); 51 | -------------------------------------------------------------------------------- /public/server.php: -------------------------------------------------------------------------------- 1 | . 21 | */ 22 | require_once __DIR__ . '/../bootstrap.php'; 23 | 24 | use Sabre\Katana\Server\Installer; 25 | use Sabre\Katana\Server\Server; 26 | use Sabre\HTTP; 27 | 28 | /** 29 | * This file is the first to receive the HTTP request and runs the server. 30 | * 31 | * @copyright Copyright (C) 2015 fruux GmbH (https://fruux.com/). 32 | * @author Ivan Enderlin 33 | * @license GNU Affero General Public License, Version 3. 34 | */ 35 | 36 | /** 37 | * If the applications has not already been installed, redirect to install.php. 38 | */ 39 | if (false === Installer::isInstalled()) { 40 | 41 | $request = HTTP\Sapi::getRequest(); 42 | $response = new HTTP\Response(); 43 | 44 | Installer::redirectToInstall($response, $request); 45 | HTTP\Sapi::sendResponse($response); 46 | 47 | return; 48 | 49 | } 50 | 51 | $server = new Server(); 52 | $server->run(); 53 | -------------------------------------------------------------------------------- /public/static/css/layout.css: -------------------------------------------------------------------------------- 1 | :root { 2 | font-size: 1em; 3 | } 4 | 5 | .when-bad-browser { 6 | display: none; 7 | } 8 | 9 | html.bad-browser .when-bad-browser { 10 | display: inline; 11 | } 12 | 13 | header { 14 | padding-top: 1em; 15 | margin-bottom: 3em; 16 | } 17 | 18 | main { 19 | padding: 0 3em; 20 | } 21 | -------------------------------------------------------------------------------- /public/static/css/ui.css: -------------------------------------------------------------------------------- 1 | body { 2 | position: relative; 3 | background: radial-gradient(circle at 100% 0%, #efd6c9, #d8b4a2) fixed; 4 | } 5 | 6 | body::before { 7 | position: fixed; 8 | top: 0; 9 | right: 0; 10 | bottom: 0; 11 | left: 0; 12 | 13 | content: ''; 14 | opacity: 0; 15 | 16 | background: url('../image/background.jpg') 50% 50% no-repeat scroll; 17 | background-size: cover; 18 | 19 | z-index: -1; 20 | 21 | transition: opacity .4s ease; 22 | } 23 | 24 | html:not(.logged) > body::before { 25 | opacity: 1; 26 | } 27 | 28 | header > h1 > img { 29 | width: 100px !important; 30 | } 31 | 32 | .segment { 33 | background: rgba(255, 255, 255, .85) !important; 34 | } 35 | 36 | .segment, .item { 37 | transition: opacity .3s ease; 38 | } 39 | 40 | html.modal .segment:not(.modal-exclusive), 41 | html.modal .item:not(.modal-exclusive) { 42 | pointer-events: none; 43 | opacity: .3; 44 | } 45 | -------------------------------------------------------------------------------- /public/static/font/Lato-Regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sabre-io/katana/6a17acb16ddeeb621d8f52a0437ff6423484ded2/public/static/font/Lato-Regular.eot -------------------------------------------------------------------------------- /public/static/font/Lato-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sabre-io/katana/6a17acb16ddeeb621d8f52a0437ff6423484ded2/public/static/font/Lato-Regular.ttf -------------------------------------------------------------------------------- /public/static/font/Lato-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sabre-io/katana/6a17acb16ddeeb621d8f52a0437ff6423484ded2/public/static/font/Lato-Regular.woff -------------------------------------------------------------------------------- /public/static/image/background.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sabre-io/katana/6a17acb16ddeeb621d8f52a0437ff6423484ded2/public/static/image/background.jpg -------------------------------------------------------------------------------- /public/static/image/katana_logo_full.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sabre-io/katana/6a17acb16ddeeb621d8f52a0437ff6423484ded2/public/static/image/katana_logo_full.png -------------------------------------------------------------------------------- /public/static/vendor/.empty: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sabre-io/katana/6a17acb16ddeeb621d8f52a0437ff6423484ded2/public/static/vendor/.empty -------------------------------------------------------------------------------- /public/static/vendor/README.md: -------------------------------------------------------------------------------- 1 | # ![K (sabre/katana's logo)](../../../public/static/image/katana_logo_full.png) 2 | 3 | ## Dependencies 4 | 5 | If this directory is **empty**, it means that the dependencies are not installed 6 | yet. 7 | 8 | Dependencies are managed by [Bower] and [NPM]. They are declared in the 9 | `bower.json` and `package.json` files at the root of the project. 10 | 11 | To install them: 12 | 13 | ```sh 14 | $ cd ../../../ 15 | $ make install-client 16 | $ make build-client 17 | ``` 18 | 19 | ## Development dependencies 20 | 21 | To be able to run tests or such development tools, simply run: 22 | 23 | ```sh 24 | $ cd ../../../ 25 | $ make devinstall-client 26 | $ make build-client 27 | ``` 28 | 29 | [Bower]: http://bower.io/ 30 | [NPM]: http://npmjs.org/ 31 | -------------------------------------------------------------------------------- /resource/default/database/README.md: -------------------------------------------------------------------------------- 1 | # ![K (sabre/katana's logo)](../../../public/static/image/katana_logo_full.png) 2 | 3 | ## About template filenames 4 | 5 | The extension of the template files is `.$driver.sql`, where `$driver` is the 6 | database driver's name as defined in PDO. For instance, for SQLite it is 7 | `sqlite` and for MySQL it is `mysql`. 8 | -------------------------------------------------------------------------------- /resource/default/database/addressbooks.mysql.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE addressbooks ( 2 | 3 | id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, 4 | principaluri VARCHAR(255), 5 | displayname VARCHAR(255), 6 | uri VARCHAR(190), 7 | description TEXT, 8 | synctoken INT(11) UNSIGNED NOT NULL DEFAULT '1', 9 | 10 | UNIQUE(principaluri(100), uri(100)) 11 | 12 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; 13 | 14 | CREATE TABLE cards ( 15 | 16 | id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, 17 | addressbookid INT(11) UNSIGNED NOT NULL, 18 | carddata MEDIUMBLOB, 19 | uri VARCHAR(190), 20 | lastmodified INT(11) UNSIGNED, 21 | etag VARBINARY(32), 22 | size INT(11) UNSIGNED NOT NULL 23 | 24 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; 25 | 26 | CREATE TABLE addressbookchanges ( 27 | 28 | id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, 29 | uri VARCHAR(190) NOT NULL, 30 | synctoken INT(11) UNSIGNED NOT NULL, 31 | addressbookid INT(11) UNSIGNED NOT NULL, 32 | operation TINYINT(1) NOT NULL, 33 | 34 | INDEX addressbookid_synctoken (addressbookid, synctoken) 35 | 36 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; 37 | -------------------------------------------------------------------------------- /resource/default/database/addressbooks.sqlite.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE addressbooks ( 2 | 3 | id INTEGER PRIMARY KEY ASC, 4 | principaluri TEXT, 5 | displayname TEXT, 6 | uri TEXT, 7 | description TEXT, 8 | synctoken INTEGER 9 | 10 | ); 11 | 12 | CREATE TABLE cards ( 13 | 14 | id INTEGER PRIMARY KEY ASC, 15 | addressbookid INTEGER, 16 | carddata BLOB, 17 | uri TEXT, 18 | lastmodified INTEGER, 19 | etag TEXT, 20 | size INTEGER 21 | 22 | ); 23 | 24 | CREATE TABLE addressbookchanges ( 25 | 26 | id INTEGER PRIMARY KEY ASC, 27 | uri TEXT, 28 | synctoken INTEGER, 29 | addressbookid INTEGER, 30 | operation INTEGER 31 | 32 | ); 33 | 34 | CREATE INDEX addressbookid_synctoken 35 | ON addressbookchanges (addressbookid, synctoken); 36 | -------------------------------------------------------------------------------- /resource/default/database/calendars.mysql.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE calendarobjects ( 2 | 3 | id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, 4 | calendardata MEDIUMBLOB, 5 | uri VARBINARY(190), 6 | calendarid INTEGER UNSIGNED NOT NULL, 7 | lastmodified INT(11) UNSIGNED, 8 | etag VARBINARY(32), 9 | size INT(11) UNSIGNED NOT NULL, 10 | componenttype VARBINARY(8), 11 | firstoccurence INT(11) UNSIGNED, 12 | lastoccurence INT(11) UNSIGNED, 13 | uid VARCHAR(200), 14 | 15 | UNIQUE(calendarid, uri) 16 | 17 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; 18 | 19 | CREATE TABLE calendars ( 20 | 21 | id INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, 22 | principaluri VARBINARY(100), 23 | displayname VARCHAR(100), 24 | uri VARBINARY(190), 25 | synctoken INTEGER UNSIGNED NOT NULL DEFAULT '1', 26 | description TEXT, 27 | calendarorder INT(11) UNSIGNED NOT NULL DEFAULT '0', 28 | calendarcolor VARBINARY(10), 29 | timezone TEXT, 30 | components VARBINARY(20), 31 | transparent TINYINT(1) NOT NULL DEFAULT '0', 32 | 33 | UNIQUE(principaluri, uri) 34 | 35 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; 36 | 37 | CREATE TABLE calendarchanges ( 38 | 39 | id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, 40 | uri VARCHAR(190) NOT NULL, 41 | synctoken INT(11) UNSIGNED NOT NULL, 42 | calendarid INT(11) UNSIGNED NOT NULL, 43 | operation TINYINT(1) NOT NULL, 44 | 45 | INDEX calendarid_synctoken (calendarid, synctoken) 46 | 47 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; 48 | 49 | CREATE TABLE calendarsubscriptions ( 50 | 51 | id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, 52 | uri VARCHAR(190) NOT NULL, 53 | principaluri VARCHAR(100) NOT NULL, 54 | source TEXT, 55 | displayname VARCHAR(100), 56 | refreshrate VARCHAR(10), 57 | calendarorder INT(11) UNSIGNED NOT NULL DEFAULT '0', 58 | calendarcolor VARCHAR(10), 59 | striptodos TINYINT(1) NULL, 60 | stripalarms TINYINT(1) NULL, 61 | stripattachments TINYINT(1) NULL, 62 | lastmodified INT(11) UNSIGNED, 63 | 64 | UNIQUE(principaluri, uri) 65 | 66 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; 67 | 68 | CREATE TABLE schedulingobjects ( 69 | 70 | id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, 71 | principaluri VARCHAR(255), 72 | calendardata MEDIUMBLOB, 73 | uri VARCHAR(190), 74 | lastmodified INT(11) UNSIGNED, 75 | etag VARCHAR(32), 76 | size INT(11) UNSIGNED NOT NULL 77 | 78 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; 79 | -------------------------------------------------------------------------------- /resource/default/database/calendars.sqlite.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE calendarobjects ( 2 | 3 | id INTEGER PRIMARY KEY ASC, 4 | calendardata BLOB, 5 | uri TEXT, 6 | calendarid INTEGER, 7 | lastmodified INTEGER, 8 | etag TEXT, 9 | size INTEGER, 10 | componenttype TEXT, 11 | firstoccurence INTEGER, 12 | lastoccurence INTEGER, 13 | uid TEXT 14 | 15 | ); 16 | 17 | CREATE TABLE calendars ( 18 | 19 | id INTEGER PRIMARY KEY ASC, 20 | principaluri TEXT, 21 | displayname TEXT, 22 | uri TEXT, 23 | synctoken INTEGER, 24 | description TEXT, 25 | calendarorder INTEGER, 26 | calendarcolor TEXT, 27 | timezone TEXT, 28 | components TEXT, 29 | transparent BOOL 30 | 31 | ); 32 | 33 | CREATE TABLE calendarchanges ( 34 | 35 | id INTEGER PRIMARY KEY ASC, 36 | uri TEXT, 37 | synctoken INTEGER, 38 | calendarid INTEGER, 39 | operation INTEGER 40 | 41 | ); 42 | 43 | CREATE INDEX calendarid_synctoken 44 | ON calendarchanges (calendarid, synctoken); 45 | 46 | CREATE TABLE calendarsubscriptions ( 47 | 48 | id INTEGER PRIMARY KEY ASC, 49 | uri TEXT, 50 | principaluri TEXT, 51 | source TEXT, 52 | displayname TEXT, 53 | refreshrate TEXT, 54 | calendarorder INTEGER, 55 | calendarcolor TEXT, 56 | striptodos BOOL, 57 | stripalarms BOOL, 58 | stripattachments BOOL, 59 | lastmodified INT 60 | 61 | ); 62 | 63 | CREATE TABLE schedulingobjects ( 64 | 65 | id INTEGER PRIMARY KEY ASC, 66 | principaluri TEXT, 67 | calendardata BLOB, 68 | uri TEXT, 69 | lastmodified INTEGER, 70 | etag TEXT, 71 | size INTEGER 72 | 73 | ); 74 | 75 | CREATE INDEX principaluri_uri 76 | ON calendarsubscriptions (principaluri, uri); 77 | -------------------------------------------------------------------------------- /resource/default/database/locks.mysql.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE locks ( 2 | 3 | id INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, 4 | owner VARCHAR(100), 5 | timeout INTEGER UNSIGNED, 6 | created INTEGER, 7 | token VARBINARY(100), 8 | scope TINYINT, 9 | depth TINYINT, 10 | uri VARBINARY(1000), 11 | 12 | INDEX(token), 13 | INDEX(uri(100)) 14 | 15 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; 16 | -------------------------------------------------------------------------------- /resource/default/database/locks.sqlite.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE locks ( 2 | 3 | id INTEGER PRIMARY KEY ASC, 4 | owner TEXT, 5 | timeout INTEGER, 6 | created INTEGER, 7 | token TEXT, 8 | scope INTEGER, 9 | depth INTEGER, 10 | uri TEXT 11 | 12 | ); 13 | -------------------------------------------------------------------------------- /resource/default/database/principals.mysql.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE principals ( 2 | 3 | id INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, 4 | uri VARCHAR(190) NOT NULL, 5 | email VARCHAR(80), 6 | displayname VARCHAR(80), 7 | vcardurl VARCHAR(255), 8 | 9 | UNIQUE(uri) 10 | 11 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; 12 | 13 | CREATE TABLE groupmembers ( 14 | 15 | id INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, 16 | principal_id INTEGER UNSIGNED NOT NULL, 17 | member_id INTEGER UNSIGNED NOT NULL, 18 | 19 | UNIQUE(principal_id, member_id) 20 | 21 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; 22 | -------------------------------------------------------------------------------- /resource/default/database/principals.sqlite.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE principals ( 2 | 3 | id INTEGER PRIMARY KEY ASC, 4 | uri TEXT, 5 | email TEXT, 6 | displayname TEXT, 7 | vcardurl TEXT, 8 | 9 | UNIQUE(uri) 10 | 11 | ); 12 | 13 | CREATE TABLE groupmembers ( 14 | 15 | id INTEGER PRIMARY KEY ASC, 16 | principal_id INTEGER, 17 | member_id INTEGER, 18 | 19 | UNIQUE(principal_id, member_id) 20 | 21 | ); 22 | -------------------------------------------------------------------------------- /resource/default/database/propertystorage.mysql.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE propertystorage ( 2 | 3 | id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, 4 | path VARBINARY(1024) NOT NULL, 5 | name VARBINARY(100) NOT NULL, 6 | value MEDIUMBLOB 7 | 8 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; 9 | 10 | CREATE UNIQUE INDEX path_property 11 | ON propertystorage (path(600), name(100)); 12 | -------------------------------------------------------------------------------- /resource/default/database/propertystorage.sqlite.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE propertystorage ( 2 | 3 | id INTEGER PRIMARY KEY ASC, 4 | path TEXT, 5 | name TEXT, 6 | value TEXT 7 | 8 | ); 9 | 10 | CREATE UNIQUE INDEX path_property 11 | ON propertystorage (path, name); 12 | -------------------------------------------------------------------------------- /resource/default/database/users.mysql.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE users ( 2 | 3 | id INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, 4 | username VARCHAR(50), 5 | digesta1 VARCHAR(60), 6 | 7 | UNIQUE(username) 8 | 9 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; 10 | -------------------------------------------------------------------------------- /resource/default/database/users.sqlite.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE users ( 2 | 3 | id INTEGER PRIMARY KEY ASC, 4 | username TEXT, 5 | digesta1 TEXT, 6 | 7 | UNIQUE(username) 8 | 9 | ); 10 | -------------------------------------------------------------------------------- /resource/default/http_server/built-in.php: -------------------------------------------------------------------------------- 1 | . 21 | */ 22 | require_once __DIR__ . '/../../../bootstrap.php'; 23 | 24 | use Hoa\Dispatcher; 25 | use Hoa\File; 26 | use Hoa\Mime; 27 | use Hoa\Router; 28 | 29 | /** 30 | * Router of the HTTP server. 31 | * 32 | * @copyright Copyright (C) 2015 fruux GmbH (https://fruux.com/). 33 | * @author Ivan Enderlin 34 | * @license GNU Affero General Public License, Version 3. 35 | */ 36 | $router = new Router\Http\Dav(); 37 | $router 38 | ->any( 39 | 'a', 40 | '.*', 41 | function(Dispatcher\Kit $_this) { 42 | $uri = $_this->router->getURI(); 43 | $file = __DIR__ . '/../../../public/' . rtrim($uri, '/'); 44 | 45 | if (!empty($uri) && true === file_exists($file)) { 46 | if ('.php' === substr($file, -4)) { 47 | require $file; 48 | 49 | return; 50 | } 51 | 52 | $stream = new File\Read($file); 53 | 54 | try { 55 | $mime = new Mime($stream); 56 | $_mime = $mime->getMime(); 57 | } catch (Mime\Exception $e) { 58 | $_mime = 'text/plain'; 59 | } 60 | 61 | header('Content-Type: ' . $_mime); 62 | echo $stream->readAll(); 63 | 64 | return; 65 | } 66 | 67 | require __DIR__ . '/../../../public/server.php'; 68 | } 69 | ); 70 | 71 | $dispatcher = new Dispatcher\Basic(); 72 | $dispatcher->dispatch($router); 73 | -------------------------------------------------------------------------------- /resource/view/caldav_scheduling.txt: -------------------------------------------------------------------------------- 1 | _ __ _ 2 | | |/ /__ _| |_ __ _ _ __ __ _ 3 | | ' // _` | __/ _` | '_ \ / _` | 4 | | . \ (_| | || (_| | | | | (_| | 5 | |_|\_\__,_|\__\__,_|_| |_|\__,_| 6 | 7 | Calendar notification from . 8 | 9 | ----------------------------------------------------------- 10 | 11 | 12 | 13 | **** invited you to “”. 14 | 15 | 16 | 17 | “” has been canceled. 18 | 19 | 20 | 21 | **** accepted your invitation to “”. 22 | 23 | 24 | 25 | **** tentatively accepted your invitation to “”. 26 | 27 | 28 | 29 | **** declined your invitation to “”. 30 | 31 | 32 | 33 | ----------------------------------------------------------- 34 | 35 | When? format('l, F jS Y') ?> 36 | 37 | 38 | format('g:ia T') ?> 39 | 40 | 41 | 42 | 43 | Attendees: 44 | 45 | <> (organizer) 46 | 47 | 48 | 49 | 50 | 51 | 52 | Where? 53 | 54 | 55 | 56 | 57 | URL: 58 | 59 | 60 | 61 | 62 | Notes: 63 | 64 | 65 | ----------------------------------------------------------- 66 | 67 | http://sabre.io/katana is powered by http://sabre.io/ 68 | © 2015- https://fruux.com/ -------------------------------------------------------------------------------- /resource/view/install_bower.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Installation of sabre/katana's dependencies 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 39 | 40 | 41 | 42 |
43 |

44 | sabre/katana's logo 45 |
46 | Missing dependencies 47 |

48 |
49 | 50 |
51 |

Dependencies

52 | 53 |

Apparently, not all dependencies have been installed.

54 |

Dependencies are managed by Bower. They are 55 | declared in the bower.json file at the root of the project. We 56 | assume this is your current working directory. Then, to install them, please 57 | run:

58 |
$ bower install --production
59 | 60 |

Development dependencies

61 | 62 |

To be able to run tests or such development tools, simply omit the 63 | --production option. Thus, to install all dependencies, please 64 | run:

65 |
$ bower install
66 | 67 |

What's next?

68 | 69 |

Simply refresh this page!

70 |
71 | 72 | 73 | -------------------------------------------------------------------------------- /resource/view/install_done.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Installation already done! 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |

20 | sabre/katana's logo 21 |
Installation of sabre/katana
22 |

23 |
24 | 25 |
26 |
27 |
28 | 29 |
30 |
sabre/katana is already installed
31 |

Surprisingly, you cannot install this software twice.

32 |

What's next? Go manage your server with the 33 | administration interface.

34 |
35 |
36 |
37 |
38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/gulpfile.js: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Set-up 3 | *******************************/ 4 | 5 | var 6 | gulp = require('gulp-help')(require('gulp')), 7 | 8 | // read user config to know what task to load 9 | config = require('./tasks/config/user'), 10 | 11 | // import tasks 12 | build = require('./tasks/build'), 13 | clean = require('./tasks/clean'), 14 | version = require('./tasks/version'), 15 | watch = require('./tasks/watch'), 16 | 17 | // docs tasks 18 | serveDocs = require('./tasks/docs/serve'), 19 | buildDocs = require('./tasks/docs/build'), 20 | 21 | // rtl 22 | buildRTL = require('./tasks/rtl/build'), 23 | watchRTL = require('./tasks/rtl/watch') 24 | ; 25 | 26 | /*-------------- 27 | Common 28 | ---------------*/ 29 | 30 | gulp.task('default', false, [ 31 | 'watch' 32 | ]); 33 | 34 | gulp.task('watch', 'Watch for site/theme changes', watch); 35 | gulp.task('build', 'Builds all files from source', build); 36 | 37 | gulp.task('clean', 'Clean dist folder', clean); 38 | gulp.task('version', 'Displays current version of Semantic', version); 39 | 40 | /*-------------- 41 | Docs 42 | ---------------*/ 43 | 44 | /* 45 | See usage instruction in Docs Readme 46 | https://github.com/Semantic-Org/Semantic-UI-Docs/ 47 | */ 48 | 49 | gulp.task('serve-docs', 'Serve file changes to SUI Docs', serveDocs); 50 | gulp.task('build-docs', 'Build all files and add to SUI Docs', buildDocs); 51 | 52 | /*-------------- 53 | RTL 54 | ---------------*/ 55 | 56 | if(config.rtl) { 57 | gulp.task('watch-rtl', 'Build all files as RTL', watchRTL); 58 | gulp.task('build-rtl', 'Watch files as RTL ', buildRTL); 59 | } 60 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/definitions/collections/breadcrumb.less: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI - Breadcrumb 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | 12 | /******************************* 13 | Theme 14 | *******************************/ 15 | 16 | @type : 'collection'; 17 | @element : 'breadcrumb'; 18 | 19 | @import (multiple) '../../theme.config'; 20 | 21 | 22 | /******************************* 23 | Breadcrumb 24 | *******************************/ 25 | 26 | .ui.breadcrumb { 27 | margin: @verticalMargin 0em; 28 | display: @display; 29 | vertical-align: @verticalAlign; 30 | } 31 | .ui.breadcrumb:first-child { 32 | margin-top: 0em; 33 | } 34 | .ui.breadcrumb:last-child { 35 | margin-bottom: 0em; 36 | } 37 | 38 | /******************************* 39 | Content 40 | *******************************/ 41 | 42 | /* Divider */ 43 | .ui.breadcrumb .divider { 44 | display: inline-block; 45 | opacity: @dividerOpacity; 46 | margin: 0em @dividerSpacing 0em; 47 | 48 | font-size: @dividerSize; 49 | color: @dividerColor; 50 | vertical-align: @dividerVerticalAlign; 51 | } 52 | 53 | /* Link */ 54 | .ui.breadcrumb a { 55 | color: @linkColor; 56 | } 57 | .ui.breadcrumb a:hover { 58 | color: @linkHoverColor; 59 | } 60 | 61 | 62 | /* Icon Divider */ 63 | .ui.breadcrumb .icon.divider { 64 | font-size: @iconDividerSize; 65 | vertical-align: @iconDividerVerticalAlign; 66 | } 67 | 68 | /* Section */ 69 | .ui.breadcrumb a.section { 70 | cursor: pointer; 71 | } 72 | .ui.breadcrumb .section { 73 | display: inline-block; 74 | margin: @sectionMargin; 75 | padding: @sectionPadding; 76 | } 77 | 78 | /* Loose Coupling */ 79 | .ui.breadcrumb.segment { 80 | display: inline-block; 81 | padding: @segmentPadding; 82 | } 83 | 84 | /******************************* 85 | States 86 | *******************************/ 87 | 88 | .ui.breadcrumb .active.section { 89 | font-weight: @activeFontWeight; 90 | } 91 | 92 | 93 | /******************************* 94 | Variations 95 | *******************************/ 96 | 97 | .ui.mini.breadcrumb { 98 | font-size: @mini; 99 | } 100 | .ui.tiny.breadcrumb { 101 | font-size: @tiny; 102 | } 103 | .ui.small.breadcrumb { 104 | font-size: @small; 105 | } 106 | .ui.breadcrumb { 107 | font-size: @medium; 108 | } 109 | .ui.large.breadcrumb { 110 | font-size: @large; 111 | } 112 | .ui.big.breadcrumb { 113 | font-size: @big; 114 | } 115 | .ui.huge.breadcrumb { 116 | font-size: @huge; 117 | } 118 | .ui.massive.breadcrumb { 119 | font-size: @massive; 120 | } 121 | 122 | .loadUIOverrides(); -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/definitions/elements/flag.less: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI - Flag 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | 12 | 13 | /******************************* 14 | Theme 15 | *******************************/ 16 | 17 | @type : 'element'; 18 | @element : 'flag'; 19 | 20 | @import (multiple) '../../theme.config'; 21 | 22 | 23 | /******************************* 24 | Flag 25 | *******************************/ 26 | 27 | i.flag:not(.icon) { 28 | display: inline-block; 29 | 30 | width: @width; 31 | height: @height; 32 | 33 | line-height: @height; 34 | vertical-align: @verticalAlign; 35 | margin: 0em @margin 0em 0em; 36 | 37 | text-decoration: inherit; 38 | 39 | speak: none; 40 | font-smoothing: antialiased; 41 | backface-visibility: hidden; 42 | } 43 | 44 | /* Sprite */ 45 | i.flag:not(.icon):before { 46 | display: inline-block; 47 | content: ''; 48 | background: url(@spritePath) no-repeat 0px 0px; 49 | width: @width; 50 | height: @height; 51 | } 52 | 53 | .loadUIOverrides(); -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/definitions/elements/rail.less: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI - Rail 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | 12 | /******************************* 13 | Theme 14 | *******************************/ 15 | 16 | @type : 'element'; 17 | @element : 'rail'; 18 | 19 | @import (multiple) '../../theme.config'; 20 | 21 | /******************************* 22 | Rails 23 | *******************************/ 24 | 25 | .ui.rail { 26 | position: absolute; 27 | top: 0%; 28 | width: @width; 29 | height: @height; 30 | box-sizing: @contentSizing; 31 | } 32 | 33 | .ui.left.rail { 34 | left: auto; 35 | right: 100%; 36 | padding: 0em (@distance / 2) 0em 0em; 37 | margin: 0em (@distance / 2) 0em 0em; 38 | } 39 | 40 | .ui.right.rail { 41 | left: 100%; 42 | right: auto; 43 | padding: 0em 0em 0em (@distance / 2); 44 | margin: 0em 0em 0em (@distance / 2); 45 | } 46 | 47 | /******************************* 48 | Variations 49 | *******************************/ 50 | 51 | /*-------------- 52 | Internal 53 | ---------------*/ 54 | 55 | .ui.left.internal.rail { 56 | left: 0%; 57 | right: auto; 58 | padding: 0em 0em 0em (@distance / 2); 59 | margin: 0em 0em 0em (@distance / 2); 60 | } 61 | 62 | .ui.right.internal.rail { 63 | left: auto; 64 | right: 0%; 65 | padding: 0em (@distance / 2) 0em 0em; 66 | margin: 0em (@distance / 2) 0em 0em; 67 | } 68 | 69 | 70 | /*-------------- 71 | Divided 72 | ---------------*/ 73 | 74 | .ui.left.dividing.rail { 75 | padding: 0em (@dividedDistance / 2) 0em 0em; 76 | margin: 0em (@dividedDistance / 2) 0em 0em; 77 | border-right: @dividedBorder; 78 | } 79 | .ui.right.dividing.rail { 80 | border-left: @dividedBorder; 81 | padding: 0em 0em 0em (@dividedDistance / 2); 82 | margin: 0em 0em 0em (@dividedDistance / 2); 83 | } 84 | 85 | /*-------------- 86 | Distance 87 | ---------------*/ 88 | 89 | .ui.close.left.rail { 90 | padding: 0em (@closeDistance / 2) 0em 0em; 91 | margin: 0em (@closeDistance / 2) 0em 0em; 92 | } 93 | .ui.close.right.rail { 94 | padding: 0em 0em 0em (@closeDistance / 2); 95 | margin: 0em 0em 0em (@closeDistance / 2); 96 | } 97 | .ui.very.close.left.rail { 98 | padding: 0em (@veryCloseDistance / 2) 0em 0em; 99 | margin: 0em (@veryCloseDistance / 2) 0em 0em; 100 | } 101 | .ui.very.close.right.rail { 102 | padding: 0em 0em 0em (@veryCloseDistance / 2); 103 | margin: 0em 0em 0em (@veryCloseDistance / 2); 104 | } 105 | 106 | /*-------------- 107 | Attached 108 | ---------------*/ 109 | 110 | .ui.attached.left.rail, 111 | .ui.attached.right.rail { 112 | padding: 0em; 113 | margin: 0em; 114 | } 115 | 116 | /*-------------- 117 | Sizing 118 | ---------------*/ 119 | 120 | .ui.rail { 121 | font-size: @medium; 122 | } 123 | 124 | 125 | 126 | .loadUIOverrides(); 127 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/definitions/globals/reset.less: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI - Reset 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | 12 | /******************************* 13 | Theme 14 | *******************************/ 15 | 16 | @type : 'global'; 17 | @element : 'reset'; 18 | 19 | @import (multiple) '../../theme.config'; 20 | 21 | /******************************* 22 | Reset 23 | *******************************/ 24 | 25 | /* Border-Box */ 26 | *, 27 | *:before, 28 | *:after { 29 | box-sizing: inherit; 30 | } 31 | html { 32 | box-sizing: border-box; 33 | } 34 | 35 | /* iPad Input Shadows */ 36 | input[type="text"], input[type="email"], input[type="search"], input[type="password"] { 37 | -webkit-appearance: none; 38 | -moz-appearance: none; /* mobile firefox too! */ 39 | } 40 | 41 | .loadUIOverrides(); -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/definitions/modules/sticky.less: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI - Sticky 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | 12 | 13 | /******************************* 14 | Theme 15 | *******************************/ 16 | 17 | @type : 'module'; 18 | @element : 'sticky'; 19 | 20 | @import (multiple) '../../theme.config'; 21 | 22 | /******************************* 23 | Sticky 24 | *******************************/ 25 | 26 | .ui.sticky { 27 | position: static; 28 | transition: @transition; 29 | z-index: @zIndex; 30 | } 31 | 32 | /******************************* 33 | States 34 | *******************************/ 35 | 36 | /* Bound */ 37 | .ui.sticky.bound { 38 | position: absolute; 39 | left: auto; 40 | right: auto; 41 | } 42 | 43 | /* Fixed */ 44 | .ui.sticky.fixed { 45 | position: fixed; 46 | left: auto; 47 | right: auto; 48 | } 49 | 50 | /* Bound/Fixed Position */ 51 | .ui.sticky.bound.top, 52 | .ui.sticky.fixed.top { 53 | top: 0px; 54 | bottom: auto; 55 | } 56 | .ui.sticky.bound.bottom, 57 | .ui.sticky.fixed.bottom { 58 | top: auto; 59 | bottom: 0px; 60 | } 61 | 62 | 63 | /******************************* 64 | Types 65 | *******************************/ 66 | 67 | .ui.native.sticky { 68 | position: -webkit-sticky; 69 | position: -moz-sticky; 70 | position: -ms-sticky; 71 | position: -o-sticky; 72 | position: sticky; 73 | } 74 | 75 | .loadUIOverrides(); -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/definitions/modules/tab.less: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI - Tab 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | 12 | 13 | /******************************* 14 | Theme 15 | *******************************/ 16 | 17 | @type : 'module'; 18 | @element : 'tab'; 19 | 20 | @import (multiple) '../../theme.config'; 21 | 22 | /******************************* 23 | UI Tabs 24 | *******************************/ 25 | 26 | .ui.tab { 27 | display: none; 28 | } 29 | 30 | /******************************* 31 | States 32 | *******************************/ 33 | 34 | /*-------------------- 35 | Active 36 | ---------------------*/ 37 | 38 | .ui.tab.active, 39 | .ui.tab.open { 40 | display: block; 41 | } 42 | 43 | /*-------------------- 44 | Loading 45 | ---------------------*/ 46 | 47 | .ui.tab.loading { 48 | position: relative; 49 | overflow: hidden; 50 | display: block; 51 | min-height: @loadingMinHeight; 52 | } 53 | .ui.tab.loading * { 54 | position: @loadingContentPosition !important; 55 | left: @loadingContentOffset !important; 56 | } 57 | 58 | .ui.tab.loading:before, 59 | .ui.tab.loading.segment:before { 60 | position: absolute; 61 | content: ''; 62 | top: @loaderDistanceFromTop; 63 | left: 50%; 64 | 65 | margin: @loaderMargin; 66 | width: @loaderSize; 67 | height: @loaderSize; 68 | 69 | border-radius: @circularRadius; 70 | border: @loaderLineWidth solid @loaderFillColor; 71 | } 72 | .ui.tab.loading:after, 73 | .ui.tab.loading.segment:after { 74 | position: absolute; 75 | content: ''; 76 | top: @loaderDistanceFromTop; 77 | left: 50%; 78 | 79 | margin: @loaderMargin; 80 | width: @loaderSize; 81 | height: @loaderSize; 82 | 83 | animation: button-spin @loaderSpeed linear; 84 | animation-iteration-count: infinite; 85 | 86 | border-radius: @circularRadius; 87 | 88 | border-color: @loaderLineColor transparent transparent; 89 | border-style: solid; 90 | border-width: @loaderLineWidth; 91 | 92 | box-shadow: 0px 0px 0px 1px transparent; 93 | } 94 | 95 | .loadUIOverrides(); -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/definitions/modules/transition.less: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI - Transition 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2014 Contributorss 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | 12 | 13 | /******************************* 14 | Theme 15 | *******************************/ 16 | 17 | @type : 'module'; 18 | @element : 'transition'; 19 | 20 | @import (multiple) '../../theme.config'; 21 | 22 | /******************************* 23 | Transitions 24 | *******************************/ 25 | 26 | .transition { 27 | animation-iteration-count: 1; 28 | animation-duration: @transitionDefaultDuration; 29 | animation-timing-function: @transitionDefaultEasing; 30 | animation-fill-mode: @transitionDefaultFill; 31 | } 32 | 33 | /******************************* 34 | States 35 | *******************************/ 36 | 37 | 38 | /* Animating */ 39 | .animating.transition { 40 | backface-visibility: @backfaceVisibility; 41 | transform: @use3DAcceleration; 42 | visibility: visible !important; 43 | } 44 | 45 | /* Loading */ 46 | .loading.transition { 47 | position: absolute; 48 | top: -99999px; 49 | left: -99999px; 50 | } 51 | 52 | /* Hidden */ 53 | .hidden.transition { 54 | display: none; 55 | visibility: hidden; 56 | } 57 | 58 | /* Visible */ 59 | .visible.transition { 60 | display: block !important; 61 | visibility: visible !important; 62 | backface-visibility: @backfaceVisibility; 63 | transform: @use3DAcceleration; 64 | } 65 | 66 | /* Disabled */ 67 | .disabled.transition { 68 | animation-play-state: paused; 69 | } 70 | 71 | /******************************* 72 | Variations 73 | *******************************/ 74 | 75 | .looping.transition { 76 | animation-iteration-count: infinite; 77 | } 78 | 79 | 80 | .loadUIOverrides(); -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/definitions/modules/video.less: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI - Video 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | 12 | 13 | /******************************* 14 | Theme 15 | *******************************/ 16 | 17 | @type : 'module'; 18 | @element : 'video'; 19 | 20 | @import (multiple) '../../theme.config'; 21 | 22 | /******************************* 23 | Video 24 | *******************************/ 25 | 26 | .ui.video { 27 | position: relative; 28 | background-color: @background; 29 | position: relative; 30 | max-width: 100%; 31 | padding-bottom: 56.25%; 32 | height: 0px; 33 | overflow: hidden; 34 | } 35 | 36 | /*-------------- 37 | Content 38 | ---------------*/ 39 | 40 | /* Placeholder Image */ 41 | .ui.video .placeholder { 42 | background-color: @placeholderBackground; 43 | } 44 | 45 | /* Play Icon Overlay */ 46 | .ui.video .play { 47 | cursor: pointer; 48 | position: absolute; 49 | top: 0px; 50 | left: 0px; 51 | z-index: 10; 52 | 53 | width: 100%; 54 | height: 100%; 55 | 56 | opacity: @playOpacity; 57 | transition: opacity 0.3s; 58 | } 59 | .ui.video .play.icon:before { 60 | position: absolute; 61 | top: 50%; 62 | left: 50%; 63 | z-index: 11; 64 | 65 | background: @playBackground; 66 | 67 | width: (@playSize + @playBorderSize); 68 | height: (@playSize + @playBorderSize); 69 | line-height: (@playSize + @playBorderSize); 70 | border-radius: @playBorderRadius; 71 | 72 | color: @playColor; 73 | font-size: @playSize; 74 | text-shadow: @playShadow; 75 | transform: translateX(-50%) translateY(-50%); 76 | } 77 | 78 | .ui.video .placeholder { 79 | position: absolute; 80 | top: 0px; 81 | left: 0px; 82 | display: block; 83 | width: 100%; 84 | height: 100%; 85 | } 86 | 87 | /* IFrame Embed */ 88 | .ui.video .embed iframe, 89 | .ui.video .embed embed, 90 | .ui.video .embed object { 91 | position: absolute; 92 | border: none; 93 | width: 100%; 94 | height: 100%; 95 | top: 0px; 96 | left: 0px; 97 | margin: 0em; 98 | padding: 0em; 99 | } 100 | 101 | /******************************* 102 | States 103 | *******************************/ 104 | 105 | /*-------------- 106 | Hover 107 | ---------------*/ 108 | 109 | .ui.video .play:hover { 110 | opacity: @playHoverOpacity; 111 | } 112 | 113 | /*-------------- 114 | Active 115 | ---------------*/ 116 | 117 | .ui.video.active .play, 118 | .ui.video.active .placeholder { 119 | display: none; 120 | } 121 | .ui.video.active .embed { 122 | display: inline; 123 | } 124 | 125 | .loadUIOverrides(); -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/semantic.less: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | ███████╗███████╗███╗ ███╗ █████╗ ███╗ ██╗████████╗██╗ ██████╗ ██╗ ██╗██╗ 4 | ██╔════╝██╔════╝████╗ ████║██╔══██╗████╗ ██║╚══██╔══╝██║██╔════╝ ██║ ██║██║ 5 | ███████╗█████╗ ██╔████╔██║███████║██╔██╗ ██║ ██║ ██║██║ ██║ ██║██║ 6 | ╚════██║██╔══╝ ██║╚██╔╝██║██╔══██║██║╚██╗██║ ██║ ██║██║ ██║ ██║██║ 7 | ███████║███████╗██║ ╚═╝ ██║██║ ██║██║ ╚████║ ██║ ██║╚██████╗ ╚██████╔╝██║ 8 | ╚══════╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ 9 | 10 | Import this file into your LESS project to use Semantic UI without build tools 11 | */ 12 | 13 | /* Global */ 14 | & { @import "definitions/globals/reset"; } 15 | & { @import "definitions/globals/site"; } 16 | 17 | /* Elements */ 18 | & { @import "definitions/elements/button"; } 19 | & { @import "definitions/elements/divider"; } 20 | & { @import "definitions/elements/flag"; } 21 | & { @import "definitions/elements/header"; } 22 | & { @import "definitions/elements/icon"; } 23 | & { @import "definitions/elements/image"; } 24 | & { @import "definitions/elements/input"; } 25 | & { @import "definitions/elements/label"; } 26 | & { @import "definitions/elements/list"; } 27 | & { @import "definitions/elements/loader"; } 28 | & { @import "definitions/elements/rail"; } 29 | & { @import "definitions/elements/reveal"; } 30 | & { @import "definitions/elements/segment"; } 31 | & { @import "definitions/elements/step"; } 32 | 33 | /* Collections */ 34 | & { @import "definitions/collections/breadcrumb"; } 35 | & { @import "definitions/collections/form"; } 36 | & { @import "definitions/collections/grid"; } 37 | & { @import "definitions/collections/menu"; } 38 | & { @import "definitions/collections/message"; } 39 | & { @import "definitions/collections/table"; } 40 | 41 | /* Views */ 42 | & { @import "definitions/views/ad"; } 43 | & { @import "definitions/views/card"; } 44 | & { @import "definitions/views/comment"; } 45 | & { @import "definitions/views/feed"; } 46 | & { @import "definitions/views/item"; } 47 | & { @import "definitions/views/statistic"; } 48 | 49 | /* Modules */ 50 | & { @import "definitions/modules/accordion"; } 51 | & { @import "definitions/modules/checkbox"; } 52 | & { @import "definitions/modules/dimmer"; } 53 | & { @import "definitions/modules/dropdown"; } 54 | & { @import "definitions/modules/modal"; } 55 | & { @import "definitions/modules/nag"; } 56 | & { @import "definitions/modules/popup"; } 57 | & { @import "definitions/modules/progress"; } 58 | & { @import "definitions/modules/rating"; } 59 | & { @import "definitions/modules/search"; } 60 | & { @import "definitions/modules/shape"; } 61 | & { @import "definitions/modules/sidebar"; } 62 | & { @import "definitions/modules/sticky"; } 63 | & { @import "definitions/modules/tab"; } 64 | & { @import "definitions/modules/transition"; } 65 | & { @import "definitions/modules/video"; } -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/collections/breadcrumb.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/collections/breadcrumb.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/collections/form.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/collections/form.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/collections/grid.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/collections/grid.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/collections/menu.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/collections/menu.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/collections/message.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/collections/message.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/collections/table.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | 5 | .ui.basic.table { 6 | border: 0; 7 | } 8 | 9 | .ui.basic.table thead { 10 | background: @headerBackground; 11 | } 12 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/collections/table.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/elements/button.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | 5 | .ui.button { 6 | font-weight: normal; 7 | } 8 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/elements/button.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/elements/divider.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/elements/divider.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/elements/flag.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/elements/flag.variables: -------------------------------------------------------------------------------- 1 | /*------------------- 2 | Flag Variables 3 | --------------------*/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/elements/header.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/elements/header.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/elements/icon.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/elements/icon.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | 5 | @src: 6 | url("fonts/@{fontName}.eot?#iefix") format('embedded-opentype'), 7 | url("fonts/@{fontName}.woff2") format('woff'), 8 | url("fonts/@{fontName}.woff") format('woff'), 9 | url("fonts/@{fontName}.ttf") format('truetype'), 10 | url("fonts/@{fontName}.svg#icons") format('svg') 11 | ; 12 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/elements/image.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/elements/image.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | 5 | @tinyWidth: 40px; 6 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/elements/input.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/elements/input.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/elements/label.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/elements/label.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/elements/list.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/elements/list.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/elements/loader.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/elements/loader.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/elements/rail.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/elements/rail.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/elements/reveal.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/elements/reveal.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/elements/segment.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/elements/segment.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/elements/step.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/elements/step.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/globals/reset.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/globals/reset.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Global Variables 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/globals/site.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | 5 | @font-face { 6 | font-family: Lato; 7 | src: url('../../font/Lato-Regular.woff') format('woff'), 8 | url('../../font/Lato-Regular.eot') format('eot'), 9 | url('../../font/Lato-Regular.ttf') format('truetype'); 10 | font-weight: normal; 11 | font-style: normal; 12 | } 13 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/globals/site.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Global Variables 3 | *******************************/ 4 | 5 | @importGoogleFonts: false; -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/modules/accordion.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/modules/accordion.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/modules/chatroom.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/modules/chatroom.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/modules/checkbox.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/modules/checkbox.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/modules/dimmer.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/modules/dimmer.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/modules/dropdown.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/modules/dropdown.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/modules/modal.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/modules/modal.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/modules/nag.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/modules/nag.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/modules/popup.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/modules/popup.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/modules/progress.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/modules/progress.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/modules/rating.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/modules/rating.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/modules/search.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/modules/search.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/modules/shape.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/modules/shape.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/modules/sidebar.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/modules/sidebar.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/modules/sticky.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/modules/sticky.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/modules/tab.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/modules/tab.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/modules/transition.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/modules/transition.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/modules/video.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/modules/video.variables: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sabre-io/katana/6a17acb16ddeeb621d8f52a0437ff6423484ded2/resource/view/semantic-ui/src/site/modules/video.variables -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/views/ad.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/views/ad.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/views/card.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/views/card.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/views/comment.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/views/comment.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/views/feed.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/views/feed.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/views/item.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/views/item.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/views/statistic.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/site/views/statistic.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/theme.config: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | ████████╗██╗ ██╗███████╗███╗ ███╗███████╗███████╗ 4 | ╚══██╔══╝██║ ██║██╔════╝████╗ ████║██╔════╝██╔════╝ 5 | ██║ ███████║█████╗ ██╔████╔██║█████╗ ███████╗ 6 | ██║ ██╔══██║██╔══╝ ██║╚██╔╝██║██╔══╝ ╚════██║ 7 | ██║ ██║ ██║███████╗██║ ╚═╝ ██║███████╗███████║ 8 | ╚═╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝╚══════╝╚══════╝ 9 | 10 | */ 11 | 12 | /******************************* 13 | Theme Selection 14 | *******************************/ 15 | 16 | /* To override a theme for an individual element 17 | specify theme name below 18 | */ 19 | 20 | /* Global */ 21 | @site : 'default'; 22 | @reset : 'default'; 23 | 24 | /* Elements */ 25 | @button : 'default'; 26 | @divider : 'default'; 27 | @flag : 'default'; 28 | @header : 'default'; 29 | @icon : 'default'; 30 | @image : 'default'; 31 | @input : 'default'; 32 | @label : 'default'; 33 | @list : 'default'; 34 | @loader : 'default'; 35 | @rail : 'default'; 36 | @reveal : 'default'; 37 | @segment : 'default'; 38 | @step : 'default'; 39 | 40 | /* Collections */ 41 | @breadcrumb : 'default'; 42 | @form : 'default'; 43 | @grid : 'default'; 44 | @menu : 'default'; 45 | @message : 'default'; 46 | @table : 'default'; 47 | 48 | /* Modules */ 49 | @accordion : 'default'; 50 | @checkbox : 'default'; 51 | @dimmer : 'default'; 52 | @dropdown : 'default'; 53 | @modal : 'default'; 54 | @nag : 'default'; 55 | @popup : 'default'; 56 | @progress : 'default'; 57 | @rating : 'default'; 58 | @search : 'default'; 59 | @shape : 'default'; 60 | @sidebar : 'default'; 61 | @sticky : 'default'; 62 | @tab : 'default'; 63 | @transition : 'default'; 64 | @video : 'default'; 65 | 66 | /* Views */ 67 | @ad : 'default'; 68 | @card : 'default'; 69 | @comment : 'default'; 70 | @feed : 'default'; 71 | @item : 'default'; 72 | @statistic : 'default'; 73 | 74 | /******************************* 75 | Folders 76 | *******************************/ 77 | 78 | /* Path to theme packages */ 79 | @themesFolder : 'themes/'; 80 | 81 | /* Path to site override folder */ 82 | @siteFolder : 'site/'; 83 | 84 | /******************************* 85 | Import Theme 86 | *******************************/ 87 | 88 | @import "theme.less"; 89 | 90 | /* End Config */ -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/theme.less: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Import Directives 3 | *******************************/ 4 | 5 | @theme : @@element; 6 | 7 | /*------------------ 8 | Default Theme 9 | -------------------*/ 10 | 11 | @import "@{themesFolder}/default/globals/site.variables"; 12 | @import "@{themesFolder}/default/@{type}s/@{element}.variables"; 13 | 14 | /*------------------ 15 | Packaged Theme 16 | -------------------*/ 17 | 18 | @import "@{themesFolder}/@{site}/globals/site.variables"; 19 | @import "@{themesFolder}/@{theme}/@{type}s/@{element}.variables"; 20 | 21 | /*------------------ 22 | Site Theme 23 | -------------------*/ 24 | 25 | @import "@{siteFolder}/globals/site.variables"; 26 | @import "@{siteFolder}/@{type}s/@{element}.variables"; 27 | 28 | 29 | /******************************* 30 | Import Mix-ins 31 | *******************************/ 32 | 33 | /*------------------ 34 | Fonts 35 | -------------------*/ 36 | 37 | .loadFonts() when (@importGoogleFonts) { 38 | @import (css) '@{googleProtocol}fonts.googleapis.com/css?family=@{googleFontRequest}'; 39 | } 40 | 41 | /*------------------ 42 | Overrides 43 | -------------------*/ 44 | 45 | .loadUIOverrides() { 46 | @import "@{themesFolder}/@{theme}/@{type}s/@{element}.overrides"; 47 | @import "@{siteFolder}/@{type}s/@{element}.overrides"; 48 | } 49 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/assets/fonts/icons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sabre-io/katana/6a17acb16ddeeb621d8f52a0437ff6423484ded2/resource/view/semantic-ui/src/themes/default/assets/fonts/icons.eot -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/assets/fonts/icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sabre-io/katana/6a17acb16ddeeb621d8f52a0437ff6423484ded2/resource/view/semantic-ui/src/themes/default/assets/fonts/icons.ttf -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/assets/fonts/icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sabre-io/katana/6a17acb16ddeeb621d8f52a0437ff6423484ded2/resource/view/semantic-ui/src/themes/default/assets/fonts/icons.woff -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/assets/fonts/icons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sabre-io/katana/6a17acb16ddeeb621d8f52a0437ff6423484ded2/resource/view/semantic-ui/src/themes/default/assets/fonts/icons.woff2 -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/assets/images/flags.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sabre-io/katana/6a17acb16ddeeb621d8f52a0437ff6423484ded2/resource/view/semantic-ui/src/themes/default/assets/images/flags.png -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/collections/breadcrumb.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/collections/breadcrumb.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Breadcrumb 3 | *******************************/ 4 | 5 | /*------------------- 6 | Breadcrumb 7 | --------------------*/ 8 | 9 | @verticalMargin: 1em; 10 | @display: inline-block; 11 | @verticalAlign: middle; 12 | 13 | @dividerSpacing: 0.2rem; 14 | @dividerOpacity: 0.5; 15 | @dividerColor: @lightTextColor; 16 | 17 | @dividerSize: 0.9em; 18 | @dividerVerticalAlign: baseline; 19 | 20 | @iconDividerSize: @relativeTiny; 21 | @iconDividerVerticalAlign: baseline; 22 | 23 | @sectionMargin: 0em; 24 | @sectionPadding: 0em; 25 | 26 | /* Coupling */ 27 | @segmentPadding: 0.5em 1em; 28 | 29 | /*------------------- 30 | States 31 | --------------------*/ 32 | 33 | @activeFontWeight: bold; 34 | 35 | /* Sizes */ 36 | @mini: 0.65em; 37 | @tiny: 0.7em; 38 | @small: 0.75em; 39 | @medium: 1em; 40 | @big: 1.05em; 41 | @large: 1.1em; 42 | @huge: 1.3em; 43 | @massive: 1.5em; -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/collections/form.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/collections/grid.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | 5 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/collections/grid.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Grid 3 | *******************************/ 4 | 5 | /* Inherited From Site */ 6 | 7 | // @mobileBreakpoint 8 | // @tabletBreakpoint 9 | // @computerBreakpoint 10 | // @largeMonitorBreakpoint 11 | // @widescreenMonitorBreakpoint 12 | 13 | /******************************* 14 | Grid 15 | *******************************/ 16 | 17 | @minWidth: 320px; 18 | 19 | @gutterWidth: 2rem; 20 | @rowSpacing: 2rem; 21 | 22 | @tableWidth: ~"calc(100% + "@gutterWidth~")"; 23 | @columnMaxImageWidth: 100%; 24 | 25 | /******************************* 26 | Variations 27 | *******************************/ 28 | 29 | /*-------------- 30 | Page 31 | ---------------*/ 32 | 33 | /* Column Gutters */ 34 | @mobileWidth: auto; 35 | @mobileMargin: 0em; 36 | @mobileGutter: 0em; 37 | 38 | @tabletWidth: auto; 39 | @tabletMargin: 0em; 40 | @tabletGutter: 4em; 41 | 42 | @computerWidth: auto; 43 | @computerMargin: 0em; 44 | @computerGutter: 8%; 45 | 46 | @largeMonitorWidth: auto; 47 | @largeMonitorMargin: 0em; 48 | @largeMonitorGutter: 15%; 49 | 50 | @widescreenMonitorWidth: auto; 51 | @widescreenMargin: 0em; 52 | @widescreenMonitorGutter: 23%; 53 | 54 | 55 | /*-------------- 56 | Relaxed 57 | ---------------*/ 58 | 59 | @relaxedGutterWidth: 3rem; 60 | @veryRelaxedGutterWidth: 5rem; 61 | 62 | /*-------------- 63 | Divided 64 | ---------------*/ 65 | 66 | @dividedBorder: -1px 0px 0px 0px @borderColor; 67 | @verticallyDividedBorder: 0px -1px 0px 0px @borderColor; 68 | 69 | @dividedInvertedBorder: -1px 0px 0px 0px @whiteBorderColor; 70 | @verticallyDividedInvertedBorder: 0px -1px 0px 0px @whiteBorderColor; 71 | 72 | /*-------------- 73 | Celled 74 | ---------------*/ 75 | 76 | @celledMargin: 1em 0em; 77 | @celledWidth: 1px; 78 | @celledBorderColor: @solidBorderColor; 79 | 80 | @celledPadding: 0.75em; 81 | @celledRelaxedPadding: 1em; 82 | @celledVeryRelaxedPadding: 2em; 83 | 84 | /*-------------- 85 | Stackable 86 | ---------------*/ 87 | 88 | @stackableRowSpacing: @rowSpacing; 89 | @stackableGutter: @gutterWidth; 90 | @stackableMobileBorder: 1px solid @borderColor; 91 | @stackableInvertedMobileBorder: 1px solid @whiteBorderColor; 92 | 93 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/collections/menu.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/collections/message.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/collections/message.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Message 3 | *******************************/ 4 | 5 | // @textColor 6 | 7 | /*------------------- 8 | Elements 9 | --------------------*/ 10 | 11 | @verticalMargin: 1em; 12 | 13 | @verticalPadding: 1em; 14 | @horizontalPadding: 1.5em; 15 | 16 | @background: #EFEFEF; 17 | @lineHeight: 1.3; 18 | @lineHeightOffset: ((@lineHeight - 1em) / 2); 19 | 20 | @borderRadius: @defaultBorderRadius; 21 | @borderWidth: 1px; 22 | @borderShadow: 0px 0px 0px @borderWidth @borderColor inset; 23 | @shadowShadow: 0px 0px 0px 0px transparent; 24 | @boxShadow: 25 | @borderShadow, 26 | @shadowShadow 27 | ; 28 | 29 | @transition: 30 | opacity 0.2s ease, 31 | color 0.2s ease, 32 | background 0.2s ease, 33 | box-shadow 0.2s ease 34 | ; 35 | 36 | /* Header */ 37 | @headerFontSize: 1.1em; 38 | @headerFontWeight: bold; 39 | @headerDisplay: block; 40 | @headerDistance: 0.5rem; 41 | @headerParagraphDistance: 0.25em; 42 | 43 | /* Paragraph */ 44 | @messageTextOpacity: 0.85; 45 | @messageParagraphMargin: 0.75em; 46 | 47 | /* List */ 48 | @listOpacity: 0.85; 49 | @listStylePosition: inside; 50 | @listMargin: 0.5em; 51 | @listItemIndent: 1em; 52 | @listItemMargin: 0.3em; 53 | 54 | /* Icon */ 55 | @iconDistance: 0.6em; 56 | 57 | /* Close Icon */ 58 | @closeTopDistance: (1em + @lineHeightOffset); 59 | @closeRightDistance: 0.5em; 60 | @closeOpacity: 0.7; 61 | 62 | 63 | /*------------------- 64 | Types 65 | --------------------*/ 66 | 67 | /* Icon Message */ 68 | @iconSize: 3em; 69 | @iconOpacity: 0.8; 70 | @iconContentDistance: 1.5rem; 71 | @iconVerticalAlign: middle; 72 | @circularIconContentDistance: 2em; 73 | 74 | /* Attached */ 75 | @attachedXOffset: -1px; 76 | @attachedYOffset: -1px; 77 | @attachedBoxShadow: 0em 0em 0em @borderWidth rgba(0, 0, 0, 0.1) inset; 78 | @attachedBottomBoxShadow: 79 | @attachedBoxShadow, 80 | @subtleShadow 81 | ; 82 | 83 | /* Floating */ 84 | @floatingShadow: 0 1px 4px 0 rgba(0, 0, 0, 0.15); 85 | @floatingBoxShadow: 86 | @floatingShadow, 87 | @borderShadow 88 | ; 89 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/collections/table.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/elements/button.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/elements/divider.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/elements/divider.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Divider 3 | *******************************/ 4 | 5 | /*------------------- 6 | Element 7 | --------------------*/ 8 | 9 | @margin: 1rem 0rem; 10 | 11 | @highlightWidth: 1px; 12 | @highlightColor: rgba(255, 255, 255, 0.2); 13 | 14 | @shadowWidth: 1px; 15 | @shadowColor: rgba(0, 0, 0, 0.1); 16 | 17 | /* Text */ 18 | @letterSpacing: 0.05em; 19 | @fontWeight: bold; 20 | @color: @darkTextColor; 21 | @textTransform: uppercase; 22 | 23 | /*------------------- 24 | Coupling 25 | --------------------*/ 26 | 27 | /* Icon */ 28 | @dividerIconSize: 1rem; 29 | @dividerIconMargin: 0rem; 30 | 31 | 32 | /******************************* 33 | Variations 34 | *******************************/ 35 | 36 | /* Horizontal / Vertical */ 37 | @horizontalMargin: ''; 38 | @horizontalDividerMargin: 1em; 39 | @horizontalRulerOffset: ~"calc(-50% - "(@horizontalDividerMargin)~")"; 40 | 41 | @verticalDividerMargin: 1rem; 42 | @verticalDividerHeight: ~"calc(100% - "(@verticalDividerMargin)~")"; 43 | 44 | /* Inverted */ 45 | @invertedTextColor: @white; 46 | @invertedHighlightColor: rgba(255, 255, 255, 0.15); 47 | @invertedShadowColor: rgba(0, 0, 0, 0.15); 48 | 49 | /* Section */ 50 | @sectionMargin: 2rem; 51 | 52 | 53 | /* Sizes */ 54 | @medium: 1rem; -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/elements/flag.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Flag 3 | *******************************/ 4 | 5 | /*------------------- 6 | Element 7 | --------------------*/ 8 | 9 | @spritePath: "@{imagePath}/flags.png"; 10 | @width: 16px; 11 | @height: 11px; 12 | @verticalAlign: baseline; 13 | @margin: 0.5em; -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/elements/header.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | 5 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/elements/icon.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Icon 3 | *******************************/ 4 | 5 | /*------------------- 6 | Icon Variables 7 | --------------------*/ 8 | 9 | @fontName: 'icons'; 10 | 11 | @opacity: 1; 12 | @width: 1.23em; 13 | @height: 0.9em; 14 | @distanceFromText: 0.25rem; 15 | 16 | @linkOpacity: 0.8; 17 | @linkDuration: 0.3s; 18 | @loadingDuration: 2s; 19 | 20 | @circularSize: 2em; 21 | @circularPadding: 0.5em 0.5em; 22 | @circularShadow: 0em 0em 0em 0.1em rgba(0, 0, 0, 0.1) inset; 23 | 24 | @borderedSize: 2em; 25 | @borderedVerticalPadding: ((@borderedSize - @height) / 2); 26 | @borderedHorizontalPadding: ((@borderedSize - @width) / 2); 27 | @borderedShadow: 0em 0em 0em 0.1em rgba(0, 0, 0, 0.1) inset; 28 | 29 | @small: 0.875em; 30 | @medium: 1em; 31 | @large: 1.5em; 32 | @big: 2em; 33 | @huge: 4em; 34 | @massive: 8em; 35 | 36 | @fallbackSRC: url("@{fontPath}/@{fontName}.eot"); 37 | @src: 38 | url("@{fontPath}/@{fontName}.eot?#iefix") format('embedded-opentype'), 39 | url("@{fontPath}/@{fontName}.woff2") format('woff'), 40 | url("@{fontPath}/@{fontName}.woff") format('woff'), 41 | url("@{fontPath}/@{fontName}.ttf") format('truetype'), 42 | url("@{fontPath}/@{fontName}.svg#icons") format('svg') 43 | ; -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/elements/image.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/elements/image.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Image 3 | *******************************/ 4 | 5 | /*------------------- 6 | Element 7 | --------------------*/ 8 | 9 | @placeholderColor: transparent; 10 | @roundedBorderRadius: 0.3125em; 11 | 12 | @imageHorizontalMargin: 0.25rem; 13 | @imageVerticalMargin: 0.5rem; 14 | @imageBorder: 1px solid rgba(0, 0, 0, 0.1); 15 | 16 | /*------------------- 17 | Types 18 | --------------------*/ 19 | 20 | 21 | /* Avatar */ 22 | @avatarSize: 2.5em; 23 | @avatarMargin: 0.25em; 24 | 25 | 26 | /*------------------- 27 | Variations 28 | --------------------*/ 29 | 30 | /* Floated */ 31 | @floatedHorizontalMargin: 1em; 32 | @floatedVerticalMargin: 1em; 33 | 34 | /* Size */ 35 | @miniWidth: 20px; 36 | @tinyWidth: 80px; 37 | @smallWidth: 150px; 38 | @mediumWidth: 300px; 39 | @largeWidth: 450px; 40 | @bigWidth: 600px; 41 | @hugeWidth: 800px; 42 | @massiveWidth: 960px; 43 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/elements/input.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/elements/label.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/elements/list.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/elements/loader.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/elements/loader.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Loader 3 | *******************************/ 4 | 5 | /* Some global loader styles defined in site.variables */ 6 | // @loaderSpeed 7 | // @loaderLineWidth 8 | // @loaderFillColor 9 | // @loaderLineColor 10 | // @invertedLoaderFillColor 11 | // @invertedLoaderLineColor 12 | 13 | /*------------------- 14 | Standard 15 | --------------------*/ 16 | 17 | @loaderTopOffset: 50%; 18 | @loaderLeftOffset: 50%; 19 | 20 | @shapeBorderColor: @loaderLineColor transparent transparent; 21 | @invertedShapeBorderColor: @invertedLoaderLineColor transparent transparent; 22 | 23 | /*------------------- 24 | Types 25 | --------------------*/ 26 | 27 | /* Text */ 28 | @textDistance: 0.7em; 29 | @loaderTextColor: @textColor; 30 | @invertedLoaderTextColor: @invertedTextColor; 31 | 32 | /*------------------- 33 | States 34 | --------------------*/ 35 | 36 | @indeterminateDirection: reverse; 37 | @indeterminateSpeed: (2 * @loaderSpeed); 38 | 39 | /*------------------- 40 | Variations 41 | --------------------*/ 42 | 43 | @inlineVerticalAlign: middle; 44 | @inlineMargin: 0em; 45 | 46 | /* Exact Sizes (Avoids Rounding Errors) */ 47 | @mini: 1.2857em; 48 | @small: 1.7142em; 49 | @medium: 2.2585em; 50 | @large: 4.5714em; 51 | 52 | @miniOffset: 0em 0em 0em -(@mini / 2); 53 | @smallOffset: 0em 0em 0em -(@small / 2); 54 | @mediumOffset: 0em 0em 0em -(@medium / 2); 55 | @largeOffset: 0em 0em 0em -(@large / 2); 56 | 57 | 58 | @miniFontSize: 0.7857em; 59 | @smallFontSize: 0.9285em; 60 | @mediumFontSize: 1em; 61 | @largeFontSize: 1.1428em; -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/elements/rail.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/elements/rail.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Rail 3 | *******************************/ 4 | 5 | /*------------------- 6 | Element 7 | --------------------*/ 8 | 9 | @contentSizing: content-box; 10 | @width: 300px; 11 | @height: 100%; 12 | @distance: 4rem; 13 | 14 | /*------------------- 15 | Variations 16 | --------------------*/ 17 | 18 | /* Close */ 19 | @closeDistance: 2em; 20 | @veryCloseDistance: 1em; 21 | 22 | /* Divided */ 23 | @dividedBorder: 1px solid @borderColor; 24 | @dividedDistance: 5rem; 25 | 26 | @medium: 1em; -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/elements/reveal.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/elements/reveal.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Reveal 3 | *******************************/ 4 | 5 | @transitionDelay: 0.15s; 6 | @transitionDuration: 0.8s; 7 | @transitionEasing: cubic-bezier(0.175, 0.885, 0.320, 1); 8 | @transition: all @transitionDuration @transitionEasing @transitionDelay; 9 | 10 | @bottomZIndex: 2; 11 | @topZIndex: 3; 12 | @activeZIndex: 4; 13 | 14 | @rotateDegrees: 110deg; 15 | 16 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/elements/segment.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/elements/segment.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Segment 3 | *******************************/ 4 | 5 | /*------------------- 6 | Element 7 | --------------------*/ 8 | 9 | @background: @white; 10 | @borderWidth: 1px; 11 | @border: none; 12 | 13 | @borderShadow: 0px 0px 0px @borderWidth @borderColor; 14 | @boxShadow: 15 | @borderShadow, 16 | @subtleShadow 17 | ; 18 | @verticalPadding: 1em; 19 | @horizontalPadding: 1em; 20 | 21 | @margin: 1rem; 22 | @borderRadius: @defaultBorderRadius; 23 | 24 | /*------------------- 25 | Coupling 26 | --------------------*/ 27 | 28 | /* Page Grid Segment */ 29 | @pageGridMargin: (2 * @verticalPadding); 30 | 31 | 32 | /******************************* 33 | States 34 | *******************************/ 35 | 36 | /* Loading Dimmer */ 37 | @loaderDimmerColor: rgba(255, 255, 255, 0.8); 38 | @loaderDimmerZIndex: 100; 39 | 40 | /* Loading Spinner */ 41 | @loaderSize: 3em; 42 | @loaderOffset: -(@loaderSize / 2); 43 | @loaderMargin: @loaderOffset 0em 0em @loaderOffset; 44 | @loaderLineZIndex: 101; 45 | 46 | 47 | /******************************* 48 | Variations 49 | *******************************/ 50 | 51 | /* Piled */ 52 | @piledZIndex: auto; 53 | @piledMargin: 3em; 54 | @piledBoxShadow: 0px 0px 1px 1px @borderColor; 55 | @piledDegrees: 1.2deg; 56 | 57 | /* Circular */ 58 | @circularPadding: 2em; 59 | 60 | /* Stacked */ 61 | @stackedHeight: 6px; 62 | @stackedPageBackground: @subtleTransparentBlack; 63 | @stackedPadding: @verticalPadding + (0.4em); 64 | @tallStackedPadding: @verticalPadding + (0.8em); 65 | 66 | /* Raised */ 67 | @raisedShadow: 0px 1px 4px 0px rgba(0, 0, 0, 0.15); 68 | @raisedBoxShadow: 69 | @borderShadow, 70 | @raisedShadow 71 | ; 72 | 73 | /* Attached */ 74 | @attachedTopOffset: 0px; 75 | @attachedBottomOffset: 0px; 76 | @attachedHorizontalOffset: -1px; 77 | @attachedWidth: ~"calc(100% + "-@attachedHorizontalOffset * 2~")"; 78 | @attachedBoxShadow: none; 79 | @attachedBorder: 1px solid @solidBorderColor; 80 | @attachedBottomBoxShadow: 81 | @attachedBoxShadow, 82 | @subtleShadow 83 | ; 84 | 85 | /* Colors */ 86 | @coloredBorderSize: 2px; 87 | @coloredBorderRadius: @borderRadius; 88 | 89 | /* Ordinality */ 90 | @secondaryBackground: #FAF9FA; 91 | @secondaryColor: @textColor; 92 | 93 | @tertiaryBackground: #EBEBEB; 94 | @tertiaryColor: @lightTextColor; 95 | 96 | @secondaryInvertedBackground: linear-gradient(rgba(255, 255, 255, 0.3) 0%, rgba(255, 255, 255, 0.3) 100%); 97 | @secondaryInvertedColor: @offWhite; 98 | 99 | @tertiaryInvertedBackground: linear-gradient(rgba(255, 255, 255, 0.5) 0%, rgba(255, 255, 255, 0.5) 100%); 100 | @tertiaryInvertedColor: @darkWhite; 101 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/elements/step.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Step 3 | *******************************/ 4 | 5 | /*------------------- 6 | Element 7 | --------------------*/ 8 | 9 | @verticalMargin: 0em; 10 | @horizontalMargin: 0em; 11 | 12 | @arrowSize: 1.5em; 13 | @verticalPadding: 0.9285em; 14 | @horizontalPadding: 1.5em; 15 | @leftPadding: @horizontalPadding + (@arrowSize / 2); 16 | 17 | @transition: 18 | background-color @transitionDuration @transitionEasing, 19 | opacity @transitionDuration @transitionEasing, 20 | color @transitionDuration @transitionEasing, 21 | box-shadow @transitionDuration @transitionEasing 22 | ; 23 | @borderRadius: @defaultBorderRadius; 24 | @lineHeight: 1.142rem; 25 | 26 | @backgroundColor: #FFFFFF; 27 | @background: @backgroundColor; 28 | @borderRadius: 0em; 29 | @boxShadow: 0px 0px 0px 1px @solidBorderColor; 30 | 31 | /* Icon */ 32 | @iconDistance: 0.6em; 33 | @iconSize: 2em; 34 | @iconVerticalAlign: middle; 35 | 36 | /* Title */ 37 | @titleFontFamily: @headerFont; 38 | @titleFontWeight: bold; 39 | @titleFontSize: 1.0714em; 40 | @titleColor: @darkTextColor; 41 | 42 | /* Description */ 43 | @descriptionDistance: 0.1em; 44 | @descriptionFontSize: 0.9285em; 45 | @descriptionFontWeight: normal; 46 | @descriptionColor: @textColor; 47 | 48 | 49 | /* Arrow */ 50 | @arrowBackgroundColor: @backgroundColor; 51 | @arrowTopOffset: 50%; 52 | @arrowRightOffset: 0em; 53 | @arrowBorderColor: @borderColor; 54 | 55 | 56 | /*------------------- 57 | Group 58 | --------------------*/ 59 | 60 | @stepsBorderRadius: @defaultBorderRadius; 61 | @stepsBackground: ''; 62 | @stepsBoxShadow: ''; 63 | 64 | /*------------------- 65 | Variations 66 | --------------------*/ 67 | 68 | @attachedTopMargin: 0em; 69 | @attachedBottomMargin: -1px 0em 0em; 70 | 71 | /*------------------- 72 | States 73 | --------------------*/ 74 | 75 | /* Completed */ 76 | @completedColor: @positiveColor; 77 | 78 | /* Hover */ 79 | @hoverBackground: #FAFAFA; 80 | @hoverColor: @hoveredTextColor; 81 | 82 | /* Down */ 83 | @downBackground: #F0F0F0; 84 | @downColor: @pressedTextColor; 85 | 86 | /* Active */ 87 | @activeBackground: #F0F0F0; 88 | @activeColor: @linkColor; 89 | @activeIconColor: @darkTextColor; 90 | 91 | /* Active + Hover */ 92 | @activeHoverBackground: #ECECEC; 93 | @activeHoverColor: @textColor; 94 | 95 | 96 | /* Disabled */ 97 | @disabledBackground: @white; 98 | @disabledColor: @disabledTextColor; 99 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/globals/reset.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Reset 3 | *******************************/ -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/globals/site.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Global Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/modules/accordion.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Accordion 3 | *******************************/ 4 | 5 | @fontSize: 1em; 6 | @boxShadow: none; 7 | 8 | /* Title */ 9 | @titleFont: @headerFont; 10 | @titlePadding: 0.5em 0em; 11 | @titleFontSize: 1em; 12 | @titleColor: @textColor; 13 | 14 | /* Icon */ 15 | @iconOpacity: 1; 16 | @iconFontSize: 1em; 17 | @iconFloat: none; 18 | @iconWidth: 1.25em; 19 | @iconHeight: 1em; 20 | @iconDisplay: inline-block; 21 | @iconMargin: 0em 0.25rem 0em 0rem; 22 | @iconPadding: 0em; 23 | @iconTransition: 24 | transform @transitionDuration @transitionEasing, 25 | opacity @transitionDuration @transitionEasing 26 | ; 27 | @iconVerticalAlign: baseline; 28 | @iconTransform: none; 29 | 30 | /* Child Accordion */ 31 | @childAccordionMargin: 1em 0em 0em; 32 | @childAccordionPadding: 0em; 33 | 34 | /* Content */ 35 | @contentMargin: 0em; 36 | @contentPadding: 0.5em 0em 1em; 37 | 38 | /*------------------- 39 | Coupling 40 | --------------------*/ 41 | 42 | @menuTitlePadding: 0em; 43 | @menuIconFloat: right; 44 | @menuIconMargin: @lineHeightOffset 0em 0em 1em; 45 | @menuIconTransform: rotate(180deg); 46 | 47 | 48 | /*------------------- 49 | States 50 | --------------------*/ 51 | 52 | @activeIconTransform: rotate(90deg); 53 | 54 | /*------------------- 55 | Variations 56 | --------------------*/ 57 | 58 | /* Styled */ 59 | @styledWidth: 600px; 60 | @styledBackground: @white; 61 | @styledBorderRadius: @defaultBorderRadius; 62 | @styledBoxShadow: 63 | @subtleShadow, 64 | 0px 0px 0px 1px @borderColor 65 | ; 66 | 67 | /* Content */ 68 | @styledContentMargin: 0em; 69 | @styledContentPadding: 0.5em 1em 1.5em; 70 | 71 | /* Child Content */ 72 | @styledChildContentMargin: 0em; 73 | @styledChildContentPadding: @styledContentPadding; 74 | 75 | /* Styled Title */ 76 | @styledTitleMargin: 0em; 77 | @styledTitlePadding: 0.75em 1em; 78 | @styledTitleFontWeight: bold; 79 | @styledTitleColor: @unselectedTextColor; 80 | @styledTitleTransition: background-color @transitionDuration @transitionEasing; 81 | @styledTitleBorder: 1px solid @borderColor; 82 | @styledTitleTransition: 83 | background @transitionDuration @transitionEasing, 84 | color @transitionDuration @transitionEasing 85 | ; 86 | 87 | /* Styled Title States */ 88 | @styledTitleHoverBackground: transparent; 89 | @styledTitleHoverColor: @textColor; 90 | @styledActiveTitleBackground: transparent; 91 | @styledActiveTitleColor: @selectedTextColor; 92 | 93 | /* Styled Child Title States */ 94 | @styledHoverChildTitleBackground: @styledTitleHoverBackground; 95 | @styledHoverChildTitleColor: @styledTitleHoverColor; 96 | @styledActiveChildTitleBackground: @styledActiveTitleBackground; 97 | @styledActiveChildTitleColor: @styledActiveTitleColor; 98 | 99 | /* Inverted */ 100 | @invertedTitleColor: @invertedTextColor; 101 | 102 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/modules/chatroom.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/modules/chatroom.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Chatroom 3 | *******************************/ -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/modules/dimmer.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/modules/dimmer.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Dimmer 3 | *******************************/ 4 | 5 | @dimmablePosition: relative; 6 | @dimmerPosition: absolute; 7 | 8 | @background: rgba(0, 0, 0 , 0.85); 9 | @lineHeight: 1; 10 | @perspective: 2000px; 11 | 12 | @duration: 0.5s; 13 | @transition: 14 | background-color @duration linear 15 | ; 16 | @zIndex: 1000; 17 | @textAlign: center; 18 | @verticalAlign: middle; 19 | @textColor: @white; 20 | @overflow: hidden; 21 | 22 | @elementStartFilter: ~"blur(0px) grayscale(0)"; 23 | @elementEndFilter: ~"blur(15px) grayscale(0.7)"; 24 | @elementTransition: 1.5s all ease; 25 | 26 | /* Hidden (Default) */ 27 | @hiddenOpacity: 0; 28 | 29 | /* Content */ 30 | @contentDisplay: table; 31 | @contentChildDisplay: table-cell; 32 | 33 | /* Visible */ 34 | @visibleOpacity: 1; 35 | 36 | /*------------------- 37 | Types 38 | --------------------*/ 39 | 40 | /* Page Dimmer*/ 41 | @transformStyle: ''; 42 | @pageDimmerPosition: fixed; 43 | 44 | 45 | /*------------------- 46 | Variations 47 | --------------------*/ 48 | 49 | /* Inverted */ 50 | @invertedBackground: rgba(255, 255, 255, 0.85); 51 | @invertedTextColor: @textColor; 52 | 53 | /* Simple */ 54 | @simpleZIndex: 1; 55 | @simpleStartBackground: rgba(0, 0, 0, 0); 56 | @simpleEndBackground: @background; 57 | @simpleInvertedStartBackground: rgba(255, 255, 255, 0); 58 | @simpleInvertedEndBackground: @invertedBackground; -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/modules/modal.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/modules/nag.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/modules/nag.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Nag 3 | *******************************/ 4 | 5 | /*-------------- 6 | Collection 7 | ---------------*/ 8 | 9 | @position: relative; 10 | @width: 100%; 11 | @zIndex: 999; 12 | @margin: 0em; 13 | 14 | @background: #555555; 15 | @opacity: 0.95; 16 | @minHeight: 0em; 17 | @padding: 0.75em 1em; 18 | @lineHeight: 1em; 19 | @boxShadow: 0px 1px 2px 0px rgba(0, 0, 0, 0.2); 20 | 21 | @fontSize: 1rem; 22 | @textAlign: center; 23 | @color: @textColor; 24 | 25 | @transition: 0.2s background ease; 26 | 27 | 28 | /*-------------- 29 | Elements 30 | ---------------*/ 31 | 32 | /* Title */ 33 | @titleColor: @white; 34 | @titleMargin: 0em 0.5em; 35 | 36 | @closeSize: 1em; 37 | @closeMargin: (-@closeSize / 2) 0em 0em; 38 | @closeTop: 50%; 39 | @closeRight: 1em; 40 | @closeColor: @white; 41 | @closeTransition: opacity 0.2s ease; 42 | @closeOpacity: 0.4; 43 | 44 | 45 | /*-------------- 46 | States 47 | ---------------*/ 48 | 49 | /* Hover */ 50 | @nagHoverBackground: @background; 51 | @nagHoverOpacity: 1; 52 | 53 | @closeHoverOpacity: 1; 54 | 55 | /*-------------- 56 | Variations 57 | ---------------*/ 58 | 59 | /* Top / Bottom */ 60 | @top: 0em; 61 | @bottom: 0em; 62 | @borderRadius: @defaultBorderRadius; 63 | @topBorderRadius: 0em 0em @borderRadius @borderRadius; 64 | @bottomBorderRadius: @borderRadius @borderRadius 0em 0em; 65 | 66 | /* Inverted */ 67 | @invertedBackground: @darkWhite; 68 | 69 | /*-------------- 70 | Plural 71 | ---------------*/ 72 | 73 | @groupedBorderRadius: 0em; 74 | 75 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/modules/popup.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/modules/popup.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Popup 3 | *******************************/ 4 | 5 | /*------------------- 6 | Element 7 | --------------------*/ 8 | 9 | @zIndex: 1900; 10 | @background: @white; 11 | 12 | @maxWidth: 250px; 13 | @borderColor: #CCCCCC; 14 | @borderWidth: 1px; 15 | @boxShadow: 0px 2px 4px rgba(0, 0, 0, 0.1); 16 | @color: @textColor; 17 | 18 | @verticalPadding: 0.833em; 19 | @horizontalPadding: 1em; 20 | @fontWeight: normal; 21 | @fontStyle: normal; 22 | @borderRadius: @defaultBorderRadius; 23 | 24 | /*------------------- 25 | Parts 26 | --------------------*/ 27 | 28 | /* Placement */ 29 | @arrowSize: 0.75em; 30 | @arrowWidth: 1em; 31 | @arrowDistanceFromEdge: 1em; 32 | @boxArrowOffset: 0em; 33 | @popupDistanceAway: @arrowSize; 34 | 35 | 36 | /* Header */ 37 | @headerFontFamily: @headerFont; 38 | @headerFontSize: 1.125em; 39 | @headerDistance: 0.5em; 40 | @headerLineHeight: 1.2; 41 | 42 | /* Content Border */ 43 | @border: @borderWidth solid @borderColor; 44 | 45 | /* Arrow */ 46 | @arrowBackground: @white; 47 | @arrowZIndex: 2; 48 | @arrowJitter: 0.05em; 49 | @arrowOffset: -(@arrowSize / 2) + @arrowJitter; 50 | 51 | @arrowStroke: @borderWidth; 52 | @arrowColor: darken(@borderColor, 10); 53 | 54 | @arrowBoxShadow: @arrowStroke @arrowStroke 0px 0px @arrowColor; 55 | @leftArrowBoxShadow: @arrowStroke -@arrowStroke 0px 0px @arrowColor; 56 | @rightArrowBoxShadow: -@arrowStroke @arrowStroke 0px 0px @arrowColor; 57 | @bottomArrowBoxShadow: -@arrowStroke -@arrowStroke 0px 0px @arrowColor; 58 | 59 | /*------------------- 60 | Coupling 61 | --------------------*/ 62 | 63 | /* Grid Inside Popup */ 64 | @nestedGridMargin: -0.7rem -0.875rem; /* (padding * @medium) */ 65 | @nestedGridWidth: ~"calc(100% + 1.75rem)"; 66 | 67 | /*------------------- 68 | States 69 | --------------------*/ 70 | 71 | @loadingZIndex: -1; 72 | 73 | /*------------------- 74 | Variations 75 | --------------------*/ 76 | 77 | /* Wide */ 78 | @wideWidth: 350px; 79 | @veryWideWidth: 550px; 80 | 81 | /* Inverted */ 82 | @invertedBackground: @black; 83 | @invertedColor: @white; 84 | @invertedBorder: none; 85 | @invertedBoxShadow: none; 86 | 87 | @invertedHeaderBackground: none; 88 | @invertedHeaderColor: @white; 89 | @invertedArrowColor: @black; 90 | 91 | /* Sizes */ 92 | @small: 0.785714rem; 93 | @medium: 0.85714rem; 94 | @large: 1rem; 95 | @huge: 1.14285rem; -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/modules/progress.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Progress 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/modules/progress.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Progress 3 | *******************************/ 4 | 5 | /*------------------- 6 | Element 7 | --------------------*/ 8 | 9 | @verticalSpacing: 1em; 10 | @margin: @verticalSpacing 0em (@labelHeight + @verticalSpacing); 11 | @firstMargin: 0em 0em (@labelHeight + @verticalSpacing); 12 | @lastMargin: 0em 0em (@labelHeight); 13 | 14 | @background: @subtleTransparentBlack; 15 | @border: 1px solid @borderColor; 16 | @boxShadow: none; 17 | @padding: 0.2857em; 18 | @borderRadius: @defaultBorderRadius; 19 | 20 | /* Bar */ 21 | @barPosition: relative; 22 | @barHeight: 1.75em; 23 | @barBackground: #888888; 24 | @barBorderRadius: @borderRadius; 25 | @barTransitionEasing: ease; 26 | @barTransitionDuration: 0.3s; 27 | @barTransition: 28 | width @barTransitionDuration @barTransitionEasing, 29 | background-color @barTransitionDuration @barTransitionEasing 30 | ; 31 | @barInitialWidth: 0%; 32 | @barMinWidth: 2em; 33 | 34 | /* Progress Bar Label */ 35 | @progressWidth: auto; 36 | @progressSize: 0.9em; 37 | @progressPosition: absolute; 38 | @progressTop: 50%; 39 | @progressRight: 0.5em; 40 | @progressLeft: auto; 41 | @progressBottom: auto; 42 | @progressOffset: -0.5em; 43 | @progressColor: @invertedLightTextColor; 44 | @progressTextShadow: none; 45 | @progressFontWeight: bold; 46 | @progressTextAlign: left; 47 | 48 | /* Label */ 49 | @labelWidth: 100%; 50 | @labelHeight: 1.5em; 51 | @labelSize: 1em; 52 | @labelPosition: absolute; 53 | @labelTop: 100%; 54 | @labelLeft: 0%; 55 | @labelRight: auto; 56 | @labelBottom: auto; 57 | @labelOffset: (@labelHeight - 1.3em); 58 | @labelColor: @textColor; 59 | @labelTextShadow: none; 60 | @labelFontWeight: bold; 61 | @labelTextAlign: center; 62 | @labelTransition: color 0.4s @defaultEasing; 63 | 64 | /*------------------- 65 | Types 66 | --------------------*/ 67 | 68 | @indicatingFirstColor: #D95C5C; 69 | @indicatingSecondColor: #D9A65C; 70 | @indicatingThirdColor: #E6BB48; 71 | @indicatingFourthColor: #DDC928; 72 | @indicatingFifthColor: #B4D95C; 73 | @indicatingSixthColor: #66DA81; 74 | 75 | 76 | /*------------------- 77 | States 78 | --------------------*/ 79 | 80 | /* Active */ 81 | @activePulseColor: @white; 82 | @activePulseMaxOpacity: 0.3; 83 | @activePulseDuration: 2s; 84 | @activeMinWidth: @barMinWidth; 85 | 86 | 87 | /*------------------- 88 | Variations 89 | --------------------*/ 90 | 91 | /* Attached */ 92 | @attachedBackground: transparent; 93 | @attachedHeight: 0.2rem; 94 | @attachedBorderRadius: @borderRadius; 95 | 96 | /* Inverted */ 97 | @invertedBackground: @transparentWhite; 98 | @invertedBorder: none; 99 | @invertedBarBackground: @barBackground; 100 | @invertedProgressColor: @offWhite; 101 | @invertedLabelColor: @white; 102 | 103 | /* Sizing */ 104 | @tinyBarHeight: 0.5em; 105 | @smallBarHeight: 1em; 106 | @largeBarHeight: 2.5em; 107 | @bigBarHeight: 3.5em; 108 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/modules/rating.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Rating 3 | *******************************/ 4 | 5 | @display: inline-block; 6 | @margin: 0em 0.75rem; 7 | 8 | @verticalAlign: middle; 9 | 10 | @iconWidth: 1.1em; 11 | 12 | @inactiveColor: rgba(0, 0, 0, 0.15); 13 | 14 | /*------------------- 15 | Types 16 | --------------------*/ 17 | 18 | /* Star */ 19 | @starIconWidth: @iconWidth; 20 | @starInactiveColor: @inactiveColor; 21 | @starSelectedColor: #FFB70A; 22 | @starActiveColor: #FFE623; 23 | @starActiveShadow: 24 | 0px -1px 0px #CFA300, 25 | -1px 0px 0px #CFA300, 26 | 0px 1px 0px #CFA300, 27 | 1px 0px 0px #CFA300 28 | ; 29 | 30 | /* Heart */ 31 | @heartIconWidth: 1.25em; 32 | @heartInactiveColor: @inactiveColor; 33 | @heartSelectedColor: #FF2733; 34 | @heartActiveColor: #FF2733; 35 | @heartActiveShadow: 36 | 0px -1px 0px #9E0000, 37 | -1px 0px 0px #9E0000, 38 | 0px 1px 0px #9E0000, 39 | 1px 0px 0px #9E0000 40 | ; 41 | 42 | 43 | /*------------------- 44 | States 45 | --------------------*/ 46 | 47 | @inactiveColor: rgba(0, 0, 0, 0.15); 48 | @hoverColor: @textColor; 49 | @activeColor: @darkTextColor; 50 | 51 | @interactiveIconOpacity: 0.5; 52 | @interactiveSelectedIconOpacity: 1; 53 | 54 | /*------------------- 55 | Variations 56 | --------------------*/ 57 | 58 | @mini: 0.7rem; 59 | @tiny: 0.8rem; 60 | @small: 0.875rem; 61 | @medium: 1rem; 62 | @large: 1.1rem; 63 | @big: 1.25rem; 64 | @huge: 1.5rem; 65 | @massive: 2rem; 66 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/modules/search.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/modules/shape.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/modules/shape.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Shape 3 | *******************************/ 4 | 5 | @display: inline-block; 6 | 7 | /* Animating */ 8 | @perspective: 2000px; 9 | 10 | @duration: 0.6s; 11 | @easing: ease-in-out; 12 | 13 | @hiddenSideOpacity: 0.4; 14 | @animatingZIndex: 100; 15 | 16 | @transition: all @duration @easing; 17 | @sideTransition: opacity @duration @easing; 18 | @backfaceVisibility: hidden; 19 | 20 | /* Side */ 21 | @sideMargin: 0em; 22 | 23 | /*-------------- 24 | Types 25 | ---------------*/ 26 | 27 | /* Cube */ 28 | @cubeSize: 15em; 29 | @cubeBackground: #E6E6E6; 30 | @cubePadding: 2em; 31 | @cubeTextColor: @textColor; 32 | @cubeBoxShadow: 0px 0px 2px rgba(0, 0, 0, 0.3); 33 | 34 | @cubeTextAlign: center; 35 | @cubeFontSize: 2em; 36 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/modules/sidebar.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/modules/sidebar.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Sidebar 3 | *******************************/ 4 | 5 | /*------------------- 6 | Content 7 | --------------------*/ 8 | 9 | /* Animation */ 10 | @perspective: 1500px; 11 | @duration: 500ms; 12 | @easing: ease; 13 | 14 | /* Dimmer */ 15 | @dimmerColor: rgba(0, 0, 0, 0.4); 16 | @dimmerTransition: 17 | transform @duration, 18 | opacity @duration 19 | ; 20 | 21 | /* Color below page */ 22 | @canvasBackground: @lightBlack; 23 | 24 | /* Shadow */ 25 | @boxShadow: 0px 0px 20px @borderColor; 26 | @horizontalBoxShadow: @boxShadow; 27 | @verticalBoxShadow: @boxShadow; 28 | 29 | /* Layering */ 30 | @bottomLayer: 1; 31 | @middleLayer: 2; 32 | @fixedLayer: 101; 33 | @topLayer: 102; 34 | @dimmerLayer: 1000; 35 | 36 | /*------------------- 37 | Variations 38 | --------------------*/ 39 | 40 | /* Width */ 41 | @veryThinWidth: 60px; 42 | @thinWidth: 150px; 43 | @width: 260px; 44 | @wideWidth: 350px; 45 | @veryWideWidth: 475px; 46 | 47 | /* Height */ 48 | @height: 36px; 49 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/modules/sticky.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/modules/sticky.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Sticky 3 | *******************************/ 4 | 5 | @transitionDuration: 0.2s; 6 | @transition: 7 | width @transitionDuration @defaultEasing, 8 | height @transitionDuration @defaultEasing, 9 | top @transitionDuration @defaultEasing, 10 | bottom @transitionDuration @defaultEasing 11 | ; 12 | @zIndex: 800; -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/modules/tab.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Tab Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/modules/tab.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Tab 3 | *******************************/ 4 | 5 | /* Loading */ 6 | @loadingMinHeight: 250px; 7 | @loadingContentPosition: relative; 8 | @loadingContentOffset: -10000px; 9 | 10 | @loaderDistanceFromTop: 100px; 11 | @loaderSize: 2.5em; 12 | @loaderOffset: -(@loaderSize / 2); 13 | @loaderMargin: @loaderOffset 0em 0em @loaderOffset; -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/modules/transition.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Transition 3 | *******************************/ 4 | 5 | @transitionDefaultEasing: @defaultEasing; 6 | @transitionDefaultFill: both; 7 | @transitionDefaultDuration: 300ms; 8 | 9 | @use3DAcceleration: translateZ(0); 10 | @backfaceVisibility: hidden; -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/modules/video.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Video Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/modules/video.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Video 3 | *******************************/ 4 | 5 | @background: #DDDDDD; 6 | @placeholderBackground: #333333; 7 | 8 | @playSize: 8rem; 9 | @playColor: #FFFFFF; 10 | @playOpacity: 0.8; 11 | @playHoverOpacity: 1; 12 | @playShadow: none; 13 | 14 | @playBorderSize: 0rem; 15 | @playBackground: rgba(0, 0, 0, 0.3); 16 | @playBorderRadius: @circularRadius; -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/views/ad.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/views/ad.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Advertisement 3 | *******************************/ 4 | 5 | @margin: 1em 0em; 6 | @overflow: hidden; 7 | 8 | @testBackground: @lightBlack; 9 | @testColor: @white; 10 | @testFontWeight: bold; 11 | @testText: 'Ad'; 12 | @testFontSize: 1em; 13 | @testMobileFontSize: 0.85714em; -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/views/card.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/views/comment.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/views/comment.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Comments 3 | *******************************/ 4 | 5 | 6 | /*------------------- 7 | View 8 | --------------------*/ 9 | 10 | @maxWidth: 650px; 11 | @margin: 1.5em 0em; 12 | 13 | /*------------------- 14 | Elements 15 | --------------------*/ 16 | 17 | /* Comment */ 18 | @commentBackground: none; 19 | @commentMargin: 0.5em 0em 0em; 20 | @commentPadding: 0.5em 0em 0em; 21 | @commentDivider: none; 22 | @commentBorder: none; 23 | @commentLineHeight: 1.2; 24 | @firstCommentMargin: 0em; 25 | @firstCommentPadding: 0em; 26 | 27 | /* Nested Comment */ 28 | @nestedCommentsMargin: 0em 0em 0.5em 0.5em; 29 | @nestedCommentsPadding: 1em 0em 1em 1em; 30 | 31 | @nestedCommentDivider: none; 32 | @nestedCommentBorder: none; 33 | @nestedCommentBackground: none; 34 | 35 | /* Avatar */ 36 | @avatarDisplay: block; 37 | @avatarFloat: left; 38 | @avatarWidth: 2.5em; 39 | @avatarHeight: auto; 40 | @avatarSpacing: 1em; 41 | @avatarMargin: (@commentLineHeight - 1em) 0em 0em; 42 | @avatarBorderRadius: 0.25rem; 43 | 44 | /* Content */ 45 | @contentMargin: @avatarWidth + @avatarSpacing; 46 | 47 | /* Author */ 48 | @authorFontSize: 1em; 49 | @authorColor: @textColor; 50 | @authorHoverColor: @linkHoverColor; 51 | @authorFontWeight: bold; 52 | 53 | /* Metadata */ 54 | @metadataDisplay: inline-block; 55 | @metadataFontSize: 0.875em; 56 | @metadataSpacing: 0.5em; 57 | @metadataContentSpacing: 0.5em; 58 | @metadataColor: @lightTextColor; 59 | 60 | /* Text */ 61 | @textFontSize: 1em; 62 | @textMargin: 0.25em 0em 0.5em; 63 | @textWordWrap: break-word; 64 | @textLineHeight: 1.3; 65 | 66 | /* Actions */ 67 | @actionFontSize: 0.875em; 68 | @actionContentDistance: 0.75em; 69 | @actionLinkColor: @unselectedTextColor; 70 | @actionLinkHoverColor: @hoveredTextColor; 71 | 72 | /* Reply */ 73 | @replyDistance: 1em; 74 | @replyHeight: 12em; 75 | @replyFontSize: 1em; 76 | 77 | @commentReplyDistance: @replyDistance; 78 | 79 | /*------------------- 80 | Variations 81 | --------------------*/ 82 | 83 | /* Threaded */ 84 | @threadedCommentMargin: -1.5em 0 -1em (@avatarWidth / 2); 85 | @threadedCommentPadding: 3em 0em 2em 2.25em; 86 | @threadedCommentBoxShadow: -1px 0px 0px @borderColor; 87 | 88 | 89 | /* Minimal */ 90 | @minimalActionPosition: absolute; 91 | @minimalActionTop: 0px; 92 | @minimalActionRight: 0px; 93 | @minimalActionLeft: auto; 94 | 95 | @minimalTransitionDelay: 0.1s; 96 | @minimalEasing: @defaultEasing; 97 | @minimalDuration: 0.2s; 98 | @minimalTransition: opacity @minimalDuration @minimalEasing; 99 | 100 | /* Sizes */ 101 | @small: 0.9em; 102 | @medium: 1em; 103 | @large: 1.1em; 104 | @huge: 1.2em; -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/views/feed.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/views/item.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/views/statistic.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Theme Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/default/views/statistic.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Statistic 3 | *******************************/ 4 | 5 | /*------------------- 6 | View 7 | --------------------*/ 8 | 9 | @display: inline-block; 10 | @margin: 1em 0em; 11 | @textAlign: center; 12 | @maxWidth: 175px; 13 | 14 | /* Group */ 15 | @groupDisplay: block; 16 | @groupMargin: 1em -@horizontalSpacing; 17 | @horizontalSpacing: 1em; 18 | @rowSpacing: 2em; 19 | 20 | /* Group Element */ 21 | @elementFloat: left; 22 | @elementDisplay: block; 23 | @elementMargin: 0em @horizontalSpacing @rowSpacing; 24 | @elementMaxWidth: 175px; 25 | 26 | /*------------------- 27 | Content 28 | --------------------*/ 29 | 30 | /* Value */ 31 | @valueFont: @pageFont; 32 | @valueFontWeight: normal; 33 | @valueLineHeight: 1em; 34 | @valueColor: @black; 35 | @valueTextTransform: uppercase; 36 | 37 | /* Label */ 38 | @labelSize: 1rem; 39 | @topLabelDistance: 0rem; 40 | @bottomLabelDistance: 0.25rem; 41 | @labelFont: @headerFont; 42 | @labelFontWeight: normal; 43 | @labelColor: @unselectedTextColor; 44 | @labelLineHeight: 1.33em; 45 | @labelTextTransform: none; 46 | 47 | /* Text */ 48 | @textLabelLineHeight: 1em; 49 | @textLabelMinHeight: 2em; 50 | 51 | /* Label Image */ 52 | @imageHeight: 3rem; 53 | @imageVerticalAlign: baseline; 54 | 55 | /*------------------- 56 | Types 57 | --------------------*/ 58 | 59 | @horizontalGroupElementMargin: 1em 0em; 60 | @horizontalLabelDistance: 0.75em; 61 | 62 | /*------------------- 63 | Variations 64 | --------------------*/ 65 | 66 | /* Floated */ 67 | @leftFloatedMargin: 0em 2em 1em 0em; 68 | @rightFloatedMargin: 0em 0em 1em 2em; 69 | 70 | /* Inverted */ 71 | @invertedValueColor: @invertedTextColor; 72 | @invertedLabelColor: @invertedLightTextColor; 73 | 74 | /* Size */ 75 | @miniValueSize: 1.5rem; 76 | @miniTextLabelSize: 1rem; 77 | @miniHorizontalValueSize: 1.5rem; 78 | 79 | @tinyValueSize: 2rem; 80 | @tinyTextLabelSize: 1rem; 81 | @tinyHorizontalValueSize: 2rem; 82 | 83 | @smallValueSize: 3rem; 84 | @smallTextLabelSize: 1.5rem; 85 | @smallHorizontalValueSize: 2rem; 86 | 87 | @valueSize: 4rem; 88 | @textLabelSize: 2rem; 89 | @horizontalValueSize: 3rem; 90 | 91 | @largeValueSize: 5rem; 92 | @largeTextLabelSize: 2.5rem; 93 | @largeHorizontalValueSize: 4rem; 94 | 95 | @hugeValueSize: 6rem; 96 | @hugeTextLabelSize: 2.5rem; 97 | @hugeHorizontalValueSize: 5rem; -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/resetcss/globals/reset.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Overrides 3 | *******************************/ 4 | 5 | /** 6 | * Eric Meyer's Reset CSS v2.0 (http://meyerweb.com/eric/tools/css/reset/) 7 | * http://cssreset.com 8 | */ 9 | 10 | html, body, div, span, applet, object, iframe, 11 | h1, h2, h3, h4, h5, h6, p, blockquote, pre, 12 | a, abbr, acronym, address, big, cite, code, 13 | del, dfn, em, img, ins, kbd, q, s, samp, 14 | small, strike, strong, sub, sup, tt, var, 15 | b, u, i, center, 16 | dl, dt, dd, ol, ul, li, 17 | fieldset, form, label, legend, 18 | table, caption, tbody, tfoot, thead, tr, th, td, 19 | article, aside, canvas, details, embed, 20 | figure, figcaption, footer, header, hgroup, 21 | menu, nav, output, ruby, section, summary, 22 | time, mark, audio, video { 23 | margin: 0; 24 | padding: 0; 25 | border: 0; 26 | font-size: 100%; 27 | font: inherit; 28 | vertical-align: baseline; 29 | } 30 | /* HTML5 display-role reset for older browsers */ 31 | article, aside, details, figcaption, figure, 32 | footer, header, hgroup, menu, nav, section { 33 | display: block; 34 | } 35 | body { 36 | line-height: 1; 37 | } 38 | ol, ul { 39 | list-style: none; 40 | } 41 | blockquote, q { 42 | quotes: none; 43 | } 44 | blockquote:before, blockquote:after, 45 | q:before, q:after { 46 | content: ''; 47 | content: none; 48 | } 49 | table { 50 | border-collapse: collapse; 51 | border-spacing: 0; 52 | } -------------------------------------------------------------------------------- /resource/view/semantic-ui/src/themes/resetcss/globals/reset.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Reset 3 | *******************************/ -------------------------------------------------------------------------------- /resource/view/semantic-ui/tasks/README.md: -------------------------------------------------------------------------------- 1 | ## Tasks 2 | 3 | * Watch - Compile only changed files from source 4 | * Build - Build all files from source 5 | * Version - Output version number 6 | * Install - Run Installer to Set-up Paths 7 | 8 | ## How to use 9 | 10 | These tasks can be imported into your own gulpfile allowing you to avoid using Semantic's build tools 11 | 12 | ```javascript 13 | var 14 | watch = require('path/to/semantic/tasks/watch') 15 | ; 16 | gulp.task('watch ui', 'Watch Semantic UI', watch)); 17 | ``` -------------------------------------------------------------------------------- /resource/view/semantic-ui/tasks/admin/publish.js: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Release All 3 | *******************************/ 4 | 5 | /* 6 | This task update all SUI individual component repos with new versions of components 7 | 8 | * Commits changes from create components to GitHub and Tags 9 | 10 | */ 11 | 12 | var 13 | runSequence = require('run-sequence') 14 | ; 15 | 16 | /* Release All */ 17 | module.exports = function(callback) { 18 | 19 | runSequence( 20 | 'update distributions', // commit less/css versions to github 21 | 'update components', // commit components to github 22 | callback 23 | ); 24 | 25 | }; -------------------------------------------------------------------------------- /resource/view/semantic-ui/tasks/admin/register.js: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Register PM 3 | *******************************/ 4 | 5 | /* 6 | Task to register component repos with Package Managers 7 | * Registers component with bower 8 | * Registers component with NPM 9 | */ 10 | 11 | var 12 | // node dependencies 13 | process = require('child_process'), 14 | 15 | // config 16 | release = require('../config/admin/release'), 17 | 18 | // register components and distributions 19 | repos = release.distributions.concat(release.components), 20 | total = repos.length, 21 | index = -1, 22 | 23 | stream, 24 | stepRepo 25 | ; 26 | 27 | module.exports = function(callback) { 28 | 29 | console.log('Registering repos with package managers'); 30 | 31 | // Do Git commands synchronously per component, to avoid issues 32 | stepRepo = function() { 33 | index = index + 1; 34 | if(index >= total) { 35 | callback(); 36 | return; 37 | } 38 | var 39 | repo = repos[index].toLowerCase(), 40 | outputDirectory = release.outputRoot + repo + '/', 41 | exec = process.exec, 42 | execSettings = {cwd: outputDirectory}, 43 | updateNPM = 'npm publish' 44 | ; 45 | 46 | /* Register with NPM */ 47 | exec(updateNPM, execSettings, function(err, stdout, stderr) { 48 | console.log(err, stdout, stderr); 49 | stepRepo(); 50 | }); 51 | 52 | }; 53 | stepRepo(); 54 | }; 55 | 56 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/tasks/admin/release.js: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Release 3 | *******************************/ 4 | 5 | /* 6 | This task update all SUI individual component repos with new versions of components 7 | 8 | * Initializes repositories with current versions 9 | * Creates local files at ../distributions/ with each repo for release 10 | 11 | */ 12 | 13 | var 14 | runSequence = require('run-sequence') 15 | ; 16 | 17 | /* Release All */ 18 | module.exports = function(callback) { 19 | 20 | runSequence( 21 | //'build', // build Semantic 22 | 'init distributions', // sync with current github version 23 | 'create distributions', // update each repo with changes from master repo 24 | 'init components', // sync with current github version 25 | 'create components', // update each repo 26 | callback 27 | ); 28 | 29 | }; -------------------------------------------------------------------------------- /resource/view/semantic-ui/tasks/check-install.js: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Check Install 3 | *******************************/ 4 | 5 | var 6 | // node dependencies 7 | gulp = require('gulp'), 8 | fs = require('fs'), 9 | console = require('better-console'), 10 | install = require('./config/project/install') 11 | ; 12 | 13 | // export task 14 | module.exports = function() { 15 | 16 | setTimeout(function() { 17 | if( !install.isSetup() ) { 18 | console.log('Starting install...'); 19 | gulp.start('install'); 20 | return; 21 | } 22 | else { 23 | gulp.start('watch'); 24 | } 25 | }, 50); // Delay to allow console.clear to remove messages from check event 26 | 27 | 28 | }; -------------------------------------------------------------------------------- /resource/view/semantic-ui/tasks/clean.js: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Clean Task 3 | *******************************/ 4 | 5 | var 6 | del = require('del'), 7 | config = require('./config/user'), 8 | tasks = require('./config/project/tasks') 9 | ; 10 | 11 | // cleans distribution files 12 | module.exports = function(callback) { 13 | return del([config.paths.clean], tasks.settings.del, callback); 14 | }; -------------------------------------------------------------------------------- /resource/view/semantic-ui/tasks/collections/README.md: -------------------------------------------------------------------------------- 1 | ## How to use 2 | 3 | These are collections of tasks that are imported together. 4 | 5 | To import them into gulp: 6 | ```javascript 7 | var 8 | gulp = require('gulp'), 9 | // modified to point to semantic folder 10 | install = require('tasks/collections/install') 11 | ; 12 | gulp = install(gulp); 13 | 14 | // tasks are now injected and ready to be used 15 | gulp.start('install'); 16 | ``` -------------------------------------------------------------------------------- /resource/view/semantic-ui/tasks/collections/admin.js: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Admin Task Collection 3 | *******************************/ 4 | 5 | /* 6 | This are tasks to be run by project maintainers 7 | - Creating Component Repos 8 | - Syncing with GitHub via APIs 9 | - Modifying package files 10 | */ 11 | 12 | /******************************* 13 | Tasks 14 | *******************************/ 15 | 16 | 17 | module.exports = function(gulp) { 18 | var 19 | // less/css distributions 20 | initComponents = require('../admin/components/init'), 21 | createComponents = require('../admin/components/create'), 22 | updateComponents = require('../admin/components/update'), 23 | 24 | // single component releases 25 | initDistributions = require('../admin/distributions/init'), 26 | createDistributions = require('../admin/distributions/create'), 27 | updateDistributions = require('../admin/distributions/update'), 28 | 29 | release = require('../admin/release'), 30 | publish = require('../admin/publish'), 31 | register = require('../admin/register') 32 | ; 33 | 34 | /* Release */ 35 | gulp.task('init distributions', 'Grabs each component from GitHub', initDistributions); 36 | gulp.task('create distributions', 'Updates files in each repo', createDistributions); 37 | gulp.task('init components', 'Grabs each component from GitHub', initComponents); 38 | gulp.task('create components', 'Updates files in each repo', createComponents); 39 | 40 | /* Publish */ 41 | gulp.task('update distributions', 'Commits component updates from create to GitHub', updateDistributions); 42 | gulp.task('update components', 'Commits component updates from create to GitHub', updateComponents); 43 | 44 | /* Tasks */ 45 | gulp.task('release', 'Stages changes in GitHub repos for all distributions', release); 46 | gulp.task('publish', 'Publishes all releases (components, package)', publish); 47 | gulp.task('register', 'Registers all packages with NPM', register); 48 | 49 | }; -------------------------------------------------------------------------------- /resource/view/semantic-ui/tasks/config/admin/github.js: -------------------------------------------------------------------------------- 1 | /******************************* 2 | GitHub Login 3 | *******************************/ 4 | /* 5 | Logs into GitHub using OAuth 6 | */ 7 | 8 | var 9 | fs = require('fs'), 10 | path = require('path'), 11 | githubAPI = require('github'), 12 | 13 | // stores oauth info for GitHub API 14 | oAuthConfig = path.join(__dirname, 'oauth.js'), 15 | oAuth = fs.existsSync(oAuthConfig) 16 | ? require(oAuthConfig) 17 | : false, 18 | github 19 | ; 20 | 21 | if(!oAuth) { 22 | console.log('here'); 23 | console.error('Must add oauth token for GitHub in tasks/config/admin/oauth.js'); 24 | } 25 | 26 | github = new githubAPI({ 27 | version : '3.0.0', 28 | debug : true, 29 | protocol : 'https', 30 | timeout : 5000 31 | }); 32 | 33 | github.authenticate({ 34 | type: 'oauth', 35 | token: oAuth.token 36 | }); 37 | 38 | module.exports = github; -------------------------------------------------------------------------------- /resource/view/semantic-ui/tasks/config/admin/oauth.example.js: -------------------------------------------------------------------------------- 1 | /* 2 | Used to import GitHub Auth Token 3 | To Automate GitHub Updates 4 | */ 5 | 6 | module.exports = { 7 | token : 'AN-OAUTH2-TOKEN', 8 | name : 'Your Name', 9 | email : 'user@email.com' 10 | }; -------------------------------------------------------------------------------- /resource/view/semantic-ui/tasks/config/admin/release.js: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Release Settings 3 | *******************************/ 4 | 5 | // release settings 6 | module.exports = { 7 | 8 | // path to components for repos 9 | source : './dist/components/', 10 | 11 | // modified asset paths for component repos 12 | paths: { 13 | source : '../themes/default/assets/', 14 | output : 'assets/' 15 | }, 16 | 17 | templates: { 18 | bower : './tasks/config/admin/templates/bower.json', 19 | composer : './tasks/config/admin/templates/composer.json', 20 | package : './tasks/config/admin/templates/package.json', 21 | meteor : { 22 | css : './tasks/config/admin/templates/css-package.js', 23 | component : './tasks/config/admin/templates/component-package.js', 24 | less : './tasks/config/admin/templates/less-package.js', 25 | }, 26 | readme : './tasks/config/admin/templates/README.md', 27 | notes : './RELEASE-NOTES.md' 28 | }, 29 | 30 | org : 'Semantic-Org', 31 | repo : 'Semantic-UI', 32 | 33 | // files created for package managers 34 | files: { 35 | composer : 'composer.json', 36 | config : 'semantic.json', 37 | npm : 'package.json', 38 | meteor : 'package.js' 39 | }, 40 | 41 | // root name for distribution repos 42 | distRepoRoot : 'Semantic-UI-', 43 | 44 | // root name for single component repos 45 | componentRepoRoot : 'UI-', 46 | 47 | // root name for package managers 48 | packageRoot : 'semantic-ui-', 49 | 50 | // root path to repos 51 | outputRoot : '../repos/', 52 | 53 | homepage : 'http://www.semantic-ui.com', 54 | 55 | // distributions that get separate repos 56 | distributions: [ 57 | 'LESS', 58 | 'CSS' 59 | ], 60 | 61 | // components that get separate repositories for bower/npm 62 | components : [ 63 | 'accordion', 64 | 'ad', 65 | 'api', 66 | 'breadcrumb', 67 | 'button', 68 | 'card', 69 | 'checkbox', 70 | 'comment', 71 | 'dimmer', 72 | 'divider', 73 | 'dropdown', 74 | 'feed', 75 | 'flag', 76 | 'form', 77 | 'grid', 78 | 'header', 79 | 'icon', 80 | 'image', 81 | 'input', 82 | 'item', 83 | 'label', 84 | 'list', 85 | 'loader', 86 | 'menu', 87 | 'message', 88 | 'modal', 89 | 'nag', 90 | 'popup', 91 | 'progress', 92 | 'rail', 93 | 'rating', 94 | 'reset', 95 | 'reveal', 96 | 'search', 97 | 'segment', 98 | 'shape', 99 | 'sidebar', 100 | 'site', 101 | 'statistic', 102 | 'step', 103 | 'sticky', 104 | 'tab', 105 | 'table', 106 | 'transition', 107 | 'video', 108 | 'visibility' 109 | ] 110 | }; 111 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/tasks/config/admin/templates/README.md: -------------------------------------------------------------------------------- 1 | # Semantic {Component} 2 | 3 | This repository contains pre-compiled {component} files using the default themes. This is intended for use in projects that do not need all the bells and whistles of Semantic UI, and want to keep file size to a minimum. 4 | 5 | For the latest changes please see the [Release Notes](https://github.com/Semantic-Org/UI-{Component}/blob/master/RELEASE-NOTES.md) 6 | 7 | If you're looking for the full version of Semantic including all components and build tools [check out the main project repository](https://github.com/Semantic-Org/Semantic-UI/tree/1.0) 8 | 9 | #### To install with Bower 10 | ``` 11 | bower install semantic-ui-{component} 12 | ``` 13 | 14 | #### To install with NPM 15 | ``` 16 | npm install semantic-ui-{component} 17 | ``` 18 | 19 | #### To install with Meteor 20 | ``` 21 | meteor add semantic:ui-{component} 22 | ``` 23 | 24 | 25 | ## Addendum 26 | 27 | This element's definitions (required class names, html structures) are available in the [UI Docs](http://www.semantic-ui.com) 28 | 29 | Please consider checking out [all the benefits to theming](http://www.learnsemantic.com/guide/expert.html) before using these stand-alone releases. 30 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/tasks/config/admin/templates/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Component", 3 | "description" : "Component distribution", 4 | "homepage" : "http://www.semantic-ui.com", 5 | "author": { 6 | "name" : "Jack Lukic", 7 | "web" : "http://www.jacklukic.com" 8 | }, 9 | "ignore": [ 10 | "./index.js" 11 | ], 12 | "keywords": [ 13 | "semantic", 14 | "ui", 15 | "css3", 16 | "framework" 17 | ], 18 | "license" : [ 19 | "http://semantic-ui.mit-license.org/" 20 | ], 21 | "ignore": [ 22 | "docs", 23 | "node", 24 | "server", 25 | "spec", 26 | "src", 27 | "test" 28 | ] 29 | } 30 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/tasks/config/admin/templates/component-package.js: -------------------------------------------------------------------------------- 1 | 2 | Package.describe({ 3 | name : 'semantic:ui-{component}', 4 | summary : 'Semantic UI - {Component}: Single component release', 5 | version : '{version}', 6 | git : 'git://github.com/Semantic-Org/UI-{Component}.git', 7 | }); 8 | 9 | Package.onUse(function(api) { 10 | api.versionsFrom('1.0'); 11 | api.addFiles([ 12 | {files} 13 | ], 'client'); 14 | }); 15 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/tasks/config/admin/templates/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "semantic/ui", 3 | "description" : "Semantic empowers designers and developers by creating a shared vocabulary for UI.", 4 | "homepage" : "http://www.semantic-ui.com", 5 | "authors": [ 6 | { 7 | "name" : "Jack Lukic", 8 | "email": "jacklukic@gmail.com", 9 | "web" : "http://www.jacklukic.com", 10 | "role" : "Creator" 11 | } 12 | ], 13 | "keywords": [ 14 | "semantic", 15 | "ui", 16 | "css", 17 | "framework" 18 | ], 19 | "license" : "MIT" 20 | } -------------------------------------------------------------------------------- /resource/view/semantic-ui/tasks/config/admin/templates/css-package.js: -------------------------------------------------------------------------------- 1 | var 2 | where = 'client' // Adds files only to the client 3 | ; 4 | 5 | Package.describe({ 6 | name : 'semantic:ui-css', 7 | summary : 'Semantic UI - CSS Release of Semantic UI', 8 | version : '{version}', 9 | git : 'git://github.com/Semantic-Org/Semantic-UI-CSS.git', 10 | }); 11 | 12 | Package.onUse(function(api) { 13 | 14 | api.versionsFrom('1.0'); 15 | 16 | api.use('jquery', 'client'); 17 | 18 | api.addFiles([ 19 | // icons 20 | 'themes/default/assets/fonts/icons.eot', 21 | 'themes/default/assets/fonts/icons.svg', 22 | 'themes/default/assets/fonts/icons.ttf', 23 | 'themes/default/assets/fonts/icons.woff', 24 | 'themes/default/assets/fonts/icons.woff2', 25 | 26 | // flags 27 | 'themes/default/assets/images/flags.png', 28 | 29 | // release 30 | 'semantic.css', 31 | 'semantic.js' 32 | ], 'client'); 33 | 34 | }); 35 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/tasks/config/admin/templates/less-package.js: -------------------------------------------------------------------------------- 1 | var 2 | where = 'client' // Adds files only to the client 3 | ; 4 | 5 | Package.describe({ 6 | name : 'semantic:ui', 7 | summary : 'Semantic UI - LESS Release of Semantic UI', 8 | version : '{version}', 9 | git : 'git://github.com/Semantic-Org/Semantic-UI-LESS.git', 10 | }); 11 | 12 | Package.onUse(function(api) { 13 | 14 | api.versionsFrom('1.0'); 15 | api.use('less', 'client'); 16 | 17 | api.addFiles([ 18 | {files} 19 | ], 'client'); 20 | 21 | }); 22 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/tasks/config/admin/templates/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "semantic", 3 | "version": "1.0.0", 4 | "title": "Semantic UI", 5 | "description": "Semantic empowers designers and developers by creating a shared vocabulary for UI.", 6 | "homepage": "http://www.semantic-ui.com", 7 | "author": "Jack Lukic ", 8 | "license": "MIT", 9 | "repository": { 10 | "type": "git", 11 | "url": "git://github.com/Semantic-Org/Semantic-UI.git" 12 | }, 13 | "bugs": { 14 | "url": "https://github.com/Semantic-Org/Semantic-UI/issues" 15 | }, 16 | "devDependencies": {} 17 | } 18 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/tasks/config/defaults.js: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Default Paths 3 | *******************************/ 4 | 5 | module.exports = { 6 | 7 | // base path added to all other paths 8 | base : '', 9 | 10 | // base path when installed with npm 11 | pmRoot: 'semantic/', 12 | 13 | // octal permission for output files, i.e. 644 (false does not adjust) 14 | permission : 744, 15 | 16 | // whether to generate rtl files 17 | rtl : false, 18 | 19 | // file paths 20 | files: { 21 | config : 'semantic.json', 22 | site : 'src/site', 23 | theme : 'src/theme.config' 24 | }, 25 | 26 | // folder paths 27 | paths: { 28 | source: { 29 | config : 'src/theme.config', 30 | definitions : 'src/definitions/', 31 | site : 'src/site/', 32 | themes : 'src/themes/' 33 | }, 34 | output: { 35 | packaged : 'dist/', 36 | uncompressed : 'dist/components/', 37 | compressed : 'dist/components/', 38 | themes : 'dist/themes/' 39 | }, 40 | clean : 'dist/' 41 | }, 42 | 43 | // components to include in package 44 | components: [ 45 | 46 | // global 47 | 'reset', 48 | 'site', 49 | 50 | // elements 51 | 'button', 52 | 'divider', 53 | 'flag', 54 | 'header', 55 | 'icon', 56 | 'image', 57 | 'input', 58 | 'label', 59 | 'list', 60 | 'loader', 61 | 'rail', 62 | 'reveal', 63 | 'segment', 64 | 'step', 65 | 66 | // collections 67 | 'breadcrumb', 68 | 'form', 69 | 'grid', 70 | 'menu', 71 | 'message', 72 | 'table', 73 | 74 | // views 75 | 'ad', 76 | 'card', 77 | 'comment', 78 | 'feed', 79 | 'item', 80 | 'statistic', 81 | 82 | // modules 83 | 'accordion', 84 | 'checkbox', 85 | 'dimmer', 86 | 'dropdown', 87 | 'modal', 88 | 'nag', 89 | 'popup', 90 | 'progress', 91 | 'rating', 92 | 'search', 93 | 'shape', 94 | 'sidebar', 95 | 'sticky', 96 | 'tab', 97 | 'transition', 98 | 'video', 99 | 100 | // behaviors 101 | 'api', 102 | 'form', 103 | 'state', 104 | 'visibility' 105 | ], 106 | 107 | // whether to load admin tasks 108 | admin: false, 109 | 110 | // globs used for matching file patterns 111 | globs : { 112 | ignored : '!(*.min|*.map|*.rtl)', 113 | ignoredRTL : '!(*.min|*.map)' 114 | } 115 | 116 | }; 117 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/tasks/config/docs.js: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Docs 3 | *******************************/ 4 | 5 | /* Paths used for "serve-docs" and "build-docs" tasks */ 6 | module.exports = { 7 | base: '', 8 | paths: { 9 | source: { 10 | config : 'src/theme.config', 11 | definitions : 'src/definitions/', 12 | site : 'src/site/', 13 | themes : 'src/themes/' 14 | }, 15 | output: { 16 | less : '../docs/out/src/', 17 | packaged : '../docs/out/dist/', 18 | uncompressed : '../docs/out/dist/components/', 19 | compressed : '../docs/out/dist/components/', 20 | themes : '../docs/out/dist/themes/' 21 | }, 22 | clean: '../docs/out/dist/' 23 | } 24 | }; -------------------------------------------------------------------------------- /resource/view/semantic-ui/tasks/config/npm/gulpfile.js: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Set-up 3 | *******************************/ 4 | 5 | var 6 | gulp = require('gulp-help')(require('gulp')), 7 | 8 | // read user config to know what task to load 9 | config = require('./tasks/config/user'), 10 | 11 | // import tasks 12 | build = require('./tasks/build'), 13 | clean = require('./tasks/clean'), 14 | version = require('./tasks/version'), 15 | watch = require('./tasks/watch'), 16 | 17 | // docs tasks 18 | serveDocs = require('./tasks/docs/serve'), 19 | buildDocs = require('./tasks/docs/build'), 20 | 21 | // rtl 22 | buildRTL = require('./tasks/rtl/build'), 23 | watchRTL = require('./tasks/rtl/watch') 24 | ; 25 | 26 | /*-------------- 27 | Common 28 | ---------------*/ 29 | 30 | gulp.task('default', false, [ 31 | 'watch' 32 | ]); 33 | 34 | gulp.task('watch', 'Watch for site/theme changes', watch); 35 | gulp.task('build', 'Builds all files from source', build); 36 | 37 | gulp.task('clean', 'Clean dist folder', clean); 38 | gulp.task('version', 'Displays current version of Semantic', version); 39 | 40 | /*-------------- 41 | Docs 42 | ---------------*/ 43 | 44 | /* 45 | See usage instruction in Docs Readme 46 | https://github.com/Semantic-Org/Semantic-UI-Docs/ 47 | */ 48 | 49 | gulp.task('serve-docs', 'Serve file changes to SUI Docs', serveDocs); 50 | gulp.task('build-docs', 'Build all files and add to SUI Docs', buildDocs); 51 | 52 | /*-------------- 53 | RTL 54 | ---------------*/ 55 | 56 | if(config.rtl) { 57 | gulp.task('watch-rtl', 'Build all files as RTL', watchRTL); 58 | gulp.task('build-rtl', 'Watch files as RTL ', buildRTL); 59 | } 60 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/tasks/config/project/release.js: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Release Config 3 | *******************************/ 4 | 5 | var 6 | requireDotFile = require('require-dot-file'), 7 | config, 8 | package, 9 | version 10 | ; 11 | 12 | 13 | /******************************* 14 | Derived Values 15 | *******************************/ 16 | 17 | try { 18 | 19 | config = requireDotFile('semantic.json'); 20 | package = require('../../../package.json'); 21 | 22 | // looks for version in config or package.json (whichever is available) 23 | version = (config && config.version !== undefined) 24 | ? config.version 25 | : package.version 26 | ; 27 | 28 | } 29 | 30 | catch(error) { 31 | // generate fake package 32 | package = { 33 | version: 'x.x' 34 | }; 35 | } 36 | 37 | /******************************* 38 | Export 39 | *******************************/ 40 | 41 | module.exports = { 42 | 43 | title : 'Semantic UI', 44 | repository : 'https://github.com/Semantic-Org/Semantic-UI', 45 | url : 'http://www.semantic-ui.com/', 46 | 47 | banner: '' 48 | + ' /*' + '\n' 49 | + ' * # <%= title %> - <%= version %>' + '\n' 50 | + ' * <%= repository %>' + '\n' 51 | + ' * <%= url %>' + '\n' 52 | + ' *' + '\n' 53 | + ' * Copyright 2014 Contributors' + '\n' 54 | + ' * Released under the MIT license' + '\n' 55 | + ' * http://opensource.org/licenses/MIT' + '\n' 56 | + ' *' + '\n' 57 | + ' */' + '\n', 58 | 59 | version : package.version 60 | 61 | }; 62 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/tasks/config/user.js: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Set-up 3 | *******************************/ 4 | 5 | var 6 | // npm dependencies 7 | extend = require('extend'), 8 | fs = require('fs'), 9 | path = require('path'), 10 | requireDotFile = require('require-dot-file'), 11 | 12 | // semantic.json defaults 13 | defaults = require('./defaults'), 14 | config = require('./project/config'), 15 | 16 | // Final config object 17 | gulpConfig = {}, 18 | 19 | // semantic.json settings 20 | userConfig 21 | 22 | ; 23 | 24 | 25 | /******************************* 26 | User Config 27 | *******************************/ 28 | 29 | try { 30 | // looks for config file across all parent directories 31 | userConfig = requireDotFile('semantic.json'); 32 | } 33 | catch(error) { 34 | if(error.code === 'MODULE_NOT_FOUND') { 35 | console.error('No semantic.json config found'); 36 | } 37 | } 38 | 39 | // extend user config with defaults 40 | gulpConfig = (!userConfig) 41 | ? extend(true, {}, defaults) 42 | : extend(false, {}, defaults, userConfig) 43 | ; 44 | 45 | /******************************* 46 | Add Derived Values 47 | *******************************/ 48 | 49 | // adds calculated values 50 | config.addDerivedValues(gulpConfig); 51 | 52 | 53 | /******************************* 54 | Export 55 | *******************************/ 56 | 57 | module.exports = gulpConfig; 58 | 59 | -------------------------------------------------------------------------------- /resource/view/semantic-ui/tasks/version.js: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Version Task 3 | *******************************/ 4 | 5 | var 6 | release = require('./config/project/release') 7 | ; 8 | 9 | module.exports = function(callback) { 10 | console.log(release.title + ' ' + release.version); 11 | }; -------------------------------------------------------------------------------- /semantic.json: -------------------------------------------------------------------------------- 1 | { 2 | "base": "resource/view/semantic-ui/", 3 | "paths": { 4 | "source": { 5 | "config": "src/theme.config", 6 | "definitions": "src/definitions/", 7 | "site": "src/site/", 8 | "themes": "src/themes/" 9 | }, 10 | "output": { 11 | "packaged": "../../../public/static/vendor/semantic-ui/", 12 | "uncompressed": "dist/components/", 13 | "compressed": "dist/components/", 14 | "themes": "dist/themes/" 15 | }, 16 | "clean": "dist/" 17 | }, 18 | "permission": false, 19 | "rtl": "No", 20 | "components": [ 21 | "breadcrumb", 22 | "button", 23 | "checkbox", 24 | "dimmer", 25 | "dropdown", 26 | "form", 27 | "grid", 28 | "header", 29 | "icon", 30 | "image", 31 | "input", 32 | "item", 33 | "label", 34 | "list", 35 | "loader", 36 | "menu", 37 | "message", 38 | "modal", 39 | "progress", 40 | "reset", 41 | "segment", 42 | "site", 43 | "table", 44 | "transition" 45 | ], 46 | "version": "1.12.3" 47 | } -------------------------------------------------------------------------------- /tests/.atoum.php: -------------------------------------------------------------------------------- 1 | . 21 | */ 22 | 23 | require_once __DIR__ . DIRECTORY_SEPARATOR . '.autoload.atoum.php'; 24 | 25 | /** 26 | * This file is responsible to configure atoum. 27 | * 28 | * @copyright Copyright (C) fruux GmbH (https://fruux.com/) 29 | * @author Ivan Enderlin 30 | * @license GNU Affero General Public License, Version 3. 31 | */ 32 | 33 | $runner->addExtension(new Atoum\PraspelExtension\Manifest()); 34 | $runner->addExtension(new mageekguy\atoum\ruler\extension($script)); 35 | $runner->addTestsFromDirectory(__DIR__ . '/Unit/'); 36 | $runner->addTestsFromDirectory(__DIR__ . '/Integration/'); 37 | 38 | $runner->setPhpPath($runner->getPhpPath() . ' -d phar.readonly=0'); 39 | -------------------------------------------------------------------------------- /tests/.autoload.atoum.php: -------------------------------------------------------------------------------- 1 | . 21 | */ 22 | 23 | require_once __DIR__ . '/../bootstrap.php'; 24 | 25 | /** 26 | * This file is responsible to configure the autoloader. 27 | * 28 | * @copyright Copyright (C) fruux GmbH (https://fruux.com/) 29 | * @author Ivan Enderlin 30 | * @license GNU Affero General Public License, Version 3. 31 | */ 32 | 33 | $autoloader->addPsr4('Sabre\\Katana\\Test\\', __DIR__); 34 | $autoloader->addPsr4('Mock\\', __DIR__ . '/Mock'); 35 | -------------------------------------------------------------------------------- /tests/.bootstrap.atoum.php: -------------------------------------------------------------------------------- 1 | . 21 | */ 22 | 23 | require_once __DIR__ . DIRECTORY_SEPARATOR . '.autoload.atoum.php'; 24 | 25 | /** 26 | * This file bootstraps unit tests. 27 | * 28 | * @copyright Copyright (C) fruux GmbH (https://fruux.com/) 29 | * @author Ivan Enderlin 30 | * @license GNU Affero General Public License, Version 3. 31 | */ 32 | 33 | date_default_timezone_set('UTC'); 34 | -------------------------------------------------------------------------------- /tests/Helper/Configuration.php: -------------------------------------------------------------------------------- 1 | . 21 | */ 22 | 23 | namespace Sabre\Katana\Test\Helper; 24 | 25 | use atoum\mock\streams\fs\file; 26 | 27 | /** 28 | * Helper for the configurations. 29 | * 30 | * @copyright Copyright (C) fruux GmbH (https://fruux.com/) 31 | * @author Ivan Enderlin 32 | * @license GNU Affero General Public License, Version 3. 33 | */ 34 | class Configuration { 35 | 36 | /** 37 | * Run the helper. 38 | * 39 | * @param string $filename Configuration filename. 40 | * @param array $content Configuration content (as an array, not as 41 | * JSON). 42 | * @return string 43 | */ 44 | function __invoke($filename, array $content = null) { 45 | 46 | $file = (string)file::get($filename); 47 | 48 | if (null !== $content) { 49 | file_put_contents($file, json_encode($content, JSON_PRETTY_PRINT)); 50 | } 51 | 52 | return $file; 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /tests/Helper/Helper.php: -------------------------------------------------------------------------------- 1 | . 21 | */ 22 | 23 | namespace Sabre\Katana\Test\Helper; 24 | 25 | use RuntimeException; 26 | 27 | /** 28 | * Helper manager. 29 | * A helper is a callable. 30 | * 31 | * @copyright Copyright (C) fruux GmbH (https://fruux.com/) 32 | * @author Ivan Enderlin 33 | * @license GNU Affero General Public License, Version 3. 34 | */ 35 | class Helper { 36 | 37 | /** 38 | * All helpers. 39 | * 40 | * @var array 41 | */ 42 | protected $helpers = []; 43 | 44 | /** 45 | * Register a new helper. 46 | * 47 | * @param string $name Helper's name. 48 | * @param callable $helper Helper. 49 | * @return void 50 | */ 51 | function registerHelper($name, callable $helper) { 52 | 53 | $this->helpers[$name] = $helper; 54 | } 55 | 56 | /** 57 | * Execute a helper. 58 | * 59 | * @param string $name Helper's name. 60 | * @param array $arguments Helper's arguments. 61 | * @return mixed 62 | */ 63 | function __call($name, array $arguments) { 64 | 65 | if (!isset($this->helpers[$name])) { 66 | throw new RuntimeException(sprintf('Helper %s does not exist.', $name)); 67 | } 68 | 69 | return call_user_func_array( 70 | $this->helpers[$name], 71 | $arguments 72 | ); 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /tests/Helper/SQLite.php: -------------------------------------------------------------------------------- 1 | . 21 | */ 22 | 23 | namespace Sabre\Katana\Test\Helper; 24 | 25 | /** 26 | * Helper to get the filename of a fresh SQLite database. 27 | * 28 | * @copyright Copyright (C) fruux GmbH (https://fruux.com/) 29 | * @author Ivan Enderlin 30 | * @license GNU Affero General Public License, Version 3. 31 | */ 32 | class SQLite { 33 | 34 | /** 35 | * Run the helper. 36 | * 37 | * @param bool $forceFile Force SQLite to work on a file. 38 | * @return string 39 | */ 40 | function __invoke($forceFile = false) { 41 | 42 | if (true === $forceFile) { 43 | return 'sqlite:' . stream_get_meta_data(tmpfile())['uri']; 44 | } else { 45 | return 'sqlite::memory:'; 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /tests/Helper/TemporaryDirectory.php: -------------------------------------------------------------------------------- 1 | . 21 | */ 22 | 23 | namespace Sabre\Katana\Test\Helper; 24 | 25 | /** 26 | * Helper to get a temporary directory. 27 | * 28 | * @copyright Copyright (C) fruux GmbH (https://fruux.com/) 29 | * @author Ivan Enderlin 30 | * @license GNU Affero General Public License, Version 3. 31 | */ 32 | class TemporaryDirectory { 33 | 34 | /** 35 | * Run the helper. 36 | * 37 | * @param string $directoryName Directory name. 38 | * @param bool $create Create if it does not exist. 39 | * @return string 40 | */ 41 | function __invoke($directoryName, $create = false) { 42 | 43 | $path = sys_get_temp_dir() . DS . $directoryName; 44 | 45 | if (true === $create && false === file_exists($path)) { 46 | mkdir($path); 47 | } 48 | 49 | return $path; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /tests/Helper/TemporaryFile.php: -------------------------------------------------------------------------------- 1 | . 21 | */ 22 | 23 | namespace Sabre\Katana\Test\Helper; 24 | 25 | /** 26 | * Helper to get a temporary file. 27 | * 28 | * @copyright Copyright (C) fruux GmbH (https://fruux.com/) 29 | * @author Ivan Enderlin 30 | * @license GNU Affero General Public License, Version 3. 31 | */ 32 | class TemporaryFile { 33 | 34 | /** 35 | * Run the helper. 36 | * 37 | * @param string $filename Filename. 38 | * @return string 39 | */ 40 | function __invoke($filename = '') { 41 | 42 | return tempnam(sys_get_temp_dir(), 'katana') . $filename; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /tests/Integration/Suite.php: -------------------------------------------------------------------------------- 1 | . 21 | */ 22 | 23 | namespace Sabre\Katana\Test\Integration; 24 | 25 | use Sabre\Katana\Test\Unit\Suite as UnitSuite; 26 | 27 | /** 28 | * Integration test suite parent class. 29 | * 30 | * @copyright Copyright (C) fruux GmbH (https://fruux.com/) 31 | * @author Ivan Enderlin 32 | * @license GNU Affero General Public License, Version 3. 33 | */ 34 | class Suite extends UnitSuite { 35 | 36 | const defaultNamespace = '#\\\Test\\\Integration\\\#'; 37 | } 38 | -------------------------------------------------------------------------------- /tests/Mock/Sapi.php: -------------------------------------------------------------------------------- 1 | . 21 | */ 22 | 23 | namespace Mock; 24 | 25 | use Sabre\HTTP\Sapi as OriginalSapi; 26 | use Sabre\HTTP\ResponseInterface; 27 | 28 | /** 29 | * Mock of Sabre\HTTP\Sapi. 30 | * 31 | * @copyright Copyright (C) fruux GmbH (https://fruux.com/) 32 | * @author Ivan Enderlin 33 | * @license GNU Affero General Public License, Version 3. 34 | */ 35 | class Sapi extends OriginalSapi { 36 | 37 | static function sendResponse(ResponseInterface $response) { 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /tests/Mock/Server.php: -------------------------------------------------------------------------------- 1 | . 21 | */ 22 | 23 | namespace Mock; 24 | 25 | use Sabre\Katana\Server\Server as OriginalServer; 26 | use Sabre\Katana\Configuration; 27 | use Sabre\Katana\Server\Installer; 28 | use Sabre\Katana\Test\Helper; 29 | 30 | /** 31 | * Mock of Sabre\Katana\Server\Server. 32 | * 33 | * @copyright Copyright (C) fruux GmbH (https://fruux.com/) 34 | * @author Ivan Enderlin 35 | * @license GNU Affero General Public License, Version 3. 36 | */ 37 | class Server extends OriginalServer { 38 | 39 | const ADMINISTRATOR_EMAIL = 'katana@domain.tld'; 40 | const ADMINISTRATOR_PASSWORD = '🔒'; 41 | 42 | public $request = null; 43 | public $response = null; 44 | 45 | protected function initializeServer() { 46 | 47 | parent::initializeServer(); 48 | 49 | $server = $this->getServer(); 50 | $server->sapi = new Sapi(); 51 | $this->request = &$server->httpRequest; 52 | $this->response = &$server->httpResponse; 53 | } 54 | 55 | protected function initializeConfiguration() { 56 | 57 | $configuration = new Helper\Configuration(); 58 | $sqlite = new Helper\SQLite(); 59 | $this->configuration = new Configuration( 60 | $configuration( 61 | 'configuration.json', 62 | [ 63 | 'base_url' => '/', 64 | 'database' => [ 65 | 'dsn' => $sqlite(true), 66 | 'username' => '', 67 | 'password' => '' 68 | ] 69 | ] 70 | ) 71 | ); 72 | } 73 | 74 | protected function initializeDatabase() { 75 | 76 | $database = Installer::createDatabase($this->getConfiguration()); 77 | Installer::createAdministratorProfile( 78 | $this->getConfiguration(), 79 | $database, 80 | static::ADMINISTRATOR_EMAIL, 81 | static::ADMINISTRATOR_PASSWORD 82 | ); 83 | unset($database); 84 | 85 | return parent::initializeDatabase(); 86 | } 87 | } 88 | -------------------------------------------------------------------------------- /tests/Unit/Server/Server.php: -------------------------------------------------------------------------------- 1 | . 21 | */ 22 | 23 | namespace Sabre\Katana\Test\Unit\Server; 24 | 25 | use Sabre\Katana\Test\Unit\Suite; 26 | use Mock; 27 | 28 | /** 29 | * Test suite of the server. 30 | * 31 | * @copyright Copyright (C) fruux GmbH (https://fruux.com/) 32 | * @author Ivan Enderlin 33 | * @license GNU Affero General Public License, Version 3. 34 | */ 35 | class Server extends Suite { 36 | 37 | /** 38 | * @tags server authentication 39 | */ 40 | function case_unauthorized() { 41 | 42 | $this 43 | ->given($server = new Mock\Server()) 44 | ->when($server->run()) 45 | ->then 46 | ->integer($server->response->getStatus()) 47 | ->isEqualTo(401); 48 | } 49 | 50 | /** 51 | * @tags server authentication 52 | */ 53 | function case_authorized() { 54 | 55 | $this 56 | ->given( 57 | $server = new Mock\Server(), 58 | $server->request->addHeader( 59 | 'Authorization', 60 | 'Basic ' . 61 | base64_encode( 62 | $server::ADMINISTRATOR_LOGIN . 63 | ':' . 64 | $server::ADMINISTRATOR_PASSWORD 65 | ) 66 | ) 67 | ) 68 | ->when($server->run()) 69 | ->then 70 | ->integer($server->response->getStatus()) 71 | ->isNotEqualTo(401); 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /vendor/README.md: -------------------------------------------------------------------------------- 1 | # ![K (sabre/katana's logo)](../public/static/image/katana_logo_full.png) 2 | 3 | ## Dependencies 4 | 5 | If this directory is **empty**, it means that the dependencies are not installed 6 | yet. 7 | 8 | Dependencies are managed by [Composer]. They are declared in the 9 | `composer.json` file at the root of the project. 10 | 11 | To install them: 12 | 13 | ```sh 14 | $ cd ../ 15 | $ make install-server 16 | ``` 17 | 18 | ### Development dependencies 19 | 20 | To be able to run tests or such development tools, simply run: 21 | 22 | ```sh 23 | $ cd ../ 24 | $ make devinstall-server 25 | ``` 26 | 27 | ### Optimizing 28 | 29 | Composer generates an autoloader, i.e. a component responsible to load every 30 | entities (classes, interfaces, traits, functions etc.) on-demand to avoid I/O. 31 | The current Composer configuration requests to generate an optimized autoloader. 32 | It boosts the execution of the application approximately up to 20%. 33 | 34 | [Composer]: http://getcomposer.org/ 35 | --------------------------------------------------------------------------------