From 21711bd5dd4697a0c81c18f196694cc193a1be73 Mon Sep 17 00:00:00 2001 From: Julie Blanc Date: Sat, 10 Jan 2026 18:33:22 +0100 Subject: [PATCH] initial commit --- .gitignore | 1 + .hugo_build.lock | 0 README.md | 14 + archetypes/default.md | 14 + assets/style-print.css | 81 + assets/style-screen.css | 23 + content/edito.md | 8 + content/people/julies-durand.md | 17 + content/people/louis-rigaud.md | 19 + content/people/maud-guerche.md | 16 + content/people/pierre-fourny.md | 16 + hugo.toml | 8 + layouts/_default/baseof.html | 44 + layouts/index.html | 82 + public/csspageweaver/.gitignore | 1 + public/csspageweaver/.gitlab-ci.yml | 104 + public/csspageweaver/README.md | 177 + public/csspageweaver/interface/css/grid.css | 46 + .../csspageweaver/interface/css/interface.css | 127 + public/csspageweaver/interface/css/panel.css | 532 + .../IBM_Plex_Mono/IBMPlexMono-Italic.woff | Bin 0 -> 56520 bytes .../IBM_Plex_Mono/IBMPlexMono-Italic.woff2 | Bin 0 -> 39964 bytes .../IBM_Plex_Mono/IBMPlexMono-Medium.woff | Bin 0 -> 51872 bytes .../IBM_Plex_Mono/IBMPlexMono-Medium.woff2 | Bin 0 -> 36648 bytes .../IBMPlexMono-MediumItalic.woff | Bin 0 -> 57840 bytes .../IBMPlexMono-MediumItalic.woff2 | Bin 0 -> 41156 bytes .../IBM_Plex_Mono/IBMPlexMono-Regular.woff | Bin 0 -> 50664 bytes .../IBM_Plex_Mono/IBMPlexMono-Regular.woff2 | Bin 0 -> 35536 bytes .../IBM_Plex_Mono/IBMPlexMono-SemiBold.woff | Bin 0 -> 52936 bytes .../IBM_Plex_Mono/IBMPlexMono-SemiBold.woff2 | Bin 0 -> 37592 bytes .../IBMPlexMono-SemiBoldItalic.woff | Bin 0 -> 58712 bytes .../IBMPlexMono-SemiBoldItalic.woff2 | Bin 0 -> 41848 bytes .../fonts/IBM_Plex_Mono/stylesheet.css | 42 + public/csspageweaver/lib/csstree.min.js | 1 + public/csspageweaver/lib/paged.esm.js | 33190 ++++++++++++++++ public/csspageweaver/main.js | 127 + public/csspageweaver/manifest.json | 37 + public/csspageweaver/modules/dict.js | 333 + public/csspageweaver/modules/frame_render.js | 410 + public/csspageweaver/modules/gui.js | 510 + public/csspageweaver/modules/pre_render.js | 160 + public/csspageweaver/modules/render.js | 58 + public/csspageweaver/plugins/.gitignore | 1 + .../csspageweaver/plugins/baseline/.gitignore | 1 + .../csspageweaver/plugins/baseline/README.md | 8 + .../plugins/baseline/baseline.css | 21 + .../plugins/baseline/baseline.js | 100 + .../plugins/baseline/config.json | 13 + .../plugins/baseline/template.html | 8 + .../plugins/floatPage/.gitignore | 1 + .../plugins/floatPage/.hugo_build.lock | 0 .../csspageweaver/plugins/floatPage/README.md | 74 + .../plugins/floatPage/config.json | 8 + .../plugins/floatPage/floatPage.js | 153 + .../floatPage/public/categories/index.xml | 11 + .../plugins/floatPage/public/index.xml | 11 + .../plugins/floatPage/public/sitemap.xml | 11 + .../plugins/floatPage/public/tags/index.xml | 11 + .../plugins/footnotesFix/.gitignore | 1 + .../plugins/footnotesFix/README.md | 95 + .../plugins/footnotesFix/config.json | 9 + .../plugins/footnotesFix/footnotes.css | 9 + .../plugins/footnotesFix/footnotes.js | 85 + .../plugins/frenchTypoRegex/.gitignore | 1 + .../plugins/frenchTypoRegex/config.json | 10 + .../frenchTypoRegex/frenchTypoRegex.js | 169 + .../csspageweaver/plugins/fullPage/.gitignore | 1 + .../csspageweaver/plugins/fullPage/README.md | 126 + .../plugins/fullPage/config.json | 9 + .../plugins/fullPage/fullPage.css | 49 + .../plugins/fullPage/fullPage.js | 294 + public/csspageweaver/plugins/grid/.gitignore | 1 + public/csspageweaver/plugins/grid/README.md | 7 + public/csspageweaver/plugins/grid/config.json | 13 + .../csspageweaver/plugins/grid/grid-hook.js | 17 + public/csspageweaver/plugins/grid/grid-ui.js | 45 + public/csspageweaver/plugins/grid/grid.css | 127 + .../plugins/imposition/.gitignore | 1 + .../plugins/imposition/config.json | 17 + .../csspageweaver/plugins/imposition/index.js | 363 + .../plugins/imposition/stylesheet.css | 0 .../plugins/imposition/template.html | 22 + .../plugins/inlineNotes/.gitignore | 1 + .../plugins/inlineNotes/README.md | 77 + .../plugins/inlineNotes/config.json | 8 + .../plugins/inlineNotes/inlineNotes.js | 140 + .../plugins/marginBox/.gitignore | 1 + .../plugins/marginBox/config.json | 10 + .../plugins/marginBox/marginBox.css | 7 + .../plugins/marginBox/marginBox.js | 26 + .../csspageweaver/plugins/moveElems/README.md | 82 + .../plugins/moveElems/config.json | 8 + .../plugins/moveElems/moveElems.js | 81 + .../plugins/previewPage/.gitignore | 1 + .../plugins/previewPage/config.json | 19 + .../plugins/previewPage/event.js | 52 + .../plugins/previewPage/stylesheet.css | 39 + .../plugins/previewPage/template.html | 31 + .../plugins/reloadInPlace/.gitignore | 1 + .../plugins/reloadInPlace/Readme.md | 17 + .../plugins/reloadInPlace/config.json | 9 + .../plugins/reloadInPlace/reloadInPlace.js | 174 + .../csspageweaver/plugins/spread/.gitignore | 1 + .../csspageweaver/plugins/spread/config.json | 15 + .../plugins/spread/spread-hook.js | 25 + .../csspageweaver/plugins/spread/spread-ui.js | 38 + .../csspageweaver/plugins/spread/spread.css | 29 + .../csspageweaver/plugins/spread/spread.html | 61 + public/fonts/sentient/Sentient-Bold.woff | Bin 0 -> 30256 bytes public/fonts/sentient/Sentient-Bold.woff2 | Bin 0 -> 23140 bytes .../fonts/sentient/Sentient-BoldItalic.woff | Bin 0 -> 30608 bytes .../fonts/sentient/Sentient-BoldItalic.woff2 | Bin 0 -> 23468 bytes public/fonts/sentient/Sentient-Italic.woff | Bin 0 -> 32780 bytes public/fonts/sentient/Sentient-Italic.woff2 | Bin 0 -> 24640 bytes public/fonts/sentient/Sentient-Regular.woff | Bin 0 -> 32004 bytes public/fonts/sentient/Sentient-Regular.woff2 | Bin 0 -> 24348 bytes public/fonts/sentient/Sentient-Variable.woff | Bin 0 -> 31784 bytes public/fonts/sentient/Sentient-Variable.woff2 | Bin 0 -> 50628 bytes .../sentient/Sentient-VariableItalic.woff | Bin 0 -> 33492 bytes .../sentient/Sentient-VariableItalic.woff2 | Bin 0 -> 52092 bytes public/fonts/sentient/stylesheet.css | 86 + public/images/72dpi-photo-jules.jpg | Bin 0 -> 1910496 bytes ...s_emmanuel-pierrot_portraitaveclettres.jpg | Bin 0 -> 993271 bytes ...identite_ring_katharsy-03-maud-guerche.jpg | Bin 0 -> 386335 bytes public/images/conference-fac-alis.jpg | Bin 0 -> 630318 bytes ...srigaud-anouckboisrobert-helium-2018-2.jpg | Bin 0 -> 1017217 bytes ...mguerche_lucaprigione_112-maud-guerche.jpg | Bin 0 -> 159938 bytes public/images/photo-chez-jou-jules.jpg | Bin 0 -> 803103 bytes public/images/portrait-louisrigaud.jpg | Bin 0 -> 586747 bytes public/index.html | 262 + public/js/afterLayout.js | 14 + public/js/beforeParsed.js | 15 + public/js/carnet.js | 27 + public/style-print.css | 81 + public/style-screen.css | 23 + static/csspageweaver/.gitignore | 1 + static/csspageweaver/.gitlab-ci.yml | 104 + static/csspageweaver/README.md | 177 + static/csspageweaver/interface/css/grid.css | 46 + .../csspageweaver/interface/css/interface.css | 127 + static/csspageweaver/interface/css/panel.css | 532 + .../IBM_Plex_Mono/IBMPlexMono-Italic.woff | Bin 0 -> 56520 bytes .../IBM_Plex_Mono/IBMPlexMono-Italic.woff2 | Bin 0 -> 39964 bytes .../IBM_Plex_Mono/IBMPlexMono-Medium.woff | Bin 0 -> 51872 bytes .../IBM_Plex_Mono/IBMPlexMono-Medium.woff2 | Bin 0 -> 36648 bytes .../IBMPlexMono-MediumItalic.woff | Bin 0 -> 57840 bytes .../IBMPlexMono-MediumItalic.woff2 | Bin 0 -> 41156 bytes .../IBM_Plex_Mono/IBMPlexMono-Regular.woff | Bin 0 -> 50664 bytes .../IBM_Plex_Mono/IBMPlexMono-Regular.woff2 | Bin 0 -> 35536 bytes .../IBM_Plex_Mono/IBMPlexMono-SemiBold.woff | Bin 0 -> 52936 bytes .../IBM_Plex_Mono/IBMPlexMono-SemiBold.woff2 | Bin 0 -> 37592 bytes .../IBMPlexMono-SemiBoldItalic.woff | Bin 0 -> 58712 bytes .../IBMPlexMono-SemiBoldItalic.woff2 | Bin 0 -> 41848 bytes .../fonts/IBM_Plex_Mono/stylesheet.css | 42 + static/csspageweaver/lib/csstree.min.js | 1 + static/csspageweaver/lib/paged.esm.js | 33190 ++++++++++++++++ static/csspageweaver/main.js | 127 + static/csspageweaver/manifest.json | 37 + static/csspageweaver/modules/dict.js | 333 + static/csspageweaver/modules/frame_render.js | 410 + static/csspageweaver/modules/gui.js | 510 + static/csspageweaver/modules/pre_render.js | 160 + static/csspageweaver/modules/render.js | 58 + static/csspageweaver/plugins/.gitignore | 1 + .../csspageweaver/plugins/baseline/.gitignore | 1 + .../csspageweaver/plugins/baseline/README.md | 8 + .../plugins/baseline/baseline.css | 21 + .../plugins/baseline/baseline.js | 100 + .../plugins/baseline/config.json | 13 + .../plugins/baseline/template.html | 8 + .../plugins/floatPage/.gitignore | 1 + .../plugins/floatPage/.hugo_build.lock | 0 .../csspageweaver/plugins/floatPage/README.md | 74 + .../plugins/floatPage/config.json | 8 + .../plugins/floatPage/floatPage.js | 153 + .../floatPage/public/categories/index.xml | 11 + .../plugins/floatPage/public/index.xml | 11 + .../plugins/floatPage/public/sitemap.xml | 11 + .../plugins/floatPage/public/tags/index.xml | 11 + .../plugins/footnotesFix/.gitignore | 1 + .../plugins/footnotesFix/README.md | 95 + .../plugins/footnotesFix/config.json | 9 + .../plugins/footnotesFix/footnotes.css | 9 + .../plugins/footnotesFix/footnotes.js | 85 + .../plugins/frenchTypoRegex/.gitignore | 1 + .../plugins/frenchTypoRegex/config.json | 10 + .../frenchTypoRegex/frenchTypoRegex.js | 169 + .../csspageweaver/plugins/fullPage/.gitignore | 1 + .../csspageweaver/plugins/fullPage/README.md | 126 + .../plugins/fullPage/config.json | 9 + .../plugins/fullPage/fullPage.css | 49 + .../plugins/fullPage/fullPage.js | 294 + static/csspageweaver/plugins/grid/.gitignore | 1 + static/csspageweaver/plugins/grid/README.md | 7 + static/csspageweaver/plugins/grid/config.json | 13 + .../csspageweaver/plugins/grid/grid-hook.js | 17 + static/csspageweaver/plugins/grid/grid-ui.js | 45 + static/csspageweaver/plugins/grid/grid.css | 127 + .../plugins/imposition/.gitignore | 1 + .../plugins/imposition/config.json | 17 + .../csspageweaver/plugins/imposition/index.js | 363 + .../plugins/imposition/stylesheet.css | 0 .../plugins/imposition/template.html | 22 + .../plugins/inlineNotes/.gitignore | 1 + .../plugins/inlineNotes/README.md | 77 + .../plugins/inlineNotes/config.json | 8 + .../plugins/inlineNotes/inlineNotes.js | 140 + .../plugins/marginBox/.gitignore | 1 + .../plugins/marginBox/config.json | 10 + .../plugins/marginBox/marginBox.css | 7 + .../plugins/marginBox/marginBox.js | 26 + .../csspageweaver/plugins/moveElems/README.md | 82 + .../plugins/moveElems/config.json | 8 + .../plugins/moveElems/moveElems.js | 81 + .../plugins/previewPage/.gitignore | 1 + .../plugins/previewPage/config.json | 19 + .../plugins/previewPage/event.js | 52 + .../plugins/previewPage/stylesheet.css | 39 + .../plugins/previewPage/template.html | 31 + .../plugins/reloadInPlace/.gitignore | 1 + .../plugins/reloadInPlace/Readme.md | 17 + .../plugins/reloadInPlace/config.json | 9 + .../plugins/reloadInPlace/reloadInPlace.js | 174 + .../csspageweaver/plugins/spread/.gitignore | 1 + .../csspageweaver/plugins/spread/config.json | 15 + .../plugins/spread/spread-hook.js | 25 + .../csspageweaver/plugins/spread/spread-ui.js | 38 + .../csspageweaver/plugins/spread/spread.css | 29 + .../csspageweaver/plugins/spread/spread.html | 61 + static/fonts/sentient/Sentient-Bold.woff | Bin 0 -> 30256 bytes static/fonts/sentient/Sentient-Bold.woff2 | Bin 0 -> 23140 bytes .../fonts/sentient/Sentient-BoldItalic.woff | Bin 0 -> 30608 bytes .../fonts/sentient/Sentient-BoldItalic.woff2 | Bin 0 -> 23468 bytes static/fonts/sentient/Sentient-Italic.woff | Bin 0 -> 32780 bytes static/fonts/sentient/Sentient-Italic.woff2 | Bin 0 -> 24640 bytes static/fonts/sentient/Sentient-Regular.woff | Bin 0 -> 32004 bytes static/fonts/sentient/Sentient-Regular.woff2 | Bin 0 -> 24348 bytes static/fonts/sentient/Sentient-Variable.woff | Bin 0 -> 31784 bytes static/fonts/sentient/Sentient-Variable.woff2 | Bin 0 -> 50628 bytes .../sentient/Sentient-VariableItalic.woff | Bin 0 -> 33492 bytes .../sentient/Sentient-VariableItalic.woff2 | Bin 0 -> 52092 bytes static/fonts/sentient/stylesheet.css | 86 + static/images/72dpi-photo-jules.jpg | Bin 0 -> 1910496 bytes ...s_emmanuel-pierrot_portraitaveclettres.jpg | Bin 0 -> 993271 bytes ...identite_ring_katharsy-03-maud-guerche.jpg | Bin 0 -> 386335 bytes static/images/conference-fac-alis.jpg | Bin 0 -> 630318 bytes ...srigaud-anouckboisrobert-helium-2018-2.jpg | Bin 0 -> 1017217 bytes ...mguerche_lucaprigione_112-maud-guerche.jpg | Bin 0 -> 159938 bytes static/images/photo-chez-jou-jules.jpg | Bin 0 -> 803103 bytes static/images/portrait-louisrigaud.jpg | Bin 0 -> 586747 bytes static/js/afterLayout.js | 14 + static/js/beforeParsed.js | 15 + static/js/carnet.js | 27 + 253 files changed, 78415 insertions(+) create mode 100644 .gitignore create mode 100644 .hugo_build.lock create mode 100644 README.md create mode 100644 archetypes/default.md create mode 100644 assets/style-print.css create mode 100644 assets/style-screen.css create mode 100644 content/edito.md create mode 100644 content/people/julies-durand.md create mode 100644 content/people/louis-rigaud.md create mode 100644 content/people/maud-guerche.md create mode 100644 content/people/pierre-fourny.md create mode 100644 hugo.toml create mode 100644 layouts/_default/baseof.html create mode 100644 layouts/index.html create mode 100644 public/csspageweaver/.gitignore create mode 100644 public/csspageweaver/.gitlab-ci.yml create mode 100644 public/csspageweaver/README.md create mode 100644 public/csspageweaver/interface/css/grid.css create mode 100644 public/csspageweaver/interface/css/interface.css create mode 100644 public/csspageweaver/interface/css/panel.css create mode 100644 public/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-Italic.woff create mode 100644 public/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-Italic.woff2 create mode 100644 public/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-Medium.woff create mode 100644 public/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-Medium.woff2 create mode 100644 public/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-MediumItalic.woff create mode 100644 public/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-MediumItalic.woff2 create mode 100644 public/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-Regular.woff create mode 100644 public/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-Regular.woff2 create mode 100644 public/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-SemiBold.woff create mode 100644 public/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-SemiBold.woff2 create mode 100644 public/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-SemiBoldItalic.woff create mode 100644 public/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-SemiBoldItalic.woff2 create mode 100644 public/csspageweaver/interface/fonts/IBM_Plex_Mono/stylesheet.css create mode 100644 public/csspageweaver/lib/csstree.min.js create mode 100644 public/csspageweaver/lib/paged.esm.js create mode 100644 public/csspageweaver/main.js create mode 100644 public/csspageweaver/manifest.json create mode 100644 public/csspageweaver/modules/dict.js create mode 100644 public/csspageweaver/modules/frame_render.js create mode 100644 public/csspageweaver/modules/gui.js create mode 100644 public/csspageweaver/modules/pre_render.js create mode 100644 public/csspageweaver/modules/render.js create mode 100644 public/csspageweaver/plugins/.gitignore create mode 100644 public/csspageweaver/plugins/baseline/.gitignore create mode 100644 public/csspageweaver/plugins/baseline/README.md create mode 100644 public/csspageweaver/plugins/baseline/baseline.css create mode 100644 public/csspageweaver/plugins/baseline/baseline.js create mode 100644 public/csspageweaver/plugins/baseline/config.json create mode 100644 public/csspageweaver/plugins/baseline/template.html create mode 100644 public/csspageweaver/plugins/floatPage/.gitignore create mode 100644 public/csspageweaver/plugins/floatPage/.hugo_build.lock create mode 100644 public/csspageweaver/plugins/floatPage/README.md create mode 100644 public/csspageweaver/plugins/floatPage/config.json create mode 100644 public/csspageweaver/plugins/floatPage/floatPage.js create mode 100644 public/csspageweaver/plugins/floatPage/public/categories/index.xml create mode 100644 public/csspageweaver/plugins/floatPage/public/index.xml create mode 100644 public/csspageweaver/plugins/floatPage/public/sitemap.xml create mode 100644 public/csspageweaver/plugins/floatPage/public/tags/index.xml create mode 100644 public/csspageweaver/plugins/footnotesFix/.gitignore create mode 100644 public/csspageweaver/plugins/footnotesFix/README.md create mode 100644 public/csspageweaver/plugins/footnotesFix/config.json create mode 100644 public/csspageweaver/plugins/footnotesFix/footnotes.css create mode 100644 public/csspageweaver/plugins/footnotesFix/footnotes.js create mode 100644 public/csspageweaver/plugins/frenchTypoRegex/.gitignore create mode 100644 public/csspageweaver/plugins/frenchTypoRegex/config.json create mode 100644 public/csspageweaver/plugins/frenchTypoRegex/frenchTypoRegex.js create mode 100644 public/csspageweaver/plugins/fullPage/.gitignore create mode 100755 public/csspageweaver/plugins/fullPage/README.md create mode 100644 public/csspageweaver/plugins/fullPage/config.json create mode 100644 public/csspageweaver/plugins/fullPage/fullPage.css create mode 100644 public/csspageweaver/plugins/fullPage/fullPage.js create mode 100644 public/csspageweaver/plugins/grid/.gitignore create mode 100644 public/csspageweaver/plugins/grid/README.md create mode 100644 public/csspageweaver/plugins/grid/config.json create mode 100644 public/csspageweaver/plugins/grid/grid-hook.js create mode 100644 public/csspageweaver/plugins/grid/grid-ui.js create mode 100644 public/csspageweaver/plugins/grid/grid.css create mode 100644 public/csspageweaver/plugins/imposition/.gitignore create mode 100644 public/csspageweaver/plugins/imposition/config.json create mode 100644 public/csspageweaver/plugins/imposition/index.js create mode 100644 public/csspageweaver/plugins/imposition/stylesheet.css create mode 100644 public/csspageweaver/plugins/imposition/template.html create mode 100644 public/csspageweaver/plugins/inlineNotes/.gitignore create mode 100644 public/csspageweaver/plugins/inlineNotes/README.md create mode 100644 public/csspageweaver/plugins/inlineNotes/config.json create mode 100644 public/csspageweaver/plugins/inlineNotes/inlineNotes.js create mode 100644 public/csspageweaver/plugins/marginBox/.gitignore create mode 100644 public/csspageweaver/plugins/marginBox/config.json create mode 100644 public/csspageweaver/plugins/marginBox/marginBox.css create mode 100644 public/csspageweaver/plugins/marginBox/marginBox.js create mode 100644 public/csspageweaver/plugins/moveElems/README.md create mode 100644 public/csspageweaver/plugins/moveElems/config.json create mode 100644 public/csspageweaver/plugins/moveElems/moveElems.js create mode 100644 public/csspageweaver/plugins/previewPage/.gitignore create mode 100644 public/csspageweaver/plugins/previewPage/config.json create mode 100644 public/csspageweaver/plugins/previewPage/event.js create mode 100644 public/csspageweaver/plugins/previewPage/stylesheet.css create mode 100644 public/csspageweaver/plugins/previewPage/template.html create mode 100644 public/csspageweaver/plugins/reloadInPlace/.gitignore create mode 100644 public/csspageweaver/plugins/reloadInPlace/Readme.md create mode 100644 public/csspageweaver/plugins/reloadInPlace/config.json create mode 100644 public/csspageweaver/plugins/reloadInPlace/reloadInPlace.js create mode 100644 public/csspageweaver/plugins/spread/.gitignore create mode 100644 public/csspageweaver/plugins/spread/config.json create mode 100644 public/csspageweaver/plugins/spread/spread-hook.js create mode 100644 public/csspageweaver/plugins/spread/spread-ui.js create mode 100644 public/csspageweaver/plugins/spread/spread.css create mode 100644 public/csspageweaver/plugins/spread/spread.html create mode 100644 public/fonts/sentient/Sentient-Bold.woff create mode 100644 public/fonts/sentient/Sentient-Bold.woff2 create mode 100644 public/fonts/sentient/Sentient-BoldItalic.woff create mode 100644 public/fonts/sentient/Sentient-BoldItalic.woff2 create mode 100644 public/fonts/sentient/Sentient-Italic.woff create mode 100644 public/fonts/sentient/Sentient-Italic.woff2 create mode 100644 public/fonts/sentient/Sentient-Regular.woff create mode 100644 public/fonts/sentient/Sentient-Regular.woff2 create mode 100644 public/fonts/sentient/Sentient-Variable.woff create mode 100644 public/fonts/sentient/Sentient-Variable.woff2 create mode 100644 public/fonts/sentient/Sentient-VariableItalic.woff create mode 100644 public/fonts/sentient/Sentient-VariableItalic.woff2 create mode 100644 public/fonts/sentient/stylesheet.css create mode 100644 public/images/72dpi-photo-jules.jpg create mode 100644 public/images/alis_emmanuel-pierrot_portraitaveclettres.jpg create mode 100644 public/images/bora-bord-identite_ring_katharsy-03-maud-guerche.jpg create mode 100644 public/images/conference-fac-alis.jpg create mode 100644 public/images/familleacrobate-louisrigaud-anouckboisrobert-helium-2018-2.jpg create mode 100644 public/images/mguerche_lucaprigione_112-maud-guerche.jpg create mode 100644 public/images/photo-chez-jou-jules.jpg create mode 100644 public/images/portrait-louisrigaud.jpg create mode 100644 public/index.html create mode 100644 public/js/afterLayout.js create mode 100644 public/js/beforeParsed.js create mode 100644 public/js/carnet.js create mode 100644 public/style-print.css create mode 100644 public/style-screen.css create mode 100644 static/csspageweaver/.gitignore create mode 100644 static/csspageweaver/.gitlab-ci.yml create mode 100644 static/csspageweaver/README.md create mode 100644 static/csspageweaver/interface/css/grid.css create mode 100644 static/csspageweaver/interface/css/interface.css create mode 100644 static/csspageweaver/interface/css/panel.css create mode 100644 static/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-Italic.woff create mode 100644 static/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-Italic.woff2 create mode 100644 static/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-Medium.woff create mode 100644 static/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-Medium.woff2 create mode 100644 static/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-MediumItalic.woff create mode 100644 static/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-MediumItalic.woff2 create mode 100644 static/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-Regular.woff create mode 100644 static/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-Regular.woff2 create mode 100644 static/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-SemiBold.woff create mode 100644 static/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-SemiBold.woff2 create mode 100644 static/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-SemiBoldItalic.woff create mode 100644 static/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-SemiBoldItalic.woff2 create mode 100644 static/csspageweaver/interface/fonts/IBM_Plex_Mono/stylesheet.css create mode 100644 static/csspageweaver/lib/csstree.min.js create mode 100644 static/csspageweaver/lib/paged.esm.js create mode 100644 static/csspageweaver/main.js create mode 100644 static/csspageweaver/manifest.json create mode 100644 static/csspageweaver/modules/dict.js create mode 100644 static/csspageweaver/modules/frame_render.js create mode 100644 static/csspageweaver/modules/gui.js create mode 100644 static/csspageweaver/modules/pre_render.js create mode 100644 static/csspageweaver/modules/render.js create mode 100644 static/csspageweaver/plugins/.gitignore create mode 100644 static/csspageweaver/plugins/baseline/.gitignore create mode 100644 static/csspageweaver/plugins/baseline/README.md create mode 100644 static/csspageweaver/plugins/baseline/baseline.css create mode 100644 static/csspageweaver/plugins/baseline/baseline.js create mode 100644 static/csspageweaver/plugins/baseline/config.json create mode 100644 static/csspageweaver/plugins/baseline/template.html create mode 100644 static/csspageweaver/plugins/floatPage/.gitignore create mode 100644 static/csspageweaver/plugins/floatPage/.hugo_build.lock create mode 100644 static/csspageweaver/plugins/floatPage/README.md create mode 100644 static/csspageweaver/plugins/floatPage/config.json create mode 100644 static/csspageweaver/plugins/floatPage/floatPage.js create mode 100644 static/csspageweaver/plugins/floatPage/public/categories/index.xml create mode 100644 static/csspageweaver/plugins/floatPage/public/index.xml create mode 100644 static/csspageweaver/plugins/floatPage/public/sitemap.xml create mode 100644 static/csspageweaver/plugins/floatPage/public/tags/index.xml create mode 100644 static/csspageweaver/plugins/footnotesFix/.gitignore create mode 100644 static/csspageweaver/plugins/footnotesFix/README.md create mode 100644 static/csspageweaver/plugins/footnotesFix/config.json create mode 100644 static/csspageweaver/plugins/footnotesFix/footnotes.css create mode 100644 static/csspageweaver/plugins/footnotesFix/footnotes.js create mode 100644 static/csspageweaver/plugins/frenchTypoRegex/.gitignore create mode 100644 static/csspageweaver/plugins/frenchTypoRegex/config.json create mode 100644 static/csspageweaver/plugins/frenchTypoRegex/frenchTypoRegex.js create mode 100644 static/csspageweaver/plugins/fullPage/.gitignore create mode 100755 static/csspageweaver/plugins/fullPage/README.md create mode 100644 static/csspageweaver/plugins/fullPage/config.json create mode 100644 static/csspageweaver/plugins/fullPage/fullPage.css create mode 100644 static/csspageweaver/plugins/fullPage/fullPage.js create mode 100644 static/csspageweaver/plugins/grid/.gitignore create mode 100644 static/csspageweaver/plugins/grid/README.md create mode 100644 static/csspageweaver/plugins/grid/config.json create mode 100644 static/csspageweaver/plugins/grid/grid-hook.js create mode 100644 static/csspageweaver/plugins/grid/grid-ui.js create mode 100644 static/csspageweaver/plugins/grid/grid.css create mode 100644 static/csspageweaver/plugins/imposition/.gitignore create mode 100644 static/csspageweaver/plugins/imposition/config.json create mode 100644 static/csspageweaver/plugins/imposition/index.js create mode 100644 static/csspageweaver/plugins/imposition/stylesheet.css create mode 100644 static/csspageweaver/plugins/imposition/template.html create mode 100644 static/csspageweaver/plugins/inlineNotes/.gitignore create mode 100644 static/csspageweaver/plugins/inlineNotes/README.md create mode 100644 static/csspageweaver/plugins/inlineNotes/config.json create mode 100644 static/csspageweaver/plugins/inlineNotes/inlineNotes.js create mode 100644 static/csspageweaver/plugins/marginBox/.gitignore create mode 100644 static/csspageweaver/plugins/marginBox/config.json create mode 100644 static/csspageweaver/plugins/marginBox/marginBox.css create mode 100644 static/csspageweaver/plugins/marginBox/marginBox.js create mode 100644 static/csspageweaver/plugins/moveElems/README.md create mode 100644 static/csspageweaver/plugins/moveElems/config.json create mode 100644 static/csspageweaver/plugins/moveElems/moveElems.js create mode 100644 static/csspageweaver/plugins/previewPage/.gitignore create mode 100644 static/csspageweaver/plugins/previewPage/config.json create mode 100644 static/csspageweaver/plugins/previewPage/event.js create mode 100644 static/csspageweaver/plugins/previewPage/stylesheet.css create mode 100644 static/csspageweaver/plugins/previewPage/template.html create mode 100644 static/csspageweaver/plugins/reloadInPlace/.gitignore create mode 100644 static/csspageweaver/plugins/reloadInPlace/Readme.md create mode 100644 static/csspageweaver/plugins/reloadInPlace/config.json create mode 100644 static/csspageweaver/plugins/reloadInPlace/reloadInPlace.js create mode 100644 static/csspageweaver/plugins/spread/.gitignore create mode 100644 static/csspageweaver/plugins/spread/config.json create mode 100644 static/csspageweaver/plugins/spread/spread-hook.js create mode 100644 static/csspageweaver/plugins/spread/spread-ui.js create mode 100644 static/csspageweaver/plugins/spread/spread.css create mode 100644 static/csspageweaver/plugins/spread/spread.html create mode 100644 static/fonts/sentient/Sentient-Bold.woff create mode 100644 static/fonts/sentient/Sentient-Bold.woff2 create mode 100644 static/fonts/sentient/Sentient-BoldItalic.woff create mode 100644 static/fonts/sentient/Sentient-BoldItalic.woff2 create mode 100644 static/fonts/sentient/Sentient-Italic.woff create mode 100644 static/fonts/sentient/Sentient-Italic.woff2 create mode 100644 static/fonts/sentient/Sentient-Regular.woff create mode 100644 static/fonts/sentient/Sentient-Regular.woff2 create mode 100644 static/fonts/sentient/Sentient-Variable.woff create mode 100644 static/fonts/sentient/Sentient-Variable.woff2 create mode 100644 static/fonts/sentient/Sentient-VariableItalic.woff create mode 100644 static/fonts/sentient/Sentient-VariableItalic.woff2 create mode 100644 static/fonts/sentient/stylesheet.css create mode 100644 static/images/72dpi-photo-jules.jpg create mode 100644 static/images/alis_emmanuel-pierrot_portraitaveclettres.jpg create mode 100644 static/images/bora-bord-identite_ring_katharsy-03-maud-guerche.jpg create mode 100644 static/images/conference-fac-alis.jpg create mode 100644 static/images/familleacrobate-louisrigaud-anouckboisrobert-helium-2018-2.jpg create mode 100644 static/images/mguerche_lucaprigione_112-maud-guerche.jpg create mode 100644 static/images/photo-chez-jou-jules.jpg create mode 100644 static/images/portrait-louisrigaud.jpg create mode 100644 static/js/afterLayout.js create mode 100644 static/js/beforeParsed.js create mode 100644 static/js/carnet.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..496ee2c --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.DS_Store \ No newline at end of file diff --git a/.hugo_build.lock b/.hugo_build.lock new file mode 100644 index 0000000..e69de29 diff --git a/README.md b/README.md new file mode 100644 index 0000000..12cd133 --- /dev/null +++ b/README.md @@ -0,0 +1,14 @@ +# Programme pour les rencontres de Lure 2026 + +Vous êtes ici: https://forge.studio-variable.com/Julie/lure-2026 + +Liens: +- Framapad: https://mensuel.framapad.org/p/lure-2026-web-to-print +- Ressources : https://resources.julie-blanc.fr/list-of-resources/ +- Paged.js documentation: https://pagedjs.org/ + +## Workshop + +11–12 janvier 2026 \ +Césure, Paris + diff --git a/archetypes/default.md b/archetypes/default.md new file mode 100644 index 0000000..49af2a0 --- /dev/null +++ b/archetypes/default.md @@ -0,0 +1,14 @@ +--- +title: '{{ replace .File.ContentBaseName "-" " " | title }}' +subtitle: "" +type: "conference" +tags: + - "" + - "" +day: "" +order: 1 +imgCover: "" +imgBio: "" +biographie: > + **Ici le texte** de la biographie. +--- \ No newline at end of file diff --git a/assets/style-print.css b/assets/style-print.css new file mode 100644 index 0000000..40c8c25 --- /dev/null +++ b/assets/style-print.css @@ -0,0 +1,81 @@ +/* NE PAS TOUCHER CE CODE ------------------------------------- */ +/* ---------------------------------------------------------- */ + +* { + margin: 0; + padding: 0; + box-sizing: border-box; + -webkit-font-smoothing: antialiased; + -moz-font-smoothing: antialiased; + -o-font-smoothing: antialiased; +} +a { + color: currentColor; +} + +#btn-print{ + display: none; +} + + +/* CODE POUR LA PAGE ----------------------------------------- */ +/* ---------------------------------------------------------- */ + + +@page{ + size: 148mm 210mm; + margin-top: 10mm; + margin-bottom: 10mm; +} + +@page:left{ + margin-left: 10mm; + margin-right: 12mm; + @left-middle{ + content: counter(page); + } +} + +@page:right{ + margin-left: 12mm; + margin-right: 11mm; + @right-middle{ + content: counter(page); + } +} + +@page:first{ + @top-left-corner { content: none; } + @top-left { content: none; } + @top-center { content: none; } + @top-right { content: none; } + @top-right-corner { content: none; } + @left-top { content: none; } + @left-middle { content: none; } + @left-bottom { content: none; } + @right-top { content: none; } + @right-middle { content: none; } + @right-bottom { content: none; } + @bottom-left-corner { content: none; } + @bottom-left { content: none; } + @bottom-center { content: none; } + @bottom-right { content: none; } + @bottom-right-corner { content: none; } +} + +.couverture{ + break-after: page; +} + + +/* VOTRE CODE ------------------------------------------------ */ +/* ---------------------------------------------------------- */ + +:root{ + font-family: 'Sentient'; + font-size: 14px; +} + +figure, img{ + width: 200px; +} \ No newline at end of file diff --git a/assets/style-screen.css b/assets/style-screen.css new file mode 100644 index 0000000..1edbf8a --- /dev/null +++ b/assets/style-screen.css @@ -0,0 +1,23 @@ +@import "modules/base.css"; + +#btn-print{ + + color: IndianRed; + border: 2px solid currentColor; + background: Lavender; + font-size: 30px; + border-radius: 10px; + + a{ + color: currentColor; + text-decoration: none; + padding: 0.75ch 1ch; + } + + +} + + +figure, img{ + width: 200px; +} \ No newline at end of file diff --git a/content/edito.md b/content/edito.md new file mode 100644 index 0000000..b37530e --- /dev/null +++ b/content/edito.md @@ -0,0 +1,8 @@ +--- +title: "Édito" +type: "edito" +--- + +Lorem ipsum, dolor sit amet consectetur adipisicing elit. Quae provident perspiciatis explicabo. Quae cupiditate tempore neque tenetur incidunt eaque dolores eum illum adipisci vitae maiores hic ducimus ut impedit, dicta consequatur eveniet magni nisi laboriosam expedita voluptatum, sunt et sapiente repudiandae. Incidunt laboriosam error placeat iusto delectus eius eaque eos ex suscipit amet libero fuga reiciendis nesciunt nobis dolor repellendus, omnis ut, neque architecto praesentium iste? Nulla nostrum, adipisci maxime minus saepe labore inventore temporibus corporis. Dolore voluptatum esse illo quaerat distinctio, consequuntur molestiae placeat perspiciatis sed cumque! Facere amet aperiam voluptatibus maiores reiciendis, voluptate harum nisi incidunt corrupti, quam dolores! Accusantium corrupti, laudantium vel fugiat amet eveniet mollitia accusamus omnis adipisci modi reprehenderit eius dolorum nostrum quidem explicabo nemo animi praesentium. Quae quis porro iusto rem vel. Illo, numquam? Corporis unde ea eligendi corrupti molestiae dolorem architecto reprehenderit dolor qui, sed cumque labore at perferendis eos sapiente maiores. Eligendi, ipsa eaque doloribus excepturi voluptatem temporibus quis quam molestias unde consequuntur animi vitae accusamus, vero necessitatibus fugiat officiis! Iure velit incidunt reprehenderit voluptates, quia facere est. Nihil soluta, laboriosam laborum officiis libero neque asperiores, repellat vitae error maxime totam veniam vel hic ab, ducimus saepe tenetur excepturi officia iste eligendi. + +Illo, numquam? Corporis unde ea eligendi corrupti molestiae dolorem architecto reprehenderit dolor qui, sed cumque labore at perferendis eos sapiente maiores. Eligendi, ipsa eaque doloribus excepturi voluptatem temporibus quis quam molestias unde consequuntur animi vitae accusamus, vero necessitatibus fugiat officiis! Iure velit incidunt reprehenderit voluptates, quia facere est. Nihil soluta, laboriosam laborum officiis libero neque asperiores, repellat vitae error maxime totam veniam vel hic ab, ducimus saepe tenetur excepturi officia iste eligendi. diff --git a/content/people/julies-durand.md b/content/people/julies-durand.md new file mode 100644 index 0000000..92e8cb2 --- /dev/null +++ b/content/people/julies-durand.md @@ -0,0 +1,17 @@ +--- +title: "Jules Durand" +subtitle: "Jou – En quête de l’imaginaire typographique provençal " +type: "conference" +tags: + - "design graphique" + - "typographie" +day: "mardi" +order: 3 +imgCover: "72dpi-photo-jules.jpg" +imgBio: "photo-chez-jou-jules.jpg" +biographie: > + **Jules Durand** est un designer graphique et dessinateur de caractères indépendant, travaillant à Toulouse, diplômé de l’Atelier national de recherches typographiques en 2022. Les caractères qu’il conçoit sont taillés pour le titrage et à l’épreuve du texte, convoquant des esthétiques allant du Moyen Âge au rétro-futurisme. +--- + +Cette présentation reviendra sur la genèse du Tale of Type, personnifiant des caractères historiques pour faire naître une histoire anachronique de la typographie. Nous irons ensuite à la découverte des productions graphiques de Louis Jou, l’architecte du livre et des Baux-de-Provence dont Jules Durand revisite l’œuvre depuis 5 ans. + diff --git a/content/people/louis-rigaud.md b/content/people/louis-rigaud.md new file mode 100644 index 0000000..0dc0660 --- /dev/null +++ b/content/people/louis-rigaud.md @@ -0,0 +1,19 @@ +--- +title: "Louis Rigaud" +subtitle: "Le jeu *sous toutes* ses formes " +type: "conference" +tags: + - "design graphique" +day: "lundi" +order: 2 +imgCover: "familleacrobate-louisrigaud-anouckboisrobert-helium-2018-2.jpg" +imgBio: "portrait-louisrigaud.jpg" +website: "ludocube.fr" +contenu: "" +biographie: > + **Louis Rigaud**, en duo avec Anouck Boisrobert, crée des livres pop-up aux éditions hélium depuis 2009. Il réalise aussi des films d’animation, du web, des affiches, de la scénographie… Passionné par le code, il programme ses propres jeux vidéo. +--- + + +Le jeu sous toutes ses formes a façonné mon imaginaire, il infuse aujourd’hui mon travail, autant dans mon processus créatif que dans mes réalisations. Du livre animé au jeu vidéo en passant par la scénographie ou la création d’ateliers pour enfants, j’essayerai de définir l’approche ludique qui guide mes choix artistiques. + diff --git a/content/people/maud-guerche.md b/content/people/maud-guerche.md new file mode 100644 index 0000000..89f2176 --- /dev/null +++ b/content/people/maud-guerche.md @@ -0,0 +1,16 @@ +--- +title: "Maud Guerche" +subtitle: "Double je" +type: "conference" +tags: + - "design graphique" +day: "lundi" +order: 1 +imgCover: "bora-bord-identite_ring_katharsy-03-maud-guerche.jpg" +imgBio: "mguerche_lucaprigione_112-maud-guerche.jpg" +website: "bora-bord.com" +biographie: > + **Maud Guerche** est designer graphique, typographique & signalétique. Diplômée de la HEAR en 2009, elle répond à des commandes dans le cadre de l'atelier bora-bord et développe une recherche artistique en poursuivant ses explorations sur le visible. Elle travaille la lettre à toutes les échelles, s'intéressant à provoquer le sensible, interrogeant les codes entre ce qui est vu, su, lu. +--- + +Aborder le rapport au jeu dans ma pratique de designer, à travers les créations de ces quinze dernières années, mettant en jeu de la matière graphique et poétique. Jouer avec les formes, construire ou concevoir par le jeu, ainsi que le jeu comme thème de travail, et le processus de création avec une metteuse en scène. diff --git a/content/people/pierre-fourny.md b/content/people/pierre-fourny.md new file mode 100644 index 0000000..c464464 --- /dev/null +++ b/content/people/pierre-fourny.md @@ -0,0 +1,16 @@ +--- +title: "Pierre Fourny" +subtitle: "L'écriture acrobatique " +type: "conference" +tags: + - "design graphique" +day: "vendredi" +order: 1 +imgCover: "conference-fac-alis.jpg" +imgBio: "alis_emmanuel-pierrot_portraitaveclettres.jpg" +website: "alislab.fr" +biographie: > + **Pierre Fourny** est auteur metteur en scène pour ALIS (spectacles). Au tournant des années 2000 il invente la « Poésie à 2 mi-mots » qui consiste, grâce à une police de caractères spécifique, la Police coupable, à montrer que les mots, coupés en 2 horizontalement, contiennent la moitié d'autres mots. +--- + +L'écriture acrobatique, conférence-spectacle, met en parallèle le parcours d'un créateur de spectacles, Pierre Fourny, et rien moins que l'histoire du langage et de l'écriture alphabétique. L'accent sera mis sur la relation entre le fonctionnement de la scène et le travail sur la forme des lettres à partir de différentes polices de caractères impliquant un fonctionnement spectaculaire. diff --git a/hugo.toml b/hugo.toml new file mode 100644 index 0000000..d150685 --- /dev/null +++ b/hugo.toml @@ -0,0 +1,8 @@ +baseURL = 'https://example.org/' +languageCode = 'fr-fr' +title = 'Lure 2026' +disableKinds = ["taxonomy", "term", "RSS", "sitemap"] + +[markup] + [markup.goldmark.renderer] + unsafe = true diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html new file mode 100644 index 0000000..137e113 --- /dev/null +++ b/layouts/_default/baseof.html @@ -0,0 +1,44 @@ + + + + + {{ .Title }} + + + + + + {{ $styleScreen := resources.Get "style-screen.css" }} + {{ if $styleScreen }} + + {{ end }} + {{ $stylePrint := resources.Get "style-print.css" }} + {{ if $styleScreen }} + + {{ end }} + + + + + {{ block "main" . }}{{ end }} + + + + + diff --git a/layouts/index.html b/layouts/index.html new file mode 100644 index 0000000..3e1dd61 --- /dev/null +++ b/layouts/index.html @@ -0,0 +1,82 @@ +{{ define "main" }} +
+ +

Nos vertiges

+

Échelles, formats, mesures et démesure

+

22–27 août 2026

+

74o rencontres internationales de Lure

+ +
+ +
+ {{ range where .Site.RegularPages "Type" "edito" }} +

{{ .Title }}

+
+ {{ .Content }} +
+ {{ end }} +
+ +{{ $pages := where .Site.RegularPages "Section" "people" }} +{{ $days := slice "lundi" "mardi" "mercredi" "jeudi" "vendredi" "samedi" "dimanche" }} + +{{ range $days }} +{{ $day := . }} +{{ $dayPages := where $pages "Params.day" $day }} + +{{ if $dayPages }} +
+

{{ $day }}

+ + {{ range sort $dayPages "Params.order" }} +
+ +
+ +

{{ .Title | markdownify }}

+

{{ .Params.subtitle | markdownify }}

+ +
+

{{ .Params.type }}

+
    + {{ range .Params.tags }}
  • {{ . }}
  • {{ end }} +
+
+ +
+ {{ .Content }} +
+ +
+ +
+

{{ .Params.biographie | markdownify }}

+
+ + {{ with .Params.website }} +

{{ . }}

+ {{ end }} + +
+ {{ end }} +
+{{ end }} +{{ end }} + + +
+ +

Remerciments et colophon

+ +
+

+ Les rencontres internationales de Lure remercient... +

+

+ Merci à ... +

+
+ +
+ +{{ end }} \ No newline at end of file diff --git a/public/csspageweaver/.gitignore b/public/csspageweaver/.gitignore new file mode 100644 index 0000000..496ee2c --- /dev/null +++ b/public/csspageweaver/.gitignore @@ -0,0 +1 @@ +.DS_Store \ No newline at end of file diff --git a/public/csspageweaver/.gitlab-ci.yml b/public/csspageweaver/.gitlab-ci.yml new file mode 100644 index 0000000..6ba6a80 --- /dev/null +++ b/public/csspageweaver/.gitlab-ci.yml @@ -0,0 +1,104 @@ +stages: + - prepare + - release + +# This job compile CSS Page Weaver and few plugins +prepare_job: + stage: prepare + image: ubuntu:latest + rules: + - if: $CI_COMMIT_TAG + before_script: + - apt-get update && apt-get install -y git curl jq zip bash + - git config --global user.email "csspageweaver@csspageweaver.org" + - git config --global user.name "Automated Releaser" + script: + + - | + # Store Job ID since next stage (release_job) link to current job artifacts + echo "ARTIFACTS_JOB=$CI_JOB_ID" >> build.env + + - | + # create plugins folder if needed + mkdir -p plugins + + - | + # Set plugins list + REPO_LIST=( + "baseline" + "grid" + "imposition" + "marginBox" + "spread" + "previewPage" + "reloadInPlace" + ) + + - | + # Add listed plugins as git subtree. Need deployment tokens if repos are private + for REPO in "${REPO_LIST[@]}"; do + SUBTREE_URL="https://gitlab.com/csspageweaver/plugins/${REPO}.git" + git subtree add --prefix="plugins/$REPO" "$SUBTREE_URL" main --squash + done + + - | + # Define the pluginsParameters object + PLUGINS_PARAMETERS='{ + "baseline": { + "size": 16, + "position": 0 + }, + "reloadInPlace": { + "blur": false, + "behavior": "instant" + } + }' + + - | + # Add plugin list to manifest + MANIFEST_PATH="manifest.json" + PLUGINS_ENTRY=$(jq --arg repos "${REPO_LIST[*]}" '.plugins = ($repos | split(" "))' "$MANIFEST_PATH") + echo "$PLUGINS_ENTRY" > "$MANIFEST_PATH" + + - | + # Add plugin parameters to manifest + PARAMETERS_PLUGINS_ENTRY=$(jq --argjson pluginsParameters "$PLUGINS_PARAMETERS" '.pluginsParameters = $pluginsParameters' "$MANIFEST_PATH") + echo "$PARAMETERS_PLUGINS_ENTRY" > "$MANIFEST_PATH" + + - | + # create folder + mkdir -p csspageweaver + + # Copy releveant folder and file to a csspageweaver folder + cp -r interface/ lib/ modules/ plugins/ csspageweaver/ + cp main.js manifest.json README.md .gitignore csspageweaver/ + + + artifacts: + name: csspageweaver-core-$CI_COMMIT_TAG + paths: + - csspageweaver/ + reports: + dotenv: build.env + expire_in: never + +# This job create a release based on previous artifact +release_job: + stage: release + image: registry.gitlab.com/gitlab-org/release-cli:latest + needs: + - job: prepare_job + artifacts: true + rules: + - if: $CI_COMMIT_TAG + script: + - echo "running release_job for $CI_COMMIT_TAG " + release: + name: 'Release $CI_COMMIT_TAG' + tag_name: '$CI_COMMIT_TAG' + ref: '$CI_COMMIT_SHA' + description: 'Auto release' + assets: + links: + - name: '👉 CSS Page Weaver with plugins embed' + url: 'https://gitlab.com/csspageweaver/csspageweaver/-/jobs/$ARTIFACTS_JOB/artifacts/download' diff --git a/public/csspageweaver/README.md b/public/csspageweaver/README.md new file mode 100644 index 0000000..6d48bef --- /dev/null +++ b/public/csspageweaver/README.md @@ -0,0 +1,177 @@ +# CSS Page Weaver + +![Interface](https://gitlab.com/csspageweaver/csspageweaver/-/wikis/uploads/e724d6782600c30bc1b8d1ad56b24217/_screen_copie.webp) + +CSS Page Weaver is a browser-based publishing tool, made up of [PagedJs](https://pagedjs.org/about/) library and modulars additionals features. While it's design to ease installation for beginners CSS Page Weaver also bring elegant and extendable solution for more advanced users. + +## ✨ Features + +- **Streamlined and Ready-to-Use**: Get started quickly with a standardized way to integrate features. +- **Extensive Plugin Library**: No need to reinvent the wheel with the available plugins. +- **WYSIWYG Editor**: Streamline your design pratice with an extandable interface. +- **Create and Share Plugins**: Develop and share your own plugins easily. + +## ⛵ Getting Started + +### Prerequisites + +- A local web server + +### 🪴 Installation (fastest way) + +If you feel a bit lost with following instruction, you should probably look at the [CSS Page Weaver compiled with a few plugins](https://gitlab.com/csspageweaver/csspageweaver/-/releases) + +Integrate it at the root level of your page and add a link to `csspageweaver` main _module_ into your HTML template + +```html + +``` + +*Do you need to also install PagedJs? Nope! CSS Page Weaver already embed it.* + +### Use + +Run a simple server. That's it! + +### Boilerplate + +Don't have a project to test it? There is [a ready-to-use boilerplate](https://gitlab.com/csspageweaver//boilerplate). Download, unzip & run a server! + + +## 🚀 Going further + +### 🌲 Installation (complete way) + +Released version on CSS Page Weaver is compiled with few plugins. You can install the package yourself for greater control. + +#### Clone CSS Page Weaver repo in your project [option A]. + +```bash +# With HTTPS +git clone https://gitlab.com/csspageweaver/csspageweaver.git + +# With SSH +git clone git@gitlab.com:csspageweaver/csspageweaver.git +``` +#### Clone CSS Page Weaver as a git subtree [option B]. + +Subtree are great to: +- embed CSS Page Weaver repo in another repo +- get updates + +```bash + git subtree add --prefix csspageweaver/ git@gitlab.com:csspageweaver/cssPageWeaver.git --squash +``` + +### 🔌 Dependencies + +CSS Page Weaver is designed to work with plugins. In this complete installation, you need to install plugins by yourself. If you've downloaded [the last release of CSS Page Weaver](https://gitlab.com/csspageweaver/csspageweaver/-/releases), few plugins are already embedded. + +**Here is a [list of all plugins](https://gitlab.com/csspageweaver//plugins) known.** + +**Steps** + +1. Download and place plugin folder in `csspageweaver/plugins` +2. Add plugin to manifest + +#### Installation as subtree + +We prefer to install plugins using Git Subtree because it allows us to easily preserve the filiation link with the plugin directory (and to obtain updates!). + +Bear in mind, if you're not comfortable with command lines, that *step 1* can easily be replaced by a simple *download, drag and drop*. + +Otherwise, here is how it works. + +##### (Step 1) Clone plugin as a subtree + +Install plugin as a submodule of `csspageweaver` + +```bash + git subtree add --prefix="csspageweaver/plugins/{{PLUGIN_FOLDER_NAME}}" git@gitlab.com:csspageweaver/plugins/{{PLUGIN_NAME}}.git --squash +``` + +##### (Step 2) Add plugin to manifest + +Almost done. Add a mention to `csspageweaver/manifest.json` + +```json +{ + "plugins": [ + // existing plugin, + "PLUGIN_FOLDER_NAME" + ], +} +``` + +Look at complete [plugins list](https://gitlab.com/csspageweaver/plugins) and [plugins installation guide](https://gitlab.com/csspageweaver/csspageweaver/-/wikis/design/plugins/install) + +#### Update as subtree + +This is where Git subtrees are wonderful + +```bash +git subtree pull --prefix="csspageweaver/plugins/{{PLUGIN_NAME}}" main --squash +``` + +A bit dazed? Don't worry. Once again, you can update your plugins with your favorite *download, unzip, drag and drop* shady method. + +### 🎁 Package manager + +You already like the principle of subtrees, but you think (rightly) that the multiplication of command lines can be a bit tedious in the long run? Installation and dependencies can me handle with our [Package Manager](https://gitlab.com/csspageweaver/package-manager) + +**Install CSS Page Weaver and plugins with package manager** + +```bash +./weaver_manager.sh --install +``` + +**Get update with package manager** + +```bash +./weaver_manager.sh --pull +``` + +See [Package Manager repository](https://gitlab.com/csspageweaver-toolkit/package_manager) and [further documentation on managing your installation](https://gitlab.com/csspageweaver/csspageweaver/-/wikis/maintain_and_develop/core/5-manage_csspageweaver_integration) + + + +## 🔄 Customization + +### Basic Information + +Edit `csspageweaver/manifest.json` to declare: +- Plugins +- Plugins configuration +- Stylesheets +- Your custom hooks + +### CSS Page Weaver behavior (advanced) + +Edit `csspageweaver/main.js` to: +- disable Common dictionary +- disable Interface +- Choose render method + +## 🎓 Documentation + +A complete [documentation is available](https://gitlab.com/csspageweaver/csspageweaver/-/wikis/home) + +## 📝 License + +This project is licensed under the MIT License + +## 👏 Acknowledgements + +CSS Page Weaver is based on [PagedJs](https://pagedjs.org/about/) by Coko Foundation. + +CSS Page Weaver is an original idea of Julie Blanc ehanced by Benjamin G. +Julien Taquet was a great help in reimagining the rendering module. Finally, Nicolas Taffin and Julien Bidoret helped to oversee this tool. + +All CSS Page Weaver plugins remains linked to their original creators. +Without them, GUI would remain an empty shell. Thanks 🙏 + +## 🙌 Contributing + +Features and documentation requests are welcome! Feel free to check the [issues page](https://gitlab.com/csspageweaver/csspageweaver/-/issues). + +Contributions must follow our [code of conduct](https://www.contributor-covenant.org/version/2/1/code_of_conduct/) \ No newline at end of file diff --git a/public/csspageweaver/interface/css/grid.css b/public/csspageweaver/interface/css/grid.css new file mode 100644 index 0000000..561d174 --- /dev/null +++ b/public/csspageweaver/interface/css/grid.css @@ -0,0 +1,46 @@ +@media print { + + + + /* Size and marin for all pages ------------- */ + @page { + size: 148mm 210mm; + margin-top: 20mm; + margin-bottom: 20mm; + bleed: 6mm; + marks: crop; + @bottom-center{ + content: counter(page); + } + } + + figure, img{ + width: 100%; + } + + +} + + +*{ + margin: 0; + padding: 0; +} + + +#image-full{ + --pagedjs-full-page: spread; + width: 100%; + height: 100%; +} + +#image-full img{ + width: 100%; + height: 100%; + object-fit: cover; +} + + +.pagedjs_note{ + color: red; +} \ No newline at end of file diff --git a/public/csspageweaver/interface/css/interface.css b/public/csspageweaver/interface/css/interface.css new file mode 100644 index 0000000..8ccadf9 --- /dev/null +++ b/public/csspageweaver/interface/css/interface.css @@ -0,0 +1,127 @@ +/* CSS for Paged.js interface – v0.2 +Julie Blanc - 2020 +MIT License https://opensource.org/licenses/MIT +A simple stylesheet to see pages on screen (with baseline included) +Adapted for this project */ + + +/* Change the look */ +:root { + --color-background: #efefef; + --color-pageSheet: #cfcfcf; + --color-pageBox: violet; + --color-paper: white; + --pagedjs-crop-color: #000; + --pagedjs-crop-stroke: 1px; + --color-preview: #222; + + --pagedjs-header-height: 80px; + + /* --pagedjs-bleed-left-right: 0mm!important; */ +} + +.pagedjs_marks-crop{ + z-index: 999999999999; +} + +/* To define how the book look on the screen: */ +@media screen, pagedjs-ignore { + body { + background-color: var(--color-background); + } + + .pagedjs_pages { + display: flex; + width: calc(var(--pagedjs-width) * 2); + flex: 0; + flex-wrap: wrap; + margin: 0 auto; + margin-top: var(--pagedjs-header-height); + } + + .pagedjs_page { + background-color: var(--color-paper); + box-shadow: 0 0 0 1px var(--color-pageSheet); + margin: 0; + flex-shrink: 0; + flex-grow: 0; + margin-top: 10mm; + } + + .pagedjs_first_page { + margin-left: calc(var(--pagedjs-width) - var(--pagedjs-bleed-left)); + } + + .pagedjs_page:last-of-type { + margin-bottom: 10mm; + } + + .pagedjs_pagebox{ + box-shadow: 0 0 0 1px var(--color-pageBox); + } + + .pagedjs_left_page{ + z-index: 20; + width: calc(var(--pagedjs-bleed-left) + var(--pagedjs-pagebox-width))!important; + } + + /* .pagedjs_left_page .pagedjs_sheet{ + z-index: 20; + width: calc(var(--pagedjs-bleed-left) + var(--pagedjs-pagebox-width) + 1px)!important; + } */ + + .pagedjs_left_page .pagedjs_bleed-right .pagedjs_marks-crop { + border-color: transparent; + } + + + .pagedjs_left_page .pagedjs_bleed-right .pagedjs_marks-middle{ + width: 0; + } + + .pagedjs_right_page{ + z-index: 10; + position: relative; + left: calc(var(--pagedjs-bleed-left)*-1); + } + + /* show the margin-box */ + + .pagedjs_margin-top-left-corner-holder, + .pagedjs_margin-top, + .pagedjs_margin-top-left, + .pagedjs_margin-top-center, + .pagedjs_margin-top-right, + .pagedjs_margin-top-right-corner-holder, + .pagedjs_margin-bottom-left-corner-holder, + .pagedjs_margin-bottom, + .pagedjs_margin-bottom-left, + .pagedjs_margin-bottom-center, + .pagedjs_margin-bottom-right, + .pagedjs_margin-bottom-right-corner-holder, + .pagedjs_margin-right, + .pagedjs_margin-right-top, + .pagedjs_margin-right-middle, + .pagedjs_margin-right-bottom, + .pagedjs_margin-left, + .pagedjs_margin-left-top, + .pagedjs_margin-left-middle, + .pagedjs_margin-left-bottom { + box-shadow: 0 0 0 1px inset var(--color-marginBox); + } + +} + + + +.note { + float: footnote; +} + +/* define the position of the footnote on the page (only bottom is possible for now) */ + +@page { + @footnote { + float: bottom; + } +} \ No newline at end of file diff --git a/public/csspageweaver/interface/css/panel.css b/public/csspageweaver/interface/css/panel.css new file mode 100644 index 0000000..f7abe62 --- /dev/null +++ b/public/csspageweaver/interface/css/panel.css @@ -0,0 +1,532 @@ +@import url("../fonts/IBM_Plex_Mono/stylesheet.css"); + +@media print{ + csspageweaver-gui{ + display: none; + } +} + +@media screen, pagedjs-ignore { + + + /* TOGGLE PANEL ----------------------------------- */ + #cssPageWeaver_toggle-panel ~ #cssPageWeaver_panel{ display: none; } + #cssPageWeaver_toggle-panel + label #panel-open{ display: none; } + + #cssPageWeaver_toggle-panel:checked ~ #cssPageWeaver_panel{ display: block; } + #cssPageWeaver_toggle-panel:checked + label #panel-open{ display: block; } + #cssPageWeaver_toggle-panel:checked + label #panel-closed{ display: none; } + + #cssPageWeaver_toggle-panel{ display: none; } + + + /* STYLE ----------------------------------- */ + :root{ + --cssPageWeaver-font:'IBM Plex Mono'; + --cssPageWeaver-size: 16px; + --cssPageWeaver-fixed: 30px; + + /* --cssPageWeaver-color-border: #8fb6b0; + --cssPageWeaver-color-accent: #EE6C4D; + --cssPageWeaver-color-accent-hover: #852811; + --cssPageWeaver-color-text: #464f4e; + --cssPageWeaver-color-bg: #f8f8f2; */ + + + /* --cssPageWeaver-color-accent: #EE6C4D; + --cssPageWeaver-color-accent-hover: #852811; + --cssPageWeaver-color-border: #86766e; + --cssPageWeaver-color-text: #4f4946; + --cssPageWeaver-color-bg: #efefef; */ + + --cssPageWeaver-color-accent: RebeccaPurple; + --cssPageWeaver-color-accent-hover: BlueViolet; + --cssPageWeaver-color-border: #836e86; + --cssPageWeaver-color-border-light: #999999; + --cssPageWeaver-color-text: #4e464f; + --cssPageWeaver-color-bg: #f1f0f0; + + --cssPageWeaver-radius: 5px; + } + + + /* Toggle button -------------------------------------------- */ + + #cssPageWeaver_toggle-panel + label{ + background-color: var(--cssPageWeaver-color-bg); + border: 2px solid var(--cssPageWeaver-color-border); + border-radius: var(--cssPageWeaver-color-radius); + + --size: 30px; + width: var(--size); + height: var(--size); + + display: flex; + align-items: center; + justify-content: center; + font-size: 1.25em; + + color: var(--cssPageWeaver-color-text); + //border-radius: var(--cssPageWeaver-radius); + + transition: border-radius .25s ease-in-out; + + } + + #cssPageWeaver_toggle-panel:checked + label{ + border-top-left-radius: var(--cssPageWeaver-radius); + } + + + /* CONTAINER -------------------------------------------- */ + + csspageweaver-gui *{ + margin: 0; + padding: 0; + + } + + + csspageweaver-gui{ + font-family: var(--cssPageWeaver-font); + color: var(--cssPageWeaver-color-text); + font-size: var(--cssPageWeaver-size); + } + + csspageweaver-gui label, + csspageweaver-gui button{ + cursor: pointer!important; + } + + #cssPageWeaver_toggle-panel + label{ + position: fixed; + left: var(--cssPageWeaver-fixed); + top: var(--cssPageWeaver-fixed); + width: 30px; + left: 30px; + z-index: 9000; + } + + #cssPageWeaver_panel{ + width: 296px; + background-color: var(--cssPageWeaver-color-bg); + border: 2px solid var(--cssPageWeaver-color-border); + border-radius: var(--cssPageWeaver-radius); + position: fixed; + left: var(--cssPageWeaver-fixed); + top: var(--cssPageWeaver-fixed); + z-index: 8900; + padding: 1em 1em .5em 1em; + + max-height: 80vh; + max-height: calc(100vh - 5rem); + overflow: scroll; + + } + + + /* panel-group ------------------------------------- */ + + + #cssPageWeaver_panel .panel-group{ + margin: 0; + padding-top: 1.25em; + } + #cssPageWeaver_panel .panel-group:not(:last-of-type){ + border-bottom: 1px solid var(--cssPageWeaver-color-border); + padding-bottom: 1.25em; + } + + + + /* panel-group-title ------------------------------------- */ + + #cssPageWeaver_panel h1, + #cssPageWeaver_panel button, + #cssPageWeaver_panel p, + #cssPageWeaver_panel svg, + #cssPageWeaver_panel label{ + all: initial; + all: unset; + } + + + #cssPageWeaver_panel .panel-group-title{ + display: grid; + grid-template-columns: auto 1ch 1fr; + grid-gap: .5ch; + } + + #cssPageWeaver_panel h1 span{ + font-size: 0.75em; + } + + + #cssPageWeaver_panel .panel-group-title:not(:empty) + *{ + margin-top: 1.25em; + } + + #cssPageWeaver_panel .panel-group-title h1{ + font-size: 1em; + font-weight: 600; + margin: 0; + } + + #cssPageWeaver_panel .panel-group-title input{ + display: none; + } + #cssPageWeaver_panel .panel-group-title label{ + grid-column: -1; + } + + #cssPageWeaver_panel .panel-group-title label span{ + /* color: var(--cssPageWeaver-color-accent); */ + font-size: 16px; + border: 1.5px solid var(--cssPageWeaver-color-accent); + padding: 0.25ch 1ch 0.5ch 1ch; + min-width: 4ch; + text-align: center; + + font-size: 0.8em; + font-weight: 500; + border-radius: var(--cssPageWeaver-radius); + + background-color: var(--cssPageWeaver-color-accent); + border-color: var(--cssPageWeaver-color-accent); + color: var(--cssPageWeaver-color-bg); + + font-style: italic; + + } + + #cssPageWeaver_panel .panel-group-title label span:hover{ + background-color: var(--cssPageWeaver-color-accent-hover); + border-color: var(--cssPageWeaver-color-accent-hover); + color: var(--cssPageWeaver-color-bg); + + } + + #cssPageWeaver_panel .panel-group-title input:not(:checked) + label[id*="toggle"] span.button-see{ + background-color: var(--cssPageWeaver-color-bg); + color: var(--cssPageWeaver-color-accent); + } + + #cssPageWeaver_panel .panel-group-title input:checked + label[id*="toggle"] span.button-hide{ + background-color: var(--cssPageWeaver-color-bg); + color: var(--cssPageWeaver-color-accent); + } + + /* INFO BOX ---------------------------------- */ + #cssPageWeaver_panel .panel-group-title details{ + position: relative; + } + #cssPageWeaver_panel .panel-group-title summary{ + color: var(--cssPageWeaver-color-text); + //border: 1px solid black; + //border-radius: 1rem; + width: 1rem; + font-size: .8em; + height: 1rem; + text-align: center; + cursor: pointer; + opacity: .3; + line-height: 160%; + } + + #cssPageWeaver_panel .panel-group-title details summary::marker { + display: none; + content: ""; + border: 1px solid currentColor; + } + +} + +#cssPageWeaver_panel .panel-group-title details p{ + position: absolute; + background: var(--cssPageWeaver-color-bg); + padding: .5ch; + width: max-content; + max-width: 10rem; + font-size: .7rem; + margin-top: .5ch; + border: 1px solid var(--cssPageWeaver-color-accent); + border-radius: .2ch; + top: -50%; + left: 2em; + transform: translateX(0%); +} + + +/* panel-group-values ---------------------------------- */ + +#cssPageWeaver_panel .panel-group-values{ + margin-top: 0.5em; + margin-bottom: 0.5em; + display: flex; + align-items: center; + justify-content: space-between; +} + + +/* INPUT NUMBER ---------------------------------- */ + + +#cssPageWeaver_panel input[type="number"]{ + font-family: var(--cssPageWeaver-font)!important; + color: var(--cssPageWeaver-color-text); + width: 8ch; + background-color: transparent!important; + border: 1px solid var(--cssPageWeaver-color-text); + font-size: calc(var(--cssPageWeaver-size)*0.9); + padding-left: 0.5ch; +} + +#cssPageWeaver_panel input[type="number"]:focus, +#cssPageWeaver_panel input[type="number"]:focus-visible{ + border: 1px solid var(--cssPageWeaver-color-accent)!important; + outline: none; +} + + +/* INPUT CHECKBOX ---------------------------------- */ + +#cssPageWeaver_panel input[type="checkbox"], +#cssPageWeaver_panel input[type="radio"]{ display: none; } + +#cssPageWeaver_panel input + label:not([id*="toggle"])::before{ + content: ""; + --size: 12px; + width: var(--size); + height: var(--size); + display: inline-block; + box-sizing: border-box; + border: 1.5px solid var(--cssPageWeaver-color-text); + margin-right: 1ch; + +} + +#cssPageWeaver_panel input:checked + label{ + color: var(--cssPageWeaver-color-accent); +} + +#cssPageWeaver_panel input:checked + label::before{ + border: 5px solid var(--cssPageWeaver-color-accent); +} + +#cssPageWeaver_panel input + label:hover{ + color: var(--cssPageWeaver-color-accent-hover); +} + +#cssPageWeaver_panel input + label:hover::before{ + border: 1.5px solid var(--cssPageWeaver-color-accent-hover); +} + +#cssPageWeaver_panel input[type="radio"]:checked + label:hover::before{ + border: 5px solid var(--cssPageWeaver-color-accent); +} +#cssPageWeaver_panel input[type="radio"]:checked + label:hover{ + color: var(--cssPageWeaver-color-accent); +} +#cssPageWeaver_panel input[type="checkbox"] + label:hover::before{ + border: 5px solid var(--cssPageWeaver-color-accent-hover); +} + +/* INPUT RADIO ---------------------------------- */ + + #cssPageWeaver_panel input[type="radio"] + label{ + margin-bottom: 0.5em; +} + +/* exception */ +/*#cssPageWeaver_panel #baseline-toggle + label::before{ display: none; } +*/ + +/* BUTTONS-GROUP ------------------------------------------- */ + +#cssPageWeaver_panel .buttons-group button, +#cssPageWeaver_panel .buttons-group .button{ + display: inline-block; + --size: 40px; + background-color: transparent; + border: 1.5px solid var(--cssPageWeaver-color-accent); + border-radius: var(--cssPageWeaver-radius); + box-sizing: border-box; + + color: var(--cssPageWeaver-color-accent); + + width: var(--size); + height: var(--size); + + text-align: center; + vertical-align: middle; + text-decoration: none; +} + +#cssPageWeaver_panel .buttons-group .button:not(:has(*)){ + padding: .5em 0; +} + +#cssPageWeaver_panel .buttons-group input{ + display: none; +} + +#cssPageWeaver_panel .buttons-group button svg, +#cssPageWeaver_panel .buttons-group .button svg{ + fill: var(--cssPageWeaver-color-accent); + padding: 0.25em; +} + +#cssPageWeaver_panel .buttons-group{ + display: flex; + justify-content: flex-start; + align-items: center; + gap: 1ch; +} + +#cssPageWeaver_panel .buttons-group.align-right{ + justify-content: flex-end; +} + +#cssPageWeaver_panel .panel-group-title:not(:empty) + .buttons-group{ + padding-top: 0.25em; + margin-top: .5em; +} + +#cssPageWeaver_panel .buttons-group .force-right{ + text-align: right; + flex-grow: 1; +} + +#panel-buttons .buttons-group{ + padding-top: 1.25em; + display: flex; +} + + +#panel-buttons .buttons-group button, +#panel-buttons .buttons-group .button{ + margin-left: 0.5em; +} + +#cssPageWeaver_panel input + label.label-block{ + display: block; + margin-top: 1rem; +} + +#cssPageWeaver_panel .panel-group-title.button-toggle label::before{ display: none!important; } + +/* CHECKED BUTTONS --------------------------------------- */ + +#cssPageWeaver_panel .buttons-group input:checked + button, +#cssPageWeaver_panel .buttons-group input:checked + .button{ + background-color: var(--cssPageWeaver-color-accent); + border-color: var(--cssPageWeaver-color-accent); + cursor: pointer; +} +#cssPageWeaver_panel .buttons-group input:checked + button svg, +#cssPageWeaver_panel .buttons-group input:checked + .button svg{ + fill: var(--cssPageWeaver-color-bg); +} + +/* TOGGLE LABEL ICONS --------------------------------------- */ + +#cssPageWeaver_panel input[id*="toggle"] + .buttons-group{ + margin-top: 1rem; +} + +#cssPageWeaver_panel input[id*="toggle"]:checked + .buttons-group .button:nth-of-type(1), +#cssPageWeaver_panel input[id*="toggle"]:not(:checked) + .buttons-group .button:nth-of-type(2){ + background-color: var(--cssPageWeaver-color-accent); + border-color: var(--cssPageWeaver-color-accent); +} + +#cssPageWeaver_panel input[id*="toggle"]:checked + .buttons-group .button:nth-of-type(1) svg, +#cssPageWeaver_panel input[id*="toggle"]:not(:checked) + .buttons-group .button:nth-of-type(2) svg{ + fill: var(--cssPageWeaver-color-bg); +} + +/* DETAILS CONTAINER< ------------------- */ + +[data-open-container*="details"] ~ [id*="details"]{ + box-sizing: border-box; + position: relative; + top: 1em; + + max-height: 0px; + overflow: hidden; + transition: max-height 1s; +} + +[data-open-container*="details"]:checked ~ [id*="details"]{ + max-height: 100vh; + margin-bottom: 0.5em; + border-top: .5px solid var(--cssPageWeaver-color-border-light); +} + + +/* HOVER BUTTONS ------------------------------------------------------------ */ + +#cssPageWeaver_panel .buttons-group button:hover, +#cssPageWeaver_panel .buttons-group .button:hover{ + background-color: var(--cssPageWeaver-color-accent-hover)!important; + border-color: var(--cssPageWeaver-color-accent-hover)!important; +} +#cssPageWeaver_panel .buttons-group button:hover svg, +#cssPageWeaver_panel .buttons-group .button:hover svg{ + fill: var(--cssPageWeaver-color-bg)!important; +} + +/* SHORTCUT ------------------------------------------------------------ */ + +#cssPageWeaver_panel .shortcut-list{ + list-style: none; + display: flex; + flex-direction: row; + flex-wrap: wrap; + gap: .25em; + margin-top: .5em; +} +#cssPageWeaver_panel .shortcut-list li{ + font-size: .75em; + color: var(--cssPageWeaver-color-text); + border: 1px solid; + border-radius: .25em; + padding: .2em; + cursor: help; + opacity: .5; +} + +/* List hidden hooks ------------------------------------------------------------ */ + +#cssPageWeaver_panel #hidden-features h1 { + font-weight: bold; + margin-bottom: .5em; + +} +#cssPageWeaver_panel #hidden-features summary { + display: flex; + flex-direction: row; + justify-content: space-between; + padding-top: 1em; + font-size: .75rem; + cursor: pointer; +} +#cssPageWeaver_panel #hidden-features ul{ + list-style: none; + font-size: .75rem; + display: flex; + flex-wrap: wrap; + gap: .75em; +} +#cssPageWeaver_panel #hidden-features ul li{ + margin-bottom: .25em; + color: var(--cssPageWeaver-color-bg); + padding: .2em .4em; + border-radius: .2em; + background: var(--cssPageWeaver-color-accent); + font-style: italic; +} + +#cssPageWeaver_panel #hidden-features summary::marker { + display: none; +} \ No newline at end of file diff --git a/public/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-Italic.woff b/public/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-Italic.woff new file mode 100644 index 0000000000000000000000000000000000000000..4074b4738c88789120a1c77bfbe409a1be8ba20c GIT binary patch literal 56520 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 HdwBm3N6N=_ literal 0 HcmV?d00001 diff --git a/public/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-Italic.woff2 b/public/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-Italic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..88e4e8b69a189f90bb665ea5464ad4b1c09b3692 GIT binary patch literal 39964 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