Skip to content

Commit be449b0

Browse files
committed
Contact Us Page Included
1 parent aed8c4a commit be449b0

18 files changed

Lines changed: 734 additions & 6 deletions

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,4 @@ static/css/site.min.css
1414

1515
# Generated JS bundles (built by npm run build:js before hugo)
1616
static/js/*.min.js
17+
!static/js/smartform.min.js

assets/css/modern-dark-theme.css

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -709,6 +709,108 @@
709709
color: rgb(100 116 139);
710710
}
711711

712+
/* —— Contact us —— */
713+
[data-theme="dark"] body.home-page .contact-form-card,
714+
[data-theme="dark"] body.home-page .contact-link {
715+
border-color: rgb(71 85 105 / 0.8);
716+
background-color: rgb(30 41 59);
717+
}
718+
719+
[data-theme="dark"] body.home-page .contact-form-card__head {
720+
border-color: rgb(51 65 85);
721+
}
722+
723+
[data-theme="dark"] body.home-page .contact-form-card__title,
724+
[data-theme="dark"] body.home-page .contact-link__title,
725+
[data-theme="dark"] body.home-page .contact-info-card__title,
726+
[data-theme="dark"] body.home-page .contact-field__label {
727+
color: rgb(241 245 249);
728+
}
729+
730+
[data-theme="dark"] body.home-page .contact-form-card__lead,
731+
[data-theme="dark"] body.home-page .contact-link__desc,
732+
[data-theme="dark"] body.home-page .contact-info-card__text,
733+
[data-theme="dark"] body.home-page .contact-form__note {
734+
color: rgb(148 163 184);
735+
}
736+
737+
[data-theme="dark"] body.home-page .contact-field__input {
738+
border-color: rgb(71 85 105 / 0.9);
739+
background-color: rgb(15 23 42 / 0.75);
740+
color: rgb(241 245 249);
741+
box-shadow: inset 0 1px 0 rgb(255 255 255 / 0.03);
742+
}
743+
744+
[data-theme="dark"] body.home-page .contact-field__input::placeholder {
745+
color: rgb(100 116 139);
746+
}
747+
748+
[data-theme="dark"] body.home-page .contact-field__input:focus {
749+
border-color: rgb(56 189 248 / 0.45);
750+
background-color: rgb(15 23 42);
751+
box-shadow: 0 0 0 4px rgb(56 189 248 / 0.12);
752+
}
753+
754+
[data-theme="dark"] body.home-page .contact-form__actions {
755+
border-color: rgb(51 65 85);
756+
}
757+
758+
[data-theme="dark"] body.home-page .contact-info-card {
759+
border-color: rgb(12 74 110 / 0.45);
760+
background-image: linear-gradient(to bottom right, rgb(12 74 110 / 0.25), rgb(30 41 59), rgb(15 23 42));
761+
}
762+
763+
[data-theme="dark"] body.home-page .contact-info-card__eyebrow {
764+
color: rgb(56 189 248);
765+
}
766+
767+
[data-theme="dark"] body.home-page .contact-link__icon {
768+
background-color: rgb(15 23 42 / 0.8);
769+
}
770+
771+
[data-theme="dark"] body.home-page .contact-link:hover {
772+
border-color: rgb(100 116 139);
773+
}
774+
775+
[data-theme="dark"] body.home-page .contact-submit.about-btn--primary {
776+
background-color: rgb(56 189 248);
777+
color: rgb(15 23 42);
778+
}
779+
780+
[data-theme="dark"] body.home-page .contact-submit.about-btn--primary:hover {
781+
background-color: rgb(125 211 252);
782+
}
783+
784+
[data-theme="dark"] body.home-page .contact-form__summary {
785+
border-color: rgb(190 18 60 / 0.35);
786+
background-color: rgb(190 18 60 / 0.12);
787+
color: rgb(253 164 175);
788+
}
789+
790+
[data-theme="dark"] body.home-page .contact-field__error,
791+
[data-theme="dark"] body.home-page .contact-field__count--over {
792+
color: rgb(251 113 133);
793+
}
794+
795+
[data-theme="dark"] body.home-page .contact-field__count--warn {
796+
color: rgb(251 191 36);
797+
}
798+
799+
[data-theme="dark"] body.home-page .contact-field--invalid .contact-field__input {
800+
border-color: rgb(244 63 94 / 0.55);
801+
background-color: rgb(190 18 60 / 0.08);
802+
box-shadow: 0 0 0 4px rgb(244 63 94 / 0.1);
803+
}
804+
805+
[data-theme="dark"] body.home-page .contact-field--invalid .contact-field__input:focus {
806+
border-color: rgb(244 63 94 / 0.75);
807+
box-shadow: 0 0 0 4px rgb(244 63 94 / 0.14);
808+
}
809+
810+
[data-theme="dark"] body.home-page .contact-field__required {
811+
color: rgb(100 116 139);
812+
}
813+
712814
/* —— Category banner —— */
713815
[data-theme="dark"] body.home-page .category-banner {
714816
border-color: rgb(71 85 105);

assets/css/modern-glass-theme.css

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,8 @@
227227
[data-theme="glass"] body .about-stat,
228228
[data-theme="glass"] body .about-team-card,
229229
[data-theme="glass"] body .about-connect-card,
230+
[data-theme="glass"] body .contact-form-card,
231+
[data-theme="glass"] body .contact-link,
230232
[data-theme="glass"] body .about-pillar,
231233
[data-theme="glass"] body .home-why__card,
232234
[data-theme="glass"] body .home-why__perk,
@@ -250,6 +252,8 @@
250252
[data-theme="glass"] body .browse-category-card::before,
251253
[data-theme="glass"] body .browse-hub-card::before,
252254
[data-theme="glass"] body .about-card::before,
255+
[data-theme="glass"] body .contact-form-card::before,
256+
[data-theme="glass"] body .contact-link::before,
253257
[data-theme="glass"] body article.bg-white.rounded-2xl::before,
254258
[data-theme="glass"] body article.bg-white.rounded-2xl.flex::before,
255259
[data-theme="glass"] body .home-testimonial-card::before,
@@ -267,6 +271,8 @@
267271
[data-theme="glass"] body .browse-category-card > *,
268272
[data-theme="glass"] body .browse-hub-card > *,
269273
[data-theme="glass"] body .about-card > *,
274+
[data-theme="glass"] body .contact-form-card > *,
275+
[data-theme="glass"] body .contact-link > *,
270276
[data-theme="glass"] body article.bg-white.rounded-2xl > *,
271277
[data-theme="glass"] body article.bg-white.rounded-2xl.flex > *,
272278
[data-theme="glass"] body .home-testimonial-card > *,
@@ -280,6 +286,8 @@
280286
[data-theme="glass"] body .about-stat:hover,
281287
[data-theme="glass"] body .about-team-card:hover,
282288
[data-theme="glass"] body .about-connect-card:hover,
289+
[data-theme="glass"] body .contact-form-card:hover,
290+
[data-theme="glass"] body .contact-link:hover,
283291
[data-theme="glass"] body article.bg-white.rounded-2xl:hover {
284292
background-color: rgba(255, 255, 255, 0.72) !important;
285293
box-shadow: inset 0 1px 0 var(--glass-highlight), 0 12px 40px rgba(15, 23, 42, 0.12), 0 1px 0 rgba(15, 23, 42, 0.05) !important;

assets/css/modern-light-theme.css

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,8 @@
256256
[data-theme="light"] body .about-stat,
257257
[data-theme="light"] body .about-team-card,
258258
[data-theme="light"] body .about-connect-card,
259+
[data-theme="light"] body .contact-form-card,
260+
[data-theme="light"] body .contact-link,
259261
[data-theme="light"] body .about-pillar,
260262
[data-theme="light"] body .home-why__card,
261263
[data-theme="light"] body .home-why__perk,

assets/css/tailwind-input.css

Lines changed: 178 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -952,6 +952,184 @@
952952
@apply mt-7 flex flex-wrap items-center justify-center gap-3;
953953
}
954954

955+
/* Contact us (/contact-us/) */
956+
.contact-hero__intro p {
957+
@apply m-0;
958+
}
959+
960+
.contact-layout {
961+
@apply grid gap-6 lg:grid-cols-[minmax(0,1fr)_minmax(17rem,22rem)] lg:items-start;
962+
}
963+
964+
.contact-form-card {
965+
@apply rounded-2xl border border-gray-200/90 bg-white p-6 shadow-sm sm:p-8 md:p-10;
966+
}
967+
968+
.contact-form-card__head {
969+
@apply mb-7 border-b border-slate-100 pb-6;
970+
}
971+
972+
.contact-form-card__title {
973+
@apply text-xl font-bold tracking-tight text-slate-900 sm:text-2xl;
974+
}
975+
976+
.contact-form-card__lead {
977+
@apply mt-2 text-sm leading-relaxed text-slate-500 sm:text-[15px];
978+
}
979+
980+
.contact-form__grid {
981+
@apply grid gap-5 sm:grid-cols-2;
982+
}
983+
984+
.contact-field--full {
985+
@apply sm:col-span-2;
986+
}
987+
988+
.contact-field__label {
989+
@apply mb-2 block text-sm font-semibold text-slate-800;
990+
}
991+
992+
.contact-field__label-row {
993+
@apply mb-2 flex items-center justify-between gap-3;
994+
}
995+
996+
.contact-field__label-row .contact-field__label {
997+
@apply mb-0;
998+
}
999+
1000+
.contact-field__required {
1001+
@apply text-[10px] font-bold uppercase tracking-wider text-slate-400;
1002+
}
1003+
1004+
.contact-field__input {
1005+
@apply w-full rounded-xl border border-slate-200/90 bg-slate-50/70 px-4 py-3.5 text-[15px] leading-normal text-slate-900 shadow-sm;
1006+
@apply placeholder:text-slate-400 transition-all duration-200;
1007+
@apply focus:border-brand/35 focus:bg-white focus:outline-none focus:ring-4 focus:ring-brand/10;
1008+
}
1009+
1010+
.contact-field--invalid .contact-field__input {
1011+
@apply border-rose-400/90 bg-rose-50/40 ring-4 ring-rose-500/10;
1012+
}
1013+
1014+
.contact-field--invalid .contact-field__input:focus {
1015+
@apply border-rose-500 ring-rose-500/15;
1016+
}
1017+
1018+
.contact-field__error {
1019+
@apply mt-2 text-sm font-medium leading-snug text-rose-600;
1020+
}
1021+
1022+
.contact-field__error:empty,
1023+
.contact-field__error[hidden] {
1024+
@apply hidden;
1025+
}
1026+
1027+
.contact-field__meta {
1028+
@apply mt-2 flex items-start justify-between gap-4;
1029+
}
1030+
1031+
.contact-field__meta .contact-field__error {
1032+
@apply mt-0 flex-1;
1033+
}
1034+
1035+
.contact-field__count {
1036+
@apply shrink-0 text-xs tabular-nums text-slate-400;
1037+
}
1038+
1039+
.contact-field__count--warn {
1040+
@apply text-amber-600;
1041+
}
1042+
1043+
.contact-field__count--over {
1044+
@apply font-semibold text-rose-600;
1045+
}
1046+
1047+
.contact-form__summary {
1048+
@apply mb-5 rounded-xl border border-rose-200 bg-rose-50 px-4 py-3 text-sm font-medium leading-relaxed text-rose-700;
1049+
}
1050+
1051+
.contact-form__summary:empty,
1052+
.contact-form__summary[hidden] {
1053+
@apply hidden;
1054+
}
1055+
1056+
.contact-submit:disabled {
1057+
@apply cursor-not-allowed opacity-70 shadow-none;
1058+
}
1059+
1060+
.contact-submit--loading {
1061+
@apply pointer-events-none;
1062+
}
1063+
1064+
.contact-submit__spinner {
1065+
@apply inline-block h-4 w-4 rounded-full border-2 border-white/30 border-t-white animate-spin;
1066+
}
1067+
1068+
.contact-field__input--textarea {
1069+
@apply min-h-[10.5rem] resize-y;
1070+
}
1071+
1072+
.contact-form__actions {
1073+
@apply mt-7 flex flex-col gap-3 border-t border-slate-100 pt-6 sm:flex-row sm:items-center sm:justify-between;
1074+
}
1075+
1076+
.contact-submit {
1077+
@apply w-full justify-center px-7 py-3.5 text-[15px] shadow-md hover:shadow-lg sm:w-auto;
1078+
}
1079+
1080+
.contact-form__note {
1081+
@apply max-w-md text-xs leading-relaxed text-slate-400;
1082+
}
1083+
1084+
.contact-aside {
1085+
@apply flex flex-col gap-4;
1086+
}
1087+
1088+
.contact-info-card {
1089+
@apply rounded-2xl border border-sky-100 bg-gradient-to-br from-sky-50/90 via-white to-white p-5 shadow-sm;
1090+
}
1091+
1092+
.contact-info-card__eyebrow {
1093+
@apply text-[11px] font-bold uppercase tracking-widest text-sky-600;
1094+
}
1095+
1096+
.contact-info-card__title {
1097+
@apply mt-2 text-base font-semibold leading-snug text-slate-900;
1098+
}
1099+
1100+
.contact-info-card__text {
1101+
@apply mt-2 text-sm leading-relaxed text-slate-500;
1102+
}
1103+
1104+
.contact-links {
1105+
@apply flex flex-col gap-3;
1106+
}
1107+
1108+
.contact-link {
1109+
@apply flex items-center gap-3 rounded-2xl border border-gray-200/90 bg-white p-4 shadow-sm transition-all duration-200;
1110+
@apply hover:-translate-y-0.5 hover:border-slate-300 hover:shadow-md;
1111+
}
1112+
1113+
.contact-link__icon {
1114+
@apply flex h-11 w-11 shrink-0 items-center justify-center rounded-xl bg-slate-50 text-xl;
1115+
}
1116+
1117+
.contact-link__body {
1118+
@apply flex min-w-0 flex-1 flex-col gap-0.5;
1119+
}
1120+
1121+
.contact-link__title {
1122+
@apply text-sm font-semibold text-slate-900 transition-colors group-hover:text-brand;
1123+
}
1124+
1125+
.contact-link__desc {
1126+
@apply text-xs leading-snug text-slate-500;
1127+
}
1128+
1129+
.contact-link__arrow {
1130+
@apply shrink-0 text-sm font-semibold text-slate-300 transition-all duration-200 group-hover:translate-x-0.5 group-hover:text-brand;
1131+
}
1132+
9551133
.home-hero-search {
9561134
@apply relative z-10 w-full max-w-md mx-auto;
9571135
}

content/contact-us/_index.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
title: "Contact us"
3+
date: 2025-05-25T00:00:00Z
4+
draft: false
5+
description: "Get in touch with CodeFryDev—support, feedback, partnerships, and press inquiries."
6+
keywords: ["contact", "support", "CodeFryDev", "feedback"]
7+
---
8+
9+
Questions, feedback, or partnership ideas—we'd love to hear from you. Fill out the form below and we'll get back to you as soon as we can.

content/press/_index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,4 @@ We offer free online tools, games, and AI apps—no signup required. CodeFryDev
2121

2222
For press inquiries, interviews, or partnership requests, please use our main contact channel:
2323

24-
- [Contact & support](/tncprivacy)terms, privacy, and contact information.
24+
- [Contact us](/contact-us/)support, feedback, and general inquiries.

data/about.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@ cards:
55
phosphorIcon: users
66
url: "/about/users/"
77

8+
- accent_color: "#fa709a"
9+
title: "Contact us"
10+
content: "Support, feedback, partnerships, and press inquiries."
11+
phosphorIcon: envelope
12+
url: "/contact-us/"
13+
814
- accent_color: "#f093fb"
915
title: "Hugo"
1016
content: "This site is built with Hugo—fast, static, and version-controlled."

data/contact.yaml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
smartform:
2+
recipient: "b74bc04ad06f8c8fead06c04d820a483"
3+
subject: "CodeFryDev contact form"
4+
successMessage: "Thanks! We'll get back to you soon."
5+
6+
validation:
7+
name:
8+
minLength: 2
9+
maxLength: 80
10+
email:
11+
maxLength: 254
12+
message:
13+
minLength: 10
14+
maxLength: 5000

0 commit comments

Comments
 (0)