Add CAcert theme based on fomantic-ui-less

This commit is contained in:
Jan Dittberner 2020-05-31 18:06:14 +02:00
parent d2ac0c2935
commit 663e2de89a
11 changed files with 9818 additions and 0 deletions

3
.gitignore vendored Normal file
View file

@ -0,0 +1,3 @@
/*.log
/dist/
/node_modules/

View file

@ -0,0 +1,70 @@
/*
███████╗███████╗███╗ ███╗ █████╗ ███╗ ██╗████████╗██╗ ██████╗ ██╗ ██╗██╗
██╔════╝██╔════╝████╗ ████║██╔══██╗████╗ ██║╚══██╔══╝██║██╔════╝ ██║ ██║██║
███████╗█████╗ ██╔████╔██║███████║██╔██╗ ██║ ██║ ██║██║ ██║ ██║██║
╚════██║██╔══╝ ██║╚██╔╝██║██╔══██║██║╚██╗██║ ██║ ██║██║ ██║ ██║██║
███████║███████╗██║ ╚═╝ ██║██║ ██║██║ ╚████║ ██║ ██║╚██████╗ ╚██████╔╝██║
╚══════╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝
Import this file into your LESS project to use Fomantic-UI without build tools
*/
/* Global */
& { @import "~fomantic-ui-less/definitions/globals/reset"; }
& { @import "~fomantic-ui-less/definitions/globals/site"; }
/* Elements */
& { @import "~fomantic-ui-less/definitions/elements/button"; }
& { @import "~fomantic-ui-less/definitions/elements/container"; }
& { @import "~fomantic-ui-less/definitions/elements/divider"; }
& { @import "~fomantic-ui-less/definitions/elements/header"; }
& { @import "~fomantic-ui-less/definitions/elements/icon"; }
& { @import "~fomantic-ui-less/definitions/elements/image"; }
& { @import "~fomantic-ui-less/definitions/elements/input"; }
& { @import "~fomantic-ui-less/definitions/elements/label"; }
& { @import "~fomantic-ui-less/definitions/elements/list"; }
// & { @import "~fomantic-ui-less/definitions/elements/loader"; }
// & { @import "~fomantic-ui-less/definitions/elements/placeholder"; }
// & { @import "~fomantic-ui-less/definitions/elements/rail"; }
// & { @import "~fomantic-ui-less/definitions/elements/reveal"; }
& { @import "~fomantic-ui-less/definitions/elements/segment"; }
& { @import "~fomantic-ui-less/definitions/elements/step"; }
& { @import "~fomantic-ui-less/definitions/elements/text"; }
/* Collections */
& { @import "~fomantic-ui-less/definitions/collections/breadcrumb"; }
& { @import "~fomantic-ui-less/definitions/collections/form"; }
& { @import "~fomantic-ui-less/definitions/collections/grid"; }
& { @import "~fomantic-ui-less/definitions/collections/menu"; }
& { @import "~fomantic-ui-less/definitions/collections/message"; }
& { @import "~fomantic-ui-less/definitions/collections/table"; }
/* Views */
//& { @import "~fomantic-ui-less/definitions/views/ad"; }
& { @import "~fomantic-ui-less/definitions/views/card"; }
//& { @import "~fomantic-ui-less/definitions/views/comment"; }
//& { @import "~fomantic-ui-less/definitions/views/feed"; }
& { @import "~fomantic-ui-less/definitions/views/item"; }
& { @import "~fomantic-ui-less/definitions/views/statistic"; }
/* Modules */
// & { @import "~fomantic-ui-less/definitions/modules/accordion"; }
// & { @import "~fomantic-ui-less/definitions/modules/calendar"; }
& { @import "~fomantic-ui-less/definitions/modules/checkbox"; }
& { @import "~fomantic-ui-less/definitions/modules/dimmer"; }
& { @import "~fomantic-ui-less/definitions/modules/dropdown"; }
// & { @import "~fomantic-ui-less/definitions/modules/embed"; }
& { @import "~fomantic-ui-less/definitions/modules/modal"; }
// & { @import "~fomantic-ui-less/definitions/modules/nag"; }
& { @import "~fomantic-ui-less/definitions/modules/popup"; }
& { @import "~fomantic-ui-less/definitions/modules/progress"; }
// & { @import "~fomantic-ui-less/definitions/modules/slider"; }
// & { @import "~fomantic-ui-less/definitions/modules/rating"; }
// & { @import "~fomantic-ui-less/definitions/modules/search"; }
// & { @import "~fomantic-ui-less/definitions/modules/shape"; }
// & { @import "~fomantic-ui-less/definitions/modules/sidebar"; }
// & { @import "~fomantic-ui-less/definitions/modules/sticky"; }
& { @import "~fomantic-ui-less/definitions/modules/tab"; }
& { @import "~fomantic-ui-less/definitions/modules/toast"; }
& { @import "~fomantic-ui-less/definitions/modules/transition"; }

View file

@ -0,0 +1,7 @@
/*******************************
User Global Variables
*******************************/
@primaryColor : #11568C;
@green : #00BE00;
@olive : #C7FF00;

100
cacert-theme/theme.config Normal file
View file

@ -0,0 +1,100 @@
/*
████████╗██╗ ██╗███████╗███╗ ███╗███████╗███████╗
╚══██╔══╝██║ ██║██╔════╝████╗ ████║██╔════╝██╔════╝
██║ ███████║█████╗ ██╔████╔██║█████╗ ███████╗
██║ ██╔══██║██╔══╝ ██║╚██╔╝██║██╔══╝ ╚════██║
██║ ██║ ██║███████╗██║ ╚═╝ ██║███████╗███████║
╚═╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝╚══════╝╚══════╝
*/
/*******************************
Theme Selection
*******************************/
/* To override a theme for an individual element
specify theme name below
*/
/* Global */
@site : 'default';
@reset : 'default';
/* Elements */
@button : 'default';
@container : 'default';
@divider : 'default';
@emoji : 'default';
@flag : 'default';
@header : 'default';
@icon : 'default';
@image : 'default';
@input : 'default';
@label : 'default';
@list : 'default';
@loader : 'default';
@placeholder: 'default';
@rail : 'default';
@reveal : 'default';
@segment : 'default';
@step : 'default';
@text : 'default';
/* Collections */
@breadcrumb : 'default';
@form : 'default';
@grid : 'default';
@menu : 'default';
@message : 'default';
@table : 'default';
/* Modules */
@accordion : 'default';
@calendar : 'default';
@checkbox : 'default';
@dimmer : 'default';
@dropdown : 'default';
@embed : 'default';
@modal : 'default';
@nag : 'default';
@popup : 'default';
@progress : 'default';
@slider : 'default';
@rating : 'default';
@search : 'default';
@shape : 'default';
@sidebar : 'default';
@sticky : 'default';
@tab : 'default';
@toast : 'default';
@transition : 'default';
/* Views */
@ad : 'default';
@card : 'default';
@comment : 'default';
@feed : 'default';
@item : 'default';
@statistic : 'default';
/*******************************
Folders
*******************************/
/* Path to theme packages */
@themesFolder : 'themes';
/* Path to site override folder */
@siteFolder : '../../cacert-theme/site';
/*******************************
Import Theme
*******************************/
@import (multiple) "~fomantic-ui-less/theme.less";
@fontPath : "../../../themes/@{theme}/assets/fonts";
/* End Config */

9453
package-lock.json generated Normal file

File diff suppressed because it is too large Load diff

36
package.json Normal file
View file

@ -0,0 +1,36 @@
{
"name": "cacert-css",
"version": "1.0.0",
"description": "CSS theme for CAcert web applications",
"private": true,
"dependencies": {
"fomantic-ui-less": "^2.8.4"
},
"devDependencies": {
"clean-webpack-plugin": "^3.0.0",
"css-loader": "^1.0.1",
"file-loader": "2.0.0",
"html-loader": "^1.1.0",
"html-webpack-plugin": "^4.3.0",
"less": "3.8.1",
"less-loader": "^6.1.0",
"mini-css-extract-plugin": "^0.4.4",
"optimize-css-assets-webpack-plugin": "^5.0.3",
"style-loader": "^1.2.1",
"url-loader": "1.1.2",
"webpack": "^4.43.0",
"webpack-cli": "^3.3.11",
"webpack-dev-server": "^3.11.0",
"webpack-merge": "^4.2.2"
},
"scripts": {
"start": "webpack-dev-server --open --config webpack.dev.js",
"build": "webpack --config webpack.prod.js"
},
"keywords": [
"CAcert",
"CSS"
],
"author": "Jan Dittberner",
"license": "MIT"
}

61
src/index.html Normal file

File diff suppressed because one or more lines are too long

1
src/index.js Normal file
View file

@ -0,0 +1 @@
require('../cacert-theme/semantic.less')

71
webpack.common.js Normal file
View file

@ -0,0 +1,71 @@
const webpack = require('webpack');
const path = require('path');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');
const devMode = process.env.NODE_ENV !== 'production';
module.exports = {
entry: {
app: './src/index.js',
},
plugins: [
new CleanWebpackPlugin(),
new HtmlWebpackPlugin({
title: 'CAcert',
template: './src/index.html',
}),
new MiniCssExtractPlugin({
filename: '[name].[contenthash].css'
}),
new OptimizeCSSAssetsPlugin({})
],
output: {
path: path.resolve(__dirname, 'dist'),
filename: '[name].bundle.[hash].js'
},
resolve: {
extensions: ['.js', '.jsx'],
alias: {
'../../theme.config$': path.join(__dirname, 'cacert-theme/theme.config')
}
},
module: {
rules: [
{
test: /\.(sa|sc|c)ss$/,
use: [
devMode ? 'style-loader' : MiniCssExtractPlugin.loader,
'css-loader',
'postcss-loader',
'sass-loader'
],
},
{
test: /\.less$/,
use: [
MiniCssExtractPlugin.loader,
'css-loader',
'less-loader'
]
},
{
test: /\.jpe?g$|\.git$|\.ico$|\.png$|\.svg$/,
use: 'file-loader?name=[name].[ext]?[hash]'
},
{
test: /\.woff(2)?(\?v=[0-9]\.[0-9]\.[0-9])?$/,
loader: 'url-loader?limit=10000&mimetype=application/font-woff'
},
{
test: /\.(ttf|eot)(\?v=[0-9]\.[0-9]\.[0-9])?$/,
loader: 'file-loader'
},
{
test: /\.otf(\?.*)?$/,
use: 'file-loader?name=/fonts/[name].[ext]&mimetype=application/font-otf'
}
]
},
};

10
webpack.dev.js Normal file
View file

@ -0,0 +1,10 @@
const merge = require('webpack-merge');
const common = require('./webpack.common.js');
module.exports = merge(common, {
mode: 'development',
devtool: 'inline-source-map',
devServer: {
contentBase: './dist',
},
});

6
webpack.prod.js Normal file
View file

@ -0,0 +1,6 @@
const merge = require('webpack-merge');
const common = require('./webpack.common.js');
module.exports = merge(common, {
mode: 'production',
});