From bf40976e40e29f62deb0d5a9c6beb543239322b2 Mon Sep 17 00:00:00 2001 From: user Date: Thu, 30 Oct 2025 19:28:30 +0200 Subject: [PATCH] oh yeah --- .gitignore | 23 +++ .npmrc | 1 + Dockerfile | 15 ++ README.md | 5 + bun.lockb | Bin 0 -> 96073 bytes components.json | 17 ++ package.json | 40 +++++ postcss.config.js | 6 + src/app.css | 81 +++++++++ src/app.d.ts | 15 ++ src/app.html | 12 ++ .../components/atoms/animate-wrapper.svelte | 35 ++++ src/lib/components/atoms/icon.svelte | 11 ++ src/lib/components/atoms/label-wrapper.svelte | 19 ++ src/lib/components/atoms/logo.svelte | 11 ++ .../components/atoms/max-width-wrapper.svelte | 11 ++ src/lib/components/atoms/title.svelte | 64 +++++++ src/lib/components/molecules/footer.svelte | 46 +++++ .../components/molecules/grid-pattern.svelte | 49 ++++++ src/lib/components/molecules/navbar.svelte | 67 +++++++ .../molecules/testimonial-card.svelte | 54 ++++++ src/lib/components/organisms/about.svelte | 152 ++++++++++++++++ src/lib/components/organisms/contact.svelte | 127 ++++++++++++++ src/lib/components/organisms/faq.svelte | 65 +++++++ src/lib/components/organisms/features.svelte | 82 +++++++++ src/lib/components/organisms/hero.svelte | 88 ++++++++++ .../components/organisms/testimonials.svelte | 106 +++++++++++ .../ui/accordion/accordion-content.svelte | 24 +++ .../ui/accordion/accordion-item.svelte | 12 ++ .../ui/accordion/accordion-trigger.svelte | 29 +++ src/lib/components/ui/accordion/index.ts | 17 ++ .../ui/avatar/avatar-fallback.svelte | 16 ++ .../components/ui/avatar/avatar-image.svelte | 16 ++ src/lib/components/ui/avatar/avatar.svelte | 16 ++ src/lib/components/ui/avatar/index.ts | 13 ++ src/lib/components/ui/badge/badge.svelte | 60 +++++++ src/lib/components/ui/badge/index.ts | 2 + src/lib/components/ui/button/button.svelte | 75 ++++++++ src/lib/components/ui/button/index.ts | 17 ++ src/lib/components/ui/input/index.ts | 7 + src/lib/components/ui/input/input.svelte | 22 +++ src/lib/components/ui/label/index.ts | 7 + src/lib/components/ui/label/label.svelte | 19 ++ src/lib/components/ui/sheet/index.ts | 36 ++++ .../components/ui/sheet/sheet-content.svelte | 53 ++++++ .../ui/sheet/sheet-description.svelte | 16 ++ .../components/ui/sheet/sheet-footer.svelte | 20 +++ .../components/ui/sheet/sheet-header.svelte | 20 +++ .../components/ui/sheet/sheet-overlay.svelte | 21 +++ .../components/ui/sheet/sheet-title.svelte | 16 ++ src/lib/components/ui/textarea/index.ts | 28 +++ .../components/ui/textarea/textarea.svelte | 22 +++ src/lib/core/constants.ts | 17 ++ src/lib/index.ts | 1 + src/lib/utils.ts | 6 + src/routes/+layout.svelte | 13 ++ src/routes/+layout.ts | 1 + src/routes/+page.svelte | 15 ++ src/routes/legal/(main)/+page.svelte | 56 ++++++ src/routes/legal/+layout.svelte | 34 ++++ src/routes/legal/legal.articles.ts | 17 ++ src/routes/legal/privacy-policy/+page.svelte | 165 ++++++++++++++++++ src/routes/legal/table-of-contents.svelte | 31 ++++ .../legal/terms-and-conditions/+page.svelte | 148 ++++++++++++++++ static/favicon.png | Bin 0 -> 61049 bytes static/font/outfit-variable.ttf | Bin 0 -> 110572 bytes static/images/contact-us.jpg | Bin 0 -> 38008 bytes static/images/hero-img.jpg | Bin 0 -> 79913 bytes static/images/how-we-work.jpg | Bin 0 -> 43708 bytes static/images/laptop.jpg | Bin 0 -> 54409 bytes static/images/office-conference.jpg | Bin 0 -> 443495 bytes static/logo.png | Bin 0 -> 7727 bytes svelte.config.js | 27 +++ tailwind.config.ts | 97 ++++++++++ tsconfig.json | 19 ++ vite.config.ts | 7 + 76 files changed, 2440 insertions(+) create mode 100644 .gitignore create mode 100644 .npmrc create mode 100644 Dockerfile create mode 100644 README.md create mode 100755 bun.lockb create mode 100644 components.json create mode 100644 package.json create mode 100644 postcss.config.js create mode 100644 src/app.css create mode 100644 src/app.d.ts create mode 100644 src/app.html create mode 100644 src/lib/components/atoms/animate-wrapper.svelte create mode 100644 src/lib/components/atoms/icon.svelte create mode 100644 src/lib/components/atoms/label-wrapper.svelte create mode 100644 src/lib/components/atoms/logo.svelte create mode 100644 src/lib/components/atoms/max-width-wrapper.svelte create mode 100644 src/lib/components/atoms/title.svelte create mode 100644 src/lib/components/molecules/footer.svelte create mode 100644 src/lib/components/molecules/grid-pattern.svelte create mode 100644 src/lib/components/molecules/navbar.svelte create mode 100644 src/lib/components/molecules/testimonial-card.svelte create mode 100644 src/lib/components/organisms/about.svelte create mode 100644 src/lib/components/organisms/contact.svelte create mode 100644 src/lib/components/organisms/faq.svelte create mode 100644 src/lib/components/organisms/features.svelte create mode 100644 src/lib/components/organisms/hero.svelte create mode 100644 src/lib/components/organisms/testimonials.svelte create mode 100644 src/lib/components/ui/accordion/accordion-content.svelte create mode 100644 src/lib/components/ui/accordion/accordion-item.svelte create mode 100644 src/lib/components/ui/accordion/accordion-trigger.svelte create mode 100644 src/lib/components/ui/accordion/index.ts create mode 100644 src/lib/components/ui/avatar/avatar-fallback.svelte create mode 100644 src/lib/components/ui/avatar/avatar-image.svelte create mode 100644 src/lib/components/ui/avatar/avatar.svelte create mode 100644 src/lib/components/ui/avatar/index.ts create mode 100644 src/lib/components/ui/badge/badge.svelte create mode 100644 src/lib/components/ui/badge/index.ts create mode 100644 src/lib/components/ui/button/button.svelte create mode 100644 src/lib/components/ui/button/index.ts create mode 100644 src/lib/components/ui/input/index.ts create mode 100644 src/lib/components/ui/input/input.svelte create mode 100644 src/lib/components/ui/label/index.ts create mode 100644 src/lib/components/ui/label/label.svelte create mode 100644 src/lib/components/ui/sheet/index.ts create mode 100644 src/lib/components/ui/sheet/sheet-content.svelte create mode 100644 src/lib/components/ui/sheet/sheet-description.svelte create mode 100644 src/lib/components/ui/sheet/sheet-footer.svelte create mode 100644 src/lib/components/ui/sheet/sheet-header.svelte create mode 100644 src/lib/components/ui/sheet/sheet-overlay.svelte create mode 100644 src/lib/components/ui/sheet/sheet-title.svelte create mode 100644 src/lib/components/ui/textarea/index.ts create mode 100644 src/lib/components/ui/textarea/textarea.svelte create mode 100644 src/lib/core/constants.ts create mode 100644 src/lib/index.ts create mode 100644 src/lib/utils.ts create mode 100644 src/routes/+layout.svelte create mode 100644 src/routes/+layout.ts create mode 100644 src/routes/+page.svelte create mode 100644 src/routes/legal/(main)/+page.svelte create mode 100644 src/routes/legal/+layout.svelte create mode 100644 src/routes/legal/legal.articles.ts create mode 100644 src/routes/legal/privacy-policy/+page.svelte create mode 100644 src/routes/legal/table-of-contents.svelte create mode 100644 src/routes/legal/terms-and-conditions/+page.svelte create mode 100644 static/favicon.png create mode 100644 static/font/outfit-variable.ttf create mode 100644 static/images/contact-us.jpg create mode 100644 static/images/hero-img.jpg create mode 100644 static/images/how-we-work.jpg create mode 100644 static/images/laptop.jpg create mode 100644 static/images/office-conference.jpg create mode 100644 static/logo.png create mode 100644 svelte.config.js create mode 100644 tailwind.config.ts create mode 100644 tsconfig.json create mode 100644 vite.config.ts diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3b462cb --- /dev/null +++ b/.gitignore @@ -0,0 +1,23 @@ +node_modules + +# Output +.output +.vercel +.netlify +.wrangler +/.svelte-kit +/build + +# OS +.DS_Store +Thumbs.db + +# Env +.env +.env.* +!.env.example +!.env.test + +# Vite +vite.config.js.timestamp-* +vite.config.ts.timestamp-* diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..b6f27f1 --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +engine-strict=true diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..970c948 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,15 @@ +FROM oven/bun:1.1.38 + +WORKDIR /app + +COPY package.json bun.lockb ./ + +RUN bun install + +COPY . . + +RUN bun run build + +EXPOSE 80 + +CMD ["bun", "run", "start"] diff --git a/README.md b/README.md new file mode 100644 index 0000000..e0484ba --- /dev/null +++ b/README.md @@ -0,0 +1,5 @@ +# Bill Discount Services + +Deployed to cloudflare pages - via static build + +--- diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..a215bb03a566957217fed2415f3ceaaf68f6b7ad GIT binary patch literal 96073 zcmeGF2{e}5`#+99hRk!xT;?&egvgkAP9Y(gGiE3XsR#+BBy)&Nkw_{cGN%wSL}tmD zDH{0g&2yjk{duqRIdS^0^+E&#lA3ChYC$A$-cwRoK?` zEbA$6R}zo}o!zXR>>QnK1?}8CT&%nV&x(-XVlbFAHhIdMU#?R)bSv9+NF92}VKtn$uq92g%2Kl!@Qvsa-oPu_4U^P1cQG)zApdlW{LD0$8_nd>H zwFAIAdIE2Ot_C28>i|K8adUBWb#%A#^n4BqVLlv?K%N2c0pnhXE%yaRpv=7isK>q+5mRkc2C;~lfJ>8to+G6xT=j{dg!$3p(2Y`m{bg=StI|l|- z7$AY|3nSdb3o&k9xAye3^|Z!dQozuK_1)b(!4UPtNCRWA{%KGS`CP4B-5hN&nCl=9 znizNpXy~V}m5Vd%$IIAy-tSyzhQT1^ zrEHu1?aRK|j#i*yzp`*_j*l$tbvr9huQPz(!`9mqx^Clq7MjDbV*RvsaC36BvGTC< zv^{I<>g8F+x#^!O*XH>4u(h(WarAJva`gr4iM4~32b`6_Ho(L2hV+9s=nohVTcBaN zDbUcLpP()nVu3R}n|%EszX#;cg4F}^*m|Dwc67GENC|BACp*w!NCc8$^)mlvegLbR zfQIAcDbUbfI#x$v^#!c9$Lb?kEsxa#SWOQ!?Ef8DJn#+{qEx72&-f4z~F)!8HdPt^9E&b9JqVfdU-k8 zdN_bQY{w}_FHb>lM+}Mb<~X;+>SCZ_yF9#IZNc=$AbLS*b6mYt*=&cGr?cZJaD5n* z!}fR`-t6Z#kcaWm1=nDEgH$*9eSszgc^9Bzxe-=3t8MxR79A^R(56a|hyLXO4aX%2 z`$j*(ac&11hKL8pQ~0DzJ0q~e8Gv%_ZV%}BcbCs#bp}R(FeP~McF*RH}aL78Yjq;?ozSMt~}Bb zZIv~lD=#=r*$3!$S8(^xkP5Qmjt(uGKE1HUSYzZm%DRQ&r#&&4R&G2Z0{OhPY9g_Oj2+n#jjYX?TLndLY*(J>Sda&>ty z-%Tme-0OaalVPcOWgIDA>cu!rQ}p?3t~5CBm`yh-sc|Pw(4qDCVqkqiKb$w<;>@J4 ztmf{NHpBMduO{BgJHFYBd>IZCnP148$g+GDk+JM!bA+On+%T*&e~*bK$@$*BRBx;W zeeH}RW*AL%59g3|uB|I~NHEaQI2&$@^OdvS*>3}$BBO)F-0B=%498XL6hn9ny1Rx)xCys$hukmbAPCVr1eF*zrCayM;T z@X_~Eoaf!BOj+0mIVy?SpB=|Z>{b1i;{MAS=aD84fXtDE*b@G(W@uPjRl`6Wz zRcQ>3)w@oe;gnM#rIczl$!XD8Od0(hk7=!>;TO%-ssHBbq>y%{q1Dnzpndv|sZH2G^SNc_qm2@``4>WBTmLPev zJ-%0Np|Y@%YQF=%iI`C{K~4?7u=>vxvt9FHiJivy$H*$r1=)=W>3Q!bNgC`4A{-V^ zzWPEr>la0)sQi5{zbn*?i9ikzGRqf2$d{~>{`kSc zz3LX{qcyd{ZEhEq^)!4sJEZwuL^r~mlJl^Ue9XQR6_;&_a^tm(3(5D4ghgZv+E-pP zXOb6wUV7s)UGPk3zY67}2VM~^*KDqr9CQ4bJj1>>mVt%cFnq;(HR$MM^b@ig_74WJ z2JFn@G*VnGoJmMO+-rUA-b&#b8CPvJd&4-g)^$~SMd!33Q#tkcgQsN58EvUw#Mp;L z);f}>4^ByQ@ei>Q|{fh%umBB zjuSqd+Iz)LRrF5Jt18Tl8utXQ0{!>zqK1u8pO}cDBNpZE8@a87x^5#Q)=#l9tBlM>zE=J(UP*tYoq>()R4tXj09e7HqLJs za9Pgl;f(rq1crJf@brahkW&t|ithW_^s`g!#d^fNG0v0qsd*B{My?mTcGH+g#a+Iv zmEts+O`pZhFd5qLR|(Y#*OCt4R$%Y8}=_#vwA^zS#EYJ1x+OeY6lUd@S%R z;-TSr{@Hrl`^5Pt6Y~8dG1fn>Dz!!{A1A(d)^$Dc^4t!>GdEty$W!16RLuhFxq75k@7)SrDYnqp)oy*|~M z4bN?&@H`|Ri@$EcJoLNy>NsH~YtqA1C*!80hrZ@6d`lDQn5_>F>%LXHB7Ef5`}-rJ zN2Yg79;!^?33xVjTQj{n?bxTA`)DGkKk<$2#DN?69|$fMD-MXj5hxI5!Fg-Tg5U+g z7b$>;dFT^T{yQS1o*(#f3~Qg@U*LNI9vqni!R-hj11QP4uIZjToJqh z77uaY>y`z8qNNs9;y-B0mIc96f}m+)?L$25hph;LZv}XHfQP=r z_l1@}M6Ca?@8EsnRs_MP0z91m(03?s4d03&_zwV& z%s)8(wkimo8w}V(z&`YStG1yH1n&;;(0>?zn6^89Gg0;-eyf7m9|3qJZ2X|@?b_!i z-5h@q2RV^`_?;h!{Xl>h1@?g(8`!PR0R+DY@J0ZS_>JhT+E)h;Rn!3}_=nA$UuF;1kV5#Y#2Y-|Ii1d9DMypLFyR*JlsFQGPWVxoj>saj~+kU?Y|j-SHZ>)I)M1K z>CONCiPRGV4?&^-Fm7-TZ8v^l0Ivk_&=TywtqNkl32PtO_mT47@gVi0z=jF^N9OPE zaL9E8-wyDy0FTW3?Z%&xW)qL}`*!ii0A2yuhp~q~Z8!d<01xka z;*VVaokrrPjm2+g>_Bb=9}DnGz&?`SZv2J;9`+x^!36!-iXis(f`|2R{J{2a)i&fu z@TLF{?IY{QR&1m3F<3ktfB(jQE5IuN`*8e0JmMGl`j3Lt+Y5e_Q2}^Z87ccmAoe0s z*BapA_<`#mEJMnF$AQ#K#o}T6VcAw=fZ#s?JnTQ%?-09PJj3q)oZsOb+Uh(&?B@Zz z9yWdu4}Npok|1~*@FTb(z(c>0HDoIU2;K(ZH31&lh8#%w?>LZp`2Y|19|XJI_^ksx z+&>`>gkszGkFNCKH$W`@cRr)9BmTDoJTm{`^{ws$2%ZXb*kNEF=D}995ktuHJ3;VA z0bT-&hZv-MtN1$ruY_$s(g(l8qV046JY4^g^<%sCWf}kM{BRB6Vf+8>{__%RADRDK zX*;_8xZp?c1He9Hh@Rs_ixr80%i&I665y3|Sya>R<{8r~4^a{bh1bA7L|J#ipA-g4ie{m%n<=>JyzhFB;_`#%Fb62Gm+9*w8pgTd%y!?~!G8sK7(Zn1-!A?T>t_46GxuOS5&KsF9zOqpcEM3<%X1jP7X!Q`z$5F= zcH_4Q@GyRm5Bjj(_KUD>j$gQcKtcT4%>D15NIh48N7g^+J5v6?BR8)g_38m0jvweZ zi~-bJ5d{Ae;Nkp({SUE7`R_Q8dNS<)d42-RwmW~W13Ys6f%cJcxK;ao0Iz^;KeWG9 zLF(?~_@C#`?T#N0fR_jM5x(vEUkLExSpUJT^p*v&Hv;f*{3HF2%!A(%A$Ug4|NQ<2 zIkww=b%00qAIORDZq?yZ+;HZLWV1kHips{jDJO zjR79s{~-2%3&d7H@Tma*C++V>;r~tlQFCwh|BnCi>v!!y{FeuKMbLhTN6LPOh1Zd~ zfdFp|@JQdo=cro|1pfixk@E+{Aw0k1K=3>~o6rC80RX103W9e7cm?1;#6sIh`R{m; zdIbOv*AG}9#t?aq3-kXZ2ws@?Kfk|hrws_+7vN$1p)ELmwmJt8d@sPm{TuoY?QiuN zEP~hN+q{1Q(2e~c8HX_cPlDj}1UBzKU|o2A*e*T^;I*;s|2O!FKg93f_h? z;Nkl9Z{tTNxH*6RE#C4E@elqGKl_LH144h+{)>NzulqwhrSPBmZw&CNe=vTM{t!R> zhj>14^ZO_My8*n)AGE*d5Aomr5PuLX-hbl%#XrQi0sMXtKe%^*M-kiJe~iG*kK-TU z%l{D14V<_C1N#vGZ~F)Md4RY21N;$i^I-W0_{V>Urv?vC|HQsKz?=Vp|IL4h=Ld)P zKd~PI@MeGD|Ii=e<)kqf(?76(=MV9-e~4EH4^QCv_1~@^DFA=;5Acfsf8-DFY6myp zA3@ID+r58@1bBG=4bQ!VAR*^s@bw=Bsn-bb@cBJrA98F(5WD~|j+`I2dhZSS5xh6R z!~F;5x7v0zz5(DBu-nO9~eI>khY7j0eJZQ46%*y{*!HZ4XK9* zz)AoQ%fO@PZNGnc7~s_bemk*;wh;Rf0Iz_;ZftJGK0kw4C|ivIf|vO(JW{^N_P>83^*jLH2(%yC{Wtx;hP4l||EB$tO8+^(ci{Z* z{{HtB#Q)m>52oNo|Do%++WL429XNogenwq(wYcOV`WpO>;2D(vbN{r}y#tMR#o`gy z;TYVCAolA39`0Wd1Iv(c0Q3JO2%c7D^Z7fhyX&6-|8)()tE2F{|EtbFWfA-ZfCo+3 z7(f4J|7!$zxc)#}a1Wz|U$!8KeS*XPdH?p`%zr6>hxTFrLI26NU>jCJ>|X_VumlDo zW!vrl8h{5|@L%?~i>FcD+<)P7XMB*hItCE`Zvi~`Z^M5W1Ed^${YOFSbptS*f6z7_ zNL!sl2%b(2g8~2jHGdf!8<45ACHocttcbNwkM-dnf!K?P{b7KI>mM|Vr0w7p)c^DQ z2g11>ybr*``Ga7=>zG>-r2Y$lH^BP810c1xg#J%IlY!0q7&d+o3j1*@g4llv@Df=2 z5C?tOiXiyi;P4I4U(ha$|90`}01tnEM#dlH*oq+bF9ZB(fQMrj%69SeS{Mwt1>ERA zxOQz9Uk32de`p)}L=3-dK@k68hr{zHgh1PWmBWI65Tu?Yz$5GLR(*%G2;KwW;rR=R z-#?iAAD0mPbAShr0RF;n)dvJW5AbmOA^HDd^q{_8l# zLXPNb@H>LH26!-pHtZ9E^6mQn5a8kdkBtBSw)4N`5&J&?9`-++H_-NW?TZ5AFn-Vu z0sPpaAogtm9^8TlLfF5--vfBqeq{V?cl^&_?L&WH;@oNgKwWs=fr%U>4v-+83nVCL z4a<2zf@421ro;PQ!Y)Hm?3p4ej0r3F;W^b*Ld< zEH;nUusjYV$d`z{{&yOVzkAs0Xbtgc*m9_0y-bjx{RbdH`6mtW*&DSsHN@qB1a&S} z=K&1`t>N{D8>O2X=JP>y6m!P(!{ZkjOy#01_QYGay0ve^Ju{zwuzB z{vXlMRebOP`-K4OH`H)FBnO%TXeMkq)bJ}aHV-xY%7WEcoD1NS03;I{S*Qk&Py?%VLAMFM4&(oar?3Q0MPJ~6jn>a3=pVc zy@S|1)bOh;_<;P%*z&*A(5@P|4%Zh=Y`wqJa9$aL>#)iZY(2DwJjS3Lo_p!CHY;JKj|NnRYUZY&Y_SvRq|3CNy zd^ng*UNkj6(R!L)zR`3KMcB98(Whi>5^_&H_Dv~1cD^du?;KN87y32f{+y~x#vn6?hnq@O=Uj-gt{q90o^$x`g_Z~#>Ckr}y zgsc>^tH#Y;;(+x zh@M8j{Z99)iUEoj_Aw&(9v07+-NSTlI1Bf`r3>4oi(Phoiz^pCNbo#Ow|%3hYra9VxkI2^bBd^=`}i09L&1kIJbsk_3L=p5o#1K zJj)=0e^Y4w`2NErN+QdQNt}#iuMc?A_;5$RJZwH1XS*oFc$Lv(zkQ)=Mi&pg*{_{J za>8_%-*N9SNiLN-reqdWIA7j0{|E3M0~u%VjEo3=jh5)x z#jyigH!cSI4p%oSkI@8C$g{bSa2T6jEpn1&ul+$^L@imTs~q34E?+z8&$V-6UPVaE zZ!s;8Qq=VTRP`o6Fvq0mkG}%?F2j3j=v9e6jAIbM9 z4OHm-b>&TsTGDkB0o&EeI4L6?;kjMG2Q8rk-9hC$Ya9&se*>?r5@zl@8R=TgV}k>N$1Z!f)3yzm|y5&Q|8?w{9{tQWuI<9@a|8#LJD_>JMEeH{H-VwVG3 zEA3Rw)zGhZp1mB-dp_qbbG3Y@C(gdd*L6ZgcX1JYl1phliQj`0)iIxl%uQhpX((W4rG$ zt?nicT@i?9tYfn7PQru#F9~E`P@{Q&B$rflOF2YIBv{6jzUmKZJGO7on!tO!|AX$e zkJW8_zHTqLZ?Ybbjf(HToTex_S=kWrOTgH|j|;p)B88A#Sp{8_{qX zuIqqq6pD8z+TW6Qni@Ty?F3lL(svu}P_kgpNlv%4JamZd`75S(ugvzoSBtawexN`3 zJ5K4<^9I&(DTfZ4Jz}Elx$8%^*Q8414T^UcnwJls`WwduwUkILf@`f_yiqRMmFIWf zA>fbGVwStcnfPTlvHkFRO63l5>hOZYc^T6F3mqZ1nRoN?nMBLWA7|ctcCop?!80Es z_+Hr~y$lNVLX+jvd^ddaSIH{6V-Fm28=d>1Q-9?u8I!SG#E33k`@o0}O;X1+*W9RA zq}!w}R|b8?_k4M=bzPLd@YymV__$fN#J&OZB<=5-a&|JUN*_F#c`$|p=ZJ>aWXPNH zwM3a*`}@=L0oJuD#uTp!PgZ#hL>8-m`bNISbAF+ud4DO27d|6H1i#wx@0)V;WpvMdXTle`wp?c$2x* z!dQ3cv}o3XV7`?`TFw2N2Jc!91xe7Oco`5;xzj3-k+~z z&5CctsAxosK^;$3j!!@Tw))6hN?yxM?laOo;*sB!$K`kq7?$_ykVyohcp1^Wg=tfJ zpCnsd8KQL6q8MsD95wVKwMXvSccvq^Z}93y0q)7*2TtKN&7mb1q=0ov{!3?lg_{4p6T zEg#-D;o9wB{3}%18aZ-$NIEoGYPipd{S) zM7gy2OV(u6?WXm-{YHv)!Q)+{YtktW@}I*JTTf>iI62uF9UZ!?@i6PC!&ANRn7b%m z7BuhSV}@)N>P+T@x6VCC>lv(&+qpFH+>`B17xm@vH8y$$XK^5EQ=0y2g0L#`WV`@RZq0&X&*St6Vh4nz;BremqLWVqAJg*D7k@ z#O5=#&3Vj<=AGs9h?!(iUg+rU8l;jwXRz{lBIZXRe^|lI3$i(1Jo{#+f3`I`c@re! zA8DvGxFDM=JDan6I4ED=j^g^$uOsjoC^8<{(7aPjKUK^*C+R;=_hWwkG!cA)>;E!w z^|*QO>ZM*z<(R31TraJteJ)dWCHT$EW$LjH)fEWbt4R^Ino?yFzc>Z&sSsXvG_Ss@ zy4JoZlj5!q~& z$5nS^x>Kon)L!0vX1W;%4m7V|-@WW_^D6wZ&ojYOKliDMNDtQ^ zP4cQ~I$AmLK1td3$IGV`@orBFCOG&r93SrrT{U=G^AhDRCz{tyHm+kL2y%l_J*dFt`Z+e%MII<;jL zpm>qr2O&NFGxHnL*2_uGQ%!c)AJpCqD?PQ;?MZiYAmnz4!(QDm(V%*XAzrZJwbPQeY$N{LRMMSN=K%22%AXn$|`IrU09p88;y*LRviX3}!m`yq=BQ{~t1 z#C!q$v`nO$LRm8B{ZC|*7^FaF~Ly5>jBJZEFexjykfwa#Z>&EtD@ zK97F)?r6>HC1*ceF2ei4`y-#WIC>DTPVBhVnRIGbhf6t{60b-k>WAPnV`TjDqj^>Q zw1rY^6H{wh7zUPbtW-FdP7=~)29!Uxx$5!o)2BS^OGl6C(y!#C^=dymJuSd7w>O22 zT&0wafWuL;mNAZw-Hrk3pZ>;CWIH35`CY`$+@?+>_xwh7+^eIrGF4-fHZ)_RvHwIm90cE(i9`Ee)Uw(K}gub7VFg}|iZ(hblrU{!7>d^-6 z+V>DWFGLVhpz-^IlJ%!|idwt~>Qjh&G9_?5K3jJ>l5Ny&m$JJMLTA4FZzP>RYk3q6Q^x=f6L6vU7e6~x+gxOPl)0L?@Ik8_&<)? zM6@g_(7a1+&E-Z-M8lUeX~HulQfAAPxuXKSpGJIBgus)Y9^PfZE(nQD^ntptVBo!8FeN(bz~# z0`;|u`Lp6d@1p3tK1shK{_*O>i5U+UmscNy8wyWTp?JZ&C4ULNl|g8fBjerTTXhr> zg?B#_(zR7JEH>0xJhqp5Fe2IU*7MMqccx{;MOyRMKg{>6Mi`CAm~#^h>=11HR1^Ma z3B5k-|BDr#&o0u+v3<-@bRxNFuiQJM;hXb(ay8ZS+I{<56REic=MONvQ;0eCoRh9y zec*u`^;H|oineP+Q#tRRsT4g?Ga5npD~aaK8Pc~fYSTZpyzio+!FgF@Qu?7r#$cDa+@>Ozu|IXd=O79$*XpC=IT_8?s``}VTRcG`L!n(B6FS%%*%g#eZRB8 zR-~MB@*1}%d~Sx!H}LM%UxNRRFLQkI0N?(1@h5n`r1 zpiK^wy%zQ|W1#LlKer3Rm6s4ZfZP`uKAv4Z%D@^&@XL`aeEsl=Ih zr!1Or$*qdwag?AAlb_4^Yekchv?NijhlnRXe7*Ygb7DXHk!DK#7hZkh7Bo)89fnpx zpHaNvUAMmkzxk1W9=n3x@!m)-WjBY@yavrD%TAW)ksC0Ze!S{VdFH(2M>F%=xXE5= z?axG40zU`8AKjf)(z`=pU#Nx6Z5kRBFMK}+5&Xl{xQFV0T$}ys7EfZ;w1b7;aaZ?L z)Y@5TqgK9`;_~r4mOBoA+HV&pL+(CaOFD3qBDV3DuHWDS>!(^Z;#4j^6fbx;?k~aj zntJ(>^iJQyNBc|E*oPT14zON#3P1AWlJJj&GdKOE&sL|`eHxe*JC>|?Q7uKQDJb=t zbnc}y)17iM_yiW1eF`XE@XqgFg8x{k#U!#wzwy~bA+-r*MkmA$&-^;*=gfAadY{VKPDN_vatDX+EOhlv zv#tt(w|3xM{e16Q*6ny|p<&q$ehWiQ8}xZc;V)J&&h~h`C1#n8sFij3LN4@y!#-ua z);~VL8vl!l6UEbnG|lU$Q(|34%Tn4u+@E`!-Fj{80a1U@BK`f&Nz4nX`j{+~zlvyH zj(0n)ViK2p?y~HXT0bY9FZJoN`k*jZ$(_N_;K887Mf#t|4mQXpoc78lKYM&Zs6&6< zlU9}(FV4dF$18}uAb?^aY9l6z7)anD6F z&)z|6*4o)X_vaX;fd$EdB2}GBras+LArH>F$gFoXqIi|jyw3f<=5Z_)FBXK8x6bm{ znle7f>&sGAT$8!{~ z3Yu49D06|{<_*yT-CmrYHC>F?+KYGt#pc_@4`Xt>x`cl%r8~1PJ1gQnuHW4}WgKHj z8s+)rCYyiJE}_L#e!1u9I2=avUOUNz@5r<|*3v|C@9mn}3&$~)DF?FAx{&5Q6?6_K z-shGPchr>)B^=l<6KS=?U}+rw&OB8z^sS@Ru~{kB3^cDQnzyW5#z9-m+3ENz$HzZ^ z&Ly6Fd!3Kely$i(cbNVps}vb7gLAaixvq33ua?U;+LmR4FE3EyC43|(PHzd!_;Sh$ z6$dpm@8w_Jhtp_|oEw%UB7aA@MJ2ZMbn)OLX_Pa z!lOhrN)KNdDlF`HqFb_by=lM7(a-IyNA{uE!=zsid3ukMsO)A{iJtWG0?jRMC}^Rjt5FV{t*Sjqc%A|G31IMY_IQoD9m z8Micy|3vX>qIo42J$|fyWUadrBeL tk^7e?Ir4;PD#nZgLG5ew&;8BC2ayOc!S# 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 literal 0 HcmV?d00001 diff --git a/components.json b/components.json new file mode 100644 index 0000000..bbb95e8 --- /dev/null +++ b/components.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://next.shadcn-svelte.com/schema.json", + "style": "default", + "tailwind": { + "config": "tailwind.config.ts", + "css": "src/app.css", + "baseColor": "slate" + }, + "aliases": { + "components": "$lib/components", + "utils": "$lib/utils", + "ui": "$lib/components/ui", + "hooks": "$lib/hooks" + }, + "typescript": true, + "registry": "https://next.shadcn-svelte.com/registry" +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..b5b3b59 --- /dev/null +++ b/package.json @@ -0,0 +1,40 @@ +{ + "name": "billdiscountservices", + "private": true, + "version": "0.1.0", + "type": "module", + "scripts": { + "dev": "vite dev", + "build": "vite build", + "start": "bun run ./build/index", + "preview": "vite preview", + "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch" + }, + "devDependencies": { + "@iconify/json": "^2.2.292", + "@sveltejs/adapter-static": "^3.0.9", + "@sveltejs/kit": "^2.0.0", + "@sveltejs/vite-plugin-svelte": "^4.0.0", + "autoprefixer": "^10.4.20", + "bits-ui": "^1.0.0-next.77", + "clsx": "^2.1.1", + "lucide-svelte": "^0.469.0", + "prettier": "^3.4.2", + "prettier-plugin-svelte": "^3.3.2", + "svelte": "^5.0.0", + "svelte-check": "^4.0.0", + "tailwind-merge": "^2.6.0", + "tailwind-variants": "^0.3.0", + "tailwindcss": "^3.4.9", + "tailwindcss-animate": "^1.0.7", + "typescript": "^5.0.0", + "vite": "^5.4.11" + }, + "dependencies": { + "@tailwindcss/container-queries": "^0.1.1", + "@tailwindcss/forms": "^0.5.9", + "@tailwindcss/typography": "^0.5.15", + "unplugin-icons": "^0.22.0" + } +} diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..ba80730 --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {} + } +}; diff --git a/src/app.css b/src/app.css new file mode 100644 index 0000000..658f9c4 --- /dev/null +++ b/src/app.css @@ -0,0 +1,81 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +@font-face { + font-family: "Outfit"; + src: url("/font/outfit-variable.ttf") format("truetype"); +} + +@layer base { + :root { + --background: 142 4% 99%; + --foreground: 142 4% 10%; + --card: 142 4% 99%; + --card-foreground: 142 4% 15%; + --popover: 142 4% 99%; + --popover-foreground: 142 95% 10%; + --primary: 142 76.2% 36.3%; + --primary-foreground: 0 0% 100%; + --secondary: 142 10% 90%; + --secondary-foreground: 0 0% 0%; + --muted: 104 10% 95%; + --muted-foreground: 142 4% 40%; + --accent: 104 10% 90%; + --accent-foreground: 142 4% 15%; + --destructive: 0 50% 50%; + --destructive-foreground: 142 4% 99%; + --border: 142 20% 82%; + --input: 142 20% 50%; + --ring: 142 76.2% 36.3%; + --radius: 0.75rem; + } + .dark { + --background: 142 10% 10%; + --foreground: 142 4% 99%; + --card: 142 4% 10%; + --card-foreground: 142 4% 99%; + --popover: 142 10% 5%; + --popover-foreground: 142 4% 99%; + --primary: 142 76.2% 36.3%; + --primary-foreground: 0 0% 100%; + --secondary: 142 10% 20%; + --secondary-foreground: 0 0% 100%; + --muted: 104 10% 25%; + --muted-foreground: 142 4% 65%; + --accent: 104 10% 25%; + --accent-foreground: 142 4% 95%; + --destructive: 0 50% 50%; + --destructive-foreground: 142 4% 99%; + --border: 142 20% 50%; + --input: 142 20% 50%; + --ring: 142 76.2% 36.3%; + --radius: 0.75rem; + } +} + +@layer base { + * { + @apply border-border; + } + + body { + @apply bg-background text-foreground; + scroll-behavior: smooth; + font-family: + "Outfit", + system-ui, + -apple-system, + BlinkMacSystemFont, + "Segoe UI", + Roboto, + "Helvetica Neue", + Arial, + "Noto Sans", + sans-serif, + "Apple Color Emoji", + "Segoe UI Emoji", + "Segoe UI Symbol", + "Noto Color Emoji"; + } +} diff --git a/src/app.d.ts b/src/app.d.ts new file mode 100644 index 0000000..aa88515 --- /dev/null +++ b/src/app.d.ts @@ -0,0 +1,15 @@ +import "unplugin-icons/types/svelte"; + +// See https://svelte.dev/docs/kit/types#app.d.ts +// for information about these interfaces +declare global { + namespace App { + // interface Error {} + // interface Locals {} + // interface PageData {} + // interface PageState {} + // interface Platform {} + } +} + +export {}; diff --git a/src/app.html b/src/app.html new file mode 100644 index 0000000..ecd5efc --- /dev/null +++ b/src/app.html @@ -0,0 +1,12 @@ + + + + + + + %sveltekit.head% + + +
%sveltekit.body%
+ + diff --git a/src/lib/components/atoms/animate-wrapper.svelte b/src/lib/components/atoms/animate-wrapper.svelte new file mode 100644 index 0000000..739cf44 --- /dev/null +++ b/src/lib/components/atoms/animate-wrapper.svelte @@ -0,0 +1,35 @@ + + +
+ {#if visible} +
+ +
+ {/if} +
diff --git a/src/lib/components/atoms/icon.svelte b/src/lib/components/atoms/icon.svelte new file mode 100644 index 0000000..67d9658 --- /dev/null +++ b/src/lib/components/atoms/icon.svelte @@ -0,0 +1,11 @@ + + + diff --git a/src/lib/components/atoms/label-wrapper.svelte b/src/lib/components/atoms/label-wrapper.svelte new file mode 100644 index 0000000..6838a5e --- /dev/null +++ b/src/lib/components/atoms/label-wrapper.svelte @@ -0,0 +1,19 @@ + + +
+ + {@render children?.()} +
diff --git a/src/lib/components/atoms/logo.svelte b/src/lib/components/atoms/logo.svelte new file mode 100644 index 0000000..5e1f1c3 --- /dev/null +++ b/src/lib/components/atoms/logo.svelte @@ -0,0 +1,11 @@ + + +Easy Save Bills diff --git a/src/lib/components/atoms/max-width-wrapper.svelte b/src/lib/components/atoms/max-width-wrapper.svelte new file mode 100644 index 0000000..a2782d7 --- /dev/null +++ b/src/lib/components/atoms/max-width-wrapper.svelte @@ -0,0 +1,11 @@ + + +
+ {@render children()} +
diff --git a/src/lib/components/atoms/title.svelte b/src/lib/components/atoms/title.svelte new file mode 100644 index 0000000..7544f4c --- /dev/null +++ b/src/lib/components/atoms/title.svelte @@ -0,0 +1,64 @@ + + + + {@render children?.()} + diff --git a/src/lib/components/molecules/footer.svelte b/src/lib/components/molecules/footer.svelte new file mode 100644 index 0000000..b32fc7e --- /dev/null +++ b/src/lib/components/molecules/footer.svelte @@ -0,0 +1,46 @@ + + + diff --git a/src/lib/components/molecules/grid-pattern.svelte b/src/lib/components/molecules/grid-pattern.svelte new file mode 100644 index 0000000..1728981 --- /dev/null +++ b/src/lib/components/molecules/grid-pattern.svelte @@ -0,0 +1,49 @@ + + + diff --git a/src/lib/components/molecules/navbar.svelte b/src/lib/components/molecules/navbar.svelte new file mode 100644 index 0000000..93f5876 --- /dev/null +++ b/src/lib/components/molecules/navbar.svelte @@ -0,0 +1,67 @@ + + + diff --git a/src/lib/components/molecules/testimonial-card.svelte b/src/lib/components/molecules/testimonial-card.svelte new file mode 100644 index 0000000..b54b7d8 --- /dev/null +++ b/src/lib/components/molecules/testimonial-card.svelte @@ -0,0 +1,54 @@ + + +
+
+
+ {testimonial.name} + +
+
+ {#each stars as isFilled} + + {/each} +
+

+ {testimonial.name} +

+
+
+ +

+ {testimonial.review} +

+
+
diff --git a/src/lib/components/organisms/about.svelte b/src/lib/components/organisms/about.svelte new file mode 100644 index 0000000..4a5247b --- /dev/null +++ b/src/lib/components/organisms/about.svelte @@ -0,0 +1,152 @@ + + + +
+
+ +
+
+ + About Us + + + + Helping You Save on Your Internet Bills + + + +

+ At {COMPANY_NAME}, we're dedicated to helping you reduce your internet + expenses. Our team of experts works tirelessly to find and secure the + best possible discounts on your internet services. We believe everyone + deserves access to affordable internet without compromising on quality + or speed. +

+
+ +
+
+ +
+
+ Bill Saving Specialists +

+ Our team are experts in negotiating with internet service + providers. We understand the industry inside and out, and we use + this knowledge to secure the best possible rates for our clients. + We've helped thousands of customers significantly reduce their + monthly internet bills. +

+
+
+
+ + +
+
+ +
+
+ Customer-First Approach +

+ We prioritize your needs and budget, working diligently to find + the best internet service deals available in your area. Our + platform makes it easy to compare options and choose the plan that + works best for you, whether you're a casual user or need + high-speed business internet. +

+
+
+
+
+
+ + + +
+
+ + + Our Mission + + + + + + To Make Internet Service Affordable for Everyone + + +
+ +
+
+ +
+ + Best in class + + + Your Partner in Reducing Internet Costs + + +
+
+ +

Proven Savings Record

+
+ +
+ +

Expert Negotiation Skills

+
+
+ +

Personalized Service Plans

+
+
+
+
+ + +

+ At {COMPANY_NAME}, we're committed to making internet services more + affordable for everyone. We understand that internet access is + essential in today's world, and high bills shouldn't stand in the + way. Our mission is to leverage our industry relationships and + negotiation expertise to secure the best possible rates for our + clients. Whether you're a homeowner, renter, or business owner, + we're here to help you save on your internet bills while maintaining + the service quality you need. +

+
+
+
+
+
diff --git a/src/lib/components/organisms/contact.svelte b/src/lib/components/organisms/contact.svelte new file mode 100644 index 0000000..3374664 --- /dev/null +++ b/src/lib/components/organisms/contact.svelte @@ -0,0 +1,127 @@ + + +
+
+
+ Talk with us +

+ Convinced? Want to finally get that discount? Or have any other + question? Contact us and we will get back to you as soon as possible. +

+
+ +
+
+ + + + + + + +
+ + + + + + + + + + + diff --git a/src/lib/core/constants.ts b/src/lib/core/constants.ts new file mode 100644 index 0000000..12b285a --- /dev/null +++ b/src/lib/core/constants.ts @@ -0,0 +1,17 @@ +export const TRANSITION_COLORS = "transition-colors duration-150 ease-in-out"; +export const TRANSITION_ALL = "transition-all duration-150 ease-in-out"; + +export const navLinks = [ + { name: "Home", href: "/#" }, + { name: "About", href: "/#about-us" }, + { name: "Services", href: "/#services" }, + { name: "Contact", href: "/#contact" }, +]; + +export const CONTACT_INFO = { + email: "contact@billdiscountservices.com", + phone: "+1 (844) 392-4558", + address: "1846 E INNOVATION PARK DR STE 100 ORO VALLEY, AZ 85755", +}; + +export const COMPANY_NAME = "Bill Discount Services"; diff --git a/src/lib/index.ts b/src/lib/index.ts new file mode 100644 index 0000000..856f2b6 --- /dev/null +++ b/src/lib/index.ts @@ -0,0 +1 @@ +// place files you want to import through the `$lib` alias in this folder. diff --git a/src/lib/utils.ts b/src/lib/utils.ts new file mode 100644 index 0000000..ac680b3 --- /dev/null +++ b/src/lib/utils.ts @@ -0,0 +1,6 @@ +import { type ClassValue, clsx } from "clsx"; +import { twMerge } from "tailwind-merge"; + +export function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)); +} diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte new file mode 100644 index 0000000..58cf554 --- /dev/null +++ b/src/routes/+layout.svelte @@ -0,0 +1,13 @@ + + + + +{@render children()} + +