소스 검색

work on sets and questions pages

mahyar 5 년 전
부모
커밋
bf66785991

+ 4 - 0
.gitignore

@@ -104,3 +104,7 @@ dist
 .tern-port
 
 *.lock
+
+build/
+
+build.zip

+ 0 - 3
src/assets/icons/arrow.svg

@@ -1,3 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="13.804" height="8.524" viewBox="0 0 13.804 8.524">
-  <path id="Path_139" data-name="Path 139" d="M8.59,18.182l5.268-5.28L8.59,7.622,10.212,6l6.9,6.9-6.9,6.9Z" transform="translate(19.804 -8.59) rotate(90)" fill="#FFF"/>
-</svg>

+ 0 - 14
src/assets/icons/arrow2.svg

@@ -1,14 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="20" height="20" viewBox="0 0 20 20">
-  <defs>
-    <linearGradient id="linear-gradient" x1="0.5" x2="0.5" y2="1" gradientUnits="objectBoundingBox">
-      <stop offset="0" stop-color="#4adede"/>
-      <stop offset="1" stop-color="#24b2e9"/>
-    </linearGradient>
-    <linearGradient id="linear-gradient-2" x1="0" y1="0.5" x2="1.132" y2="0.5" xlink:href="#linear-gradient"/>
-  </defs>
-  <g id="arrow" transform="translate(-371 -603)">
-    <circle id="Ellipse_77" data-name="Ellipse 77" cx="10" cy="10" r="10" transform="translate(371 603)" fill="url(#linear-gradient)"/>
-    <circle id="Ellipse_78" data-name="Ellipse 78" cx="9" cy="9" r="9" transform="translate(372 604)" fill="#fff"/>
-    <path id="Path_178" data-name="Path 178" d="M0,1.332,4.327,5.668,0,10l1.332,1.332L7,5.668,1.332,0Z" transform="translate(386.336 610) rotate(90)" opacity="0.9" fill="url(#linear-gradient-2)"/>
-  </g>
-</svg>

+ 0 - 10
src/assets/icons/eye.svg

@@ -1,10 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="27.113" height="18.486" viewBox="0 0 27.113 18.486">
-  <g id="eye" transform="translate(0 -74.667)">
-    <g id="Group_388" data-name="Group 388" transform="translate(0 74.667)">
-      <g id="Group_387" data-name="Group 387" transform="translate(0 0)">
-        <path id="Path_145" data-name="Path 145" d="M174.364,170.667a3.7,3.7,0,1,0,3.7,3.7A3.7,3.7,0,0,0,174.364,170.667Z" transform="translate(-160.808 -165.121)" fill="#3b5286"/>
-        <path id="Path_146" data-name="Path 146" d="M13.556,74.667A14.575,14.575,0,0,0,0,83.91a14.563,14.563,0,0,0,27.113,0A14.569,14.569,0,0,0,13.556,74.667Zm0,15.4a6.162,6.162,0,1,1,6.162-6.162A6.164,6.164,0,0,1,13.556,90.072Z" transform="translate(0 -74.667)" fill="#3b5286"/>
-      </g>
-    </g>
-  </g>
-</svg>

+ 0 - 13
src/assets/icons/filter.svg

@@ -1,13 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16.331" height="16.332" viewBox="0 0 16.331 16.332">
-  <defs>
-    <linearGradient id="linear-gradient" x1="0.5" x2="0.5" y2="1" gradientUnits="objectBoundingBox">
-      <stop offset="0" stop-color="#4adede"/>
-      <stop offset="1" stop-color="#24b2e9"/>
-    </linearGradient>
-  </defs>
-  <g id="filter" transform="translate(-0.004)">
-    <g id="Group_434" data-name="Group 434" transform="translate(0.004)">
-      <path id="Path_177" data-name="Path 177" d="M15.752,0H.587A.583.583,0,0,0,0,.583V3.5A.583.583,0,0,0,.2,3.933l5.64,5.076v6.74a.583.583,0,0,0,.844.522l3.5-1.75A.583.583,0,0,0,10.5,14V9.008l5.64-5.074a.583.583,0,0,0,.193-.435V.583A.583.583,0,0,0,15.752,0Zm-.583,3.24L9.529,8.314a.583.583,0,0,0-.193.435v4.889L7,14.8V8.749a.583.583,0,0,0-.193-.433L1.171,3.24V1.167h14Z" transform="translate(-0.004)" fill="url(#linear-gradient)"/>
-    </g>
-  </g>
-</svg>

+ 0 - 7
src/assets/icons/flash.svg

@@ -1,7 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16.884" height="22.381" viewBox="0 0 16.884 22.381">
-  <g id="flash" transform="translate(-171.396 -94.246)">
-    <g id="Group_439" data-name="Group 439" transform="translate(171.396 94.246)">
-      <path id="Path_195" data-name="Path 195" d="M79.762,7.073H72.093L76.169,0H66.95L62.878,11.637h6.546l-2.9,10.745Z" transform="translate(-62.878)" fill="#1aa7ec"/>
-    </g>
-  </g>
-</svg>

+ 0 - 3
src/assets/icons/heart.svg

@@ -1,3 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="22.845" height="20.75" viewBox="0 0 22.845 20.75">
-  <path id="heart" d="M11.423,20.75c1.5-.827,11.423-6.6,11.423-14.426A6.29,6.29,0,0,0,16.93,0a5.927,5.927,0,0,0-5.152,3.015.425.425,0,0,1-.711,0A5.927,5.927,0,0,0,5.916,0,6.29,6.29,0,0,0,0,6.323c0,7.823,9.924,13.6,11.423,14.426Zm0,0" transform="translate(0)" fill="#ff3e3e"/>
-</svg>

+ 0 - 19
src/assets/icons/pencil-reverse.svg

@@ -1,19 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="15.17" height="15.17" viewBox="0 0 15.17 15.17">
-  <g id="pencil" transform="translate(0 0)">
-    <g id="Group_429" data-name="Group 429" transform="translate(0 10.467)">
-      <g id="Group_428" data-name="Group 428">
-        <path id="Path_175" data-name="Path 175" d="M1.517,353.28,0,357.983l4.7-1.517Z" transform="translate(0 -353.28)" fill="#24B2E9"/>
-      </g>
-    </g>
-    <g id="Group_431" data-name="Group 431" transform="translate(2.582 1.976)">
-      <g id="Group_430" data-name="Group 430" transform="translate(0 0)">
-        <rect id="Rectangle_86" data-name="Rectangle 86" width="10.467" height="4.551" transform="translate(0 7.401) rotate(-45)" fill="#24B2E9"/>
-      </g>
-    </g>
-    <g id="Group_433" data-name="Group 433" transform="translate(11.074 0)">
-      <g id="Group_432" data-name="Group 432">
-        <path id="Path_176" data-name="Path 176" d="M377.628,2.351,375.5.228a.733.733,0,0,0-1.062,0L373.76.91,376.946,4.1l.683-.683A.733.733,0,0,0,377.628,2.351Z" transform="translate(-373.76)" fill="#24B2E9"/>
-      </g>
-    </g>
-  </g>
-</svg>

+ 0 - 19
src/assets/icons/pencil.svg

@@ -1,19 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="15.17" height="15.17" viewBox="0 0 15.17 15.17">
-  <g id="pencil" transform="translate(0 0)">
-    <g id="Group_429" data-name="Group 429" transform="translate(0 10.467)">
-      <g id="Group_428" data-name="Group 428">
-        <path id="Path_175" data-name="Path 175" d="M1.517,353.28,0,357.983l4.7-1.517Z" transform="translate(0 -353.28)" fill="#fff"/>
-      </g>
-    </g>
-    <g id="Group_431" data-name="Group 431" transform="translate(2.582 1.976)">
-      <g id="Group_430" data-name="Group 430" transform="translate(0 0)">
-        <rect id="Rectangle_86" data-name="Rectangle 86" width="10.467" height="4.551" transform="translate(0 7.401) rotate(-45)" fill="#fff"/>
-      </g>
-    </g>
-    <g id="Group_433" data-name="Group 433" transform="translate(11.074 0)">
-      <g id="Group_432" data-name="Group 432">
-        <path id="Path_176" data-name="Path 176" d="M377.628,2.351,375.5.228a.733.733,0,0,0-1.062,0L373.76.91,376.946,4.1l.683-.683A.733.733,0,0,0,377.628,2.351Z" transform="translate(-373.76)" fill="#fff"/>
-      </g>
-    </g>
-  </g>
-</svg>

+ 0 - 14
src/assets/icons/pic/Group 1007.svg

@@ -1,14 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="500" height="700" viewBox="0 0 500 700">
-  <g id="Group_1007" data-name="Group 1007" transform="translate(4099 -3820)">
-    <rect id="pic" width="500" height="700" transform="translate(-4099 3820)" fill="#ebebeb"/>
-    <g id="image" transform="translate(-3964 4055)">
-      <g id="Group_1006" data-name="Group 1006">
-        <g id="Group_1005" data-name="Group 1005">
-          <path id="Path_200" data-name="Path 200" d="M208.63,0H21.582A21.582,21.582,0,0,0,0,21.582V208.63a21.582,21.582,0,0,0,21.582,21.582H208.63a21.582,21.582,0,0,0,21.582-21.582V21.582A21.582,21.582,0,0,0,208.63,0Zm7.194,208.63a7.194,7.194,0,0,1-7.194,7.194H21.582a7.194,7.194,0,0,1-7.194-7.194V21.582a7.194,7.194,0,0,1,7.194-7.194H208.63a7.194,7.194,0,0,1,7.194,7.194Z" fill="#abb3c6"/>
-          <path id="Path_201" data-name="Path 201" d="M200.338,256.556a7.194,7.194,0,0,0-10.144,0L173.647,273.1l-30.863-30.863a7.194,7.194,0,0,0-10.144,0L82.282,292.6a7.194,7.194,0,0,0,5.036,12.23H231.2a7.194,7.194,0,0,0,5.108-12.3Z" transform="translate(-44.153 -132.169)" fill="#abb3c6"/>
-          <circle id="Ellipse_84" data-name="Ellipse 84" cx="22.101" cy="22.101" r="22.101" transform="translate(115.106 56.17)" fill="#abb3c6"/>
-        </g>
-      </g>
-    </g>
-  </g>
-</svg>

+ 0 - 14
src/assets/icons/pic/Group 1011.svg

@@ -1,14 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="300" height="210.448" viewBox="0 0 300 210.448">
-  <g id="Group_1011" data-name="Group 1011" transform="translate(4099 -3877)">
-    <path id="pic" d="M10,0H290a10,10,0,0,1,10,10V210.448a0,0,0,0,1,0,0H0a0,0,0,0,1,0,0V10A10,10,0,0,1,10,0Z" transform="translate(-4099 3877)" fill="#ebebeb"/>
-    <g id="image" transform="translate(-3987.99 3943.236)" opacity="0.36">
-      <g id="Group_1006" data-name="Group 1006">
-        <g id="Group_1005" data-name="Group 1005">
-          <path id="Path_200" data-name="Path 200" d="M70.8,0H7.324A7.324,7.324,0,0,0,0,7.324V70.8a7.324,7.324,0,0,0,7.324,7.324H70.8A7.324,7.324,0,0,0,78.123,70.8V7.324A7.324,7.324,0,0,0,70.8,0ZM73.24,70.8A2.441,2.441,0,0,1,70.8,73.24H7.324A2.441,2.441,0,0,1,4.883,70.8V7.324A2.441,2.441,0,0,1,7.324,4.883H70.8A2.441,2.441,0,0,1,73.24,7.324Z" fill="#3b5286"/>
-          <path id="Path_201" data-name="Path 201" d="M120.985,245.715a2.441,2.441,0,0,0-3.442,0l-5.615,5.615-10.473-10.473a2.441,2.441,0,0,0-3.442,0L80.923,257.946a2.441,2.441,0,0,0,1.709,4.15h48.827a2.441,2.441,0,0,0,1.733-4.175Z" transform="translate(-67.984 -203.505)" fill="#3b5286"/>
-          <circle id="Ellipse_84" data-name="Ellipse 84" cx="7.5" cy="7.5" r="7.5" transform="translate(39.061 19.061)" fill="#3b5286"/>
-        </g>
-      </g>
-    </g>
-  </g>
-</svg>

+ 0 - 15
src/assets/icons/pic/IGTV-H.svg

@@ -1,15 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="500" height="700" viewBox="0 0 500 700">
-  <g id="Group_1266" data-name="Group 1266" transform="translate(4099 -3820)">
-    <rect id="pic" width="500" height="700" transform="translate(-4099 3820)" fill="#ebebeb"/>
-    <g id="Group_1268" data-name="Group 1268" transform="translate(0 20.517)">
-      <path id="movie-player-play-button" d="M92.938,0a92.938,92.938,0,1,0,92.938,92.938A92.933,92.933,0,0,0,92.938,0Zm44.471,100.4L81.972,138.537a9.057,9.057,0,0,1-14.195-7.461V54.8a9.057,9.057,0,0,1,14.195-7.461l55.437,38.137a9.057,9.057,0,0,1,0,14.923Z" transform="translate(-3942 4015.483)" fill="#abb3c6"/>
-      <g id="Group_1267" data-name="Group 1267" transform="translate(2190 1203)">
-        <g id="icons8-igtv" transform="translate(-6095 3072.131)">
-          <path id="Path_1931" data-name="Path 1931" d="M20.919,3,14.959,8.959,9,3" transform="translate(0.932 -3)" fill="none" stroke="#abb3c6" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
-          <path id="Path_1932" data-name="Path 1932" d="M35.783,14.932V26.851a9.943,9.943,0,0,1-9.932,9.932H13.932A9.943,9.943,0,0,1,4,26.851V14.932A9.943,9.943,0,0,1,13.932,5H25.851A9.943,9.943,0,0,1,35.783,14.932ZM20.374,24.8l7.946-1.986a1.986,1.986,0,0,0-.961-3.854l-5.481,1.369V18.905a1.988,1.988,0,0,0-2.469-1.927l-7.946,1.986a1.986,1.986,0,1,0,.963,3.854l5.479-1.369v1.428A1.986,1.986,0,0,0,20.374,24.8Z" transform="translate(-4 -1.027)" fill="#abb3c6"/>
-        </g>
-        <text id="IGTV" transform="translate(-5984 3103)" fill="#abb3c6" font-size="31" font-family="ArialMT, Arial"><tspan x="-72.338" y="0">IGTV</tspan></text>
-      </g>
-    </g>
-  </g>
-</svg>

+ 0 - 15
src/assets/icons/pic/IGTV.svg

@@ -1,15 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="300" height="210.448" viewBox="0 0 300 210.448">
-  <g id="IGTV" transform="translate(6202 -4137)">
-    <g id="Group_1011" data-name="Group 1011" transform="translate(-2103 260)">
-      <path id="pic" d="M10,0H290a10,10,0,0,1,10,10V210.448a0,0,0,0,1,0,0H0a0,0,0,0,1,0,0V10A10,10,0,0,1,10,0Z" transform="translate(-4099 3877)" fill="#ebebeb"/>
-      <path id="movie-player-play-button" d="M39.179,0A39.179,39.179,0,1,0,78.359,39.179,39.177,39.177,0,0,0,39.179,0ZM57.927,42.325,34.557,58.4a3.818,3.818,0,0,1-5.984-3.145V23.1a3.818,3.818,0,0,1,5.984-3.145l23.37,16.077a3.818,3.818,0,0,1,0,6.291Z" transform="translate(-3988 3943)" fill="#abb3c6"/>
-    </g>
-    <g id="Group_1189" data-name="Group 1189" transform="translate(4 1235)">
-      <g id="icons8-igtv" transform="translate(-6099 3069.131)">
-        <path id="Path_1931" data-name="Path 1931" d="M17.29,3,13.145,7.145,9,3" transform="translate(1.908)" fill="none" stroke="#abb3c6" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
-        <path id="Path_1932" data-name="Path 1932" d="M26.105,11.908V20.2A6.916,6.916,0,0,1,19.2,27.105h-8.29A6.916,6.916,0,0,1,4,20.2v-8.29A6.916,6.916,0,0,1,10.908,5H19.2A6.916,6.916,0,0,1,26.105,11.908ZM15.388,18.774l5.526-1.382a1.381,1.381,0,0,0-.669-2.68l-3.812.952v-.993a1.382,1.382,0,0,0-1.717-1.34L9.191,14.713a1.381,1.381,0,1,0,.67,2.68l3.81-.952v.993a1.381,1.381,0,0,0,1.717,1.34Z" transform="translate(0 0.763)" fill="#abb3c6"/>
-      </g>
-      <text id="IGTV-2" data-name="IGTV" transform="translate(-6017 3094)" fill="#abb3c6" font-size="22" font-family="ArialMT, Arial"><tspan x="-51.337" y="0">IGTV</tspan></text>
-    </g>
-  </g>
-</svg>

+ 0 - 15
src/assets/icons/pic/Logo.svg

@@ -1,15 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="99.952" height="99" viewBox="0 0 99.952 99">
-  <defs>
-    <linearGradient id="linear-gradient" y1="0.5" x2="1" y2="0.5" gradientUnits="objectBoundingBox">
-      <stop offset="0" stop-color="#55bec5"/>
-      <stop offset="1" stop-color="#00a3e2"/>
-    </linearGradient>
-  </defs>
-  <g id="Group_1226" data-name="Group 1226" transform="translate(-968 -53)">
-    <text id="سامانه_فیدر_" data-name="سامانه فیدر " transform="translate(970 141)" fill="#234275" font-size="18" font-family="IRANSans-Medium, IRANSans" font-weight="500"><tspan x="0" y="0">سامانه فیدر</tspan><tspan y="0"> </tspan></text>
-    <g id="Group_1225" data-name="Group 1225" transform="translate(661.876 -73.689)">
-      <path id="Path_2004" data-name="Path 2004" d="M446.249,231.384a17.354,17.354,0,0,0-9.889,3.075,7.166,7.166,0,1,1-3.664,3.393,17.435,17.435,0,1,0,13.554-6.469Z" transform="translate(-86.762 -86.766)" fill="url(#linear-gradient)"/>
-      <path id="Path_2005" data-name="Path 2005" d="M405.058,205.984,385.3,186.225a35.335,35.335,0,1,0-5.369,4.685l20.1,20.1a3.477,3.477,0,0,0,4.915,0l.111-.113A3.474,3.474,0,0,0,405.058,205.984Zm-45.57-15.69a28.241,28.241,0,1,1,28.241-28.241A28.241,28.241,0,0,1,359.488,190.294Z" transform="translate(0 0)" fill="#234275"/>
-    </g>
-  </g>
-</svg>

+ 0 - 8
src/assets/icons/pic/PLAY.svg

@@ -1,8 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="300" height="210.448" viewBox="0 0 300 210.448">
-  <g id="Group_1012" data-name="Group 1012" transform="translate(6202 -4137)">
-    <g id="Group_1011" data-name="Group 1011" transform="translate(-2103 260)">
-      <path id="pic" d="M10,0H290a10,10,0,0,1,10,10V210.448a0,0,0,0,1,0,0H0a0,0,0,0,1,0,0V10A10,10,0,0,1,10,0Z" transform="translate(-4099 3877)" fill="#ebebeb"/>
-      <path id="movie-player-play-button" d="M39.179,0A39.179,39.179,0,1,0,78.359,39.179,39.177,39.177,0,0,0,39.179,0ZM57.927,42.325,34.557,58.4a3.818,3.818,0,0,1-5.984-3.145V23.1a3.818,3.818,0,0,1,5.984-3.145l23.37,16.077a3.818,3.818,0,0,1,0,6.291Z" transform="translate(-3988 3943)" fill="#abb3c6"/>
-    </g>
-  </g>
-</svg>

+ 0 - 150
src/assets/icons/pic/PagePending.svg

@@ -1,150 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="763.314" height="444.427" viewBox="0 0 763.314 444.427">
-  <g id="Group_1224" data-name="Group 1224" transform="translate(-43.128 -54.937)">
-    <g id="Group_1204" data-name="Group 1204" transform="translate(281.627 54.937)">
-      <path id="Path_1933" data-name="Path 1933" d="M261.426,83.628c-.263,2.037-8.461-3.661-7-6.983s9.629-8.293,9.629-8.293l4.99,7.68S261.768,80.976,261.426,83.628Z" transform="translate(-254.249 -53.197)" fill="#d77953"/>
-      <g id="Group_1203" data-name="Group 1203" transform="translate(3.613)">
-        <ellipse id="Ellipse_103" data-name="Ellipse 103" cx="13.087" cy="10.278" rx="13.087" ry="10.278" transform="matrix(0.777, -0.629, 0.629, 0.777, 0, 16.642)" fill="#d77953"/>
-        <path id="Path_1934" data-name="Path 1934" d="M274.5,75.825a1.07,1.07,0,1,0,1.425-.512A1.069,1.069,0,0,0,274.5,75.825Z" transform="translate(-255.249 -52.308)"/>
-        <path id="Path_1935" data-name="Path 1935" d="M271.071,70.478a1.158,1.158,0,1,0,1.542-.552A1.159,1.159,0,0,0,271.071,70.478Z" transform="translate(-255.695 -53.007)"/>
-        <path id="Path_1936" data-name="Path 1936" d="M273.881,74.335c-1.031,1.351-2.274,3.04-2.274,3.04a2.591,2.591,0,0,1-2.336-1.826c.628.67,1.458,1.254,2.4.531S273.881,74.335,273.881,74.335Z" transform="translate(-255.914 -52.421)" fill="#c26240"/>
-        <g id="Group_1199" data-name="Group 1199" transform="translate(21.191 21.501)">
-          <path id="Path_1937" data-name="Path 1937" d="M276.218,74.48a.41.41,0,0,0,.28.294,1.2,1.2,0,0,1,.672.567,1.341,1.341,0,0,1-.112,1.1.411.411,0,0,0,.747.342,2.1,2.1,0,0,0,.11-1.792,2.026,2.026,0,0,0-1.183-1.008.411.411,0,0,0-.514.494Z" transform="translate(-276.206 -73.969)" fill="#242241"/>
-        </g>
-        <g id="Group_1200" data-name="Group 1200" transform="translate(16.229 15.136)">
-          <path id="Path_1938" data-name="Path 1938" d="M273.841,70.609a.412.412,0,0,1-.185-.363,1.194,1.194,0,0,0-.314-.821,1.342,1.342,0,0,0-1.079-.256.411.411,0,0,1-.077-.818,2.1,2.1,0,0,1,1.727.486,2.02,2.02,0,0,1,.561,1.449.41.41,0,0,1-.43.389A.405.405,0,0,1,273.841,70.609Z" transform="translate(-271.813 -68.335)" fill="#242241"/>
-        </g>
-        <path id="Path_1939" data-name="Path 1939" d="M265.3,68.054a8.514,8.514,0,0,0,7.469-3.661c1.192,1.359,1,2.262,1,2.262a3.935,3.935,0,0,0,3.063-1.512c3.065,2.463,1.919,5.227,2.875,8.491,1.309,4.469,5.663,8.413,10.713,6.11a.943.943,0,0,0,.021-1.709,4.156,4.156,0,0,1-1.855-1.777,4.445,4.445,0,0,0,2.707-.408.943.943,0,0,0-.141-1.717c-1.148-.424-2.66-1.568-3.708-4.556-.7-1.989-.186-7.754-2.222-9.992-1.664-1.828-4.4-2.464-7.362-1.711a7.587,7.587,0,0,0-9.452-2.094c-5.855,2.7-6.536,15.22-6.536,15.22S263.927,68.036,265.3,68.054Z" transform="translate(-256.874 -54.937)" fill="#242241"/>
-        <path id="Path_1940" data-name="Path 1940" d="M269.142,79.047a.315.315,0,0,0,.338-.471,22.291,22.291,0,0,1-2.453-5.393.315.315,0,0,0-.576-.055,3.927,3.927,0,0,0,2.691,5.92Z" transform="translate(-256.354 -52.599)" fill="#fff"/>
-        <g id="Group_1202" data-name="Group 1202" transform="translate(8.255 8.935)">
-          <path id="Path_1941" data-name="Path 1941" d="M269.791,65.906a2.569,2.569,0,1,1-2.538-3.06A2.84,2.84,0,0,1,269.791,65.906Z" transform="translate(-264.755 -62.846)" fill="#d77953"/>
-          <g id="Group_1201" data-name="Group 1201" transform="translate(1.557 1.508)">
-            <path id="Path_1942" data-name="Path 1942" d="M266.345,67.339a.376.376,0,0,0,.167.035,1.682,1.682,0,0,0,1.7-1.174,1.791,1.791,0,0,0-.687-1.958.372.372,0,1,0-.41.62,1.06,1.06,0,0,1,.382,1.132.951.951,0,0,1-1,.636.372.372,0,0,0-.15.708Z" transform="translate(-266.133 -64.181)" fill="#c26240"/>
-          </g>
-        </g>
-      </g>
-    </g>
-    <path id="Path_1943" data-name="Path 1943" d="M751.44,239.106H615.4q1.913,0,3.779-.166c-18.4-1.613-32.749-14.873-32.749-30.994h0c0-16.121,14.35-29.382,32.749-30.995q-1.864-.163-3.779-.165c20.174,0,36.528-13.952,36.528-31.161h0c0-17.208-16.354-31.16-36.528-31.16H146.835c-20.174,0-36.528,13.952-36.528,31.16h0c0,17.21,16.354,31.161,36.528,31.161h-9.321c20.174,0,36.528,13.95,36.528,31.16h0c0,17.21-16.354,31.16-36.528,31.16H98.131c-30.377,0-55,21.006-55,46.919h0c0,25.914,24.626,46.92,55,46.92h39.386c20.173,0,36.525,13.952,36.525,31.16h0c0,17.21-16.354,31.16-36.528,31.16h9.321c-20.174,0-36.528,13.95-36.528,31.16h0c0,17.21,16.354,31.16,36.528,31.16H615.4c20.174,0,36.528-13.95,36.528-31.16h0c0-17.21-16.354-31.16-36.528-31.16q1.913,0,3.779-.166c-18.4-1.613-32.749-14.873-32.749-30.994h0c0-16.122,14.35-29.382,32.749-31q-1.862-.163-3.775-.165H751.44c30.377,0,55-21.006,55-46.92h0C806.442,260.112,781.817,239.106,751.44,239.106Z" transform="translate(0 7.72)" fill="#e3e8fd"/>
-    <g id="Group_1205" data-name="Group 1205" transform="translate(79.915 318.34)">
-      <path id="Path_1944" data-name="Path 1944" d="M235.035,439.776s-14.216,20.813-35.209,5.7-18.3-10.735-44.418-10.407-21.081-26.961-15.2-34.1,2.939-20.993-13.855-17.214S91.5,387.113,98.22,366.959s-11.336-25.192-18.055-41.567-6.3-34.848,4.2-36.947,20.573,14.275,29.39,13.855,13.016-15.907,23.513-14.042,10.582,8.163,18.1,24.958,15.913,15.535,26.409,11.757,20.574,1.26,26.032,15.954,7.417,33.17,11.9,34.848S246.732,415.185,235.035,439.776Z" transform="translate(-75.692 -288.103)" fill="#629454"/>
-      <path id="Path_1945" data-name="Path 1945" d="M107.9,315.166s93.09,47.8,122.96,121.1" transform="translate(-71.516 -284.594)" fill="none" stroke="#341f78" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
-      <path id="Path_1946" data-name="Path 1946" d="M146.513,348.722c4.826,5.328,6.726,11.469,4.245,13.717s-8.406-.25-13.231-5.578-6.726-11.469-4.245-13.717S141.688,343.393,146.513,348.722Z" transform="translate(-68.365 -281.073)" fill="#3e6a45"/>
-      <path id="Path_1947" data-name="Path 1947" d="M133.41,314.67c2.459,2.459,3.125,5.783,1.484,7.422s-4.963.975-7.422-1.484-3.125-5.783-1.484-7.422S130.951,312.21,133.41,314.67Z" transform="translate(-69.287 -284.967)" fill="#3e6a45"/>
-      <path id="Path_1948" data-name="Path 1948" d="M182.031,343.412c5.124,5.124,7.118,11.438,4.453,14.1s-8.978.671-14.1-4.453-7.118-11.438-4.453-14.1S176.907,338.289,182.031,343.412Z" transform="translate(-63.884 -281.661)" fill="#3e6a45"/>
-      <ellipse id="Ellipse_104" data-name="Ellipse 104" cx="12.596" cy="18.999" rx="12.596" ry="18.999" transform="matrix(0.774, -0.634, 0.634, 0.774, 91.435, 117.169)" fill="#3e6a45"/>
-    </g>
-    <g id="Group_1206" data-name="Group 1206" transform="translate(163.053 273.859)">
-      <path id="Path_1949" data-name="Path 1949" d="M222.934,443.712S194.8,381.2,167.512,338.979s-23.933-85.886,10.077-90.084S240.988,319.852,222.934,443.712Z" transform="translate(-149.286 -248.728)" fill="#4958ed"/>
-      <path id="Path_1950" data-name="Path 1950" d="M181.479,274.521s40.219,73.9,37.281,165.846" transform="translate(-145.112 -245.383)" fill="none" stroke="#341f78" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
-      <path id="Path_1951" data-name="Path 1951" d="M178.253,287.772c2.575,7.124,1.716,13.963-1.919,15.277s-8.668-3.4-11.243-10.521-1.715-13.964,1.919-15.277S175.679,280.647,178.253,287.772Z" transform="translate(-147.429 -245.058)" fill="#3e50ce"/>
-      <path id="Path_1952" data-name="Path 1952" d="M190.159,317.594c1.613,4.462,1.054,8.755-1.249,9.588s-5.479-2.111-7.091-6.574-1.053-8.755,1.251-9.588S188.547,313.13,190.159,317.594Z" transform="translate(-145.187 -240.668)" fill="#3e50ce"/>
-      <ellipse id="Ellipse_105" data-name="Ellipse 105" cx="5.713" cy="13.506" rx="5.713" ry="13.506" transform="matrix(0.94, -0.34, 0.34, 0.94, 50.834, 46.438)" fill="#3e50ce"/>
-      <path id="Path_1953" data-name="Path 1953" d="M197.984,346.067c.966,2.276.644,4.591-.718,5.168s-3.249-.8-4.215-3.077-.643-4.592.72-5.169S197.019,343.79,197.984,346.067Z" transform="translate(-143.683 -236.521)" fill="#3e50ce"/>
-    </g>
-    <g id="Group_1207" data-name="Group 1207" transform="translate(182.102 417.067)">
-      <path id="Path_1954" data-name="Path 1954" d="M167.57,440.956s-4.779-6.371,3.186-14.336c0,0-4.606-26.974,22.9-30.606,0,0,5.19-18.164,20.759-20.24s28.024,7.785,31.657,21.278c0,0,11.936-4.152,22.834,3.115s9.861,22.316,9.861,22.316,11.936,4.255,7.265,18.475Z" transform="translate(-166.148 -375.497)" fill="#98a3f4"/>
-      <path id="Path_1955" data-name="Path 1955" d="M219.646,411.246s-8.766,0-10.56-15.269c-.927-7.9,2.458-15.132,5.943-20.282-.207.024-.408.026-.615.053-15.569,2.076-20.759,20.24-20.759,20.24-27.505,3.632-22.9,30.606-22.9,30.606-7.964,7.964-3.186,14.336-3.186,14.336h50.109C203.556,426.1,219.646,411.246,219.646,411.246Z" transform="translate(-166.148 -375.472)" fill="#808fd8"/>
-    </g>
-    <g id="Group_1208" data-name="Group 1208" transform="translate(605.768 318.34)">
-      <path id="Path_1956" data-name="Path 1956" d="M544.508,439.776s14.216,20.813,35.21,5.7,18.3-10.735,44.418-10.407,21.081-26.961,15.2-34.1-2.938-20.993,13.856-17.214,34.849,3.359,28.131-16.795,11.336-25.192,18.055-41.567,6.3-34.848-4.2-36.947S674.607,302.72,665.79,302.3s-13.016-15.907-23.513-14.042-10.582,8.163-18.1,24.958-15.911,15.535-26.408,11.757-20.573,1.26-26.031,15.954-7.417,33.17-11.9,34.848S532.811,415.185,544.508,439.776Z" transform="translate(-541.181 -288.103)" fill="#629454"/>
-      <path id="Path_1957" data-name="Path 1957" d="M667.087,315.166s-93.091,47.8-122.961,121.1" transform="translate(-540.799 -284.594)" fill="none" stroke="#341f78" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
-      <ellipse id="Ellipse_106" data-name="Ellipse 106" cx="13.016" cy="6.062" rx="13.016" ry="6.062" transform="translate(75.785 77.296) rotate(-47.832)" fill="#3e6a45"/>
-      <path id="Path_1958" data-name="Path 1958" d="M628.69,314.67c-2.459,2.459-3.125,5.783-1.484,7.422s4.963.975,7.422-1.484,3.124-5.783,1.484-7.422S631.149,312.21,628.69,314.67Z" transform="translate(-530.142 -284.967)" fill="#3e6a45"/>
-      <path id="Path_1959" data-name="Path 1959" d="M581.241,343.412c-5.124,5.124-7.118,11.438-4.454,14.1s8.979.671,14.1-4.453,7.118-11.438,4.453-14.1S586.364,338.289,581.241,343.412Z" transform="translate(-536.717 -281.661)" fill="#3e6a45"/>
-      <path id="Path_1960" data-name="Path 1960" d="M576.99,391.708c-6.648,8.118-7.675,18.271-2.293,22.679s15.134,1.4,21.782-6.717,7.675-18.273,2.293-22.681S583.638,383.59,576.99,391.708Z" transform="translate(-537.282 -275.802)" fill="#3e6a45"/>
-    </g>
-    <g id="Group_1209" data-name="Group 1209" transform="translate(606.16 273.859)">
-      <path id="Path_1961" data-name="Path 1961" d="M547.022,443.712s28.131-62.512,55.422-104.733,23.932-85.886-10.077-90.084S528.967,319.852,547.022,443.712Z" transform="translate(-541.528 -248.728)" fill="#4958ed"/>
-      <path id="Path_1962" data-name="Path 1962" d="M583.689,274.521s-40.22,73.9-37.281,165.846" transform="translate(-540.915 -245.383)" fill="none" stroke="#341f78" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
-      <path id="Path_1963" data-name="Path 1963" d="M584.468,287.772c-2.575,7.124-1.715,13.963,1.919,15.277s8.669-3.4,11.244-10.521,1.715-13.964-1.919-15.277S587.043,280.647,584.468,287.772Z" transform="translate(-536.152 -245.058)" fill="#3e50ce"/>
-      <path id="Path_1964" data-name="Path 1964" d="M571.88,317.594c-1.612,4.462-1.053,8.755,1.251,9.588s5.478-2.111,7.091-6.574,1.053-8.755-1.251-9.588S573.493,313.13,571.88,317.594Z" transform="translate(-537.711 -240.668)" fill="#3e50ce"/>
-      <path id="Path_1965" data-name="Path 1965" d="M553.206,298.894c-2.536,7.014-2.186,13.571.782,14.643s7.428-3.745,9.963-10.76,2.186-13.571-.782-14.643S555.741,291.879,553.206,298.894Z" transform="translate(-540.233 -243.637)" fill="#3e50ce"/>
-      <path id="Path_1966" data-name="Path 1966" d="M563.58,346.067c-.965,2.276-.643,4.591.72,5.168s3.249-.8,4.215-3.077.643-4.592-.72-5.169S564.546,343.79,563.58,346.067Z" transform="translate(-538.74 -236.521)" fill="#3e50ce"/>
-    </g>
-    <g id="Group_1210" data-name="Group 1210" transform="translate(545.285 417.067)">
-      <path id="Path_1967" data-name="Path 1967" d="M607.187,440.956s4.779-6.371-3.187-14.336c0,0,4.607-26.974-22.9-30.606,0,0-5.19-18.164-20.759-20.24s-28.024,7.785-31.657,21.278c0,0-11.936-4.152-22.835,3.115s-9.86,22.316-9.86,22.316-11.936,4.255-7.266,18.475Z" transform="translate(-487.641 -375.497)" fill="#98a3f4"/>
-      <path id="Path_1968" data-name="Path 1968" d="M547.366,411.246s8.766,0,10.559-15.269c.927-7.9-2.457-15.132-5.942-20.282.207.024.407.026.615.053,15.569,2.076,20.759,20.24,20.759,20.24,27.505,3.632,22.9,30.606,22.9,30.606,7.965,7.964,3.187,14.336,3.187,14.336H549.333C563.456,426.1,547.366,411.246,547.366,411.246Z" transform="translate(-479.896 -375.472)" fill="#808fd8"/>
-    </g>
-    <rect id="Rectangle_665" data-name="Rectangle 665" width="393.833" height="264.515" rx="16.423" transform="translate(227.869 166.691)" fill="#2b284f"/>
-    <rect id="Rectangle_666" data-name="Rectangle 666" width="377.087" height="253.267" rx="16.423" transform="translate(236.242 172.314)" fill="#fff"/>
-    <rect id="Rectangle_667" data-name="Rectangle 667" width="358.564" height="11.756" transform="translate(242.984 189.363)" fill="#d2d9ff"/>
-    <rect id="Rectangle_668" data-name="Rectangle 668" width="212.451" height="5.038" transform="translate(316.04 364.027)" fill="#d2d9ff"/>
-    <rect id="Rectangle_669" data-name="Rectangle 669" width="212.451" height="5.038" transform="translate(316.04 377.043)" fill="#d2d9ff"/>
-    <rect id="Rectangle_670" data-name="Rectangle 670" width="212.451" height="5.038" transform="translate(316.04 390.059)" fill="#d2d9ff"/>
-    <rect id="Rectangle_671" data-name="Rectangle 671" width="69.978" height="29.391" transform="translate(387.277 431.205)" fill="#e9efff"/>
-    <path id="Rectangle_672" data-name="Rectangle 672" d="M7.307,0H82.963a7.307,7.307,0,0,1,7.307,7.307v2.11a0,0,0,0,1,0,0H0a0,0,0,0,1,0,0V7.307A7.307,7.307,0,0,1,7.307,0Z" transform="translate(377.131 460.596)" fill="#7da2ff"/>
-    <g id="Group_1211" data-name="Group 1211" transform="translate(564.88 294.749)">
-      <path id="Path_1969" data-name="Path 1969" d="M505.606,274.261v39.982a1.75,1.75,0,0,0,1.75,1.749h0a1.75,1.75,0,0,0,1.75-1.749V294.858a3.218,3.218,0,0,1,3.218-3.218h0a3.218,3.218,0,0,1,3.218,3.218v26.673a3.919,3.919,0,0,0,3.919,3.919h0a3.919,3.919,0,0,0,3.919-3.919V296.468a3.708,3.708,0,0,1,3.709-3.709h0a3.708,3.708,0,0,1,3.709,3.709h0a3.388,3.388,0,0,0,3.388,3.388h1.3a4.689,4.689,0,0,0,4.688-4.689V274.261Z" transform="translate(-504.907 -266.308)" fill="#f2c73c"/>
-      <rect id="Rectangle_673" data-name="Rectangle 673" width="36.948" height="7.954" rx="1.767" fill="#ffda73"/>
-    </g>
-    <g id="Group_1212" data-name="Group 1212" transform="translate(583.168 302.703)">
-      <path id="Path_1970" data-name="Path 1970" d="M593.112,293.857s-2.379,9.236-3.5,14.695,8.537,7.7,8.537,7.7l-.839,4.758s5.318-.28,7,2.379l2.659-10.776s2.8-2.939,2.24-6.578-4.339-3.218-5.6,0c0,0-4.215-4.478-4.207-10.5C599.4,295.536,596.612,297.075,593.112,293.857Z" transform="translate(-512.312 -271.72)" fill="#e5827c"/>
-      <path id="Path_1971" data-name="Path 1971" d="M614.925,296.414s1.26-3.639-1.26-6.3-7.417-2.8-11.2-2.24a21.739,21.739,0,0,1-7.277-1.4c-3.779-1.26-7.838,0-8.677,3.919s5.814,9.187,5.814,9.187h0c.664-2.693,1.183-4.707,1.183-4.707,3.5,3.218,6.29,1.679,6.29,1.679-.008,6.019,4.207,10.5,4.207,10.5,1.26-3.218,5.038-3.639,5.6,0s-2.24,6.578-2.24,6.578,7-3.639,8.677-8.677A9.414,9.414,0,0,0,614.925,296.414Z" transform="translate(-512.712 -272.738)" fill="#bc4d88"/>
-      <path id="Path_1972" data-name="Path 1972" d="M602.345,319.642s-7.838-.7-13.856-1.959-35.268-13.3-35.268-13.3a9.759,9.759,0,0,0-2.519,5.879S569.456,323,576.523,325.8a114.978,114.978,0,0,1,15.185,7.838s-.559,21.693,0,29.391.56,10.357.56,10.357,13.435,1.26,23.932-2.1c0,0-1.112-26.451-1.885-33.729s-4.973-15.535-4.973-15.535A7.066,7.066,0,0,0,602.345,319.642Z" transform="translate(-517.347 -270.355)" fill="#f2c73c"/>
-      <path id="Path_1973" data-name="Path 1973" d="M589.98,341.654c.072-6.115.2-11.2.2-11.2s-1-.621-2.59-1.539c-.007.006-9.866,8.537-10.565,8.676s-9.8-8.677-9.8-8.677a20.956,20.956,0,0,0-4.759,3.08s10.217,15.535,13.3,16.235,14.212-6.577,14.212-6.577Z" transform="translate(-515.82 -267.174)" fill="#d3a629"/>
-      <path id="Path_1974" data-name="Path 1974" d="M565.518,322.361A73.854,73.854,0,0,0,568,330.129a18.056,18.056,0,0,0-4.759,3.08,14.979,14.979,0,0,1-5.178-5.424c-1.994-3.639-2.623-4.688,1.575-6.892S564.647,319.3,565.518,322.361Z" transform="translate(-516.592 -268.385)" fill="#e5827c"/>
-      <path id="Path_1975" data-name="Path 1975" d="M587,330.28l4.059,2.344L587,335.144Z" transform="translate(-512.639 -266.997)" fill="#d3a629"/>
-      <path id="Path_1976" data-name="Path 1976" d="M574.055,429.082l2.834,10.5s2.2,2.939,6.822.735l-2.1-11.231Z" transform="translate(-514.318 -254.184)" fill="#e5827c"/>
-      <path id="Path_1977" data-name="Path 1977" d="M566.157,446.246s.63-1.68,4.2-2.414,7.557-5.459,7.557-5.459,2.309,3.044,6.822.735c0,0,1.575,4.2,1.26,7.137C586,446.246,566.891,448.765,566.157,446.246Z" transform="translate(-515.342 -252.98)"/>
-      <path id="Path_1978" data-name="Path 1978" d="M608.941,428.313l2.834,10.5s2.2,2.938,6.823.734l-1.832-12.692Z" transform="translate(-509.794 -254.474)" fill="#e5827c"/>
-      <path id="Path_1979" data-name="Path 1979" d="M601.043,445.31s.63-1.68,4.2-2.415,7.557-5.458,7.557-5.458,2.309,3.043,6.823.734c0,0,1.574,4.2,1.26,7.138C620.882,445.31,601.778,447.829,601.043,445.31Z" transform="translate(-510.818 -253.101)"/>
-      <path id="Path_1980" data-name="Path 1980" d="M611.838,438.983a31.883,31.883,0,0,0,7.7-2.519s-5.543-32.33-7.7-41.147-4.681-21.623-4.681-21.623l-15.745,18.894S608.542,426.806,611.838,438.983Z" transform="translate(-512.067 -261.367)" fill="#211d35"/>
-      <path id="Path_1981" data-name="Path 1981" d="M613.793,363.606c-10.5,3.36-23.932,2.1-23.932,2.1s-19.174,36.807-20.434,42.476,5.249,29.391,5.249,29.391,3.989,2.519,7.347.839c0,0-.629-23.722.21-28.341s17.844-21.832,26.031-30.44S613.793,363.606,613.793,363.606Z" transform="translate(-514.939 -262.675)" fill="#2b284f"/>
-      <path id="Path_1982" data-name="Path 1982" d="M521.176,274.261l44.272,57.422,2.722-2.256-41.509-55.166Z" transform="translate(-521.176 -274.261)" fill="#f4f3fe"/>
-      <path id="Path_1983" data-name="Path 1983" d="M554.816,305.315s-4.374-3.043-6.368-4.2a25.659,25.659,0,0,1-4.513-3.884s-.315,2.1-1.26,2.519-3.884,1.365-4.2,2.2.524,2.519.839,3.359-.419,2.065.21,2.869.315,2.274,1.365,2.379,7.032-.105,8.5,0a12.227,12.227,0,0,1,2.9.63A9.072,9.072,0,0,1,554.816,305.315Z" transform="translate(-518.941 -271.282)" fill="#e5827c"/>
-      <path id="Path_1984" data-name="Path 1984" d="M562.867,330.378s-2.573-3.183,0-5.143c0,0-4.338.21-3.289-1.26a8.731,8.731,0,0,1,5.125-3.08l2.3,7.493Z" transform="translate(-516.217 -268.214)" fill="#e5827c"/>
-    </g>
-    <g id="Group_1213" data-name="Group 1213" transform="translate(284.909 201.119)">
-      <rect id="Rectangle_674" data-name="Rectangle 674" width="233.168" height="132.117" transform="translate(27.348 0) rotate(11.946)" fill="#98a3f4"/>
-      <rect id="Rectangle_675" data-name="Rectangle 675" width="52.063" height="114.34" transform="translate(36.73 11.418) rotate(11.946)" fill="#808fd8"/>
-      <rect id="Rectangle_676" data-name="Rectangle 676" width="144.168" height="13.009" transform="translate(100.378 28.807) rotate(11.946)" fill="#808fd8"/>
-      <rect id="Rectangle_677" data-name="Rectangle 677" width="144.168" height="13.01" transform="matrix(0.978, 0.207, -0.207, 0.978, 95.586, 51.454)" fill="#808fd8"/>
-      <rect id="Rectangle_678" data-name="Rectangle 678" width="144.168" height="13.009" transform="matrix(0.978, 0.207, -0.207, 0.978, 90.685, 74.621)" fill="#808fd8"/>
-      <rect id="Rectangle_679" data-name="Rectangle 679" width="144.168" height="13.009" transform="translate(85.454 99.344) rotate(11.946)" fill="#808fd8"/>
-    </g>
-    <g id="Group_1214" data-name="Group 1214" transform="translate(243.399 74.966)">
-      <path id="Path_1985" data-name="Path 1985" d="M289.056,107.063a82.89,82.89,0,0,1-9.032-1.147,20.165,20.165,0,0,1-2.412,5.849,16.714,16.714,0,0,0,7.006,4.581c4.4,1.449,5.68,1.927,7.246-3.13S292.6,107.395,289.056,107.063Z" transform="translate(-212.992 -68.355)" fill="#e5827c"/>
-      <path id="Path_1986" data-name="Path 1986" d="M226.542,93.929S250.681,71.636,261.228,72.7c0,0,5.625.835,6.562,6.46L269.9,101.9l11.883,15.936s-.868,4.218-3.914,4.922c0,0-15.7-12.891-16.64-15.936s-1.64-10.339-1.64-10.339-5.625,1.9-7.969,5.886-2.812,9.609-2.812,9.609S224.667,107.991,226.542,93.929Z" transform="translate(-219.628 -72.667)" fill="#c52a52"/>
-      <path id="Path_1987" data-name="Path 1987" d="M247.357,107.788s12.421,11.249,17.108,15.468,5.625,30.935,5.625,30.935-1.874,2.11-6.562,1.173c0,0-4.218-11.718-4.8-21.562l-20.037-11.483-1.066-17.36Z" transform="translate(-218.178 -68.48)" fill="#7d8dd6"/>
-      <path id="Path_1988" data-name="Path 1988" d="M239.851,106.7h0c-6.461-2.623-13.578-7.336-12.527-15.216a21.283,21.283,0,0,0-6.8,17.812c1.171,11.249,12.421,22.967,12.421,22.967-4.687,7.969-8.905,28.123-8.905,28.123.234,3.984,5.39,2.813,5.39,2.813s16.874-26.249,15.936-30.936S239.851,106.7,239.851,106.7Z" transform="translate(-220.41 -70.226)" fill="#4f64c7"/>
-      <path id="Path_1989" data-name="Path 1989" d="M256.274,94.847V85.264l-4.283,11.767A25.908,25.908,0,0,1,256.274,94.847Z" transform="translate(-216.314 -71.033)" fill="#772c4c"/>
-      <path id="Path_1990" data-name="Path 1990" d="M264.91,98.542l10.269,13.772,3.558.993a13.709,13.709,0,0,0,3.047-7.518Z" transform="translate(-214.639 -69.312)" fill="#772c4c"/>
-      <path id="Path_1991" data-name="Path 1991" d="M223.836,152.481s-2.344,3.047-1.719,8.516c0,0,11.718,1.718,16.718.781a55.629,55.629,0,0,0-9.609-6.483S224.772,156.778,223.836,152.481Z" transform="translate(-220.202 -62.317)"/>
-      <path id="Path_1992" data-name="Path 1992" d="M260.553,149.712v6.254s9.531,1.645,17.5,0a18.545,18.545,0,0,0-6.562-4.145c-3.751-1.251-4.375-3.282-4.375-3.282S264.772,150.414,260.553,149.712Z" transform="translate(-215.204 -62.828)"/>
-      <path id="Path_1993" data-name="Path 1993" d="M271.964,117.571s2.421,3.281,4.609,3.436,1.874,1.562,3.594,1.719,2.812.156,4.218-1.875.469.156,1.406-2.031-9.913-6.171-9.913-6.171A9.4,9.4,0,0,1,271.964,117.571Z" transform="translate(-213.724 -67.482)" fill="#e5827c"/>
-      <line id="Line_78" data-name="Line 78" y1="92.996" transform="translate(72.237 39.184)" fill="none" stroke="#98a3f4" stroke-miterlimit="10" stroke-width="1"/>
-      <path id="Path_1994" data-name="Path 1994" d="M280.2,111.183s4.017,2.177,5.645-1.046c0,0,.652,4.8,2.052,3.354a9.749,9.749,0,0,0,2.338-6.253l-8.693-1Z" transform="translate(-212.657 -68.314)" fill="#e5827c"/>
-    </g>
-    <g id="Group_1215" data-name="Group 1215" transform="translate(543.972 460.596)">
-      <rect id="Rectangle_680" data-name="Rectangle 680" width="26.67" height="37.148" transform="translate(1.979 1.619)" fill="#a3a3a3"/>
-      <path id="Path_1995" data-name="Path 1995" d="M488.231,452.611H514.9l-26.67-37.148Z" transform="translate(-486.252 -413.843)" fill="#d3d3d3"/>
-      <path id="Path_1996" data-name="Path 1996" d="M488.648,414.029h25.993a1.726,1.726,0,0,1,1.726,1.727v11.513s-.19,3.62-2.857,2.1-1.429-6.292-3.049-7.48c-1.985-1.456-5.833,3.6-4.166,8.059,1.038,2.781-.618,5.084-3.548,4.61-4.393-.709-2.412-9.774-4.382-11.952-1.81-2-5.429-1.524-6.1,4.381s-4,7.049-5.239,5.906c-1.008-.931-.374-12.848-.1-17.245A1.72,1.72,0,0,1,488.648,414.029Z" transform="translate(-486.479 -414.029)" fill="#f2c73c"/>
-    </g>
-    <g id="Group_1223" data-name="Group 1223" transform="translate(235.733 235.853)">
-      <g id="Group_1216" data-name="Group 1216">
-        <path id="Path_1997" data-name="Path 1997" d="M215.559,470.312c-.067,0-.133,0-.2-.01a1.934,1.934,0,0,1-1.726-2.12l25.751-251.359a1.933,1.933,0,1,1,3.847.394L217.48,468.577A1.934,1.934,0,0,1,215.559,470.312Z" transform="translate(-213.623 -215.085)" fill="#341f78"/>
-      </g>
-      <g id="Group_1217" data-name="Group 1217" transform="translate(52.623 0.002)">
-        <path id="Path_1998" data-name="Path 1998" d="M287.888,470.312a1.933,1.933,0,0,1-1.92-1.735l-25.752-251.36a1.933,1.933,0,1,1,3.847-.394l25.751,251.359a1.933,1.933,0,0,1-1.726,2.12C288.02,470.307,287.953,470.312,287.888,470.312Z" transform="translate(-260.205 -215.087)" fill="#341f78"/>
-      </g>
-      <g id="Group_1218" data-name="Group 1218" transform="translate(23.038 27.363)">
-        <path id="Path_1999" data-name="Path 1999" d="M268.227,243.173H235.95a1.933,1.933,0,1,1,0-3.866h32.277a1.933,1.933,0,1,1,0,3.866Z" transform="translate(-234.016 -239.307)" fill="#341f78"/>
-      </g>
-      <g id="Group_1219" data-name="Group 1219" transform="translate(19.574 60.298)">
-        <path id="Path_2000" data-name="Path 2000" d="M272.11,272.328H232.884a1.933,1.933,0,1,1,0-3.866H272.11a1.933,1.933,0,0,1,0,3.866Z" transform="translate(-230.95 -268.462)" fill="#341f78"/>
-      </g>
-      <g id="Group_1220" data-name="Group 1220" transform="translate(15.335 101.672)">
-        <path id="Path_2001" data-name="Path 2001" d="M276.966,308.953H229.131a1.933,1.933,0,0,1,0-3.867h47.835a1.933,1.933,0,0,1,0,3.867Z" transform="translate(-227.198 -305.086)" fill="#341f78"/>
-      </g>
-      <g id="Group_1221" data-name="Group 1221" transform="translate(10.56 148.282)">
-        <path id="Path_2002" data-name="Path 2002" d="M282.053,350.213H224.9a1.933,1.933,0,0,1,0-3.867h57.149a1.933,1.933,0,0,1,0,3.867Z" transform="translate(-222.971 -346.346)" fill="#341f78"/>
-      </g>
-      <g id="Group_1222" data-name="Group 1222" transform="translate(3.786 214.406)">
-        <path id="Path_2003" data-name="Path 2003" d="M289.619,408.745H218.908a1.933,1.933,0,1,1,0-3.866h70.711a1.933,1.933,0,0,1,0,3.866Z" transform="translate(-216.974 -404.879)" fill="#341f78"/>
-      </g>
-    </g>
-    <circle id="Ellipse_107" data-name="Ellipse 107" cx="15.19" cy="15.19" r="15.19" transform="matrix(0.932, -0.364, 0.364, 0.932, 98.192, 201.802)" fill="#d2d9ff"/>
-    <circle id="Ellipse_108" data-name="Ellipse 108" cx="13.374" cy="13.374" r="13.374" transform="translate(636.776 218.54) rotate(-76.649)" fill="#d2d9ff"/>
-    <circle id="Ellipse_109" data-name="Ellipse 109" cx="8.502" cy="8.502" r="8.502" transform="translate(768.439 369.065)" fill="#d2d9ff"/>
-    <circle id="Ellipse_110" data-name="Ellipse 110" cx="13.089" cy="13.089" r="13.089" transform="translate(55.645 374.201)" fill="#d2d9ff"/>
-  </g>
-</svg>

+ 0 - 14
src/assets/icons/refresh (1).svg

@@ -1,14 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="23.675" height="23.692" viewBox="0 0 23.675 23.692">
-  <g id="refresh_1_" data-name="refresh (1)" transform="translate(-0.175 0)">
-    <g id="Group_384" data-name="Group 384" transform="translate(0.175 0)">
-      <g id="Group_383" data-name="Group 383" transform="translate(0 0)">
-        <path id="Path_143" data-name="Path 143" d="M8.641.494a11.837,11.837,0,0,0-6.5,4.817,3.219,3.219,0,0,0-.387,1.231V2.383H.175V8.7H6.488V7.118H2.921a10.4,10.4,0,0,1,9.091-5.6,10.393,10.393,0,0,1,9.833,7.4l1.515-.45A11.837,11.837,0,0,0,8.641.494Z" transform="translate(-0.175 0)" fill="#fff"/>
-      </g>
-    </g>
-    <g id="Group_386" data-name="Group 386" transform="translate(0.664 14.789)">
-      <g id="Group_385" data-name="Group 385" transform="translate(0)">
-        <path id="Path_144" data-name="Path 144" d="M26.967,300.063v1.578h3.567a10.4,10.4,0,0,1-9.091,5.6,10.393,10.393,0,0,1-9.833-7.4l-1.515.45A11.837,11.837,0,0,0,31.45,303.22a2.17,2.17,0,0,0,.253-1v4.159H33.28v-6.313Z" transform="translate(-10.095 -299.842)" fill="#fff"/>
-      </g>
-    </g>
-  </g>
-</svg>

+ 0 - 3
src/assets/icons/star.svg

@@ -1,3 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="21.222" height="21.19" viewBox="0 0 21.222 21.19">
-  <path id="star" d="M20.658,7.592l-6.524-1L11.21.367a.69.69,0,0,0-1.2,0L7.087,6.6l-6.524,1A.663.663,0,0,0,.189,8.711l4.739,4.858-1.12,6.868a.664.664,0,0,0,.975.687l5.827-3.22,5.827,3.221a.664.664,0,0,0,.975-.687l-1.12-6.868,4.739-4.858a.664.664,0,0,0-.374-1.119Z" transform="translate(0 -0.018)" fill="#ffc107"/>
-</svg>

+ 2 - 2
src/assets/scss/_variable.scss

@@ -17,10 +17,10 @@ $colorGray2: #F3F3F3;
 // $Gray: #c4c5c547;
 // $filter: #57595b;
 // $colorPink: #ff808b;
-$ColorMainDark: #3B5286;
+$ColorMainDark:#002329;
 // $ColorMainDark2: rgb(12, 6, 6);
 
-$backgroundColor: #F9F9F9;
+$backgroundColor:#fff7e6;
 $backgroundColor2: #FEFEFE;
 $backgroundColorCard: #98E28C;
 $backgroundColorfilters: #E5F5FC;

+ 0 - 1
src/assets/scss/login.scss

@@ -8,7 +8,6 @@
     width: 100%;
     height: 50px;
     background-color: $ColorMainDark;
-    border-radius: .75em .75em 0em 0em;
     color: white;
     line-height: 50px;
     padding-right: 1em;

+ 53 - 40
src/assets/scss/publicStyle.scss

@@ -99,6 +99,19 @@ body {
 
 // btn
 
+.ant-btn-primary {
+  background-color:#08979c;
+  border-color:#08979c;
+  &:hover{
+    background-color: #13c2c2;
+    border-color: #13c2c2;
+  }  
+  &:focus{
+    background-color: #13c2c2;
+    border-color: #13c2c2;
+  }
+}
+
 .main-btn-pill {
   background: transparent linear-gradient(180deg, $gradiantColor1 0%, $gradiantColor2 100%) 0% 0% no-repeat padding-box;
   box-shadow: 0px 2px 5px $shadowColor;
@@ -143,46 +156,46 @@ body {
 // table 
 
 
-table { 
-  border: 1px solid $borderColor;
-  border-collapse: separate;
-  border-left: 0;
-  border-radius: 10px;
-  border-spacing: 0px;
-}
-thead {
-  display: table-header-group;
-  vertical-align: middle;
-  border-color: inherit;
-  border-collapse: separate;
-  background-color: rgba($color: #3B5286, $alpha: 0.7);
-  color: rgba(white, .7);
-}
-tr {
-  display: table-row;
-  vertical-align: inherit;
-  border-color: inherit;
-}
-
-td {
-  padding: 5px 4px 6px 4px; 
-  vertical-align: top;
-  border-left: 1px solid $borderColor;    
-}
-
-th {
-  padding: 5px 4px 6px 4px; 
-}
-
-td {
-  border-top: 1px solid $borderColor;    
-}
-th:last-child {
-  border-radius: 10px 0 0 0;
-}
-th:first-child {
-  border-radius: 0 10px 0 0;
-}
+// table { 
+//   border: 1px solid $borderColor;
+//   border-collapse: separate;
+//   border-left: 0;
+//   border-radius: 10px;
+//   border-spacing: 0px;
+// }
+// thead {
+//   display: table-header-group;
+//   vertical-align: middle;
+//   border-color: inherit;
+//   border-collapse: separate;
+//   background-color: rgba($color: #3B5286, $alpha: 0.7);
+//   color: rgba(white, .7);
+// }
+// tr {
+//   display: table-row;
+//   vertical-align: inherit;
+//   border-color: inherit;
+// }
+
+// td {
+//   padding: 5px 4px 6px 4px; 
+//   vertical-align: top;
+//   border-left: 1px solid $borderColor;    
+// }
+
+// th {
+//   padding: 5px 4px 6px 4px; 
+// }
+
+// td {
+//   border-top: 1px solid $borderColor;    
+// }
+// th:last-child {
+//   border-radius: 10px 0 0 0;
+// }
+// th:first-child {
+//   border-radius: 0 10px 0 0;
+// }
 
 
 //

+ 62 - 41
src/components/login/login.js

@@ -4,69 +4,90 @@ import {USER_LOGGED_IN, USER_LOGGED_OUT} from "../../context/actionType";
 import {fetcher} from "../../utils/common";
 import { error } from "../../utils/message";
 import {LOGIN_PATH} from "../../utils/constants";
-// import Logo from "../../assets/imgs/logo04.png"
-import {Spin, Space} from "antd";
+import {Form, Input, Button} from "antd";
 
 
 export default function Login(props) {
 
-    const [payload, setpayload] = React.useState({username: '', password: ''});
     const {isLoggedIn, dispatch} = React.useContext(store)
 
-    const inputChange = (ele) => {
-        setpayload({...payload, [ele.target.name]: ele.target.value})
-    }
-
-    const formSubmit = (e) => {
-        e.preventDefault();
-        if (payload.username && payload.password){
+    const formSubmit = (payload) => {
+        if (payload.SID && payload.password){
             fetcher(LOGIN_PATH,{
                 method: 'POST',
                 body:JSON.stringify(payload)
             })
             .then((response) => {
-                dispatch({ type: USER_LOGGED_IN, payload: response.result })
+                dispatch({ type: USER_LOGGED_IN, payload: response })
                 setTimeout( () => props.history.push("/"), 1000 )
             } )
             .catch( e => error( e.message ? e.message : undefined ) )
         }
     }
 
-    React.useEffect(() => {
-        // if (!Boolean(Token() && isLoggedIn)){
-        //     dispatch({type: USER_LOGGED_OUT});
-        // }
+    React.useEffect( () => {
+        if (isLoggedIn) setTimeout( () => props.history.push("/"), 1000 )
     }, [])
 
+    const layout = {
+        labelCol: { span: 6 },
+        wrapperCol: { span: 14 },
+    };
+
+    const tailLayout = {
+    wrapperCol: { offset: 4, span: 16 },
+    };
+
+    const onFinish = values => {
+        formSubmit(values)
+    };
+
+    const onFinishFailed = errorInfo => {
+        console.log('Failed:', errorInfo);
+    };
+
     return (
-        <div className="row justify-content-md-center mx-auto my-5 py-5" style={{maxWidth: "900px"}}>
-            <div className="col-md-6 text-center bg-white p-0">
-                {/* <div className="login-header text-right">
-                    ورود به سامانه
-                </div> */}
-                <div className="login-body py-3 mx-auto">
+        <div className="row justify-content-md-center mx-auto my-5 py-5 " style={{maxWidth: "900px"}}>
+            <div className="col-md-6 text-center bg-white p-0 shadow">
+                <div className="login-header text-right">
+                </div>
+                <div className="py-3 mx-auto">
                     <p className="text-bold font-gray-color">
-                        {/* <img className="img-fluid" src={Logo} /> */}
-                        {/* رصد فضای فرهنگی کشور */}
-                    </p>
-                    <form >
-                        <div className="form-group text-right my-3 font-gray-color">
-                            <label htmlFor="login-username">نام کاربری</label>
-                            <input type="text" name="username" onChange={(ele) => inputChange(ele)} value={payload.username} className="form-control input-border" id="login-username" />
-                        </div>
-                        <div className="form-group text-right my-3 font-gray-color">
-                            <label htmlFor="login-password">کلمه عبور</label>
-                            <input type="password" name="password" className="form-control input-border" onChange={(ele) => inputChange(ele)} value={payload.password} id="login-password" />
-                        </div>
-                        <div className="form-group form-check my-3 text-right">
-                            <label className="form-check-label mr-4 font-size-sm font-gray-color" htmlFor="login-remember"> مرا به خاطر بسپار </label>
-                            <input type="checkbox" className="form-check-input" id="login-remember"/>
-                        </div>
-                        <button type="submit" className="btn main-btn-pill w-100 mt-2" onClick={(e) => formSubmit(e)} >ورود به سامانه</button>
-                    </form>
-                    <p className="pt-4 font-size-sm mt-2 font-gray-color">
-                        رمز عبور خود را فراموش کرده اید؟ <a href="/">کلیک کنید</a>
+                        ورود به پورتال
                     </p>
+                    <Form
+                        className="py-2"
+                        {...layout}
+                        name="basic"
+                        initialValues={{ remember: true }}
+                        onFinish={onFinish}
+                        onFinishFailed={onFinishFailed}
+                        >
+
+                        <Form.Item
+                            className="py-1"
+                            label="نام کاربری"
+                            name="SID"
+                            rules={[{ required: true, message: 'نام کاربری اجباری است' }]}
+                        >
+                            <Input />
+                        </Form.Item>
+
+                        <Form.Item
+                            className="py-1"
+                            label="رمز عبور"
+                            name="password"
+                            rules={[{ required: true, message: 'رمز عبور اجباری است' }]}
+                        >
+                            <Input.Password />
+                        </Form.Item>
+
+                        <Form.Item {...tailLayout} className="mt-2" >
+                            <Button type="primary" htmlType="submit">
+                            ورود
+                            </Button>
+                        </Form.Item>
+                    </Form>
                 </div>
             </div>
         </div>

+ 0 - 22
src/components/login/signin_oidc.js

@@ -1,22 +0,0 @@
-import React from 'react';
-import userManager from '../../utils/userService';
-
-
-
-export default function SignInOidc(props) {
-
-    React.useEffect(() => {
-        // if (!Boolean(Token() && isLoggedIn)){
-        //     dispatch({type: USER_LOGGED_OUT});
-        // }
-        userManager.signinRedirect()
-        .then( res => console.log("4444",res))
-        .catch( e => console.log("2222",e))
-    }, [])
-
-    return (
-        <div>
-            ggggggggggg
-        </div>
-    )
-}

+ 3 - 5
src/components/public/home.js

@@ -2,12 +2,10 @@ import React from 'react';
 
 
 export default function Home(props) {
-    React.useEffect( () => {
-        // setTimeout(()=> props.history.push("/monitoring"), 2000)
-    }, [])
+
     return (
-        <div className="d-flex justify-content-center align-items-center" style={{height: "300px"}}>
-            <h3>به سامانه مانیتورینگ خوش آمدید </h3>
+        <div className="d-flex justify-content-center align-items-center">
+            <h3>داشبورد </h3>
         </div>
     )
 }

+ 19 - 6
src/components/public/main.js

@@ -1,17 +1,30 @@
 import React, {useContext} from 'react';
 import { Redirect } from "react-router-dom";
 import Navbar from './navbar';
+import SideMenu from "./sider"
 import {store} from "../../context/store";
 
+import { Layout } from 'antd';
+
+const { Header, Footer, Sider, Content } = Layout;
 
 export default function Main(props) {
     const {isLoggedIn} = useContext(store);
     return (
-        <>
-            {/* <Navbar /> */}
-            <div className="container-fluid text-right">
-                { isLoggedIn || (props.children[1].type?.displayName === "Login") ? props.children : <Redirect to="/login" /> }
-            </div>
-        </>
+        <Layout style={{backgroundColor: "#fff7e6", minHeight: "100vh"}}>
+            {
+                props.children[1].type?.displayName !== "Login" && (
+                    <Sider width={250} style={{backgroundColor: "#002329", color: "white",}}><SideMenu /></Sider>
+                )
+            }
+            <Layout style={{backgroundColor: "#fff7e6"}}>
+                {/* <Navbar /> */}
+                <Content >
+                    <div className="container-fluid text-right">
+                        { isLoggedIn || (props.children[1].type?.displayName === "Login") ? props.children : <Redirect to="/login" /> }
+                    </div>
+                </Content>
+            </Layout>
+        </Layout>
     )
 }

+ 28 - 56
src/components/public/navbar.js

@@ -1,14 +1,9 @@
 import React, {useContext, useEffect} from 'react';
 import {NavLink as NavLinkRouter} from "react-router-dom";
-import {FaRegUser} from 'react-icons/fa';
-import {FiChevronDown} from 'react-icons/fi';
 import {AiOutlineLogout} from 'react-icons/ai';
 import { Menu, Dropdown } from 'antd';
 import {store} from "../../context/store";
-import {fetcher} from "../../utils/common";
 import {USER_LOGGED_OUT, SET_USER_PROFILE_NAME} from "../../context/actionType";
-import {USER_PROFILE} from "../../utils/constants";
-import {ReactComponent as Logo} from "../../assets/icons/pic/Logo.svg";
 
 
 export default function Navbar() {
@@ -25,31 +20,6 @@ export default function Navbar() {
                     تعریف پروژه جدید
                 </NavLinkRouter>
             </Menu.Item>
-            <Menu.Item key="1">
-                <NavLinkRouter className="font-size-m font-main-color text-decoration-none p-3" to="/manage/subject">
-                    مدیریت سوژه ها
-                </NavLinkRouter>
-            </Menu.Item>
-            <Menu.Item key="2">
-                <NavLinkRouter className="font-size-m font-main-color text-decoration-none p-3" to="/manage/subjects">
-                    ساخت سوژه
-                </NavLinkRouter>
-            </Menu.Item>
-            <Menu.Item key="3">
-                <NavLinkRouter className="font-size-m font-main-color text-decoration-none p-3" to="/manage/tags">
-                    مدیریت تگ ها
-                </NavLinkRouter>
-            </Menu.Item>
-            <Menu.Item key="4">
-                <NavLinkRouter className="font-size-m font-main-color text-decoration-none p-3" to="/manage/favoritism">
-                    مدیریت ویژگی ها
-                </NavLinkRouter>
-            </Menu.Item>
-            {/* <Menu.Item key="5">
-                <NavLinkRouter className="font-size-m font-main-color text-decoration-none p-3" to="/manage/users">
-                    مدیریت کاربران
-                </NavLinkRouter>
-            </Menu.Item> */}
         </Menu>
     );
 
@@ -77,36 +47,37 @@ export default function Navbar() {
     );
 
     useEffect(() => {
-        if (!Boolean(userName)){
-            fetcher(USER_PROFILE)
-            .then( res => dispatch({ type: SET_USER_PROFILE_NAME, payload: res.result }) )
-            .catch( _ => {})
-        }
+        // if (!Boolean(userName)){
+        //     fetcher(USER_PROFILE)
+        //     .then( res => dispatch({ type: SET_USER_PROFILE_NAME, payload: res.result }) )
+        //     .catch( _ => {})
+        // }
     }, [userName])
 
     return (
         <>
-        <nav className="navbar navbar-expand-lg background-white navbarStyle text-center">
+        <nav className="navbar navbar-expand-lg shadow text-center" style={{backgroundColor: "#002329"}}>
 
             <div className="container">
                 { 
                 isLoggedIn && 
                     (
-                        <Dropdown overlay={UserMenu} trigger={['click']} >
-                            <div className="d-inline-block px-1 py-1 drop-down-style text-center ml-2">
-                                <span className="font-main-color">
-                                        <FiChevronDown className="text-dark" />
-                                </span>
+                        // <Dropdown overlay={UserMenu} trigger={['click']} >
+                        //     <div className="d-inline-block px-1 py-1  text-center ml-2">
+                        //         <span className="font-main-color">
+                        //                 <FiChevronDown className="text-dark" />
+                        //         </span>
 
-                                <span className="mx-2 font-main-color">
-                                    {userName}        
-                                </span>
-                                <span className="bg-white borderSize-1 font-main-color drop-down-style d-inline-block"
-                                        style={{width: '28px', height: '28px'}}>
-                                    <FaRegUser />
-                                </span>
-                            </div>
-                        </Dropdown>
+                        //         <span className="mx-2 font-main-color">
+                        //             {userName}        
+                        //         </span>
+                        //         <span className="bg-white borderSize-1 font-main-color  d-inline-block"
+                        //                 style={{width: '28px', height: '28px'}}>
+                        //             <FaRegUser />
+                        //         </span>
+                        //     </div>
+                        // </Dropdown>
+                        <span className="text-white pointer" onClick={() => onLogout()}>خروج</span>
                     )
                 }
 
@@ -126,7 +97,7 @@ export default function Navbar() {
                                     تعریف پروژه جدید
                                 </NavLinkRouter> */}
                                 {/* <span className="nav-item nav-link " >|</span> */}
-                                <NavLinkRouter className="nav-item nav-link font-size-m  font-main-color" to="/report">
+                                {/* <NavLinkRouter className="nav-item nav-link font-size-m  font-main-color" to="/report">
                                     گزارش ها
                                 </NavLinkRouter>
                                 <span className="nav-item nav-link " >|</span>
@@ -138,15 +109,16 @@ export default function Navbar() {
                                     <a href="#" className="ant-dropdown-link p-2 font-size-m text-decoration-none font-main-color" onClick={e => e.preventDefault()}>
                                     مدیریت
                                     </a>
-                                </Dropdown>
+                                </Dropdown> */}
                             </div>
                         )
                     }
                 </div>
-                <span className="navbar-brand font-main-color font-weight-bold">
-                    <NavLinkRouter to="/">
-                        <Logo style={{maxHeight: "80px"}} />
-                    </NavLinkRouter>
+                <span className="navbar-brand text-white font-weight-bold">
+                    {/* <NavLinkRouter to="/"> */}
+                        {/* <Logo style={{maxHeight: "80px"}} />
+                    </NavLinkRouter> */}
+                    پورتال
                 </span>
                 <button className="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavAltMarkup" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation">
                     <span className="navbar-toggler-icon"></span>

+ 8 - 26
src/components/public/routes.js

@@ -1,34 +1,16 @@
 import Home from "../public/home";
 import Login from "../login/login";
-// import Reports from "../report/reportPage";
-// import Monitoring from "../monitoring/monitoring";
-// import ProjectTabs from "../project/projectTabs";
-// import CreateProject from "../project/createProject";
-// import SubjectManage from "../subjects/subjectManage";
-// import SubjectForm from "../subjects/subjectForm";
-// import SubjectProfile from "../subjects/subjectProfile";
-// // import TagPost from "../tag/tagPost";
-// import TagCreate from "../tag/tagCreate";
-// import FavoritismCreate from "../subjects/favoritismManage";
-// import UsersList from "../users/usersList";
-// import SignInOidc from "../login/signin_oidc"
+import Sets from "../sets/sets"
+import SetDetails from "../sets/setsDetails"
+import Questions from "../questions/questions"
+import Tenants from "../tenants/tenants"
 
 
 export default [
     { path: "/", name: "سامانه", Component: Home },
     { path: "/login", name: "ورود", Component: Login },
-    // { path: "/monitoring", name: "ورود", Component: Monitoring },
-    // { path: "/manage", name: "مدیریت", Component: Home },
-    // { path: "/manage/subject", name: "مدیریت سوژه ها", Component: SubjectManage },
-    // { path: "/manage/subject/profile/:subjectId(\\d+)", name: "پروفایل سوژه", Component: SubjectProfile },
-    // { path: "/manage/subjects", name: "ساخت سوژه", Component: SubjectForm },
-    // { path: "/manage/subjects/edit/:subjectId(\\d+)", name: "ویرایش سوژه", Component: SubjectForm },
-    // { path: "/manage/project", name: "مدیریت پروژه‌ها", Component: CreateProject },
-    // { path: "/manage/project/edit/:projectId(\\d+)", name: "ویرایش پروژه", Component: CreateProject },
-    // { path: "/manage/tags", name: "مدیریت تگ ها", Component: TagCreate},
-    // { path: "/manage/favoritism", name: "مدیریت ویژگی‌ها", Component: FavoritismCreate},
-    // { path: "/manage/users", name: "مدیریت کاربران", Component: UsersList},
-    // { path: "/view/project", name: "پروژه‌ها", Component: ProjectTabs },
-    // { path: "/report", name: "گزارش ها", Component: Reports },
-    // { path: "/view/tag", name: "تگ پست ها", Component: TagPost},
+    { path: "/sets", name: "امتحانات", Component: Sets },
+    { path: "/sets/:setId(\\d+)", name: "امتحان", Component: SetDetails },
+    { path: "/questions", name: "سوالات", Component: Questions },
+    { path: "/tenants", name: "مدارس", Component: Tenants },
   ];

+ 55 - 0
src/components/public/sider.js

@@ -0,0 +1,55 @@
+import React, { useContext } from 'react';
+import { NavLink as NavLinkRouter } from "react-router-dom";
+import {store} from "../../context/store";
+import {USER_LOGGED_OUT} from "../../context/actionType";
+import { Menu } from 'antd';
+
+
+export default function SideMenu(props) {
+
+    const {isLoggedIn, userName, dispatch} = useContext(store);
+
+    const onLogout = () => {
+        dispatch({type: USER_LOGGED_OUT})
+    }
+
+    return (
+        <div style={{ backgroundColor: "#002329", color: "white" }}>
+            <div className="text-right p-3" style={{ minHeight: "150px" }}>
+                <div className="d-flex justify-content-between" style={{ minHeight: "150px" }}>
+                    <div>
+                        <h4 className="text-white">
+                        <NavLinkRouter className="text-white text-decoration-none" to="/">
+                            پورتال
+                        </NavLinkRouter>
+                        </h4>
+                    </div>
+                    <div className="align-self-end">
+                        <span className="pointer" onClick={() => onLogout()} >خروج از حساب</span>
+                    </div>
+                </div>
+            </div>
+            <Menu
+                mode="inline"
+                // defaultSelectedKeys={['1']}
+                style={{ height: '100%', borderRight: 0, backgroundColor: "#002329", color: "white" }}
+            >
+                <Menu.Item key="1">
+                    <NavLinkRouter className="text-white text-decoration-none" to="/sets">
+                        امتحانات
+                    </NavLinkRouter>
+                </Menu.Item>
+                <Menu.Item key="2">
+                    <NavLinkRouter className="text-white text-decoration-none" to="/questions">
+                        سوالات
+                    </NavLinkRouter>
+                </Menu.Item>
+                <Menu.Item key="3">
+                    <NavLinkRouter className="text-white text-decoration-none" to="/tenants">
+                        مدارس
+                    </NavLinkRouter>
+                </Menu.Item>
+            </Menu>
+        </div>
+    )
+}

+ 125 - 0
src/components/questions/questions.js

@@ -0,0 +1,125 @@
+import React from 'react';
+import {Descriptions, Divider, Form, Input, Button, Select } from "antd";
+import {fetcher} from "../../utils/common";
+import { error, success } from "../../utils/message";
+import {SETS_LIST, QUESTIONS_LIST} from "../../utils/constants";
+
+const { Option } = Select;
+
+
+const QuestionDescription = (props) => (
+    <div className="my-3">
+        <Descriptions 
+            title={props.item.question}
+            column={{ xxl: 4, xl: 4, lg: 4, md: 3, sm: 2, xs: 1 }}
+        >
+            <Descriptions.Item label="مربوط به امتحان" span={4}>{props.item.test_set}</Descriptions.Item>
+            <Descriptions.Item label="گزینه۱">{props.item.ans1}</Descriptions.Item>
+            <Descriptions.Item label="گزینه۲">{props.item.ans2}</Descriptions.Item>
+            <Descriptions.Item label="گزینه۳">{props.item.ans3}</Descriptions.Item>
+            <Descriptions.Item label="گزینه۴">{props.item.ans4}</Descriptions.Item>
+        </Descriptions>
+    </div>
+)
+
+
+const QuestionCreateForm = (props) => {
+
+    const formLayout = {
+        labelCol: { span: 4, offset: 4 },
+        wrapperCol: { span: 14, offset: 4 },
+    }
+
+    const [form] = Form.useForm();
+
+    const onFinish = (values) =>{
+        addQuestion(values)
+    }
+
+    const addQuestion = (payload) => {
+        fetcher(QUESTIONS_LIST,{
+            method: "POST",
+            body: JSON.stringify(payload)
+        }).then( response => {
+            success("اضافه شد");
+            setTimeout( () => window.location.reload(), 1000);
+        }).catch( e => error(String(e)) )
+    }
+
+    return (
+        <Form
+            {...formLayout}
+            layout={'vertical'}
+            form={form}
+            size="large"
+            name="question-add" 
+            onFinish={onFinish}
+        >
+            <Form.Item name="question" label="سوال" rules={[{ required: true }]}>
+                <Input.TextArea />
+            </Form.Item>
+            <Form.Item name="ans1" label="گزینه۱" rules={[{ required: true }]}>
+                <Input />
+            </Form.Item>
+            <Form.Item name="ans2" label="گزین۲" rules={[{ required: true }]}>
+                <Input />
+            </Form.Item>
+            <Form.Item name="ans3" label="گزینه۳" rules={[{ required: true }]}>
+                <Input />
+            </Form.Item>
+            <Form.Item name="ans4" label="گزینه۴" rules={[{ required: true }]}>
+                <Input />
+            </Form.Item>
+            <Form.Item name="test_set" label="امتحان" rules={[{ required: true }]}>
+                <Select>
+                    {
+                        props.setItems.map( (i,k) => (
+                            <Option key={k} value={i.id}>{i.title}</Option>
+                        ))
+                    }
+                </Select>
+            </Form.Item>
+            <Form.Item >
+                <Button type="primary" htmlType="submit">ثبت</Button>
+            </Form.Item>
+        </Form>
+    )
+}
+
+
+export default function Questions(props) {
+
+    const [setItems, setSetItems] = React.useState([]);
+    const [questions, setQuestions] = React.useState([]);
+
+    React.useEffect( () => {
+        fetchSets();
+        fetchQuestions();
+    }, [])
+
+    const fetchSets = () => {
+        fetcher(SETS_LIST)
+        .then( response => setSetItems(response))
+        .catch( e => error(String(e)))
+    }
+
+    const fetchQuestions = () => {
+        fetcher(QUESTIONS_LIST)
+        .then( response => setQuestions(response))
+        .catch( e => error(String(e)))
+    }
+
+    return (
+        <div className="p-5">
+            <div className="d-flex justify-content-between">
+                <h5>لیست سوالات</h5>
+            </div>
+            <div className="p-3">
+                { questions.map( (item, index) => <QuestionDescription item={item} key={index} /> ) }
+            </div>
+            <Divider />
+            <h5>ساخت سوال جدید</h5>
+            <QuestionCreateForm setItems={setItems} />
+        </div>
+    )
+}

+ 105 - 0
src/components/sets/sets.js

@@ -0,0 +1,105 @@
+import React from 'react';
+import {NavLink} from "react-router-dom";
+import {Descriptions, Divider, Form, Input, Button, Checkbox } from "antd";
+import {fetcher} from "../../utils/common";
+import { error, success } from "../../utils/message";
+import {SETS_LIST} from "../../utils/constants";
+
+
+const SetItemDescription = (props) => (
+    <div className="my-2">
+        <Descriptions title={<NavLink className="text-decoration-none" to={`/sets/${props.item.id}`} > <span>{props.item.title}</span> </NavLink>}>
+            <Descriptions.Item label="توضیحات">{props.item.text}</Descriptions.Item>
+            <Descriptions.Item label="شماره">{props.item.number}</Descriptions.Item>
+            <Descriptions.Item label="منتشر شده">{props.item.is_draft}</Descriptions.Item>
+            <Descriptions.Item label="زمان ساخت">{props.item.creation_time}</Descriptions.Item>
+            <Descriptions.Item label="سازنده">{props.item.creator_user.first_name}</Descriptions.Item>
+            <Descriptions.Item label="مدرسه">{props.item.tenant.name}</Descriptions.Item>
+            <Descriptions.Item label="تعداد سوالات">{props.item.questions.length}</Descriptions.Item>
+        </Descriptions>
+    </div>
+)
+
+
+const SetCreateForm = (props) => {
+
+    const formLayout = {
+        labelCol: { span: 4, offset: 4 },
+        wrapperCol: { span: 14, offset: 4 },
+    }
+
+    const [form] = Form.useForm();
+
+    const onFinish = (values) =>{
+        values["is_draft"] = Boolean(values["is_draft"]);
+        values["questions"] = [];
+        createSetItem(values)
+    }
+
+    const createSetItem = (payload) => {
+        fetcher(SETS_LIST,{
+            method: "POST",
+            body: JSON.stringify(payload)
+        }).then( response => {
+            success("ساخته شد");
+            setTimeout( () => window.location.reload(), 1000);
+        }).catch( e => error(String(e)) )
+    }
+
+    return (
+        <Form
+            {...formLayout}
+            layout={'vertical'}
+            form={form}
+            size="large"
+            name="set-add" 
+            onFinish={onFinish}
+        >
+            <Form.Item name="title" label="نام" rules={[{ required: true }]}>
+                <Input />
+            </Form.Item>
+            <Form.Item name="text" label="متن" rules={[{ required: true }]}>
+                <Input.TextArea />
+            </Form.Item>
+            <Form.Item name="number" label="شماره" rules={[{ required: true }]}>
+                <Input />
+            </Form.Item>
+            <Form.Item name="is_draft" label="منتشر شده" valuePropName="checked">
+                <Checkbox />
+            </Form.Item>
+            <Form.Item >
+                <Button type="primary" htmlType="submit">ثبت</Button>
+            </Form.Item>
+        </Form>
+    )
+}
+
+
+export default function Sets(props) {
+
+    const [setItems, setSetItems] = React.useState([]);
+
+    React.useEffect( () => {
+        fetchSets()
+    }, [])
+
+    const fetchSets = () => {
+        fetcher(SETS_LIST)
+        .then( response => setSetItems(response))
+        .catch( e => error(String(e)))
+    }
+
+    return (
+        <div className="p-5">
+            <div className="d-flex justify-content-between">
+                <h5>لیست امتحانات</h5>
+            </div>
+            <div className="p-3">
+                { setItems.map( (item, index) => <SetItemDescription item={item} key={index} /> ) }
+            </div>
+            <Divider />
+            <h5>ساخت امتحان جدید</h5>
+            <SetCreateForm />
+        </div>
+    )
+}

+ 133 - 0
src/components/sets/setsDetails.js

@@ -0,0 +1,133 @@
+import React from 'react';
+import {NavLink} from "react-router-dom";
+import {Descriptions, Divider, Form, Input, Button, Checkbox, Collapse } from "antd";
+import {fetcher} from "../../utils/common";
+import { error, success } from "../../utils/message";
+import {SETS_DETAIL, QUESTIONS_LIST} from "../../utils/constants";
+
+const { Panel } = Collapse;
+
+
+const SetItemDescription = (props) => (
+    <div className="my-2">
+        <Descriptions title={props.item.title}>
+            <Descriptions.Item label="توضیحات">{props.item.text}</Descriptions.Item>
+            <Descriptions.Item label="شماره">{props.item.number}</Descriptions.Item>
+            <Descriptions.Item label="منتشر شده">{props.item.is_draft}</Descriptions.Item>
+            <Descriptions.Item label="زمان ساخت">{props.item.creation_time}</Descriptions.Item>
+            <Descriptions.Item label="سازنده">{props.item?.creator_user?.first_name}{props.item?.creator_user?.last_name}</Descriptions.Item>
+            <Descriptions.Item label="ایمیل سازنده">{props.item?.creator_user?.email}</Descriptions.Item>
+            <Descriptions.Item label="مدرسه">{props.item?.tenant?.name}</Descriptions.Item>
+            <Descriptions.Item label="سایت مدرسه">{props.item?.tenant?.sub_domain}</Descriptions.Item>
+            <Descriptions.Item label="توضیح">{props.item?.tenant?.description}</Descriptions.Item>
+            <Descriptions.Item label="تعداد سوالات">{props.item?.questions?.length}</Descriptions.Item>
+        </Descriptions>
+    </div>
+)
+
+const QuestionItemDescription = (props) => (
+    <Collapse>
+        {
+            props.questions.map( (i,k) => (
+                <Panel header={i.question} key={k}>
+                    <div className="d-flex justify-content-between">
+                        <p> گزینه 1) {i.ans1}</p>
+                        <p> گزینه 2) {i.ans2}</p>
+                        <p> گزینه 3) {i.ans3}</p>
+                        <p> گزینه 4) {i.ans4}</p>
+                    </div>
+                </Panel>)
+            )
+        }
+    </Collapse>
+)
+
+
+const SetCreateForm = (props) => {
+
+    const formLayout = {
+        labelCol: { span: 4, offset: 4 },
+        wrapperCol: { span: 14, offset: 4 },
+    }
+
+    const [form] = Form.useForm();
+
+    const onFinish = (values) =>{
+        values["test_set"] = props.setId
+        addQuestion(values)
+    }
+
+    const addQuestion = (payload) => {
+        fetcher(QUESTIONS_LIST,{
+            method: "POST",
+            body: JSON.stringify(payload)
+        }).then( response => {
+            success("اضافه شد");
+            setTimeout( () => window.location.reload(), 1000);
+        }).catch( e => error(String(e)) )
+    }
+
+    return (
+        <Form
+            {...formLayout}
+            layout={'vertical'}
+            form={form}
+            size="large"
+            name="question-add" 
+            onFinish={onFinish}
+        >
+            <Form.Item name="question" label="سوال" rules={[{ required: true }]}>
+                <Input.TextArea />
+            </Form.Item>
+            <Form.Item name="ans1" label="گزینه۱" rules={[{ required: true }]}>
+                <Input />
+            </Form.Item>
+            <Form.Item name="ans2" label="گزین۲" rules={[{ required: true }]}>
+                <Input />
+            </Form.Item>
+            <Form.Item name="ans3" label="گزینه۳" rules={[{ required: true }]}>
+                <Input />
+            </Form.Item>
+            <Form.Item name="ans4" label="گزینه۴" rules={[{ required: true }]}>
+                <Input />
+            </Form.Item>
+            <Form.Item >
+                <Button type="primary" htmlType="submit">ثبت</Button>
+            </Form.Item>
+        </Form>
+    )
+}
+
+
+export default function SetDetails(props) {
+
+    const [setItem, setSetItem] = React.useState({});
+
+    React.useEffect( () => {
+        fetchSets()
+    }, [])
+
+    const fetchSets = () => {
+        fetcher(SETS_DETAIL(props.match.params.setId))
+        .then( response => setSetItem(response))
+        .catch( e => error(String(e)))
+    }
+
+    return (
+        <div className="p-5">
+            <div className="p-3">
+                <SetItemDescription item={setItem} />
+            </div>
+            <Divider />
+            <div className="my-2">
+                <h5 className="mb-3">لیست سوالات</h5>
+                { setItem?.questions_info?.length && (
+                    <QuestionItemDescription questions={setItem.questions_info} />
+                )}
+            </div>
+            <Divider />
+            <h5>اضافه کردن سوال جدید</h5>
+            <SetCreateForm setId={props.match.params.setId} />
+        </div>
+    )
+}

+ 100 - 0
src/components/tenants/tenants.js

@@ -0,0 +1,100 @@
+import React from 'react';
+import {Descriptions, Divider, Form, Input, Button } from "antd";
+import {fetcher} from "../../utils/common";
+import { error, success } from "../../utils/message";
+import {TENANTS_LIST} from "../../utils/constants";
+
+
+const TenantDescription = (props) => (
+    <div className="my-3">
+        <Descriptions 
+            title={props.item.name}
+        >
+            <Descriptions.Item label="توضیحات">{props.item.description}</Descriptions.Item>
+            <Descriptions.Item label="آدرس">{props.item.sub_domain}</Descriptions.Item>
+            <Descriptions.Item label="کد">{props.item.code}</Descriptions.Item>
+        </Descriptions>
+    </div>
+)
+
+
+const TenantCreateForm = (props) => {
+
+    const formLayout = {
+        labelCol: { span: 4, offset: 4 },
+        wrapperCol: { span: 14, offset: 4 },
+    }
+
+    const [form] = Form.useForm();
+
+    const onFinish = (values) =>{
+        addTenant(values)
+    }
+
+    const addTenant = (payload) => {
+        fetcher(TENANTS_LIST,{
+            method: "POST",
+            body: JSON.stringify(payload)
+        }).then( response => {
+            success("اضافه شد");
+            setTimeout( () => window.location.reload(), 1000);
+        }).catch( e => error(String(e)) )
+    }
+
+    return (
+        <Form
+            {...formLayout}
+            layout={'vertical'}
+            form={form}
+            size="large"
+            name="tenant-add" 
+            onFinish={onFinish}
+        >
+            <Form.Item name="name" label="نام" rules={[{ required: true }]}>
+                <Input />
+            </Form.Item>
+            <Form.Item name="description" label="توضیحات" rules={[{ required: true }]}>
+                <Input />
+            </Form.Item>
+            <Form.Item name="sub_domain" label="آدرس" rules={[{ required: true }]}>
+                <Input />
+            </Form.Item>
+            <Form.Item name="code" label="کد" rules={[{ required: true }]}>
+                <Input />
+            </Form.Item>
+            <Form.Item >
+                <Button type="primary" htmlType="submit">ثبت</Button>
+            </Form.Item>
+        </Form>
+    )
+}
+
+
+export default function Tenants(props) {
+
+    const [tenants, setTenants] = React.useState([]);
+
+    React.useEffect( () => {
+        fetchSets();
+    }, [])
+
+    const fetchSets = () => {
+        fetcher(TENANTS_LIST)
+        .then( response => setTenants(response))
+        .catch( e => error(String(e)))
+    }
+
+    return (
+        <div className="p-5">
+            <div className="d-flex justify-content-between">
+                <h5>لیست مدارس</h5>
+            </div>
+            <div className="p-3">
+                { tenants.map( (item, index) => <TenantDescription item={item} key={index} /> ) }
+            </div>
+            <Divider />
+            <h5>ساخت مدرسه جدید</h5>
+            <TenantCreateForm />
+        </div>
+    )
+}

+ 3 - 3
src/context/reducer.js

@@ -6,13 +6,13 @@ import {success} from '../utils/message';
 export default (state, action) => {
     switch (action.type) {
       case actionType.USER_LOGGED_IN:
-        document.cookie="token="+action.payload.access_token;
-        setToken(action.payload.access_token);
+        document.cookie="token="+action.payload.access;
+        setToken(action.payload.access);
         success('با موفقیت وارد شدید')
         return {
           ...state,
           isLoggedIn: true,
-          token: action.payload.access_token
+          token: action.payload.access
         };
 
       case actionType.USER_LOGGED_OUT:

+ 1 - 2
src/context/store.js

@@ -4,8 +4,7 @@ import {Token} from "../utils/utils";
 
 const getInitialState = () => {
     return {
-        isLoggedIn: true,
-        // isLoggedIn: Boolean(Token()),
+        isLoggedIn: Boolean(Token()),
         userName: null,
         postList: [],
     };

+ 6 - 28
src/utils/constants.js

@@ -6,35 +6,13 @@ module.exports = {
     CONFLICT_MESSAGE: "مشکلی به وجود آمده است",
 
     // ROUTES
-    BASE_URL: "http://192.168.0.124:8003/api",
-    MEDIA_URL: "http://feeder.binainst.ir/",
+    BASE_URL: "http://preforms.ir/api",
     PREFIX:"",
-    LOGIN_PATH: "/auth/token/",
-    USER_PROFILE: "/auth/profile/",
-    PROJECT_LIST:"/project/",
-    PROJECT_DETAIL: (id) => `/project/${id}/`,
-    PROJECT_SUBJECTS: (id) => `/project/${id}/subjects/`,
-    PROJECT_TAGS: (id) => `/project/${id}/tags/`,
-    PROJECT_KEYWORDS: (id) => `/project/${id}/keywords/`,
-    SUBJECT_LIST: "/subject/",
-    SUBJECT_DETAIL: (id) => `/subject/${id}/`,
-    USERS_LIST: "/project/users/",
-    BIAS_LIST: "/favoritism/",
-    BIAS_CREATE: (id) => `/favoritism/${id}/`,
-    PROJECTS_STAT: "/project/projects/",
-    TAG_LIST: "/tag/",
-    TAG_DETAIL: (id) => `/tag/${id}/`,
-    TAG_POSTS: (id) => `/project/${id}/post/tagger/`,
-    VALID_TAG_POSTS: (id) => `/project/${id}/tags/`,
-    POST_DETAIL: (id) => `/post/${id}/`,
-    POST_FILTERS: (id) => `/project/${id}/attributes/`,
-    POST_RESTORE: (id) => `/post/${id}/restore/`,
-    SET_POST_TAG: (id) => `/project/post/${id}/attribute/`,
-    PROJECT_POSTS: (id) => `/project/${id}/posts/`,
-    CRAWL_POSTS: (id) => `/media/${id}/crawl/`,
-    PROJECT_ARCHIVE: (id) => `/project/scheduler/${id}/stop/`,
-    PROJECT_ARCHIVE_RESTORE: (id) => `/project/scheduler/${id}/resume/`,
-    PROJECT_EXCEL_REPORT: (id) => `/project/${id}/report/`,
+    LOGIN_PATH: "/token/",
+    SETS_LIST: "/portal/sets",
+    SETS_DETAIL: (id) => `/portal/sets/${id}`,
+    QUESTIONS_LIST: "/portal/questions",
+    TENANTS_LIST: "/portal/tenants",
 
     // PARAMS:
     COOKIE_EXPIRES: 1 // IN DAYS