diff --git a/author/project/system/public/css/themes/default/main.css b/author/project/system/public/css/themes/default/main.css deleted file mode 100755 index 25ff309..0000000 --- a/author/project/system/public/css/themes/default/main.css +++ /dev/null @@ -1,46 +0,0 @@ -@charset "UTF-8"; - -* { - text-decoration: none; - outline: none; - border: none; - /* font-family: , system-ui, sans-serif; */ - font-family: "dejavu"; - transition: 0.1s ease-out; -} - -body { - margin: 0; - min-height: 100vh; - padding: 0; - display: flex; - flex-direction: column; - background-color: var(--background, #fafafa); -} - -aside { -} - -header { -} - -main { - display: flex; - flex-direction: column; - align-items: center; - gap: 10px; - transition: 0s; -} - -footer { -} - -.unselectable { - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - diff --git a/composer.json b/composer.json index dfc2925..2b56de8 100755 --- a/composer.json +++ b/composer.json @@ -10,9 +10,9 @@ "license": "WTFPL", "authors": [ { - "name": "svoboda", - "email": "svoboda@gmail.com", - "homepage": "https://svoboda.page", + "name": "Arsen Mirzaev Tatyano-Muradovich", + "email": "arsen@mirzaev.sexy", + "homepage": "https://mirzaev.sexy", "role": "Programmer" } ], diff --git a/examples/nginx/svoboda.dev.mirzaev.sexy b/examples/nginx/svoboda.dev.mirzaev.sexy new file mode 100644 index 0000000..ded6ce9 --- /dev/null +++ b/examples/nginx/svoboda.dev.mirzaev.sexy @@ -0,0 +1,53 @@ +server { + listen 80; + listen [::]:80; + + server_name svoboda.dev.mirzaev.sexy; + + # 301 302 + return 301 https://$server_name$request_uri; +} + +server { + listen 443 ssl; + listen 443 quic; + listen [::]:443 ssl; + listen [::]:443 quic; + + server_name svoboda.dev.mirzaev.sexy; + + http2 on; + http3 on; + quic_gso on; + quic_retry on; + + add_header Alt-Svc 'h3=":$server_port"; ma=86400'; + add_header x-quic 'h3'; + + root /var/www/svoboda.works/svoboda/works/system/public; + + index index.php; + + keepalive_timeout 60; + + include snippets/ssl-params.conf; + include snippets/ssl-mirzaev.conf; + include snippets/php8_4.conf; + + location / { + try_files $uri $uri/ /index.php?$query_string; + } + + location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|mp3|ogg|ogv|webm|htc|woff2|woff)$ { + expires 1M; + access_log off; + add_header Cache-Control "max-age=2629746, public"; + } + + location ~* \.(?:css|js)$ { + expires 1y; + access_log off; + add_header Cache-Control "max-age=31556952, public"; + } +} + diff --git a/author/project/system/controllers/core.php b/svoboda/works/system/controllers/core.php similarity index 100% rename from author/project/system/controllers/core.php rename to svoboda/works/system/controllers/core.php diff --git a/author/project/system/controllers/index.php b/svoboda/works/system/controllers/index.php similarity index 100% rename from author/project/system/controllers/index.php rename to svoboda/works/system/controllers/index.php diff --git a/author/project/system/models/core.php b/svoboda/works/system/models/core.php similarity index 100% rename from author/project/system/models/core.php rename to svoboda/works/system/models/core.php diff --git a/author/project/system/models/enumerations/language.php b/svoboda/works/system/models/enumerations/language.php similarity index 100% rename from author/project/system/models/enumerations/language.php rename to svoboda/works/system/models/enumerations/language.php diff --git a/author/project/system/models/enumerations/session.php b/svoboda/works/system/models/enumerations/session.php similarity index 100% rename from author/project/system/models/enumerations/session.php rename to svoboda/works/system/models/enumerations/session.php diff --git a/author/project/system/models/interfaces/collection.php b/svoboda/works/system/models/interfaces/collection.php similarity index 100% rename from author/project/system/models/interfaces/collection.php rename to svoboda/works/system/models/interfaces/collection.php diff --git a/author/project/system/models/interfaces/document.php b/svoboda/works/system/models/interfaces/document.php similarity index 100% rename from author/project/system/models/interfaces/document.php rename to svoboda/works/system/models/interfaces/document.php diff --git a/author/project/system/models/session.php b/svoboda/works/system/models/session.php similarity index 100% rename from author/project/system/models/session.php rename to svoboda/works/system/models/session.php diff --git a/author/project/system/models/traits/buffer.php b/svoboda/works/system/models/traits/buffer.php similarity index 100% rename from author/project/system/models/traits/buffer.php rename to svoboda/works/system/models/traits/buffer.php diff --git a/author/project/system/models/traits/document.php b/svoboda/works/system/models/traits/document.php similarity index 100% rename from author/project/system/models/traits/document.php rename to svoboda/works/system/models/traits/document.php diff --git a/author/project/system/models/traits/files.php b/svoboda/works/system/models/traits/files.php similarity index 100% rename from author/project/system/models/traits/files.php rename to svoboda/works/system/models/traits/files.php diff --git a/author/project/system/models/traits/status.php b/svoboda/works/system/models/traits/status.php similarity index 100% rename from author/project/system/models/traits/status.php rename to svoboda/works/system/models/traits/status.php diff --git a/svoboda/works/system/public/css/themes/default/aside.css b/svoboda/works/system/public/css/themes/default/aside.css new file mode 100755 index 0000000..f1dc280 --- /dev/null +++ b/svoboda/works/system/public/css/themes/default/aside.css @@ -0,0 +1,75 @@ +@charset "UTF-8"; + +aside { + z-index: 100; + margin-top: var(--gap); + grid-row: 1 / 2; + grid-column: 1 / 4; + width: 100vw; + display: flex; +} + +aside > * { + margin-right: var(--gap); +} + +aside > section { + position: relative; + width: 200px; + height: 100%; + display: flex; + flex-direction: column; + flex-shrink: 0; + overflow: hidden; + border-radius: 0.75rem; + background-color: var(--section-background-color); + -webkit-box-shadow: 0px -3px 18px 2px rgba(0, -3, 0, 0.4); + -moz-box-shadow: 0px -3px 18px 2px rgba(0, -3, 0, 0.4); + box-shadow: 0px -3px 18px 2px rgba(0, -3, 0, 0.4); +} + +aside > section > a.title { + z-index: 300; + position: absolute; + left: 1rem; + bottom: 1rem; + display: inline-flex; + padding: 0.5rem 0.8rem; + border-radius: 0.75rem; + background-color: var(--section-aside-button-background-color); + backdrop-filter: blur(1px) contrast(1.8); + -webkit-box-shadow: 0px 0px 24px 2px rgba(0, 0, 0, 0.4); + -moz-box-shadow: 0px 0px 24px 2px rgba(0, 0, 0, 0.4); + box-shadow: 0px 0px 24px 2px rgba(0, 0, 0, 0.4); +} + +aside > section:hover > a.title { + background-color: var(--section-aside-button-background-color-hover); +} + +aside > section > a.title * { + margin: unset; + color: var(--section-aside-button-color); +} + +aside > section > p.description { + z-index: 200; +} + +aside > section:not(:hover) > p.description { + display: none; +} + +aside > section > img.background { + z-index: 100; + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + object-fit: cover; +} + +aside > section:not(:hover) > img.background { + filter: blur(0.5px) contrast(0.8) sepia(0.8) brightness(0.4); +} diff --git a/svoboda/works/system/public/css/themes/default/body.css b/svoboda/works/system/public/css/themes/default/body.css new file mode 100755 index 0000000..6259e3e --- /dev/null +++ b/svoboda/works/system/public/css/themes/default/body.css @@ -0,0 +1,13 @@ +@charset "UTF-8"; + +body { + margin: 0; + width: 100vw; + height: 100vh; + display: grid; + grid-template-rows: max(150px, 15vh) auto; + grid-template-columns: 60px auto 60px; + gap: var(--gap); + overflow: hidden; + background-color: var(--background-color); +} diff --git a/svoboda/works/system/public/css/themes/default/colors.css b/svoboda/works/system/public/css/themes/default/colors.css new file mode 100755 index 0000000..d2f09cf --- /dev/null +++ b/svoboda/works/system/public/css/themes/default/colors.css @@ -0,0 +1,73 @@ +@charset "UTF-8"; + +@media (prefers-color-scheme: dark) { + :root { + --text-color: #c5bbab; + --text-color-hover: #e9ddc9; + --text-color-active: #9f9686; + --text-notice-color: #7e6a5b; + --text-warning-color: #df2020; + --text-selected-color: #c90000; + --text-selected-background-color: #3a0909; + + --link-color: #b97a4b; + --link-color-hover: #dd8e54; + --link-color-active: #a16438; + + --button-background-color: #9f9b39; + --section-border-color: #593535; + --section-background-color: #593535; + --section-block-background-color: #522d2d; + + --section-menu-background-color: #4b2828; + --section-menu-button-color: #fbffb6; + --section-menu-button-background-color-hover: #592c2c; + --section-menu-button-background-color-active: #412222; + --section-menu-button-background-color-selected: #412222; + + --section-timeline-background-color: #143531; + --section-timeline-button-color: #859779; + --section-timeline-button-color-hover: #96ab89; + --section-timeline-button-color-active: #67755e; + --section-timeline-button-selected-color: #b0b966; + --section-timeline-button-selected-color-hover: #d1db7a; + --section-timeline-button-selected-color-active: #989f5b; + + --section-aside-button-color: #fbffb6; + --section-aside-button-background-color: rgb(255 237 189 / 30%); + --section-aside-button-background-color-hover: rgb(77 9 9 / 70%); + --section-aside-button-background-color-active: rgb(77 9 9 / 70%); + --header-background-color: #351d1d; + --footer-background-color: #351d1d; + --background-color: #654949; + + --diagram-text-color: #c3a275; + --diagram-text-color-hover: #e5bb83; + --diagram-text-color-active: #b99565; + --diagram-color-blue: #303032; + --diagram-color-white: #a4bd93; + --diagram-color-white-hover: #bee5a3; + --diagram-color-white-active: #8ca57a; + --diagram-color-0: #572626; + --diagram-color-1: #572b2b; + --diagram-color-2: #552828; + --diagram-color-3: #5f2b2b; + --diagram-color-4: #6d3030; + --diagram-color-5: #773636; + --diagram-color-6: #893737; + --diagram-legend-text-color: #7c7b61; + --diagram-legend-color-0: #461d1d; + + color: var(--text-color); + } +} + +@media (prefers-color-scheme: light) { + :root { + --text-color: black; + --title-background: blue; + --section-background: blue; + + color: var(--text-color); + } +} diff --git a/svoboda/works/system/public/css/themes/default/diagram.css b/svoboda/works/system/public/css/themes/default/diagram.css new file mode 100755 index 0000000..aff0fe9 --- /dev/null +++ b/svoboda/works/system/public/css/themes/default/diagram.css @@ -0,0 +1,122 @@ +@charset "UTF-8"; + +div#diagram { + position: relative; +} + +div#diagram>svg.pie { + padding: 1rem; +} + +div#diagram>svg.pie>circle { + stroke-width: 10; + stroke-dasharray: calc(31.4 * var(--size, 0)), 31.4; + fill: transparent; +} + +div#diagram>svg.pie>circle.background { + fill: var(--diagram-color-0); +} + +div#diagram>svg.pie>circle:nth-of-type(1) { + stroke: var(--diagram-color-1); +} + +div#diagram>svg.pie>circle:nth-of-type(2) { + stroke: var(--diagram-color-2); +} + +div#diagram>svg.pie>circle:nth-of-type(3) { + stroke: var(--diagram-color-3); +} + +div#diagram>svg.pie>circle:nth-of-type(4) { + stroke: var(--diagram-color-4); +} + +div#diagram>svg.pie>circle:nth-of-type(5) { + stroke: var(--diagram-color-5); +} + +div#diagram>svg.chart>polyline { + stroke-width: 4; + fill: transparent; +} + +div#diagram>svg.chart>a.node>text { + font-size: 0.8rem; + text-anchor: middle; + fill: var(--diagram-text-color); +} + +div#diagram>svg.chart>a.node:first-of-type>text { + text-anchor: start; +} + +div#diagram>svg.chart>a.node:last-of-type>text { + text-anchor: end; +} + +div#diagram>svg.chart>a.node:is(:hover, :focus)>text { + fill: var(--diagram-text-color-hover); +} + +div#diagram>svg.chart>a.node:active>text { + fill: var(--diagram-text-color-active); +} + +div#diagram>svg.chart>a.node>circle { + r: 7; + stroke-width: 4; + stroke: var(--diagram-color-5); + fill: var(--diagram-color-white); +} + +div#diagram>svg.chart>a.node:is(:hover, :focus)>circle { + r: 8; + stroke: var(--diagram-color-6); + fill: var(--diagram-color-white-hover); +} + +div#diagram>svg.chart>a.node:active>circle { + stroke: var(--diagram-color-4); + fill: var(--diagram-color-white-active); +} + +/* div#diagram > svg.chart + div.background { + z-index: -100; + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 87%; + background-color: var(--diagram-color-1); + border-radius: 0.75rem; +} */ + +div#diagram>svg.chart>rect.background { + fill: var(--diagram-color-0); +} + +div#diagram>svg.chart>polyline.legend { + stroke: var(--diagram-legend-color-0); +} + +div#diagram>svg.chart>text.legend { + font-size: 0.8rem; + text-anchor: end; + fill: var(--diagram-legend-text-color); +} + +div#diagram>svg.chart>text.legend.vertical { + rotate: -90deg; +} + +div#diagram>svg.chart>polyline:nth-of-type(1) { + stroke: transparent; + fill: var(--diagram-legend-color-0); +} + +div#diagram>svg.chart>polyline:nth-of-type(2) { + stroke: var(--diagram-color-5); +} diff --git a/svoboda/works/system/public/css/themes/default/footer.css b/svoboda/works/system/public/css/themes/default/footer.css new file mode 100755 index 0000000..1991e6d --- /dev/null +++ b/svoboda/works/system/public/css/themes/default/footer.css @@ -0,0 +1,30 @@ +@charset "UTF-8"; + +footer { + z-index: 300; + position: relative; + grid-row: 1 / 3; + grid-column: 3 / 4; + display: flex; + padding: 1rem; + gap: var(--gap); + flex-direction: column; + align-items: center; + background-color: var(--footer-background-color); +} + +footer:before { + content: ""; + position: absolute; + left: -40px; + bottom: 0; + height: 40px; + width: 40px; + pointer-events: none; + border-bottom-right-radius: 50%; + box-shadow: 0 20px 0 0 var(--footer-background-color); +} + +footer > a#svoboda { + margin-top: auto; +} diff --git a/svoboda/works/system/public/css/themes/default/header.css b/svoboda/works/system/public/css/themes/default/header.css new file mode 100755 index 0000000..0fa148c --- /dev/null +++ b/svoboda/works/system/public/css/themes/default/header.css @@ -0,0 +1,26 @@ +@charset "UTF-8"; + +header { + z-index: 400; + position: relative; + grid-row: 1 / 3; + grid-column: 1 / 2; + display: flex; + padding: 1rem; + gap: var(--gap); + flex-direction: column; + align-items: center; + background-color: var(--header-background-color); +} + +header:after { + content: ""; + position: absolute; + right: -40px; + bottom: 0; + height: 40px; + width: 40px; + pointer-events: none; + border-bottom-left-radius: 50%; + box-shadow: 0 20px 0 0 var(--header-background-color); +} diff --git a/svoboda/works/system/public/css/themes/default/icons/camera.css b/svoboda/works/system/public/css/themes/default/icons/camera.css new file mode 100755 index 0000000..518e092 --- /dev/null +++ b/svoboda/works/system/public/css/themes/default/icons/camera.css @@ -0,0 +1,40 @@ +@charset "UTF-8"; + +i.icon.camera { + position: relative; + perspective: 24px; + width: 18px; + height: 12px; + display: block; + box-sizing: border-box; + border: 2px solid; + border-radius: 3px; +} + +i.icon.camera::after, +i.icon.camera::before { + content: ""; + position: absolute; + display: block; + box-sizing: border-box; +} + +i.icon.camera::before { + top: 0; + right: -7px; + width: 8px; + height: 8px; + border: 2px solid; + border-left-color: transparent; + transform: rotateY(-70deg); +} + +i.icon.camera::after { + top: -5px; + right: 2px; + width: 10px; + height: 5px; + border-top: 2px solid; + border-right: 2px solid; + border-top-right-radius: 2px; +} diff --git a/svoboda/works/system/public/css/themes/default/icons/controller.css b/svoboda/works/system/public/css/themes/default/icons/controller.css new file mode 100755 index 0000000..d6251c5 --- /dev/null +++ b/svoboda/works/system/public/css/themes/default/icons/controller.css @@ -0,0 +1,24 @@ +@charset "UTF-8"; + +i.icon.controller { + position: relative; + width: 8px; + height: 8px; + display: block; + box-sizing: border-box; + border: 2px solid; + border-radius: 100px; +} + +i.icon.controller::before { + content: ""; + position: absolute; + left: -5px; + top: -5px; + width: 14px; + height: 14px; + display: block; + box-sizing: border-box; + box-shadow: -6px -6px 0 -4px, 6px 6px 0 -4px, 6px -6px 0 -4px, -6px 6px 0 -4px; + transform: rotate(45deg); +} diff --git a/svoboda/works/system/public/css/themes/default/icons/document.css b/svoboda/works/system/public/css/themes/default/icons/document.css new file mode 100755 index 0000000..f6ef46c --- /dev/null +++ b/svoboda/works/system/public/css/themes/default/icons/document.css @@ -0,0 +1,42 @@ +@charset "UTF-8"; + +i.icon.document { + position: relative; + width: 14px; + height: 16px; + display: block; + border-radius: 1px; + border-top-right-radius: 4px; + box-sizing: border-box; + overflow: hidden; + border: 2px solid transparent; + border-top: 0; + border-right: 0; + box-shadow: 0 0 0 2px; +} + +i.icon.document::after, +i.icon.document::before { + content: ""; + position: absolute; + display: block; + box-sizing: border-box; +} + +i.icon.document::before { + left: 0; + top: 8px; + width: 10px; + height: 2px; + box-shadow: 0 4px 0, -6px -4px 0; + background: currentColor; +} + +i.icon.document::after { + top: -1px; + right: -1px; + width: 6px; + height: 6px; + border-left: 2px solid; + border-bottom: 2px solid; +} diff --git a/svoboda/works/system/public/css/themes/default/icons/eye.css b/svoboda/works/system/public/css/themes/default/icons/eye.css new file mode 100755 index 0000000..3e85613 --- /dev/null +++ b/svoboda/works/system/public/css/themes/default/icons/eye.css @@ -0,0 +1,86 @@ +@charset "UTF-8"; + +i.icon.eye { + position: relative; + width: 24px; + height: 18px; + display: block; + box-sizing: border-box; + overflow: hidden; + border-bottom-right-radius: 100px; + border-bottom-left-radius: 100px; +} + +i.icon.eye.expanded:not(.offended) { + height: 20px; +} + +i.icon.eye.small { + width: 21px; + height: 15px; + border-bottom-right-radius: 70px; + border-bottom-left-radius: 70px; +} + +i.icon.eye.small.expanded:not(.offended) { + height: 17px; +} + +i.icon.eye::after, +i.icon.eye::before { + content: ""; + position: absolute; + display: block; + box-sizing: border-box; + border-radius: 100px; +} + +i.icon.eye::after { + top: 2px; + width: 24px; + height: 24px; + box-shadow: inset 0 -8px 0 2px, inset 0 0 0 2px; +} + +i.icon.eye.small::after { + width: 21px; + height: 21px; +} + +i.icon.eye.expanded:not(.offended)::after { + box-shadow: inset 0 -6px 0 2px, inset 0 0 0 2px; +} + +i.icon.eye.offended::after { + box-shadow: inset 0px -8px 0 2px, inset 0 -7px 0 2px; +} + +i.icon.eye::before { + left: var(--left, 8px); + bottom: var(--bottom, 4px); + width: 8px; + height: 8px; + border: 2px solid var(--text-color-active); + transition: var(--transition, 0) ease-out; + transform: rotateX(var(--offset-x, 0)) rotateY(var(--offset-y, 0)); +} + +i.icon.eye.small::before { + left: var(--left, 7px); + bottom: var(--bottom, 3px); + width: 7px; + height: 7px; +} + +i.icon.eye.excited::before { + width: 6px; + /* border: 2px solid var(--text-color-warning, red); */ +} + +i.icon.eye.excited.small::before { + width: 5px; +} + +i.icon.eye.offended::before { + display: none; +} diff --git a/svoboda/works/system/public/css/themes/default/icons/share.css b/svoboda/works/system/public/css/themes/default/icons/share.css new file mode 100755 index 0000000..b5c844e --- /dev/null +++ b/svoboda/works/system/public/css/themes/default/icons/share.css @@ -0,0 +1,35 @@ +@charset "UTF-8"; + +i.icon.share { + position: relative; + width: 6px; + height: 6px; + display: block; + box-sizing: border-box; + border-radius: 100px; + background: currentColor; + box-shadow: 10px -6px 0, 10px 6px 0; +} + +i.icon.share::after, +i.icon.share::before { + content: ""; + position: absolute; + left: 2px; + width: 10px; + height: 2px; + display: block; + box-sizing: border-box; + border-radius: 3px; + background: currentColor; +} + +i.icon.share::before { + top: 0; + transform: rotate(-35deg); +} + +i.icon.share::after { + bottom: 0; + transform: rotate(35deg); +} diff --git a/svoboda/works/system/public/css/themes/default/icons/slash.css b/svoboda/works/system/public/css/themes/default/icons/slash.css new file mode 100755 index 0000000..027d085 --- /dev/null +++ b/svoboda/works/system/public/css/themes/default/icons/slash.css @@ -0,0 +1,36 @@ +@charset "UTF-8"; + +i.icon.code.slash { + position: relative; + width: 2px; + height: 16px; + display: block; + box-sizing: border-box; + background: currentColor; + transform: rotate(15deg) scale(var(--ggs, 1)); +} + +i.icon.code.slash::after, +i.icon.code.slash::before { + content: ""; + position: absolute; + width: 8px; + height: 8px; + display: block; + box-sizing: border-box; + transform: rotate(-60deg); +} + +i.icon.code.slash::before { + left: -8px; + top: 5px; + border-left: 2px solid; + border-top: 2px solid; +} + +i.icon.code.slash::after { + top: 3px; + right: -8px; + border-right: 2px solid; + border-bottom: 2px solid; +} diff --git a/svoboda/works/system/public/css/themes/default/main.css b/svoboda/works/system/public/css/themes/default/main.css new file mode 100755 index 0000000..86a35f7 --- /dev/null +++ b/svoboda/works/system/public/css/themes/default/main.css @@ -0,0 +1,215 @@ +@charset "UTF-8"; + +main { + z-index: 200; + margin-bottom: var(--gap); + grid-row: 2 / 3; + grid-column: 2 / 3; + display: grid; + grid-template-rows: 2rem 43px auto; + gap: var(--gap); +} + +main > nav { + z-index: 200; + display: flex; + align-items: center; + overflow: hidden; +} + +main > nav > * { + display: flex; + flex-direction: column; + justify-content: center; +} + +main > nav#timeline { + margin-bottom: -0.3rem; + grid-row: 1 / 2; + padding: 0 0.5rem; + align-items: end; +} + +main > nav#timeline > * { + padding: 0.5rem; + font-weight: bold; + color: var(--section-timeline-button-color); +} + +main > nav#timeline > *:is(:hover, :focus) { + color: var(--section-timeline-button-color-hover); +} + +main > nav#timeline > *:active { + color: var(--section-timeline-button-color-active); +} + +main > nav#timeline > *.selected { + color: var(--section-timeline-button-selected-color); +} + +main > nav#timeline > *.selected:is(:hover, :focus) { + color: var(--section-timeline-button-selected-color-hover); +} + +main > nav#timeline > *.selected:active { + color: var(--section-timeline-button-selected-color-active); +} + +main > nav#menu { + grid-row: 2 / 3; + border-radius: 0.75rem; + background-color: var(--section-menu-background-color); + -webkit-box-shadow: 0px 0px 12px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0px 0px 12px 2px rgba(0, 0, 0, 0.1); + box-shadow: 0px 0px 12px 2px rgba(0, 0, 0, 0.1); +} + +main > nav#menu > * { + height: 100%; + padding: 0 1rem; + color: var(--section-menu-button-color); +} + +main > nav#menu > *:first-child { + margin-right: auto; +} + +main > nav#menu > *.selected:is(:hover, :focus), +main > nav#menu > *:is(:hover, :focus) { + background-color: var(--section-menu-button-background-color-hover); +} + +main > nav#menu > *.selected { + background-color: var(--section-menu-button-background-color-selected); +} + +main > nav#menu > *.selected:active, +main > nav#menu > *:active { + background-color: var(--section-menu-button-background-color-active); +} + +main > section { + z-index: 200; + grid-row: 3 / 4; + padding: 1rem; + display: flex; + flex-direction: column; + gap: var(--gap); + border-radius: 0.75rem; + background-color: var(--section-background-color); + -webkit-box-shadow: 0px 3px 12px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0px 3px 12px 2px rgba(0, 0, 0, 0.1); + box-shadow: 0px 3px 12px 2px rgba(0, 0, 0, 0.1); +} + +main > section > h1 { + margin: 0.5rem 1rem 0.5rem 1rem; + font-size: 1.2rem; +} + +main > section > h1.row { + align-items: center; + gap: var(--gap); +} + +main > section > h1 > a { + min-width: 1rem; + height: 100%; + padding: 0.2rem; + display: inline-flex; + justify-content: start; + align-items: center; +} + +main > section > h1 > a:first-of-type { + margin-left: auto; +} + +main > section > div.row { + padding: 0rem 1rem; + justify-content: space-between; +} + +main > section .block { + background: var(--section-block-background-color); +} + +main > section .block.text { + padding: 0.6rem 0.8rem; + display: inline-flex; + flex-flow: row wrap; +} + +main > section .block.text > a.continue { + margin-left: auto; + align-self: flex-end; +} + +main > section p.block { + margin: unset; +} + +main > section ul.block { + min-width: 200px; + height: fit-content; +} + +main > section > div.footer > small.phrase { + flex-grow: 1; + text-align: center; +} + +main > section > div.footer > small#views { + position: relative; + margin-left: auto; + align-items: center; +} + +main > section > div.footer > small#views > * { + z-index: 500; +} + +main > section > div.footer > small#views > div.visibility { + z-index: 300; + position: absolute; + right: calc(-100px + 10.5px + 0rem); + top: calc(-100px + 0.5rem); + width: 200px; + height: 200px; + /* pointer-events: none; */ +} + +main > section#total > div#diagram.column { + margin-top: auto; + width: 100%; + height: fit-content; + display: flex; + flex-direction: column; + gap: var(--gap); +} + +main > section#total > div#diagram.column:has(svg.chart) { + padding-left: 1rem; +} + +main > section#total > div#diagram.column > svg.pie { + height: min(30%, 300px); +} + +main > section#total > div#diagram.column > small.formula { + margin: 0 1.4rem; + padding-right: 4rem; + font-size: 0.8rem; + color: var(--diagram-legend-text-color); +} + +main > section#total > div#diagram.column > svg.chart { + margin: -2.5rem -1rem -3rem; + width: calc(100% + 1rem); +} + +main > section#total > div#diagram.column > div.background { + width: 100%; + height: 170px; +} diff --git a/svoboda/works/system/public/css/themes/default/system.css b/svoboda/works/system/public/css/themes/default/system.css new file mode 100755 index 0000000..80a3a0a --- /dev/null +++ b/svoboda/works/system/public/css/themes/default/system.css @@ -0,0 +1,117 @@ +@charset "UTF-8"; + +:root { + --gap: min(12px, 1rem); + transition: 0.1s ease-out; +} + +* { + /* font-family: , system-ui, sans-serif; */ + font-family: "dejavu"; + text-decoration: none; + outline: none; + border: none; +} + +/* Selection */ + +::selection { + border-radius: 2px; + color: var(--text-selected-color); + background: var(--text-selected-background-color); +} + +::-moz-selection { + border-radius: 2px; + color: var(--text-selected-color); + background: var(--text-selected-background-color); +} + +.unselectable { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +/* Buttons and links */ + +a, +*[type="button"] { + cursor: pointer; +} + +a, +a > * { + color: var(--link-color); +} + +a:is(:hover, :focus), +a:is(:hover, :focus) > * { + color: var(--link-color-hover); +} + +a:active, +a:active > * { + color: var(--link-color-active); +} + +/* Wrappers */ + +:is(.row, .column) { + gap: var(--gap); +} + +.row:not(.column) { + display: flex; + flex-direction: row; +} + +.column:not(.row) { + display: flex; + flex-direction: column; +} + +/* Macroses */ + +.rounded { + border-radius: 0.75rem; +} + +.grow { + flex-grow: 1; +} + +/* Lists */ + +:is(ol, ul) { + margin: unset; + padding: 0.6rem 0.8rem; + gap: 0.3rem; +} + +:is(ol, ul):is(.column, .row) { + gap: 0.3rem; +} + +li { + display: inline-flex; +} + +li > span.name:first-child:after { + content: ":"; +} + +li > span.value:last-child { + margin-left: auto; +} + +li > span.value:last-child:before { + content: var(--old); + margin-right: 0.4rem; + font-size: 0.8rem; + text-decoration: line-through; + color: var(--text-notice-color); +} diff --git a/svoboda/works/system/public/css/themes/default/window.css b/svoboda/works/system/public/css/themes/default/window.css new file mode 100755 index 0000000..4a1bd67 --- /dev/null +++ b/svoboda/works/system/public/css/themes/default/window.css @@ -0,0 +1,9 @@ +@charset "UTF-8"; + +section#window { + position: fixed; + left: 0; + top: 0; + width: 100vw; + height: 100vh; +} diff --git a/author/project/system/public/index.php b/svoboda/works/system/public/index.php similarity index 79% rename from author/project/system/public/index.php rename to svoboda/works/system/public/index.php index ba14208..26c3fb2 100755 --- a/author/project/system/public/index.php +++ b/svoboda/works/system/public/index.php @@ -17,14 +17,11 @@ ini_set('display_startup_errors', 1); */ define('PUBLIC', __DIR__); // Initializing path to the project root directory -define('ROOT', INDEX . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR); +define('ROOT', PUBLIC . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR); // Initializing path to the directory of views define('VIEWS', realpath('..' . DIRECTORY_SEPARATOR . 'views')); -// Initializing path to the directory of storage -define('STORAGE', realpath('..' . DIRECTORY_SEPARATOR . 'storage')); - // Initializing path to the directory of settings define('SETTINGS', realpath('..' . DIRECTORY_SEPARATOR . 'settings')); diff --git a/author/project/system/settings/.gitignore b/svoboda/works/system/settings/.gitignore similarity index 100% rename from author/project/system/settings/.gitignore rename to svoboda/works/system/settings/.gitignore diff --git a/author/project/system/settings/arangodb.php.sample b/svoboda/works/system/settings/arangodb.php.sample similarity index 100% rename from author/project/system/settings/arangodb.php.sample rename to svoboda/works/system/settings/arangodb.php.sample diff --git a/author/project/system/views/templater.php b/svoboda/works/system/views/templater.php similarity index 100% rename from author/project/system/views/templater.php rename to svoboda/works/system/views/templater.php diff --git a/author/project/system/views/themes/default/core.html b/svoboda/works/system/views/themes/default/core.html similarity index 100% rename from author/project/system/views/themes/default/core.html rename to svoboda/works/system/views/themes/default/core.html diff --git a/author/project/system/views/themes/default/footer.html b/svoboda/works/system/views/themes/default/footer.html similarity index 100% rename from author/project/system/views/themes/default/footer.html rename to svoboda/works/system/views/themes/default/footer.html diff --git a/author/project/system/views/themes/default/head.html b/svoboda/works/system/views/themes/default/head.html similarity index 100% rename from author/project/system/views/themes/default/head.html rename to svoboda/works/system/views/themes/default/head.html diff --git a/author/project/system/views/themes/default/header.html b/svoboda/works/system/views/themes/default/header.html similarity index 100% rename from author/project/system/views/themes/default/header.html rename to svoboda/works/system/views/themes/default/header.html diff --git a/author/project/system/views/themes/default/index.html b/svoboda/works/system/views/themes/default/index.html similarity index 100% rename from author/project/system/views/themes/default/index.html rename to svoboda/works/system/views/themes/default/index.html diff --git a/author/project/system/views/themes/default/js.html b/svoboda/works/system/views/themes/default/js.html similarity index 100% rename from author/project/system/views/themes/default/js.html rename to svoboda/works/system/views/themes/default/js.html