~repos /website

#astro#js#html#css

git clone https://pyrossh.dev/repos/website.git

木 Personal website of pyrossh. Built with astrojs, shiki, vite.


2b22eec3 pyrossh

2 years ago
finish remaining pages
components/Header.tsx CHANGED
@@ -12,16 +12,13 @@ export default function Header() {
12
12
  <span class="mr-1 font-logo font-bold">木</span> pyros.sh
13
13
  </a>
14
14
  <div class="flex flex-row flex-1 items-center text-white sm:[&>a]:mx-1 [&>a]:px-2 [&>a:hover]:bg-gray-600 data-current:child:bg-gray-600">
15
- <a href="/dev" rel="prefetch">
16
- dev
17
- </a>
18
15
  <div>|</div>
19
- <a href="/ref" rel="prefetch">
16
+ <a href="/cv" rel="prefetch">
20
- ref
17
+ cv
21
18
  </a>
22
19
  <div>|</div>
23
- <a href="/blog" rel="prefetch">
20
+ <a href="/posts" rel="prefetch">
24
- blog
21
+ posts
25
22
  </a>
26
23
  </div>
27
24
  <SocialLinks />
components/icons/HardwareIcon.tsx ADDED
@@ -0,0 +1,15 @@
1
+ export default function HardwareIcon({ size = "32" }) {
2
+ return (
3
+ <svg
4
+ xmlns="http://www.w3.org/2000/svg"
5
+ width={size}
6
+ height={size}
7
+ viewBox="0 0 24 24"
8
+ >
9
+ <path
10
+ fill="currentColor"
11
+ d="M22 0H2a2 2 0 0 0-2 2v20a2 2 0 0 0 2 2h20a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2ZM6 16a1 1 0 1 1 1-1a1.001 1.001 0 0 1-1 1ZM22 6h-2.184a3 3 0 1 0 0 2H22v4h-4v2h4v2h-2v2h2v4h-8v-1.184a3 3 0 1 0-2 0V22H7v-4.184a3 3 0 1 0-2 0V22H2V2h4v6h2V2h2v10h2V2h10Zm-4 1a1 1 0 1 1-1-1a1.001 1.001 0 0 1 1 1Z"
12
+ />
13
+ </svg>
14
+ );
15
+ }
components/icons/SoftwareIcon.tsx ADDED
@@ -0,0 +1,20 @@
1
+ export default function SoftwareIcon({ size = "32" }) {
2
+ return (
3
+ <svg
4
+ xmlns="http://www.w3.org/2000/svg"
5
+ width={size}
6
+ height={size}
7
+ viewBox="0 0 24 24"
8
+ >
9
+ <path
10
+ fill="currentColor"
11
+ d="M14 18.315A7.037 7.037 0 0 1 11.263 16H3V4h18v2.264a7.046 7.046 0 0 1 2 2.15V4a2.006 2.006 0 0 0-2-2H3a2.006 2.006 0 0 0-2 2v12a2.006 2.006 0 0 0 2 2h7v2H8v2h8v-2h-2Z"
12
+ />
13
+ <path
14
+ fill="currentColor"
15
+ d="M17 6a6 6 0 1 0 6 6a5.998 5.998 0 0 0-6-6Zm0 10a4 4 0 1 1 4-4a4.005 4.005 0 0 1-4 4Z"
16
+ />
17
+ <circle cx="17" cy="12" r="1" fill="currentColor" />
18
+ </svg>
19
+ );
20
+ }
fresh.gen.ts CHANGED
@@ -5,9 +5,9 @@
5
5
  import * as $_404 from "./routes/_404.tsx";
6
6
  import * as $_app from "./routes/_app.tsx";
7
7
  import * as $_middleware from "./routes/_middleware.ts";
8
- import * as $api_joke from "./routes/api/joke.ts";
8
+ import * as $cv from "./routes/cv.tsx";
9
- import * as $greet_name_ from "./routes/greet/[name].tsx";
10
9
  import * as $index from "./routes/index.tsx";
10
+ import * as $posts from "./routes/posts.tsx";
11
11
  import * as $Counter from "./islands/Counter.tsx";
12
12
  import * as $LemonDrop from "./islands/LemonDrop.tsx";
13
13
  import { type Manifest } from "$fresh/server.ts";
@@ -17,9 +17,9 @@ const manifest = {
17
17
  "./routes/_404.tsx": $_404,
18
18
  "./routes/_app.tsx": $_app,
19
19
  "./routes/_middleware.ts": $_middleware,
20
- "./routes/api/joke.ts": $api_joke,
20
+ "./routes/cv.tsx": $cv,
21
- "./routes/greet/[name].tsx": $greet_name_,
22
21
  "./routes/index.tsx": $index,
22
+ "./routes/posts.tsx": $posts,
23
23
  },
24
24
  islands: {
25
25
  "./islands/Counter.tsx": $Counter,
routes/_404.tsx CHANGED
@@ -1,12 +1,14 @@
1
1
  import { Head } from "$fresh/runtime.ts";
2
+ import { PageProps } from "$fresh/server.ts";
2
3
 
3
- export default function Error404() {
4
+ export default function Error404({ url }: PageProps) {
4
5
  return (
5
6
  <>
6
7
  <Head>
7
- <title>404 - Page not found</title>
8
+ <title slot="head">pyros.sh | Page Not Found</title>
9
+ <meta name="description" content="Page Not Found" />
8
10
  </Head>
9
- <div class="px-4 py-8 mx-auto bg-[#86efac]">
11
+ <div class="px-4 py-8 mx-auto">
10
12
  <div class="max-w-screen-md mx-auto flex flex-col items-center justify-center">
11
13
  <img
12
14
  class="my-6"
@@ -16,10 +18,11 @@ export default function Error404() {
16
18
  alt="the Fresh logo: a sliced lemon dripping with juice"
17
19
  />
18
20
  <h1 class="text-4xl font-bold">404 - Page not found</h1>
19
- <p class="my-4">
20
- The page you were looking for doesn't exist.
21
+ <p class="my-4">The page you were looking for doesn't exist.</p>
22
+ <pre>Path: {url.pathname}</pre>
23
+ <a href="/" class="underline mt-4">
24
+ Go back home
21
- </p>
25
+ </a>
22
- <a href="/" class="underline">Go back home</a>
23
26
  </div>
24
27
  </div>
25
28
  </>
routes/api/joke.ts DELETED
@@ -1,21 +0,0 @@
1
- import { HandlerContext } from "$fresh/server.ts";
2
-
3
- // Jokes courtesy of https://punsandoneliners.com/randomness/programmer-jokes/
4
- const JOKES = [
5
- "Why do Java developers often wear glasses? They can't C#.",
6
- "A SQL query walks into a bar, goes up to two tables and says “can I join you?”",
7
- "Wasn't hard to crack Forrest Gump's password. 1forrest1.",
8
- "I love pressing the F5 key. It's refreshing.",
9
- "Called IT support and a chap from Australia came to fix my network connection. I asked “Do you come from a LAN down under?”",
10
- "There are 10 types of people in the world. Those who understand binary and those who don't.",
11
- "Why are assembly programmers often wet? They work below C level.",
12
- "My favourite computer based band is the Black IPs.",
13
- "What programme do you use to predict the music tastes of former US presidential candidates? An Al Gore Rhythm.",
14
- "An SEO expert walked into a bar, pub, inn, tavern, hostelry, public house.",
15
- ];
16
-
17
- export const handler = (_req: Request, _ctx: HandlerContext): Response => {
18
- const randomIndex = Math.floor(Math.random() * JOKES.length);
19
- const body = JOKES[randomIndex];
20
- return new Response(body);
21
- };
routes/cv.tsx ADDED
@@ -0,0 +1,274 @@
1
+ import { asset, Head } from "$fresh/runtime.ts";
2
+
3
+ export default function CV() {
4
+ return (
5
+ <div class="mx-auto">
6
+ <Head>
7
+ <title>pyros.sh | CV</title>
8
+ <meta name="description" content="Peter John's CV" />
9
+ </Head>
10
+ <style
11
+ dangerouslySetInnerHTML={{
12
+ __html: `
13
+ .container {
14
+ font-family: system-ui;
15
+ }
16
+
17
+ b {
18
+ font-weight: 700;
19
+ }
20
+
21
+ ul {
22
+ margin: 0.5rem;
23
+ padding-left: 2rem;
24
+ @media (--mobile) {
25
+ margin: 0.5rem;
26
+ padding-left: 1rem;
27
+ }
28
+ }
29
+
30
+ li {
31
+ list-style-type: disc;
32
+ list-style-position: outside;
33
+ }
34
+
35
+ h3 {
36
+ font-weight: 700;
37
+ margin-top: 0.5rem;
38
+ }
39
+
40
+ h4 {
41
+ font-weight: 500;
42
+ margin-top: 0.5rem;
43
+ }
44
+
45
+ h5 {
46
+ font-size: 1.25rem;
47
+ line-height: 1.75rem;
48
+ font-weight: 400;
49
+ margin-top: 0.5rem;
50
+ margin-bottom: 1rem;
51
+ }
52
+ `,
53
+ }}
54
+ />
55
+ <div>
56
+ <section>
57
+ <h3>Equal Experts</h3>
58
+ <h4>Software Developer, Oct 2018 - present</h4>
59
+ <h5>
60
+ Making Software. Better. Equal Experts is a network of talented,
61
+ experienced software consultants, specialising in agile delivery.
62
+ </h5>
63
+ <div>
64
+ These are the client projects I worked on,
65
+ <ul>
66
+ <li>
67
+ <b>John Lewis</b>
68
+ <ul>
69
+ <li>
70
+ Built the new Product Description Page (PDP) for Simple
71
+ Carpets using nextjs in home interiors
72
+ </li>
73
+ <li>
74
+ Helped build, improve, and run AB experiments in the
75
+ customer services and my orders pages in customer hub
76
+ </li>
77
+ </ul>
78
+ </li>
79
+ <li>
80
+ <b>iOWNA</b>
81
+ <ul>
82
+ <li>
83
+ Built a content editor for curators to create content on our
84
+ platform
85
+ </li>
86
+ <li>
87
+ Built the iOWNA crossplatform app in react-native that works
88
+ in android, ios, and web using one codebase.
89
+ </li>
90
+ <li>
91
+ Implemented admin specific functionalities in the web app
92
+ </li>
93
+ <li>
94
+ Implemented an in-app OTA update method using expo and
95
+ semantic versionin
96
+ </li>
97
+ <li>Built the iOWNA marketing website</li>
98
+ <li>
99
+ Built the Health Questionnaire clinician/patient feedback
100
+ form feature with push notifications
101
+ </li>
102
+ </ul>
103
+ </li>
104
+ <li>
105
+ <b>Zeta</b>
106
+ <ul>
107
+ <li>
108
+ Added multiple download formats (pdf,html,xlsx) for reports
109
+ in the Reporting Center
110
+ </li>
111
+ <li>
112
+ Created a Groovy Script to automate creating ACL's in
113
+ sandbox authorization framework
114
+ </li>
115
+ <li>
116
+ Integrated Camunda Workflow Engine into Zeta services in
117
+ Operations Center
118
+ </li>
119
+ <li>
120
+ Built a few workflows on Camunda and integrated it with some
121
+ internal services
122
+ </li>
123
+ <li>
124
+ Built a custom k8s CRD using the operator framework to
125
+ automate creating ACL's in sandbox using custom resources
126
+ </li>
127
+ </ul>
128
+ </li>
129
+ <li>
130
+ <b>Lifebox</b>
131
+ <ul>
132
+ <li>
133
+ Added search functionality to the hospital procedure codes
134
+ </li>
135
+ <li>
136
+ Converted the Health Questionnaire from json to native go
137
+ code making it easier to make changes to it
138
+ </li>
139
+ <li>
140
+ Integrated with SAP using HL7 message format to create
141
+ patients, episodes, schedule/cancel procedures
142
+ </li>
143
+ <li>
144
+ Built the Patient Document repository for uploading,
145
+ downloading patient files
146
+ </li>
147
+ <li>
148
+ Built the patients online reports view using the data from
149
+ SAP
150
+ </li>
151
+ </ul>
152
+ </li>
153
+ </ul>
154
+ </div>
155
+ </section>
156
+ <section>
157
+ <h3>Numberz</h3>
158
+ <h4>Full Stack Developer, Sept 2016 - Oct 2018</h4>
159
+ <h5>
160
+ Numberz integrates banking with your day-2-day business work-flows
161
+ freeing up a lot of effort, time and heart-burn, to help your
162
+ business grow! You’ll never have to spend time syncing information
163
+ between different systems. Save and record receipts &amp; spends
164
+ with a single tap, automatically categorise transactions for
165
+ book-keeping and easily share information with your accountant.
166
+ </h5>
167
+ <ul>
168
+ <li>
169
+ Implemented new features and fixed bugs on the numberz android app
170
+ </li>
171
+ <li>Integrated numberz with Tally ERP</li>
172
+ <li>
173
+ Implemented CI and Devops within out system to ease our deployment
174
+ process using docker and docker-compose
175
+ </li>
176
+ <li>
177
+ Created a slack bot called deploybot which was used to deploy our
178
+ microservices to our servers
179
+ </li>
180
+ <li>
181
+ Started tech talks on Thursdays to discuss cutting edge
182
+ technologies
183
+ </li>
184
+ <li>
185
+ Architected and built the Notification Service using rabbitmq and
186
+ nodejs
187
+ </li>
188
+ <li>Built the Multi-User and Multi-Company Features</li>
189
+ <li>
190
+ Implemented and lead a team on integration with the GSTN System so
191
+ that customers could file their GST Taxes within our product
192
+ </li>
193
+ <li>
194
+ Architected and built the numberz Identity Management Service(IMS)
195
+ </li>
196
+ <li>
197
+ Architected our new product called the Numberz Accounts Receivable
198
+ (AR)
199
+ </li>
200
+ <li>Laid down the architecture for the frontend and backend</li>
201
+ <li>
202
+ Built these core features for our new AR Product - Auto Reminders,
203
+ Manual Reminders, User Management, Cash Discounting, CFO Dashboard
204
+ Metrics
205
+ </li>
206
+ </ul>
207
+ </section>
208
+ <section>
209
+ <h3>Playlyfe</h3>
210
+ <h4>Full Stack Developer, Apr 2014 - Sept 2016</h4>
211
+ <h5>
212
+ Playlyfe is an online Gamification Platform which empowers anyone to
213
+ design and implement a gamified system.This platform allows a normal
214
+ user to convert a gamified system's design into a fully functional
215
+ web-application complete with teams, real-time notifications,
216
+ leaderboards and many more features. Made Critical decisions on what
217
+ tech stack to switch to for our gamification product Catalyst.
218
+ </h5>
219
+ <ul>
220
+ <li>
221
+ Built the Playlyfe Hybrid Mobile app using Phonegap for Android
222
+ and iOS
223
+ </li>
224
+ <li>
225
+ Built the leaderboard system using Mongodb, Redis and Couchbase as
226
+ the datastore
227
+ </li>
228
+ <li>Migration of data from v1 to v2 of the API</li>
229
+ <li>
230
+ Built SDKs for the Playlyfe v2 API in C#, Java, Python, Ruby, PHP,
231
+ Nodejs, Gos
232
+ </li>
233
+ <li>
234
+ Maintained the job server and wrote most of the background jobs
235
+ </li>
236
+ <li>
237
+ Added documentation to most of the REST API and created the
238
+ Developer Console which was Like Swagger UI
239
+ </li>
240
+ <li>Integrated our REST API in Leanosphere's LMS</li>
241
+ <li>
242
+ Integrated the REST API in Knolskape's product Aktivlearn LMS
243
+ </li>
244
+ <li>Integrated the REST API in Linkstreet's LMS</li>
245
+ <li>
246
+ Integrated the REST API in Moodle LMS by creating an admin plugin
247
+ to add Gamification features
248
+ </li>
249
+ <li>
250
+ Rebuilt the core platform in golang for performance and
251
+ developement speed
252
+ </li>
253
+ <li>Built the GraphQL API for our cutting edge product Catalyst</li>
254
+ <li>
255
+ Convinced the boss to create our own scripting language plscript
256
+ for our rule engine.
257
+ </li>
258
+ <li>
259
+ Build a REST API for our product catalyst for a POC with Vodafone
260
+ </li>
261
+ <li>
262
+ Built the Quiz, Review, Match, Tournament features in Catalyst for
263
+ a major project with HP
264
+ </li>
265
+ <li>
266
+ Added gamification features to Saudi Matches a popular game
267
+ tracking app
268
+ </li>
269
+ </ul>
270
+ </section>
271
+ </div>
272
+ </div>
273
+ );
274
+ }
routes/greet/[name].tsx DELETED
@@ -1,5 +0,0 @@
1
- import { PageProps } from "$fresh/server.ts";
2
-
3
- export default function Greet(props: PageProps) {
4
- return <div>Hello {props.params.name}</div>;
5
- }
routes/index.tsx CHANGED
@@ -1,19 +1,12 @@
1
- import { useSignal } from "@preact/signals";
2
- import { Handlers } from "$fresh/server.ts";
3
1
  import Slide from "../components/Slide.tsx";
4
2
  import ProjectsIcon from "../components/icons/ProjectsIcon.tsx";
5
3
  import TreeIcon from "../components/icons/TreeIcon.tsx";
6
4
  import ContactIcon from "../components/icons/ContactIcon.tsx";
5
+ import HardwareIcon from "../components/icons/HardwareIcon.tsx";
6
+ import SoftwareIcon from "../components/icons/SoftwareIcon.tsx";
7
7
  import { asset, Head } from "$fresh/runtime.ts";
8
8
 
9
- export const handler: Handlers = {
10
- async GET(req, ctx) {
11
- return await ctx.render();
12
- },
13
- };
14
-
15
9
  export default function Home() {
16
- const count = useSignal(5);
17
10
  return (
18
11
  <div class="mx-auto">
19
12
  <Head>
@@ -48,7 +41,7 @@ export default function Home() {
48
41
  </p>
49
42
  </div>
50
43
  <div>
51
- <div class="flex items-center mt-8 mb-4 [&>svg]:mr-2">
44
+ <div class="flex items-center mt-8 mb-4 child-svg:mr-2 child-svg:text-pink-800">
52
45
  <ProjectsIcon size="36" />
53
46
  <h2 class="my-0 text-3xl font-bold">Projects</h2>
54
47
  </div>
@@ -117,11 +110,115 @@ export default function Home() {
117
110
  </p>
118
111
  </Slide>
119
112
  <section class="flex flex-col flex-1">
113
+ <div class="flex text-3xl font-bold child-svg:mr-2 child-svg:text-green-800">
114
+ <HardwareIcon size="36" />
115
+ Hardware Setup
116
+ </div>
117
+ <div class="ml-1 mt-6 mb-2">My current hardware setup is</div>
118
+ <ul class="ml-1.5">
119
+ <li>
120
+ <strong>Laptop:</strong> M2 Macbook Air
121
+ </li>
122
+ <li>
123
+ <strong>CPU:</strong> Apple M2 (8 cores, 8 threads)
124
+ </li>
125
+ <li>
126
+ <strong>RAM:</strong> 16GB
127
+ </li>
128
+ <li>
129
+ <strong>SSD:</strong> 512GB
130
+ </li>
131
+ </ul>
132
+ </section>
133
+ <section class="flex flex-col flex-1">
120
- <div class="flex text-3xl font-bold child-svg:mr-2">
134
+ <div class="flex text-3xl font-bold child-svg:mr-2 child-svg:text-red-800">
135
+ <SoftwareIcon size="36" />
136
+ Software Setup
137
+ </div>
138
+ <div class="ml-1 mt-6 mb-2">
139
+ My current list of daily applications
140
+ </div>
141
+ <ul class="grid gap-2 grid-cols-3 ml-4 child:list-disc child:px-0 child:py-1 heir-a:text-blue-800">
142
+ <li>
143
+ <a
144
+ href="https://github.com/exelban/stats"
145
+ target="_blank"
146
+ rel="noopener noreferrer"
147
+ >
148
+ Menubar Stats
149
+ </a>
150
+ </li>
151
+ <li>
152
+ <a
153
+ href="https://github.com/brave/brave-browser"
154
+ target="_blank"
155
+ rel="noopener noreferrer"
156
+ >
157
+ Brave Browser
158
+ </a>
159
+ </li>
160
+ <li>
161
+ <a
162
+ href="https://github.com/microsoft/vscode"
163
+ target="_blank"
164
+ rel="noopener noreferrer"
165
+ >
166
+ VS Code IDE
167
+ </a>
168
+ </li>
169
+ <li>
170
+ <a
171
+ href="https://github.com/helix-editor/helix"
172
+ target="_blank"
173
+ rel="noopener noreferrer"
174
+ >
175
+ Helix
176
+ </a>
177
+ </li>
178
+ <li>
179
+ <a
180
+ href="https://github.com/fish-shell/fish-shell"
181
+ target="_blank"
182
+ rel="noopener noreferrer"
183
+ >
184
+ Fish Shell
185
+ </a>
186
+ </li>
187
+ <li>
188
+ <a
189
+ href="https://github.com/gnachman/iTerm2"
190
+ target="_blank"
191
+ rel="noopener noreferrer"
192
+ >
193
+ iTerm2
194
+ </a>
195
+ </li>
196
+ <li>
197
+ <a
198
+ href="https://colorslurp.com"
199
+ target="_blank"
200
+ rel="noopener noreferrer"
201
+ >
202
+ Color Slurp
203
+ </a>
204
+ </li>
205
+ <li>
206
+ <a
207
+ href="https://www.vectornator.io"
208
+ target="_blank"
209
+ rel="noopener noreferrer"
210
+ >
211
+ Curve
212
+ </a>
213
+ </li>
214
+ </ul>
215
+ </section>
216
+ <section class="flex flex-col flex-1">
217
+ <div class="flex text-3xl font-bold child-svg:mr-2 child-svg:text-amber-900">
121
218
  <TreeIcon size="36" />
122
219
  Interests
123
220
  </div>
124
- <div class="ml-1 mt-6 mb-4">
221
+ <div class="ml-1 mt-6 mb-2">
125
222
  These are some of the stuff I work on
126
223
  </div>
127
224
  <ul class="grid gap-2 grid-cols-3 ml-4 [&>li]:list-disc [&>li]:px-0 [&>li]:py-1 [&>li:marker]:text-black">
@@ -140,14 +237,14 @@ export default function Home() {
140
237
  </ul>
141
238
  </section>
142
239
  <section class="flex flex-col flex-1">
143
- <div class="flex text-3xl font-bold child-svg:mr-2">
240
+ <div class="flex text-3xl font-bold child-svg:mr-2 child-svg:text-cyan-950">
144
241
  <ContactIcon size="36" />
145
242
  Contact
146
243
  </div>
147
- <div class="ml-1 mt-6 mb-4">
244
+ <div class="ml-1 mt-6 mb-2">
148
245
  You can contact me through any of these methods
149
246
  </div>
150
- <div class="child:flex child:mb-3 child:ml-2 heir-a:ml-4 heir-a:text-blue">
247
+ <div class="child:flex child:mb-3 child:ml-2 heir-a:ml-4 heir-a:text-blue-800">
151
248
  <div>
152
249
  Email:
153
250
  <a href="mailto:pyros2097@gmail.com">pyros2097@gmail.com</a>
@@ -167,23 +264,6 @@ export default function Home() {
167
264
  </div>
168
265
  </div>
169
266
  </div>
170
- {
171
- /* <div class="max-w-screen-md mx-auto flex flex-col items-center justify-center">
172
- <img
173
- class="my-6"
174
- src="/logo.svg"
175
- width="128"
176
- height="128"
177
- alt="the Fresh logo: a sliced lemon dripping with juice"
178
- />
179
- <h1 class="text-4xl font-bold">Welcome to Fresh</h1>
180
- <p class="my-4">
181
- Try updating this message in the
182
- <code class="mx-2">./routes/index.tsx</code> file, and refresh.
183
- </p>
184
- <Counter count={count} />
185
- </div> */
186
- }
187
267
  </div>
188
268
  );
189
269
  }
routes/posts.tsx ADDED
@@ -0,0 +1,13 @@
1
+ import { Head } from "$fresh/runtime.ts";
2
+
3
+ export default function Posts() {
4
+ return (
5
+ <div class="mx-auto">
6
+ <Head>
7
+ <title>pyros.sh | Posts</title>
8
+ <meta name="description" content="Peter John's Posts" />
9
+ </Head>
10
+ <div class="px-4 py-40 mx-auto">TBD</div>
11
+ </div>
12
+ );
13
+ }
tailwind.config.ts CHANGED
@@ -21,8 +21,6 @@ export default {
21
21
  "black-lighter": "#1f1f1f",
22
22
  "black-light": "#313a3d",
23
23
  "yellow-dark": "#858579",
24
- blue: "#0645ad",
25
- "blue-light": "#0e81c7",
26
24
  "slider-bg": "#f0ede2",
27
25
  },
28
26
  },