Compare commits

..

No commits in common. "4711fcbd49dc37e165bc2fa41d7513127ddce584" and "c5fe315a2e6abdf56aa52667cb7056fe38fd4ffa" have entirely different histories.

108 changed files with 5028 additions and 6356 deletions

View File

@ -1,8 +0,0 @@
root = true
[*]
indent_style = space
indent_size = 2
charset = utf-8
trim_trailing_whitespace = false
insert_final_newline = false

1
.gitignore vendored
View File

@ -1,4 +1,3 @@
.vscode/*
resources/_gen/*
public/*
hokus.toml

View File

@ -18,10 +18,6 @@ pluralizeListTitles = false
googleAnalytics = "UA-12671637-1"
[mediaTypes]
[mediaTypes."image/svg+xml"]
suffixes = ["svg"]
[menu]
[[menu.main]]
identifier = "ueber-uns"
@ -38,10 +34,10 @@ googleAnalytics = "UA-12671637-1"
weight = -800
[[menu.main]]
identifier = "katalog"
name = "Katalog"
title = "Katalog"
url = "/katalog"
identifier = "galerie"
name = "Galerie"
title = "Galerie"
url = "/galerie"
weight = -500
[[menu.main]]

View File

@ -4,7 +4,6 @@ draft = false
title = "Neff Stein-Design"
galleries = ["gemeinschaftsgrab", "grabmal", "bauen-und-wohnen"]
about_us = ["qualitaet", "tradition", "handwerk"]
[menu]
[menu.footer]

Binary file not shown.

Before

Width:  |  Height:  |  Size: 356 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 356 KiB

View File

@ -1,9 +0,0 @@
+++
title = "Katalog"
date = "2019-01-10T04:14:10+01:00"
draft = false
keywords = []
type = "gallery"
outputs = ["HTML", "JSON"]
show_breadcrumbs = true
+++

View File

@ -1,7 +0,0 @@
+++
title = "Grabsteine"
date = "2019-01-10T04:14:10+01:00"
draft = false
keywords = []
type = "gallery"
+++

View File

@ -1,8 +0,0 @@
+++
title = "Laternen"
date = "2019-01-10T04:14:10+01:00"
draft = false
type = "catalog"
keywords = []
+++

View File

@ -1,10 +0,0 @@
+++
title = "Urnengrabanlagen"
date = "2019-01-10T04:14:10+01:00"
draft = false
type = "gallery"
keywords = []
outputs = ["HTML", "JSON"]
show_breadcrumbs = true
+++

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

View File

@ -1,36 +0,0 @@
+++
title = "Urnengrab Abdeckung"
date = "2019-05-02T06:30:55+02:00"
draft = false
type = "catalog"
alt = "Urnengrababdeckung mit Umrandung"
material = "PP4, poliert"
article_id = "0001"
ornament = "Kreuz"
description = "Urnengrab Abdeckplatte mit verklebter Einfassung"
offer = "/aktionen/preisbeispiel-urnengrab-2019/"
used_for = ["Urnengrab"]
keywords = []
outputs = ["HTML", "JSON"]
show_breadcrumbs = true
[[resources]]
title = "Test #:counter"
src = "bilder/abdeckung.png"
[resources.params]
alt = "Bild von einem Test"
featured = true
[[resources]]
title = "Model"
src = "model/abdeckung.gltf"
[resources.params]
alt = "Bild von einem Test"
[[resources.params.textures]]
name = "Granit 1"
filename = "granit.jpg"
[[resources.params.textures]]
name = "Granit 2"
filename = "1280px-Rosa-Beta-Granit.jpg"
+++

Binary file not shown.

Before

Width:  |  Height:  |  Size: 416 KiB

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 577 KiB

View File

@ -1,5 +1,5 @@
+++
title = "Lieferanten und Partner"
title = "Zulieferer Und Partnerbetriebe"
date = "2019-01-12T08:59:01+01:00"
draft = false
type = "page"

View File

@ -1,8 +0,0 @@
+++
title = "Über Uns"
date = "2019-01-10T02:27:09+01:00"
draft = false
type = "page"
keywords = []
headless = true
+++

View File

@ -6,13 +6,6 @@ type = "ueber-uns"
weight = -100
icon = "knuepfel"
headless = true
[[resources]]
title = "Handwerk"
src = "bilder/knuepfel.svg"
[resources.params]
alt = "Knüpfel, Zirkel und Meißel"
featured = true
+++
Wir planen und fertigen Arbeiten aus Naturstein im Wohnbereich, wie zum

View File

@ -1,82 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg1819"
version="1.1"
viewBox="0 0 52.916665 52.916668"
height="200"
width="200"
sodipodi:docname="knuepfel.svg"
inkscape:version="0.92.2 2405546, 2018-03-11">
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1366"
inkscape:window-height="721"
id="namedview14"
showgrid="false"
inkscape:zoom="2.36"
inkscape:cx="84.322034"
inkscape:cy="98.121025"
inkscape:window-x="0"
inkscape:window-y="23"
inkscape:window-maximized="1"
inkscape:current-layer="svg1819" />
<defs
id="defs1813" />
<metadata
id="metadata1816">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<path
style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.52192783;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 65.123047 110.95117 L 52.9375 125.51367 C 52.9375 125.51367 56.94691 128.77952 59.326172 129.67383 C 60.637649 130.1666 62.090737 130.17013 63.488281 130.26953 C 65.217657 130.39237 67.182971 129.41139 68.689453 130.26953 C 73.979343 133.28271 81.58929 137.80619 89.490234 142.54102 C 90.480772 142.00384 91.547675 141.42215 92.572266 140.86523 C 92.471269 138.27974 92.368575 136.24016 92.267578 134.41211 C 85.490866 130.18256 78.973226 125.93594 73.890625 122.24414 C 72.30969 121.09581 71.935157 118.85977 70.917969 117.19141 C 70.338488 116.24101 69.863965 115.21024 69.134766 114.36914 C 67.983858 113.04169 65.123047 110.95117 65.123047 110.95117 z M 105.55859 142.51562 C 104.72258 142.99751 103.90845 143.47243 103.08008 143.95117 C 102.92667 146.11675 102.76966 148.25666 102.62109 150.46094 C 114.6472 157.73649 125.16016 164.15039 125.16016 164.15039 C 129.51661 182.15765 146.45518 151.76132 130.0625 156.7207 C 130.0625 156.7207 118.77102 150.39961 105.55859 142.51562 z "
transform="scale(0.26458333)"
id="path5800" />
<path
style="display:inline;opacity:1;fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.141;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="M 101.19141 29.197266 C 100.09889 29.178368 99.009611 29.284318 97.964844 29.515625 C 95.06138 30.158485 92.17614 31.718697 90.236328 33.972656 C 88.46622 36.029475 87.235279 38.839298 87.265625 41.552734 C 87.298507 44.505604 87.493428 48.329946 89.421875 50.566406 C 91.075192 52.483723 91.548173 54.145739 93.445312 56.335938 C 90.827109 59.8645 86.947564 65.107908 82.669922 70.910156 L 85.068359 70.931641 L 93.802734 59.533203 L 95.4375 61.761719 L 87.6875 70.955078 L 91.683594 70.990234 C 94.335731 67.913359 96.838211 65.016899 100.36328 60.886719 C 103.45924 64.454176 106.34456 67.759629 109.29492 71.144531 L 112.56836 71.173828 L 95.720703 51.935547 C 95.720703 51.935547 93.43755 49.60401 92.599609 48.220703 C 91.655941 46.66282 90.695204 44.980895 90.519531 43.167969 C 90.348991 41.408145 90.301886 39.278753 91.035156 37.669922 C 91.60633 36.416706 91.657374 36.003228 92.615234 35.013672 C 93.643039 33.951889 94.693145 32.812433 96.033203 32.189453 C 97.539832 31.489069 99.276197 31.274198 100.9375 31.296875 C 102.86092 31.323483 104.90244 31.55218 106.58398 32.486328 C 108.02341 33.285963 109.47428 34.376143 110.37305 35.755859 C 111.3672 37.281995 112.19221 39.005986 112.45312 40.808594 C 112.66003 42.23786 112.14772 44.06525 111.63672 45.416016 C 111.03362 47.01022 108.66406 49.576172 108.66406 49.576172 L 106.13867 47.941406 C 106.13867 47.941406 108.46448 45.392992 108.8125 43.78125 C 109.17182 42.117313 109.327 39.889881 108.58984 38.355469 C 107.7399 36.58631 105.86594 35.17875 104.05664 34.417969 C 102.22956 33.649629 99.943026 33.804491 98.113281 34.566406 C 96.593174 35.199364 95.393244 36.571928 94.546875 37.984375 C 93.88587 39.087506 93.474489 40.413575 93.505859 41.699219 C 93.54785 43.421776 95.140625 46.603516 95.140625 46.603516 L 114.64844 71.191406 L 118.51172 71.224609 C 113.63065 64.650071 109.19167 58.765362 106.24023 55.013672 C 108.17389 52.789798 109.91779 51.954899 111.54297 50.076172 C 112.68828 48.752166 114.16665 45.041674 114.50586 43.324219 C 115.10163 40.307664 114.38767 37.49096 113.00977 34.742188 C 111.85866 32.445898 109.54704 30.705764 107.16992 29.732422 C 105.53721 29.063861 102.99271 29.227199 101.19141 29.197266 z M 101.11719 36.160156 C 102.00122 36.148818 102.90603 36.353031 103.68555 36.720703 C 104.63598 37.168842 105.49599 37.987959 105.91602 38.951172 C 106.45099 40.177969 106.45221 41.6825 106.0625 42.962891 C 105.56902 44.584119 104.08145 46.455981 103.07617 47.820312 C 102.39007 48.751475 101.35937 50.130053 100.62109 51.128906 C 100.31193 50.747816 99.975351 50.321251 99.673828 49.953125 C 98.462936 48.474763 96.616187 46.924244 95.810547 45.191406 C 95.41037 44.330581 95.35207 43.3144 95.439453 42.369141 C 95.549778 41.175868 95.869154 39.935436 96.552734 38.951172 C 97.347059 37.807411 98.487132 36.745213 99.822266 36.349609 C 100.23649 36.226775 100.67404 36.166203 101.11719 36.160156 z M 123.97656 78.626953 C 123.93837 80.023017 123.87294 81.381563 123.78906 82.710938 L 134.52148 96.238281 L 123.71484 83.900391 C 123.62848 85.065503 123.52475 86.203761 123.4043 87.316406 C 132.4951 97.722648 139.49067 105.74859 141.59961 108.4082 C 141.05499 107.63208 156.34004 124.62957 147.58789 111.66016 C 142.64309 104.33266 133.0627 90.996978 123.97656 78.626953 z M 73.066406 83.992188 C 64.648921 95.528402 56.249212 107.23309 51.917969 113.86328 C 43.662589 126.50047 60.855323 106.50239 64.40625 102.35742 C 68.089744 98.057678 71.002496 94.717386 73.835938 91.484375 C 73.662329 90.327092 73.505973 89.144312 73.378906 87.927734 L 58.732422 105.30273 L 73.238281 86.373047 C 73.171069 85.591578 73.113961 84.796967 73.066406 83.992188 z "
transform="scale(0.26458333)"
id="path5789" />
<path
style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.52192783;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 134.32031 113.62305 C 134.32031 113.62305 130.79015 116.05151 129.79883 116.83398 C 128.74829 117.66317 127.77315 118.98272 126.85352 119.95508 C 125.38359 121.5093 123.75787 123.80691 121.88672 124.84375 C 116.77982 127.6736 110.38249 131.17301 103.77734 134.77344 C 103.52851 137.69856 103.30236 140.80771 103.08008 143.94531 C 110.95998 139.38528 118.90194 134.86155 124.94531 131.60938 C 126.2103 130.92864 130.02691 131.12386 131.46289 131.08398 C 133.24822 131.03447 135.07047 131.18094 136.8125 130.78711 C 138.8492 130.3265 143.55273 127.7793 143.55273 127.7793 L 134.32031 113.62305 z M 92.572266 140.86523 C 79.396877 148.01666 67.945313 154.19531 67.945312 154.19531 C 49.81758 149.12655 71.354864 178.84597 72.167969 162.14258 C 72.167969 162.14258 81.442552 156.58625 92.861328 149.89258 C 92.764245 146.41978 92.669349 143.35056 92.572266 140.86523 z "
transform="scale(0.26458333)"
id="path5802" />
<circle
style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="path1466"
cx="26.458334"
cy="26.458336"
r="23.916712" />
<path
style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.52192783;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 91.40625 122.26758 C 91.958083 129.97459 92.508718 133.14788 93.060547 157.61328 C 80.986774 175.39781 117.03311 172.66904 102.125 157.76172 C 102.99689 145.10042 103.78476 131.75831 105.09375 122.59375 C 100.6215 124.54783 95.859635 124.41081 91.40625 122.26758 z "
transform="scale(0.26458333)"
id="path5798" />
<path
inkscape:connector-curvature="0"
id="path5796"
d="m 19.353565,18.73958 c -1.202171,17.87131 14.011217,19.56618 13.446989,0.11797 z"
style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.66726005;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</svg>

Before

Width:  |  Height:  |  Size: 8.8 KiB

View File

@ -6,13 +6,6 @@ type = "ueber-uns"
weight = -300
icon = "qualitaet"
headless = true
[[resources]]
title = "Qualität"
src = "bilder/qualitaet.svg"
[resources.params]
alt = ""
featured = true
+++
Eigene Ideen oder die unserer Kunden werden so umgesetzt, dass daraus

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 12 KiB

View File

@ -6,13 +6,6 @@ type = "ueber-uns"
weight = -200
icon = "4w"
headless = true
[[resources]]
title = "Tradition"
src = "bilder/4w.svg"
[resources.params]
alt = "4W - Das Symbol der Steinmetz Zunft"
featured = true
+++
Die Firma wurde [um 1900](/firmengeschichte) in Niederkassel gegründet. Zu

View File

@ -1,41 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
id="svg896"
version="1.1"
viewBox="0 0 52.916665 52.916668"
height="200"
width="200">
<defs
id="defs890" />
<metadata
id="metadata893">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(0,-244.08332)"
id="layer1">
<path
id="path5469"
d="m 28.179157,249.82276 c -4.420459,5.47409 -9.277968,10.71866 -14.800645,15.09055 0.894629,0.72064 1.076716,1.33575 1.430403,1.9482 2.731994,-0.11156 5.67589,-0.22416 8.596375,-0.32608 -0.0303,3.93657 -0.131824,7.87356 -0.408761,11.81013 -0.654239,0.89429 -1.447923,1.68127 -2.487703,2.56987 -0.75986,-0.80699 -0.934957,-1.4966 -1.160653,-2.19676 -2.163561,0.4878 -4.297944,0.66823 -6.674528,2.19676 1.694748,2.22521 3.114137,4.65755 4.146001,7.37992 0.75394,0.57647 1.428146,1.19277 1.90686,1.90686 1.245662,-0.35175 2.31315,-0.65543 3.586344,-0.70435 1.929627,-2.58386 3.181996,-3.63098 4.311365,-4.56097 1.049615,0.96607 2.202023,2.2378 2.881479,3.35846 0.488719,0.37392 0.901057,0.70016 1.285192,1.49241 1.514697,-0.39353 2.791309,-0.74655 3.979601,-0.70487 1.345631,-2.77766 3.385603,-5.61747 5.472535,-8.10493 -1.715958,-0.97873 -3.438961,-2.34252 -6.434748,-2.99258 -0.213321,0.78078 -0.588473,1.6444 -1.305349,2.42518 -0.778372,-0.5187 -1.27491,-1.20648 -1.784903,-1.88619 -0.145523,-3.88259 -0.403831,-8.27059 -0.418062,-12.2282 2.122479,-0.0531 3.633739,-0.0484 5.382617,-0.0563 1.216086,-2.6258 2.432264,-5.04507 3.648355,-6.4673 -3.165533,0.34541 -5.833393,0.50757 -8.998934,0.67541 0.04746,-3.13993 0.140512,-6.30592 0.293005,-9.50588 z m -0.0956,2.06861 c -0.145047,3.22857 -0.167066,6.4726 -0.133326,9.71206 2.641359,-0.10112 5.23082,-0.21686 7.755083,-0.44855 l -2.081527,3.31246 c -1.828247,-0.008 -3.711787,0.0278 -5.627047,0.0827 0.09616,4.96627 0.195659,10.19838 0.445968,14.95826 1.062903,1.23025 2.024261,2.26702 3.308323,3.38636 0.881605,-1.05753 1.706079,-2.14935 2.313554,-3.37137 1.156354,0.17376 2.493574,0.95128 3.399277,1.55701 -1.731807,2.02273 -2.838635,3.98361 -4.217829,6.00635 l -2.960545,0.49816 c -1.16369,-1.49534 -3.312726,-3.72192 -4.754747,-5.06118 -1.948852,1.66453 -3.732669,3.34259 -5.362464,5.21983 l -2.426725,0.35553 c -1.109613,-2.33287 -2.180791,-4.80782 -3.800802,-6.73395 1.056091,-0.88633 2.622465,-1.15811 3.765145,-1.33119 0.461399,1.08847 1.026032,2.12571 1.817977,3.04891 1.518815,-1.25319 3.218106,-2.77324 4.514453,-4.36821 0.156095,-4.68114 0.313934,-9.36243 0.371554,-14.04358 -3.00465,0.11549 -6.068721,0.25536 -9.137427,0.35346 4.499122,-4.04578 9.188451,-8.96273 12.811105,-13.13304 z m -3.664376,6.56652 c -1.113911,1.18038 -1.761445,2.02216 -3.254065,3.42976 1.098007,-0.0593 2.185991,-0.10614 3.266467,-0.14934 0.0023,-1.09343 3.87e-4,-2.18699 -0.0124,-3.28042 z"
style="display:inline;opacity:1;fill:#000000;fill-rule:evenodd;stroke:none;stroke-width:0.08445571px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<circle
r="23.916712"
cy="270.54166"
cx="26.458334"
id="path1466"
style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.99999999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.7 KiB

View File

@ -1,2 +0,0 @@
[[entry]]
name = "Hallo"

776
package-lock.json generated Normal file
View File

@ -0,0 +1,776 @@
{
"requires": true,
"lockfileVersion": 1,
"dependencies": {
"ajv": {
"version": "6.7.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.7.0.tgz",
"integrity": "sha512-RZXPviBTtfmtka9n9sy1N5M5b82CbxWIR6HIis4s3WQTXDJamc/0gpCWNGz6EWdWp4DOfjzJfhz/AS9zVPjjWg==",
"dev": true,
"requires": {
"fast-deep-equal": "^2.0.1",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.4.1",
"uri-js": "^4.2.2"
}
},
"asn1": {
"version": "0.2.4",
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
"integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
"dev": true,
"requires": {
"safer-buffer": "~2.1.0"
}
},
"assert-plus": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
"dev": true
},
"asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
"dev": true
},
"aws-sign2": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
"integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
"dev": true
},
"aws4": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
"integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==",
"dev": true
},
"bcrypt-pbkdf": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
"integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
"dev": true,
"requires": {
"tweetnacl": "^0.14.3"
}
},
"big.js": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz",
"integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==",
"dev": true
},
"caseless": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
"integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
"dev": true
},
"chownr": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz",
"integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==",
"dev": true
},
"color": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/color/-/color-3.1.0.tgz",
"integrity": "sha512-CwyopLkuRYO5ei2EpzpIh6LqJMt6Mt+jZhO5VI5f/wJLZriXQE32/SSqzmrh+QB+AZT81Cj8yv+7zwToW8ahZg==",
"dev": true,
"requires": {
"color-convert": "^1.9.1",
"color-string": "^1.5.2"
}
},
"color-convert": {
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
"dev": true,
"requires": {
"color-name": "1.1.3"
}
},
"color-name": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
"dev": true
},
"color-string": {
"version": "1.5.3",
"resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz",
"integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==",
"dev": true,
"requires": {
"color-name": "^1.0.0",
"simple-swizzle": "^0.2.2"
}
},
"combined-stream": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz",
"integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==",
"dev": true,
"requires": {
"delayed-stream": "~1.0.0"
}
},
"core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
"dev": true
},
"cwise-compiler": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/cwise-compiler/-/cwise-compiler-1.1.3.tgz",
"integrity": "sha1-9NZnQQ6FDToxOn0tt7HlBbsDTMU=",
"dev": true,
"requires": {
"uniq": "^1.0.0"
}
},
"dashdash": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
"integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
"dev": true,
"requires": {
"assert-plus": "^1.0.0"
}
},
"data-uri-to-buffer": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-0.0.3.tgz",
"integrity": "sha1-GK6XmmoMqZSwYlhTkW0mYruuCxo=",
"dev": true
},
"datauri": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/datauri/-/datauri-1.0.5.tgz",
"integrity": "sha1-0JddGrbI8uDOPKQ7qkU5vhLSiaA=",
"dev": true,
"requires": {
"image-size": "^0.3.5",
"mimer": "^0.2.1",
"semver": "^5.0.3"
},
"dependencies": {
"image-size": {
"version": "0.3.5",
"resolved": "https://registry.npmjs.org/image-size/-/image-size-0.3.5.tgz",
"integrity": "sha1-gyQOqy+1sAsEqrjHSwRx6cunrYw=",
"dev": true
}
}
},
"decompress-response": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
"integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=",
"dev": true,
"requires": {
"mimic-response": "^1.0.0"
}
},
"delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
"dev": true
},
"detect-libc": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
"integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=",
"dev": true
},
"ecc-jsbn": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
"integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
"dev": true,
"requires": {
"jsbn": "~0.1.0",
"safer-buffer": "^2.1.0"
}
},
"emojis-list": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz",
"integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=",
"dev": true
},
"extend": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
"dev": true
},
"extsprintf": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
"integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
"dev": true
},
"fast-deep-equal": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
"integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
"dev": true
},
"fast-json-stable-stringify": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
"integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
"dev": true
},
"forever-agent": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
"integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
"dev": true
},
"form-data": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
"integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
"dev": true,
"requires": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.6",
"mime-types": "^2.1.12"
}
},
"fs-minipass": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz",
"integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==",
"dev": true,
"requires": {
"minipass": "^2.2.1"
}
},
"get-pixels": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/get-pixels/-/get-pixels-3.3.0.tgz",
"integrity": "sha1-jZeVvq4YhQuED3SVgbrcBdPjbkE=",
"dev": true,
"requires": {
"data-uri-to-buffer": "0.0.3",
"jpeg-js": "^0.1.1",
"mime-types": "^2.0.1",
"ndarray": "^1.0.13",
"ndarray-pack": "^1.1.1",
"node-bitmap": "0.0.1",
"omggif": "^1.0.5",
"parse-data-uri": "^0.2.0",
"pngjs": "^2.0.0",
"request": "^2.44.0",
"through": "^2.3.4"
}
},
"getpass": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
"integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
"dev": true,
"requires": {
"assert-plus": "^1.0.0"
}
},
"har-schema": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
"integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
"dev": true
},
"har-validator": {
"version": "5.1.3",
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
"integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
"dev": true,
"requires": {
"ajv": "^6.5.5",
"har-schema": "^2.0.0"
}
},
"http-signature": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
"integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
"dev": true,
"requires": {
"assert-plus": "^1.0.0",
"jsprim": "^1.2.2",
"sshpk": "^1.7.0"
}
},
"image-size": {
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.1.tgz",
"integrity": "sha1-KO6oVIpLFENIDd3cHgg65UZSQ58=",
"dev": true
},
"iota-array": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/iota-array/-/iota-array-1.0.0.tgz",
"integrity": "sha1-ge9X/l0FgUzVjCSDYyqZwwoOgIc=",
"dev": true
},
"is-arrayish": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
"integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==",
"dev": true
},
"is-buffer": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
"dev": true
},
"is-typedarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
"integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
"dev": true
},
"isstream": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
"integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
"dev": true
},
"jpeg-js": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.1.2.tgz",
"integrity": "sha1-E1uZLAV1yYXPoPSUoyJ+0jhYPs4=",
"dev": true
},
"jsbn": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
"integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
"dev": true
},
"json-schema": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
"integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
"dev": true
},
"json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
"dev": true
},
"json-stringify-safe": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
"integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
"dev": true
},
"json5": {
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
"integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
"dev": true
},
"jsprim": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
"integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
"dev": true,
"requires": {
"assert-plus": "1.0.0",
"extsprintf": "1.3.0",
"json-schema": "0.2.3",
"verror": "1.10.0"
}
},
"loader-utils": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz",
"integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=",
"dev": true,
"requires": {
"big.js": "^3.1.3",
"emojis-list": "^2.0.0",
"json5": "^0.5.0"
}
},
"mime-db": {
"version": "1.37.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz",
"integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==",
"dev": true
},
"mime-types": {
"version": "2.1.21",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz",
"integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==",
"dev": true,
"requires": {
"mime-db": "~1.37.0"
}
},
"mimer": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/mimer/-/mimer-0.2.3.tgz",
"integrity": "sha512-cICHJPMZUdZMqWaOQ+Eh0hHo1R6IUCiBee7WvIGGUJsZyjdMUInxQVmyu8hKj5uCy+Bi+Wlp/EsdUR61yOdWOw==",
"dev": true
},
"mimic-response": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
"integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
"dev": true
},
"minimist": {
"version": "0.0.8",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
"dev": true
},
"minipass": {
"version": "2.3.5",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz",
"integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==",
"dev": true,
"requires": {
"safe-buffer": "^5.1.2",
"yallist": "^3.0.0"
}
},
"minizlib": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.2.1.tgz",
"integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==",
"dev": true,
"requires": {
"minipass": "^2.2.1"
}
},
"mkdirp": {
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
"dev": true,
"requires": {
"minimist": "0.0.8"
}
},
"nan": {
"version": "2.12.1",
"resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz",
"integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==",
"dev": true
},
"ndarray": {
"version": "1.0.18",
"resolved": "https://registry.npmjs.org/ndarray/-/ndarray-1.0.18.tgz",
"integrity": "sha1-tg06cyJOxVXQ+qeXEeUCRI/T95M=",
"dev": true,
"requires": {
"iota-array": "^1.0.0",
"is-buffer": "^1.0.2"
}
},
"ndarray-pack": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/ndarray-pack/-/ndarray-pack-1.2.1.tgz",
"integrity": "sha1-jK6+qqJNXs9w/4YCBjeXfajuWFo=",
"dev": true,
"requires": {
"cwise-compiler": "^1.1.2",
"ndarray": "^1.0.13"
}
},
"node-bitmap": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/node-bitmap/-/node-bitmap-0.0.1.tgz",
"integrity": "sha1-GA6scAPgxwdhjvMTaPYvhLKmkJE=",
"dev": true
},
"oauth-sign": {
"version": "0.9.0",
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
"integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
"dev": true
},
"omggif": {
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.9.tgz",
"integrity": "sha1-3LcCTazVDFK00wPwSALJHAV8dl8=",
"dev": true
},
"once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"dev": true,
"requires": {
"wrappy": "1"
}
},
"parse-data-uri": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/parse-data-uri/-/parse-data-uri-0.2.0.tgz",
"integrity": "sha1-vwTYUd1ch7CrI45dAazklLYEtMk=",
"dev": true,
"requires": {
"data-uri-to-buffer": "0.0.3"
}
},
"performance-now": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
"integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
"dev": true
},
"pngjs": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/pngjs/-/pngjs-2.3.1.tgz",
"integrity": "sha1-EdHhK5y2TWPjDBQ6Mw9MH1Z9qF8=",
"dev": true
},
"psl": {
"version": "1.1.31",
"resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz",
"integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==",
"dev": true
},
"punycode": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
"dev": true
},
"qs": {
"version": "6.5.2",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
"integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
"dev": true
},
"request": {
"version": "2.88.0",
"resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
"integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
"dev": true,
"requires": {
"aws-sign2": "~0.7.0",
"aws4": "^1.8.0",
"caseless": "~0.12.0",
"combined-stream": "~1.0.6",
"extend": "~3.0.2",
"forever-agent": "~0.6.1",
"form-data": "~2.3.2",
"har-validator": "~5.1.0",
"http-signature": "~1.2.0",
"is-typedarray": "~1.0.0",
"isstream": "~0.1.2",
"json-stringify-safe": "~5.0.1",
"mime-types": "~2.1.19",
"oauth-sign": "~0.9.0",
"performance-now": "^2.1.0",
"qs": "~6.5.2",
"safe-buffer": "^5.1.2",
"tough-cookie": "~2.4.3",
"tunnel-agent": "^0.6.0",
"uuid": "^3.3.2"
}
},
"safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
"dev": true
},
"safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
"dev": true
},
"semver": {
"version": "5.6.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz",
"integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==",
"dev": true
},
"sharp": {
"version": "0.19.1",
"resolved": "https://registry.npmjs.org/sharp/-/sharp-0.19.1.tgz",
"integrity": "sha1-gZvxH1w/T/MutGXyVbX7h+Q87qE=",
"dev": true,
"requires": {
"color": "^3.0.0",
"detect-libc": "^1.0.3",
"nan": "^2.9.2",
"semver": "^5.5.0",
"simple-get": "^2.7.0",
"tar": "^4.4.0",
"tunnel-agent": "^0.6.0"
}
},
"simple-concat": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.0.tgz",
"integrity": "sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY=",
"dev": true
},
"simple-get": {
"version": "2.8.1",
"resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.8.1.tgz",
"integrity": "sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw==",
"dev": true,
"requires": {
"decompress-response": "^3.3.0",
"once": "^1.3.1",
"simple-concat": "^1.0.0"
}
},
"simple-swizzle": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
"integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=",
"dev": true,
"requires": {
"is-arrayish": "^0.3.1"
}
},
"srcset-loader": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/srcset-loader/-/srcset-loader-2.3.0.tgz",
"integrity": "sha512-b8U7Oqdy5Nrypuu0+CgwD8lW2idRNDzV968xWoVW66bqWQyKUiYVgmJRQs/gTZOgNAd+rVZwSu99TmB2HvAsOw==",
"dev": true,
"requires": {
"datauri": "1.0.5",
"get-pixels": "3.3.0",
"image-size": "0.5.1",
"loader-utils": "1.1.0",
"sharp": "^0.19.0"
}
},
"sshpk": {
"version": "1.16.0",
"resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.0.tgz",
"integrity": "sha512-Zhev35/y7hRMcID/upReIvRse+I9SVhyVre/KTJSJQWMz3C3+G+HpO7m1wK/yckEtujKZ7dS4hkVxAnmHaIGVQ==",
"dev": true,
"requires": {
"asn1": "~0.2.3",
"assert-plus": "^1.0.0",
"bcrypt-pbkdf": "^1.0.0",
"dashdash": "^1.12.0",
"ecc-jsbn": "~0.1.1",
"getpass": "^0.1.1",
"jsbn": "~0.1.0",
"safer-buffer": "^2.0.2",
"tweetnacl": "~0.14.0"
}
},
"tar": {
"version": "4.4.8",
"resolved": "https://registry.npmjs.org/tar/-/tar-4.4.8.tgz",
"integrity": "sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==",
"dev": true,
"requires": {
"chownr": "^1.1.1",
"fs-minipass": "^1.2.5",
"minipass": "^2.3.4",
"minizlib": "^1.1.1",
"mkdirp": "^0.5.0",
"safe-buffer": "^5.1.2",
"yallist": "^3.0.2"
}
},
"through": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
"integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
"dev": true
},
"tough-cookie": {
"version": "2.4.3",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
"integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
"dev": true,
"requires": {
"psl": "^1.1.24",
"punycode": "^1.4.1"
},
"dependencies": {
"punycode": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
"integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
"dev": true
}
}
},
"tunnel-agent": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
"integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
"dev": true,
"requires": {
"safe-buffer": "^5.0.1"
}
},
"tweetnacl": {
"version": "0.14.5",
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
"integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
"dev": true
},
"uniq": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
"integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=",
"dev": true
},
"uri-js": {
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
"integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
"dev": true,
"requires": {
"punycode": "^2.1.0"
}
},
"uuid": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
"integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==",
"dev": true
},
"verror": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
"integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
"dev": true,
"requires": {
"assert-plus": "^1.0.0",
"core-util-is": "1.0.2",
"extsprintf": "^1.2.0"
}
},
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
"dev": true
},
"yallist": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz",
"integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==",
"dev": true
}
}
}

View File

@ -1,7 +0,0 @@
module.exports = {
trailingComma: "es5",
tabWidth: 2,
useTabs: false,
semi: false,
singleQuote: true
};

View File

@ -38,7 +38,6 @@ RewriteRule ^links/ /zulieferer-und-partnerbetriebe [L,R=301]
RewriteRule ^kontakt/ / [L,R=301]
RewriteRule ^ueber-uns/ / [L,R=301]
RewriteRule ^angebote/ / [L,R=301]
RewriteRule ^aktionen/presibeispiel-urnengrab-2019/ /aktionen/preisbeispiel-urnengrab-2019/ [L,R=301]
## End new rules
</IfModule>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.3 KiB

View File

@ -1,19 +0,0 @@
+++
title = "{{ replace .Name "-" " " | title }}"
draft = true
type = "catalog"
alt = "{{ replace .Name "-" " " | title }}"
description = "Kurzbeschreibung"
material = "Material, Bearbeitungsart"
ornament = "Ornament"
article_id = "Artikel Bezeichnung"
keywords = []
[[resources]]
title = "{{ replace .Name "-" " " | title }} #:counter"
src = "bilder/platzhalter.jpg"
[resources.params]
alt = "Bild von einem {{ replace .Name "-" " " | title }}"
+++
{{< gallery "bilder/**.jpg" >}}

View File

@ -10,7 +10,6 @@ const presets = [
safari: "10",
},
useBuiltIns: "usage",
corejs: '3'
},
],
];

View File

@ -5,98 +5,19 @@
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>{{- block "title" . -}}{{- .Site.Title -}}{{- end -}}</title>
{{ .Hugo.Generator }}
{{- partial "schema/site.html" . -}}
{{- if (and (eq .Kind "page") (eq .Type "news")) -}}
{{- partial "schema/post.html" . -}}
{{- end -}}
{{- if (and (eq .Kind "page") (ne .Type "news")) -}}
{{- partial "schema/article.html" . -}}
{{- end -}}
{{- if (eq .Kind "section") -}}
{{- partial "schema/collectionpage.html" . -}}
{{- end -}}
{{ partial "part/style.html" (dict "ctx" . "path" "css/style.css" )}}
<link rel="shortcut icon" href="/img/favicon.ico">
<link rel="icon" type="image/svg+xml" href="/img/favicon.svg">
<link rel="icon" type="image/png" href="/img/favicon.png" sizes="32x32">
<link rel="icon" type="image/png" href="/img/favicon-large.png" sizes="96x96">
<link rel="apple-touch-icon" type="image/png" href="/img/apple-touch-icon.png" sizes="180x180">
<meta name="msapplication-TileBackground" content="#000000">
<meta name="msapplication-TileImage" content="/img/ms-tile.png">
{{- partial "head.html" . -}}
{{- block "head" . -}}{{- end -}}
<body>
<div class="fixed-background background-{{ with .Params.background }}{{- . -}}{{- else -}}default{{- end -}}"></div>
<div id="header" class="large">
<div class="container">
<div class="flex row">
<div class="col-xs-12">
<div class="navbar-logo padding">
<a href="{{.Site.BaseURL }}">
<picture>
<source srcset="/img/logo.svg" media="(min-width: 48rem)">
<img src="/img/logo-klein.svg" alt="Logo der Firma Neff Stein-Design" />
</picture>
</a>
</div>
<div class="navbar small">
<input type="checkbox" class="hamburger" id="top-navigation-checkbox"
name="top-navigation-checkbox"><label class="hamburger" for="top-navigation-checkbox"><span
class="toggler"><span class="line"></span><span class="line"></span><span
class="line"></span></span></label>
<div class="navbar-container">
<nav>
<ul>
{{- $currentPage := . -}}
{{- range .Site.Menus.main -}}
{{- if .HasChildren -}}
<li class="{{ if $currentPage.HasMenuCurrent .Menu . }}active{{ end }}">
<a href="{{ .URL }}">
{{ .Pre }}
<span>{{ .Name }}</span>
</a>
<ul class="sub-menu">
{{- range .Children -}}
{{ partial "menu-item.html" (dict "item" . "ctx" $currentPage)}}
{{- end -}}
</ul>
</li>
{{- else -}}
{{ partial "menu-item.html" (dict "item" . "ctx" $currentPage)}}
{{- end -}}
{{- end -}}
</ul>
</nav>
</div>
</div>
</div>
</div>
{{- partial "header.html" . -}}
</div>
</div>
{{- if eq .Kind "home" -}}
{{- $section := $.Site.GetPage "section" "aktionen" -}}
{{ $page := "" }}
{{- with $section.Pages }}
{{- $page = index . 0 -}}
{{ end }}
{{- with $page -}}
<section id="banner">
<div class="container">
<div id="banner-container" class="col-xs-12">
<h1>{{ .Title }}</h1>
<p>{{ .Params.description }}</p>
<p><a href="{{ .Permalink }}" class="btn btn-primary">{{ i18n "more-info" }}</a></p>
</div>
</div>
</section>
{{- end }}
{{- partial "banner.html" . -}}
{{- end -}}
<div id="page-wrapper">
{{- if .Params.show_breadcrumbs -}}
<div class="container">
{{- partial "breadcrumbs.html" . }}
</div>
{{- end -}}
<div id="content">
{{- block "content" . -}}
<div class="container">
@ -105,67 +26,13 @@
{{- end -}}
</div>
<div id="footer">
{{- if (ne .Kind "home") -}}
<div class="container">
<section class="row" id="index-contact">
<div class="col-xs-12">
<h2 class="padding"><a class="anchor" id="{{ i18n "contact" }}">Kontakt</a></h2>
<div class="call-to-action flex row text-center">
<div class="padding">
<a class="btn btn-primary" href="mailto:{{ .Site.Author.email }}">{{ i18n "send-mail" }}</a>
</div>
</div>
<div class="row">
{{- $site := . }}
{{- range .Site.Data.kontakt.kontakt -}}
{{- partial "address.html" (dict "address" . "ctx" $site) -}}
{{- end -}}
</div>
</div>
</section>
</div>
{{- end }}
<div class="container bottom">
<div class="row" id="footer-social" class="padding">
<div class="col-xs-12">
{{- partial "social.html" . -}}
</div>
</div>
<nav class="row">
{{- $currentPage := . -}}
{{- range .Site.Menus.footer -}}
<ul class="list-unstyled col-xs-12 col-sm-4">
{{- if .HasChildren -}}
<li class="{{ if $currentPage.HasMenuCurrent .Menu . }}active{{ end }}">
<a href="{{ .URL }}">
{{ .Pre }}
<span>{{ .Name }}</span>
</a>
<ul class="list-unstyled sub-menu">
{{- range .Children -}}
{{ partial "menu-item.html" (dict "item" . "ctx" $currentPage)}}
{{- end -}}
</ul>
</li>
{{- else -}}
{{ partial "menu-item.html" (dict "item" . "ctx" $currentPage)}}
{{- end -}}
</ul>
{{- end -}}
</nav>
</div>
{{- partial "footer.html" . -}}
</div>
</div>
<div id="lightbox-section">
</div>
{{- partial "templates/lightbox.html" . -}}
<script>
var $googleAnalytics = '{{ .Site.GoogleAnalytics }}';
</script>
{{ partial "part/script.html" (dict "ctx" . "path" "js/common.bundle.js")}}
{{ partial "part/script.html" (dict "ctx" . "path" "js/app.bundle.js")}}
{{- partial "lightbox.html" . -}}
{{- partial "scripts.html" . -}}
{{- block "scripts" . -}}{{- end -}}
</body>
</html>

View File

@ -1,6 +1,6 @@
{{- $currentPage := . -}}
<li class="col-sm-12">
<div>
<li class="padding">
<div class="flex column">
<div>
{{- range $.Resources.ByType "image" -}}
{{- if .Params.featured -}}
@ -8,16 +8,13 @@
{{ partial "figure.html" (dict "ctx" $currentPage "image" . "lightbox" false "class" "left round small")}}
{{- end -}}
{{- end -}}
<a href="{{ .RelPermalink }}">
<h4>{{ .Title }}</h4>
</a>
<a href="{{ .RelPermalink }}"><h4>{{ .Title }}</h4></a>
{{ .Summary }}
{{- if .Truncated -}}
&nbsp;<a href="{{ .RelPermalink }}">{{ i18n "read-more" }}&#8230;</a>
{{- end -}}
<footer>
<time class="list-item-lastmod"
datetime='{{ .Lastmod.Format "2006-01-02T15:04-07:00" }}'>{{ .Lastmod.Format "02.01.2006 15:04" }}</time>
<time class="list-item-lastmod" datetime='{{ .Lastmod.Format "2006-01-02T15:04-07:00" }}'>{{ .Lastmod.Format "02.01.2006 15:04" }}</time>
</footer>
</div>
</div>

View File

@ -5,13 +5,13 @@
{{ define "main" }}
<main id="list">
{{- with .Content -}}
<div class="content row">
<div class="col-xs-12">
<div class="content flex column">
<div class="padding">
{{ . }}
</div>
</div>
{{- end -}}
<ul class="list-unstyled row">
<ul class="list-unstyled flex column">
{{- range .Pages -}}
{{- .Render "li" -}}
{{- end -}}

View File

@ -1,35 +0,0 @@
{
"name": {{ .Title | jsonify }}
{{ with .Pages }}
,"pages": [
{{ range $index, $value := .}}
{{ if $index }},{{ end }}
{
"title": {{ .Title | jsonify }}
,"id": {{ .File.UniqueID | jsonify }}
,"url": {{ .RelPermalink | jsonify }}
,"date": {{ .PublishDate | jsonify }}
,"modified": {{ .Lastmod | jsonify }}
,"summary": {{ .Summary | jsonify }}
,"type": {{ .Type | jsonify }}
{{ with .Params.description }},"description": {{ . | jsonify }}{{ end }}
{{ with .Params.alt }},"alt": {{ . | jsonify }}{{ end }}
{{ with .Keywords }}
,"keywords": {{ . | jsonify }}
{{ end }}
{{ range $value.Resources.ByType "image" }}
{{ if .Params.featured }}
{{ $orig := . }}
,"image":
{
"url": {{ .RelPermalink | jsonify }},
"alt": {{ .Params.alt | jsonify }}
{{ with .Params.description }},"description": {{ . | jsonify }}{{ end }}
}
{{ end }}
{{ end }}
}
{{ end }}
]
{{ end }}
}

View File

@ -3,31 +3,9 @@
{{- end -}}
{{- define "main" -}}
<main class="row" id="single">
<article class="col-sm-12">
<header class="flex padding">
<h1>{{ .Title }}</h1>
</header>
{{- $resources := .Resources -}}
{{- with .Content -}}
<div class="content row">
<div class="col-sm-12">
{{- range $.Resources.ByType "image" -}}
{{- if .Params.featured -}}
{{- $orig := . -}}
{{ partial "figure.html" (dict "ctx" . "image" . "lightbox" true "class" "featured rounded left" "showTitle" true "showDescription" true)}}
{{- end -}}
{{- end -}}
{{ . }}
</div>
</div>
{{- end -}}
<footer class="single-footer padding">
<p>
<i class="fa fa-calendar"></i> <time
datetime='{{ .Lastmod.Format "2006-01-02T15:04-07:00" }}'>{{ .Lastmod.Format "02.01.2006 15:04" }}</time>
</p>
</footer>
<main id="single">
<article>
{{- partial "single.html" . -}}
</article>
</main>
{{- end -}}

View File

@ -1,18 +0,0 @@
{
"title": {{ .Title | jsonify }}
,"id": {{ .File.UniqueID | jsonify }}
,"url": {{ .RelPermalink | jsonify }}
,"date": {{ .PublishDate | jsonify }}
,"modified": {{ .Lastmod | jsonify }}
,"summary": {{ .Summary | jsonify }}
,"type": {{ .Type | jsonify }}
{{ with .Params.description }},"description": {{ . | jsonify }}{{ end }}
{{ with .Params.alt }},"alt": {{ . | jsonify }}{{ end }}
{{ range .Resources.ByType "image" }}
,"image": {
"url": {{ .RelPermalink | jsonify }},
"alt": {{ .Params.alt | jsonify }}
{{ with .Params.description }},"description": {{ . | jsonify }}{{ end }}
}
{{ end }}
}

View File

@ -1,23 +0,0 @@
{{- $ctx := . -}}
{{- $page := (index .Pages 0) -}}
{{- $image := "" -}}
{{- $images := slice -}}
{{- with $page -}}
{{- $images = $page.Resources.ByType "image" }}
{{- else -}}
{{- $images = .Resources.ByType "image" -}}
{{- end -}}
{{- range $images -}}
{{ if .Params.featured }}
{{ $image = . }}
{{ end }}
{{ end }}
{{ if $image }}
{{ else }}
{{ $image = index $images 0 }}
{{ end }}
{{ with $image }}
<li class="col-xs-6 col-sm-4">
{{- partial "figure.html" (dict "ctx" $ctx "image" . "class" "catalog" "showTitle" true "showDescription" false "showDetails" true "isOverlay" true) -}}
</li>
{{ end }}

View File

@ -1,21 +0,0 @@
{
"title": {{ .Title | jsonify }}
{{ range $index, $value := .Pages }}
{{ if $index }},{{ end }}
[
"title": {{ .Title | jsonify }}
,"id": {{ .File.UniqueID | jsonify }}
,"type": {{ .Type | jsonify }}
,"article_type": [{{ range $index, $value := .Params.used_for }}{{ if $index }}, {{ end }}{{ $value | jsonify }}{{ end }}]
{{ with .Params.offer }}
,"offer": {{ . | jsonify }}
{{ end }}
{{ with .Params.ornament }}
,"ornament": {{ . | jsonify }}
{{ end }}
,"description": {{ .Params.description | jsonify }}
,"material": {{ .Params.material | jsonify }}
,"article_id": {{ .Params.article_id | jsonify }}
]
{{ end }}
}

View File

@ -1,44 +0,0 @@
{{- define "title" -}}
{{ .Title }} &bull; {{ .Site.Title }}
{{- end -}}
{{- define "main" -}}
<main class="catalog row" id="single">
<article id="catalog-article" class="col-sm-12">
<header class="flex padding">
<h1>{{ .Title }}</h1>
</header>
<div class="content flex">
<div class="padding">
{{- with .Resources.GetMatch "bilder/*" -}}
{{- $orig := . -}}
{{ partial "figure.html" (dict "ctx" . "image" . "lightbox" true "class" "featured left wide" "showTitle" false "showDescription" false)}}
{{- end -}}
{{ with .Params.offer }}
<p class="offer"><a class="btn btn-secondary" href="{{ . }}">Angebot</a></p>{{ end }}
<p class="type">Typ: {{ range $index, $value := .Params.used_for }}{{ if $index }}, {{end}}{{ . }}{{end}}</p>
{{ with .Params.material }}
<p class="material">Material: {{ . }}</p>{{ end }}
{{ with .Params.ornament }}
<p class="ornament">Ornament: {{ . }}</p>{{ end }}
{{ with .Params.description }}
<p class="description">{{ . }}</p>{{ end }}
<p class="article-id">Art. Nr.: {{ .Params.article_id }}</p>
{{ with .Content }}
{{ . }}
{{ end }}
</div>
</div>
</article>
</main>
{{- end -}}
{{- define "head" -}}
{{ partial "part/style.html" (dict "ctx" . "path" "css/catalog.css")}}
{{- end -}}
{{- define "scripts" -}}
{{ partial "part/script.html" (dict "ctx" . "path" "js/three.bundle.js")}}
{{ partial "part/script.html" (dict "ctx" . "path" "js/vue.bundle.js")}}
{{ partial "part/script.html" (dict "ctx" . "path" "js/catalog.bundle.js")}}
{{- end -}}

View File

@ -1,36 +0,0 @@
{
"title": {{ .Title | jsonify }}
,"id": {{ .File.UniqueID | jsonify }}
,"url": {{ .RelPermalink | jsonify }}
,"date": {{ .PublishDate | jsonify }}
,"modified": {{ .Lastmod | jsonify }}
,"content": {{ .RawContent | jsonify }}
{{ with .Params.description }},"description": {{ . | jsonify }}{{ end }}
{{ with .Params.alt }},"alt": {{ . | jsonify }}{{ end }}
{{ range .Resources.ByType "image" }}
,"images": {
"url": {{ .RelPermalink | jsonify }},
"alt": {{ .Params.alt | jsonify }}
{{ with .Params.description }},"description": {{ . | jsonify }}{{ end }}
}
{{ end }}
,"article_type": [{{ range $index, $value := .Params.used_for }}{{ if $index }}, {{ end }}{{ $value | jsonify }}{{ end }}]
{{ with .Params.offer }}
,"offer": {{ . | jsonify }}
{{ end }}
{{ with .Params.ornament }}
,"ornament": {{ . | jsonify }}
{{ end }}
,"description": {{ .Params.description | jsonify }}
,"material": {{ .Params.material | jsonify }}
,"article_id": {{ .Params.article_id | jsonify }}
,"model":
{{ $res := .Resources }}
{{ with .Resources.GetMatch "model/*.gl*" }}
{"url": {{ .RelPermalink | jsonify }}, "title": {{ .Title | jsonify }}, "textures": [{{ range $index, $value := .Params.textures }}
{{ $texture := printf "%s%s" "model/" $value.filename }}
{{ if $index }}, {{end}}{"name": {{ $value.name | jsonify }}, "url": {{ with $res.GetMatch $texture }}{{ .RelPermalink | jsonify }}{{ end }}}
{{ end }}]
}
{{ end }}
}

View File

@ -16,8 +16,7 @@
{{ else }}
{{ $image = index $images 0 }}
{{ end }}
{{ with $image }}
<li class="col-xs-6 col-sm-4">
{{- partial "figure.html" (dict "ctx" $ctx "image" . "class" "catalog" "showTitle" true "showDescription" true) -}}
{{ with $images }}
<li class="padding"> {{- partial "figure.html" (dict "ctx" $ctx "image" $image "class" "gallery" "showTitle" true "showDescription" true) -}}
</li>
{{ end }}

10
themes/neff/layouts/gallery/list.html Normal file → Executable file
View File

@ -4,10 +4,8 @@
{{ define "main" }}
<main id="list">
<div class="row">
<h1 class="col-xs-12">{{ .Title }}</h1>
</div>
<ul class="list-unstyled row">
<h1 class="padding">{{ .Title }}</h1>
<ul class="list-unstyled flex row gallery">
{{- range .Sections -}}
{{- .Render "li" -}}
{{- end -}}
@ -16,8 +14,8 @@
{{- end -}}
</ul>
{{- with .Content -}}
<div class="content row">
<div class="col-sm-12">
<div class="content flex column">
<div class="padding">
{{ . }}
</div>
</div>

View File

@ -1,8 +1,8 @@
{{ define "content" }}
<div id="index">
<div class="container transparent">
<div class="row">
<div class="col-xs-12 col-offset-sm-8 col-sm-4" id="index-short-contact">
<div class="flex row">
<div id="index-short-contact">
<div class="phone">
<i class="fa fa-phone"></i>: {{ (index .Site.Data.kontakt.kontakt 0).telephone }}
</div>
@ -21,7 +21,7 @@
<div class="container">
<main>
<article>
<div class="lead" id="index-content">
<div class="lead padding" id="index-content">
<a id="{{ i18n "home" }}"></a>
<h1 id="index-title">{{ .Title }}</h1>
{{ . }}
@ -33,34 +33,27 @@
<div class="container">
<section id="index-hero">
<a class="anchor" id="{{ i18n "about-us" }}">
<h1 class="padding">{{ (replace (replace (i18n "about-us") "-" " ") "ue" "ü") | title}}</h1>
</a>
<ul class="list-unstyled row">
{{- range .Params.about_us }}
<li class="col-xs-12 col-sm-4">
{{- $section := $.Site.GetPage "section" "ueber-uns" -}}
{{- $page := $section.GetPage . -}}
{{- $image := $page.Resources.GetMatch "bilder/*" -}}
{{ partial "figure.html" (dict "image" $image "ctx" $page "class" "fill" "showContent" true "showTitle" true "keepOriginal" true "imgClass" "img-center" )}}
</li>
<a class="anchor" id="{{ i18n "about-us" }}"><h1 class="padding">{{ (replace (replace (i18n "about-us") "-" " ") "ue" "ü") | title}}</h1></a>
<div class="flex row">
{{- range (first 3 (where .Site.Pages.ByWeight ".Params.type" "ueber-uns")) -}}
<div>
{{- partial "hero.html" . -}}
</div>
{{- end -}}
</ul>
</div>
</section>
</div>
<div class="container">
<section class="row" id="index-contact">
<div class="col-xs-12">
<a class="anchor" id="{{ i18n "contact" }}">
<h1 class="padding">Kontakt</h1>
</a>
<section id="index-contact">
<div>
<a class="anchor" id="{{ i18n "contact" }}"><h1 class="padding">Kontakt</h1></a>
<div class="call-to-action flex row text-center">
<div class="padding">
<a class="btn btn-primary" href="mailto:{{ .Site.Author.email }}">{{ i18n "send-mail" }}</a>
</div>
</div>
<div class="row">
<div class="flex row">
{{- $site := . }}
{{- range .Site.Data.kontakt.kontakt -}}
{{- partial "address.html" (dict "address" . "ctx" $site) -}}
@ -71,15 +64,14 @@
</div>
<div class="container">
<section class="row" id="index-gallery">
<h1 class="col-xs-12 padding">
<section id="index-gallery">
<h1 class="padding">
<a class="anchor" href="/galerie" id="{{ i18n "gallery" }}">{{ i18n "gallery" | title}}</a>
<span class="small"></span>
</h1>
<div class="col-xs-12">
<ul class="row list-unstyled">
<ul class="flex row list-unstyled">
{{- range .Params.galleries }}
<li class="col-xs-12 col-sm-4">
<li class="padding">
{{- $section := $.Site.GetPage "section" "galerie" -}}
{{- $page := $section.GetPage . -}}
{{- $image := ((index $page.Pages 0).Resources.GetMatch "**.jpg") -}}
@ -87,10 +79,8 @@
</li>
{{- end -}}
</ul>
</div>
<div class="col-xs-12 end-sm">
<p>
<div class="padding">
<p class="text-right">
<a href="/galerie"><strong>Alle Galerien</strong></a>
</p>
</div>
@ -98,26 +88,15 @@
</div>
<div class="container">
<section class="row" id="index-news">
<h1 class="col-xs-12 padding"><a class="anchor" href="/neuigkeiten"
id="{{ i18n "news" }}">{{ i18n "news" | title}}</a></h1>
<div class="col-xs-12">
<ul class="list-unstyled row">
<section id="index-news">
<h1 class="padding"><a class="anchor" href="/neuigkeiten" id="{{ i18n "news" }}">{{ i18n "news" | title}}</a></h1>
<ul class="list-unstyled flex row">
{{- range (first 3 (where .Site.Pages.ByWeight ".Params.type" "news")) -}}
<li class="col-xs-12 col-sm-4">
{{- $site := . -}}
{{- range .Resources.ByType "image" -}}
{{- if .Params.featured -}}
{{- $orig := .}}
{{ partial "figure.html" (dict "image" $orig "ctx" $site "class" "gallery" "showTitle" true "showSummary" true)}}
{{- end -}}
{{- end -}}
</li>
{{- partial "news.html" . -}}
{{- end -}}
</ul>
</div>
<div class="col-xs-12 end-sm">
<p>
<div class="padding">
<p class="text-right">
<a href="/neuigkeiten"><strong>Alle Neuigkeiten</strong></a>
</p>
</div>
@ -132,5 +111,4 @@
</div>
{{- end -}}
</div>
{{ end }}

View File

@ -1,4 +1,4 @@
<section class="address col-xs-12 col-sm-4">
<section class="address padding">
<header>
<h3>{{ .address.address.addressLocality }}</h3>
</header>
@ -44,7 +44,5 @@
{{- end -}}
{{ partial "schema/localbusiness.html" (dict "contact" .address "ctx" .ctx "short" false) }}
</address>
<a
href="https://maps.openrouteservice.org/directions?n1={{ .address.geo.lat }}&n2={{ .address.geo.lon }}&n3=13&a=null,null,{{ .address.geo.lat }},{{ .address.geo.lon }}&b=0&k1=de-DE&k2=km"><i
class="fa fa-map"></i> Zum Routenplaner</a>
<a href="https://maps.openrouteservice.org/directions?n1={{ .address.geo.lat }}&n2={{ .address.geo.lon }}&n3=13&a=null,null,{{ .address.geo.lat }},{{ .address.geo.lon }}&b=0&k1=de-DE&k2=km"><i class="fa fa-map"></i> Zum Routenplaner</a>
</section>

View File

@ -0,0 +1,16 @@
{{- $section := $.Site.GetPage "section" "aktionen" -}}
{{ $page := "" }}
{{- with $section.Pages }}
{{- $page = index . 0 -}}
{{ end }}
{{- with $page -}}
<section id="banner">
<div class="container">
<div id="banner-container" class="padding">
<h1>{{ .Title }}</h1>
<p>{{ .Params.description }}</p>
<p><a href="{{ .Permalink }}" class="btn btn-primary">{{ i18n "more-info" }}</a></p>
</div>
</div>
</section>
{{- end }}

View File

@ -1,16 +0,0 @@
<nav class="breadcrumbs row">
<ol class="nav navbar-nav col-xs-12">
{{ template "breadcrumbnav" (dict "p1" . "p2" .) }}
</ol>
{{ define "breadcrumbnav" }}
{{ if .p1.Parent }}
{{ template "breadcrumbnav" (dict "p1" .p1.Parent "p2" .p2 ) }}
{{ else if not .p1.IsHome }}
{{ template "breadcrumbnav" (dict "p1" .p1.Site.Home "p2" .p2 ) }}
{{ end }}
<li class="{{ if eq .p1 .p2 }} active{{ end }}">
<a href="{{ .p1.Permalink }}">{{ if .p1.IsHome }}Startseite{{ else }}{{ .p1.Title }}{{ end }}</a>{{ if ne .p1 .p2 }}
<i class="fa fa-chevron-right"></i>{{ end }}
</li>
{{ end }}
</nav>

View File

@ -1,31 +1,18 @@
{{- $ctx := .ctx -}}
{{- $title := .ctx.Title -}}
{{- $alt := .ctx.Params.alt -}}
{{- $description := .ctx.Params.description | markdownify -}}
{{- $content := .ctx.Content -}}
{{- $keep := .keepOriginal -}}
{{- $class := .class -}}
{{- $imgClass := .imgClass -}}
{{- $href := .ctx.Params.href }}
<figure {{- with .class }} class="{{ . }}"{{- end -}}>
<a href="{{- with $href -}}{{ . }}{{ else }}{{ .ctx.RelPermalink }}{{ end }}" {{- with .lightbox }}
data-lightbox{{- end -}}>
{{- partial "img.html" (dict "image" .image "ctx" .ctx "keepOriginal" $keep "class" $imgClass) -}}
<a href="{{- with $href -}}{{ . }}{{ else }}{{ .ctx.Permalink }}{{ end }}"{{- with .lightbox }} data-lightbox{{- end -}}>
{{- partial "img.html" (dict "image" .image "ctx" .ctx "keepOriginal" $keep "class" $class) -}}
</a>
{{ with .ctx.Params.offer }}
<div class="ribbon">
<span>
Angebot
</span>
</div>
{{ end }}
<figcaption class="description{{ if .isOverlay }} overlay hidden{{ end }}">
<figcaption class="description">
{{- if .showTitle -}}
{{- if $href -}}
<a href="{{$href}}">
<h3>{{ $title }}</h3>
</a>
<a href="{{$href}}"><h3>{{ $title }}</h3></a>
{{- else -}}
<h3>{{ $title }}</h3>
{{- end -}}
@ -39,39 +26,5 @@
{{- end -}}
</p>
{{- end -}}
{{- if .showContent -}}
<p>
{{- with $content -}}
{{- . -}}
{{- end -}}
</p>
{{- end -}}
{{- if .showSummary -}}
{{ with $ctx.Summary }}
<p>
{{- . -}}
{{- if $ctx.Truncated -}}
&nbsp;<a href="{{ $ctx.RelPermalink }}">{{ i18n "read-more" }}&#8230;</a>
{{- end -}}
</p>
{{ end }}
{{- end -}}
{{- if .showDetails -}}
{{ with .ctx.Params.material }}
<p class="material">Material: {{ . }}</p>
{{- end -}}
{{ with .ctx.Params.ornament }}
<p class="ornament">Ornament: {{ . }}</p>
{{- end -}}
{{- with .ctx.Params.used_for -}}
<p class="type">Typ: {{ range $index, $value := . }}{{ if $index }}, {{end}}{{ . }}{{end}}</p>
{{- end -}}
<p class="details">
{{ with .ctx.Params.offer }}
<a class="btn btn-small btn-secondary" href="{{ . }}">Angebot</a>
{{ end }}
<a class="btn btn-small btn-primary" href="{{$ctx.RelPermalink }}">Details</a>
</p>
{{- end -}}
</figcaption>
</figure>

View File

@ -0,0 +1,47 @@
{{- if (ne .Kind "home") -}}
<div class="container">
<section id="index-contact">
<div>
<h2 class="padding"><a class="anchor" id="{{ i18n "contact" }}">Kontakt</a></h2>
<div class="call-to-action flex row text-center">
<div class="padding">
<a class="btn btn-primary" href="mailto:{{ .Site.Author.email }}">{{ i18n "send-mail" }}</a>
</div>
</div>
<div class="flex row">
{{- $site := . }}
{{- range .Site.Data.kontakt.kontakt -}}
{{- partial "address.html" (dict "address" . "ctx" $site) -}}
{{- end -}}
</div>
</div>
</section>
</div>
{{- end }}
<div class="container bottom">
<div id="footer-social" class="padding">
{{- partial "social.html" . -}}
</div>
<nav class="padding">
{{- $currentPage := . -}}
{{- range .Site.Menus.footer -}}
<ul>
{{- if .HasChildren -}}
<li class="{{ if $currentPage.HasMenuCurrent .Menu . }}active{{ end }}">
<a href="{{ .URL }}">
{{ .Pre }}
<span>{{ .Name }}</span>
</a>
<ul class="sub-menu">
{{- range .Children -}}
{{ partial "menu-item.html" (dict "item" . "ctx" $currentPage)}}
{{- end -}}
</ul>
</li>
{{- else -}}
{{ partial "menu-item.html" (dict "item" . "ctx" $currentPage)}}
{{- end -}}
</ul>
{{- end -}}
</nav>
</div>

View File

@ -1,7 +1,7 @@
<div class="clearfix"></div>
<ul class="list-unstyled flex row gallery">
{{- range .Resources.ByType "image" -}}
<li class="col-xs-12 col-sm-4 padding">
<li class="padding">
{{- partial "figure.html" (dict "image" . "ctx" . "lightbox" true "class" "gallery" "showTitle" true "showDescription" true) }}
</li>
{{- end -}}

View File

@ -0,0 +1,20 @@
{{- partial "schema/site.html" . -}}
{{- if (and (eq .Kind "page") (eq .Type "news")) -}}
{{- partial "schema/post.html" . -}}
{{- end -}}
{{- if (and (eq .Kind "page") (ne .Type "news")) -}}
{{- partial "schema/article.html" . -}}
{{- end -}}
{{- if (eq .Kind "section") -}}
{{- partial "schema/collectionpage.html" . -}}
{{- end -}}
{{- $css := resources.Get "css/style.css" -}}
{{- $css = $css | resources.Fingerprint -}}
<link rel="stylesheet" href="{{ $css.Permalink }}" integrity="{{ $css.Data.Integrity }}">
<link rel="shortcut icon" href="/img/favicon.ico">
<link rel="icon" type="image/svg+xml" href="/img/favicon.svg">
<link rel="icon" type="image/png" href="/img/favicon.png" sizes="32x32">
<link rel="icon" type="image/png" href="/img/favicon-large.png" sizes="96x96">
<link rel="apple-touch-icon" type="image/png" href="/img/apple-touch-icon.png" sizes="180x180">
<meta name="msapplication-TileBackground" content="#000000">
<meta name="msapplication-TileImage" content="/img/ms-tile.png">

View File

@ -0,0 +1,38 @@
<div class="flex row">
<div class="navbar-logo padding">
<a href="{{.Site.BaseURL }}">
<picture>
<source srcset="/img/logo.svg"
media="(min-width: 960px)">
<img src="/img/logo-klein.svg" alt="Logo der Firma Neff Stein-Design" />
</picture>
</a>
</div>
<div class="navbar small">
<input type="checkbox" class="hamburger" id="top-navigation-checkbox" name="top-navigation-checkbox"><label class="hamburger" for="top-navigation-checkbox"><span class="toggler"><span class="line"></span><span class="line"></span><span class="line"></span></span></label>
<div class="navbar-container">
<nav>
<ul>
{{- $currentPage := . -}}
{{- range .Site.Menus.main -}}
{{- if .HasChildren -}}
<li class="{{ if $currentPage.HasMenuCurrent .Menu . }}active{{ end }}">
<a href="{{ .URL }}">
{{ .Pre }}
<span>{{ .Name }}</span>
</a>
<ul class="sub-menu">
{{- range .Children -}}
{{ partial "menu-item.html" (dict "item" . "ctx" $currentPage)}}
{{- end -}}
</ul>
</li>
{{- else -}}
{{ partial "menu-item.html" (dict "item" . "ctx" $currentPage)}}
{{- end -}}
{{- end -}}
</ul>
</nav>
</div>
</div>
</div>

View File

@ -0,0 +1,9 @@
<div class="padding hero-container">
<img src="img/hero/{{ .Params.icon }}.svg" class="hero" alt="Hero {{ .Title }}">
<header>
<h2>{{ .Title }}</h2>
</header>
<div class="content">
{{ .Content }}
</div>
</div>

View File

@ -7,19 +7,25 @@
{{- with .ctx.Params.alt -}}
{{- $alt = . -}}
{{- end -}}
{{ $class := "" }}
{{- with .class -}}
{{- $class = . -}}
{{- $class := . -}}
{{- end -}}
{{- $ctx := .ctx -}}
{{ with .image }}
{{- $class := "" -}}
{{ if eq $keep true }}
<img alt="{{ $alt }}" title="{{ $title }}" class="original {{ $class }}" src="{{ .RelPermalink }}" />
<img alt="{{ $alt }}"
title="{{ $title }}"
class="original {{- $class }}"
src="{{ .RelPermalink }}" />
{{ else }}
{{- $imageSm := .Fill "300x300 Top" -}}
{{- $imageMd := .Fill "500x500 Top" -}}
<img alt="{{ $alt }}" title="{{ $title }}" class="{{ $class }}"
srcset="{{ $imageSm.RelPermalink }} 300w, {{ $imageMd.RelPermalink }} 500w" sizes="(min-width: 48rem) 300px, 500px"
<img alt="{{ $alt }}"
title="{{ $title }}"
class="{{ $class }}"
srcset="{{ $imageSm.RelPermalink }} 300w, {{ $imageMd.RelPermalink }} 500w"
sizes="(max-width: 300px) 300px, 500px"
src="{{ $imageMd.RelPermalink }}" />
{{ end }}
{{- partial "schema/img.html" (dict "image" . "ctx" $ctx) -}}

View File

@ -0,0 +1,29 @@
<template id="lightbox-template">
<div id="lightbox" class="lightbox">
<div id="lightbox-container" class="lightbox-container">
<div class="lightbox-header">
<h1 class="lightbox-title">Title</h1>
<div class="lightbox-controls">
<a class="lightbox-close"><i class="fa fa-times"></i></a>
</div>
</div>
<div class="lightbox-image">
<div class="image-container">
<a class="lightbox-prev">
<div class="lightbox-nav-prev">
<div><i class="fa fa-chevron-left"></i></div>
</div>
</a>
<a class="lightbox-next">
<div class="lightbox-nav-next">
<div><i class="fa fa-chevron-right"></i></div>
</div>
</a>
<img src="#" alt="image">
</div>
</div>
<div class="lightbox-footer">
</div>
</div>
</div>
</template>

View File

@ -0,0 +1,25 @@
{{- $currentPage := .ctx -}}
{{- range .menu -}}
<ul>
{{- if .HasChildren -}}
<li class="{{ if $currentPage.HasMenuCurrent .Menu . }}active{{ end }}">
{{- $pre := .Pre -}}
{{- $name := .Name -}}
{{- with .URL }}
<a href="{{ . }}">
{{ $pre }}
<span>{{ $name }}</span>
</a>
{{- end -}}
<ul class="sub-menu">
{{- range .Children -}}
{{ partial "menu-item.html" (dict "item" . "ctx" $currentPage)}}
{{- end -}}
</ul>
</li>
{{- else -}}
{{ partial "menu-item.html" (dict "item" . "ctx" $currentPage)}}
{{- end -}}
</ul>
<div class="clearfix"></div>
{{- end -}}

View File

@ -0,0 +1,20 @@
<li class="padding">
<div>
{{- $site := . -}}
{{- range .Resources.ByType "image" -}}
{{- if .Params.featured -}}
{{- $orig := .}}
{{ partial "figure.html" (dict "image" $orig "ctx" $site "class" "fill")}}
{{- end -}}
{{- end -}}
</div>
<header>
<h3><a href="{{ .RelPermalink }}">{{ .Title }}</a></h3>
</header>
<div>
{{ .Summary }}
{{- if .Truncated -}}
&nbsp;<a href="{{ .RelPermalink }}">{{ i18n "read-more" }}&#8230;</a>
{{- end -}}
</div>
</li>

View File

@ -1,7 +0,0 @@
{{- $js := resources.Get .path -}}
{{ if .ctx.Site.IsServer }}
<script src="{{ $js.RelPermalink }}"></script>
{{ else }}
{{- $js = $js | resources.Fingerprint -}}
<script src="{{ $js.RelPermalink }}" integrity="{{ $js.Data.Integrity }}"></script>
{{ end }}

View File

@ -1,7 +0,0 @@
{{- $css := resources.Get .path -}}
{{ if .ctx.Site.IsServer }}
<link rel="stylesheet" href="{{ $css.RelPermalink }}">
{{ else }}
{{- $css = $css | resources.Fingerprint -}}
<link rel="stylesheet" href="{{ $css.Permalink }}" integrity="{{ $css.Data.Integrity }}">
{{ end }}

View File

@ -0,0 +1,6 @@
<script>
var $googleAnalytics = '{{ .Site.GoogleAnalytics }}';
</script>
{{- $js := resources.Get "js/bundle.js" -}}
{{- $js = $js | resources.Fingerprint -}}
<script src="{{ $js.Permalink }}" integrity="{{ $js.Data.Integrity }}"></script>

View File

@ -0,0 +1,22 @@
<header class="flex column padding">
<h1>{{ .Title }}</h1>
</header>
{{- $resources := .Resources -}}
{{- with .Content -}}
<div class="content flex column">
<div class="padding">
{{- range $.Resources.ByType "image" -}}
{{- if .Params.featured -}}
{{- $orig := . -}}
{{ partial "figure.html" (dict "ctx" . "image" . "lightbox" true "class" "featured left" "showTitle" true "showDescription" true)}}
{{- end -}}
{{- end -}}
{{ . }}
</div>
</div>
{{- end -}}
<footer class="single-footer padding">
<p>
<i class="fa fa-calendar"></i> <time datetime='{{ .Lastmod.Format "2006-01-02T15:04-07:00" }}'>{{ .Lastmod.Format "02.01.2006 15:04" }}</time>
</p>
</footer>

View File

@ -1,29 +0,0 @@
<template id="lightbox-template">
<div id="lightbox" class="lightbox">
<div id="lightbox-container" class="lightbox-container">
<div class="lightbox-header">
<h1 class="lightbox-title">Title</h1>
<div class="lightbox-controls">
<a class="lightbox-close"><i class="fa fa-times"></i></a>
</div>
</div>
<div class="lightbox-image">
<div class="image-container">
<a class="lightbox-prev">
<div class="lightbox-nav-prev">
<div><i class="fa fa-chevron-left"></i></div>
</div>
</a>
<a class="lightbox-next">
<div class="lightbox-nav-next">
<div><i class="fa fa-chevron-right"></i></div>
</div>
</a>
<img src="#" alt="image">
</div>
</div>
<div class="lightbox-footer">
</div>
</div>
</div>
</template>

View File

@ -1,5 +1,5 @@
<h4>{{ i18n "translations" | title }}</h4>
<ul class="col-xs-12">
<ul>
{{- range .Translations -}}
<li>
<a href="{{ .Permalink }}" hreflang="{{ .Language.Lang }}">{{ .Language.LanguageName }}: {{ .Title }}</a>

View File

@ -39,14 +39,14 @@
<div class="clearfix"></div>
{{ with .Inner }}
<ul class="list-unstyled row gallery">
<ul class="list-unstyled flex row gallery neg-margin">
{{ . }}
</ul>
{{ else }}
<ul class="list-unstyled row gallery">
<ul class="list-unstyled flex row gallery neg-margin">
{{ range $.Page.Resources.Match $search }}
{{- if (ne .Params.featured true) -}}
<li class="col-xs-6 col-sm-4">
<li class="padding">
{{- partial "figure.html" (dict "image" . "ctx" . "lightbox" $lightbox "class" "gallery" "showTitle" $title "showDescription" $description "keepOriginal" $keep) -}}
</li>
{{- end -}}

View File

@ -47,7 +47,7 @@
{{ end }}
{{ $image := $.Page.Resources.GetMatch $search }}
{{ if $list }}
<li class="col-xs-6 col-sm-4 padding">
<li class="padding">
{{ end }}
{{ partial "figure.html" (dict "image" $image "ctx" $image "class" $class "lightbox" $lightbox "showTitle" $showTitle "showDescription" $showDescription) }}
{{ if $list }}

View File

@ -1,5 +1,4 @@
{{- $type := .Get "type" -}}
<div class="clearfix"></div>
<ul class="flex row list-unstyled {{ $type }}">
<ul class="flex row list-unstyled clearfix {{ $type }}">
{{ .Inner }}
</ul>

File diff suppressed because it is too large Load Diff

View File

@ -1,52 +1,41 @@
{
"name": "neff",
"version": "0.2.1",
"version": "0.0.1",
"description": "A gohugo.io theme for http://www.neff-steindesign.de",
"scripts": {
"build": "webpack --config webpack.prod.js",
"watch": "webpack --watch --config webpack.dev.js"
"build": "webpack",
"watch": "webpack --watch"
},
"author": "",
"private": true,
"license": "MIT",
"sideEffects": true,
"dependencies": {
"@babel/polyfill": "^7.4.4",
"@fortawesome/fontawesome-free": "^5.8.1",
"axios": "^0.18.0",
"core-js": "^3.0.1",
"three": "^0.104.0",
"vue": "^2.6.10",
"vuex": "^3.1.0"
"@babel/polyfill": "^7.2.5",
"@fortawesome/fontawesome-free": "^5.6.3"
},
"devDependencies": {
"@babel/cli": "^7.4.4",
"@babel/core": "^7.4.4",
"@babel/preset-env": "^7.4.4",
"@vue/web-component-wrapper": "^1.2.0",
"autoprefixer": "^9.5.1",
"babel-loader": "^8.0.5",
"babel-minify-webpack-plugin": "^0.3.1",
"clean-webpack-plugin": "^1.0.1",
"@babel/cli": "^7.2.3",
"@babel/core": "^7.2.2",
"@babel/preset-env": "^7.2.3",
"autoprefixer": "^9.4.3",
"babel-loader": "^8.0.4",
"clean-webpack-plugin": "^1.0.0",
"cookieconsent": "^3.1.0",
"css-loader": "^2.1.1",
"css-loader": "^2.1.0",
"css-validator-loader": "^1.1.3",
"file-loader": "^3.0.1",
"font-loader": "^0.1.2",
"image-webpack-loader": "^4.6.0",
"mini-css-extract-plugin": "^0.5.0",
"node-sass": "^4.11.0",
"optimize-css-assets-webpack-plugin": "^5.0.1",
"postcss-loader": "^3.0.0",
"postcss-preset-env": "^6.6.0",
"prettier": "^1.17.0",
"sass": "^1.19.0",
"postcss-preset-env": "^6.5.0",
"sass-loader": "^7.1.0",
"style-loader": "^0.23.1",
"uglifyjs-webpack-plugin": "^2.1.2",
"uglifyjs-webpack-plugin": "^2.1.1",
"url-loader": "^1.1.2",
"vue-loader": "^15.7.0",
"vue-template-compiler": "^2.6.10",
"webpack": "^4.30.0",
"webpack-cli": "^3.3.1",
"webpack-merge": "^4.2.1"
"webpack": "^4.28.2",
"webpack-cli": "^3.1.2"
}
}

View File

@ -1,32 +0,0 @@
import Vue from 'vue'
import CatalogArticle from '../vue/CatalogArticle.vue'
import ModelViewer from '../vue/ModelViewer.vue'
import store from '../vue/catalogArticle.store.js'
let modelViewerRoot = document.getElementById('model-viewer-root')
if (modelViewerRoot) {
new Vue({
store,
render: function(h) {
return h(ModelViewer)
},
beforeMount() {
this.modelUrl = this.$el.dataset.url
},
}).$mount(modelViewerRoot)
}
let catalogArticle = document.getElementById('catalog-article')
if (catalogArticle) {
new Vue({
store,
render: function(h) {
return h(CatalogArticle)
},
beforeMount() {
this.modelUrl = this.$el.dataset.url
},
}).$mount(catalogArticle)
}

View File

@ -1,78 +1,64 @@
import 'cookieconsent'
var gaDisableStr = 'ga-disable-' + $googleAnalytics
var gaDisableStr = 'ga-disable-' + $googleAnalytics;
function disableGoogleAnalytics() {
if (document.cookie.indexOf(gaDisableStr + '=true') > -1) {
window[gaDisableStr] = true
window[gaDisableStr] = true;
}
document.cookie =
gaDisableStr + '=true; expires=Thu, 31 Dec 2099 23:59:59 UTC; path=/'
window[gaDisableStr] = true
document.cookie = gaDisableStr + '=true; expires=Thu, 31 Dec 2099 23:59:59 UTC; path=/';
window[gaDisableStr] = true;
}
function enableGoogleAnalytics() {
var dnt = navigator.doNotTrack || window.doNotTrack || navigator.msDoNotTrack
var doNotTrack = dnt == '1' || dnt == 'yes'
var dnt = (navigator.doNotTrack || window.doNotTrack || navigator.msDoNotTrack);
var doNotTrack = (dnt == "1" || dnt == "yes");
if (!doNotTrack) {
;(function(i, s, o, g, r, a, m) {
i['GoogleAnalyticsObject'] = r
;(i[r] =
i[r] ||
function() {
;(i[r].q = i[r].q || []).push(arguments)
}),
(i[r].l = 1 * new Date())
;(a = s.createElement(o)), (m = s.getElementsByTagName(o)[0])
a.async = 1
a.src = g
m.parentNode.insertBefore(a, m)
})(
window,
document,
'script',
'https://www.google-analytics.com/analytics.js',
'ga'
)
ga('create', $googleAnalytics, 'auto')
ga('set', 'anonymizeIp', true)
ga('send', 'pageview')
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', $googleAnalytics, 'auto');
ga('set', 'anonymizeIp', true);
ga('send', 'pageview');
}
}
function setupGoogleAnalytics(status) {
if (status === 'allow' || status === 'dismiss') {
enableGoogleAnalytics()
enableGoogleAnalytics();
}
if (status === 'deny') {
disableGoogleAnalytics()
}
disableGoogleAnalytics();
}
window.addEventListener('load', function() {
}
window.addEventListener("load", function () {
window.cookieconsent.initialise({
palette: {
popup: {
background: '#efefef',
text: '#000',
background: "#efefef",
text: "#000"
},
button: {
background: '#2d763a',
text: '#ffffff',
background: "#2d763a",
text: "#ffffff"
}
},
},
theme: 'classic',
type: 'opt-out',
theme: "classic",
type: "opt-out",
content: {
message:
'Diese Webseite nutzt Cookies zur Verbesserung des Erlebnisses unserer Besucher.<br>Indem Sie weiterhin auf dieser Webseite navigieren, erklären Sie sich mit der Verwendung von Cookies einverstanden. Die Nutzung von externen Cookies kann unterbunden werden.',
dismiss: 'OK',
allow: 'Erlauben',
deny: 'Verbieten',
href: '/datenschutz',
link: 'Datenschutzbestimmung',
policy: 'Cookie Vereinbarung',
message: "Diese Webseite nutzt Cookies zur Verbesserung des Erlebnisses unserer Besucher.<br>Indem Sie weiterhin auf dieser Webseite navigieren, erklären Sie sich mit der Verwendung von Cookies einverstanden. Die Nutzung von externen Cookies kann unterbunden werden.",
dismiss: "OK",
allow: "Erlauben",
deny: "Verbieten",
href: "/datenschutz",
link: "Datenschutzbestimmung",
policy: "Cookie Vereinbarung"
},
dismissOnScroll: 600,
onInitialise: function (status) {
@ -81,22 +67,20 @@ window.addEventListener('load', function() {
onStatusChange: function (status) {
if (status === 'allow' || status === 'dismiss') {
if (document.cookie.indexOf(gaDisableStr + '=true') > -1) {
window[gaDisableStr] = false
document.cookie =
gaDisableStr +
'=true; expires=Thu, 31 Dec 1970 23:59:59 UTC; path=/'
window[gaDisableStr] = false;
document.cookie = gaDisableStr + '=true; expires=Thu, 31 Dec 1970 23:59:59 UTC; path=/';
}
}
setupGoogleAnalytics(status)
},
})
})
});
var gaOptOut = document.querySelector('a.ga-optout')
if (gaOptOut !== null) {
gaOptOut.addEventListener('click', e => {
e.preventDefault()
disableGoogleAnalytics()
gaOptOut.addEventListener('click', (e) => {
e.preventDefault();
disableGoogleAnalytics();
})
}

View File

@ -1,51 +0,0 @@
function showOverlay(el) {
if (el) {
let classes = el.className
if (classes.indexOf('hidden') !== -1) {
el.className = classes.replace(/ ?hidden ?/, '')
}
}
}
function hideOverlay(el) {
if (el) {
let classes = el.className
if (classes.indexOf('hidden') === -1) {
el.className = classes + ' hidden'
}
}
}
function toggleOverlay(el) {
if (el) {
if (el.className.indexOf('hidden') === -1) {
hideOverlay(el)
} else {
showOverlay(el)
}
}
}
function addListeners(el, overlay) {
var isTouchSupported = 'ontouchend' in document
if (isTouchSupported) {
el.addEventListener('touchstart', ev => {
ev.preventDefault()
toggleOverlay(overlay)
})
} else {
el.addEventListener('mouseover', ev => {
ev.preventDefault()
showOverlay(overlay)
})
el.addEventListener('mouseleave', ev => {
ev.preventDefault()
hideOverlay(overlay)
})
}
}
document.querySelectorAll('figure').forEach(figure => {
let overlay = figure.querySelector('.overlay')
addListeners(figure, overlay)
})

View File

@ -1,4 +1,2 @@
function requireAll(r) {
r.keys().forEach(r)
}
requireAll(require.context('../img/', true, /\.(png|gif|jpg|jpeg|svg)$/))
function requireAll(r) { r.keys().forEach(r); }
requireAll(require.context('../img/', true, /\.(png|gif|jpg|jpeg|svg)$/));

View File

@ -1,20 +1,16 @@
const container = document.querySelector('#lightbox-section')
const container = document.querySelector('#lightbox-section');
const template = document.querySelector('#lightbox-template')
const images = document.querySelectorAll('a[data-lightbox]')
const lightboxes = []
const lightboxes = [];
class Lightbox {
constructor(idx) {
this.idx = idx
this.element = images[idx]
this.figure = this.element.parentElement
this.image = this.figure.querySelector('img')
if (this.image === null) {
this.figure = this.element.parentElement.parentElement
this.image = this.figure.querySelector('img')
}
this.element = images[idx];
this.figure = this.element.parentElement;
this.image = this.element.querySelector('img');
this.title = this.figure.querySelector('h3')
this.title = this.image.getAttribute('title')
this.description = this.figure.querySelector('.description p')
@ -24,7 +20,7 @@ class Lightbox {
this.href = this.element.getAttribute('href')
this.alt = this.image.getAttribute('alt')
this.template = template.cloneNode(true)
this.template = template.cloneNode(true);
}
update() {
@ -35,67 +31,66 @@ class Lightbox {
calcSurrounding() {
if (images.length > 1) {
this.prev = this.idx - 1
this.next = this.idx + 1
this.prev = this.idx - 1;
this.next = this.idx + 1;
if (this.prev === -1) {
this.prev = images.length - 1
this.prev = images.length - 1;
}
if (this.next === images.length) {
this.next = 0
this.next = 0;
}
}
}
updateTemplate() {
// Update template
container.innerHTML = this.template.innerHTML
let lightbox = container.querySelector('#lightbox')
let img = lightbox.querySelector('img')
img.setAttribute('src', this.href)
img.setAttribute('alt', this.alt)
let title = lightbox.querySelector('.lightbox-title')
let description = lightbox.querySelector('.lightbox-footer')
container.innerHTML = this.template.innerHTML;
let lightbox = container.querySelector('#lightbox');
let img = lightbox.querySelector('img');
img.setAttribute('src', this.href);
img.setAttribute('alt', this.alt);
let title = lightbox.querySelector('.lightbox-title');
let description = lightbox.querySelector('.lightbox-footer');
if (this.title !== null) {
title.innerHTML = this.title
} else {
title.innerHtml = this.alt
title.innerHTML = this.title;
}
else {
title.innerHtml = this.alt;
}
if (this.description !== null) {
description.innerHTML = this.description
} else {
description.innerHTML = this.alt
description.innerHTML = this.description;
}
else {
description.innerHTML = this.alt;
}
}
addEventListeners() {
// Close with click outside of .lightbox-container
let lightboxContainer = lightbox.querySelector('div.lightbox-container')
lightbox.addEventListener('click', e => {
let lightboxContainer = lightbox.querySelector('div.lightbox-container');
lightbox.addEventListener('click', (e) => {
if (!lightboxContainer.contains(e.target)) {
container.innerHTML = ''
container.innerHTML = '';
}
})
// Close with click on .lightbox-close link
let lightboxClose = lightbox.querySelector('a.lightbox-close')
let lightboxClose = lightbox.querySelector('a.lightbox-close');
lightboxClose.addEventListener('click', () => {
container.innerHTML = ''
container.innerHTML = '';
})
// Previous image with click on .lightbox-prev link
let lightboxPrev = lightbox
.querySelectorAll('a.lightbox-prev')
.forEach(el => {
let lightboxPrev = lightbox.querySelectorAll('a.lightbox-prev').forEach((el) => {
el.addEventListener('click', () => {
lightboxes[this.prev].update()
lightboxes[this.prev].update();
})
})
// Next image with click on .lightbox-next link
let lightboxNext = lightbox
.querySelectorAll('a.lightbox-next')
.forEach(el => {
let lightboxNext = lightbox.querySelectorAll('a.lightbox-next').forEach((el) => {
el.addEventListener('click', () => {
lightboxes[this.next].update()
lightboxes[this.next].update();
})
})
}
@ -105,11 +100,11 @@ function main() {
for (let i = 0; i < images.length; i++) {
lightboxes.push(new Lightbox(i))
images[i].addEventListener('click', e => {
e.preventDefault()
lightboxes[i].update()
images[i].addEventListener('click', (e) => {
e.preventDefault();
lightboxes[i].update();
})
}
}
main()
main();

View File

@ -1,4 +1,3 @@
import "./cookies"
import "./lightbox"
import "./scrollspy"
import "./gallery"
import './cookies';
import './lightbox';
import './scrollspy';

View File

@ -1,14 +1,14 @@
const header = document.querySelector('#header')
const scrollPosition = 50
const header = document.querySelector('#header');
const scrollPosition = 50;
const menuLinks = document.querySelectorAll('.menu-list li a')
const checkbox = document.querySelector('#top-navigation-checkbox')
const banner = document.querySelector('#banner')
const menuLinks = document.querySelectorAll('.menu-list li a');
const checkbox = document.querySelector('#top-navigation-checkbox');
const banner = document.querySelector('#banner');
let lastScrollPosition = 0
let lastScrollPosition = 0;
window.addEventListener('scroll', e => {
let st = window.pageYOffset || document.documentElement.scrollTop
window.addEventListener('scroll', (e) => {
let st = window.pageYOffset || document.documentElement.scrollTop;
if (st > lastScrollPosition && st > scrollPosition) {
header.classList.add('small')
header.classList.remove('large')
@ -16,8 +16,9 @@ window.addEventListener('scroll', e => {
if(banner !== null) {
banner.classList.add('hidden')
}
checkbox.checked = false
} else {
checkbox.checked = false;
}
else {
if (st < scrollPosition) {
header.classList.add('large')
header.classList.remove('small')
@ -28,17 +29,18 @@ window.addEventListener('scroll', e => {
if (st < lastScrollPosition) {
setTimeout(() => {
header.classList.remove('hidden')
}, 500)
}, 500);
}
if (st > lastScrollPosition && st > scrollPosition) {
header.classList.add('hidden')
}
}
lastScrollPosition = window.pageYOffset || document.documentElement.scrollTop
})
lastScrollPosition = window.pageYOffset || document.documentElement.scrollTop;
});
menuLinks.forEach(el => {
menuLinks.forEach((el) => {
el.addEventListener('click', () => {
checkbox.checked = false
console.log('hello');
checkbox.checked = false;
})
})

View File

@ -1,903 +0,0 @@
/* BASE STYLES */
html {
scroll-behavior: smooth;
}
body {
min-height: calc(100vh - calc(3 * #{$gutter-width}));
font-family: $base-font-family;
font-size: $base-font-size;
line-height: $base-line-height;
display: flex;
flex-direction: column;
padding: calc(5.25rem + #{$gutter-width}) 0 0;
background-color: $background-color;
color: $font-color;
width: 100%;
height: 100vh;
}
@supports (-webkit-overflow-scrolling: touch) {
.fixed-background {
background-attachment: scroll;
}
}
header {
margin: 0;
}
p {
margin: 0.5rem 0;
}
h1,
h2,
h3,
h4,
h5,
h6 {
line-height: 1.2em;
margin: 0.2em auto;
font-family: $heading-font-family;
font-weight: bold;
}
h1 {
font-size: 1.6rem;
span.small {
font-size: 1.4rem;
}
}
h2 {
font-size: 1.3rem;
}
h3 {
font-size: 1.2rem;
}
h4 {
font-size: 1.1rem;
}
h5 {
font-size: 1rem;
}
h6 {
font-size: 1rem;
}
ul {
list-style: circle;
padding-left: 1.4em;
}
ol {
list-style: decimal;
padding-left: 1.4em;
}
table {
tr {
th,
td {
padding: calc(#{$gutter-width} / 2) calc(#{$gutter-width * 2})
calc(#{$gutter-width} / 2) 0;
}
th {
font-weight: bold;
}
}
}
strong {
font-weight: bold;
}
em {
font-style: italic;
}
@media only screen and (min-width: $sm-min) {
body {
padding: calc(9rem + #{$gutter-width}) 0 0;
}
h1 {
font-size: 1.8rem;
}
h2 {
font-size: 1.6rem;
}
h3 {
font-size: 1.4rem;
}
h4 {
font-size: 1.2rem;
}
h5 {
font-size: 1.1rem;
}
h6 {
font-size: 1rem;
}
}
a {
text-decoration: none;
&.anchor:hover,
&:active,
&:visited,
&:link {
color: $primary-color;
}
&:hover {
color: darken($primary-color, 15%);
}
&.anchor:hover {
color: $font-color;
cursor: default;
}
}
img {
border-radius: $border-radius;
max-width: calc(100vw - calc(6 * #{$gutter-width}));
}
table {
thead {
tr {
th {
text-align: left;
}
}
}
tr {
td {
vertical-align: top;
}
}
}
/* BACKGROUND IMAGES */
.fixed-background {
width: 100%;
height: 100vh;
position: fixed;
top: 0;
left: 0;
z-index: -1000;
@include background('default');
@include background('bau');
}
/* CONTAINER */
.container {
background-color: rgba(255, 255, 255, 0.9);
border-radius: $border-radius;
margin-bottom: $gutter-width;
padding: $half-gutter-width $gutter-width;
&.transparent {
background-color: transparent;
padding: $half-gutter-width $half-gutter-width;
}
}
/* HELPER */
.lead {
font-size: 1.2em;
}
.text-center {
text-align: center;
}
.text-right {
text-align: right;
}
.list-unstyled {
list-style: none;
padding: 0;
}
.clearfix::before,
.clearfix::after {
content: ' ';
display: table;
}
.clearfix::after {
clear: both;
}
.left {
float: left;
margin-right: $gutter-width;
padding: 0.5rem 0;
}
.right {
float: right;
margin-left: $gutter-width;
padding: 0.5rem 0;
}
figure {
max-width: 100%;
position: relative;
&.featured {
max-width: 33.33333333%;
&.wide {
max-width: 66.66666667%;
}
}
&.fill {
img {
width: 100%;
height: auto;
}
}
&.round {
img {
border-radius: 50%;
}
}
&.small {
img {
max-width: 150px;
}
}
&.right,
&.left {
max-width: 33.33333333%;
&.wide {
max-width: 66.66666667%;
}
}
img {
display: block;
width: 100%;
height: auto;
&.img-center {
margin: 0 auto;
}
&.original {
width: auto !important;
max-width: 100%;
}
}
figcaption {
&.overlay {
h3 {
font-size: 1.2rem;
}
&.hidden {
visibility: hidden;
}
.details {
line-height: 3rem;
a.btn {
text-shadow: none;
font-weight: bold;
}
}
position: absolute;
background-color: rgba(230, 230, 230, 0.85);
top: 0;
left: 0;
bottom: 5px;
right: 0;
border-radius: $border-radius;
text-align: center;
padding: $gutter-width;
padding-bottom: 0;
padding-top: 0;
text-shadow: 1px 1px 2px white;
p {
max-width: 100%;
}
}
color: $font-color;
}
.ribbon {
position: absolute;
right: 0px;
top: 0px;
overflow: hidden;
width: 75px;
height: 75px;
text-align: right;
span {
font-size: 12px;
color: #d7c9aa;
text-align: center;
font-weight: bold;
line-height: 20px;
transform: rotate(45deg);
width: 100px;
display: block;
background: $secondary-color;
box-shadow: 0 3px 10px -5px rgba(0, 0, 0, 0.5);
position: absolute;
top: 19px;
right: -21px;
}
}
}
.btn {
padding: 0.5rem 2rem;
border: 1px solid black;
border-radius: $border-radius;
color: black margin 0 1rem;
line-height: 3rem;
&.btn-small {
padding: 0.3rem 1rem;
margin: 1rem;
}
}
.btn-primary {
background-color: $primary-color;
border: 1px solid $primary-color;
color: white;
&:active,
&:visited {
color: white;
}
}
a.btn-secondary,
a.btn-primary {
color: white;
&:active,
&:visited {
color: white;
}
}
.btn-secondary {
background-color: $secondary-color;
border: 1px solid $secondary-color;
color: white;
&:active,
&:visited {
color: white;
}
}
.call-to-action {
min-height: 2rem;
div {
width: 100%;
}
}
.full-width {
min-width: 100%;
}
.youtube {
width: 100%;
position: relative;
padding-bottom: 56.25%;
height: 0;
overflow: hidden;
margin: $gutter-width 0;
border-radius: $border-radius;
iframe {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
border: 0;
}
}
nav {
&.breadcrumbs {
display: block;
ol {
list-style: none;
li {
display: inline-block;
&.active {
font-weight: bold;
}
}
}
}
}
/* CONTENT */
/* HEADER */
#header {
$transition-time: 0.4s;
position: fixed;
width: 100%;
top: 0;
left: 0;
font-family: $heading-font-family;
z-index: 2000;
&.small {
transition: $transition-time;
.navbar-logo {
flex: 0 1 0;
min-width: 100px;
float: left;
img {
max-height: 2rem;
transition: $transition-time * 1.5;
width: auto;
}
}
@media only screen and (min-width: $sm-min) {
.navbar-logo {
img {
transition: $transition-time * 1.5;
max-height: 4rem;
}
float: none;
}
}
}
&.large {
transition: $transition-time;
.navbar-logo {
flex: 0 1 0;
min-width: 100px;
float: left;
img {
max-height: 4rem;
width: auto;
transition: $transition-time * 1.5;
}
}
@media only screen and (min-width: $sm-min) {
.navbar-logo {
img {
max-height: 6rem;
transition: $transition-time * 1.5;
}
float: none;
}
}
}
&.hidden {
transition: $transition-time;
top: -200px;
}
h1 {
font-size: 1.3rem;
display: inline;
margin: $gutter-width;
padding: 0;
}
.container {
border-radius: 0 0 $border-radius $border-radius;
}
.navbar {
justify-content: space-between;
align-items: stretch;
flex: 1 0 0;
min-width: 0;
line-height: 1.75rem;
@media only screen and (min-width: $sm-min) {
max-width: none;
}
input[type='checkbox'] {
display: none;
& + label {
display: block;
margin-left: auto;
margin-top: $gutter-width;
max-width: 35px;
max-height: 35px;
min-width: 35px;
min-height: 35px;
.toggler {
position: relative;
display: block;
cursor: pointer;
width: 35px;
height: 30px;
background-color: transparent;
.line {
height: 4px;
width: 35px;
background: black;
border-radius: 2px;
transition: 0.4s;
transform-origin: center;
position: absolute;
}
.line:nth-child(1) {
top: 0px;
}
.line:nth-child(2) {
top: 10px;
transition: 0.1s;
}
.line:nth-child(3) {
top: 20px;
}
}
}
}
input[type='checkbox']:checked + .hamburger .line:nth-child(1) {
transform: translateY(10px) rotate(-45deg);
}
input[type='checkbox']:checked + .hamburger .line:nth-child(2) {
opacity: 0;
}
input[type='checkbox']:checked + .hamburger .line:nth-child(3) {
transform: translateY(-10px) rotate(45deg);
}
ul {
display: none;
}
input[type='checkbox']:checked ~ .navbar-container nav {
ul {
@include menu-list(column);
li {
text-align: right;
flex: 0 0 0;
margin: $half-gutter-width 0;
font-size: 1.1rem;
font-weight: bold;
a {
&:active,
&:hover {
color: darken($primary-color, 15%);
}
}
}
}
}
.navbar-container {
margin-top: auto;
min-width: 0;
height: 100%;
nav {
height: 100%;
@media only screen and (min-width: $sm-min) {
ul {
@include menu-list(row);
align-items: flex-end;
justify-content: flex-end;
height: 100%;
display: flex;
li {
font-size: 1.1rem;
font-weight: bold;
}
}
}
}
}
@media only screen and (min-width: $sm-min) {
input[type='checkbox'] {
display: none;
& + label {
display: none;
.line {
display: none;
}
}
}
ul:last-child {
li {
padding: 0 $half-gutter-width;
&:first-child {
padding-left: 0;
}
&:last-child {
padding-right: 0;
}
}
}
}
}
}
/* FOOTER */
#footer {
nav {
align-items: flex-end;
flex-wrap: wrap;
ul {
@include menu-list(row);
flex: 1 1 0;
height: 100%;
padding: 0 $half-gutter-width;
li {
flex: 1 0 0;
width: 100%;
padding: 0;
margin: 0;
padding-left: 0;
.sub-menu {
@include menu-list(column);
margin: 0;
padding: 0;
li {
padding: 0;
}
}
}
}
}
#footer-social {
ul {
@include menu-list(row);
@include trim-list-margin-horizontal;
justify-content: center;
font-size: 2rem;
li {
margin: 0 $half-gutter-width;
}
}
}
}
#content {
/* INDEX */
#index-hero {
.hero-container {
text-align: center;
img.hero {
margin: 0.5rem auto 0;
max-width: 150px;
height: auto;
}
header,
div.content {
text-align: left;
}
}
}
#index-title {
display: none;
}
#index-short-contact {
font-size: 1.1rem;
align-items: flex-start;
background-color: rgba(255, 255, 255, 0.9);
border-radius: $border-radius;
margin: calc(100vh - calc(15rem - #{$gutter-width})) 0 0 0;
padding: $half-gutter-width $gutter-width;
overflow: hidden;
@media only screen and (min-width: $sm-min) {
margin: calc(100vh - calc(19rem - #{$gutter-width})) -$half-gutter-width 0
auto;
}
ul {
list-style: none;
padding: 0;
margin: 0;
display: flex;
flex-direction: row;
justify-content: center;
li {
margin: 0.5rem $gutter-width;
font-size: 2rem;
}
}
}
#index-contact {
.padding {
flex: 1 0 0;
}
}
#index-gallery {
figure {
text-align: center;
figcaption {
text-align: left;
}
}
}
/* SINGLE */
#single {
.single-footer {
p {
margin: 0;
font-size: 0.8rem;
}
}
.featured {
height: auto;
margin-bottom: 1rem;
img {
width: 100%;
}
& + p {
margin-top: 0;
}
}
p {
float: none;
}
blockquote {
float: none;
font-style: italic;
cite {
font-size: 0.8em;
margin-left: 1rem;
}
}
p {
font-size: 1.2rem;
&.material {
font-weight: bold;
}
&.type {
font-style: italic;
}
&.article-id {
font-size: 1rem;
}
&.offer {
font-size: 1.2rem;
font-weight: bold;
text-align: center;
margin: 1rem 0;
}
}
}
/* LIST */
#list {
footer {
font-size: 0.8rem;
}
}
}
/* BANNER */
#banner {
font-size: 1.2rem;
position: absolute;
top: calc(5.25rem + #{$gutter-width});
width: 100%;
transition: 0.6s;
z-index: 500;
text-align: center;
h1 {
font-size: 1.4rem;
}
.container {
border-radius: $border-radius;
margin: 0 auto;
}
&.hidden {
top: -200px;
transition: 0.6s;
}
p {
margin: 1rem 0 0;
}
}
@media only screen and (min-width: $sm-min) {
#banner {
top: calc(9rem + #{$gutter-width});
}
}

View File

@ -0,0 +1,32 @@
#banner {
font-size: 1.2rem;
position: absolute;
top: 105px;
width: 100%;
transition: 0.6s;
z-index: 500;
text-align: center;
h1 {
font-size: 1.4rem;
}
.container {
border-radius: $border-radius;
margin: 0 auto;
}
&.hidden {
top: -200px;
transition: 0.6s;
}
p {
margin: 1rem 0 0;
}
}
@media only screen and (min-width: $media-query) {
#banner {
top: 155px;
}
}

View File

@ -0,0 +1,3 @@
#content {
flex: 1 1 0;
}

View File

@ -1,420 +0,0 @@
/* VARIABLES */
$gutter-width: 0.5rem !default;
$outer-margin: 1rem !default;
$xs-min: 30rem !default;
$sm-min: 48rem !default;
$lg-min: 64rem !default;
$xl-min: 75rem !default;
/* CALCULATED VARIABLES */
$breakpoints: 1 8.33333333%, 2 16.66666667%, 3 25%, 4 33.33333333%,
5 41.66666667%, 6 50%, 7 58.33333333%, 8 66.66666667%, 9 75%, 10 83.33333333%,
11 91.66666667%, 12 100%;
$half-gutter-width: $gutter-width * 0.5;
$gutter-compensation: $half-gutter-width * -1;
/* GRID */
@mixin flex() {
box-sizing: border-box;
display: flex;
flex: 0 1 auto;
flex-wrap: wrap;
}
@mixin col($size) {
flex-basis: $size;
max-width: $size;
}
@mixin offset($size) {
margin-left: $size;
}
.container,
.container-fluid {
margin: 0 auto;
padding: 0 $outer-margin;
max-width: calc(90vw - #{$gutter-width} * 2);
}
.row {
@include flex();
flex-direction: row;
margin: 0 $gutter-compensation;
&.reverse {
flex-direction: row-reverse;
}
}
.column {
@include flex();
flex-direction: column;
&.reverse {
flex-direction: row-column;
}
}
/* XS */
.col-xs,
.col-xs-1,
.col-xs-2,
.col-xs-3,
.col-xs-4,
.col-xs-5,
.col-xs-6,
.col-xs-7,
.col-xs-8,
.col-xs-9,
.col-xs-10,
.col-xs-11,
.col-xs-12,
.col-offset-xs-1,
.col-offset-xs-2,
.col-offset-xs-3,
.col-offset-xs-4,
.col-offset-xs-5,
.col-offset-xs-6,
.col-offset-xs-7,
.col-offset-xs-8,
.col-offset-xs-9,
.col-offset-xs-10,
.col-offset-xs-11,
.col-offset-xs-12 {
box-sizing: border-box;
flex: 0 0 auto;
padding: 0 $half-gutter-width;
}
.col-xs {
flex-grow: 1;
flex-basis: 0;
max-width: 100%;
}
@each $i, $x in $breakpoints {
.col-xs-#{$i} {
@include col($x);
}
}
@each $i, $x in $breakpoints {
.col-offset-xs-#{$i} {
@include offset($x);
}
}
.start-xs {
justify-content: flex-start;
text-align: start;
}
.center-xs {
justify-content: center;
text-align: center;
}
.end-xs {
justify-content: flex-end;
text-align: end;
}
.top-xs {
align-items: flex-start;
}
.middle-xs {
align-items: center;
}
.bottom-xs {
align-items: flex-end;
}
.around-xs {
justify-content: space-around;
}
.between-xs {
justify-content: space-between;
}
/* SM */
@media only screen and (min-width: $sm-min) {
.container {
width: $sm-min - $gutter-width;
}
.col-sm,
.col-sm-1,
.col-sm-2,
.col-sm-3,
.col-sm-4,
.col-sm-5,
.col-sm-6,
.col-sm-7,
.col-sm-8,
.col-sm-9,
.col-sm-10,
.col-sm-11,
.col-sm-12,
.col-offset-sm-1,
.col-offset-sm-2,
.col-offset-sm-3,
.col-offset-sm-4,
.col-offset-sm-5,
.col-offset-sm-6,
.col-offset-sm-7,
.col-offset-sm-8,
.col-offset-sm-9,
.col-offset-sm-10,
.col-offset-sm-11,
.col-offset-sm-12 {
box-sizing: border-box;
flex: 0 0 auto;
padding: 0 $half-gutter-width;
}
.col-sm {
flex-grow: 1;
flex-basis: 0;
max-width: 100%;
}
@each $i, $x in $breakpoints {
.col-sm-#{$i} {
@include col($x);
}
}
@each $i, $x in $breakpoints {
.col-offset-sm-#{$i} {
@include offset($x);
}
}
.start-sm {
justify-content: flex-start;
text-align: start;
}
.center-sm {
justify-content: center;
text-align: center;
}
.end-sm {
justify-content: flex-end;
text-align: end;
}
.top-sm {
align-items: flex-start;
}
.middle-sm {
align-items: center;
}
.bottom-sm {
align-items: flex-end;
}
.around-sm {
justify-content: space-around;
}
.between-sm {
justify-content: space-between;
}
}
/* LG */
@media only screen and (min-width: $lg-min) {
.container {
width: $lg-min;
}
.col-lg,
.col-lg-1,
.col-lg-2,
.col-lg-3,
.col-lg-4,
.col-lg-5,
.col-lg-6,
.col-lg-7,
.col-lg-8,
.col-lg-9,
.col-lg-10,
.col-lg-11,
.col-lg-12,
.col-offset-lg-1,
.col-offset-lg-2,
.col-offset-lg-3,
.col-offset-lg-4,
.col-offset-lg-5,
.col-offset-lg-6,
.col-offset-lg-7,
.col-offset-lg-8,
.col-offset-lg-9,
.col-offset-lg-10,
.col-offset-lg-11,
.col-offset-lg-12 {
box-sizing: border-box;
flex: 0 0 auto;
padding: 0 $half-gutter-width;
}
.col-lg {
flex-grow: 1;
flex-basis: 0;
max-width: 100%;
}
@each $i, $x in $breakpoints {
.col-lg-#{$i} {
@include col($x);
}
}
@each $i, $x in $breakpoints {
.col-offset-lg-#{$i} {
@include offset($x);
}
}
.start-lg {
justify-content: flex-start;
text-align: start;
}
.center-lg {
justify-content: center;
text-align: center;
}
.end-lg {
justify-content: flex-end;
text-align: end;
}
.top-lg {
align-items: flex-start;
}
.middle-lg {
align-items: center;
}
.bottom-lg {
align-items: flex-end;
}
.around-lg {
justify-content: space-around;
}
.between-lg {
justify-content: space-between;
}
}
/* XL */
@media only screen and (min-width: $xl-min) {
.container {
width: $xl-min;
}
.col-xl,
.col-xl-1,
.col-xl-2,
.col-xl-3,
.col-xl-4,
.col-xl-5,
.col-xl-6,
.col-xl-7,
.col-xl-8,
.col-xl-9,
.col-xl-10,
.col-xl-11,
.col-xl-12,
.col-offset-xl-1,
.col-offset-xl-2,
.col-offset-xl-3,
.col-offset-xl-4,
.col-offset-xl-5,
.col-offset-xl-6,
.col-offset-xl-7,
.col-offset-xl-8,
.col-offset-xl-9,
.col-offset-xl-10,
.col-offset-xl-11,
.col-offset-xl-12 {
box-sizing: border-box;
flex: 0 0 auto;
padding: 0 $half-gutter-width;
}
.col-xl {
flex-grow: 1;
flex-basis: 0;
max-width: 100%;
}
@each $i, $x in $breakpoints {
.col-xl-#{$i} {
@include col($x);
}
}
@each $i, $x in $breakpoints {
.col-offset-xl-#{$i} {
@include offset($x);
}
}
.start-xl {
justify-content: flex-start;
text-align: start;
}
.center-xl {
justify-content: center;
text-align: center;
}
.end-xl {
justify-content: flex-end;
text-align: end;
}
.top-xl {
align-items: flex-start;
}
.middle-xl {
align-items: center;
}
.bottom-xl {
align-items: flex-end;
}
.around-xl {
justify-content: space-around;
}
.between-xl {
justify-content: space-between;
}
}

View File

@ -4,13 +4,18 @@
font-style: normal;
font-weight: 400;
src: url('../fonts/roboto-v18-latin-regular.eot');
/* IE9 Compat Modes */
src: local('Roboto'), local('Roboto-Regular'),
url('../fonts/roboto-v18-latin-regular.eot?#iefix')
format('embedded-opentype'),
url('../fonts/roboto-v18-latin-regular.eot?#iefix') format('embedded-opentype'),
/* IE6-IE8 */
url('../fonts/roboto-v18-latin-regular.woff2') format('woff2'),
/* Super Modern Browsers */
url('../fonts/roboto-v18-latin-regular.woff') format('woff'),
/* Modern Browsers */
url('../fonts/roboto-v18-latin-regular.ttf') format('truetype'),
/* Safari, Android, iOS */
url('../fonts/roboto-v18-latin-regular.svg#Roboto') format('svg');
/* Legacy iOS */
}
/* roboto-italic - latin */
@ -19,14 +24,18 @@
font-style: italic;
font-weight: 400;
src: url('../fonts/roboto-v18-latin-italic.eot');
/* IE9 Compat Modes */
src: local('Roboto Italic'), local('Roboto-Italic'),
url('../fonts/roboto-v18-latin-italic.eot?#iefix')
format('embedded-opentype'),
url('../fonts/roboto-v18-latin-italic.eot?#iefix') format('embedded-opentype'),
/* IE6-IE8 */
url('../fonts/roboto-v18-latin-italic.woff2') format('woff2'),
/* Super Modern Browsers */
url('../fonts/roboto-v18-latin-italic.woff') format('woff'),
/* Modern Browsers */
url('../fonts/roboto-v18-latin-italic.ttf') format('truetype'),
/* Safari, Android, iOS */
url('../fonts/roboto-v18-latin-italic.svg#Roboto') format('svg');
/* Legacy iOS */
}
/* roboto-700 - latin */
@ -35,12 +44,18 @@
font-style: normal;
font-weight: 700;
src: url('../fonts/roboto-v18-latin-700.eot');
/* IE9 Compat Modes */
src: local('Roboto Bold'), local('Roboto-Bold'),
url('../fonts/roboto-v18-latin-700.eot?#iefix') format('embedded-opentype'),
/* IE6-IE8 */
url('../fonts/roboto-v18-latin-700.woff2') format('woff2'),
/* Super Modern Browsers */
url('../fonts/roboto-v18-latin-700.woff') format('woff'),
/* Modern Browsers */
url('../fonts/roboto-v18-latin-700.ttf') format('truetype'),
/* Safari, Android, iOS */
url('../fonts/roboto-v18-latin-700.svg#Roboto') format('svg');
/* Legacy iOS */
}
/* roboto-700italic - latin */
@ -49,14 +64,18 @@
font-style: italic;
font-weight: 700;
src: url('../fonts/roboto-v18-latin-700italic.eot');
/* IE9 Compat Modes */
src: local('Roboto Bold Italic'), local('Roboto-BoldItalic'),
url('../fonts/roboto-v18-latin-700italic.eot?#iefix')
format('embedded-opentype'),
url('../fonts/roboto-v18-latin-700italic.eot?#iefix') format('embedded-opentype'),
/* IE6-IE8 */
url('../fonts/roboto-v18-latin-700italic.woff2') format('woff2'),
/* Super Modern Browsers */
url('../fonts/roboto-v18-latin-700italic.woff') format('woff'),
/* Modern Browsers */
url('../fonts/roboto-v18-latin-700italic.ttf') format('truetype'),
/* Safari, Android, iOS */
url('../fonts/roboto-v18-latin-700italic.svg#Roboto') format('svg');
/* Legacy iOS */
}
/* roboto-slab-regular - latin */
@ -65,13 +84,18 @@
font-style: normal;
font-weight: 400;
src: url('../fonts/roboto-slab-v7-latin-regular.eot');
/* IE9 Compat Modes */
src: local('Roboto Slab Regular'), local('RobotoSlab-Regular'),
url('../fonts/roboto-slab-v7-latin-regular.eot?#iefix')
format('embedded-opentype'),
url('../fonts/roboto-slab-v7-latin-regular.eot?#iefix') format('embedded-opentype'),
/* IE6-IE8 */
url('../fonts/roboto-slab-v7-latin-regular.woff2') format('woff2'),
/* Super Modern Browsers */
url('../fonts/roboto-slab-v7-latin-regular.woff') format('woff'),
/* Modern Browsers */
url('../fonts/roboto-slab-v7-latin-regular.ttf') format('truetype'),
/* Safari, Android, iOS */
url('../fonts/roboto-slab-v7-latin-regular.svg#RobotoSlab') format('svg');
/* Legacy iOS */
}
/* roboto-slab-700 - latin */
@ -80,12 +104,16 @@
font-style: normal;
font-weight: 700;
src: url('../fonts/roboto-slab-v7-latin-700.eot');
/* IE9 Compat Modes */
src: local('Roboto Slab Bold'), local('RobotoSlab-Bold'),
url('../fonts/roboto-slab-v7-latin-700.eot?#iefix')
format('embedded-opentype'),
url('../fonts/roboto-slab-v7-latin-700.eot?#iefix') format('embedded-opentype'),
/* IE6-IE8 */
url('../fonts/roboto-slab-v7-latin-700.woff2') format('woff2'),
/* Super Modern Browsers */
url('../fonts/roboto-slab-v7-latin-700.woff') format('woff'),
/* Modern Browsers */
url('../fonts/roboto-slab-v7-latin-700.ttf') format('truetype'),
/* Safari, Android, iOS */
url('../fonts/roboto-slab-v7-latin-700.svg#RobotoSlab') format('svg');
/* Legacy iOS */
}

View File

@ -0,0 +1,47 @@
#footer {
nav {
display: flex;
flex-direction: row;
align-items: flex-end;
flex-wrap: wrap;
ul {
@include menu-list(row);
flex: 1 1 0;
height: 100%;
li {
flex: 1 0 0;
width: 100%;
padding: 0;
margin: 0;
padding-left: 0;
min-width: $min-column-width;
.sub-menu {
@include menu-list(column);
margin: 0;
padding: 0;
li {
min-width: $min-column-width;
padding: 0;
}
}
}
&:first-child {
margin-left: -$gutter-width;
}
}
}
#footer-social {
ul {
@include menu-list(row);
@include trim-list-margin-horizontal;
justify-content: center;
font-size: 2rem;
}
}
}

View File

@ -0,0 +1,394 @@
html {
scroll-behavior: smooth;
}
body {
min-height: calc(100vh - calc(3 * #{$gutter-width}));
font-family: $base-font-family;
font-size: $base-font-size;
line-height: $base-line-height;
display: flex;
flex-direction: column;
padding: 105px 0 0 0;
margin: 0;
background-color: $background-color;
color: $font-color;
width: 100%;
height: 100vh;
}
.fixed-background {
width: 100%;
height: 100vh;
position: fixed;
top: 0;
left: 0;
z-index: -1000;
@include background("default");
@include background("bau");
}
@supports (-webkit-overflow-scrolling: touch) {
.fixed-background {
background-attachment: scroll;
}
}
header {
margin: 0;
}
p {
margin: 0.5rem 0;
}
h1, h2, h3, h4, h5, h6 {
line-height: 1.2em;
margin: .2em auto;
font-family: $heading-font-family;
font-weight: bold;
}
h1 {
font-size: 1.6rem;
span.small {
font-size: 1.4rem;
}
}
h2 {
font-size: 1.3rem;
}
h3 {
font-size: 1.2rem;
}
h4 {
font-size: 1.1rem;
}
h5 {
font-size: 1rem;
}
h6 {
font-size: 1rem;
}
ul {
list-style: circle;
padding-left: 1.4em;
}
ol {
list-style: decimal;
padding-left: 1.4em;
}
table {
tr {
th, td {
padding: calc(#{$gutter-width} / 2) calc(#{$gutter-width * 2}) calc(#{$gutter-width} / 2) 0;
}
th {
font-weight: bold;
}
}
}
strong {
font-weight: bold;
}
em {
font-style: italic;
}
@media only screen and (min-width: $media-query) {
body {
padding: 155px 0 0 0;
}
h1 {
font-size: 1.8rem;
}
h2 {
font-size: 1.6rem;
}
h3 {
font-size: 1.4rem;
}
h4 {
font-size: 1.2rem;
}
h5 {
font-size: 1.1rem;
}
h6 {
font-size: 1rem;
}
}
a {
text-decoration: none;
&.anchor:hover,
&:active,
&:visited,
&:link {
color: $primary-color;
}
&:hover {
color: darken($primary-color, 15%);
}
&.anchor:hover {
color: $font-color;
cursor: default;
}
}
img {
border-radius: $border-radius;
max-width: calc(100vw - calc(6 * #{$gutter-width}));
}
table {
thead {
tr {
th {
text-align: left;
}
}
}
tr {
td {
vertical-align: top;
}
}
}
.container {
width: calc(100% - calc(6 * #{$gutter-width}));
margin: 0 auto;
padding: $gutter-width;
background-color: rgba(255, 255, 255, 0.9);
&.transparent {
background-color: transparent;
}
}
.flex {
display: flex;
}
@media only screen and (min-width: $media-query) {
.container {
width: calc(#{$max-width} + calc(2 * #{$gutter-width}));
}
}
.row {
flex-direction: row;
flex-wrap: wrap;
}
.column {
flex-direction: column;
}
.padding {
padding: $gutter-width / 2;
margin: $gutter-width / 2;
}
.news-featured-image {
img {
max-width: 100%;
height: auto;
}
}
.lead {
font-size: 1.2em;
}
.text-center {
text-align: center;
}
.text-right {
text-align: right;
}
.list-unstyled {
list-style: none;
margin: 0;
padding: 0;
}
.clearfix::before,
.clearfix::after {
content: " ";
display: table;
}
.clearfix::after {
clear: both;
}
figure.fill {
img {
width: 100%;
height: auto;
}
}
figure.round {
img {
border-radius: 50%;
}
}
figure.small {
img {
max-width: 150px;
}
}
figure.left {
float: left;
margin-right: $gutter-width;
max-width: $min-column-width;
padding: 0.5rem 0;
float: left
}
figure.right {
float: right;
margin-left: $gutter-width;
max-width: $min-column-width;
padding: 0.5rem 0;
}
img.original {
width: auto !important;
max-width: 100%
}
figure {
max-width: 100%;
img {
width: 100%;
height: auto;
}
figcaption {
color: $font-color;
}
}
.neg-margin {
margin: 0 calc(0 - #{$gutter-width}) 0;
}
.btn {
padding: .5rem 2rem;
border: 1px solid black;
border-radius: $border-radius;
color: black
}
a.btn-primary {
background-color: $primary-color;
border: 1px solid $primary-color;
color: white;
&:active,
&:visited {
color: white;
}
}
.call-to-action {
min-height: 2rem;
div {
width: 100%;
}
}
.full-width {
min-width: 100%;
}
.youtube {
width: 100%;
position: relative;
padding-bottom: 56.25%;
height: 0;
overflow: hidden;
margin: $gutter-width 0;
border-radius: $border-radius;
iframe {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
border:0;
}
}
.container {
margin-bottom: $gutter-width;
border-radius: $border-radius;
}
.flex {
justify-content: start;
& > * {
flex: 1 1 0;
min-width: $min-column-width;
}
h1, h2, h3, h4, h5, h6 {
min-width: 100%;
}
}
@media only screen and (min-width: $media-query) {
.flex {
& > * {
min-width: $min-column-width-desktop;
}
p {
max-width: 90%;
}
&.gallery {
li {
max-width: calc(#{$min-column-width-desktop} + calc(3 * #{$gutter-width}));
}
}
}
}

View File

@ -0,0 +1,225 @@
#header {
$transition-time: 0.4s;
position: fixed;
width: 100%;
top: 0;
left: 0;
font-family: $heading-font-family;
z-index: 2000;
&.small {
transition: $transition-time;
.navbar-logo {
flex: 0 1 0;
min-width: 100px;
img {
max-height: 25px;
transition: $transition-time * 1.5;
width: auto;
}
}
@media only screen and (min-width: $media-query) {
.navbar-logo {
img {
transition: $transition-time * 1.5;
max-height: 40px;
}
}
}
}
&.large {
transition: $transition-time;
.navbar-logo {
flex: 0 1 0;
min-width: 100px;
img {
max-height: 50px;
width: auto;
transition: $transition-time * 1.5;
}
}
@media only screen and (min-width: $media-query) {
.navbar-logo {
img {
max-height: 100px;
transition: $transition-time * 1.5;
}
}
}
}
&.hidden {
transition: $transition-time;
top: -200px;
}
h1 {
font-size: 1.3rem;
display: inline;
margin: $gutter-width;
padding: 0;
}
.container {
border-radius: 0 0 $border-radius $border-radius;
margin-bottom: 0;
}
.navbar {
@extend .flex;
@extend .column;
justify-content: space-between;
align-items: stretch;
padding: 0 $gutter-width;
flex: 1 0 0;
min-width: 0;
@media only screen and (min-width: $media-query) {
max-width: none;
}
input[type=checkbox] {
display: none;
& + label {
display: block;
margin-left: auto;
margin-top: $gutter-width;
max-width: 35px;
max-height: 35px;
min-width: 35px;
min-height: 35px;
.toggler {
position: relative;
display: block;
cursor: pointer;
width: 35px;
height: 30px;
background-color: transparent;
.line {
height: 4px;
width: 35px;
background: black;
border-radius: 2px;
transition: 0.4s;
transform-origin: center;
position: absolute;
}
.line:nth-child(1) {
top: 0px;
}
.line:nth-child(2) {
top: 10px;
transition: 0.1s;
}
.line:nth-child(3) {
top: 20px;
}
}
}
}
input[type=checkbox]:checked+.hamburger .line:nth-child(1) {
transform: translateY(10px) rotate(-45deg);
}
input[type=checkbox]:checked+.hamburger .line:nth-child(2) {
opacity: 0;
}
input[type=checkbox]:checked+.hamburger .line:nth-child(3) {
transform: translateY(-10px) rotate(45deg);
}
ul {
display: none;
}
input[type=checkbox]:checked ~ .navbar-container nav {
ul {
@include menu-list(column);
li {
text-align: right;
flex: 0 0 0;
margin: $gutter-width 0;
font-size: 1.1rem;
font-weight: bold;
a {
&:active,
&:hover {
color: darken($primary-color, 15%);
}
}
}
}
}
.navbar-container {
margin-top: auto;
min-width: 0;
nav {
@extend .flex;
@extend .column;
align-items: flex-end;
height: 100%;
@media only screen and (min-width: $media-query) {
& {
justify-content: flex-end;
align-items: flex-end;
}
ul {
@include menu-list(row);
align-items: flex-end;
height: 100%;
li {
font-size: 1.1rem;
font-weight: bold;
}
}
}
}
}
@media only screen and (min-width: $media-query) {
input[type=checkbox] {
display: none;
& + label {
display: none;
.line {
display: none;
}
}
}
ul:last-child {
li {
&:last-child {
margin-right: 0;
}
}
}
}
}
}

View File

@ -0,0 +1,78 @@
#content {
#index-hero {
.hero-container {
text-align: center;
img.hero {
margin: 0.5rem auto 0;
max-width: 150px;
height: auto;
}
header,
div.content {
text-align: left;
}
}
}
#index-title {
display: none;
}
#index-short-contact {
font-size: 1.1rem;
align-items: flex-start;
background-color: rgba(255, 255, 255, 0.9);
height: 90px;
border-radius: $border-radius;
padding: $gutter-width;
margin: calc(100vh - 310px) -$gutter-width 0 -$gutter-width;
overflow: hidden;
min-width: 100%;
@media only screen and (min-width: $media-query) {
margin-top: calc(100vh - 285px);
margin-bottom: -$gutter-width;
margin-left: calc(#{$gutter-width} + calc(2 * calc(#{$max-width} / 3)));
margin-right: -$gutter-width;
padding-right: $gutter-width;
max-width: calc(#{$max-width} / 3);
min-width: calc(#{$max-width} / 3);
}
ul {
list-style: none;
padding: 0;
margin: 0;
display: flex;
flex-direction: row;
justify-content: center;
li {
margin: 0.5rem $gutter-width;
font-size: 2rem;
}
}
& > * {
flex: 1 0 0;
}
}
#index-contact {
.padding {
flex: 1 0 0;
}
}
#index-gallery {
figure {
text-align: center;
figcaption {
text-align: left;
}
}
}
}

View File

@ -0,0 +1,5 @@
#list {
footer {
font-size: 0.8rem;
}
}

View File

@ -15,17 +15,20 @@
@mixin menu-list($direction) {
& {
list-style: none;
margin: 0;
padding: 0;
display: flex;
flex-direction: #{$direction};
li {
flex: 0 0 auto;
margin: 0 $gutter-width;
}
}
}
@mixin background($class) {
$background-image: '/img/background/' + $class + '.jpg';
$background-image: "/img/background/" + $class + ".jpg";
& {
background-position: center;
@ -37,10 +40,11 @@
background-image: url(#{$background-image});
}
@media only screen and (max-width: $sm-min) {
@media only screen and (max-width: 800px) {
&.background-default {
background-position-x: 37%;
}
}
}
}

View File

@ -0,0 +1,56 @@
#single {
.single-footer {
p {
margin: 0;
font-size: 0.8rem;
}
}
.featured {
max-width: $min-column-width;
height: auto;
display: inline-block;
margin-bottom: 1rem;
float: left;
img {
width: 100%;
}
& + p {
margin-top: 0;
}
}
p {
float: none;
}
blockquote {
float: none;
font-style: italic;
cite {
font-size: 0.8em;
margin-left: 1rem;
}
}
}
@media screen and (min-width: 500px) {
#single {
.featured {
max-width: $min-column-width-desktop;
}
}
}
@media screen and (min-width: $media-query) {
figure.left {
max-width: $min-column-width-desktop;
}
figure.right {
max-width: $min-column-width-desktop;
}
}

View File

@ -1,18 +1,23 @@
$gutter-width: 1rem;
$max-width: 900px;
$gutter-width: 10px;
$min-column-width: 200px;
$min-column-width-desktop: $min-column-width + (6 * $gutter-width);
$base-font-size: 16px;
$base-line-height: 1.4em;
$base-font-family: Roboto, sans-serif;
$heading-font-family: 'Roboto Slab', sans-serif;
$heading-font-family: "Roboto Slab", sans-serif;
$font-color: black;
$background-color: white;
$primary-color: #2d763a;
$secondary-color: #720026;
$border-radius: 5px;
$background-default: 'grabmal';
$background-bau: 'bau';
$fa-font-path: '~@fortawesome/fontawesome-free/webfonts/';
$background-default: "grabmal";
$background-bau: "bau";
$media-query: #{$max-width + 6 * $gutter-width};
$fa-font-path: "~@fortawesome/fontawesome-free/webfonts/";

View File

@ -1,16 +1,22 @@
@import '_reset.scss';
@import '_variables.scss';
@import '~@fortawesome/fontawesome-free/scss/fontawesome.scss';
@import '~@fortawesome/fontawesome-free/scss/regular.scss';
@import '~@fortawesome/fontawesome-free/scss/solid.scss';
@import '~@fortawesome/fontawesome-free/scss/brands.scss';
@import '~cookieconsent/src/styles/animation.css';
@import '~cookieconsent/src/styles/base.css';
@import '~cookieconsent/src/styles/layout.css';
@import '~cookieconsent/src/styles/media.css';
@import '~cookieconsent/src/styles/themes/classic.css';
@import '_fonts.scss';
@import '_mixins.scss';
@import '_flexgrid.scss';
@import '_app.scss';
@import '_lightbox.scss';
@import "_reset.scss";
@import "_variables.scss";
@import "~@fortawesome/fontawesome-free/scss/fontawesome.scss";
@import "~@fortawesome/fontawesome-free/scss/regular.scss";
@import "~@fortawesome/fontawesome-free/scss/solid.scss";
@import "~@fortawesome/fontawesome-free/scss/brands.scss";
@import "~cookieconsent/src/styles/animation.css";
@import "~cookieconsent/src/styles/base.css";
@import "~cookieconsent/src/styles/layout.css";
@import "~cookieconsent/src/styles/media.css";
@import "~cookieconsent/src/styles/themes/classic.css";
@import "_fonts.scss";
@import "_mixins.scss";
@import "_grid.scss";
@import "_header.scss";
@import "_footer.scss";
@import "_list.scss";
@import "_single.scss";
@import "_index.scss";
@import "_lightbox.scss";
@import "_content.scss";
@import "_banner.scss";

View File

@ -1,96 +0,0 @@
<template>
<article class="row" v-if="articleData">
<header class="col-xs-12">
<h1>{{ articleData.title }}</h1>
</header>
<div class="col-xs-12">
<div class="row">
<div
v-if="hasWebGl && articleData.model"
class="featured col-xs-12 col-sm-8"
>
<model-viewer :modelData="articleData.model" />
</div>
<figure v-else class="featured col-xs-12 col-sm-8">
<img alt="" title="" class="" srcset="" sizes="" src="" />
</figure>
<div class="col-sm-4 col-xs-12">
<p
v-if="
hasWebGl &&
articleData.model &&
articleData.model.textures.length > 1
"
>
<strong>Material ändern</strong>
<material-switcher :modelData="articleData.model" />
</p>
<p class="offer">
<a
class="btn btn-secondary"
v-if="articleData.offer"
:href="articleData.offer"
>Angebot</a
>
</p>
<p class="type">Typ: {{ types }}</p>
<p class="material">Material: {{ material }}</p>
<p class="ornament" v-if="articleData.ornament">
Ornament: {{ articleData.ornament }}
</p>
<p class="description" v-if="articleData.description">
{{ articleData.description }}
</p>
<p class="article-id">Art. Nr.: {{ articleData.article_id }}</p>
</div>
</div>
</div>
</article>
</template>
<script>
import ModelViewer from './components/ModelViewer.vue'
import MaterialSwitcher from './components/MaterialSwitcher.vue'
import * as WebGL from 'three/examples/js/WebGL.js'
import { mapState } from 'vuex'
export default {
data() {
return {
hasWebGl: false,
}
},
mounted() {
this.$store.dispatch('fetchArticleData')
console.log(WebGL)
var canvas = document.createElement('canvas')
if (
window.WebGLRenderingContext &&
(canvas.getContext('webgl') || canvas.getContext('experimental-webgl'))
) {
this.hasWebGl = true
} else {
this.hasWebGl = false
}
},
computed: {
...mapState(['articleData', 'activeTexture']),
types() {
if (this.articleData.article_type) {
return this.articleData.article_type.join(', ')
}
return ''
},
material() {
if (this.activeTexture) {
return this.activeTexture.name
}
return this.articleData.material
},
},
components: {
ModelViewer,
MaterialSwitcher,
},
}
</script>

View File

@ -1,15 +0,0 @@
<template>
<div>{{ msg }}{{ hello }}</div>
</template>
<script>
export default {
name: 'catalog-similar',
props: ['hello'],
data() {
return {
msg: 'Hello World'
}
}
}
</script>

View File

@ -1,60 +0,0 @@
<template>
<article v-if="articleData">
<header class="flex padding">
<h1>{{ articleData.title }}</h1>
</header>
<div class="content flex">
<div class="padding">
<div v-if="articleData.model" class="featured left wide">
<model-viewer class="model-viewer" :modelData="articleData.model" />
</div>
<p>
<strong>Material ändern</strong>
<material-switcher :modelData="articleData.model" />
</p>
<p class="type">Typ: {{ types }}</p>
<p class="material">Material: {{ material }}</p>
<p class="offer" v-if="articleData.offer">
<a :href="articleData.offer">Angebot</a>
</p>
<p class="ornament" v-if="articleData.ornament">
Ornament: {{ articleData.ornament }}
</p>
<p class="description" v-if="articleData.description">
{{ articleData.description }}
</p>
<p class="article-id">Art. Nr.: {{ articleData.article_id }}</p>
</div>
</div>
</article>
</template>
<script>
import ModelViewer from './components/ModelViewer.vue'
import MaterialSwitcher from './components/MaterialSwitcher.vue'
import { mapState } from 'vuex'
export default {
mounted() {
this.$store.dispatch('fetchArticleData')
},
computed: {
...mapState(['articleData', 'activeTexture']),
types() {
if (this.articleData.article_type) {
return this.articleData.article_type.join(', ')
}
return ''
},
material() {
if (this.activeTexture) {
return this.activeTexture.name
}
return this.articleData.material
},
},
components: {
ModelViewer,
MaterialSwitcher,
},
}
</script>

View File

@ -1,34 +0,0 @@
import Vue from 'vue'
import Vuex from 'vuex'
import axios from 'axios'
Vue.use(Vuex)
export default new Vuex.Store({
state: {
articleData: {},
activeTexture: undefined,
},
mutations: {
setArticleData(store, data) {
store.articleData = data
},
setActiveTexture(store, data) {
store.activeTexture = data
},
},
actions: {
fetchArticleData({ commit }) {
let path = window.location.pathname
axios
.get(path.replace(/modell\//, '') + 'index.json')
.then(response => {
commit('setArticleData', response.data)
})
.catch(error => console.log(error))
},
updateActiveTexture({ commit }, data) {
commit('setActiveTexture', data)
},
},
})

View File

@ -1,23 +0,0 @@
<template>
<ul class="list-unstyled material-switcher" v-if="modelData">
<material-switcher-item
v-for="texture of modelData.textures"
:key="texture.url"
:texture="texture"
/>
</ul>
</template>
<script>
import MaterialSwitcherItem from './MaterialSwitcherItem.vue'
export default {
components: {
materialSwitcherItem: MaterialSwitcherItem,
},
props: {
modelData: {
type: Object,
},
},
}
</script>

View File

@ -1,54 +0,0 @@
<template>
<li>
<img
class="texture-preview"
:src="texture.url"
:alt="texture.name"
@click="applyTexture"
/>
</li>
</template>
<script>
export default {
props: {
texture: {
type: Object,
required: true,
},
},
methods: {
applyTexture() {
this.$store.dispatch('updateActiveTexture', this.texture)
},
},
}
</script>
<style lang="scss">
#single {
.material-switcher {
display: flex;
justify-content: flex-start;
li:first-child {
padding: 0 2px 0 0;
}
li:last-child {
padding: 0 0 0 2px;
}
li {
height: auto;
padding: 0 2px;
cursor: pointer;
img {
width: 80px;
height: auto;
}
}
}
}
</style>

View File

@ -1,214 +0,0 @@
<template>
<div class="model-wrapper">
<span class="mouseover"><i class="fa fa-cube"></i></span>
<canvas id="model-viewer" class="model-viewer" ref="renderer"></canvas>
</div>
</template>
<script>
import {
WebGLRenderer,
PerspectiveCamera,
Scene,
AmbientLight,
DirectionalLight,
PCFShadowMap,
LinearToneMapping,
TextureLoader,
} from 'three'
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls'
import { OBJLoader } from 'three/examples/jsm/loaders/OBJLoader'
import { MTLLoader } from 'three/examples/jsm/loaders/MTLLoader'
import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader'
import { mapState } from 'vuex'
export default {
name: 'model-viewer',
data() {
return {
renderer: null,
scene: null,
camera: null,
model: null,
}
},
props: {
modelData: Object,
},
mounted() {
this.setup()
this.loadGltf(this.modelData.url)
this.render()
this.update()
},
methods: {
setup() {
this.setupCamera()
this.setupScene()
this.setupRenderer()
this.setupLight()
this.setupControls()
},
setupControls() {
this.controls = new OrbitControls(this.camera, this.renderer.domElement)
this.controls.addEventListener('change', this.render)
this.controls.addEventListener('touchstart', this.render)
this.controls.enableDamping = false
this.controls.dampingFactor = 1.5
this.controls.screenSpacePanning = false
this.controls.enableZoom = false
this.controls.enablePan = false
this.controls.minPolarAngle = Math.PI / 8
this.controls.maxPolarAngle = Math.PI - Math.PI / 4
this.controls.minAzimuthAngle = -(Math.PI / 4)
this.controls.maxAzimuthAngle = Math.PI / 4
this.controls.update()
},
setupScene() {
this.scene = new Scene()
},
getWidth() {
let el = this.$el.parentElement || 0
if (el) {
console.log(el.offsetWidth)
return el.offsetWidth
}
return 0
},
getHeight() {
let el = this.$el.parentElement || 0
if (el) {
return el.offsetWidth / 1.333333
}
return 0
},
getAspectRatio() {
return this.getWidth() / this.getHeight()
},
setupCamera() {
this.camera = new PerspectiveCamera(60, this.getAspectRatio(), 0.1, 300)
this.camera.position.z = 0.9
this.camera.position.y = 0.3
},
setupLight() {
var directionalLight = new DirectionalLight(0xffffff, 0.5)
directionalLight.position.set(-30, -30, -30)
this.scene.add(directionalLight)
var directionalLight2 = new DirectionalLight(0xffffff, 1.6)
directionalLight2.position.set(3, 10, 10)
this.scene.add(directionalLight2)
},
setupRenderer() {
this.renderer = new WebGLRenderer({
canvas: this.$refs.renderer,
antialias: true,
alpha: true,
})
this.renderer.setClearColor(0xffffff)
this.renderer.setClearAlpha(0)
this.renderer.setSize(this.getWidth(), this.getHeight())
this.renderer.gammaOutput = true
this.renderer.gammaFactor = 2.2
this.renderer.toneMapping = LinearToneMapping
this.renderer.toneMappingExposure = Math.pow(0.94, 5.0)
this.renderer.shadowMap.enabled = true
this.renderer.shadowMap.type = PCFShadowMap
window.addEventListener('resize', this.setCanvasSize)
},
loadObjMtl(objPath, mtlPath) {
var objLoader = new OBJLoader()
objLoader.setPath('/')
var mtlLoader = new MTLLoader()
mtlLoader.setPath('/')
new Promise((resolve, reject) => {
mtlLoader.load(
mtlPath,
materials => resolve(materials),
undefined,
error => reject(error)
)
})
.then(materials => {
materials.preload()
objLoader.setMaterials(materials)
objLoader.load(objPath, this.addObject)
this.render()
})
.catch(error => console.log(error))
},
loadGltf(gltfPath) {
var gltfLoader = new GLTFLoader()
new Promise((resolve, reject) => {
gltfLoader.load(gltfPath, gltf => resolve(gltf), undefined, error =>
reject(error)
)
})
.then(gltf => {
this.readGLTF(gltf)
})
.catch(error => console.log(error))
},
changeTexture(texture) {
new Promise(resolve => {
new TextureLoader().load(texture.url, data => resolve(data))
}).then(data => {
this.$store.dispatch('updateActiveTexture', texture)
this.model.material.map = data
this.update()
})
},
readGLTF(gltf) {
gltf.scene.position.x = -0.5
gltf.scene.position.y = -0.3
gltf.scene.rotation.set(0, 0, 0)
this.scene.add(gltf.scene)
this.model = gltf.scene.children[0]
//this.changeTexture('/katalog/urnengrabanlage/abdeckung/model/granit.jpg')
this.render()
},
setCanvasSize() {
this.renderer.setSize(this.getWidth(), this.getHeight())
this.camera.aspepct = this.getAspectRatio()
this.camera.updateProjectionMatrix()
this.render()
},
render() {
this.renderer.render(this.scene, this.camera)
},
update() {
this.controls.update()
this.render()
},
},
computed: {
...mapState(['activeTexture']),
},
watch: {
activeTexture(value) {
console.log('hello', value)
this.changeTexture(value)
},
},
}
</script>
<style lang="scss">
.model-wrapper {
position: relative;
canvas {
background: rgba(0, 0, 0, 0);
}
.mouseover {
position: absolute;
top: 0;
right: 0;
font-weight: bold;
i {
font-size: 1.5rem;
}
}
}
</style>

View File

@ -1,184 +0,0 @@
const VueLoaderPlugin = require("vue-loader/lib/plugin")
const CleanWebpackPlugin = require("clean-webpack-plugin")
const MiniCssExtractPlugin = require("mini-css-extract-plugin")
const webpack = require('webpack')
const path = require("path")
module.exports = {
entry: {
app: ["./src/js/main.js"],
images: ["./src/js/images.js"],
catalog: ["./src/js/catalog.js"],
style: ["./src/scss/main.scss"],
},
context: __dirname,
output: {
filename: "js/[name].bundle.js",
chunkFilename: 'js/[name].bundle.js',
sourceMapFilename: '[file].map',
path: __dirname + "/assets"
},
optimization: {
//usedExports: true,
splitChunks: {
cacheGroups: {
common: {
name: 'common',
chunks: 'initial',
minChunks: 2
},
vue: {
test: /[\\/]node_modules[\\/](vue)[\\/]/,
name: 'vue',
chunks: 'all',
},
three: {
test: /[\\/]node_modules[\\/](three)[\\/]/,
name: 'three',
chunks: 'all',
},
}
},
},
module: {
rules: [
{
test: /\.m?js$/,
exclude: /node_modules/,
use: [
{
loader: "babel-loader"
}
]
},
{
test: /\.(sa|sc|c)ss$/,
use: [
{
loader: 'vue-style-loader',
},
{
loader: MiniCssExtractPlugin.loader,
options: {
publicPath: "../",
sourceMap: true
}
},
{
loader: "css-loader",
options: {
sourceMap: true,
}
},
{
loader: "postcss-loader",
options: {
sourceMap: true
}
},
{
loader: "sass-loader",
options: {
implementation: require("sass"),
sourceMap: true
}
}
]
},
{
test: /\.vue$/,
loader: "vue-loader",
options: {}
},
{
test: /\.woff2?(\?v=\d+\.\d+\.\d+)?$/,
loader: "url-loader",
options: {
limit: 1000,
mimetype: "application/font-woff",
name: "[name].[ext]",
outputPath: "../static/fonts",
publicPath: "../fonts"
}
},
{
test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/,
loader: "url-loader",
options: {
limit: 1000,
mimetype: "application/octet-stream",
name: "[name].[ext]",
outputPath: "../static/fonts",
publicPath: "../fonts"
}
},
{
test: /\.eot(\?v=\d+\.\d+\.\d+)?$/,
loader: "file-loader",
options: {
name: "[name].[ext]",
outputPath: "../static/fonts",
publicPath: "../fonts"
}
},
{
test: /\.svg(\?v=\d+\.\d+\.\d+)?$/,
loader: "url-loader",
options: {
limit: 1000,
mimetype: "image/svg+xml",
name: "[name].[ext]",
outputPath: "../static/fonts",
publicPath: "../fonts"
}
},
{
test: /\/src\/img\/.*\.(ico|svg|ico|gif|jpe?g|png)$/,
use: [
{
loader: "file-loader",
options: {
name: "../static/img/[2].[ext]",
regExp: /(src\/img)+\/(.*).(gif|svg|ico|gif|jpe?g|png)$/
}
},
{
loader: "image-webpack-loader",
options: {
mozjpeg: {
progressive: true,
quality: 75
},
// optipng.enabled: false will disable optipng
optipng: {
enabled: false
},
pngquant: {
quality: "65-90",
speed: 4
},
gifsicle: {
interlaced: false
}
}
}
]
}
]
},
plugins: [
new VueLoaderPlugin(),
new CleanWebpackPlugin([
"assets/css/*",
"assets/js/*",
"static/fonts/*",
"static/img/*"
]),
new MiniCssExtractPlugin({
// Options similar to the same options in webpackOptions.output
// both options are optional
filename: "css/[name].css",
chunkFilename: "css/[id].css",
}),
],
}

View File

@ -0,0 +1,164 @@
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const CleanWebpackPlugin = require('clean-webpack-plugin');
const UglifyJsPlugin = require("uglifyjs-webpack-plugin");
const OptimizeCSSAssetsPlugin = require("optimize-css-assets-webpack-plugin");
const path = require('path');
module.exports = {
entry: {
bundle: ['./src/js/main.js'],
images: ['./src/js/images.js'],
style: ['./src/scss/main.scss'],
},
mode: 'production',
devtool: 'source-map',
context: __dirname,
output: {
filename: 'js/[name].js',
path: __dirname + '/assets',
},
module: {
rules: [
{
test: /\.m?js$/,
exclude: /node_modules/,
use: [
{
loader: 'babel-loader'
}
]
},
{
test: /\.(sa|sc|c)ss$/,
use: [
{
loader: MiniCssExtractPlugin.loader,
options: {
publicPath: '../',
sourceMap: true
}
},
{
loader: "css-loader",
options: {
sourceMap: true
}
},
{
loader: "postcss-loader",
options: {
sourceMap: true
}
},
{
loader: "sass-loader",
options: {
sourceMap: true
}
},
]
},
{
test: /\.woff2?(\?v=\d+\.\d+\.\d+)?$/,
loader: "url-loader",
options: {
limit: 1000,
mimetype: 'application/font-woff',
name: '[name].[ext]',
outputPath: '../static/fonts',
publicPath: '../fonts'
}
},
{
test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/,
loader: "url-loader",
options: {
limit: 1000,
mimetype: 'application/octet-stream',
name: '[name].[ext]',
outputPath: '../static/fonts',
publicPath: '../fonts'
}
},
{
test: /\.eot(\?v=\d+\.\d+\.\d+)?$/,
loader: "file-loader",
options: {
name: '[name].[ext]',
outputPath: '../static/fonts',
publicPath: '../fonts'
}
},
{
test: /\.svg(\?v=\d+\.\d+\.\d+)?$/,
loader: "url-loader",
options: {
limit: 1000,
mimetype: 'image/svg+xml',
name: '[name].[ext]',
outputPath: '../static/fonts',
publicPath: '../fonts'
}
},
{
test: /\/src\/img\/.*\.(ico|svg|ico|gif|jpe?g|png)$/,
use: [
{
loader: 'file-loader',
options: {
name: '../static/img/[2].[ext]',
regExp: /(src\/img)+\/(.*).(gif|svg|ico|gif|jpe?g|png)$/,
}
},
{
loader: 'image-webpack-loader',
options: {
mozjpeg: {
progressive: true,
quality: 75
},
// optipng.enabled: false will disable optipng
optipng: {
enabled: false,
},
pngquant: {
quality: '65-90',
speed: 4
},
gifsicle: {
interlaced: false,
},
}
}
]
},
]
},
plugins: [
new CleanWebpackPlugin(['assets/css/*', 'assets/js/*', 'static/fonts/*', 'static/img/*']),
new MiniCssExtractPlugin({
// Options similar to the same options in webpackOptions.output
// both options are optional
filename: "css/[name].css",
chunkFilename: "css/[id].css",
})
],
optimization: {
usedExports: true,
minimizer: [
new UglifyJsPlugin({
cache: true,
parallel: true,
sourceMap: true // set to true if you want JS source maps
}),
new OptimizeCSSAssetsPlugin({
cssProcessorOptions: {
map: {
inline: false,
annotation: true
}
}
})
]
}
};

View File

@ -1,9 +0,0 @@
const merge = require('webpack-merge')
const common = require('./webpack.common.js')
const webpack = require('webpack')
module.exports = merge(common, {
mode: 'development',
devtool: 'source-map',
plugins: []
})

Some files were not shown because too many files have changed in this diff Show More