diff --git a/README.md b/README.md index 4e81f36..6b914c7 100644 --- a/README.md +++ b/README.md @@ -38,6 +38,8 @@ The objective is to have a self-hosted place to keep useful links in one place, * 🏷 Set multiple tags to each link. +* 🗂 Assign each link to a collection where we can further group links. + **Also take a look at our planned features in the [project roadmap section](https://github.com/Daniel31x13/link-warden/wiki#project-roadmap).** ## Installation diff --git a/docker-compose.yml b/docker-compose.yml index e25d6ea..fec9548 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -7,6 +7,8 @@ services: image: mongo volumes: - ./mongo:/data/db + ports: + - 27017:27017 restart: unless-stopped link-warden-api: diff --git a/package-lock.json b/package-lock.json index 93fffbc..73a7899 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,6 +20,7 @@ "react-router-dom": "^6.3.0", "react-scripts": "5.0.0", "react-select": "^5.3.2", + "sass": "^1.53.0", "web-vitals": "^2.1.4" } }, @@ -8448,6 +8449,11 @@ "url": "https://opencollective.com/immer" } }, + "node_modules/immutable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", + "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==" + }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -14030,6 +14036,22 @@ "resolved": "https://registry.npmjs.org/sanitize.css/-/sanitize.css-13.0.0.tgz", "integrity": "sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA==" }, + "node_modules/sass": { + "version": "1.53.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.53.0.tgz", + "integrity": "sha512-zb/oMirbKhUgRQ0/GFz8TSAwRq2IlR29vOUJZOx0l8sV+CkHUfHa4u5nqrG+1VceZp7Jfj59SVW9ogdhTvJDcQ==", + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/sass-loader": { "version": "12.6.0", "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz", @@ -22432,6 +22454,11 @@ "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.12.tgz", "integrity": "sha512-lk7UNmSbAukB5B6dh9fnh5D0bJTOFKxVg2cyJWTYrWRfhLrLMBquONcUs3aFq507hNoIZEDDh8lb8UtOizSMhA==" }, + "immutable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", + "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==" + }, "import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -26292,6 +26319,16 @@ "resolved": "https://registry.npmjs.org/sanitize.css/-/sanitize.css-13.0.0.tgz", "integrity": "sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA==" }, + "sass": { + "version": "1.53.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.53.0.tgz", + "integrity": "sha512-zb/oMirbKhUgRQ0/GFz8TSAwRq2IlR29vOUJZOx0l8sV+CkHUfHa4u5nqrG+1VceZp7Jfj59SVW9ogdhTvJDcQ==", + "requires": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + } + }, "sass-loader": { "version": "12.6.0", "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz", diff --git a/package.json b/package.json index 3f7cb3d..4e18806 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "react-router-dom": "^6.3.0", "react-scripts": "5.0.0", "react-select": "^5.3.2", + "sass": "^1.53.0", "web-vitals": "^2.1.4" }, "scripts": { diff --git a/src/App.js b/src/App.js index 2190a34..c104528 100644 --- a/src/App.js +++ b/src/App.js @@ -7,10 +7,11 @@ import Filters from "./componets/Filters"; import sortList from "./modules/sortList"; import filter from "./modules/filterData"; import concatTags from "./modules/concatTags"; -import NoResults from "./componets/NoResults"; +import concatCollections from "./modules/concatCollections"; import Loader from "./componets/Loader"; import SideBar from "./componets/SideBar"; import Tags from "./routes/Tags.js"; +import Collections from "./routes/Collections.js"; import { Route, Routes } from "react-router-dom"; function App() { @@ -18,7 +19,6 @@ function App() { [newBox, setNewBox] = useState(false), [filterBox, setFilterBox] = useState(false), [searchQuery, setSearchQuery] = useState(""), - [numberOfResults, setNumberOfResults] = useState(0), [filterCheckbox, setFilterCheckbox] = useState([true, true, true]), [sortBy, setSortBy] = useState(1), [loader, setLoader] = useState(false), @@ -57,8 +57,6 @@ function App() { const filteredData = filter(data, searchQuery, filterCheckbox); - const tags = concatTags(data); - async function fetchData() { const res = await fetch(API_HOST + "/api"); const resJSON = await res.json(); @@ -78,10 +76,6 @@ function App() { // eslint-disable-next-line }, []); - useEffect(() => { - setNumberOfResults(filteredData.length); - }, [filteredData]); - useEffect(() => { if (lightMode) { document.body.classList.add("light"); @@ -95,7 +89,8 @@ function App() { return (
@@ -132,10 +127,6 @@ function App() { >
- {numberOfResults > 0 ? ( -

{numberOfResults} Bookmarks found

- ) : null} - {filterBox ? ( tags} + tags={() => concatTags(data)} + collections={() => concatCollections(data)} /> ) : null} - {numberOfResults === 0 ? : null} + {loader ? : null} @@ -170,7 +162,8 @@ function App() { lightMode={lightMode} SetLoader={SetLoader} data={filteredData} - tags={tags} + tags={concatTags(data)} + collections={concatCollections(data)} reFetch={fetchData} /> @@ -184,7 +177,22 @@ function App() { lightMode={lightMode} SetLoader={SetLoader} data={filteredData} - tags={tags} + tags={concatTags(data)} + collections={concatCollections(data)} + reFetch={fetchData} + /> + } + /> + + } diff --git a/src/componets/AddItem.js b/src/componets/AddItem.js index 24a489f..e17ac16 100644 --- a/src/componets/AddItem.js +++ b/src/componets/AddItem.js @@ -2,15 +2,24 @@ import { useState } from "react"; import "../styles/SendItem.css"; import TagSelection from "./TagSelection"; import addItem from "../modules/send"; +import CollectionSelection from "./CollectionSelection"; -const AddItem = ({ onExit, reFetch, tags, SetLoader, lightMode }) => { - const [name, setName] = useState(""); - const [link, setLink] = useState(""); - const [tag, setTag] = useState([]); +const AddItem = ({ + onExit, + reFetch, + tags, + collections, + SetLoader, + lightMode, +}) => { + const [name, setName] = useState(""), + [link, setLink] = useState(""), + [tag, setTag] = useState([]), + [collection, setCollection] = useState("Unsorted"); function newItem() { SetLoader(true); - addItem(name, link, tag, reFetch, onExit, SetLoader, "POST"); + addItem(name, link, tag, collection, reFetch, onExit, SetLoader, "POST"); } function SetName(e) { @@ -22,10 +31,13 @@ const AddItem = ({ onExit, reFetch, tags, SetLoader, lightMode }) => { } function SetTags(value) { - setTag(value); setTag(value.map((e) => e.value.toLowerCase())); } + function SetCollection(value) { + setCollection(value.value); + } + function abort(e) { if (e.target.className === "add-overlay") { onExit(); @@ -61,6 +73,14 @@ const AddItem = ({ onExit, reFetch, tags, SetLoader, lightMode }) => { Tags: (Optional) +

+ Collections: (Optional) +

+ diff --git a/src/componets/CollectionSelection.js b/src/componets/CollectionSelection.js new file mode 100644 index 0000000..a20999a --- /dev/null +++ b/src/componets/CollectionSelection.js @@ -0,0 +1,82 @@ +import CreatableSelect from "react-select/creatable"; + +export default function CollectionSelection({ + setCollection, + collections, + collection = "Unsorted", + lightMode, +}) { + const customStyles = { + container: (provided) => ({ + ...provided, + textShadow: "none", + }), + + placeholder: (provided) => ({ + ...provided, + color: "#a9a9a9", + }), + + option: (provided) => ({ + ...provided, + ':before': { + content: '""', + marginRight: 8, + }, + }), + + menu: (provided) => ({ + ...provided, + border: "solid", + borderWidth: "1px", + borderRadius: "0px", + borderColor: "rgb(141, 141, 141)", + opacity: "90%", + color: "gray", + background: lightMode ? "lightyellow" : "#273949", + boxShadow: + "rgba(0, 0, 0, 0.16) 0px 3px 6px, rgba(0, 0, 0, 0.23) 0px 3px 6px", + }), + + input: (provided) => ({ + ...provided, + color: lightMode ? "rgb(64, 64, 64)" : "white", + + }), + + singleValue: (provided) => ({ + ...provided, + ':before': { + content: '""', + marginRight: 8, + }, + color: lightMode ? "rgb(64, 64, 64)" : "white", + }), + + control: (provided, state) => ({ + ...provided, + background: lightMode ? "lightyellow" : "#273949", + border: "none", + borderRadius: "0px", + boxShadow: state.isFocused + ? "rgba(0, 0, 0, 0.16) 0px 3px 6px, rgba(0, 0, 0, 0.23) 0px 3px 6px" + : "rgba(0, 0, 0, 0.4) 0px 2px 4px, rgba(0, 0, 0, 0.3) 0px 7px 13px -3px, rgba(0, 0, 0, 0.2) 0px -3px 0px inset", + }), + }; + + const data = collections().map((e) => { + return { value: e, label: e }; + }); + + const defaultCollection = { value: collection, label: collection }; + + return ( + + ); +} diff --git a/src/componets/EditItem.js b/src/componets/EditItem.js index 78c0a76..c8f78aa 100644 --- a/src/componets/EditItem.js +++ b/src/componets/EditItem.js @@ -3,10 +3,20 @@ import deleteEntity from "../modules/deleteEntity"; import "../styles/SendItem.css"; import TagSelection from "./TagSelection"; import editItem from "../modules/send"; +import CollectionSelection from "./CollectionSelection"; -const EditItem = ({ tags, item, onExit, SetLoader, reFetch, lightMode }) => { - const [name, setName] = useState(item.name); - const [tag, setTag] = useState(item.tag); +const EditItem = ({ + tags, + collections, + item, + onExit, + SetLoader, + reFetch, + lightMode, +}) => { + const [name, setName] = useState(item.name), + [tag, setTag] = useState(item.tag), + [collection, setCollection] = useState(item.collection); function EditItem() { SetLoader(true); @@ -14,6 +24,7 @@ const EditItem = ({ tags, item, onExit, SetLoader, reFetch, lightMode }) => { name, item.link, tag, + collection, reFetch, onExit, SetLoader, @@ -33,10 +44,13 @@ const EditItem = ({ tags, item, onExit, SetLoader, reFetch, lightMode }) => { } function SetTags(value) { - setTag(value); setTag(value.map((e) => e.value.toLowerCase())); } + function SetCollection(value) { + setCollection(value.value); + } + function abort(e) { if (e.target.className === "add-overlay") { onExit(); @@ -50,10 +64,12 @@ const EditItem = ({ tags, item, onExit, SetLoader, reFetch, lightMode }) => {
-

Edit bookmark

+
+

Edit bookmark

+

Link:{" "} @@ -89,6 +105,15 @@ const EditItem = ({ tags, item, onExit, SetLoader, reFetch, lightMode }) => { tag={tag} lightMode={lightMode} /> +

+ Collection: (Optional) +

+ diff --git a/src/componets/List.js b/src/componets/List.js index ee8d87c..33b33f8 100644 --- a/src/componets/List.js +++ b/src/componets/List.js @@ -2,12 +2,14 @@ import "../styles/List.css"; import LazyLoad from "react-lazyload"; import ViewArchived from "./ViewArchived"; import EditItem from "./EditItem"; -import { useState } from "react"; +import { useState, useEffect } from "react"; import { Link } from "react-router-dom"; +import NoResults from "./NoResults"; -const List = ({ data, tags, reFetch, SetLoader, lightMode }) => { - const [editBox, setEditBox] = useState(false); - const [editIndex, setEditIndex] = useState(0); +const List = ({ data, tags, collections, reFetch, SetLoader, lightMode }) => { + const [editBox, setEditBox] = useState(false), + [editIndex, setEditIndex] = useState(0), + [numberOfResults, setNumberOfResults] = useState(0); function edit(index) { setEditBox(true); @@ -18,12 +20,23 @@ const List = ({ data, tags, reFetch, SetLoader, lightMode }) => { setEditBox(false); } + useEffect(() => { + setNumberOfResults(data.length); + }, [data]); + return (
+ {numberOfResults > 0 ? ( +

{numberOfResults} Bookmarks found

+ ) : null} + + {numberOfResults === 0 ? : null} + {editBox ? ( tags} + collections={() => collections} onExit={exitEditing} SetLoader={SetLoader} reFetch={reFetch} diff --git a/src/componets/SideBar.js b/src/componets/SideBar.js index c20a10e..6d1dcc2 100644 --- a/src/componets/SideBar.js +++ b/src/componets/SideBar.js @@ -7,11 +7,12 @@ import { MenuItem, SubMenu, } from "react-pro-sidebar"; -import "react-pro-sidebar/dist/css/styles.css"; +// import "react-pro-sidebar/dist/css/styles.css"; +import "../styles/SideBar_S.scss"; import "../styles/SideBar.css"; import { Link } from "react-router-dom"; -const SideBar = ({ tags, handleToggleSidebar, toggle }) => { +const SideBar = ({ tags, collections, handleToggleSidebar, toggle }) => { const sortedTags = tags.sort((a, b) => { const A = a.toLowerCase(), B = b.toLowerCase(); @@ -19,6 +20,19 @@ const SideBar = ({ tags, handleToggleSidebar, toggle }) => { if (A > B) return 1; return 0; }); + + const sortedCollections = collections + .sort((a, b) => { + const A = a.toLowerCase(), + B = b.toLowerCase(); + if (A < B) return -1; + if (A > B) return 1; + return 0; + }) + .filter((e) => { + return e !== "Unsorted"; + }); + return ( { className="sidebar" > -

LinkWarden

+

LinkWarden

- }> + }> -

All

+
All
+ +
+ + }> + +
Unsorted
+ } + suffix={{sortedCollections.length}} + title={
Collections
} + > + {sortedCollections.map((e, i) => { + const path = `/collections/${e}`; + return ( +
} key={i}> + {e} + + ); + })} + + } suffix={{sortedTags.length}} - title={

Tags

} + title={
Tags
} > {sortedTags.map((e, i) => { const path = `/tags/${e}`; return ( - - {e} + #
} key={i}> + {e} ); })} diff --git a/src/componets/TagSelection.js b/src/componets/TagSelection.js index 3f36e76..5515638 100644 --- a/src/componets/TagSelection.js +++ b/src/componets/TagSelection.js @@ -1,6 +1,5 @@ import CreatableSelect from "react-select/creatable"; -// lightMode ? "Black" : "White" export default function TagSelection({ setTags, tags, tag = [], lightMode }) { const customStyles = { container: (provided) => ({ @@ -13,16 +12,19 @@ export default function TagSelection({ setTags, tags, tag = [], lightMode }) { color: "#a9a9a9", }), + option: (provided) => ({ + ...provided, + ':before': { + content: '"#"', + marginRight: 8, + }, + }), + multiValueRemove: (provided) => ({ ...provided, color: "gray", }), - indicatorSeparator: (provided) => ({ - ...provided, - display: "none", - }), - menu: (provided) => ({ ...provided, border: "solid", @@ -41,6 +43,14 @@ export default function TagSelection({ setTags, tags, tag = [], lightMode }) { color: lightMode ? "rgb(64, 64, 64)" : "white", }), + multiValueLabel: (provided) => ({ + ...provided, + ':before': { + content: '"#"', + marginRight: 4, + }, + }), + control: (provided, state) => ({ ...provided, background: lightMode ? "lightyellow" : "#273949", @@ -61,6 +71,7 @@ export default function TagSelection({ setTags, tags, tag = [], lightMode }) { return ( { + let collections = []; + + for (let i = 0; i < data.length; i++) { + collections = collections.concat(data[i].collection); + } + + collections = collections.filter((v, i, a) => a.indexOf(v) === i); + + return collections; +}; + +export default concatCollections; diff --git a/src/modules/filterData.js b/src/modules/filterData.js index cb77e46..5867bfe 100644 --- a/src/modules/filterData.js +++ b/src/modules/filterData.js @@ -4,24 +4,24 @@ const filteredData = ( filterCheckbox ) => { return data.filter((e) => { - const name = e.name.toLowerCase().includes(searchQuery.toLowerCase()); - const title = e.title.toLowerCase().includes(searchQuery.toLowerCase()); + const linkName = e.name.toLowerCase().includes(searchQuery.toLowerCase()); + const websiteTitle = e.title.toLowerCase().includes(searchQuery.toLowerCase()); const tags = e.tag.some((e) => e.includes(searchQuery.toLowerCase())); - if (filterCheckbox === [true, true, true]) { - return name || title || tags; + if (filterCheckbox.every(e => e === true)) { + return linkName || websiteTitle || tags; } else if (filterCheckbox[0] && filterCheckbox[2]) { - return name || tags; + return linkName || tags; } else if (filterCheckbox[0] && filterCheckbox[1]) { - return name || title; + return linkName || websiteTitle; } else if (filterCheckbox[2] && filterCheckbox[1]) { - return tags || title; + return tags || websiteTitle; } else if (filterCheckbox[0]) { - return name; + return linkName; } else if (filterCheckbox[1]) { - return tags; + return websiteTitle; } else if (filterCheckbox[2]) { - return title; + return tags; } }); }; diff --git a/src/modules/send.js b/src/modules/send.js index 4b22bec..715382a 100644 --- a/src/modules/send.js +++ b/src/modules/send.js @@ -5,6 +5,7 @@ const addItem = async ( name, link, tag, + collection, reFetch, onExit, SetLoader, @@ -36,6 +37,7 @@ const addItem = async ( title: title, link: link, tag: tag, + collection: collection, date: dateCreated, }), headers: { diff --git a/src/routes/Collections.js b/src/routes/Collections.js new file mode 100644 index 0000000..a08f196 --- /dev/null +++ b/src/routes/Collections.js @@ -0,0 +1,24 @@ +import { useParams } from "react-router-dom"; +import List from "../componets/List"; + +const Collections = ({ data, tags, collections, SetLoader, lightMode, reFetch }) => { + const { collectionId } = useParams(); + const dataWithMatchingTag = data.filter((e) => { + return e.collection.includes(collectionId); + }); + + return ( +
+ +
+ ); +}; + +export default Collections; diff --git a/src/routes/Tags.js b/src/routes/Tags.js index d2f8fee..1d2abb7 100644 --- a/src/routes/Tags.js +++ b/src/routes/Tags.js @@ -1,7 +1,7 @@ import { useParams } from "react-router-dom"; import List from "../componets/List"; -const Tags = ({ data, tags, SetLoader, lightMode, reFetch }) => { +const Tags = ({ data, tags, collections, SetLoader, lightMode, reFetch }) => { const { tagId } = useParams(); const dataWithMatchingTag = data.filter((e) => { return e.tag.includes(tagId); @@ -13,6 +13,7 @@ const Tags = ({ data, tags, SetLoader, lightMode, reFetch }) => { lightMode={lightMode} data={dataWithMatchingTag} tags={tags} + collections={collections} SetLoader={SetLoader} reFetch={reFetch} /> diff --git a/src/styles/App.css b/src/styles/App.css index f73e08b..7a8c882 100644 --- a/src/styles/App.css +++ b/src/styles/App.css @@ -32,7 +32,7 @@ } .content { - padding: 0px 20px 20px 20px; + padding: 0px 20px 0 20px; } .head { @@ -86,21 +86,11 @@ input:focus { outline: none; } -.results { - margin: 20px 20px 0px 0px; - display: inline-block; -} - -.no-results { - text-align: center; - padding-top: 5%; - padding-bottom: 5%; - box-shadow: rgba(0, 0, 0, 0.4) 0px 2px 4px, - rgba(0, 0, 0, 0.3) 0px 7px 13px -3px, rgba(0, 0, 0, 0.2) 0px -3px 0px inset; - margin-top: 10px; -} - .dark-light-btn { margin-left: 10px; font-size: 1.2em; } + +.select { + font-family: "Font Awesome 5 Free" +} \ No newline at end of file diff --git a/src/styles/List.css b/src/styles/List.css index 9544082..52f13dd 100644 --- a/src/styles/List.css +++ b/src/styles/List.css @@ -172,9 +172,9 @@ } .delete { - margin: 20px 20px 20px 0px; - background-color: #273949; - float: right; + margin-top: 20px; + margin-left: 10px; + display: inline; font-size: 1.1rem; width: 40px; height: 40px; @@ -188,17 +188,13 @@ cursor: pointer; box-shadow: rgba(0, 0, 0, 0.4) 0px 2px 4px, rgba(0, 0, 0, 0.3) 0px 7px 13px -3px, rgba(0, 0, 0, 0.2) 0px -3px 0px inset; - background-color: #273949; + background-color: rgba(255, 75, 75, 0.8); + color: white; border: none; - transition: background-color 0.1s; + transition: box-shadow 0.1s; } .delete:hover { - background-color: rgba(255, 75, 75, 0.8); - color: #d8d8d8; -} - -.delete:active { box-shadow: 0px 0px 10px rgb(255, 83, 140); } @@ -208,3 +204,20 @@ opacity: 80%; margin-right: auto; } + +.no-results { + text-align: center; + padding-top: 5%; + padding-bottom: 5%; + box-shadow: rgba(0, 0, 0, 0.4) 0px 2px 4px, + rgba(0, 0, 0, 0.3) 0px 7px 13px -3px, rgba(0, 0, 0, 0.2) 0px -3px 0px inset; + margin-top: 10px; +} + +.edit-title { + display: inline; +} + +.title-delete-group { + text-align: center; +} \ No newline at end of file diff --git a/src/styles/SideBar.css b/src/styles/SideBar.css index 219396e..75d71e4 100644 --- a/src/styles/SideBar.css +++ b/src/styles/SideBar.css @@ -3,7 +3,7 @@ position: fixed; } -.sidebar h1 { +.sidebar h3 { text-align: center; } @@ -17,18 +17,11 @@ text-decoration: underline; } -.pro-sidebar-layout { - background: #384952; - text-shadow: none; - color: white; -} - .badge { padding: 3px 10px; font-size: 0.8rem; letter-spacing: 1px; border-radius: 14px; - background-color: rgb(52, 121, 181); } .sidebar-icon { @@ -46,4 +39,17 @@ .pro-inner-item { margin-bottom: 10px; -} \ No newline at end of file +} + +.sidebar-entity { + font-size: 1.2rem; +} + +.sidebar-item-prefix { + font-family: "Font Awesome 5 Free"; +} + +.pro-sidebar-layout * { + color: white; + text-shadow: none; +} diff --git a/src/styles/SideBar_S.scss b/src/styles/SideBar_S.scss new file mode 100644 index 0000000..48c4bc8 --- /dev/null +++ b/src/styles/SideBar_S.scss @@ -0,0 +1,4 @@ +$sidebar-bg-color: #373737; +$submenu-bg-color: #373737; + +@import '~react-pro-sidebar/dist/scss/styles.scss'; \ No newline at end of file diff --git a/src/styles/index.css b/src/styles/index.css index 6f71356..dce6689 100644 --- a/src/styles/index.css +++ b/src/styles/index.css @@ -23,11 +23,6 @@ body { content: ""; } -.delete { - background-color: #1f2c38; - color: #ffffffb6; -} - .no-results { background-color: #1f2c38; } @@ -111,11 +106,6 @@ body { color: gray; } -.light .delete { - background-color: lightyellow; - color: rgb(176, 176, 176); -} - .light input { background-color: lightyellow; color: black;