diff --git a/src/App.vue b/src/App.vue
index 8835b5d..c71b823 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -4,19 +4,26 @@
+
@@ -40,27 +47,26 @@ a {
main {
padding: 2rem 1rem;
- background-color: @color-2;
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='88' height='88' viewBox='0 0 88 88'%3E%3Cg fill='%230c9696' fill-opacity='0.35'%3E%3Cpath fill-rule='evenodd' d='M29.42 29.41c.36-.36.58-.85.58-1.4V0h-4v26H0v4h28c.55 0 1.05-.22 1.41-.58h.01zm0 29.18c.36.36.58.86.58 1.4V88h-4V62H0v-4h28c.56 0 1.05.22 1.41.58zm29.16 0c-.36.36-.58.85-.58 1.4V88h4V62h26v-4H60c-.55 0-1.05.22-1.41.58h-.01zM62 26V0h-4v28c0 .55.22 1.05.58 1.41.37.37.86.59 1.41.59H88v-4H62zM18 36c0-1.1.9-2 2-2h10a2 2 0 1 1 0 4H20a2 2 0 0 1-2-2zm0 16c0-1.1.9-2 2-2h10a2 2 0 1 1 0 4H20a2 2 0 0 1-2-2zm16-26a2 2 0 0 1 2-2 2 2 0 0 1 2 2v4a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-4zm16 0a2 2 0 0 1 2-2 2 2 0 0 1 2 2v4a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-4zM34 58a2 2 0 0 1 2-2 2 2 0 0 1 2 2v4a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-4zm16 0a2 2 0 0 1 2-2 2 2 0 0 1 2 2v4a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-4zM34 78a2 2 0 0 1 2-2 2 2 0 0 1 2 2v6a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-6zm16 0a2 2 0 0 1 2-2 2 2 0 0 1 2 2v6a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-6zM34 4a2 2 0 0 1 2-2 2 2 0 0 1 2 2v6a2 2 0 0 1-2 2 2 2 0 0 1-2-2V4zm16 0a2 2 0 0 1 2-2 2 2 0 0 1 2 2v6a2 2 0 0 1-2 2 2 2 0 0 1-2-2V4zm-8 82a2 2 0 1 1 4 0v2h-4v-2zm0-68a2 2 0 1 1 4 0v10a2 2 0 1 1-4 0V18zM66 4a2 2 0 1 1 4 0v8a2 2 0 1 1-4 0V4zm0 72a2 2 0 1 1 4 0v8a2 2 0 1 1-4 0v-8zm-48 0a2 2 0 1 1 4 0v8a2 2 0 1 1-4 0v-8zm0-72a2 2 0 1 1 4 0v8a2 2 0 1 1-4 0V4zm24-4h4v2a2 2 0 1 1-4 0V0zm0 60a2 2 0 1 1 4 0v10a2 2 0 1 1-4 0V60zm14-24c0-1.1.9-2 2-2h10a2 2 0 1 1 0 4H58a2 2 0 0 1-2-2zm0 16c0-1.1.9-2 2-2h10a2 2 0 1 1 0 4H58a2 2 0 0 1-2-2zm-28-6a2 2 0 1 0 0-4 2 2 0 0 0 0 4zm8 26a2 2 0 1 0 0-4 2 2 0 0 0 0 4zm16 0a2 2 0 1 0 0-4 2 2 0 0 0 0 4zM36 20a2 2 0 1 0 0-4 2 2 0 0 0 0 4zm16 0a2 2 0 1 0 0-4 2 2 0 0 0 0 4zm-8-8a2 2 0 1 0 0-4 2 2 0 0 0 0 4zm0 68a2 2 0 1 0 0-4 2 2 0 0 0 0 4zm16-34a2 2 0 1 0 0-4 2 2 0 0 0 0 4zm16-12a2 2 0 1 0 0 4 6 6 0 1 1 0 12 2 2 0 1 0 0 4 10 10 0 1 0 0-20zm-64 0a2 2 0 1 1 0 4 6 6 0 1 0 0 12 2 2 0 1 1 0 4 10 10 0 1 1 0-20zm56-12a2 2 0 1 0 0-4 2 2 0 0 0 0 4zm0 48a2 2 0 1 0 0-4 2 2 0 0 0 0 4zm-48 0a2 2 0 1 0 0-4 2 2 0 0 0 0 4zm0-48a2 2 0 1 0 0-4 2 2 0 0 0 0 4zm24 32a10 10 0 1 1 0-20 10 10 0 0 1 0 20zm0-4a6 6 0 1 0 0-12 6 6 0 0 0 0 12zm36-36a6 6 0 1 1 0-12 6 6 0 0 1 0 12zm0-4a2 2 0 1 0 0-4 2 2 0 0 0 0 4zM10 44c0-1.1.9-2 2-2h8a2 2 0 1 1 0 4h-8a2 2 0 0 1-2-2zm56 0c0-1.1.9-2 2-2h8a2 2 0 1 1 0 4h-8a2 2 0 0 1-2-2zm8 24c0-1.1.9-2 2-2h8a2 2 0 1 1 0 4h-8a2 2 0 0 1-2-2zM3 68c0-1.1.9-2 2-2h8a2 2 0 1 1 0 4H5a2 2 0 0 1-2-2zm0-48c0-1.1.9-2 2-2h8a2 2 0 1 1 0 4H5a2 2 0 0 1-2-2zm71 0c0-1.1.9-2 2-2h8a2 2 0 1 1 0 4h-8a2 2 0 0 1-2-2zm6 66a6 6 0 1 1 0-12 6 6 0 0 1 0 12zm0-4a2 2 0 1 0 0-4 2 2 0 0 0 0 4zM8 86a6 6 0 1 1 0-12 6 6 0 0 1 0 12zm0-4a2 2 0 1 0 0-4 2 2 0 0 0 0 4zm0-68A6 6 0 1 1 8 2a6 6 0 0 1 0 12zm0-4a2 2 0 1 0 0-4 2 2 0 0 0 0 4zm36 36a2 2 0 1 0 0-4 2 2 0 0 0 0 4z'/%3E%3C/g%3E%3C/svg%3E");
background-attachment: fixed;
background-color: rgba(0, 0, 0, 0.06);
min-height: calc(100vh - @headerHeight - @footerHeight);
+}
- h2 {
- margin: 0 auto 2em auto;
- width: max-content;
- padding: 0.85rem 2rem 0.75rem 2rem;
- border-radius: 25px;
- font-size: 28px;
- text-align: center;
- background-color: #ffffff;
- }
+h2 {
+ margin: 0 auto 1em auto;
+ width: max-content;
+ padding: 0.85rem 2rem 0.75rem 2rem;
+ border-radius: 25px;
+ font-size: 28px;
+ text-align: center;
+ background-color: #ffffff;
+}
- h3 {
- font-size: 22px;
- font-weight: lighter;
- text-transform: capitalize;
- margin-top: 0;
- }
+h3 {
+ font-size: 22px;
+ font-weight: lighter;
+ text-transform: capitalize;
+ margin-top: 0;
}
diff --git a/src/components/Header.vue b/src/components/Header.vue
index ef9cdb9..1ba0112 100644
--- a/src/components/Header.vue
+++ b/src/components/Header.vue
@@ -4,6 +4,8 @@
Fruits
+
+
@@ -18,10 +20,6 @@ header {
background-color: @color-2;
box-shadow: 0 0px 14px 0px #cecece;
- > a {
- padding: 0.5rem;
- }
-
h1 {
margin: 0;
font-size: 28px;
@@ -33,20 +31,35 @@ header {
top: 0;
left: 0;
right: 0;
- transition: all 0.3s ease-in-out;
- width: 100%;
- height: @headerHeight;
z-index: 15;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding: 0 1rem;
+ height: @headerHeight;
+ transition: all 0.3s ease-in-out;
a {
display: flex;
align-items: center;
+
+ img {
+ width: 35px;
+ height: 35px;
+ margin-right: 1rem;
+ }
}
- img {
- width: 35px;
- height: 35px;
- margin-right: 1rem;
+ .action-btn {
+ width: 42px;
+ height: 42px;
+ border: none;
+ border-radius: 50%;
+ background-color: @color-1;
+ color: @color-2;
+ font-size: 28px;
+ font-weight: lighter;
+ text-align: center;
}
}
}
diff --git a/src/components/Modal.vue b/src/components/Modal.vue
new file mode 100644
index 0000000..7606412
--- /dev/null
+++ b/src/components/Modal.vue
@@ -0,0 +1,185 @@
+
+
+
+
+
+
+
diff --git a/src/components/Skeleton.vue b/src/components/Skeleton.vue
new file mode 100644
index 0000000..2807fb2
--- /dev/null
+++ b/src/components/Skeleton.vue
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+
diff --git a/src/store/actions.js b/src/store/actions.js
index 736b6c5..0033257 100644
--- a/src/store/actions.js
+++ b/src/store/actions.js
@@ -8,5 +8,20 @@ export default {
getFruit: async ({ commit }, id) => {
const response = await axios.get(`http://localhost:3000/fruit/${id}`);
commit("setFruit", response.data);
+ },
+ getImageFromUnsplash: async (_, keyword) => {
+ const response = await axios.get(
+ `https://api.unsplash.com/search/photos?query=${keyword}&w=800&h=400`,
+ {
+ headers: {
+ Authorization: "Client-ID NjFwGYsnksnzH2uh12W55aobUpTe0h06oSVACd5cWt0",
+ "X-Total": 1
+ }
+ }
+ );
+
+ if (response.data.total === 0) throw new Error("0 found.");
+
+ return response.data.results[0];
}
};
diff --git a/src/store/index.js b/src/store/index.js
index 454749d..5ca38c7 100644
--- a/src/store/index.js
+++ b/src/store/index.js
@@ -6,7 +6,8 @@ import getters from "./getters";
export const state = {
fruits: [],
- fruit: {}
+ fruit: {},
+ modalIsOpen: false
};
Vue.use(Vuex);
diff --git a/src/store/mutations.js b/src/store/mutations.js
index de4cdf8..5baaa7d 100644
--- a/src/store/mutations.js
+++ b/src/store/mutations.js
@@ -12,5 +12,8 @@ export default {
},
removeFruit: (state, id) => {
state.fruits = state.fruits.filter(item => item.id != id);
+ },
+ toggleModal: state => {
+ state.modalIsOpen = !state.modalIsOpen;
}
};