Skip to content

Commit cb80a8a

Browse files
committed
add footer
1 parent a2bfe34 commit cb80a8a

5 files changed

Lines changed: 64 additions & 35 deletions

File tree

.stylelintrc.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"ignore": ["consecutive-duplicates-with-different-values"]
88
}
99
],
10-
"selector-class-pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*(?:__(?:[a-z0-9]+(?:-[a-z0-9]+)*))?$",
11-
"no-duplicate-selectors": true
10+
"selector-class-pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*(?:__(?:[a-z0-9]+(?:-[a-z0-9]+)*))*(?:--[a-z0-9]+(?:-[a-z0-9]+)*)?$",
11+
"no-duplicate-selectors": false
1212
}
1313
}

src/ui/App.css

Lines changed: 48 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@
2424
--input-border: #334155;
2525

2626
/* slate-700 */
27-
--accent-bg: rgb(39, 128, 211);
28-
--accent-bg-hover: rgb(79, 158, 231);
27+
--accent-bg: #2780d3;
28+
--accent-bg-hover: #4f9ee7;
2929
--radius-lg: 1rem;
3030
--radius-md: 0.5rem;
3131
--radius-sm: 0.375rem;
@@ -60,6 +60,13 @@
6060
--track-bg: #2a2f45;
6161
--thumb-bg: var(--accent-bg);
6262
}
63+
@font-face {
64+
font-family: "OCR-A";
65+
src: url("/fonts/OCRa.woff2") format("woff2");
66+
font-weight: 400;
67+
font-style: normal;
68+
font-display: swap;
69+
}
6370

6471

6572
/* responsive tokens */
@@ -103,7 +110,7 @@ body {
103110
background-size: 100% 100%, auto, auto, auto, auto;
104111
background-position: 0 0, 0 0, 0 0, 0 0, 0 0;
105112
background-attachment: fixed, fixed, fixed, fixed, fixed;
106-
font-family: "Space Grotesk", system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, "Helvetica Neue", Arial, "Noto Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
113+
font-family: "Space Grotesk", system-ui, -apple-system, Roboto, Ubuntu, Cantarell, "Helvetica Neue", Arial, "Noto Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
107114
}
108115

109116
/* =========================================
@@ -530,7 +537,6 @@ body {
530537
font-weight: 500;
531538
line-height: 1.2;
532539
color: #cbd5e1;
533-
/* slate-300 */
534540
letter-spacing: -0.03em;
535541
display: flex;
536542
align-items: baseline;
@@ -550,8 +556,7 @@ body {
550556
position: relative;
551557
appearance: none;
552558
background-color: rgb(15 23 42 / 70%);
553-
/* slate-900/70 */
554-
color: #f8fafc;
559+
color: #fff;
555560
border-radius: 0.6rem;
556561
border: 1px solid rgb(148 163 184 / 28%);
557562
min-height: 2.4rem;
@@ -573,7 +578,6 @@ body {
573578
.ui-select-button:hover {
574579
background-color: rgb(15 23 42 / 90%);
575580
border-color: rgb(226 232 240 / 40%);
576-
/* slate-100/40 */
577581
}
578582

579583
.ui-select-button:focus {
@@ -582,7 +586,6 @@ body {
582586
background-color: rgb(15 23 42 / 100%);
583587
}
584588

585-
/* optional extra state hook if you want to style when open */
586589
.ui-select-button--open {
587590
border-color: var(--accent-bg);
588591
}
@@ -603,7 +606,6 @@ body {
603606

604607
.ui-select-hint {
605608
color: #94a3b8;
606-
/* slate-400 */
607609
font-size: 0.7rem;
608610
line-height: 1.2;
609611
}
@@ -632,15 +634,15 @@ body {
632634
top: calc(100% + 0.4rem);
633635
left: 0;
634636
min-width: 100%;
635-
background-color: rgba(0, 0, 0, 0.603);
636-
border: 1px solid rgb(148 163 184 / 28%);
637+
background-color: hsl(0deg 0% 0% / 60.3%);
638+
border: 1px solid hsl(215deg 20% 65% / 28%);
637639
border-radius: 0.6rem;
638640
padding: 0.4rem 0;
639641
max-height: 16rem;
640642
overflow-y: auto;
641643
box-shadow:
642644
0 24px 48px rgb(0 0 0 / 80%),
643-
0 0 24px rgba(29, 29, 29, 0.3);
645+
0 0 24px hsl(0deg 0% 11% / 30%);
644646
opacity: 0;
645647
pointer-events: none;
646648
transform: translateY(-4px) scale(0.98);
@@ -670,7 +672,7 @@ body {
670672

671673
.ui-select-option.is-active,
672674
.ui-select-option:hover {
673-
background-color: rgba(39, 128, 211, 0.589);
675+
background-color: #2780d396;
674676
border-radius: .5rem;
675677
}
676678

@@ -691,17 +693,6 @@ body {
691693
color: #94a3b8;
692694
}
693695

694-
695-
696-
697-
698-
699-
700-
701-
702-
703-
704-
705696
.tau-custom-wrapper[data-open="false"] {
706697
pointer-events: none;
707698
}
@@ -992,7 +983,6 @@ body {
992983

993984
/* Accessibility: respect reduced motion */
994985
@media (prefers-reduced-motion: reduce) {
995-
996986
.tau-custom-wrapper,
997987
.tau-custom-wrapper[data-open="true"],
998988
.tau-select-menu,
@@ -1020,19 +1010,20 @@ body {
10201010

10211011

10221012
/* Container that holds the 6 fields in one centered row */
1023-
.fieldsRow {
1013+
.fields-row {
10241014
display: flex;
10251015
justify-content: center;
10261016
align-items: flex-start;
10271017
gap: 20px;
10281018
flex-wrap: nowrap;
1019+
10291020
/* single row */
10301021
}
10311022

10321023

10331024

10341025
/* Label text */
1035-
.numberField__label {
1026+
.number-field__label {
10361027
font-size: 12px;
10371028
color: #c7c7c7;
10381029
}
@@ -1066,7 +1057,7 @@ body {
10661057

10671058
/* Reset native styling for consistent theming */
10681059
appearance: none;
1069-
-webkit-appearance: none;
1060+
appearance: none;
10701061
background: transparent; /* we style the track pseudo-elements */
10711062
padding: 0; /* avoid unexpected extra space */
10721063
margin: 0;
@@ -1082,7 +1073,7 @@ body {
10821073
}
10831074

10841075
.number-field__range-vertical::-webkit-slider-thumb {
1085-
-webkit-appearance: none;
1076+
appearance: none;
10861077
appearance: none;
10871078
width: var(--thumb-size);
10881079
height: var(--thumb-size);
@@ -1131,7 +1122,7 @@ body {
11311122
.param-grid {
11321123
width: 100%;
11331124
border-radius: 1rem;
1134-
background-color: rgba(0, 0, 0, 0.342);
1125+
background-color: hsl(0deg 0% 0% / 34.2%);
11351126
padding: 1rem 0;
11361127
display: flex;
11371128
flex-flow: row nowrap;
@@ -1159,7 +1150,7 @@ body {
11591150
gap: 8px;
11601151
}
11611152

1162-
@media (max-width: 560px) {
1153+
@media (width <= 560px) {
11631154
.numberField {
11641155
max-width: 3rem;
11651156
}
@@ -1183,4 +1174,29 @@ body {
11831174

11841175
.reset-label {
11851176
font-weight: 700;
1186-
}
1177+
}
1178+
1179+
footer {
1180+
display: flex;
1181+
justify-content: space-between;
1182+
background-color: #03030311;
1183+
align-items: center;
1184+
margin: 2rem 0;
1185+
border-top: 1px solid var(--border);
1186+
padding: 1rem;
1187+
color: var(--muted);
1188+
font-size: 14px;
1189+
font-family: "OCR-A";
1190+
border-radius: 1rem;
1191+
align-items: center;
1192+
backdrop-filter: blur(1px);
1193+
a {
1194+
color: inherit;
1195+
text-decoration: none;
1196+
font-weight: normal;
1197+
transition: color 0.15s ease-in-out;
1198+
}
1199+
a:hover {
1200+
color: var(--accent-bg-hover);
1201+
}
1202+
}

src/ui/App.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { latestByType, CurveType } from "../defaultParams";
55
import TauPresets, { getPresetTenors, TauPresetKey } from "./TauPresets";
66
import CurveTypeSelect from "./CurveTypeSelect";
77
import FastCurveChart from "./FastCurveChart";
8+
import Footer from "./Footer";
89

910
import "./App.css";
1011

@@ -277,7 +278,9 @@ export default function App() {
277278
line up with anticipated policy moves or cycle turns.
278279
</p>
279280
</Section>
281+
<Footer/>
280282
</div>
283+
281284
</div>
282285
);
283286
}

src/ui/Footer.tsx

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
2+
export default function Footer() {
3+
return (
4+
<footer className="site-footer container" id="contact">
5+
<span>© {new Date().getFullYear()} <a href="https://rmtb.dev" className="button">RMTB</a>
6+
</span>
7+
<a href="mailto:rodrigomtorresb@gmail.com" className="button">get in touch</a>
8+
</footer>
9+
);
10+
}

src/ui/NumberField.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ export default function NumberField({
3232

3333
return (
3434
<label className="numberField">
35-
<span className="numberField__label">{label}</span>
35+
<span className="number-field__label">{label}</span>
3636

3737
<input
3838
className="number-field__number"

0 commit comments

Comments
 (0)