From 1ff96251504ada49747fa93153c27fa3eefd3731 Mon Sep 17 00:00:00 2001 From: Sean Edmunds Date: Sat, 18 Dec 2021 04:40:11 +0000 Subject: [PATCH] new theme and css updates --- node_modules/.cache/.eslintcache | 2 +- package.json | 2 +- src/index.css | 9 ++++++++- src/index.js | 20 ++++++++++---------- src/themes.json | 19 ++++++++++++++----- 5 files changed, 34 insertions(+), 18 deletions(-) diff --git a/node_modules/.cache/.eslintcache b/node_modules/.cache/.eslintcache index 2a1461cc..5a94e458 100644 --- a/node_modules/.cache/.eslintcache +++ b/node_modules/.cache/.eslintcache @@ -1 +1 @@ -[{"/home/magnum/home-page/src/index.js":"1"},{"size":28146,"mtime":1639793677541,"results":"2","hashOfConfig":"3"},{"filePath":"4","messages":"5","errorCount":0,"fatalErrorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":0,"source":"6"},"t76b41","/home/magnum/home-page/src/index.js",["7","8","9","10"],"import React from 'react';\nimport { useState, useEffect } from 'react';\nimport ReactDOM from 'react-dom';\nimport { BrowserRouter, Routes, Route, matchPath } from \"react-router-dom\";\nimport { Outlet, Link } from \"react-router-dom\";\nimport './index.css';\n\nconst setValueFromLocalStorage = property => {\n let value = localStorage.getItem(property);\n setValue(property, value);\n};\nconst setValue = (property, value) => {\n if (value) {\n document.documentElement.style.setProperty(`--${property}`, value);\n\n const input = document.querySelector(`#${property}`);\n if (input) {\n value = value.replace('px', '');\n input.value = value;\n }\n }\n};\n\nfunction App() {\n return (\n \n );\n}\n\nfunction Homepage() {\n setTheme();\n \n return (\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n );\n}\n\nfunction Search() {\n return (\n
\n
\n \n \n
\n
\n )\n}\n\nfunction Header(props) {\n return (\n
\n
\n

{props.greet}

\n
\n
\n

{props.date}

\n \n
\n
\n );\n}\n\nconst Applications = () => {\n let data = (getApps()).apps;\n return (\n
\n

Applications

\n
\n {data.map((data) => (\n \n ))}\n
\n
\n\n );\n}\n\nfunction Apps(props) {\n \n let classNameType = props.NSFW + \"-content\";\n let hrefUrl = \"https://\" + props.url;\n let iconName = \"mdi-\" + props.icon;\n return (\n
\n \n
\n
\n \n
\n
\n {props.name}\n {props.url}\n
\n
\n
\n
\n );\n}\n\nfunction Bookmarks() {\n let bookmarkList = (getLinks()).bookmarks;\n return (\n
\n

Bookmarks

\n \n
\n );\n}\n\nfunction LinkGroups(props) {\n let links = props.links;\n return (\n \n );\n}\n\nfunction LinkItem(props) {\n return (\n
\n {props.link.name}\n
\n );\n}\n\nfunction ModalMenu() {\n var providers = getProviders();\n var items = [];\n var isChecked = localStorage.getItem(\"contenttype\");\n for (var i = 0; i < providers.providers.length; i++) {\n items.push(\n \n );\n }\n return (\n
\n
\n
\n

Options

\n \n \n \n
\n\n

Color themes

\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n\n\n

Search options

\n
\n \n \n \n \n \n \n {items}\n \n
WebsitePrefix
\n
\n\n
\n \n \n \n
\n
\n
\n );\n}\n\nfunction HideButton(props) {\n if(props.checked === \"true\") {\n return (\n
\n
\n );\n } else {\n return (\n
\n
\n );\n }\n}\n\nfunction Provider(props) {\n return (\n \n {props.provider.name}\n {props.provider.prefix}\n \n );\n}\n\nfunction SettingsButton() {\n setDisplayedItems();\n return (\n
\n \n \n \n
\n );\n}\n\nfunction Settings() {\n setTheme();\n var isChecked = localStorage.getItem(\"contenttype\");\n return (\n
\n
\n

Settings

\n \n \n
\n \n
\n );\n}\n\nconst PersonalizationSettings = () => {\n const handleSubmit = (e) => {\n e.preventDefault();\n };\n return (\n
\n
\n

Personalization

\n

Personal details

\n
\n
\n \n
\n

Greetings

\n
\n \n \n \n
\n \n );\n};\n\nfunction PersonalInfo() {\n var personalData = getPersonalData();\n return (\n \n );\n}\n\nfunction FormInput(props) {\n let fname = props.fname;\n let lname = props.lname;\n let email = props.email;\n return (\n
\n \n console.log()}>\n \n console.log()}>\n \n console.log()}>\n
\n );\n}\n\nfunction MessageInfo() {\n let greetings = (require('./messages.json')).messages;\n return (\n
\n {greetings.map((greetings, index) => (\n \n ))}\n
\n );\n}\n\nfunction Messages(props) {\n\n var eeChecked;\n if(props.easterEgg === \"TRUE\") {\n eeChecked = true;\n } else if(props.easterEgg === \"FALSE\") {\n eeChecked = false;\n } else {\n eeChecked = false;\n }\n return (\n
\n \n \n \n \n \n \n
\n );\n}\n\nconst ApplicationSettings = () => {\n let apps = (getApps()).apps\n const handleSubmit = (e) => {\n e.preventDefault();\n };\n return (\n
\n
\n

Applications

\n
\n
\n {apps.map((apps) => (\n \n ))}\n \n \n
\n \n );\n}\n\nfunction ApplicationDetails(props) {\n \n var nsfwChecked;\n if(props.NSFW === \"NSFW\") {\n nsfwChecked = true;\n } else if(props.easterEgg === \"SAFE\") {\n nsfwChecked = false;\n } else {\n nsfwChecked = false;\n }\n return (\n
\n \n \n \n \n \n \n \n \n \n \n
\n );\n}\n\nconst BookmarksSettings = () => {\n let groups = (getLinks()).bookmarks;\n const handleSubmit = (e) => {\n e.preventDefault();\n };\n return (\n
\n
\n

Bookmarks

\n
\n
\n
\n {groups.map((groups) => (\n \n ))}\n
\n
\n \n
\n \n );\n}\n\nfunction BookmarkGroups(props) {\n let links = props.links;\n return (\n
\n

{props.category}

\n {links.map((links) => (\n \n ))}\n
\n );\n}\n\nfunction BookmarkDetails(props) {\n return (\n
\n \n \n \n \n
\n );\n}\n\nfunction ThemesSettings() {\n let themes = (getThemes()).themes;\n console.log(themes[0].colorbackground);\n return (\n
\n

Themes

\n
\n {themes.map((themes) => (\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n ))}\n
\n
\n );\n}\n\nfunction ProviderSettings() {\n let providers = (getProviders()).providers;\n const handleSubmit = (e) => {\n e.preventDefault();\n };\n return (\n
\n
\n

Providers

\n
\n
\n {providers.map((providers) => (\n \n ))}\n \n \n
\n \n );\n}\n\nfunction ProvidersDetails(props) {\n return (\n
\n \n \n \n \n \n \n
\n );\n}\n\nReactDOM.render(\n \n \n } />\n }>\n }/>\n }/>\n }/>\n }/>\n }/>\n \n \n ,\n document.getElementById('root')\n);\n\n//Functions below this line are for calculating data for\n//other functions\n\nfunction date() {\n let currentDate = new Date();\n let dateOptions = {\n weekday: \"long\",\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\"\n };\n let date = currentDate.toLocaleDateString(\"en-GB\", dateOptions);\n return date;\n}\nfunction fixDigits(k) {\n if (k < 10) {\n return \"0\" + k;\n }\n else {\n return k;\n }\n}\nfunction greet() {\n let currentTime = new Date();\n let greet = Math.floor(currentTime.getHours() / 6);\n let easterEggChance = Math.floor(Math.random() * 100);\n let greetings = require('./messages.json');\n let timeBased = [];\n let easterEggs = [];\n for (var i = 0; i < greetings.messages.length; i++) {\n if (greetings.messages[i].easteregg === \"FALSE\") {\n timeBased = timeBased.concat(greetings.messages[i]);\n } else {\n easterEggs = easterEggs.concat(greetings.messages[i]);\n }\n }\n if (easterEggChance > 10) {\n return timeBased[greet].message;\n } else {\n let easterEggText = Math.floor(Math.random() * easterEggs.length);\n return easterEggs[easterEggText].message;\n }\n}\nfunction Clock() {\n const [date, setDate] = useState(new Date());\n\n function refreshClock() {\n setDate(new Date());\n }\n useEffect(() => {\n const timerId = setInterval(refreshClock, 1000);\n return function cleanup() {\n clearInterval(timerId);\n };\n }, []);\n\n var hour = date.getHours();\n var minutes = date.getMinutes();\n //var seconds = date.getSeconds();\n var midday = \"AM\";\n midday = (hour >= 12) ? \"PM\" : \"AM\";\n hour = (hour === 0) ? 12 : ((hour > 12) ? (hour - 12) : hour);\n minutes = fixDigits(minutes);\n //seconds = fixDigits(seconds);\n let time = hour + \":\" + minutes + \" \" + midday;\n\n return (\n

{time}

\n\n );\n}\nfunction getApps() {\n let applications = require('./apps.json');\n return applications;\n}\nfunction getLinks() {\n let links = require('./links.json');\n return links;\n}\nfunction getProviders() {\n let providers = require('./providers.json');\n return providers;\n}\nfunction getThemes() {\n let themes = require('./themes.json');\n return themes;\n}\nfunction getPersonalData() {\n let themes = require('./personaldata.json');\n return themes;\n}\nfunction updateTheme(e) {\n var themes = getThemes();\n var themeName = e.target.innerHTML.toLowerCase();\n var index = themes.themes.findIndex(function(item, i){\n return item.name === themeName;\n });\n localStorage.setItem(\"image-background\", themes.themes[index].imagebackground);\n localStorage.setItem(\"color-background\", themes.themes[index].colorbackground);\n localStorage.setItem(\"color-search-background\", themes.themes[index].colorserachbackground);\n localStorage.setItem(\"color-text-pri\",themes.themes[index].colortextpri);\n localStorage.setItem(\"color-text-acc\", themes.themes[index].colortextacc);\n localStorage.setItem(\"color-border\", themes.themes[index].colorborder);\n \n //document.documentElement.style.setProperty(prop, `var(--${themeName}${prop.substring(10)})`);\n setTheme();\n}\nfunction setTheme() {\n if(localStorage.getItem(\"color-background\") === null) {\n localStorage.setItem(\"image-background\", \"\");\n localStorage.setItem(\"color-background\", \"#ffffff\");\n localStorage.setItem(\"color-search-background\", \"#22222220\");\n localStorage.setItem(\"color-text-pri\", \"#222222\");\n localStorage.setItem(\"color-text-acc\", \"#dddddd\");\n localStorage.setItem(\"color-border\", \"#dddddd\");\n } else {\n setValueFromLocalStorage('image-background');\n setValueFromLocalStorage('color-background');\n setValueFromLocalStorage('color-search-background');\n setValueFromLocalStorage('color-text-pri');\n setValueFromLocalStorage('color-text-acc');\n setValueFromLocalStorage('color-border');\n setValueFromLocalStorage('content-display');\n }\n \n}\nfunction handleKeyPress(e) {\n var sindex = 0;\n var cycle = false;\n var key = e.keyCode || e.which;\n var text = e.target.value.replaceAll(\"+\", \"%2B\");\n var option = text.substr(1, text.indexOf(' ') - 1) || text.substr(1);\n var subtext = text.substr(2 + option.length);\n if (key === 13) { // Search functions\n search(text);\n }\n if (key === 9) { // Tab Completion Functions\n e.preventDefault();\n e.stopPropagation();\n if (text[0] === ';') {\n switch (option) {\n case 't':\n var streamers = ['admiralbahroo', 'moonmoon_ow', 'witwix'];\n if (!subtext || cycle) {\n cycle = true;\n if (sindex > streamers.length - 1) sindex = 0;\n document.getElementById(\"keywords\").value = ';t ' + streamers[sindex++];\n return;\n }\n for (var streamer of streamers) {\n if (subtext === streamer.substr(0, subtext.length)) {\n document.getElementById(\"keywords\").value = ';t ' + streamer;\n return;\n }\n }\n break;\n default :\n break;\n }\n }\n }\n if(key === 32){ //Space to go to search\n updateLabel(text);\n }\n sindex = 0;\n cycle = false;\n updateLabel(text);\n}\nfunction updateLabel(text) {\n var option = text.substr(1, text.indexOf(' ') - 1) || text.substr(1);\n if (text[0] === '/') {\n// if (text.indexOf(' ') > -1) {\n switch (option) {\n case \"am\":\n document.getElementById(\"searchType\").innerHTML = \"Allmusic search\";\n break;\n case \"d\":\n document.getElementById(\"searchType\").innerHTML = \"Duck Duck Go search\";\n break;\n case \"di\":\n document.getElementById(\"searchType\").innerHTML = \"Discogs search\";\n break;\n case \"i\":\n document.getElementById(\"searchType\").innerHTML = \"IMDB search\";\n break;\n case \"m\":\n document.getElementById(\"searchType\").innerHTML = \"TheMovieDB search\";\n break;\n case \"r\":\n document.getElementById(\"searchType\").innerHTML = \"Reddit search\";\n break;\n case \"q\":\n document.getElementById(\"searchType\").innerHTML = \"Qwant search\";\n break;\n case \"so\":\n document.getElementById(\"searchType\").innerHTML = \"Soundcloud search\";\n break;\n case \"s\":\n document.getElementById(\"searchType\").innerHTML = \"Spotify search\";\n break;\n case \"tv\":\n document.getElementById(\"searchType\").innerHTML = \"TheTVDB search\";\n break;\n case \"t\":\n document.getElementById(\"searchType\").innerHTML = \"Trakt search\";\n break;\n case \"y\":\n document.getElementById(\"searchType\").innerHTML = \"YouTube search\";\n break;\n case \"w\":\n document.getElementById(\"searchType\").innerHTML = \"Wikipedia search\";\n break;\n case \"p\":\n document.getElementById(\"searchType\").innerHTML = \"Plex search\";\n break;\n case \"rt\":\n document.getElementById(\"searchType\").innerHTML = \"Rotten Tomatoes search\";\n break;\n default:\n document.getElementById(\"searchType\").innerHTML = \"Invalid search\";\n break;\n }\n}else {\n document.getElementById(\"searchType\").innerHTML = \"Google search\";\n }\n}\nfunction search(text) {\n if (text[0] === '/') {\n if (text.indexOf(' ') > -1) {\n let option = text.substr(1, text.indexOf(' ') - 1) || text.substr(1);\n var subtext = text.substr(2 + option.length);\n switch (option) {\n case \"am\":\n window.location = \"https://www.allmusic.com/search/all/\" + subtext;\n break;\n case \"d\":\n window.location = \"https://duckduckgo.com/?q=\" + subtext;\n break;\n case \"di\":\n window.location = \"https://www.discogs.com/search/?q=\" + subtext;\n break;\n case \"i\":\n window.location = \"https://www.imdb.com/find?q=\" + subtext;\n break;\n case \"m\":\n window.location = \"https://www.themoviedb.org/search?query=\" + subtext;\n break;\n case \"r\":\n window.location = \"https://www.reddit.com/search?q=\" + subtext;\n break;\n case \"q\":\n window.location = \"https://www.qwant.com/?q=\" + subtext;\n break;\n case \"so\":\n window.location = \"https://soundcloud.com/search?q=\" + subtext;\n break;\n case \"s\":\n window.location = \"https://open.spotify.com/search/results/\" + subtext;\n break;\n case \"t\":\n window.location = \"https://trakt.tv/search?query=\" + subtext;\n break;\n case \"tv\":\n window.location = \"https://www.thetvdb.com/search?query=\" + subtext;\n break;\n case \"y\":\n window.location = \"https://www.youtube.com/results?search_query=\" + subtext;\n break;\n case \"w\":\n window.location = \"https://en.wikipedia.org/w/index.php?search=\" + subtext;\n break;\n case \"p\":\n window.location = \"https://app.plex.tv/desktop/#!/search?query=\" + subtext;\n break;\n case \"rt\":\n window.location = \"https://www.rottentomatoes.com/search?search=\" + subtext;\n break;\n default :\n break;\n }\n } else {\n let option = text.substr(1);\n switch (option) {\n case \"d\":\n window.location = \"https://www.duckduckgo.com\";\n break;\n case \"y\":\n window.location = \"https://www.youtube.com\";\n break;\n case \"r\":\n window.location = \"https://reddit.com\";\n break;\n case \"s\":\n window.location = \"https://open.spotify.com\";\n break;\n default :\n break;\n }\n }\n } else if (validURL(text)) {\n if (containsProtocol(text))\n window.location = text;\n else\n window.location = \"https://\" + text;\n } else {\n window.location = \"https://www.google.com/search?q=\" + text;\n }\n}\nfunction validURL(str) {\n var pattern = new RegExp('^(https?:\\\\/\\\\/)?' + // protocol\n '((([a-z\\\\d]([a-z\\\\d-]*[a-z\\\\d])*)\\\\.)+[a-z]{2,}|' + // domain name\n '((\\\\d{1,3}\\\\.){3}\\\\d{1,3}))' + // OR ip (v4) address\n '(\\\\:\\\\d+)?(\\\\/[-a-z\\\\d%_.~+]*)*' + // port and path\n '(\\\\?[;&a-z\\\\d%_.~+=-]*)?' + // query string\n '(\\\\#[-a-z\\\\d_]*)?$', 'i'); // fragment locator\n return !!pattern.test(str);\n}\nfunction containsProtocol(str) {\n var pattern = new RegExp('^(https?:\\\\/\\\\/){1}.*', 'i');\n return !!pattern.test(str);\n}\nString.prototype.replaceAll = function(search, replacement) {\n var target = this;\n return target.split(search).join(replacement);\n};\nfunction udpateDisplayedItems(e) {\n localStorage.setItem('contenttype', e.target.checked);\n if (e.target.checked) {\n localStorage.setItem('content-display', 'none');\n } else {\n localStorage.setItem('content-display', 'block');\n }\n setDisplayedItems();\n}\nfunction setDisplayedItems() {\n setValueFromLocalStorage('contenttype');\n setValueFromLocalStorage('content-display');\n}",{"ruleId":"11","severity":1,"message":"12","line":4,"column":40,"nodeType":"13","messageId":"14","endLine":4,"endColumn":49},{"ruleId":"11","severity":1,"message":"15","line":166,"column":10,"nodeType":"13","messageId":"14","endLine":166,"endColumn":19},{"ruleId":"16","severity":1,"message":"17","line":183,"column":11,"nodeType":"18","endLine":183,"endColumn":61},{"ruleId":"19","severity":1,"message":"20","line":894,"column":1,"nodeType":"21","messageId":"22","endLine":897,"endColumn":2},"no-unused-vars","'matchPath' is defined but never used.","Identifier","unusedVar","'ModalMenu' is defined but never used.","jsx-a11y/anchor-is-valid","The href attribute requires a valid value to be accessible. Provide a valid, navigable address as the href value. If you cannot provide a valid href, but still need the element to resemble a link, use a button and change it with appropriate styles. Learn more: https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/HEAD/docs/rules/anchor-is-valid.md","JSXOpeningElement","no-extend-native","String prototype is read only, properties should not be added.","AssignmentExpression","unexpected"] \ No newline at end of file +[{"/home/magnum/home-page/src/index.js":"1"},{"size":28181,"mtime":1639796895144,"results":"2","hashOfConfig":"3"},{"filePath":"4","messages":"5","errorCount":0,"fatalErrorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},"t76b41","/home/magnum/home-page/src/index.js",["6","7","8","9"],{"ruleId":"10","severity":1,"message":"11","line":4,"column":40,"nodeType":"12","messageId":"13","endLine":4,"endColumn":49},{"ruleId":"10","severity":1,"message":"14","line":166,"column":10,"nodeType":"12","messageId":"13","endLine":166,"endColumn":19},{"ruleId":"15","severity":1,"message":"16","line":183,"column":11,"nodeType":"17","endLine":183,"endColumn":61},{"ruleId":"18","severity":1,"message":"19","line":894,"column":1,"nodeType":"20","messageId":"21","endLine":897,"endColumn":2},"no-unused-vars","'matchPath' is defined but never used.","Identifier","unusedVar","'ModalMenu' is defined but never used.","jsx-a11y/anchor-is-valid","The href attribute requires a valid value to be accessible. Provide a valid, navigable address as the href value. If you cannot provide a valid href, but still need the element to resemble a link, use a button and change it with appropriate styles. Learn more: https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/HEAD/docs/rules/anchor-is-valid.md","JSXOpeningElement","no-extend-native","String prototype is read only, properties should not be added.","AssignmentExpression","unexpected"] \ No newline at end of file diff --git a/package.json b/package.json index ff031dca..9ae1841e 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "home-page", "version": "0.1.0", "private": true, - "homepage": ".", + "homepage": "https://home.halfaperture.com/sui", "dependencies": { "@testing-library/jest-dom": "^5.16.1", "@testing-library/react": "^11.2.7", diff --git a/src/index.css b/src/index.css index 91bf3fb1..3b1c8b74 100644 --- a/src/index.css +++ b/src/index.css @@ -114,7 +114,7 @@ a:hover #app-address{ outline: none; color: var(--color-text-acc); font-style: normal; - font-weight: 200; + font-weight: 500; font-size: 1.2em; letter-spacing: .2em; width:100%; @@ -273,6 +273,7 @@ table a{ #greeting_block { display: grid; width: 100%; + color: var(--color-text-acc); } #date_block { @@ -808,6 +809,12 @@ table a{ color: #EFF1FC; } +.theme-synth { + background-color: #2B2C56; + border: 4px solid #ff75e6; + color: #03c6fc; +} + .theme-chalk{ background-color: #263238; border: 4px solid #FF869A; diff --git a/src/index.js b/src/index.js index 14808724..bd96906c 100644 --- a/src/index.js +++ b/src/index.js @@ -259,7 +259,7 @@ function SettingsButton() { setDisplayedItems(); return ( @@ -274,11 +274,11 @@ function Settings() {

Settings

@@ -557,8 +557,8 @@ function ProvidersDetails(props) { ReactDOM.render( - } /> - }> + } /> + }> }/> }/> }/> @@ -907,4 +907,4 @@ function udpateDisplayedItems(e) { function setDisplayedItems() { setValueFromLocalStorage('contenttype'); setValueFromLocalStorage('content-display'); -} \ No newline at end of file +} diff --git a/src/themes.json b/src/themes.json index 1c365fef..2ba772f6 100644 --- a/src/themes.json +++ b/src/themes.json @@ -81,6 +81,15 @@ "colortextacc": "#6677EB", "colorborder": "#6677EB" }, + { + "name": "synth", + "imagebackground": "none", + "colorbackground": "#2B2C56", + "colorserachbackground": "#EFF1FC20", + "colortextpri": "#03c6fc", + "colortextacc": "#ff75e6", + "colorborder": "#6677EB" + }, { "name": "passion", "imagebackground": "none", @@ -119,7 +128,7 @@ }, { "name": "quadra", - "imagebackground": "url('./images/quadra.jpg')", + "imagebackground": "url('./sui/images/quadra.jpg')", "colorbackground": "#01011550", "colorserachbackground": "#FF2A6D59", "colortextpri": "#FF2A6DBF", @@ -128,7 +137,7 @@ }, { "name": "panam", - "imagebackground": "url('./images/panam.png')", + "imagebackground": "url('./sui/images/panam.png')", "colorbackground": "#010115BF", "colorserachbackground": "#FF2A6D59", "colortextpri": "#FF2A6D", @@ -137,7 +146,7 @@ }, { "name": "touch", - "imagebackground": "url('./images/touch.jpg", + "imagebackground": "url('./sui/images/touch.jpg", "colorbackground": "#FFFFFF30", "colorserachbackground": "#FF709C39", "colortextpri": "#840D1D", @@ -146,7 +155,7 @@ }, { "name": "peek", - "imagebackground": "url('./images/img30.jpg')", + "imagebackground": "url('./sui/images/img30.jpg')", "colorbackground": "#FFFFFF60", "colorserachbackground": "#487B7F59", "colortextpri": "#1C3032", @@ -154,4 +163,4 @@ "colorborder": "#D6B79E" } ] -} \ No newline at end of file +}