├── .idea ├── flarum-ext-material.iml ├── misc.xml ├── modules.xml └── vcs.xml ├── LICENSE.md ├── README.md ├── composer.json ├── extend.php ├── icon.jpg ├── js ├── admin.js ├── admin │ ├── Gulpfile.js │ ├── dist │ │ └── extension.js │ ├── package.json │ └── src │ │ └── main.js ├── dist │ ├── admin.js │ ├── admin.js.map │ ├── forum.js │ └── forum.js.map ├── forum.js ├── forum │ ├── Gulpfile.js │ ├── dist │ │ └── extension.js │ ├── package.json │ └── src │ │ └── main.js ├── package-lock.json ├── package.json └── webpack.config.js ├── resources ├── less │ ├── admin.less │ └── forum.less └── locale │ └── en.yml └── src └── Listeners └── AddClientAssets.php /.idea/flarum-ext-material.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License Copyright (c) 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 4 | 5 | The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Material 2 | 3 | ![License](https://img.shields.io/badge/license-MIT-blue.svg) [![Latest Stable Version](https://img.shields.io/packagist/v/extum/flarum-ext-material.svg)](https://packagist.org/packages/extum/flarum-ext-material) 4 | 5 | A [Flarum](http://flarum.org) extension. 6 | 7 | ### Installation 8 | 9 | Use [Bazaar](https://discuss.flarum.org/d/5151-flagrow-bazaar-the-extension-marketplace) or install manually with composer: 10 | 11 | ```sh 12 | composer require extum/flarum-ext-material 13 | ``` 14 | 15 | ### Updating 16 | 17 | ```sh 18 | composer update extum/flarum-ext-material 19 | ``` 20 | 21 | ### Links 22 | 23 | - [Packagist](https://packagist.org/packages/extum/flarum-ext-material) 24 | 25 | ### Source 26 | 27 | ```sh 28 | npm i 29 | ``` -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "extum/flarum-ext-material", 3 | "description": "Extum Material brings Flarum to the next-level with Material Design!", 4 | "keywords": ["theme", "material-design", "material", "flarum-extension", "flarum", "style"], 5 | "type": "flarum-extension", 6 | "require": { 7 | "flarum/core": ">=0.1.0-beta.10 <0.1.0-beta.12" 8 | }, 9 | "authors": [ 10 | { 11 | "name": "Extum", 12 | "email": "ardacebi1@gmail.com", 13 | "role": "Developer" 14 | } 15 | ], 16 | "autoload": { 17 | "psr-4": {"Extum\\MDL\\": "src/"} 18 | }, 19 | "extra": { 20 | "flarum-extension": { 21 | "title": "Extum Material", 22 | "icon": { 23 | "image": "icon.jpg", 24 | "backgroundSize": "cover", 25 | "backgroundColor": "#dbc6f9", 26 | "color": "#fff" 27 | } 28 | } 29 | }, 30 | "flagrow": { 31 | "discuss": "https://discuss.flarum.org/d/14335-material-design-extension-theme-by-extum" 32 | } 33 | } -------------------------------------------------------------------------------- /extend.php: -------------------------------------------------------------------------------- 1 | js(__DIR__.'/js/dist/forum.js') 19 | ->css(__DIR__.'/resources/less/forum.less'), 20 | (new Extend\Frontend('admin')) 21 | ->js(__DIR__.'/js/dist/admin.js') 22 | ->css(__DIR__.'/resources/less/admin.less'), 23 | new Extend\Locales(__DIR__ . '/resources/locale') 24 | ]; 25 | -------------------------------------------------------------------------------- /icon.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Extum/material/018a2e149b496bc804c1d97730ba784295fd6821/icon.jpg -------------------------------------------------------------------------------- /js/admin.js: -------------------------------------------------------------------------------- 1 | export * from './src/admin'; 2 | -------------------------------------------------------------------------------- /js/admin/Gulpfile.js: -------------------------------------------------------------------------------- 1 | var gulp = require('flarum-gulp'); 2 | 3 | gulp({ 4 | modules: { 5 | 'extum/flarum-ext-material': [ 6 | 'src/**/*.js', 7 | ] 8 | } 9 | }); 10 | -------------------------------------------------------------------------------- /js/admin/dist/extension.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | System.register('extum/flarum-ext-material/main', ['flarum/app'], function (_export, _context) { 4 | "use strict"; 5 | 6 | var app; 7 | return { 8 | setters: [function (_flarumApp) { 9 | app = _flarumApp.default; 10 | }], 11 | execute: function () { 12 | 13 | app.initializers.add('extum/flarum-ext-material', function () {}); 14 | } 15 | }; 16 | }); -------------------------------------------------------------------------------- /js/admin/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "devDependencies": { 4 | "gulp": "^3.9.1", 5 | "flarum-gulp": "^0.2.0" 6 | }, 7 | "dependencies": {} 8 | } 9 | -------------------------------------------------------------------------------- /js/admin/src/main.js: -------------------------------------------------------------------------------- 1 | import app from 'flarum/app'; 2 | 3 | app.initializers.add('extum/flarum-ext-material', () => {}); 4 | -------------------------------------------------------------------------------- /js/dist/admin.js: -------------------------------------------------------------------------------- 1 | module.exports=function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=3)}([,function(e,t){app.initializers.add("extum/flarum-ext-material",(function(){console.log("[extum/flarum-ext-material] Hello, admin!")}))},,function(e,t,r){"use strict";r.r(t);var n=r(1);for(var o in n)"default"!==o&&function(e){r.d(t,e,(function(){return n[e]}))}(o)}]); 2 | //# sourceMappingURL=admin.js.map -------------------------------------------------------------------------------- /js/dist/admin.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["webpack://@extum/flarum-ext-material/webpack/bootstrap","webpack://@extum/flarum-ext-material/./src/admin/index.js","webpack://@extum/flarum-ext-material/./admin.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","app","initializers","add","console","log"],"mappings":"2BACE,IAAIA,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,IAUV,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,QA0Df,OArDAF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEZ,EAAoBkB,EAAI,SAAShB,GACX,oBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,KAQvDrB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG/B,EAAoBkC,EAAI,GAIjBlC,EAAoBA,EAAoBmC,EAAI,G,iBClFrDC,IAAIC,aAAaC,IAAI,6BAA6B,WAChDC,QAAQC,IAAI,iD,8BCDd","file":"admin.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 3);\n","app.initializers.add('extum/flarum-ext-material', () => {\r\n console.log('[extum/flarum-ext-material] Hello, admin!');\r\n});\r\n","export * from './src/admin';\n"],"sourceRoot":""} -------------------------------------------------------------------------------- /js/dist/forum.js: -------------------------------------------------------------------------------- 1 | module.exports=function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=2)}([function(e,t){app.initializers.add("extum/flarum-ext-material",(function(){console.log("[extum/flarum-ext-material] Hello, forum!")}))},,function(e,t,r){"use strict";r.r(t);var n=r(0);for(var o in n)"default"!==o&&function(e){r.d(t,e,(function(){return n[e]}))}(o)}]); 2 | //# sourceMappingURL=forum.js.map -------------------------------------------------------------------------------- /js/dist/forum.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["webpack://@extum/flarum-ext-material/webpack/bootstrap","webpack://@extum/flarum-ext-material/./src/forum/index.js","webpack://@extum/flarum-ext-material/./forum.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","app","initializers","add","console","log"],"mappings":"2BACE,IAAIA,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,IAUV,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,QA0Df,OArDAF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEZ,EAAoBkB,EAAI,SAAShB,GACX,oBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,KAQvDrB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG/B,EAAoBkC,EAAI,GAIjBlC,EAAoBA,EAAoBmC,EAAI,G,gBClFrDC,IAAIC,aAAaC,IAAI,6BAA6B,WAChDC,QAAQC,IAAI,iD,8BCDd","file":"forum.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 2);\n","app.initializers.add('extum/flarum-ext-material', () => {\r\n console.log('[extum/flarum-ext-material] Hello, forum!');\r\n});\r\n","export * from './src/forum';\n"],"sourceRoot":""} -------------------------------------------------------------------------------- /js/forum.js: -------------------------------------------------------------------------------- 1 | export * from './src/forum'; 2 | -------------------------------------------------------------------------------- /js/forum/Gulpfile.js: -------------------------------------------------------------------------------- 1 | var gulp = require('flarum-gulp'); 2 | 3 | gulp({ 4 | modules: { 5 | 'extum/flarum-ext-material': [ 6 | 'src/**/*.js', 7 | ] 8 | } 9 | }); 10 | -------------------------------------------------------------------------------- /js/forum/dist/extension.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | System.register('extum/flarum-ext-material/main', ['flarum/app'], function (_export, _context) { 4 | "use strict"; 5 | 6 | var app; 7 | return { 8 | setters: [function (_flarumApp) { 9 | app = _flarumApp.default; 10 | }], 11 | execute: function () { 12 | 13 | app.initializers.add('extum/flarum-ext-material', function () {}); 14 | } 15 | }; 16 | }); -------------------------------------------------------------------------------- /js/forum/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "devDependencies": { 4 | "gulp": "^4.0.0", 5 | "flarum-gulp": "^0.2.0" 6 | }, 7 | "dependencies": {} 8 | } 9 | -------------------------------------------------------------------------------- /js/forum/src/main.js: -------------------------------------------------------------------------------- 1 | import app from 'flarum/app'; 2 | 3 | app.initializers.add('extum/flarum-ext-material', () => {}); 4 | -------------------------------------------------------------------------------- /js/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@extum/flarum-ext-material", 3 | "version": "0.0.0", 4 | "private": true, 5 | "dependencies": { 6 | "flarum-webpack-config": "^0.1.0-beta.10", 7 | "webpack": "^4.26.0", 8 | "webpack-cli": "^3.0.7" 9 | }, 10 | "scripts": { 11 | "dev": "webpack --mode development --watch", 12 | "build": "webpack --mode production" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /js/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('flarum-webpack-config')(); 2 | -------------------------------------------------------------------------------- /resources/less/admin.less: -------------------------------------------------------------------------------- 1 | @import url("https://fonts.googleapis.com/css?family=Material+Icons"); 2 | @import "forum.less"; 3 | 4 | .fa { 5 | font:normal normal normal 60px/1 'Material Icons'; 6 | display:inline-block; 7 | transform:translateY(20%); 8 | text-transform:none; 9 | letter-spacing:normal; 10 | word-wrap:normal; 11 | white-space:nowrap; 12 | direction:ltr; 13 | -webkit-font-smoothing:antialiased; 14 | text-rendering:optimizeLegibility; 15 | -moz-osx-font-smoothing:grayscale; 16 | font-feature-settings:'liga' 17 | } -------------------------------------------------------------------------------- /resources/less/forum.less: -------------------------------------------------------------------------------- 1 | /* 2 | Author: Extum 3 | Version: 1.0.0 4 | Contact: ardacebi1@gmail.com 5 | Github: https://github.com/Extum 6 | 7 | */ 8 | 9 | .App-nav .AdminNav .Dropdown-menu>li.active>a .Button-icon { 10 | color: wheat; 11 | font-weight: normal; 12 | } 13 | .App-nav .AdminNav .Dropdown-menu>li.active>a .Button-label { 14 | color: wheat; 15 | font-weight: normal; 16 | } 17 | .App-nav .AdminNav .Dropdown-menu>li.active>a .Button-label, 18 | .App-nav .AdminNav .Dropdown-menu>li.active>a .Button-icon { 19 | color: goldenrod; 20 | font-weight: normal; 21 | } 22 | ::-webkit-scrollbar { 23 | width: 0px; 24 | } 25 | ::-webkit-scrollbar-track { 26 | background: transparent; 27 | } 28 | ::-webkit-scrollbar-thumb { 29 | background: transparent; 30 | } 31 | ::-webkit-scrollbar-thumb:hover { 32 | background: transparent; 33 | } 34 | .App-nav .AdminNav .Button-icon { 35 | float: left; 36 | margin-left: -30px; 37 | font-size: 14px; 38 | margin-top: 0px !important; 39 | } 40 | .Dropdown-toggle.Button.Button--icon.Button--flat { 41 | box-shadow: none; 42 | margin-right: 9px; 43 | margin-top: 1.4px; 44 | } 45 | .SessionDropdown .Dropdown-toggle .Avatar { 46 | margin: 5px 3px -2px -6px; 47 | width: 24px; 48 | height: 24px; 49 | border-radius: 24px; 50 | font-size: 12px; 51 | line-height: 24px; 52 | } 53 | .ExtensionListItem { 54 | width: 145px; 55 | height: 192px; 56 | margin-right: 15px; 57 | margin-bottom: 15px; 58 | box-shadow: 0 2px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24); 59 | border-bottom-left-radius: 2px; 60 | border-bottom-right-radius: 2px; 61 | } 62 | .ExtensionIcon { 63 | width: 145px; 64 | height: auto; 65 | color: #667c99; 66 | display: inline-block; 67 | font-size: 60px; 68 | line-height: 150px; 69 | text-align: center; 70 | border-top-left-radius: 2px; 71 | border-top-right-radius: 2px; 72 | } 73 | .Dropdown-toggle.Button.Button--icon.Button--flat { 74 | box-shadow: none; 75 | } 76 | li.item-changePassword { 77 | margin-right: 3px; 78 | } 79 | li.item-changeEmail { 80 | margin-right: 8px 81 | } 82 | .App-nav .AdminNav .Dropdown-menu > li.active > a .Button-label, 83 | .App-nav .AdminNav .Dropdown-menu > li.active > a .Button-icon { 84 | color: #111; 85 | font-weight: normal; 86 | } 87 | .on.Checkbox--switch .Checkbox-display:before { 88 | left: 25px; 89 | margin-bottom: 7px; 90 | margin-top: -6px; 91 | height: 20px; 92 | width: 20px; 93 | border-radius: 50%; 94 | background: @primary-color; 95 | 96 | box-shadow: 0 3px 4px 0 rgba(0, 0, 0, .14), 0 3px 3px -2px rgba(0, 0, 0, .2), 0 1px 8px 0 rgba(0, 0, 0, .12); 97 | } 98 | .fa-circle:before { 99 | color: #00C851; 100 | } 101 | .UserCard-lastSeen.online .fa-circle { 102 | color: #00C851; 103 | } 104 | .Modal-close { 105 | position: absolute; 106 | right: 0px; 107 | top: 10px; 108 | z-index: 1; 109 | } 110 | .on.Checkbox--switch .Checkbox-display { 111 | background: @primary-color; 112 | 113 | left: 0; 114 | top: 5px; 115 | height: 14px; 116 | width: 36px; 117 | border-radius: 14px; 118 | cursor: pointer; 119 | } 120 | .Checkbox--switch .Checkbox-display:before { 121 | content: ' '; 122 | background: #fff; 123 | border-radius: 11px; 124 | box-shadow: 0 2px 4px rgba(0, 0, 0, 0.35); 125 | left: -8px; 126 | margin-bottom: 7px; 127 | height: 20px; 128 | width: 20px; 129 | border-radius: 50%; 130 | margin-top: -6px; 131 | } 132 | .Checkbox--switch .Checkbox-display { 133 | width: 50px; 134 | height: 28px; 135 | padding: 3px; 136 | position: relative; 137 | background: #e4e8f6; 138 | transition: background-color .2s; 139 | -webkit-transition: background-color .2s; 140 | -moz-transition: background-color .2s; 141 | -ms-transition: background-color .2s; 142 | -o-transition: background-color .2s; 143 | background: rgba(0, 0, 0, 0.26); 144 | left: 0; 145 | top: 5px; 146 | height: 14px; 147 | width: 36px; 148 | border-radius: 14px; 149 | cursor: pointer; 150 | } 151 | .Form--centered .Button { 152 | margin: 0 auto; 153 | text-align: center; 154 | font-size: 15px; 155 | padding: 0px 0px; 156 | height: 35px; 157 | } 158 | li.item-tag1, 159 | li.item-tag2, 160 | li.item-tag3, 161 | li.item-tag4, 162 | li.item-tag5, 163 | li.item-tag6, 164 | li.item-tag7, 165 | li.item-tag8, 166 | li.item-tag9, 167 | li.item-tag10, 168 | li.item-tag11, 169 | li.item-tag12, 170 | li.item-tag13, 171 | li.item-tag14, 172 | li.item-tag15, 173 | li.item-tag16, 174 | li.item-tag17, 175 | li.item-tag18, 176 | li.item-tag19, 177 | li.item-tag20 { 178 | padding-left: 10px; 179 | } 180 | .sideNav .Dropdown--select .Dropdown-menu>.Dropdown-separator { 181 | background: #e5e7f6; 182 | visibility: hidden; 183 | height: 0px; 184 | width: 0px; 185 | } 186 | .sideNav .Dropdown--select .Dropdown-menu > li > a .Button-icon { 187 | float: left; 188 | margin-left: -26px; 189 | margin-top: 0px; 190 | font-size: 19px; 191 | border-radius: 4px; 192 | padding-bottom: 3px; 193 | margin-bottom: 0px; 194 | } 195 | .Form--centered .Button { 196 | margin: 0 auto; 197 | text-align: center; 198 | font-size: 15px; 199 | padding: 0px 0px; 200 | height: 35px; 201 | } 202 | .App-header { 203 | padding: 8px; 204 | height: 52px; 205 | position: absolute; 206 | top: 0; 207 | left: 0; 208 | right: 0; 209 | z-index: 1000; 210 | box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.12); 211 | } 212 | .PermissionGrid tbody .Dropdown .Dropdown-toggle { 213 | width: auto; 214 | display: block; 215 | text-align: center; 216 | float: none; 217 | padding-top: 0px; 218 | margin-top: 1px; 219 | padding-left: 10px; 220 | padding-right: 8px; 221 | box-shadow: none; 222 | } 223 | .box-shadow (@shadow) { 224 | -webkit-box-shadow: @shadow; 225 | 226 | -moz-box-shadow: @shadow; 227 | 228 | box-shadow: @shadow; 229 | 230 | } 231 | @import url('https://fonts.googleapis.com/css?family=Roboto'); 232 | @import url('https://fonts.googleapis.com/css?family=Source+Code+Pro'); 233 | @dfont: "Roboto", 234 | Helvetica, 235 | Arial, 236 | sans-serif; 237 | @shadow3: rgba(0, 238 | 0, 239 | 0, 240 | .2); 241 | // whitestyle 242 | @wscolor: #585858; 243 | @wshcolor: @wscolor + #000000; 244 | // darkstyle 245 | @dscolor: #b7b7b7; 246 | @ducolor: #cecece; 247 | @dshcolor: #d1d1d1; 248 | @default-shadow: 0 2px 3px rgba(0, 249 | 0, 250 | 0, 251 | 0.12), 252 | 0 1px 2px rgba(0, 253 | 0, 254 | 0, 255 | 0.24); 256 | body { 257 | font-family: @dfont !important; 258 | } 259 | .IndexPage-newDiscussion { 260 | box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12); 261 | border: none; 262 | border-radius: 4px; 263 | position: relative; 264 | height: 36px; 265 | margin: 0; 266 | min-width: 64px; 267 | padding: 0 16px; 268 | display: inline-block; 269 | font-family: "Roboto", "Helvetica", "Arial", sans-serif; 270 | font-size: 14px; 271 | font-weight: 500; 272 | text-transform: uppercase; 273 | line-height: 1; 274 | letter-spacing: 0; 275 | overflow: hidden; 276 | will-change: box-shadow; 277 | transition: box-shadow 0.2s cubic-bezier(0.4, 0, 1, 1), background-color 0.2s cubic-bezier(0.4, 0, 0.2, 1), color 0.2s cubic-bezier(0.4, 0, 0.2, 1); 278 | outline: none; 279 | cursor: pointer; 280 | text-decoration: none; 281 | text-align: center; 282 | line-height: 36px; 283 | vertical-align: middle; 284 | } 285 | .IndexPage-newDiscussion:hover { 286 | -webkit-filter: grayscale(20%); 287 | /* Safari 6.0 - 9.0 */ 288 | filter: grayscale(20%); 289 | } 290 | .IndexPage-newDiscussion:focus:not(:active) { 291 | -webkit-filter: grayscale(40%); 292 | /* Safari 6.0 - 9.0 */ 293 | filter: grayscale(40%); 294 | } 295 | .IndexPage-newDiscussion:active { 296 | -webkit-filter: grayscale(40%); 297 | /* Safari 6.0 - 9.0 */ 298 | filter: grayscale(40%); 299 | } 300 | .IndexPage-newDiscussion.IndexPage-newDiscussion--colored { 301 | color: rgb(63, 81, 181); 302 | } 303 | .IndexPage-newDiscussion.IndexPage-newDiscussion--colored:focus:not(:active) { 304 | -webkit-filter: grayscale(40%); 305 | /* Safari 6.0 - 9.0 */ 306 | filter: grayscale(40%); 307 | } 308 | input.IndexPage-newDiscussion[type="submit"] { 309 | -webkit-appearance: none; 310 | } 311 | .IndexPage-newDiscussion--raised:active { 312 | -webkit-filter: grayscale(40%); 313 | /* Safari 6.0 - 9.0 */ 314 | filter: grayscale(40%); 315 | } 316 | .IndexPage-newDiscussion--raised:focus:not(:active) { 317 | box-shadow: 0 0 8px rgba(0, 0, 0, 0.18), 0 8px 16px rgba(0, 0, 0, 0.36); 318 | background-color: rgba(158, 158, 158, 0.40); 319 | } 320 | .IndexPage-newDiscussion--raised.IndexPage-newDiscussion--colored { 321 | background: rgb(63, 81, 181); 322 | color: rgb(255, 255, 255); 323 | } 324 | .IndexPage-newDiscussion--raised.IndexPage-newDiscussion--colored:hover { 325 | background-color: rgb(63, 81, 181); 326 | } 327 | .IndexPage-newDiscussion--raised.IndexPage-newDiscussion--colored:active { 328 | background-color: rgb(63, 81, 181); 329 | } 330 | .IndexPage-newDiscussion--raised.IndexPage-newDiscussion--colored:focus:not(:active) { 331 | background-color: rgb(63, 81, 181); 332 | } 333 | .IndexPage-newDiscussion--raised.IndexPage-newDiscussion--colored .mdl-ripple { 334 | background: rgb(255, 255, 255); 335 | } 336 | .Button--primary { 337 | border-radius: 4px; 338 | } 339 | .Button { 340 | box-shadow: 0 2px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24); 341 | border: none; 342 | border-radius: 4px; 343 | position: relative; 344 | height: 36px; 345 | margin: 0; 346 | min-width: 44px; 347 | padding: 1px 12px; 348 | display: inline-block; 349 | font-family: "Roboto", "Helvetica", "Arial", sans-serif; 350 | font-size: 14px; 351 | font-weight: 500; 352 | text-transform: uppercase; 353 | line-height: 1; 354 | letter-spacing: 0; 355 | overflow: hidden; 356 | will-change: box-shadow; 357 | transition: box-shadow .2s cubic-bezier(.4, 0, 1, 1), background-color .2s cubic-bezier(.4, 0, .2, 1), color .2s cubic-bezier(.4, 0, .2, 1); 358 | outline: none; 359 | cursor: pointer; 360 | text-decoration: none; 361 | text-align: center; 362 | line-height: 36px; 363 | vertical-align: middle; 364 | } 365 | .Button:hover { 366 | -webkit-filter: grayscale(20%); 367 | /* Safari 6.0 - 9.0 */ 368 | filter: grayscale(20%); 369 | } 370 | .Button:focus:not(:active) { 371 | -webkit-filter: grayscale(40%); 372 | /* Safari 6.0 - 9.0 */ 373 | filter: grayscale(40%); 374 | } 375 | .Button:active { 376 | -webkit-filter: grayscale(40%); 377 | /* Safari 6.0 - 9.0 */ 378 | filter: grayscale(40%); 379 | } 380 | .Button.Button--colored { 381 | color: rgb(63, 81, 181); 382 | } 383 | .Button.Button--colored:focus:not(:active) { 384 | -webkit-filter: grayscale(40%); 385 | /* Safari 6.0 - 9.0 */ 386 | filter: grayscale(40%); 387 | } 388 | input.Button[type="submit"] { 389 | -webkit-appearance: none; 390 | } 391 | .Button--raised:active { 392 | -webkit-filter: grayscale(40%); 393 | /* Safari 6.0 - 9.0 */ 394 | filter: grayscale(40%); 395 | } 396 | .Button--raised:focus:not(:active) { 397 | box-shadow: 0 0 8px rgba(0, 0, 0, 0.18), 0 8px 16px rgba(0, 0, 0, 0.36); 398 | background-color: rgba(158, 158, 158, 0.40); 399 | } 400 | .Button--raised.Button--colored { 401 | background: rgb(63, 81, 181); 402 | color: rgb(255, 255, 255); 403 | } 404 | .Button--raised.Button--colored:hover { 405 | background-color: rgb(63, 81, 181); 406 | } 407 | .Button--raised.Button--colored:active { 408 | background-color: rgb(63, 81, 181); 409 | } 410 | .Button--raised.Button--colored:focus:not(:active) { 411 | background-color: rgb(63, 81, 181); 412 | } 413 | .Button--raised.Button--colored .mdl-ripple { 414 | background: rgb(255, 255, 255); 415 | } 416 | .DiscussionPage-nav .ButtonGroup:not(.itemCount1) .Dropdown-toggle { 417 | width: 22%; 418 | margin-top: -38px; 419 | } 420 | .DiscussionPage-nav .ButtonGroup:not(.itemCount1) .Dropdown-toggle { 421 | width: 0%; 422 | margin-top: -36px; 423 | margin-left: 133px; 424 | border-top-right-radius: 2px; 425 | border-bottom-right-radius: 2px; 426 | border-top-left-radius: 0px; 427 | border-bottom-left-radius: 0px; 428 | } 429 | .DiscussionPage-nav .ButtonGroup:not(.itemCount1) .Button:first-child { 430 | width: 85%; 431 | border-top-left-radius: 2px; 432 | border-bottom-left-radius: 2px; 433 | border-bottom-right-radius: 0px; 434 | border-bottom-left-radius: 0px; 435 | } 436 | .DiscussionPage-nav .ButtonGroup:not(.itemCount1) .Button:first-child {} .Button--link { 437 | background: transparent !important; 438 | margin-right: 9px; 439 | } 440 | .DiscussionListItem-controls .Dropdown-toggle { 441 | display: block; 442 | margin-left: 9px; 443 | margin-top: -2px; 444 | } 445 | .Dropdown-menu>li>a .Button-icon, 446 | .Dropdown-menu>li>button .Button-icon, 447 | .Dropdown-menu>li>span .Button-icon { 448 | float: left; 449 | margin-left: -25px; 450 | width: 1.28571429em; 451 | text-align: center; 452 | } 453 | @keyframes pulse { 454 | 0% { 455 | transform: scale(1); 456 | } 457 | 50% { 458 | transform: scale(1.5); 459 | } 460 | 100% { 461 | transform: scale(1); 462 | } 463 | } 464 | .new .NotificationsDropdown-unread { 465 | animation: pulse 1s infinite; 466 | } 467 | .TagIcon { 468 | border-radius: 4px; 469 | width: 18px; 470 | height: 18px; 471 | display: inline-block; 472 | vertical-align: -3px; 473 | margin-left: 1px; 474 | background: #e8ecf3; 475 | -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); 476 | -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); 477 | box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); 478 | font-size: 14px !important 479 | } 480 | .TagIcon { 481 | margin-top: 4px; 482 | } 483 | .sideNav .TagLinkButton .TagIcon { 484 | .box-shadow(0 1px 1px@shadow3); 485 | 486 | height: 18px; 487 | font-size: 14px !important; 488 | } 489 | .Button--icon { 490 | border: none; 491 | border-radius: 4px; 492 | position: relative; 493 | margin-left: 5px; 494 | display: inline-block; 495 | font-family: "Roboto", "Helvetica", "Arial", sans-serif; 496 | font-size: 14px; 497 | font-weight: 500; 498 | text-transform: uppercase; 499 | line-height: 1; 500 | letter-spacing: 0; 501 | overflow: hidden; 502 | will-change: box-shadow; 503 | transition: box-shadow .2s cubic-bezier(.4, 0, 1, 1), background-color .2s cubic-bezier(.4, 0, .2, 1), color .2s cubic-bezier(.4, 0, .2, 1); 504 | outline: none; 505 | cursor: pointer; 506 | text-decoration: none; 507 | text-align: center; 508 | line-height: 36px; 509 | vertical-align: middle; 510 | padding-top: 0px; 511 | } 512 | .Button--icon .Button-icon { 513 | font-size: 16px; 514 | vertical-align: -1px; 515 | margin: 0; 516 | margin-left: -1px; 517 | } 518 | .DiscussionListItem-author { 519 | float: left; 520 | margin-top: 13px; 521 | overflow: hidden 522 | } 523 | .PostUser-avatar { 524 | left: -85px; 525 | position: absolute; 526 | width: 64px; 527 | height: 64px; 528 | border-radius: 64px; 529 | font-size: 32px; 530 | line-height: 64px; 531 | overflow: hidden 532 | } 533 | .Post { 534 | padding-left: 105px; 535 | box-shadow: @default-shadow; 536 | 537 | border-radius: 4px; 538 | } 539 | .NotificationGrid { 540 | position: relative; 541 | border: 1px solid rgba(0, 0, 0, 0.12); 542 | border-collapse: collapse; 543 | white-space: nowrap; 544 | font-size: 13px; 545 | background-color: rgb(255, 255, 255); 546 | box-shadow: @default-shadow; 547 | 548 | margin-bottom: 20px 549 | } 550 | .NotificationGrid thead { 551 | padding-bottom: 3px; 552 | } 553 | .NotificationGrid thead .NotificationGrid__select { 554 | margin-top: 0; 555 | } 556 | .NotificationGrid tbody tr { 557 | position: relative; 558 | height: 48px; 559 | transition-duration: 0.28s; 560 | transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); 561 | transition-property: background-color; 562 | } 563 | .NotificationGrid tbody tr.is-selected { 564 | background-color: #e0e0e0; 565 | } 566 | .NotificationGrid td, 567 | .NotificationGrid th { 568 | border-bottom: none; 569 | padding: 0 18px 12px 18px; 570 | } 571 | .NotificationGrid td:first-of-type, 572 | .NotificationGrid th:first-of-type { 573 | padding-left: 24px; 574 | } 575 | .NotificationGrid td:last-of-type, 576 | .NotificationGrid th:last-of-type { 577 | /* padding-right: 24px; */ 578 | } 579 | .NotificationGrid td { 580 | position: relative; 581 | vertical-align: middle; 582 | height: 48px; 583 | border-top: 1px solid rgba(0, 0, 0, 0.12); 584 | border-bottom: 1px solid rgba(0, 0, 0, 0.12); 585 | padding-top: 12px; 586 | box-sizing: border-box; 587 | } 588 | .NotificationGrid td .NotificationGrid__select { 589 | vertical-align: middle; 590 | } 591 | .NotificationGrid th { 592 | position: relative; 593 | vertical-align: bottom; 594 | text-overflow: ellipsis; 595 | font-size: 14px; 596 | font-weight: bold; 597 | line-height: 24px; 598 | letter-spacing: 0; 599 | height: 48px; 600 | font-size: 12px; 601 | color: rgba(0, 0, 0, 0.54); 602 | padding-bottom: 8px; 603 | box-sizing: border-box; 604 | } 605 | .NotificationGrid th.NotificationGrid__header--sorted-ascending, 606 | .NotificationGrid th.NotificationGrid__header--sorted-descending { 607 | color: rgba(0, 0, 0, 0.87); 608 | } 609 | .NotificationGrid th.NotificationGrid__header--sorted-ascending:before, 610 | .NotificationGrid th.NotificationGrid__header--sorted-descending:before { 611 | font-family: 'Material Icons'; 612 | font-weight: normal; 613 | font-style: normal; 614 | font-size: 24px; 615 | line-height: 1; 616 | letter-spacing: normal; 617 | text-transform: none; 618 | display: inline-block; 619 | word-wrap: normal; 620 | -moz-font-feature-settings: 'liga'; 621 | font-feature-settings: 'liga'; 622 | -webkit-font-feature-settings: 'liga'; 623 | -webkit-font-smoothing: antialiased; 624 | font-size: 16px; 625 | content: "\e5d8"; 626 | margin-right: 5px; 627 | vertical-align: sub; 628 | } 629 | .NotificationGrid th.NotificationGrid__header--sorted-ascending:hover, 630 | .NotificationGrid th.NotificationGrid__header--sorted-descending:hover { 631 | cursor: pointer; 632 | } 633 | .NotificationGrid th.NotificationGrid__header--sorted-ascending:hover:before, 634 | .NotificationGrid th.NotificationGrid__header--sorted-descending:hover:before { 635 | color: rgba(0, 0, 0, 0.26); 636 | } 637 | .NotificationGrid th.NotificationGrid__header--sorted-descending:before { 638 | content: "\e5db"; 639 | } 640 | .NotificationGrid__select { 641 | width: 16px; 642 | } 643 | .NotificationGrid__cell--non-numeric.NotificationGrid__cell--non-numeric { 644 | text-align: left; 645 | } 646 | .CommentPost:not(.Post--hidden), 647 | .ReplyPlaceholder { 648 | min-height: 104px; 649 | margin-bottom: 15px; 650 | border-radius: 4px; 651 | } 652 | .DiscussionList-discussions { 653 | list-style-type: none; 654 | position: relative; 655 | box-shadow: 0 2px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24); 656 | transition: all .3s cubic-bezier(.25, .8, .25, 1); 657 | padding-left: 15px; 658 | margin-top: 20px; 659 | border-radius: 4px 660 | } 661 | .NotificationGrid-checkbox.highlighted .Checkbox:not(.disabled), 662 | .NotificationGrid-checkbox .Checkbox:hover:not(.disabled) { 663 | background: whitesmoke 664 | } 665 | .PostMention, 666 | .UserMention { 667 | background: #e4e8f6; 668 | color: #667199; 669 | border-radius: 4px; 670 | padding: 2px 5px; 671 | border: 0 !important; 672 | box-shadow: 0 2px 1px rgba(0, 0, 0, 0.16), 0 2px 1px rgba(0, 0, 0, 0.23); 673 | transition: all 0.3s cubic-bezier(.25, .8, .25, 1); 674 | } 675 | .FormControl { 676 | border: none; 677 | border-bottom: 2px solid rgba(0, 0, 0, 0.12); 678 | display: block; 679 | font-size: 16px; 680 | font-family: "Helvetica", "Arial", sans-serif; 681 | margin: 0; 682 | width: 100%; 683 | background: none; 684 | text-align: left; 685 | color: inherit; 686 | } 687 | .SocialFormControl { 688 | border: none; 689 | border-bottom: 2px solid rgba(0, 0, 0, 0.12); 690 | display: block; 691 | font-size: 16px; 692 | font-family: "Helvetica", "Arial", sans-serif; 693 | margin: 0; 694 | padding: 4px 0; 695 | width: 100%; 696 | background: none; 697 | text-align: left; 698 | color: inherit; 699 | } 700 | .NotificationList-header { 701 | padding: 12px 15px; 702 | box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.12); 703 | margin-bottom: 5px; 704 | } 705 | .RecipientsLabel .RecipientLabel:last-child { 706 | border-radius: 0 4px 4px 0; 707 | margin-right: 6px; 708 | } 709 | .Button--link { 710 | background: transparent !important; 711 | box-shadow: none; 712 | border: 0; 713 | text-transform: unset 714 | } 715 | .Button--link:hover { 716 | -webkit-filter: grayscale(20%); 717 | /* Safari 6.0 - 9.0 */ 718 | filter: grayscale(20%); 719 | } 720 | .Button--link:active, 721 | .Button--link.active, 722 | .Button--link:focus, 723 | .Button--link.focus, 724 | .open>.Button--link.Dropdown-toggle { 725 | -webkit-filter: grayscale(40%); 726 | /* Safari 6.0 - 9.0 */ 727 | filter: grayscale(40%); 728 | } 729 | .on.Checkbox--switch .Checkbox-display:before { 730 | left: 25px; 731 | margin-bottom: 7px; 732 | margin-top: -6px; 733 | height: 20px; 734 | width: 20px; 735 | border-radius: 50%; 736 | } 737 | .on.Checkbox--switch .Checkbox-display { 738 | background: lighten(@primary-color, 30%); 739 | left: 0; 740 | top: 5px; 741 | height: 14px; 742 | width: 36px; 743 | border-radius: 14px; 744 | cursor: pointer; 745 | } 746 | .Checkbox--switch .Checkbox-display:before { 747 | content: ' '; 748 | background: #fff; 749 | border-radius: 11px; 750 | box-shadow: 0 2px 4px rgba(0, 0, 0, 0.35); 751 | left: -4px; 752 | margin-bottom: 7px; 753 | height: 20px; 754 | width: 20px; 755 | border-radius: 50%; 756 | margin-top: -6px; 757 | } 758 | .Checkbox--switch .Checkbox-display { 759 | width: 50px; 760 | height: 28px; 761 | padding: 3px; 762 | position: relative; 763 | border-radius: 14px; 764 | background: #e4e8f6; 765 | transition: background-color .2s; 766 | -webkit-transition: background-color .2s; 767 | -moz-transition: background-color .2s; 768 | -ms-transition: background-color .2s; 769 | -o-transition: background-color .2s; 770 | background: rgba(0, 0, 0, .26); 771 | left: 0; 772 | top: 5px; 773 | height: 14px; 774 | width: 36px; 775 | border-radius: 14px; 776 | cursor: pointer; 777 | } 778 | .TagCloud a { 779 | margin-bottom: 5px; 780 | border-radius: 11px; 781 | } 782 | .Group { 783 | width: 0px; 784 | display: inline-block; 785 | text-align: center; 786 | color: #111; 787 | font-weight: bold; 788 | padding-left: 0; 789 | padding-right: 0; 790 | padding-bottom: 10px; 791 | padding-top: 0px; 792 | margin-right: 4px; 793 | box-shadow: none; 794 | border-radius: 4px; 795 | } 796 | .LoadingIndicator>.spinner { 797 | display: none; 798 | margin-top: 10px; 799 | } 800 | .LoadingIndicator { 801 | width: 100%; 802 | display: flex; 803 | justify-content: center; 804 | margin-top: 10px; 805 | } 806 | .LoadingIndicator:after { 807 | content: " "; 808 | display: table; 809 | width: 40px; 810 | height: 40px; 811 | border: 4px solid white; 812 | border-top: 4px solid@primary-color; 813 | 814 | border-left: 4px solid@primary-color; 815 | 816 | border-radius: 100%; 817 | animation: 2s linear infinite loading; 818 | border-collapse: separate; 819 | margin-top: 10px; 820 | } 821 | .Checkbox-display .LoadingIndicator:after { 822 | width: 20px; 823 | height: 20px; 824 | } 825 | @keyframes loading { 826 | 0% { 827 | transform: rotate(0deg); 828 | } 829 | 50% { 830 | transform: rotate(360deg); 831 | } 832 | 100% { 833 | transform: rotate(720deg); 834 | } 835 | } 836 | .ReplyPlaceholder { 837 | border: none; 838 | transition: all 0.3s cubic-bezier(.25, .8, .25, 1); 839 | border-radius: 4px; 840 | } 841 | /* Material Icons Beginning */ 842 | 843 | .fa { 844 | font: normal normal normal 16px/1'Material Icons'; 845 | display: inline-block; 846 | transform: translateY(10%); 847 | text-transform: none; 848 | letter-spacing: normal; 849 | word-wrap: normal; 850 | white-space: nowrap; 851 | direction: ltr; 852 | -webkit-font-smoothing: antialiased; 853 | text-rendering: optimizeLegibility; 854 | -moz-osx-font-smoothing: grayscale; 855 | font-feature-settings: 'liga'; 856 | } 857 | .fa-comment-o:before { 858 | content: "message"; 859 | } 860 | .fa-navicon:before, 861 | .fa-reorder:before, 862 | .fa-bars:before { 863 | content: "format_list_bulleted" 864 | } 865 | .fa-at:before { 866 | content: "alternate_email" 867 | } 868 | .fa-gear:before, 869 | .fa-cog:before { 870 | content: "settings" 871 | } 872 | .fa-comments-o:before { 873 | content: "forum" 874 | } 875 | .fa-star:before { 876 | content: "star" 877 | } 878 | .fa-star-o:before { 879 | content: "star_border" 880 | } 881 | .fa-flag:before { 882 | content: "flag" 883 | } 884 | .fa-warning:before, 885 | .fa-exclamation-triangle:before { 886 | content: "pan_tool" 887 | } 888 | .fa-trash-o:before { 889 | content: "delete" 890 | } 891 | .fa-sign-out:before { 892 | content: "directions_run" 893 | } 894 | .fa-wrench:before { 895 | content: "build" 896 | } 897 | .fa-user:before { 898 | content: "account_circle" 899 | } 900 | .fa-th-large:before { 901 | content: "label" 902 | } 903 | .fa-pencil::before { 904 | content: "edit"; 905 | font-size: 19px; 906 | } 907 | .fa-code-fork:before { 908 | content: "call_split" 909 | } 910 | .fa-envelope-o:before { 911 | content: "email" 912 | } 913 | .fa-thumbs-o-up:before { 914 | content: "thumb_up" 915 | } 916 | .fa-thumbs-o-down:before { 917 | content: "thumb_down" 918 | } 919 | .fa-lock:before { 920 | content: "lock" 921 | } 922 | .fa-mail-reply:before, 923 | .fa-reply:before { 924 | content: "reply" 925 | } 926 | .fa-check:before { 927 | content: "check" 928 | } 929 | .fa-search:before { 930 | content: "search" 931 | } 932 | .fa-remove:before, 933 | .fa-close:before, 934 | .fa-times:before { 935 | content: "close" 936 | } 937 | .fa-bar-chart-o:before, 938 | .fa-bar-chart:before { 939 | content: "dashboard" 940 | } 941 | .fa-envelope:before { 942 | content: "email" 943 | } 944 | .fa-key:before { 945 | content: "vpn_key" 946 | } 947 | .fa-puzzle-piece:before { 948 | content: "extension" 949 | } 950 | .fa-paint-brush:before { 951 | content: "format_paint" 952 | } 953 | .fa-file-text-o:before { 954 | content: "insert_drive_file" 955 | } 956 | .fa-tags:before { 957 | content: "label" 958 | } 959 | .fa-eye:before { 960 | content: "remove_red_eye" 961 | } 962 | .fa-trash:before { 963 | content: "delete" 964 | } 965 | .fa-clock-o:before { 966 | content: "access_time" 967 | } 968 | .fa-chevron-left:before { 969 | content: "keyboard_arrow_left" 970 | } 971 | .fa-flash:before, 972 | .fa-bolt:before { 973 | content: "flash_on" 974 | } 975 | .fa-plus:before { 976 | content: "add" 977 | } 978 | .fa-map-o:before { 979 | content: "map" 980 | } 981 | .fa-edit:before, 982 | .fa-pencil-square-o:before { 983 | content: "border_color" 984 | } 985 | .fa-user-plus:before { 986 | content: "group_add" 987 | } 988 | .fa-group:before, 989 | .fa-users:before { 990 | content: "group" 991 | } 992 | .fa-i-cursor:before { 993 | content: "format_size" 994 | } 995 | .fa-thumb-tack:before { 996 | content: "place" 997 | } 998 | .fa-ban:before { 999 | content: "not_interested" 1000 | } 1001 | .fa-globe:before { 1002 | content: "language" 1003 | } 1004 | .Search-input:before { 1005 | display: inline-block; 1006 | font: normal normal normal 16px/1'Material Icons'; 1007 | font-size: inherit; 1008 | text-rendering: auto; 1009 | -webkit-font-smoothing: antialiased; 1010 | -moz-osx-font-smoothing: grayscale; 1011 | content: "search"; 1012 | float: left; 1013 | margin-right: -36px; 1014 | width: 36px; 1015 | font-size: 20px; 1016 | text-align: center; 1017 | position: relative; 1018 | padding: 0px 0; 1019 | line-height: 1.5; 1020 | pointer-events: none 1021 | } 1022 | .fa-ellipsis-v:before { 1023 | content: "more_vert" 1024 | } 1025 | .fa-drivers-license-o:before, 1026 | .fa-id-card-o:before { 1027 | content: "perm_identity" 1028 | } 1029 | .unread .DiscussionListItem-count:before { 1030 | content: "chat_bubble" 1031 | } 1032 | .fa-photo:before, 1033 | .fa-image:before, 1034 | .fa-picture-o:before { 1035 | content: "photo" 1036 | } 1037 | .fa-line-chart:before { 1038 | content: "timeline" 1039 | } 1040 | .fa-film:before { 1041 | content: "movie" 1042 | } 1043 | .fa-bold:before { 1044 | content: "format_bold" 1045 | } 1046 | .fa-minus:before { 1047 | content: "minimize"; 1048 | } 1049 | .Composer-controls .fa-minus:before { 1050 | content: "minimize"; 1051 | } 1052 | .fa-minus-square:before { 1053 | content: "minimize" 1054 | } 1055 | .fa-address-book-o:before { 1056 | content: "contacts" 1057 | } 1058 | .fa-money:before { 1059 | content: "money" 1060 | } 1061 | .fa-crop:before { 1062 | content: "crop" 1063 | } 1064 | .fa-language:before { 1065 | content: "language" 1066 | } 1067 | .fa-thumbs-up:before { 1068 | content: "thumb_up" 1069 | } 1070 | .fa-angle-double-right:before { 1071 | content: "subdirectory_arrow_right" 1072 | } 1073 | .fa-pencil-square:before { 1074 | content: "edit_location" 1075 | } 1076 | .fa-sticky-note:before { 1077 | content: "note" 1078 | } 1079 | .fa-refresh:before { 1080 | content: "refresh" 1081 | } 1082 | .fa-minus:before { 1083 | content: "remove" 1084 | } 1085 | .fa-expand:before { 1086 | content: "fullscreen" 1087 | } 1088 | .fa-compress:before { 1089 | content: "fullscreen_exit" 1090 | } 1091 | .fa-ellipsis-h:before { 1092 | content: "more_horiz"; 1093 | } 1094 | .fa-commenting-o:before { 1095 | content: "comment"; 1096 | } 1097 | .fa-play:before { 1098 | content: "play_arrow" 1099 | } 1100 | .fa-file-photo-o:before, 1101 | .fa-file-picture-o:before, 1102 | .fa-file-image-o:before { 1103 | content: "collections" 1104 | } 1105 | .fa-file-movie-o:before, 1106 | .fa-file-video-o:before { 1107 | content: "video_library" 1108 | } 1109 | .fa-times-rectangle-o:before, 1110 | .fa-window-close-o:before { 1111 | content: "not_interested" 1112 | } 1113 | .fa-vcard:before, 1114 | .fa-address-card:before { 1115 | content: "video_label" 1116 | } 1117 | .fa-vcard-o:before, 1118 | .fa-address-card-o:before { 1119 | content: "video_label" 1120 | } 1121 | .fa-fa:before, 1122 | .fa-font-awesome:before { 1123 | content: "flag" 1124 | } 1125 | .fa-italic:before { 1126 | content: "format_italic" 1127 | } 1128 | .fa-paste:before, 1129 | .fa-clipboard:before { 1130 | content: "wallpaper" 1131 | } 1132 | .fa-font:before { 1133 | content: "font_download" 1134 | } 1135 | .fa-ge:before, 1136 | .fa-empire:before { 1137 | content: "settings" 1138 | } 1139 | .fa-table:before { 1140 | content: "table_chart" 1141 | } 1142 | .fa-video-camera:before { 1143 | content: "videocamera" 1144 | } 1145 | .fa-comments:before { 1146 | content: "forum" 1147 | } 1148 | .fa-circle-o:before { 1149 | content: "trip_origin" 1150 | } 1151 | .fa-columns:before { 1152 | content: "view_column" 1153 | } 1154 | .fa-dashboard:before, 1155 | .fa-tachometer:before { 1156 | content: "av_timer" 1157 | } 1158 | .fa-code:before { 1159 | content: "code" 1160 | } 1161 | .fa-toggle-up:before, 1162 | .fa-caret-square-o-up:before { 1163 | content: "arrow_drop_up" 1164 | } 1165 | .fa-caret-down:before { 1166 | content: "arrow_drop_down" 1167 | } 1168 | .fa-filter:before { 1169 | content: "filter_list" 1170 | } 1171 | .fa-shopping-bag:before { 1172 | content: "shopping_cart" 1173 | } 1174 | .fa-retweet:before { 1175 | content: "autorenew" 1176 | } 1177 | .fa-home:before { 1178 | content: "home" 1179 | } 1180 | .fa-map-marker:before { 1181 | content: "place" 1182 | } 1183 | .fa-exchange:before { 1184 | content: "compare_arrows" 1185 | } 1186 | .fa-eye-slash:before { 1187 | content: "remove_red_eye" 1188 | } 1189 | .fa-user-circle:before { 1190 | content: "account_circle" 1191 | } 1192 | .fa-check-circle-o:before { 1193 | content: "check_circle" 1194 | } 1195 | .fa-smile-o:before { 1196 | content: "tag_faces" 1197 | } 1198 | .fa-mail-reply-all:before, 1199 | .fa-reply-all:before { 1200 | content: "reply_all" 1201 | } 1202 | .fa-share-alt:before { 1203 | content: "share" 1204 | } 1205 | .fa-shield:before { 1206 | content: "security" 1207 | } 1208 | .fa-sitemap:before { 1209 | content: "line_style" 1210 | } 1211 | .fa-exclamation:before { 1212 | content: "warning" 1213 | } 1214 | .fa-feed:before, 1215 | .fa-rss:before { 1216 | content: "rss_feed" 1217 | } 1218 | .fa-circle:before { 1219 | content: "lens" 1220 | } 1221 | .fa-angle-double-up:before { 1222 | content: "arrow_upward" 1223 | } 1224 | .fa-angle-double-down:before { 1225 | content: "arrow_downward" 1226 | } 1227 | .fa-plus-circle:before { 1228 | content: "add_circle" 1229 | } 1230 | .fa-tag:before { 1231 | content: "label" 1232 | } 1233 | .fa-bullseye:before { 1234 | content: "trip_origin" 1235 | } 1236 | .PostMention::before { 1237 | content: "alternate_email"; 1238 | } 1239 | /* Material Icons Ending */ 1240 | 1241 | /* Font Awesome Icons Beginning */ 1242 | 1243 | .fa-twitter:before { 1244 | display: inline-block; 1245 | font: normal normal normal 14px/1 FontAwesome; 1246 | font-size: inherit; 1247 | text-rendering: auto; 1248 | -webkit-font-smoothing: antialiased; 1249 | -moz-osx-font-smoothing: grayscale; 1250 | content: "\f099" 1251 | } 1252 | .fa-youtube-play:before { 1253 | display: inline-block; 1254 | font: normal normal normal 14px/1 FontAwesome; 1255 | font-size: inherit; 1256 | text-rendering: auto; 1257 | -webkit-font-smoothing: antialiased; 1258 | -moz-osx-font-smoothing: grayscale; 1259 | content: "\f16a" 1260 | } 1261 | .fa-github:before { 1262 | display: inline-block; 1263 | font: normal normal normal 14px/1 FontAwesome; 1264 | font-size: inherit; 1265 | text-rendering: auto; 1266 | -webkit-font-smoothing: antialiased; 1267 | -moz-osx-font-smoothing: grayscale; 1268 | content: "\f09b" 1269 | } 1270 | .fa-facebook-f:before, 1271 | .fa-facebook:before { 1272 | display: inline-block; 1273 | font: normal normal normal 14px/1 FontAwesome; 1274 | font-size: inherit; 1275 | text-rendering: auto; 1276 | -webkit-font-smoothing: antialiased; 1277 | -moz-osx-font-smoothing: grayscale; 1278 | content: "\f09a" 1279 | } 1280 | /* Font Awesome Icons Ending */ 1281 | 1282 | .TagsLabel .TagLabel { 1283 | border-radius: 12px; 1284 | margin-right: 3px; 1285 | } 1286 | .TagsLabel .TagLabel:first-child { 1287 | border-radius: 4px 0 0 4px; 1288 | border-radius: 12px; 1289 | margin-right: 3px; 1290 | } 1291 | .TagsLabel .TagLabel:last-child { 1292 | border-radius: 0 4px 4px 0; 1293 | border-radius: 12px; 1294 | } 1295 | .TagsLabel .TagLabel:first-child:last-child { 1296 | border-radius: 4px; 1297 | border-radius: 12px; 1298 | } 1299 | .DiscussionHero .TagsLabel .TagLabel { 1300 | background: transparent; 1301 | border-radius: 12px !important; 1302 | font-size: 14px 1303 | } 1304 | .DiscussionHero .TagsLabel .TagLabel { 1305 | background: transparent; 1306 | border-radius: 12px !important; 1307 | font-size: 14px 1308 | } 1309 | /* Composer Properties Beginning */ 1310 | 1311 | .Composer.minimized { 1312 | height: 46px; 1313 | cursor: pointer; 1314 | background: #f6f1e4; 1315 | border-radius: 4px; 1316 | } 1317 | .Composer { 1318 | border-radius: 4px; 1319 | background: rgba(255, 255, 255, 0.95); 1320 | transform: translateZ(0); 1321 | position: relative; 1322 | height: 300px; 1323 | -webkit-transition: background 0.2s, box-shadow 0.2s; 1324 | -o-transition: background 0.2s, box-shadow 0.2s; 1325 | transition: background 0.2s, box-shadow 0.2s 1326 | } 1327 | .ComposerBody-avatar { 1328 | float: left; 1329 | width: 64px; 1330 | height: 64px; 1331 | border-radius: 64px; 1332 | font-size: 32px; 1333 | line-height: 64px; 1334 | left: -85px; 1335 | overflow: hidden 1336 | } 1337 | /* Composer Properties End */ 1338 | 1339 | .Search-results { 1340 | max-height: 70vh; 1341 | overflow: auto; 1342 | left: auto; 1343 | right: 0; 1344 | border-radius: 4px; 1345 | } 1346 | .EventPost, 1347 | .EventPost a { 1348 | color: #998a66; 1349 | margin-bottom: 15px; 1350 | } 1351 | .TagLabel.colored .TagLabel-text { 1352 | color: #fff !important; 1353 | } 1354 | .TagsLabel .TagLabel { 1355 | border-radius: 0; 1356 | padding-top: 2px; 1357 | padding-bottom: 2px; 1358 | } 1359 | .TagLabel.untagged { 1360 | background: transparent; 1361 | border: 1px dotted #998a66; 1362 | border-radius: 18px; 1363 | color: #998a66; 1364 | padding-top: 2px; 1365 | padding-bottom: 2px; 1366 | } 1367 | .RecipientLabel.none { 1368 | background: transparent; 1369 | border: 1px dotted #998a66; 1370 | color: #998a66; 1371 | border-radius: 18px; 1372 | padding-top: 2px; 1373 | padding-bottom: 2px; 1374 | } 1375 | .Dropdown-menu { 1376 | position: absolute; 1377 | top: 100%; 1378 | right: 0%; 1379 | z-index: 1030; 1380 | width: 160px; 1381 | padding: 8px 0; 1382 | margin: 7px 0; 1383 | background: #fff; 1384 | border-radius: 4px; 1385 | -webkit-box-shadow: 0 2px 6px rgba(0, 0, 0, 0.35); 1386 | -moz-box-shadow: 0 2px 6px rgba(0, 0, 0, 0.35); 1387 | box-shadow: 0 2px 6px rgba(0, 0, 0, 0.35); 1388 | list-style: none; 1389 | text-align: left; 1390 | color: #111; 1391 | font-size: 13px; 1392 | line-height: 1.7; 1393 | } 1394 | .Button--text { 1395 | box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12); 1396 | border: none; 1397 | border-radius: 4px; 1398 | position: relative; 1399 | height: 36px; 1400 | margin: 0; 1401 | min-width: 44px; 1402 | padding: 0 16px; 1403 | display: inline-block; 1404 | font-family: "Roboto", "Helvetica", "Arial", sans-serif; 1405 | font-size: 14px; 1406 | font-weight: 500; 1407 | text-transform: uppercase; 1408 | line-height: 1; 1409 | letter-spacing: 0; 1410 | overflow: hidden; 1411 | will-change: box-shadow; 1412 | transition: box-shadow .2s cubic-bezier(.4, 0, 1, 1), background-color .2s cubic-bezier(.4, 0, .2, 1), color .2s cubic-bezier(.4, 0, .2, 1); 1413 | outline: none; 1414 | cursor: pointer; 1415 | text-decoration: none; 1416 | text-align: center; 1417 | line-height: 36px; 1418 | vertical-align: middle; 1419 | background-color: transparent; 1420 | } 1421 | .Button--text:hover { 1422 | -webkit-filter: grayscale(20%); 1423 | filter: grayscale(20%); 1424 | } 1425 | .Button--text:active, 1426 | .Button--text.active, 1427 | .open>.Button--text.Dropdown-toggle { 1428 | -webkit-filter: grayscale(40%); 1429 | filter: grayscale(40%); 1430 | } 1431 | .item-changePassword { 1432 | padding-right: 5px; 1433 | } 1434 | .ExtensionListItem { 1435 | width: 120px; 1436 | height: 160px; 1437 | margin-right: 15px; 1438 | margin-bottom: 15px; 1439 | box-shadow: @default-shadow; 1440 | 1441 | } 1442 | .ExtensionIcon { 1443 | width: 120px; 1444 | height: 120px; 1445 | background: #e4ecf6; 1446 | border-radius: 0; 1447 | color: #667c99; 1448 | display: inline-block; 1449 | font-size: 60px; 1450 | line-height: 120px; 1451 | text-align: center 1452 | } 1453 | .ExtensionListItem.disabled .ExtensionListItem-title { 1454 | opacity: 0.5; 1455 | color: #667c99; 1456 | padding-left: 2px; 1457 | } 1458 | .ExtensionListItem-title { 1459 | display: block; 1460 | font-size: 13px; 1461 | font-weight: bold; 1462 | margin-top: 3px; 1463 | white-space: nowrap; 1464 | overflow: hidden; 1465 | text-overflow: ellipsis; 1466 | cursor: pointer; 1467 | padding-left: 4px 1468 | } 1469 | .ExtensionListItem-version { 1470 | color: #aaa; 1471 | font-size: 11px; 1472 | font-weight: normal; 1473 | padding-left: 4px 1474 | } 1475 | .ExtensionIcon:hover { 1476 | background-color: #000; 1477 | opacity: 0.5; 1478 | transition: all .3s cubic-bezier(.25, .8, .25, 1); 1479 | } 1480 | li.item-tag1, 1481 | li.item-tag2, 1482 | li.item-tag3, 1483 | li.item-tag4, 1484 | li.item-tag5, 1485 | li.item-tag6, 1486 | li.item-tag7, 1487 | li.item-tag8, 1488 | li.item-tag9, 1489 | li.item-tag10, 1490 | li.item-tag11, 1491 | li.item-tag12, 1492 | li.item-tag13, 1493 | li.item-tag14, 1494 | li.item-tag15, 1495 | li.item-tag16, 1496 | li.item-tag17, 1497 | li.item-tag18, 1498 | li.item-tag19, 1499 | li.item-tag20 { 1500 | padding-left: 4px; 1501 | } 1502 | .AdminLinkButton-description { 1503 | margin-left: 6px; 1504 | display: none 1505 | } 1506 | .App-nav .AdminNav .Dropdown-menu>li>a { 1507 | padding: 15px 15px 15px 39px; 1508 | display: block; 1509 | text-decoration: none; 1510 | white-space: normal 1511 | } 1512 | .sideNav .Dropdown--select .Dropdown-menu>li>a .Button-icon { 1513 | float: left; 1514 | margin-left: -26px; 1515 | margin-top: 1px; 1516 | font-size: 19px; 1517 | border-radius: 4px; 1518 | padding-bottom: 3px; 1519 | margin-bottom: 0px; 1520 | } 1521 | .Badge, 1522 | .Badge .Badge-icon { 1523 | font-size: 16px; 1524 | padding-top: .3px; 1525 | padding-right: .2px; 1526 | } 1527 | /* Fixes bug with hovering hover discussions list. */ 1528 | 1529 | .DiscussionList-discussions { 1530 | list-style-type: none; 1531 | position: relative; 1532 | box-shadow: 0 2px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24); 1533 | transition: all .3s cubic-bezier(.25, .8, .25, 1); 1534 | padding-left: 15px; 1535 | margin-top: 20px; 1536 | border-radius: 4px; 1537 | padding-right: 15px; 1538 | } -------------------------------------------------------------------------------- /resources/locale/en.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Extum/material/018a2e149b496bc804c1d97730ba784295fd6821/resources/locale/en.yml -------------------------------------------------------------------------------- /src/Listeners/AddClientAssets.php: -------------------------------------------------------------------------------- 1 | listen(ConfigureWebApp::class, [$this, 'configureWebApp']); 26 | $events->listen(ConfigureLocales::class, [$this, 'addLocales']); 27 | } 28 | 29 | /** 30 | * Modifies the client view for forum/admin. 31 | * 32 | * @param ConfigureWebApp $event 33 | */ 34 | public function configureWebApp(ConfigureWebApp $event) 35 | { 36 | if ($event->isAdmin()) { 37 | $event->addAssets([ 38 | __DIR__.'/../../resources/less/admin.less', 39 | ]); 40 | } 41 | if ($event->isForum()) { 42 | $event->addAssets([ 43 | __DIR__.'/../../resources/less/app.less', 44 | ]); 45 | } 46 | 47 | $view = $event->view; 48 | 49 | $view->addHeadString(""); 50 | $view->addHeadString(""); 51 | $view->addHeadString(""); 52 | $view->addHeadString(""); 53 | $view->addHeadString(""); 54 | $view->addHeadString(""); 55 | $view->addHeadString(""); 56 | $view->addFootString(""); 57 | } 58 | 59 | /** 60 | * Provides i18n files. 61 | * 62 | * @param ConfigureLocales $event 63 | */ 64 | public function addLocales(ConfigureLocales $event) 65 | { 66 | foreach (new DirectoryIterator(__DIR__.'/../../resources/locale') as $file) { 67 | if ($file->isFile() && in_array($file->getExtension(), ['yml', 'yaml'])) { 68 | $event->locales->addTranslations($file->getBasename('.'.$file->getExtension()), $file->getPathname()); 69 | } 70 | } 71 | } 72 | } 73 | --------------------------------------------------------------------------------