Initial commit.

This commit is contained in:
rainbownapkin 2024-11-15 17:44:03 -05:00
commit f0c91b4e55
78 changed files with 5054 additions and 0 deletions

47
www/css/adminPanel.css Normal file
View file

@ -0,0 +1,47 @@
/*Canopy - The next generation of stoner streaming software
Copyright (C) 2024 Rainbownapkin and the TTN Community
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.*/
#admin-channel-list-div{
display: flex;
flex-direction: column;
margin: 0 30%;
}
#admin-channel-list-table{
border-spacing: 0px;
}
td.admin-channel-list-entry{
padding: 0 1em;
}
.admin-channel-list-entry-title{
text-align: center;
}
.admin-channel-list-entry-img-row{
width: 1.5em;
}
img.admin-channel-list-entry-item{
height: 2em;
}
.admin-channel-list-entry-name-row{
width: 15%;
}

213
www/css/channel.css Normal file
View file

@ -0,0 +1,213 @@
/*Canopy - The next generation of stoner streaming software
Copyright (C) 2024 Rainbownapkin and the TTN Community
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.*/
div#channel-flexbox{
flex: 1;
display: flex;
flex-direction: row;
min-height: 0;
}
div.panel-head-div{
height: 1.2em;
display: flex;
}
.panel-head-element{
margin: 0 0.2em 0 0.2em;
}
i.panel-head-element{
height: 1.2em;
cursor: pointer;
}
span.panel-head-spacer-span{
flex: 1;
}
div#media-panel-div{
display: flex;
flex-direction: column;
flex: 1;
min-width: 0;
position: relative;
}
#media-panel-head-div{
position: absolute;
height: 3em;
right: 0;
left: 0;
top: 0;
}
video#media-panel-video{
flex: 1;
min-height: 0;
}
#media-panel-sync-button{
height: 1.5em;
}
#media-panel-title-paragraph{
font-size: 1.2em;
}
div#chat-panel-div{
position: relative;
display: flex;
flex-direction: column;
height:100%;
}
div#chat-panel-main-div{
display: flex;
flex: 1;
height: 1%;
}
.drag-handle{
position: absolute;
cursor: ew-resize;
top: 0;
bottom: 0;
left: 0;
width: 0.4em;
}
#chat-panel-multipanel-div{
height: 100%;
}
#chat-panel-buffer-div{
height: 100%;
flex: 1;
overflow: scroll;
}
#chat-panel-users-div{
position: relative;
height: 100%;
width: 30%;
}
#chat-area{
height: 100%;
flex: 1;
display: flex;
flex-direction: column;
}
div#chat-panel-control-div{
height: 2em;
display: flex;
flex-direction: row;
margin: 0.5em;
}
i.chat-panel-control{
height: 1em;
margin: auto;
margin-left: 0.5em;
cursor: pointer;
}
#chat-panel-settings-icon{
margin-left: 1em;
}
#chat-panel-prompt{
margin-left: 0.5em;
width: 100%;
}
p#chat-panel-high-level-paragraph{
margin: auto;
margin-left: 0;
}
p.panel-head-element{
font-size: 0.9em;
}
#chat-panel-flair-select{
margin-left: 0.5em;
}
input#chat-panel-prompt{
flex: 1;
}
#chat-panel-send-button{
margin: auto;
margin-right: 1em;
margin-left: 0.5em;
height: 1.5em;
}
.chat-entry{
display: flex;
}
.chat-entry-username{
margin: 0.2em;
}
.chat-entry-body{
margin: 0.2em;
}
.chat-entry-high-level{
margin: 0.2em;
z-index: 2;
background-image: url("/img/sweet_leaf_simple.png");
background-size: 1.3em;
background-repeat: no-repeat;
background-position-x: center;
background-position-y: top;
width: 1.5em;
text-align: center;
}
.chat-entry-high-level-img{
position: absolute;
height: 1.7em;
}
.user-entry{
margin: 0.2em;
font-size: 1em;
}
#media-panel-aspect-lock-icon{
display: none;
}
#chat-panel-user-count{
white-space: nowrap;
user-select: none;
cursor:pointer;
}
#media-panel-show-chat-icon{
display: none;
}
#chat-panel-show-video-icon{
display: none;
}

51
www/css/global.css Normal file
View file

@ -0,0 +1,51 @@
/*Canopy - The next generation of stoner streaming software
Copyright (C) 2024 Rainbownapkin and the TTN Community
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.*/
html{
height: 100%;
}
body{
height: 100%;
margin: 0;
display: flex;
flex-direction: column;
}
#navbar{
display: flex;
padding: 0.5em;
justify-content: space-between;
}
.navbar-item{
display: inline;
padding: 0;
margin: 0;
}
#instance-title{
font-size: 1.2em;
}
p.navbar-item, input.navbar-item{
font-size: 0.8em;
}
.navbar-item input{
padding: 0.2em;
}

60
www/css/index.css Normal file
View file

@ -0,0 +1,60 @@
/*Canopy - The next generation of stoner streaming software
Copyright (C) 2024 Rainbownapkin and the TTN Community
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.*/
@media (orientation: landscape){
#channel-guide-div{
max-width: 100vh;
}
}
@media (orientation: portrait){
#channel-guide-div{
max-width: 80vw;
}
}
#channel-guide-div{
display: grid;
grid-template-columns: repeat(auto-fit, minmax(11em, 1fr));
margin: 0 auto 0 auto;
}
div.channel-guide-entry{
overflow: hidden;
width: 10em;
margin: 0.5em;
}
.channel-guide-entry{
margin: 0.5em auto 0.5em auto;
padding: 0.2em;
display: flex;
flex-direction: column;
}
.channel-guide-entry-item{
margin: 0.1em auto 0.1em auto;
}
span.channel-guide-entry-item{
overflow: scroll;
height: 2em;
}
p.channel-guide-entry{
font-size: 0.8em;
margin-left: 0;
}

25
www/css/newChannel.css Normal file
View file

@ -0,0 +1,25 @@
/*Canopy - The next generation of stoner streaming software
Copyright (C) 2024 Rainbownapkin and the TTN Community
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.*/
form{
display: flex;
flex-direction: column;
margin: 5% 17%;
}
input{
margin: 0 0 2em;
}

43
www/css/profile.css Normal file
View file

@ -0,0 +1,43 @@
/*Canopy - The next generation of stoner streaming software
Copyright (C) 2024 Rainbownapkin and the TTN Community
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.*/
p.profile-item-edit{
display: inline;
}
span.profile-item{
display: block;
margin-top: 1em;
margin-bottom: 1em;
}
p.profile-item-label{
display: inline;
}
span.account-settings{
display: block;
margin-top: 1em;
margin-bottom: 1em;
}
input.account-settings-password-reset{
display: block;
}
a#account-settings-delete-link{
font-weight: bold;
}

24
www/css/register.css Normal file
View file

@ -0,0 +1,24 @@
/*Canopy - The next generation of stoner streaming software
Copyright (C) 2024 Rainbownapkin and the TTN Community
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.*/
form{
display: flex;
flex-direction: column;
margin: 5% 17%;
}
input{
margin: 0 0 2em;
}

View file

@ -0,0 +1,245 @@
/*Canopy - The next generation of stoner streaming software
Copyright (C) 2024 Rainbownapkin and the TTN Community
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.*/
:root{
--main-font: "open-sans", sans-serif;
--bg0: rgb(158, 158, 158);
--bg1: rgb(70, 70, 70);
--bg2: rgb(220, 220, 220);
--bg1-alt0: rgb(30, 30, 30);
--bg2-alt0: rgb(200, 200, 200);
--bg2-alt1: rgb(180, 180, 180);
--accent0: rgb(48, 47, 47);
--accent0-alt0: rgb(34, 34, 34);
--accent0-warning: firebrick;
--accent1: rgb(245, 245, 245);
--accent1-alt0: rgb(185, 185, 185);
--accent2: var(--accent0-alt0);
--focus0: rgb(51, 153, 51);
--userlist-color0:rgb(87, 145, 97);
--userlist-color1:rgb(143, 46, 26);
--userlist-color2:rgb(51, 101, 161);
--userlist-color3:rgb(110, 94, 13);
--userlist-color4:rgb(129, 43, 43);
--userlist-color5:rgb(150, 64, 6);
--userlist-color6:rgb(111, 61, 204);
--media-header-gradient: linear-gradient(180deg, var(--bg1-alt0) 0%, #FFFFFF00 76%);
}
body{
background-color: var(--bg0);
font-family: var(--main-font);
color: var(--accent0);
}
a{
text-decoration: none;
color: var(--accent0);
}
select{
background-color: var(--bg2);
border-radius: 0.5em;
border: none;
}
button{
border-radius: 0.5em;
}
a:hover{
color: var(--accent0-alt0);
}
button{
background-color: var(--bg0);
color: var(--accent0);
border: none;
}
#navbar{
background-color: var(--bg1);
}
.navbar-item{
color: var(--accent1);
border: hidden;
}
a:hover.navbar-item{
color: var(--accent1-alt0);
}
.navbar-item input{
background-color: var(--bg1-alt0);
}
.channel-guide-entry{
background-color: var(--bg1);
color: var(--accent1);
}
div.channel-guide-entry{
border-radius: 0.3em;
box-shadow: 0.2em 0.2em 0.1em var(--bg1-alt0) inset;
}
a.channel-guide-entry-item{
color: var(--accent1);
}
a:hover.channel-guide-entry-item{
color: var(--accent1-alt0);
}
span.channel-guide-entry-item{
background-color: var(--bg1-alt0);
box-shadow: 0.2em 0.2em 0.1em black inset;
border-radius: 0.3em;
margin: 0 0.1em 0 0.1em;
}
p.channel-guide-entry-item{
background-color: var(--bg1-alt0);
}
a#account-settings-delete-link{
color: var(--accent0-warning);
}
#channel-delete{
color: var(--accent0-warning);
}
#admin-channel-list-table{
background-color: var(--bg1);
color: var(--accent1);
}
tr.admin-channel-list-entry{
box-shadow: var(--accent1) 0px 1em 1px -1em, var(--accent1) 0px -1em 1px -1em;
}
td.admin-channel-list-entry-name-row{
box-shadow: var(--accent1) 1em 0px 1px -1em, var(--accent1) -1em 0px 1px -1em;
}
a.admin-channel-list-entry-item{
color: var(--accent1);
}
a:hover.admin-channel-list-entry-item{
color: var(--accent1-alt0);
}
#media-panel-div{
background-color: black;
}
#chat-panel-buffer-div{
background-color: var(--bg2);
}
#chat-panel-control-div{
background-color: white;
}
#chat-panel-control-div:focus-within{
box-shadow: 2px 2px 3px var(--focus0), -2px 2px 3px var(--focus0), 2px -2px 3px var(--focus0), -2px -2px 3px var(--focus0);
}
#chat-area{
background-color: var(--bg2);
}
div#chat-panel-control-div{
border-radius: 1em;
}
#chat-panel-prompt{
border: none;
}
#chat-panel-prompt:focus{
border: none;
outline: none;
}
.chat-entry{
background-color: var(--bg2);
border-bottom: 1px solid var(--bg2-alt1);
font-size: 0.8em;
}
.userlist-color0{/*green0*/
color: var(--userlist-color0);
text-shadow: none;
}
.userlist-color1{/*red0*/
color: var(--userlist-color1);
text-shadow: none;
}
.userlist-color2{/*blue0*/
color: var(--userlist-color2);
text-shadow: none;
}
.userlist-color3{/*tan0*/
color: var(--userlist-color3);
text-shadow: none;
}
.userlist-color4{/*pink0*/
color: var(--userlist-color4);
text-shadow: none;
}
.userlist-color5{/*orange*/
color: var(--userlist-color5);
text-shadow: none;
}
.userlist-color6{/*violet*/
color: var(--userlist-color6);
text-shadow: none;
}
.chat-entry-high-level{
text-shadow: 1px 1px 1px white, -1px -1px 1px white, 1px 1px 1px white, -1px 1px 1px white, 1px -1px 1px white;
}
#media-panel-head-div{
background: rgb(2,0,36);
background: var(--media-header-gradient);
color: var(--accent1-alt0);
}
#chat-panel-send-button{
background-color: var(--focus0);
color: white;
}
select.panel-head-element{
height: 1.2em;
margin: auto;
}

View file

@ -0,0 +1,190 @@
/*Canopy - The next generation of stoner streaming software
Copyright (C) 2024 Rainbownapkin and the TTN Community
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.*/
:root{
--main-font: "open-sans", sans-serif;
--bg0: rgb(158, 158, 158);
--bg1: rgb(70, 70, 70);
--bg2: rgb(220, 220, 220);
--bg1-alt0: rgb(30, 30, 30);
--bg2-alt0: rgb(200, 200, 200);
--bg2-alt1: rgb(180, 180, 180);
--accent0: rgb(48, 47, 47);
--accent0-alt0: rgb(34, 34, 34);
--accent0-warning: firebrick;
--accent1: rgb(245, 245, 245);
--accent1-alt0: rgb(185, 185, 185);
--accent2: var(--accent0-alt0);
--userlist-color0:rgb(122, 199, 135);
--userlist-color1:rgb(242, 104, 77);
--userlist-color2:rgb(77, 150, 239);
--userlist-color3:rgb(247, 241, 212);
--userlist-color4:rgb(255, 173, 173);
--userlist-color5:rgb(254, 151, 82);
--userlist-color6:rgb(209, 167, 246);
}
body{
background-color: var(--bg0);
font-family: var(--main-font);
color: var(--accent0);
}
a{
text-decoration: none;
color: var(--accent0);
}
a:hover{
color: var(--accent0-alt0);
}
#navbar{
background-color: var(--bg1);
}
.navbar-item{
color: var(--accent1);
border: hidden;
}
a:hover.navbar-item{
color: var(--accent1-alt0);
}
.navbar-item input{
background-color: var(--bg1-alt0);
}
.channel-guide-entry{
background-color: var(--bg1);
color: var(--accent1);
}
div.channel-guide-entry{
border-radius: 0.3em;
box-shadow: 0.2em 0.2em 0.1em var(--bg1-alt0) inset;
}
a.channel-guide-entry-item{
color: var(--accent1);
}
a:hover.channel-guide-entry-item{
color: var(--accent1-alt0);
}
span.channel-guide-entry-item{
background-color: var(--bg1-alt0);
box-shadow: 0.2em 0.2em 0.1em black inset;
border-radius: 0.3em;
margin: 0 0.1em 0 0.1em;
}
p.channel-guide-entry-item{
background-color: var(--bg1-alt0);
}
a#account-settings-delete-link{
color: var(--accent0-warning);
}
#channel-delete{
color: var(--accent0-warning);
}
#admin-channel-list-table{
background-color: var(--bg1);
color: var(--accent1);
}
tr.admin-channel-list-entry{
box-shadow: var(--accent1) 0px 1em 1px -1em, var(--accent1) 0px -1em 1px -1em;
}
td.admin-channel-list-entry-name-row{
box-shadow: var(--accent1) 1em 0px 1px -1em, var(--accent1) -1em 0px 1px -1em;
}
a.admin-channel-list-entry-item{
color: var(--accent1);
}
a:hover.admin-channel-list-entry-item{
color: var(--accent1-alt0);
}
#media-panel-div{
background-color: black;
}
#chat-panel-buffer-div{
background-color: var(--bg2);
}
.chat-entry{
display: flex;
background-color: var(--bg2);
border-bottom: 1px solid var(--bg2-alt1);
font-size: 0.8em;
}
.chat-entry-username{
margin: 0.2em;
}
.chat-entry-body{
margin: 0.2em;
}
.userlist-color0{/*green0*/
color: var(--userlist-color0);
text-shadow: none;
}
.userlist-color1{/*red0*/
color: var(--userlist-color1);
text-shadow: none;
}
.userlist-color2{/*blue0*/
color: var(--userlist-color2);
text-shadow: none;
}
.userlist-color3{/*tan0*/
color: var(--userlist-color3);
text-shadow: none;
}
.userlist-color4{/*pink0*/
color: var(--userlist-color4);
text-shadow: none;
}
.userlist-color5{/*orange*/
color: var(--userlist-color5);
text-shadow: none;
}
.userlist-color6{/*violet*/
color: var(--userlist-color6);
text-shadow: none;
}