@duetds/cli 3.0.49 → 3.0.51
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +4 -4
- package/templates/eleventy/2.0.1/.eleventy.js +38 -0
- package/templates/eleventy/2.0.1/.prettierignore +6 -0
- package/templates/eleventy/2.0.1/README.md +64 -0
- package/templates/eleventy/2.0.1/gulpfile.js +60 -0
- package/templates/eleventy/2.0.1/package.file +51 -0
- package/templates/eleventy/2.0.1/src/assets/img/android-chrome-192x192.png +0 -0
- package/templates/eleventy/2.0.1/src/assets/img/apple-touch-icon-180x180.png +0 -0
- package/templates/eleventy/2.0.1/src/assets/img/splash-screen-icon-512x512.png +0 -0
- package/templates/eleventy/2.0.1/src/css/main.scss +12 -0
- package/templates/eleventy/2.0.1/src/css/partials/_example.scss +6 -0
- package/templates/eleventy/2.0.1/src/data/duet.js +18 -0
- package/templates/eleventy/2.0.1/src/favicon.ico +0 -0
- package/templates/eleventy/2.0.1/src/includes/footer.njk +15 -0
- package/templates/eleventy/2.0.1/src/includes/header.njk +24 -0
- package/templates/eleventy/2.0.1/src/includes/layout.njk +26 -0
- package/templates/eleventy/2.0.1/src/index.njk +58 -0
- package/templates/eleventy/2.0.1/src/js/scripts.js +1 -0
- package/templates/eleventy/2.0.1/src/manifest.json +19 -0
- package/templates/eleventy/2.0.1/src/robots.txt +8 -0
- package/templates/eleventy/2.0.1/src/vahinkoasiat.njk +43 -0
- package/templates/eleventy/2.0.1/src/vakuutukset.njk +49 -0
- package/templates/eleventy-ssr/2.0.1/.eleventy.js +91 -0
- package/templates/eleventy-ssr/2.0.1/.prettierignore +6 -0
- package/templates/eleventy-ssr/2.0.1/README.md +64 -0
- package/templates/eleventy-ssr/2.0.1/gulpfile.js +60 -0
- package/templates/eleventy-ssr/2.0.1/package.file +51 -0
- package/templates/eleventy-ssr/2.0.1/src/assets/img/android-chrome-192x192.png +0 -0
- package/templates/eleventy-ssr/2.0.1/src/assets/img/apple-touch-icon-180x180.png +0 -0
- package/templates/eleventy-ssr/2.0.1/src/assets/img/splash-screen-icon-512x512.png +0 -0
- package/templates/eleventy-ssr/2.0.1/src/css/main.scss +12 -0
- package/templates/eleventy-ssr/2.0.1/src/css/partials/_example.scss +6 -0
- package/templates/eleventy-ssr/2.0.1/src/data/duet.js +18 -0
- package/templates/eleventy-ssr/2.0.1/src/favicon.ico +0 -0
- package/templates/eleventy-ssr/2.0.1/src/includes/footer.njk +15 -0
- package/templates/eleventy-ssr/2.0.1/src/includes/header.njk +24 -0
- package/templates/eleventy-ssr/2.0.1/src/includes/layout.njk +26 -0
- package/templates/eleventy-ssr/2.0.1/src/index.njk +58 -0
- package/templates/eleventy-ssr/2.0.1/src/js/scripts.js +1 -0
- package/templates/eleventy-ssr/2.0.1/src/manifest.json +19 -0
- package/templates/eleventy-ssr/2.0.1/src/robots.txt +8 -0
- package/templates/eleventy-ssr/2.0.1/src/vahinkoasiat.njk +43 -0
- package/templates/eleventy-ssr/2.0.1/src/vakuutukset.njk +49 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@duetds/cli",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.51",
|
|
4
4
|
"description": "This package includes Duet Design System CLI.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
6
6
|
"author": "LocalTapiola Services Ltd <duetdesignsystem@lahitapiola.fi>",
|
|
@@ -23,14 +23,14 @@
|
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
25
|
"arg": "4.1.3",
|
|
26
|
-
"chalk": "
|
|
26
|
+
"chalk": "4.1.2",
|
|
27
27
|
"esm": "3.2.25",
|
|
28
|
-
"inquirer": "
|
|
28
|
+
"inquirer": "8.2.3",
|
|
29
29
|
"listr": "0.14.3",
|
|
30
30
|
"ncp": "2.0.0"
|
|
31
31
|
},
|
|
32
32
|
"publishConfig": {
|
|
33
33
|
"access": "public"
|
|
34
34
|
},
|
|
35
|
-
"gitHead": "
|
|
35
|
+
"gitHead": "fcd59bc7a2617a1497b452bca20d89d08252f21c"
|
|
36
36
|
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DUET ELEVENTY CONFIGURATION
|
|
3
|
+
*/
|
|
4
|
+
module.exports = function (config) {
|
|
5
|
+
// Enable data deep merge https://www.11ty.dev/docs/data-deep-merge/
|
|
6
|
+
config.setDataDeepMerge(true)
|
|
7
|
+
|
|
8
|
+
// Dom diffing doesn't work well with shadow DOM.
|
|
9
|
+
config.setServerOptions({
|
|
10
|
+
domDiff: false,
|
|
11
|
+
})
|
|
12
|
+
|
|
13
|
+
// Copy static assets to dist on build.
|
|
14
|
+
// You can add more here if and when needed.
|
|
15
|
+
config.addPassthroughCopy("./src/assets")
|
|
16
|
+
config.addPassthroughCopy("./src/js")
|
|
17
|
+
config.addPassthroughCopy("./src/favicon.ico")
|
|
18
|
+
config.addPassthroughCopy("./src/manifest.json")
|
|
19
|
+
|
|
20
|
+
return {
|
|
21
|
+
// If your site lives in a different subdirectory, change this.
|
|
22
|
+
// Leading or trailing slashes are all normalized away, so don’t worry about it.
|
|
23
|
+
// If you don’t have a subdirectory, use "" or "/" (they do the same thing)
|
|
24
|
+
// This is only used for URLs (it does not affect your file structure)
|
|
25
|
+
pathPrefix: "/",
|
|
26
|
+
templateFormats: ["md", "njk", "html"],
|
|
27
|
+
markdownTemplateEngine: "njk",
|
|
28
|
+
htmlTemplateEngine: "njk",
|
|
29
|
+
dataTemplateEngine: false,
|
|
30
|
+
passthroughFileCopy: true,
|
|
31
|
+
dir: {
|
|
32
|
+
input: "src",
|
|
33
|
+
includes: "includes",
|
|
34
|
+
data: "data",
|
|
35
|
+
output: "dist",
|
|
36
|
+
},
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Duet Eleventy Template
|
|
2
|
+
|
|
3
|
+
This is a [Eleventy](https://www.11ty.dev/) project template for [Duet Design System](https://www.duetds.com). This starter template comes with support for [Duet Web Components](https://www.duetds.com/components/). To learn more about Eleventy and what’s possible, see [Eleventy documentation](https://www.11ty.dev/docs/).
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- Comes with [Duet Web Components](https://www.duetds.com/components/).
|
|
8
|
+
- Supports [Duet Design Tokens](https://www.duetds.com/tokens/) in SCSS without additional configuration.
|
|
9
|
+
- Comes with automated build and deploy steps for prototyping.
|
|
10
|
+
- Additionally comes with [Duet Fonts](https://www.duetds.com/typography/) and [Duet CSS Framework](https://www.duetds.com/css-framework/) preconfigured.
|
|
11
|
+
|
|
12
|
+
## Development
|
|
13
|
+
|
|
14
|
+
Before moving further, please make sure you have [Node.js](https://nodejs.org/en/) 12.x or later installed on your machine. You can install the latest version through their website. Once you have Node.js installed, follow the below steps to get started.
|
|
15
|
+
|
|
16
|
+
1. Run `npm install` in the root directory of this project to install the dependencies.
|
|
17
|
+
2. Then run `npm start` to start up the server and development environment. This automatically opens up a new browser window showing `http://localhost:8000`.
|
|
18
|
+
3. If you wish to test the production build, you can start up the server in production mode by running `npm run start:prod`. Please note that this makes Eleventy do JS+CSS minification with every change so it might slow down the development experience.
|
|
19
|
+
4. This template ships with Prettier configuration. To enable HTML formatting for `.njk` templates, add the following to your VSCode settings.json:
|
|
20
|
+
|
|
21
|
+
```json
|
|
22
|
+
{
|
|
23
|
+
"files.associations": {
|
|
24
|
+
"*.njk": "html"
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Integration Tests
|
|
30
|
+
|
|
31
|
+
Run `npm run test` to run integration tests.
|
|
32
|
+
|
|
33
|
+
## Building
|
|
34
|
+
|
|
35
|
+
Run `npm run build` to build a static website under `dist` that can be deployed using GitHub Pages, Azure Cloud, or Amazon S3.
|
|
36
|
+
|
|
37
|
+
## Project Structure
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
├─ src/
|
|
41
|
+
│ ├─ assets/
|
|
42
|
+
│ ├─ css/
|
|
43
|
+
│ │ ├─ main.scss
|
|
44
|
+
│ │ └─ partials/
|
|
45
|
+
│ │ └─ example.scss
|
|
46
|
+
│ ├─ data/
|
|
47
|
+
│ ├─ includes/
|
|
48
|
+
│ │ ├─ layout.njk
|
|
49
|
+
│ │ ├─ header.njk
|
|
50
|
+
│ │ └─ footer.njk
|
|
51
|
+
│ ├─ js/
|
|
52
|
+
│ ├─ index.njk
|
|
53
|
+
│ └─ ...
|
|
54
|
+
├─ .eleventy.js
|
|
55
|
+
└─ gulpfile.js
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Usage
|
|
59
|
+
|
|
60
|
+
For more usage instructions, please see [Duet Design System documentation](https://www.duetds.com).
|
|
61
|
+
|
|
62
|
+
## Copyright
|
|
63
|
+
|
|
64
|
+
Copyright © 2020 LocalTapiola Services Ltd. For license, please see LICENSE.md.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DUET GULP CONFIGURATION
|
|
3
|
+
*/
|
|
4
|
+
const gulp = require("gulp")
|
|
5
|
+
const sass = require("gulp-sass")(require("sass"))
|
|
6
|
+
const concat = require("gulp-concat")
|
|
7
|
+
const rename = require("gulp-rename")
|
|
8
|
+
const terser = require("gulp-terser")
|
|
9
|
+
const log = require("fancy-log")
|
|
10
|
+
const color = require("ansi-colors")
|
|
11
|
+
|
|
12
|
+
let baseHref
|
|
13
|
+
if (process.env.DUET_TOKEN) {
|
|
14
|
+
baseHref = "./dist/" + process.env.DUET_TOKEN + "/"
|
|
15
|
+
} else {
|
|
16
|
+
baseHref = "./dist/"
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// A Task that generates JavaScript bundle
|
|
20
|
+
gulp.task("js", function () {
|
|
21
|
+
return (
|
|
22
|
+
gulp
|
|
23
|
+
// You can add more scripts below if necessary
|
|
24
|
+
.src(["./src/js/scripts.js"])
|
|
25
|
+
.pipe(concat("scripts.concat.js"))
|
|
26
|
+
.pipe(gulp.dest(baseHref + "js"))
|
|
27
|
+
.pipe(rename("scripts.min.js"))
|
|
28
|
+
.pipe(terser())
|
|
29
|
+
.on("error", function (err) {
|
|
30
|
+
log(color.red("[Error]"), err.toString())
|
|
31
|
+
})
|
|
32
|
+
.pipe(gulp.dest(baseHref + "js"))
|
|
33
|
+
)
|
|
34
|
+
})
|
|
35
|
+
|
|
36
|
+
// A Task that generates CSS from Sass
|
|
37
|
+
gulp.task("sass", function () {
|
|
38
|
+
return gulp
|
|
39
|
+
.src("./src/css/**/*.scss")
|
|
40
|
+
.pipe(
|
|
41
|
+
sass({
|
|
42
|
+
outputStyle: "compressed",
|
|
43
|
+
}).on("error", sass.logError)
|
|
44
|
+
)
|
|
45
|
+
.pipe(gulp.dest(baseHref + "css"))
|
|
46
|
+
})
|
|
47
|
+
|
|
48
|
+
// Define watch tasks
|
|
49
|
+
gulp.task("sass:watch", function () {
|
|
50
|
+
gulp.watch("./src/css/**/*.scss", gulp.series("sass"))
|
|
51
|
+
})
|
|
52
|
+
gulp.task("js:watch", function () {
|
|
53
|
+
gulp.watch("./src/js/**/*.js", gulp.series("js"))
|
|
54
|
+
})
|
|
55
|
+
|
|
56
|
+
// Define the default task
|
|
57
|
+
gulp.task("default", gulp.parallel("sass", "js", "sass:watch", "js:watch"))
|
|
58
|
+
|
|
59
|
+
// Define the build task
|
|
60
|
+
gulp.task("build", gulp.parallel("sass", "js"))
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "duet-eleventy-template",
|
|
3
|
+
"version": "2.0.0",
|
|
4
|
+
"description": "This package includes Duet Eleventy Template project.",
|
|
5
|
+
"bugs": {
|
|
6
|
+
"email": "duetdesignsystem@lahitapiola.fi"
|
|
7
|
+
},
|
|
8
|
+
"license": "SEE LICENSE IN LICENSE.md",
|
|
9
|
+
"author": "LocalTapiola Services Ltd <duetdesignsystem@lahitapiola.fi>",
|
|
10
|
+
"main": "index.js",
|
|
11
|
+
"scripts": {
|
|
12
|
+
"build": "cross-env ELEVENTY_ENV=production npm-run-all --sequential copy:components \"gulp build\" eleventy",
|
|
13
|
+
"build:prototype": "cross-env ELEVENTY_ENV=production npm-run-all --sequential build:clean build:prepare build:login copy:components \"gulp build\" build:template build:encrypt",
|
|
14
|
+
"build:clean": "rm -rf ./dist",
|
|
15
|
+
"build:prepare": "mkdir -p ./dist",
|
|
16
|
+
"build:login": "ncp ./.github/workflows/login.template ./dist/index.html",
|
|
17
|
+
"build:template": "eleventy --input=./src --output=./dist/$DUET_TOKEN",
|
|
18
|
+
"build:encrypt": "node ./.github/workflows/encrypt.js $DUET_TOKEN passphrase",
|
|
19
|
+
"copy:components": "ncp ./node_modules/@duetds/components/lib ./src/js/components",
|
|
20
|
+
"eleventy": "eleventy",
|
|
21
|
+
"gulp": "gulp",
|
|
22
|
+
"server": "eleventy --serve --port=8000",
|
|
23
|
+
"start": "cross-env ELEVENTY_ENV=development npm-run-all --parallel copy:components gulp server",
|
|
24
|
+
"start:prod": "cross-env ELEVENTY_ENV=production npm-run-all --parallel copy:components gulp server",
|
|
25
|
+
"test": "npm-run-all --sequential \"gulp build\" \"eleventy --dryrun\""
|
|
26
|
+
},
|
|
27
|
+
"dependencies": {
|
|
28
|
+
"@11ty/eleventy": "2.0.1",
|
|
29
|
+
"@duetds/components": "latest",
|
|
30
|
+
"@duetds/css": "latest",
|
|
31
|
+
"@duetds/icons": "latest",
|
|
32
|
+
"@duetds/tokens": "latest",
|
|
33
|
+
"ansi-colors": "4.1.1",
|
|
34
|
+
"cross-env": "7.0.1",
|
|
35
|
+
"crypto-js": "4.0.0",
|
|
36
|
+
"fancy-log": "1.3.3",
|
|
37
|
+
"gulp": "4.0.2",
|
|
38
|
+
"gulp-concat": "2.6.1",
|
|
39
|
+
"gulp-rename": "2.0.0",
|
|
40
|
+
"gulp-sass": "5.1.0",
|
|
41
|
+
"gulp-terser": "1.2.0",
|
|
42
|
+
"html-minifier": "4.0.0",
|
|
43
|
+
"ncp": "2.0.0",
|
|
44
|
+
"npm-run-all": "4.1.5",
|
|
45
|
+
"prettier": "2.2.1",
|
|
46
|
+
"replace-in-file": "5.0.2",
|
|
47
|
+
"sass": "1.62.1",
|
|
48
|
+
"uglify-js": "3.8.0",
|
|
49
|
+
"yargs": "15.1.0"
|
|
50
|
+
}
|
|
51
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/* MAIN SCSS PARTIAL
|
|
2
|
+
--------------------------------------------- */
|
|
3
|
+
@charset "utf-8";
|
|
4
|
+
|
|
5
|
+
// Import Duet Design Tokens
|
|
6
|
+
@import "../../node_modules/@duetds/tokens/lib/tokens.scss";
|
|
7
|
+
|
|
8
|
+
// Import Duet CSS Framework
|
|
9
|
+
@import "../../node_modules/@duetds/css/lib/duet.min";
|
|
10
|
+
|
|
11
|
+
// Import any custom SCSS partials below
|
|
12
|
+
@import "partials/example.scss";
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DUET ELEVENTY DATA FILE
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
// Create a random string for cache busting needs
|
|
6
|
+
function chr4() {
|
|
7
|
+
return Math.random().toString(16).slice(-4)
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const githubProject = process.env.DUET_PROJECT_NAME ? process.env.DUET_PROJECT_NAME.toLowerCase() : ""
|
|
11
|
+
|
|
12
|
+
// Export environment variable and the current version so that
|
|
13
|
+
// they can be used on our website.
|
|
14
|
+
module.exports = {
|
|
15
|
+
environment: process.env.ELEVENTY_ENV,
|
|
16
|
+
baseHref: process.env.DUET_TOKEN ? `/${githubProject}/${process.env.DUET_TOKEN}` : "",
|
|
17
|
+
version: chr4() + "-" + chr4() + "-" + chr4(),
|
|
18
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<duet-footer
|
|
2
|
+
logo-href="{{ duet.baseHref }}"
|
|
3
|
+
language="fi"
|
|
4
|
+
items='[
|
|
5
|
+
{ "label": "Hae korvausta", "href": "#", "icon": "navigation-make-claim" },
|
|
6
|
+
{ "label": "Osta vakuutus", "href": "#", "icon": "action-buy-insurance" },
|
|
7
|
+
{ "label": "Yhteystiedot", "href": "#", "icon": "form-tel" }
|
|
8
|
+
]'
|
|
9
|
+
menu='[
|
|
10
|
+
{ "label": "Turvallisuus ja käyttöehdot", "href": "#" },
|
|
11
|
+
{ "label": "Evästeet", "href": "#" },
|
|
12
|
+
{ "label": "Henkilötietojen käsittely", "href": "#" }
|
|
13
|
+
]'
|
|
14
|
+
>
|
|
15
|
+
</duet-footer>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<duet-header
|
|
2
|
+
language="fi"
|
|
3
|
+
skip-to-id="#content"
|
|
4
|
+
contact="Ota yhteyttä"
|
|
5
|
+
logo-href="{{ duet.baseHref }}"
|
|
6
|
+
current-href="{{ duet.baseHref }}{{ page.url }}"
|
|
7
|
+
items='[
|
|
8
|
+
{ "label": "Etusivu", "href": "{{ duet.baseHref }}/" },
|
|
9
|
+
{ "label": "Vakuutukset", "href": "{{ duet.baseHref }}/vakuutukset/" },
|
|
10
|
+
{ "label": "Vahinkoasiat", "href": "{{ duet.baseHref }}/vahinkoasiat/" }
|
|
11
|
+
]'
|
|
12
|
+
language-items='[
|
|
13
|
+
{ "label": "Suomeksi", "country": "fi", "href": "#" },
|
|
14
|
+
{ "label": "På Svenska", "country": "sv", "href": "#" },
|
|
15
|
+
{ "label": "In English", "country": "en", "href": "#" }
|
|
16
|
+
]'
|
|
17
|
+
contact-items='[
|
|
18
|
+
{ "label": "Lähetä viesti", "href": "#" },
|
|
19
|
+
{ "label": "Avaa chat", "href": "#" },
|
|
20
|
+
{ "label": "Yhteystiedot", "href": "#" }
|
|
21
|
+
]'
|
|
22
|
+
session='{ "label": "Kirjaudu ulos", "href": "#", "type": "logout" }'
|
|
23
|
+
user='{ "label": "Laura", "href": "#" }'>
|
|
24
|
+
</duet-header>
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="fi" {% if html_class %}class="{{ html_class }}" {% endif %}>
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta name="author" content="LähiTapiola" />
|
|
6
|
+
<meta name="viewport" content="width=device-width,initial-scale=1.0" />
|
|
7
|
+
<meta name="format-detection" content="telephone=no" />
|
|
8
|
+
<meta name="robots" content="noindex,nofollow" />
|
|
9
|
+
<title>{% if title %}{{ title }} | {% endif %}LähiTapiola</title>
|
|
10
|
+
<link rel="icon" href="{{ duet.baseHref }}/favicon.ico" />
|
|
11
|
+
<link rel="modulepreload" href="{{ duet.baseHref }}/js/components/duet/duet.esm.js?v={{ duet.version }}" />
|
|
12
|
+
<link rel="apple-touch-icon" href="{{ duet.baseHref }}/assets/img/apple-touch-icon-180x180.png" />
|
|
13
|
+
<link rel="stylesheet" href="https://cdn.duetds.com/api/fonts/1.3.12/lib/localtapiola.css" />
|
|
14
|
+
<link rel="stylesheet" href="https://cdn.duetds.com/api/fonts/1.3.12/lib/turva.css" />
|
|
15
|
+
<link rel="stylesheet" href="{{ duet.baseHref }}/css/main.css?v={{ duet.version }}" />
|
|
16
|
+
<link rel="manifest" href="{{ duet.baseHref }}/manifest.json" />
|
|
17
|
+
<script type="module" src="{{ duet.baseHref }}/js/components/duet/duet.esm.js?v={{ duet.version }}"></script>
|
|
18
|
+
<script nomodule src="{{ duet.baseHref }}/js/components/duet/duet.js?v={{ duet.version }}"></script>
|
|
19
|
+
<script src="{{ duet.baseHref }}/js/scripts.min.js?v={{ duet.version }}"></script>
|
|
20
|
+
</head>
|
|
21
|
+
<body>
|
|
22
|
+
{% include "header.njk" %}
|
|
23
|
+
{{ content | safe }}
|
|
24
|
+
{% include "footer.njk" %}
|
|
25
|
+
</body>
|
|
26
|
+
</html>
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
---
|
|
2
|
+
layout: layout.njk
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
<duet-hero
|
|
6
|
+
heading="Etusivu"
|
|
7
|
+
image="https://cdn.duetds.com/api/assets/illustrations/placeholder-light.svg"
|
|
8
|
+
button-label="Toimintopainike"
|
|
9
|
+
button-url="/"
|
|
10
|
+
margin="none"
|
|
11
|
+
id="content"
|
|
12
|
+
description="Tämä teksti on luotu Hero-komponentin description-asetuksella. Voit lisätä tähän esimerkiksi ingressin.">
|
|
13
|
+
</duet-hero>
|
|
14
|
+
<duet-layout sticky>
|
|
15
|
+
<div slot="main">
|
|
16
|
+
<duet-card padding="large">
|
|
17
|
+
<duet-heading level="h2">Pääpalsta</duet-heading>
|
|
18
|
+
<duet-paragraph>
|
|
19
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
|
|
20
|
+
magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation
|
|
21
|
+
<duet-link url="#">ullamco laboris nisi ut aliquip</duet-link> ex ea commodo consequat. Duis aute irure dolor in
|
|
22
|
+
reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat
|
|
23
|
+
non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
|
24
|
+
</duet-paragraph>
|
|
25
|
+
<duet-paragraph>
|
|
26
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
|
|
27
|
+
magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
|
|
28
|
+
consequat.
|
|
29
|
+
</duet-paragraph>
|
|
30
|
+
<duet-heading level="h3">Otsikko 3</duet-heading>
|
|
31
|
+
<duet-paragraph>
|
|
32
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
|
|
33
|
+
magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation.
|
|
34
|
+
</duet-paragraph>
|
|
35
|
+
<duet-heading level="h4">Otsikko 4</duet-heading>
|
|
36
|
+
<duet-paragraph>
|
|
37
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
|
|
38
|
+
magna aliqua.
|
|
39
|
+
</duet-paragraph>
|
|
40
|
+
<duet-heading level="h5">Otsikko 5</duet-heading>
|
|
41
|
+
<duet-paragraph>
|
|
42
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
|
|
43
|
+
magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
|
|
44
|
+
consequat.
|
|
45
|
+
</duet-paragraph>
|
|
46
|
+
<duet-heading level="h6">Otsikko 6</duet-heading>
|
|
47
|
+
<duet-paragraph>
|
|
48
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
|
49
|
+
</duet-paragraph>
|
|
50
|
+
</duet-card>
|
|
51
|
+
</div>
|
|
52
|
+
<div slot="sidebar">
|
|
53
|
+
<duet-card padding="large" heading="Sivupalsta">
|
|
54
|
+
Sivupalstaa voidaan käyttää pääsisältöön liittyvän tiedon näyttämiseen tai vaihtoehtoisesti nostamaan esiin
|
|
55
|
+
aiheeseen liittyvää muuta sisältöä.
|
|
56
|
+
</duet-card>
|
|
57
|
+
</div>
|
|
58
|
+
</duet-layout>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
// Include any custom JavaScript here
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"icons": [
|
|
3
|
+
{
|
|
4
|
+
"src": "/assets/img/apple-touch-icon-180x180.png",
|
|
5
|
+
"sizes": "180x180",
|
|
6
|
+
"type": "image/png"
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
"src": "/assets/img/android-chrome-192x192.png",
|
|
10
|
+
"sizes": "192x192",
|
|
11
|
+
"type": "image/png"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"src": "/assets/img/splash-screen-icon-512x512.png",
|
|
15
|
+
"sizes": "512x512",
|
|
16
|
+
"type": "image/png"
|
|
17
|
+
}
|
|
18
|
+
]
|
|
19
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Vahinkoasiat
|
|
3
|
+
layout: layout.njk
|
|
4
|
+
html_class: "duet-bg-gradient"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
<duet-layout center>
|
|
8
|
+
<div slot="main">
|
|
9
|
+
<duet-card padding="large">
|
|
10
|
+
<duet-heading level="h1" visual-level="h2">Vahinkoasiat</duet-heading>
|
|
11
|
+
<duet-paragraph>
|
|
12
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
|
|
13
|
+
magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation
|
|
14
|
+
<duet-link url="#">ullamco laboris nisi ut aliquip</duet-link> ex ea commodo consequat. Duis aute irure dolor in
|
|
15
|
+
reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat
|
|
16
|
+
non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
|
17
|
+
</duet-paragraph>
|
|
18
|
+
<duet-paragraph>
|
|
19
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
|
|
20
|
+
magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
|
|
21
|
+
consequat.
|
|
22
|
+
</duet-paragraph>
|
|
23
|
+
<duet-heading level="h3">Otsikko 3</duet-heading>
|
|
24
|
+
<duet-paragraph>
|
|
25
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
|
|
26
|
+
magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation.
|
|
27
|
+
</duet-paragraph>
|
|
28
|
+
<duet-heading level="h4">Otsikko 4</duet-heading>
|
|
29
|
+
<duet-paragraph>
|
|
30
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
|
|
31
|
+
magna aliqua.
|
|
32
|
+
</duet-paragraph>
|
|
33
|
+
<duet-heading level="h5">Otsikko 5</duet-heading>
|
|
34
|
+
<duet-paragraph>
|
|
35
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
|
|
36
|
+
magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
|
|
37
|
+
consequat.
|
|
38
|
+
</duet-paragraph>
|
|
39
|
+
<duet-heading level="h6">Otsikko 6</duet-heading>
|
|
40
|
+
<duet-paragraph>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</duet-paragraph>
|
|
41
|
+
</duet-card>
|
|
42
|
+
</div>
|
|
43
|
+
</duet-layout>
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Vakuutukset
|
|
3
|
+
layout: layout.njk
|
|
4
|
+
html_class: "duet-bg-gradient"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
<duet-layout sticky id="content">
|
|
8
|
+
<div slot="main">
|
|
9
|
+
<duet-card padding="large">
|
|
10
|
+
<duet-heading level="h1" visual-level="h2">Vakuutukset</duet-heading>
|
|
11
|
+
<duet-paragraph>
|
|
12
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
|
|
13
|
+
magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation
|
|
14
|
+
<duet-link url="#">ullamco laboris nisi ut aliquip</duet-link> ex ea commodo consequat. Duis aute irure dolor in
|
|
15
|
+
reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat
|
|
16
|
+
non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
|
17
|
+
</duet-paragraph>
|
|
18
|
+
<duet-paragraph>
|
|
19
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
|
|
20
|
+
magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
|
|
21
|
+
consequat.
|
|
22
|
+
</duet-paragraph>
|
|
23
|
+
<duet-heading level="h3">Otsikko 3</duet-heading>
|
|
24
|
+
<duet-paragraph>
|
|
25
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
|
|
26
|
+
magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation.
|
|
27
|
+
</duet-paragraph>
|
|
28
|
+
<duet-heading level="h4">Otsikko 4</duet-heading>
|
|
29
|
+
<duet-paragraph>
|
|
30
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
|
|
31
|
+
magna aliqua.
|
|
32
|
+
</duet-paragraph>
|
|
33
|
+
<duet-heading level="h5">Otsikko 5</duet-heading>
|
|
34
|
+
<duet-paragraph>
|
|
35
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
|
|
36
|
+
magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
|
|
37
|
+
consequat.
|
|
38
|
+
</duet-paragraph>
|
|
39
|
+
<duet-heading level="h6">Otsikko 6</duet-heading>
|
|
40
|
+
<duet-paragraph>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</duet-paragraph>
|
|
41
|
+
</duet-card>
|
|
42
|
+
</div>
|
|
43
|
+
<div slot="sidebar">
|
|
44
|
+
<duet-card padding="large" heading="Sivupalsta">
|
|
45
|
+
Sivupalstaa voidaan käyttää pääsisältöön liittyvän tiedon näyttämiseen tai vaihtoehtoisesti nostamaan esiin
|
|
46
|
+
aiheeseen liittyvää muuta sisältöä.
|
|
47
|
+
</duet-card>
|
|
48
|
+
</div>
|
|
49
|
+
</duet-layout>
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DUET ELEVENTY CONFIGURATION
|
|
3
|
+
*/
|
|
4
|
+
const hydrate = require("@duetds/components/hydrate")
|
|
5
|
+
const htmlmin = require("html-minifier")
|
|
6
|
+
const UglifyJS = require("uglify-js")
|
|
7
|
+
|
|
8
|
+
module.exports = function (config) {
|
|
9
|
+
// Enable data deep merge https://www.11ty.dev/docs/data-deep-merge/
|
|
10
|
+
config.setDataDeepMerge(true)
|
|
11
|
+
|
|
12
|
+
// Dom diffing doesn't work well with shadow DOM.
|
|
13
|
+
config.setServerOptions({
|
|
14
|
+
domDiff: false,
|
|
15
|
+
})
|
|
16
|
+
|
|
17
|
+
// Copy static assets to dist on build.
|
|
18
|
+
// You can add more here if and when needed.
|
|
19
|
+
config.addPassthroughCopy("./src/assets")
|
|
20
|
+
config.addPassthroughCopy("./src/js")
|
|
21
|
+
config.addPassthroughCopy("./src/favicon.ico")
|
|
22
|
+
config.addPassthroughCopy("./src/manifest.json")
|
|
23
|
+
|
|
24
|
+
// Add JSMIN filter to Eleventy.
|
|
25
|
+
config.addFilter("jsmin", function (code) {
|
|
26
|
+
if (process.env.ELEVENTY_ENV == "production") {
|
|
27
|
+
let minified = UglifyJS.minify(code)
|
|
28
|
+
if (minified.error) {
|
|
29
|
+
console.log("UglifyJS error: ", minified.error)
|
|
30
|
+
return code
|
|
31
|
+
}
|
|
32
|
+
return minified.code
|
|
33
|
+
} else {
|
|
34
|
+
return code
|
|
35
|
+
}
|
|
36
|
+
})
|
|
37
|
+
|
|
38
|
+
// Server side render Duet’s components in production environment.
|
|
39
|
+
config.addTransform("hydrate", async (content, outputPath) => {
|
|
40
|
+
if (process.env.ELEVENTY_ENV == "production") {
|
|
41
|
+
if (outputPath.endsWith(".html")) {
|
|
42
|
+
try {
|
|
43
|
+
const results = await hydrate.renderToString(content, {
|
|
44
|
+
clientHydrateAnnotations: true,
|
|
45
|
+
removeScripts: false,
|
|
46
|
+
removeUnusedStyles: false,
|
|
47
|
+
})
|
|
48
|
+
return results.html
|
|
49
|
+
} catch (error) {
|
|
50
|
+
return error
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return content
|
|
55
|
+
})
|
|
56
|
+
|
|
57
|
+
// Minify HTML in production environment.
|
|
58
|
+
config.addTransform("htmlmin", function (content, outputPath) {
|
|
59
|
+
if (process.env.ELEVENTY_ENV == "production") {
|
|
60
|
+
if (outputPath.endsWith(".html")) {
|
|
61
|
+
let minified = htmlmin.minify(content, {
|
|
62
|
+
useShortDoctype: true,
|
|
63
|
+
// Clientside hydration of components won’t work if comments are removed
|
|
64
|
+
removeComments: false,
|
|
65
|
+
collapseWhitespace: false,
|
|
66
|
+
})
|
|
67
|
+
return minified
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return content
|
|
71
|
+
})
|
|
72
|
+
|
|
73
|
+
return {
|
|
74
|
+
// If your site lives in a different subdirectory, change this.
|
|
75
|
+
// Leading or trailing slashes are all normalized away, so don’t worry about it.
|
|
76
|
+
// If you don’t have a subdirectory, use "" or "/" (they do the same thing)
|
|
77
|
+
// This is only used for URLs (it does not affect your file structure)
|
|
78
|
+
pathPrefix: "/",
|
|
79
|
+
templateFormats: ["md", "njk", "html"],
|
|
80
|
+
markdownTemplateEngine: "njk",
|
|
81
|
+
htmlTemplateEngine: "njk",
|
|
82
|
+
dataTemplateEngine: false,
|
|
83
|
+
passthroughFileCopy: true,
|
|
84
|
+
dir: {
|
|
85
|
+
input: "src",
|
|
86
|
+
includes: "includes",
|
|
87
|
+
data: "data",
|
|
88
|
+
output: "dist",
|
|
89
|
+
},
|
|
90
|
+
}
|
|
91
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Duet Eleventy SSR Template
|
|
2
|
+
|
|
3
|
+
This is a [Eleventy](https://www.11ty.dev/) SSR project template for [Duet Design System](https://www.duetds.com). This starter template comes with built in SSR (Server Side Rendering) support for [Duet Web Components](https://www.duetds.com/components/). To learn more about Eleventy and what’s possible, see [Eleventy documentation](https://www.11ty.dev/docs/).
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- SSR (Server Side Rendering) support for [Duet Web Components](https://www.duetds.com/components/).
|
|
8
|
+
- Supports [Duet Design Tokens](https://www.duetds.com/tokens/) in SCSS without additional configuration.
|
|
9
|
+
- Comes with automated build and deploy steps for prototyping.
|
|
10
|
+
- Additionally comes with [Duet Fonts](https://www.duetds.com/typography/) and [Duet CSS Framework](https://www.duetds.com/css-framework/) preconfigured.
|
|
11
|
+
|
|
12
|
+
## Development
|
|
13
|
+
|
|
14
|
+
Before moving further, please make sure you have [Node.js](https://nodejs.org/en/) 12.x or later installed on your machine. You can install the latest version through their website. Once you have Node.js installed, follow the below steps to get started.
|
|
15
|
+
|
|
16
|
+
1. Run `npm install` in the root directory of this project to install the dependencies.
|
|
17
|
+
2. Then run `npm start` to start up the server and development environment. This automatically opens up a new browser window showing `http://localhost:8000`.
|
|
18
|
+
3. If you wish to test SSR, you can start up the server in production mode by running `npm run start:prod`. Please note that this makes Eleventy do server side rendering and JS+CSS minification with every change so it might slow down the development experience.
|
|
19
|
+
4. This template ships with Prettier configuration. To enable HTML formatting for `.njk` templates, add the following to your VSCode settings.json:
|
|
20
|
+
|
|
21
|
+
```json
|
|
22
|
+
{
|
|
23
|
+
"files.associations": {
|
|
24
|
+
"*.njk": "html"
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Integration Tests
|
|
30
|
+
|
|
31
|
+
Run `npm run test` to run integration tests.
|
|
32
|
+
|
|
33
|
+
## Building
|
|
34
|
+
|
|
35
|
+
Run `npm run build` to build a static, server side rendered website under `dist` that can be deployed using GitHub Pages, Azure Cloud, or Amazon S3.
|
|
36
|
+
|
|
37
|
+
## Project Structure
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
├─ src/
|
|
41
|
+
│ ├─ assets/
|
|
42
|
+
│ ├─ css/
|
|
43
|
+
│ │ ├─ main.scss
|
|
44
|
+
│ │ └─ partials/
|
|
45
|
+
│ │ └─ example.scss
|
|
46
|
+
│ ├─ data/
|
|
47
|
+
│ ├─ includes/
|
|
48
|
+
│ │ ├─ layout.njk
|
|
49
|
+
│ │ ├─ header.njk
|
|
50
|
+
│ │ └─ footer.njk
|
|
51
|
+
│ ├─ js/
|
|
52
|
+
│ ├─ index.njk
|
|
53
|
+
│ └─ ...
|
|
54
|
+
├─ .eleventy.js
|
|
55
|
+
└─ gulpfile.js
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Usage
|
|
59
|
+
|
|
60
|
+
For more usage instructions, please see [Duet Design System documentation](https://www.duetds.com).
|
|
61
|
+
|
|
62
|
+
## Copyright
|
|
63
|
+
|
|
64
|
+
Copyright © 2020 LocalTapiola Services Ltd. For license, please see LICENSE.md.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DUET GULP CONFIGURATION
|
|
3
|
+
*/
|
|
4
|
+
const gulp = require("gulp")
|
|
5
|
+
const sass = require("gulp-sass")(require("sass"))
|
|
6
|
+
const concat = require("gulp-concat")
|
|
7
|
+
const rename = require("gulp-rename")
|
|
8
|
+
const terser = require("gulp-terser")
|
|
9
|
+
const log = require("fancy-log")
|
|
10
|
+
const color = require("ansi-colors")
|
|
11
|
+
|
|
12
|
+
let baseHref
|
|
13
|
+
if (process.env.DUET_TOKEN) {
|
|
14
|
+
baseHref = "./dist/" + process.env.DUET_TOKEN + "/"
|
|
15
|
+
} else {
|
|
16
|
+
baseHref = "./dist/"
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// A Task that generates JavaScript bundle
|
|
20
|
+
gulp.task("js", function () {
|
|
21
|
+
return (
|
|
22
|
+
gulp
|
|
23
|
+
// You can add more scripts below if necessary
|
|
24
|
+
.src(["./src/js/scripts.js"])
|
|
25
|
+
.pipe(concat("scripts.concat.js"))
|
|
26
|
+
.pipe(gulp.dest(baseHref + "js"))
|
|
27
|
+
.pipe(rename("scripts.min.js"))
|
|
28
|
+
.pipe(terser())
|
|
29
|
+
.on("error", function (err) {
|
|
30
|
+
log(color.red("[Error]"), err.toString())
|
|
31
|
+
})
|
|
32
|
+
.pipe(gulp.dest(baseHref + "js"))
|
|
33
|
+
)
|
|
34
|
+
})
|
|
35
|
+
|
|
36
|
+
// A Task that generates CSS from Sass
|
|
37
|
+
gulp.task("sass", function () {
|
|
38
|
+
return gulp
|
|
39
|
+
.src("./src/css/**/*.scss")
|
|
40
|
+
.pipe(
|
|
41
|
+
sass({
|
|
42
|
+
outputStyle: "compressed",
|
|
43
|
+
}).on("error", sass.logError)
|
|
44
|
+
)
|
|
45
|
+
.pipe(gulp.dest(baseHref + "css"))
|
|
46
|
+
})
|
|
47
|
+
|
|
48
|
+
// Define watch tasks
|
|
49
|
+
gulp.task("sass:watch", function () {
|
|
50
|
+
gulp.watch("./src/css/**/*.scss", gulp.series("sass"))
|
|
51
|
+
})
|
|
52
|
+
gulp.task("js:watch", function () {
|
|
53
|
+
gulp.watch("./src/js/**/*.js", gulp.series("js"))
|
|
54
|
+
})
|
|
55
|
+
|
|
56
|
+
// Define the default task
|
|
57
|
+
gulp.task("default", gulp.parallel("sass", "js", "sass:watch", "js:watch"))
|
|
58
|
+
|
|
59
|
+
// Define the build task
|
|
60
|
+
gulp.task("build", gulp.parallel("sass", "js"))
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "duet-eleventy-template",
|
|
3
|
+
"version": "2.0.0",
|
|
4
|
+
"description": "This package includes Duet Eleventy SSR Template project.",
|
|
5
|
+
"bugs": {
|
|
6
|
+
"email": "duetdesignsystem@lahitapiola.fi"
|
|
7
|
+
},
|
|
8
|
+
"license": "SEE LICENSE IN LICENSE.md",
|
|
9
|
+
"author": "LocalTapiola Services Ltd <duetdesignsystem@lahitapiola.fi>",
|
|
10
|
+
"main": "index.js",
|
|
11
|
+
"scripts": {
|
|
12
|
+
"build": "cross-env ELEVENTY_ENV=production npm-run-all --sequential copy:components \"gulp build\" eleventy",
|
|
13
|
+
"build:prototype": "cross-env ELEVENTY_ENV=production npm-run-all --sequential build:clean build:prepare build:login copy:components \"gulp build\" build:template build:encrypt",
|
|
14
|
+
"build:clean": "rm -rf ./dist",
|
|
15
|
+
"build:prepare": "mkdir -p ./dist",
|
|
16
|
+
"build:login": "ncp ./.github/workflows/login.template ./dist/index.html",
|
|
17
|
+
"build:template": "eleventy --input=./src --output=./dist/$DUET_TOKEN",
|
|
18
|
+
"build:encrypt": "node ./.github/workflows/encrypt.js $DUET_TOKEN passphrase",
|
|
19
|
+
"copy:components": "ncp ./node_modules/@duetds/components/lib ./src/js/components",
|
|
20
|
+
"eleventy": "eleventy",
|
|
21
|
+
"gulp": "gulp",
|
|
22
|
+
"server": "eleventy --serve --port=8000",
|
|
23
|
+
"start": "cross-env ELEVENTY_ENV=development npm-run-all --parallel copy:components gulp server",
|
|
24
|
+
"start:prod": "cross-env ELEVENTY_ENV=production npm-run-all --parallel copy:components gulp server",
|
|
25
|
+
"test": "npm-run-all --sequential \"gulp build\" \"eleventy --dryrun\""
|
|
26
|
+
},
|
|
27
|
+
"dependencies": {
|
|
28
|
+
"@11ty/eleventy": "2.0.1",
|
|
29
|
+
"@duetds/components": "latest",
|
|
30
|
+
"@duetds/css": "latest",
|
|
31
|
+
"@duetds/icons": "latest",
|
|
32
|
+
"@duetds/tokens": "latest",
|
|
33
|
+
"ansi-colors": "4.1.1",
|
|
34
|
+
"cross-env": "7.0.1",
|
|
35
|
+
"crypto-js": "4.0.0",
|
|
36
|
+
"fancy-log": "1.3.3",
|
|
37
|
+
"gulp": "4.0.2",
|
|
38
|
+
"gulp-concat": "2.6.1",
|
|
39
|
+
"gulp-rename": "2.0.0",
|
|
40
|
+
"gulp-sass": "5.1.0",
|
|
41
|
+
"gulp-terser": "1.2.0",
|
|
42
|
+
"html-minifier": "4.0.0",
|
|
43
|
+
"ncp": "2.0.0",
|
|
44
|
+
"npm-run-all": "4.1.5",
|
|
45
|
+
"prettier": "2.2.1",
|
|
46
|
+
"replace-in-file": "5.0.2",
|
|
47
|
+
"sass": "1.62.1",
|
|
48
|
+
"uglify-js": "3.8.0",
|
|
49
|
+
"yargs": "15.1.0"
|
|
50
|
+
}
|
|
51
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/* MAIN SCSS PARTIAL
|
|
2
|
+
--------------------------------------------- */
|
|
3
|
+
@charset "utf-8";
|
|
4
|
+
|
|
5
|
+
// Import Duet Design Tokens
|
|
6
|
+
@import "../../node_modules/@duetds/tokens/lib/tokens.scss";
|
|
7
|
+
|
|
8
|
+
// Import Duet CSS Framework
|
|
9
|
+
@import "../../node_modules/@duetds/css/lib/duet.min";
|
|
10
|
+
|
|
11
|
+
// Import any custom SCSS partials below
|
|
12
|
+
@import "partials/example.scss";
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DUET ELEVENTY DATA FILE
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
// Create a random string for cache busting needs
|
|
6
|
+
function chr4() {
|
|
7
|
+
return Math.random().toString(16).slice(-4)
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const githubProject = process.env.DUET_PROJECT_NAME ? process.env.DUET_PROJECT_NAME.toLowerCase() : ""
|
|
11
|
+
|
|
12
|
+
// Export environment variable and the current version so that
|
|
13
|
+
// they can be used on our website.
|
|
14
|
+
module.exports = {
|
|
15
|
+
environment: process.env.ELEVENTY_ENV,
|
|
16
|
+
baseHref: process.env.DUET_TOKEN ? `/${githubProject}/${process.env.DUET_TOKEN}` : "",
|
|
17
|
+
version: chr4() + "-" + chr4() + "-" + chr4(),
|
|
18
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<duet-footer
|
|
2
|
+
logo-href="{{ duet.baseHref }}"
|
|
3
|
+
language="fi"
|
|
4
|
+
items='[
|
|
5
|
+
{ "label": "Hae korvausta", "href": "#", "icon": "navigation-make-claim" },
|
|
6
|
+
{ "label": "Osta vakuutus", "href": "#", "icon": "action-buy-insurance" },
|
|
7
|
+
{ "label": "Yhteystiedot", "href": "#", "icon": "form-tel" }
|
|
8
|
+
]'
|
|
9
|
+
menu='[
|
|
10
|
+
{ "label": "Turvallisuus ja käyttöehdot", "href": "#" },
|
|
11
|
+
{ "label": "Evästeet", "href": "#" },
|
|
12
|
+
{ "label": "Henkilötietojen käsittely", "href": "#" }
|
|
13
|
+
]'
|
|
14
|
+
>
|
|
15
|
+
</duet-footer>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<duet-header
|
|
2
|
+
language="fi"
|
|
3
|
+
skip-to-id="#content"
|
|
4
|
+
contact="Ota yhteyttä"
|
|
5
|
+
logo-href="{{ duet.baseHref }}"
|
|
6
|
+
current-href="{{ duet.baseHref }}{{ page.url }}"
|
|
7
|
+
items='[
|
|
8
|
+
{ "label": "Etusivu", "href": "{{ duet.baseHref }}/" },
|
|
9
|
+
{ "label": "Vakuutukset", "href": "{{ duet.baseHref }}/vakuutukset/" },
|
|
10
|
+
{ "label": "Vahinkoasiat", "href": "{{ duet.baseHref }}/vahinkoasiat/" }
|
|
11
|
+
]'
|
|
12
|
+
language-items='[
|
|
13
|
+
{ "label": "Suomeksi", "country": "fi", "href": "#" },
|
|
14
|
+
{ "label": "På Svenska", "country": "sv", "href": "#" },
|
|
15
|
+
{ "label": "In English", "country": "en", "href": "#" }
|
|
16
|
+
]'
|
|
17
|
+
contact-items='[
|
|
18
|
+
{ "label": "Lähetä viesti", "href": "#" },
|
|
19
|
+
{ "label": "Avaa chat", "href": "#" },
|
|
20
|
+
{ "label": "Yhteystiedot", "href": "#" }
|
|
21
|
+
]'
|
|
22
|
+
session='{ "label": "Kirjaudu ulos", "href": "#", "type": "logout" }'
|
|
23
|
+
user='{ "label": "Laura", "href": "#" }'>
|
|
24
|
+
</duet-header>
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="fi" {% if html_class %}class="{{ html_class }}" {% endif %}>
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta name="author" content="LähiTapiola" />
|
|
6
|
+
<meta name="viewport" content="width=device-width,initial-scale=1.0" />
|
|
7
|
+
<meta name="format-detection" content="telephone=no" />
|
|
8
|
+
<meta name="robots" content="noindex,nofollow" />
|
|
9
|
+
<title>{% if title %}{{ title }} | {% endif %}LähiTapiola</title>
|
|
10
|
+
<link rel="icon" href="{{ duet.baseHref }}/favicon.ico" />
|
|
11
|
+
<link rel="modulepreload" href="{{ duet.baseHref }}/js/components/duet/duet.esm.js?v={{ duet.version }}" />
|
|
12
|
+
<link rel="apple-touch-icon" href="{{ duet.baseHref }}/assets/img/apple-touch-icon-180x180.png" />
|
|
13
|
+
<link rel="stylesheet" href="https://cdn.duetds.com/api/fonts/1.3.12/lib/localtapiola.css" />
|
|
14
|
+
<link rel="stylesheet" href="https://cdn.duetds.com/api/fonts/1.3.12/lib/turva.css" />
|
|
15
|
+
<link rel="stylesheet" href="{{ duet.baseHref }}/css/main.css?v={{ duet.version }}" />
|
|
16
|
+
<link rel="manifest" href="{{ duet.baseHref }}/manifest.json" />
|
|
17
|
+
<script type="module" src="{{ duet.baseHref }}/js/components/duet/duet.esm.js?v={{ duet.version }}"></script>
|
|
18
|
+
<script nomodule src="{{ duet.baseHref }}/js/components/duet/duet.js?v={{ duet.version }}"></script>
|
|
19
|
+
<script src="{{ duet.baseHref }}/js/scripts.min.js?v={{ duet.version }}"></script>
|
|
20
|
+
</head>
|
|
21
|
+
<body>
|
|
22
|
+
{% include "header.njk" %}
|
|
23
|
+
{{ content | safe }}
|
|
24
|
+
{% include "footer.njk" %}
|
|
25
|
+
</body>
|
|
26
|
+
</html>
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
---
|
|
2
|
+
layout: layout.njk
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
<duet-hero
|
|
6
|
+
heading="Etusivu"
|
|
7
|
+
image="https://cdn.duetds.com/api/assets/illustrations/placeholder-light.svg"
|
|
8
|
+
button-label="Toimintopainike"
|
|
9
|
+
button-url="#"
|
|
10
|
+
margin="none"
|
|
11
|
+
id="content"
|
|
12
|
+
description="Tämä teksti on luotu Hero-komponentin description-asetuksella. Voit lisätä tähän esimerkiksi ingressin.">
|
|
13
|
+
</duet-hero>
|
|
14
|
+
<duet-layout sticky>
|
|
15
|
+
<div slot="main">
|
|
16
|
+
<duet-card padding="large">
|
|
17
|
+
<duet-heading level="h2">Pääpalsta</duet-heading>
|
|
18
|
+
<duet-paragraph>
|
|
19
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
|
|
20
|
+
magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation
|
|
21
|
+
<duet-link url="#">ullamco laboris nisi ut aliquip</duet-link> ex ea commodo consequat. Duis aute irure dolor in
|
|
22
|
+
reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat
|
|
23
|
+
non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
|
24
|
+
</duet-paragraph>
|
|
25
|
+
<duet-paragraph>
|
|
26
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
|
|
27
|
+
magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
|
|
28
|
+
consequat.
|
|
29
|
+
</duet-paragraph>
|
|
30
|
+
<duet-heading level="h3">Otsikko 3</duet-heading>
|
|
31
|
+
<duet-paragraph>
|
|
32
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
|
|
33
|
+
magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation.
|
|
34
|
+
</duet-paragraph>
|
|
35
|
+
<duet-heading level="h4">Otsikko 4</duet-heading>
|
|
36
|
+
<duet-paragraph>
|
|
37
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
|
|
38
|
+
magna aliqua.
|
|
39
|
+
</duet-paragraph>
|
|
40
|
+
<duet-heading level="h5">Otsikko 5</duet-heading>
|
|
41
|
+
<duet-paragraph>
|
|
42
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
|
|
43
|
+
magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
|
|
44
|
+
consequat.
|
|
45
|
+
</duet-paragraph>
|
|
46
|
+
<duet-heading level="h6">Otsikko 6</duet-heading>
|
|
47
|
+
<duet-paragraph>
|
|
48
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
|
49
|
+
</duet-paragraph>
|
|
50
|
+
</duet-card>
|
|
51
|
+
</div>
|
|
52
|
+
<div slot="sidebar">
|
|
53
|
+
<duet-card padding="large" heading="Sivupalsta">
|
|
54
|
+
Sivupalstaa voidaan käyttää pääsisältöön liittyvän tiedon näyttämiseen tai vaihtoehtoisesti nostamaan esiin
|
|
55
|
+
aiheeseen liittyvää muuta sisältöä.
|
|
56
|
+
</duet-card>
|
|
57
|
+
</div>
|
|
58
|
+
</duet-layout>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
// Include any custom JavaScript here
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"icons": [
|
|
3
|
+
{
|
|
4
|
+
"src": "/assets/img/apple-touch-icon-180x180.png",
|
|
5
|
+
"sizes": "180x180",
|
|
6
|
+
"type": "image/png"
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
"src": "/assets/img/android-chrome-192x192.png",
|
|
10
|
+
"sizes": "192x192",
|
|
11
|
+
"type": "image/png"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"src": "/assets/img/splash-screen-icon-512x512.png",
|
|
15
|
+
"sizes": "512x512",
|
|
16
|
+
"type": "image/png"
|
|
17
|
+
}
|
|
18
|
+
]
|
|
19
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Vahinkoasiat
|
|
3
|
+
layout: layout.njk
|
|
4
|
+
html_class: "duet-bg-gradient"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
<duet-layout center>
|
|
8
|
+
<div slot="main">
|
|
9
|
+
<duet-card padding="large">
|
|
10
|
+
<duet-heading level="h1" visual-level="h2">Vahinkoasiat</duet-heading>
|
|
11
|
+
<duet-paragraph>
|
|
12
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
|
|
13
|
+
magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation
|
|
14
|
+
<duet-link url="#">ullamco laboris nisi ut aliquip</duet-link> ex ea commodo consequat. Duis aute irure dolor in
|
|
15
|
+
reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat
|
|
16
|
+
non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
|
17
|
+
</duet-paragraph>
|
|
18
|
+
<duet-paragraph>
|
|
19
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
|
|
20
|
+
magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
|
|
21
|
+
consequat.
|
|
22
|
+
</duet-paragraph>
|
|
23
|
+
<duet-heading level="h3">Otsikko 3</duet-heading>
|
|
24
|
+
<duet-paragraph>
|
|
25
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
|
|
26
|
+
magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation.
|
|
27
|
+
</duet-paragraph>
|
|
28
|
+
<duet-heading level="h4">Otsikko 4</duet-heading>
|
|
29
|
+
<duet-paragraph>
|
|
30
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
|
|
31
|
+
magna aliqua.
|
|
32
|
+
</duet-paragraph>
|
|
33
|
+
<duet-heading level="h5">Otsikko 5</duet-heading>
|
|
34
|
+
<duet-paragraph>
|
|
35
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
|
|
36
|
+
magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
|
|
37
|
+
consequat.
|
|
38
|
+
</duet-paragraph>
|
|
39
|
+
<duet-heading level="h6">Otsikko 6</duet-heading>
|
|
40
|
+
<duet-paragraph>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</duet-paragraph>
|
|
41
|
+
</duet-card>
|
|
42
|
+
</div>
|
|
43
|
+
</duet-layout>
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Vakuutukset
|
|
3
|
+
layout: layout.njk
|
|
4
|
+
html_class: "duet-bg-gradient"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
<duet-layout sticky id="content">
|
|
8
|
+
<div slot="main">
|
|
9
|
+
<duet-card padding="large">
|
|
10
|
+
<duet-heading level="h1" visual-level="h2">Vakuutukset</duet-heading>
|
|
11
|
+
<duet-paragraph>
|
|
12
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
|
|
13
|
+
magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation
|
|
14
|
+
<duet-link url="#">ullamco laboris nisi ut aliquip</duet-link> ex ea commodo consequat. Duis aute irure dolor in
|
|
15
|
+
reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat
|
|
16
|
+
non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
|
17
|
+
</duet-paragraph>
|
|
18
|
+
<duet-paragraph>
|
|
19
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
|
|
20
|
+
magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
|
|
21
|
+
consequat.
|
|
22
|
+
</duet-paragraph>
|
|
23
|
+
<duet-heading level="h3">Otsikko 3</duet-heading>
|
|
24
|
+
<duet-paragraph>
|
|
25
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
|
|
26
|
+
magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation.
|
|
27
|
+
</duet-paragraph>
|
|
28
|
+
<duet-heading level="h4">Otsikko 4</duet-heading>
|
|
29
|
+
<duet-paragraph>
|
|
30
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
|
|
31
|
+
magna aliqua.
|
|
32
|
+
</duet-paragraph>
|
|
33
|
+
<duet-heading level="h5">Otsikko 5</duet-heading>
|
|
34
|
+
<duet-paragraph>
|
|
35
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
|
|
36
|
+
magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
|
|
37
|
+
consequat.
|
|
38
|
+
</duet-paragraph>
|
|
39
|
+
<duet-heading level="h6">Otsikko 6</duet-heading>
|
|
40
|
+
<duet-paragraph>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</duet-paragraph>
|
|
41
|
+
</duet-card>
|
|
42
|
+
</div>
|
|
43
|
+
<div slot="sidebar">
|
|
44
|
+
<duet-card padding="large" heading="Sivupalsta">
|
|
45
|
+
Sivupalstaa voidaan käyttää pääsisältöön liittyvän tiedon näyttämiseen tai vaihtoehtoisesti nostamaan esiin
|
|
46
|
+
aiheeseen liittyvää muuta sisältöä.
|
|
47
|
+
</duet-card>
|
|
48
|
+
</div>
|
|
49
|
+
</duet-layout>
|