@articles-media/articles-dev-box 1.0.1 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -6
- package/dist/articles-dev-box.css +1 -0
- package/dist/articles-dev-box.js +3341 -0
- package/dist/articles-dev-box.umd.cjs +11 -0
- package/package.json +22 -7
- package/index.js +0 -16
- package/src/Button.js +0 -61
- package/src/GameScoreboard.jsx +0 -234
- package/src/ReturnToLauncherButton.jsx +0 -53
- package/src/components/Ad.jsx +0 -629
- package/src/components/ArticlesAd.jsx +0 -76
- package/src/hooks/Ads/useAd.js +0 -55
- package/src/hooks/Ads/useAds.js +0 -54
- package/src/hooks/useGameScoreboard.js +0 -59
- package/styles/components/Ad.scss +0 -223
- package/styles/components/GameScoreboard.scss +0 -37
- package/styles/global.scss +0 -98
- package/styles/variables.scss +0 -3
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
|
|
3
|
-
// const ArticlesAd = () => {
|
|
4
|
-
// return (
|
|
5
|
-
// <div style={{ border: '1px solid #ccc', padding: '20px', margin: '10px', textAlign: 'center' }}>
|
|
6
|
-
// <p>Advertisement</p>
|
|
7
|
-
// </div>
|
|
8
|
-
// );
|
|
9
|
-
// };
|
|
10
|
-
|
|
11
|
-
// export default ArticlesAd;
|
|
12
|
-
|
|
13
|
-
// import Script from "next/script";
|
|
14
|
-
import { useEffect } from "react";
|
|
15
|
-
// import { useStore } from "@/hooks/useStore";
|
|
16
|
-
|
|
17
|
-
// Non typescript version, if copying consider using the typescript version instead from a repo like amcot or battle-trap
|
|
18
|
-
|
|
19
|
-
export default function ArticlesAd({
|
|
20
|
-
darkMode
|
|
21
|
-
}) {
|
|
22
|
-
|
|
23
|
-
// const darkMode = useStore((state) => state.darkMode)
|
|
24
|
-
|
|
25
|
-
useEffect(() => {
|
|
26
|
-
// if (!process.env.NEXT_PUBLIC_ARTICLES_OAUTH_ID) {
|
|
27
|
-
// console.log("NEXT_PUBLIC_ARTICLES_OAUTH_ID is not set, skipping Articles Media Sign In button initialization.");
|
|
28
|
-
// }
|
|
29
|
-
}, []);
|
|
30
|
-
|
|
31
|
-
useEffect(() => {
|
|
32
|
-
const script = document.createElement('script');
|
|
33
|
-
|
|
34
|
-
script.src = "https://accounts.articles.media/js/ad.js";
|
|
35
|
-
script.async = true;
|
|
36
|
-
|
|
37
|
-
document.body.appendChild(script);
|
|
38
|
-
|
|
39
|
-
return () => {
|
|
40
|
-
document.body.removeChild(script);
|
|
41
|
-
}
|
|
42
|
-
}, []);
|
|
43
|
-
|
|
44
|
-
return (
|
|
45
|
-
<div className="">
|
|
46
|
-
|
|
47
|
-
{/* <script
|
|
48
|
-
src={process.env.NODE_ENV === "development" ?
|
|
49
|
-
// `${process.env.NEXT_PUBLIC_LOCAL_ACCOUNTS_ADDRESS}/js/ad.js`
|
|
50
|
-
`https://accounts.articles.media/js/ad.js?darkMode=${darkMode}`
|
|
51
|
-
:
|
|
52
|
-
`https://accounts.articles.media/js/ad.js?darkMode=${darkMode}`
|
|
53
|
-
}
|
|
54
|
-
strategy="afterInteractive"
|
|
55
|
-
|
|
56
|
-
data-version="1"
|
|
57
|
-
// data-articles-color-mode="Dark"
|
|
58
|
-
// data-articles-button-style={style}
|
|
59
|
-
// data-articles-client-id={process.env.NEXT_PUBLIC_ARTICLES_OAUTH_ID}
|
|
60
|
-
// data-articles-redirect-uri="https://localhost:3002"
|
|
61
|
-
// data-articles-redirect-uri={process.env.NEXT_PUBLIC_ARTICLES_REDIRECT_URI}
|
|
62
|
-
// data-articles-authHost={
|
|
63
|
-
// process.env.NODE_ENV == "development" ? // "http://localhost:3001"
|
|
64
|
-
// process.env.NEXT_PUBLIC_LOCAL_ACCOUNTS_ADDRESS
|
|
65
|
-
// :
|
|
66
|
-
// "https://accounts.articles.media"
|
|
67
|
-
// }
|
|
68
|
-
/> */}
|
|
69
|
-
|
|
70
|
-
<div className={"articles-media-ad"}>
|
|
71
|
-
|
|
72
|
-
</div>
|
|
73
|
-
|
|
74
|
-
</div>
|
|
75
|
-
);
|
|
76
|
-
}
|
package/src/hooks/Ads/useAd.js
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import useSWR from "swr";
|
|
2
|
-
|
|
3
|
-
import axios from "axios";
|
|
4
|
-
|
|
5
|
-
const fetcher = async (data) => {
|
|
6
|
-
if (process.env.NODE_ENV === 'development') {
|
|
7
|
-
try {
|
|
8
|
-
const res = await axios.get(`http://localhost:3001/api/ads/${data.ad_id}`, {
|
|
9
|
-
params: {
|
|
10
|
-
ad_id: data.ad_id
|
|
11
|
-
}
|
|
12
|
-
});
|
|
13
|
-
return res.data.result;
|
|
14
|
-
} catch (err) {
|
|
15
|
-
// Failed to fetch from localhost, fallback to default URL
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
return axios.get(data.url, {
|
|
20
|
-
params: {
|
|
21
|
-
ad_id: data.ad_id
|
|
22
|
-
}
|
|
23
|
-
}).then((res) => res.data.result);
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
const minutes = 60;
|
|
27
|
-
const options = {
|
|
28
|
-
dedupingInterval: ((1000 * 60) * minutes),
|
|
29
|
-
// keepPreviousData: true,
|
|
30
|
-
// fallbackData: []
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
const useAd = (ad_id) => {
|
|
34
|
-
|
|
35
|
-
const { data, error, isLoading, mutate } = useSWR(
|
|
36
|
-
ad_id ?
|
|
37
|
-
{
|
|
38
|
-
url: `https://articles.media/api/ads/${ad_id}`,
|
|
39
|
-
ad_id
|
|
40
|
-
}
|
|
41
|
-
:
|
|
42
|
-
null,
|
|
43
|
-
fetcher,
|
|
44
|
-
options
|
|
45
|
-
);
|
|
46
|
-
|
|
47
|
-
return {
|
|
48
|
-
data,
|
|
49
|
-
error,
|
|
50
|
-
isLoading,
|
|
51
|
-
mutate,
|
|
52
|
-
};
|
|
53
|
-
};
|
|
54
|
-
|
|
55
|
-
export default useAd;
|
package/src/hooks/Ads/useAds.js
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import useSWR from "swr";
|
|
2
|
-
|
|
3
|
-
import axios from "axios";
|
|
4
|
-
import { minutesToMilliseconds } from "date-fns";
|
|
5
|
-
|
|
6
|
-
const fetcher = async (data) => {
|
|
7
|
-
if (process.env.NODE_ENV === 'development') {
|
|
8
|
-
try {
|
|
9
|
-
const res = await axios.get("http://localhost:3001/api/ads", {
|
|
10
|
-
params: {
|
|
11
|
-
// ad_id: data.ad_id
|
|
12
|
-
}
|
|
13
|
-
});
|
|
14
|
-
return res.data;
|
|
15
|
-
} catch (err) {
|
|
16
|
-
// Failed to fetch from localhost, fallback to default URL
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
return axios.get(data.url, {
|
|
21
|
-
params: {
|
|
22
|
-
// ad_id: data.ad_id
|
|
23
|
-
}
|
|
24
|
-
}).then((res) => res.data);
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
const minutes = 60;
|
|
28
|
-
const options = {
|
|
29
|
-
dedupingInterval: minutesToMilliseconds(minutes),
|
|
30
|
-
focusThrottleInterval: minutesToMilliseconds(minutes),
|
|
31
|
-
// keepPreviousData: true,
|
|
32
|
-
// fallbackData: []
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
const useAds = (params) => {
|
|
36
|
-
|
|
37
|
-
const { data, error, isLoading, mutate } = useSWR(
|
|
38
|
-
{
|
|
39
|
-
url: `https://articles.media/api/ads`,
|
|
40
|
-
// ad_id
|
|
41
|
-
},
|
|
42
|
-
fetcher,
|
|
43
|
-
options
|
|
44
|
-
);
|
|
45
|
-
|
|
46
|
-
return {
|
|
47
|
-
data,
|
|
48
|
-
error,
|
|
49
|
-
isLoading,
|
|
50
|
-
mutate,
|
|
51
|
-
};
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
export default useAds;
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import useSWR from "swr";
|
|
2
|
-
|
|
3
|
-
import axios from "axios";
|
|
4
|
-
|
|
5
|
-
const fetcher = async (obj) => {
|
|
6
|
-
if (process.env.NODE_ENV === 'development') {
|
|
7
|
-
try {
|
|
8
|
-
const res = await axios.get("http://localhost:3001/api/community/games/scoreboard", {
|
|
9
|
-
params: {
|
|
10
|
-
game: obj.game,
|
|
11
|
-
}
|
|
12
|
-
});
|
|
13
|
-
return res.data;
|
|
14
|
-
} catch (err) {
|
|
15
|
-
// Failed to fetch from localhost, fallback to default URL
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
return axios.get(obj.url, {
|
|
20
|
-
params: {
|
|
21
|
-
game: obj.game,
|
|
22
|
-
}
|
|
23
|
-
}).then((res) => res.data);
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
const options = {
|
|
27
|
-
dedupingInterval: ((1000 * 60) * 30),
|
|
28
|
-
refreshInterval: 0,
|
|
29
|
-
revalidateOnFocus: false,
|
|
30
|
-
revalidateIfStale: false,
|
|
31
|
-
shouldRetryOnError: false,
|
|
32
|
-
// fallbackData: []
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
const useGameScoreboard = (params) => {
|
|
36
|
-
|
|
37
|
-
const { data, error, isLoading, isValidating, mutate } = useSWR(
|
|
38
|
-
params?.game ?
|
|
39
|
-
{
|
|
40
|
-
// url: "/api/community/games/scoreboard",
|
|
41
|
-
url: "https://articles.media/api/community/games/scoreboard",
|
|
42
|
-
game: params.game,
|
|
43
|
-
}
|
|
44
|
-
:
|
|
45
|
-
null,
|
|
46
|
-
fetcher,
|
|
47
|
-
options
|
|
48
|
-
);
|
|
49
|
-
|
|
50
|
-
return {
|
|
51
|
-
data,
|
|
52
|
-
error,
|
|
53
|
-
isLoading,
|
|
54
|
-
isValidating,
|
|
55
|
-
mutate,
|
|
56
|
-
};
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
export default useGameScoreboard;
|
|
@@ -1,223 +0,0 @@
|
|
|
1
|
-
@use "../global.scss" as *;
|
|
2
|
-
|
|
3
|
-
.ad-wrap {
|
|
4
|
-
z-index: 1;
|
|
5
|
-
margin: 0 auto;
|
|
6
|
-
margin-bottom: 1rem;
|
|
7
|
-
max-width: 312px;
|
|
8
|
-
width: 100%;
|
|
9
|
-
|
|
10
|
-
.ad {
|
|
11
|
-
position: relative;
|
|
12
|
-
align-self: flex-start;
|
|
13
|
-
width: 100%;
|
|
14
|
-
z-index: 2;
|
|
15
|
-
font-family: brandon-grotesque, sans-serif;
|
|
16
|
-
@include shadow-articles;
|
|
17
|
-
font-size: 14px;
|
|
18
|
-
|
|
19
|
-
@include media-breakpoint-down(md) {
|
|
20
|
-
font-size: 16px;
|
|
21
|
-
width: 100%;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
.main-panel {
|
|
25
|
-
background-color: var(--articles-ad-background-color, var(--card-background));
|
|
26
|
-
color: var(--articles-ad-font-color, var(--bs-body-color));
|
|
27
|
-
// background-color: #343746;
|
|
28
|
-
height: 400px;
|
|
29
|
-
display: flex;
|
|
30
|
-
flex-direction: column;
|
|
31
|
-
|
|
32
|
-
.ad-warning {
|
|
33
|
-
// background-color: $base-color;
|
|
34
|
-
// background-color: white;
|
|
35
|
-
// color: black;
|
|
36
|
-
padding: 0.1rem 0.75rem;
|
|
37
|
-
font-family: brandon-grotesque, sans-serif;
|
|
38
|
-
// font-style: normal;
|
|
39
|
-
font-weight: 900;
|
|
40
|
-
font-size: 1rem;
|
|
41
|
-
border-bottom: 1px solid var(--articles-ad-border-color, var(--card-background));
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
.content-wrap {
|
|
45
|
-
display: flex;
|
|
46
|
-
// flex-direction: row;
|
|
47
|
-
flex-direction: column;
|
|
48
|
-
align-items: center;
|
|
49
|
-
|
|
50
|
-
@include media-breakpoint-up(lg) {
|
|
51
|
-
flex-direction: column;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
.photo-banner {
|
|
56
|
-
position: relative;
|
|
57
|
-
height: 100px;
|
|
58
|
-
width: 100px;
|
|
59
|
-
flex-shrink: 0;
|
|
60
|
-
display: flex;
|
|
61
|
-
// justify-content: center;
|
|
62
|
-
align-items: center;
|
|
63
|
-
padding-left: 1rem;
|
|
64
|
-
margin-left: 0.75rem;
|
|
65
|
-
|
|
66
|
-
// @include media-breakpoint-up(lg) {
|
|
67
|
-
margin-left: 0rem;
|
|
68
|
-
height: 125px;
|
|
69
|
-
width: 100%;
|
|
70
|
-
// }
|
|
71
|
-
|
|
72
|
-
.logo {
|
|
73
|
-
// padding: 1rem;
|
|
74
|
-
// $height: 125px;
|
|
75
|
-
// position: absolute;
|
|
76
|
-
// top: 1rem;
|
|
77
|
-
// left: 50%;
|
|
78
|
-
// transform: translateX(-50%);
|
|
79
|
-
// height: $height;
|
|
80
|
-
object-fit: cover;
|
|
81
|
-
z-index: 1;
|
|
82
|
-
|
|
83
|
-
img {
|
|
84
|
-
width: 75px;
|
|
85
|
-
height: 75px;
|
|
86
|
-
object-fit: contain;
|
|
87
|
-
|
|
88
|
-
// @include media-breakpoint-up(lg) {
|
|
89
|
-
// width: 100px;
|
|
90
|
-
// height: 100px;
|
|
91
|
-
// }
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
.icon {
|
|
96
|
-
display: none;
|
|
97
|
-
position: absolute;
|
|
98
|
-
bottom: calc(-125px / 2);
|
|
99
|
-
left: 20px;
|
|
100
|
-
height: 125px;
|
|
101
|
-
display: flex;
|
|
102
|
-
align-items: center;
|
|
103
|
-
justify-content: center;
|
|
104
|
-
color: white;
|
|
105
|
-
font-size: 3.5rem;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
.photo {
|
|
109
|
-
position: absolute;
|
|
110
|
-
left: 0;
|
|
111
|
-
top: 0;
|
|
112
|
-
width: 100%;
|
|
113
|
-
height: 100%;
|
|
114
|
-
object-fit: cover;
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
.details-wrap {
|
|
119
|
-
width: 100%;
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
.details,
|
|
123
|
-
.detail-title {
|
|
124
|
-
padding: 0.75rem;
|
|
125
|
-
// color: white;
|
|
126
|
-
display: grid;
|
|
127
|
-
grid-gap: 5px 5px;
|
|
128
|
-
grid-template-columns: repeat(2, 1fr);
|
|
129
|
-
padding-bottom: 0rem;
|
|
130
|
-
|
|
131
|
-
@include media-breakpoint-down(md) {
|
|
132
|
-
// padding-top: 80px;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
.detail {
|
|
136
|
-
// margin-left: 5%;
|
|
137
|
-
// width: 50%;
|
|
138
|
-
|
|
139
|
-
.icon {
|
|
140
|
-
display: inline-block;
|
|
141
|
-
width: 1.5rem;
|
|
142
|
-
|
|
143
|
-
i {
|
|
144
|
-
justify-content: flex-start;
|
|
145
|
-
display: flex;
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
.short-description {
|
|
152
|
-
padding: 0.75rem;
|
|
153
|
-
padding-top: 0.25rem;
|
|
154
|
-
padding-bottom: 0rem;
|
|
155
|
-
min-height: 50px;
|
|
156
|
-
overflow-y: auto;
|
|
157
|
-
max-height: 125px;
|
|
158
|
-
// @include articles-scrollbar;
|
|
159
|
-
@include alternate-scrollbar;
|
|
160
|
-
// color: white;
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
.detail-title {
|
|
164
|
-
display: flex;
|
|
165
|
-
justify-content: space-between;
|
|
166
|
-
align-items: center;
|
|
167
|
-
|
|
168
|
-
// .detail {
|
|
169
|
-
// // font-size: 2rem;
|
|
170
|
-
// width: 100%;
|
|
171
|
-
// font-family: brandon-grotesque, sans-serif;
|
|
172
|
-
// font-style: normal;
|
|
173
|
-
// font-weight: 900;
|
|
174
|
-
// font-size: 1.25rem;
|
|
175
|
-
|
|
176
|
-
// .icon {
|
|
177
|
-
// margin-right: 1rem;
|
|
178
|
-
// }
|
|
179
|
-
// }
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
.action-wrap {
|
|
183
|
-
// background-color: #343746;
|
|
184
|
-
// color: white;
|
|
185
|
-
border-top: 1px solid var(--articles-ad-border-color, var(--card-background));
|
|
186
|
-
|
|
187
|
-
.action {
|
|
188
|
-
// color: white;
|
|
189
|
-
// margin-top: 0.75rem;
|
|
190
|
-
padding: 0.25rem;
|
|
191
|
-
display: flex;
|
|
192
|
-
justify-content: center;
|
|
193
|
-
align-items: center;
|
|
194
|
-
border: 1px solid var(--articles-ad-border-color, var(--card-background));
|
|
195
|
-
color: var(--articles-ad-font-color, var(--bs-body-color));
|
|
196
|
-
border-radius: 10px;
|
|
197
|
-
margin-left: auto;
|
|
198
|
-
margin-right: auto;
|
|
199
|
-
cursor: pointer;
|
|
200
|
-
transition-duration: 200ms;
|
|
201
|
-
|
|
202
|
-
&:hover {
|
|
203
|
-
background-color: white;
|
|
204
|
-
color: black;
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
&:active {
|
|
208
|
-
background-color: gray;
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
.advertise-with-us {
|
|
216
|
-
background-color: var(--articles-ad-background-color, var(--card-background));
|
|
217
|
-
border-top: 2px solid var(--articles-ad-border-color, var(--card-background));
|
|
218
|
-
|
|
219
|
-
a {
|
|
220
|
-
color: var(--articles-ad-font-color, var(--bs-body-color))!important;
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
@use "../global.scss" as *;
|
|
2
|
-
|
|
3
|
-
.scoreboard {
|
|
4
|
-
margin-top: 1rem;
|
|
5
|
-
max-width: 300px;
|
|
6
|
-
width: 100%;
|
|
7
|
-
margin-bottom: 1rem;
|
|
8
|
-
|
|
9
|
-
@include media-breakpoint-up(lg) {
|
|
10
|
-
margin-top: 0rem;
|
|
11
|
-
margin-bottom: 0rem;
|
|
12
|
-
display: block;
|
|
13
|
-
position: absolute;
|
|
14
|
-
left: 1rem;
|
|
15
|
-
top: 50%;
|
|
16
|
-
transform: translateY(-50%);
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
.articles-game-scoreboard {
|
|
21
|
-
border: 1px solid rgb(206, 212, 218);
|
|
22
|
-
border-radius: 8px;
|
|
23
|
-
box-shadow: rgba(0, 0, 0, 0.07) 0px 2px 8px;
|
|
24
|
-
// background: rgb(255, 255, 255);
|
|
25
|
-
color: rgb(34, 34, 34);
|
|
26
|
-
width: 100%;
|
|
27
|
-
max-width: 350px;
|
|
28
|
-
margin: 0px 1rem;
|
|
29
|
-
overflow: hidden;
|
|
30
|
-
display: flex;
|
|
31
|
-
flex-direction: column;
|
|
32
|
-
z-index: 1;
|
|
33
|
-
position: fixed;
|
|
34
|
-
bottom: 50%;
|
|
35
|
-
transform: translateY(50%);
|
|
36
|
-
left: 8px;
|
|
37
|
-
}
|
package/styles/global.scss
DELETED
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
@use "sass:map";
|
|
2
|
-
|
|
3
|
-
@use "./variables.scss" as *;
|
|
4
|
-
|
|
5
|
-
@mixin alternate-scrollbar {
|
|
6
|
-
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
// Define Bootstrap-like breakpoints
|
|
10
|
-
$grid-breakpoints: (
|
|
11
|
-
xs: 0,
|
|
12
|
-
sm: 576px,
|
|
13
|
-
md: 768px,
|
|
14
|
-
lg: 992px,
|
|
15
|
-
xl: 1200px,
|
|
16
|
-
xxl: 1400px
|
|
17
|
-
);
|
|
18
|
-
|
|
19
|
-
// Mixin for media-breakpoint-up
|
|
20
|
-
@mixin media-breakpoint-up($name) {
|
|
21
|
-
$min: map.get($grid-breakpoints, $name);
|
|
22
|
-
@if $min != null and $min != 0 {
|
|
23
|
-
@media (min-width: $min) {
|
|
24
|
-
@content;
|
|
25
|
-
}
|
|
26
|
-
} @else if $min == 0 {
|
|
27
|
-
@content;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
// Mixin for media-breakpoint-down
|
|
32
|
-
@mixin media-breakpoint-down($name) {
|
|
33
|
-
$max: map.get($grid-breakpoints, $name);
|
|
34
|
-
@if $max != null and $max != 0 {
|
|
35
|
-
@media (max-width: $max) {
|
|
36
|
-
@content;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
$shadow-articles: 0 0 0 1px rgba(0, 0, 0, 25%), 0 2px 3px rgba(0, 0, 0, 20%);
|
|
42
|
-
|
|
43
|
-
@mixin shadow-articles {
|
|
44
|
-
box-shadow: 0 0 0 1px rgba(0, 0, 0, 25%), 0 2px 3px rgba(0, 0, 0, 20%);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
.shadow-articles {
|
|
48
|
-
box-shadow:
|
|
49
|
-
0 0 0 1px rgba(0, 0, 0, 30%),
|
|
50
|
-
0 2px 3px rgba(0, 0, 0, 20%);
|
|
51
|
-
@include shadow-articles;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
// @mixin alternate-scrollbar {
|
|
55
|
-
// /* Width */
|
|
56
|
-
// &::-webkit-scrollbar {
|
|
57
|
-
// width: 10px;
|
|
58
|
-
// height: 10px;
|
|
59
|
-
// }
|
|
60
|
-
|
|
61
|
-
// /* Track */
|
|
62
|
-
// &::-webkit-scrollbar-track {
|
|
63
|
-
// background: rgba(255, 255, 255, 0);
|
|
64
|
-
// }
|
|
65
|
-
|
|
66
|
-
// /* Handle */
|
|
67
|
-
// &::-webkit-scrollbar-thumb {
|
|
68
|
-
// background: #000;
|
|
69
|
-
// height: 10px;
|
|
70
|
-
// height: 6px;
|
|
71
|
-
// border: 4px solid rgba(0, 0, 0, 0);
|
|
72
|
-
// background-clip: padding-box;
|
|
73
|
-
// -webkit-border-radius: 7px;
|
|
74
|
-
// background-color: rgba(0, 0, 0, 0.15);
|
|
75
|
-
// -webkit-box-shadow:
|
|
76
|
-
// inset -1px -1px 0px rgba(0, 0, 0, 0.473),
|
|
77
|
-
// inset 1px 1px 0px rgba(0, 0, 0, 0.493);
|
|
78
|
-
// }
|
|
79
|
-
|
|
80
|
-
// /* Handle on hover */
|
|
81
|
-
// &::-webkit-scrollbar-thumb:hover {
|
|
82
|
-
// background: rgba(128, 128, 128, 0.5);
|
|
83
|
-
// }
|
|
84
|
-
// }
|
|
85
|
-
|
|
86
|
-
.text-center {
|
|
87
|
-
text-align: center;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
.d-flex {
|
|
91
|
-
display: flex;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
.flex-header {
|
|
95
|
-
display: flex;
|
|
96
|
-
justify-content: space-between;
|
|
97
|
-
align-items: center;
|
|
98
|
-
}
|
package/styles/variables.scss
DELETED