From 162cee6dc92257146153b6963f53ca475518c061 Mon Sep 17 00:00:00 2001 From: Julie Blanc Date: Tue, 16 Dec 2025 18:00:01 +0100 Subject: [PATCH] base --- .gitignore | 4 + assets/css/base/_body.scss | 35 ++++++ assets/css/base/_responsive.scss | 11 ++ assets/css/base/_var.scss | 77 ++++++++++++ assets/css/components/_btn--don.scss | 60 +++++++++ assets/css/components/_buttons.scss | 101 ++++++++++++++++ assets/css/components/_form-newsletter.scss | 127 ++++++++++++++++++++ assets/css/components/_list-socials.scss | 57 +++++++++ assets/css/components/_nav-tabs.scss | 40 ++++++ assets/css/components/_text.scss | 68 +++++++++++ assets/css/partials/_main-layout.scss | 15 +++ assets/css/partials/_site-footer.scss | 94 +++++++++++++++ assets/css/partials/_site-header.scss | 84 +++++++++++++ assets/css/style.scss | 21 ++++ assets/favicon.png | Bin 0 -> 39383 bytes assets/icons/arrow-left.svg | 6 + assets/icons/arrow-top-right.svg | 10 ++ assets/icons/menu-close.svg | 4 + assets/icons/menu.svg | 5 + assets/icons/play-button.svg | 10 ++ assets/icons/socials/bluesky.svg | 9 ++ assets/icons/socials/facebook.svg | 3 + assets/icons/socials/instagram.svg | 3 + assets/icons/socials/linkedin.svg | 3 + assets/icons/socials/mastodon.svg | 9 ++ assets/icons/socials/threads.svg | 3 + assets/icons/socials/x-social.svg | 9 ++ assets/icons/socials/youtube.svg | 3 + assets/index-logo.svg | 14 +++ assets/js/onload.js | 23 ++++ assets/js/temp/includeHtml.js | 33 +++++ components/site-footer.html | 64 ++++++++++ components/site-header.html | 42 +++++++ components/socials.html | 45 +++++++ index.html | 30 +++++ 35 files changed, 1122 insertions(+) create mode 100644 .gitignore create mode 100644 assets/css/base/_body.scss create mode 100644 assets/css/base/_responsive.scss create mode 100644 assets/css/base/_var.scss create mode 100644 assets/css/components/_btn--don.scss create mode 100644 assets/css/components/_buttons.scss create mode 100644 assets/css/components/_form-newsletter.scss create mode 100644 assets/css/components/_list-socials.scss create mode 100644 assets/css/components/_nav-tabs.scss create mode 100644 assets/css/components/_text.scss create mode 100644 assets/css/partials/_main-layout.scss create mode 100644 assets/css/partials/_site-footer.scss create mode 100644 assets/css/partials/_site-header.scss create mode 100644 assets/css/style.scss create mode 100644 assets/favicon.png create mode 100644 assets/icons/arrow-left.svg create mode 100644 assets/icons/arrow-top-right.svg create mode 100644 assets/icons/menu-close.svg create mode 100644 assets/icons/menu.svg create mode 100644 assets/icons/play-button.svg create mode 100644 assets/icons/socials/bluesky.svg create mode 100644 assets/icons/socials/facebook.svg create mode 100644 assets/icons/socials/instagram.svg create mode 100644 assets/icons/socials/linkedin.svg create mode 100644 assets/icons/socials/mastodon.svg create mode 100644 assets/icons/socials/threads.svg create mode 100644 assets/icons/socials/x-social.svg create mode 100644 assets/icons/socials/youtube.svg create mode 100644 assets/index-logo.svg create mode 100644 assets/js/onload.js create mode 100644 assets/js/temp/includeHtml.js create mode 100644 components/site-footer.html create mode 100644 components/site-header.html create mode 100644 components/socials.html create mode 100644 index.html diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1760dce --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.DS_Store +assets/fonts/* +assets/css/style.css +assets/css/style.css.map \ No newline at end of file diff --git a/assets/css/base/_body.scss b/assets/css/base/_body.scss new file mode 100644 index 0000000..fff5e60 --- /dev/null +++ b/assets/css/base/_body.scss @@ -0,0 +1,35 @@ +* { + margin: 0; + padding: 0; + + box-sizing: border-box; + -webkit-font-smoothing: antialiased; + -moz-font-smoothing: antialiased; + -o-font-smoothing: antialiased; + + scroll-behavior: smooth; +} +a { + color: currentColor; +} +button{ + background: none; + outline: none; + border: none; + color: var(--color-txt); +} +iframe{ + border: none; +} + +body{ + font-family: var(--font); + line-height: var(--leading-normal); + font-size: var(--fs-normal); + + color: var(--color-txt); + background-color: var(--color-bg); + width: 100vw; + overflow-x: hidden; +} + diff --git a/assets/css/base/_responsive.scss b/assets/css/base/_responsive.scss new file mode 100644 index 0000000..ff9bac4 --- /dev/null +++ b/assets/css/base/_responsive.scss @@ -0,0 +1,11 @@ +$desktop: "screen and (min-width: 1200px)"; +$medium: "screen and (max-width: 1080px)"; +$medium-up: "screen and (min-width: 1080px)"; +$small-up: "screen and (min-width: 720px)"; +$small: "screen and (max-width: 720px)"; +$x-small: "screen and (max-width: 560px)"; +$paysage: "screen and (max-height: 670px) and (min-width: 1080px)"; + +@media #{$medium}{ + +} diff --git a/assets/css/base/_var.scss b/assets/css/base/_var.scss new file mode 100644 index 0000000..8726e9f --- /dev/null +++ b/assets/css/base/_var.scss @@ -0,0 +1,77 @@ +:root { + --font: 'Executive', Arial, sans-serif; + --title: 'System', Arial, sans-serif; + + // --fs-x-small: 10px; + // --fs-small: 12px; + // --fs-normal: 16px; + // --fs-medium: 22px; + // --fs-big: 38px; + + --fs-x-small: 10px; + --fs-small: 12px; + --fs-normal: 16px; + --fs-medium: 20px; + --fs-big: 30px; + --fs-x-big: 38px; + + --fs-button-bold: 22px; + + @media #{$small} { + --fs-medium: 20px; + --fs-big: 26px; + } + + --leading-tight: 1; + --leading-normal: 1.2; + // --leading-relaxed: 1.4; + // --leading-loose: 1.8; + + --fw-normal: 400; + --fw-medium: 500; + --fw-bold: 600; + + + --grey-100: #d8d8d8; + --grey-200: #c8c8c8; + --grey-300: #b9b9b9; + --grey-400: #969696; + --grey-600: #6d6d6d; + --grey-800: #383838; + + --color-bg: #161616; + --color-txt: #ffffff; + --color-txt-light: var(--grey-600); + --color-accent: #00ff00; + --color-accent-50: #e9ffe9; + --color-accent-100: #d8fdd8; + + + + --border: 1px solid var(--color-txt); + --border-light: 1px solid var(--grey-800); + + --header-h: 80px; + --header-h-shrinked: 50px; + + // responsive + --padding-body: 26px; + + --radius-small: 4px; + --spacing: 30px; + --h-block: 30px; + + --curve: cubic-bezier(0.175, 0.885, 0.32, 1.275); +} + + +@media #{$small}{ + :root { + --fs-x-small: 10px; + --fs-small: 11px; + --fs-normal: 14px; + --fs-medium: 20px; + --fs-big: 30px; + --fs-x-big: 38px; + } +} \ No newline at end of file diff --git a/assets/css/components/_btn--don.scss b/assets/css/components/_btn--don.scss new file mode 100644 index 0000000..3c4e2d0 --- /dev/null +++ b/assets/css/components/_btn--don.scss @@ -0,0 +1,60 @@ +#btn--don__mobile { + width: 100%; + display: flex; + align-items: center; + justify-content: center; + + padding-top: calc(var(--spacing) * 0.5); + padding-bottom: calc(var(--spacing) * 1.5); + position: fixed; + bottom: 0px; + left: 0; + z-index: 100; + opacity: 0; + transition: opacity ease-in 0.2s; + + pointer-events: none; + &.is-visible { + pointer-events: all; + opacity: 1; + } + + &.is-sticky { + position: relative; + } + + @media #{$small-up} { + display: none !important; + } +} + +.btn--don { + --vertical-padding: 0.5ch; + height: calc(var(--h-block) + var(--vertical-padding)); + border-radius: calc(var(--h-block) / 1); + padding: var(--vertical-padding) 2ch; + background-color: var(--color-accent); + color: var(--color-bg); + font-family: var(--font); + font-size: var(--fs-medium); + font-weight: var(--fw-bold); + + a { + text-decoration: none; + display: flex; + align-items: center; + gap: 0.5ch; + } + + .icon { + height: 28px; + position: relative; + top: 1px; + } + + svg { + fill: var(--color-bg); + width: 24px; + height: 24px; + } +} diff --git a/assets/css/components/_buttons.scss b/assets/css/components/_buttons.scss new file mode 100644 index 0000000..433bea8 --- /dev/null +++ b/assets/css/components/_buttons.scss @@ -0,0 +1,101 @@ +button{ + cursor: pointer; + font-family: var(--font); + font-size: var(--fons-normal); + color: var(--color-txt); + &:hover{ + color: var(--grey-100); + } + + a{ + text-decoration: none; + width: 100%; + height: 100%; + } +} + +button:disabled{ + cursor: auto; + +} + + +.btn__default{ + + + --size: calc(var(--h-block) - 8px); + font-size: var(--fs-normal); + font-weight: var(--fw-normal); + height: var(--size); + padding-right: 1.5ch; + + position: relative; + + + display: flex; + align-items: center; + gap: 0ch; + // padding-right: 0.5ch; + color: var(--color-accent); + font-weight: var(--fw-medium); + text-decoration: none; + + cursor: pointer; + + + .icon, .txt{ z-index: 10; } + + .icon{ + width: var(--size); + height: var(--size); + display: flex; + align-items: center; + justify-content: center; + color: var(--color-bg); + text-align: center; + + svg{ + fill: var(--color-bg); + width: 80%; + } + } + + .txt{ + font-family: var(--font-title); + color: var(--color-accent); + font-size: var(--fs-normal); + font-weight: var(--fw-bold); + padding-left: 1ch; + } + + &::after{ + content: ''; + display: block; + background-color: var(--color-accent); + border-radius: calc(var(--size)/2); + width: var(--size); + height: var(--size); + position: absolute; + left: 0; + z-index: 0; + transition: width .2s + } + + &:hover{ + // + .txt{ + color: var(--color-bg); + display: block; + } + &::after{ + width: 100%; + } + } + + + + + + +} + diff --git a/assets/css/components/_form-newsletter.scss b/assets/css/components/_form-newsletter.scss new file mode 100644 index 0000000..8eac349 --- /dev/null +++ b/assets/css/components/_form-newsletter.scss @@ -0,0 +1,127 @@ +.form__newsletter{ + --size: 24px; + + position: relative; + display: flex; + align-items: center; + position: relative; + + + + input[type="email"]{ + + height: calc(var(--h-block)*1.25); + width: 100%; + border-radius: calc(var(--h-block)*0.625); + outline: none; + border: none; + padding: 0 2ch; + font-family: var(--font); + + font-size: var(--fs-normal); + z-index: 40; + padding-top: 4px; + &::placeholder{ + font-family: var(--font); + font-size: var(--fs-normal); + } + + &:focus{ + outline: 3px solid var(--grey-400); + } + + + } + + button[type="submit"].btn--bold{ + position: absolute; + right: 2px; + z-index: 100; + } + + + button[type="submit"].btn--bold { + + + --size: calc(var(--h-block)*1.25 - 4px); + font-family: var(--font); + font-size: var(--fs-button-bold); + height: var(--size); + + + display: flex; + align-items: center; + gap: 0.75ch; + color: var(--color-accent); + font-weight: var(--fw-medium); + text-decoration: none; + + cursor: pointer; + + + .icon, .txt{ z-index: 10; } + + .icon{ + width: var(--size); + height: var(--size); + display: flex; + align-items: center; + justify-content: center; + color: var(--color-bg); + text-align: center; + + svg{ + fill: var(--color-bg); + width: 80%; + } + } + + .txt{ + position: relative; + top: 2px; + font-size: var(--fs-normal); + display: none; + padding-left: 1ch; + } + + &::after{ + content: ''; + display: block; + background-color: var(--color-accent); + border-radius: calc(var(--size)/2); + width: var(--size); + height: var(--size); + position: absolute; + right: 0; + z-index: 0; + transition: width .2s + } + + &:hover{ + .txt{ + color: var(--color-bg); + display: block; + } + &::after{ + width: 100%; + } + } + + // @media #{$small}{ + // .txt{ + // color: var(--color-bg); + // display: block; + // } + // &::after{ + // width: 100%; + // } + // } + + + + } + + + + +} \ No newline at end of file diff --git a/assets/css/components/_list-socials.scss b/assets/css/components/_list-socials.scss new file mode 100644 index 0000000..6716e48 --- /dev/null +++ b/assets/css/components/_list-socials.scss @@ -0,0 +1,57 @@ +.list-socials { + list-style: none; + display: flex; + justify-content: space-between; + align-items: center; + max-width: 400px; + a{ + display: flex; + align-items: center; + text-decoration: none; + } + + .icon{ + width: 24px; + height: 24px; + position: relative; + top: -2px; + } + svg{ + display: flex; + align-items: center; + width: 24px; + height: 24px; + + } + + .text{ display: none; } +} + + + +// with text +@media #{$small-up}{ + .footer__socials .list-socials{ + + display: block; + + li{ + margin-bottom: calc(var(--spacing)*0.5); + break-inside: avoid; + } + + a{ + gap: 1ch; + + height: calc(var(--spacing)*1); + &::after{ + content: '↗'; + color: var(--grey-300); + } + } + .text{ + display: block; + line-height: 1; + } + } +} diff --git a/assets/css/components/_nav-tabs.scss b/assets/css/components/_nav-tabs.scss new file mode 100644 index 0000000..2cbf6df --- /dev/null +++ b/assets/css/components/_nav-tabs.scss @@ -0,0 +1,40 @@ +.nav--tabs{ + height: calc(var(--h-block)*1); + width: auto; + border: var(--border); + border-radius: var(--radius-small); + overflow: hidden; + + + display: inline-flex; + + width: auto; + margin: 0 auto; + margin-bottom: var(--spacing); + + + .nav--tabs__btn{ + font-family: var(--font); + font-size: var(--fs-small); + font-weight: var(--fw-medium); + padding: 0 2ch; + + &.is-selected{ + background-color: var(--color-txt); + color: var(--color-bg); + } + + &:not(.is-selected):hover{ + background-color: var(--grey-800); + cursor: pointer; + } + + } + + .nav--tabs__btn + .nav--tabs__btn{ + border-left: var(--border); + + } + + +} \ No newline at end of file diff --git a/assets/css/components/_text.scss b/assets/css/components/_text.scss new file mode 100644 index 0000000..2aa69f1 --- /dev/null +++ b/assets/css/components/_text.scss @@ -0,0 +1,68 @@ +[data-template="subscription-newsletter"], +[data-template="thanks"], +[data-template="support"], +[data-template="store"]{ + + .p__baseline-big{ + font-family: var(--title); + font-size: var(--fs-big); + font-weight: var(--fw-bold); + line-height: 1.1; + text-align: center; + margin: calc(var(--spacing)*1) 0; + + strong{ + font-weight: var(--fw-bolf); + color: var(--color-accent); + } + + .link-don{ + display: block; + color: var(--color-accent); + text-decoration: none; + // &::after{ + // content: ' ↗'; + // font-size: 0.8em; + // } + &:hover{ + text-decoration: underline 2px; + text-underline-offset: 4px; + + } + } + } + + .p__baseline{ + font-size: var(--fs-medium); + font-weight: var(--fw-medium); + line-height: 1.1; + text-align: center; + margin: calc(var(--spacing)*1) 0; + @media #{$small}{ + text-align: center; + margin: var(--spacing) 0; + } + } + + .p__details{ + font-size: var(--fs-small); + margin-bottom: 0.5em; + color: var(--grey-400); + } + + .section__heading{ + font-size: var(--fs-normal); + font-weight: var(--fw-medium); + line-height: 1; + text-align: center; + margin-top: calc(var(--spacing)*0.5); + margin-bottom: calc(var(--spacing)*1); + } + + ul, ol{ + margin-left: 3ch; + margin-bottom: 0.5em; + } + +} + diff --git a/assets/css/partials/_main-layout.scss b/assets/css/partials/_main-layout.scss new file mode 100644 index 0000000..b7f9db6 --- /dev/null +++ b/assets/css/partials/_main-layout.scss @@ -0,0 +1,15 @@ +body{ + min-height: 100dvh; + min-height: 100vh; + + display: flex; + flex-direction: column; + + + main{ + flex-grow: 1; + margin-top: var(--header-h); + padding: 0 var(--padding-body); + } + +} \ No newline at end of file diff --git a/assets/css/partials/_site-footer.scss b/assets/css/partials/_site-footer.scss new file mode 100644 index 0000000..b477eb1 --- /dev/null +++ b/assets/css/partials/_site-footer.scss @@ -0,0 +1,94 @@ +#site-footer{ + + background-color: black; + padding: calc(var(--padding-body)*2) var(--padding-body); + + + .logo { + margin-top: calc(var(--spacing)*0.25); + margin-bottom: calc(var(--spacing)*1); + svg{ + width: 100px; + } + } + + p{ + margin: calc(var(--spacing)*0.5) 0; + a{ + text-decoration: none; + &:hover{ + text-decoration: underline; + color: currentColor; + } + } + } + + .p__small{ + font-size: var(--fs-x-small); + color: var(--grey-600); + } + + .footer__mentions{ + p{ + font-size: var(--fs-small); + color: var(--color-txt) + } + } + + + + @media #{$small}{ + margin-top: calc(var(--spacing)*2); + + + .footer__socials{ + margin-top: calc(var(--spacing)*0.75); + padding-top: calc(var(--spacing)*0.25); + border-top: var(--border-light); + + .list-socials{ + margin-top: calc(var(--spacing)*0.5); + margin-bottom: calc(var(--spacing)*0.75); + } + } + .footer__mentions{ + + border-top: var(--border-light); + padding-top: calc(var(--spacing)*0.25); + p{ + font-size: var(--fs-small); + text-align: center; + } + } + } + + + @media #{$small-up}{ + + .site-footer__container{ + display: grid; + grid-template-columns: 1fr 1fr; + column-gap: calc(var(--spacing)*2); + + max-width: 1200px; + margin: 0 auto; + } + + .footer__socials .container{ + max-width: 400px; + columns: 2; + margin-top: calc(var(--spacing)*1); + } + + .footer__mentions{ + grid-column: span 2; + p{ + margin-top: calc(var(--spacing)*1); + } + + } + + } + + +} \ No newline at end of file diff --git a/assets/css/partials/_site-header.scss b/assets/css/partials/_site-header.scss new file mode 100644 index 0000000..66b32f2 --- /dev/null +++ b/assets/css/partials/_site-header.scss @@ -0,0 +1,84 @@ +@keyframes add-border { + from { + border-bottom-color: transparent; + } + to { + border-bottom: var(--grey-800); + } +} + +#site-header { + position: fixed; + left: var(--padding-body); + top: 0px; + z-index: 900; + --gap: 3ch; + + width: calc(100vw - var(--padding-body)*2); + height: var(--header-h); + background-color: var(--color-bg); + border-bottom: var(--border-light); + + display: flex; + align-items: center; + justify-content: space-between; + gap: var(--gap); + + a{ + text-decoration: none; + &:hover{ + color: var(--grey-200); + } + } + + + #site-title { + flex-grow: 2; + svg{ + width: 100px; + } + } + + ul{ + list-style-type: none; + display: flex; + align-items: center; + gap: var(--gap); + } + + #btn--soutenir{ + color: var(--color-accent); + a:hover{ + color: var(--color-accent); + text-decoration: underline; + } + } + + ul, #btn--soutenir{ + text-transform: uppercase; + } + + + #lang-toggle{ + display: flex; + gap: 1ch; + button:disabled{ color: var(--color-txt-light); } + } + + #menu-toggle{ + cursor: pointer; + svg{ + width: 30px; + } + .close{ display: none; } + + } + + button{ + + &:hover{ + svg{ fill: var(--grey-200)!important; } + } + } + +} diff --git a/assets/css/style.scss b/assets/css/style.scss new file mode 100644 index 0000000..ed69ba5 --- /dev/null +++ b/assets/css/style.scss @@ -0,0 +1,21 @@ +@charset "UTF-8"; +@import 'base/responsive'; +@import 'base/var'; +@import 'base/body'; + +@import 'partials/site-header'; + +// @import 'components/nav-tabs'; +// @import 'components/btn--default'; +@import 'components/buttons'; +@import 'components/form-newsletter'; +@import 'components/list-socials'; +@import 'components/text'; + + +@import 'partials/site-header'; +@import 'partials/site-footer'; +@import 'partials/main-layout'; + + + diff --git a/assets/favicon.png b/assets/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..bca6cd50dd3fcfaf8a99e05c6dd689b58918c2fd GIT binary patch literal 39383 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

+hR8uVS4@KV~2LO)t`Qk5rN=W!vJp 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 + + + + + diff --git a/assets/icons/arrow-top-right.svg b/assets/icons/arrow-top-right.svg new file mode 100644 index 0000000..e46faa9 --- /dev/null +++ b/assets/icons/arrow-top-right.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/assets/icons/menu-close.svg b/assets/icons/menu-close.svg new file mode 100644 index 0000000..d02ecbb --- /dev/null +++ b/assets/icons/menu-close.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/icons/menu.svg b/assets/icons/menu.svg new file mode 100644 index 0000000..cf2f2b5 --- /dev/null +++ b/assets/icons/menu.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/icons/play-button.svg b/assets/icons/play-button.svg new file mode 100644 index 0000000..ea58eaf --- /dev/null +++ b/assets/icons/play-button.svg @@ -0,0 +1,10 @@ + + + + + + + \ No newline at end of file diff --git a/assets/icons/socials/bluesky.svg b/assets/icons/socials/bluesky.svg new file mode 100644 index 0000000..3944e93 --- /dev/null +++ b/assets/icons/socials/bluesky.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/assets/icons/socials/facebook.svg b/assets/icons/socials/facebook.svg new file mode 100644 index 0000000..cf4118e --- /dev/null +++ b/assets/icons/socials/facebook.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/icons/socials/instagram.svg b/assets/icons/socials/instagram.svg new file mode 100644 index 0000000..57775b0 --- /dev/null +++ b/assets/icons/socials/instagram.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/icons/socials/linkedin.svg b/assets/icons/socials/linkedin.svg new file mode 100644 index 0000000..5a9c0a5 --- /dev/null +++ b/assets/icons/socials/linkedin.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/icons/socials/mastodon.svg b/assets/icons/socials/mastodon.svg new file mode 100644 index 0000000..efe42f5 --- /dev/null +++ b/assets/icons/socials/mastodon.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/assets/icons/socials/threads.svg b/assets/icons/socials/threads.svg new file mode 100644 index 0000000..3619982 --- /dev/null +++ b/assets/icons/socials/threads.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/icons/socials/x-social.svg b/assets/icons/socials/x-social.svg new file mode 100644 index 0000000..18f2f4d --- /dev/null +++ b/assets/icons/socials/x-social.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/assets/icons/socials/youtube.svg b/assets/icons/socials/youtube.svg new file mode 100644 index 0000000..40ca348 --- /dev/null +++ b/assets/icons/socials/youtube.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/index-logo.svg b/assets/index-logo.svg new file mode 100644 index 0000000..3d9e694 --- /dev/null +++ b/assets/index-logo.svg @@ -0,0 +1,14 @@ + + Index.ngo + + + + + + + + + + + + diff --git a/assets/js/onload.js b/assets/js/onload.js new file mode 100644 index 0000000..830a497 --- /dev/null +++ b/assets/js/onload.js @@ -0,0 +1,23 @@ +window.onload = function () { + includeHTML(); + headerShrink(); +}; + +window.onscroll = function () { + headerShrink(); +}; + + + +function headerShrink() { + const header = document.getElementById('site-header'); + const scrollPosition = window.scrollY || document.documentElement.scrollTop; + + if (scrollPosition > 100) { + header.classList.add('is-shrinked'); + } else { + header.classList.remove('is-shrinked'); + } +} + + diff --git a/assets/js/temp/includeHtml.js b/assets/js/temp/includeHtml.js new file mode 100644 index 0000000..58f04bb --- /dev/null +++ b/assets/js/temp/includeHtml.js @@ -0,0 +1,33 @@ +// How to use +//

+ + +function includeHTML() { + + var z, i, elmnt, file, xhttp; + /* Loop through a collection of all HTML elements: */ + z = document.getElementsByTagName("*"); + for (i = 0; i < z.length; i++) { + elmnt = z[i]; + /*search for elements with a certain atrribute:*/ + file = elmnt.getAttribute("w3-include-html"); + if (file) { + /* Make an HTTP request using the attribute value as the file name: */ + xhttp = new XMLHttpRequest(); + xhttp.onreadystatechange = function() { + if (this.readyState == 4) { + if (this.status == 200) {elmnt.innerHTML = this.responseText;} + if (this.status == 404) {elmnt.innerHTML = "Page not found.";} + /* Remove the attribute, and call this function once more: */ + elmnt.removeAttribute("w3-include-html"); + includeHTML(); + } + } + xhttp.open("GET", file, true); + xhttp.send(); + /* Exit the function: */ + return; + } + } + +} diff --git a/components/site-footer.html b/components/site-footer.html new file mode 100644 index 0000000..a2a5417 --- /dev/null +++ b/components/site-footer.html @@ -0,0 +1,64 @@ + \ No newline at end of file diff --git a/components/site-header.html b/components/site-header.html new file mode 100644 index 0000000..cb5859f --- /dev/null +++ b/components/site-header.html @@ -0,0 +1,42 @@ + +

+ + +

+ + + + + + + + + + + +
+ + +
+ + \ No newline at end of file diff --git a/components/socials.html b/components/socials.html new file mode 100644 index 0000000..a37f1f2 --- /dev/null +++ b/components/socials.html @@ -0,0 +1,45 @@ + \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..59ce055 --- /dev/null +++ b/index.html @@ -0,0 +1,30 @@ + + + + + + INDEX + + + + + + + + + + + +
+ +

L’objet central de notre action est de concourir à la manifestation de la vérité dans des affaires où celle-ci est entravée par des intérêts de pouvoir. + Nos enquêtes portent principalement principalement sur les cas de violences policières, en France comme à l'international, ainsi que sur les violations des droits humains au sens large. Nous intervenons également dans les situations où nos techniques d'investigation numérique peuvent permettre d'établir les faits autour d'une controverse d'intérêt public, qu'elle soit historique ou contemporaine. + Notre champ d’action est avant tout public. Nos enquêtes et rapports d’expertise sont souvent publiés en partenariat avec d'autres médias d'information et sont régulièrement utilisés dans les procédures judiciaires sur les affaires concernées, contribuant ainsi à l'établissement des faits. + Nous œuvrons également à la diffusion des techniques et des méthodes de l’investigation en sources ouvertes (OSINT) au sein de la société civile. Dans le cadre de notre programme de formation, nous animons des ateliers avec des collectifs citoyens, des ONG, des universités et le grand public. Enfin, nous intervenons régulièrement dans la sphère publique pour présenter nos travaux et notre approche.

+
+ + + + + + \ No newline at end of file