From ae4f2f721c679ab6ab9bfbf894fd4db607ea1a27 Mon Sep 17 00:00:00 2001 From: mohammad Date: Tue, 14 Jul 2026 11:21:03 +0330 Subject: [PATCH] add contact request --- nuxt.config.ts | 18 +++-- public/apple-touch-icon.png | Bin 0 -> 2507 bytes public/favicon-32.png | Bin 0 -> 538 bytes public/favicon.ico | Bin 0 -> 538 bytes public/favicon.png | Bin 7167 -> 538 bytes public/favicon.svg | 14 ++++ public/icon-192.png | Bin 0 -> 2668 bytes public/icon-512.png | Bin 0 -> 7314 bytes src/assets/css/tailwind.css | 48 ++++++++++++ src/pages/blog/[slug].vue | 18 ++++- src/pages/contact.vue | 41 +++++++++- src/pages/portfolio/[id].vue | 74 ++++++++++++++++++ src/public/apple-touch-icon.png | Bin 0 -> 2507 bytes src/public/favicon-32.png | Bin 0 -> 538 bytes src/public/favicon.ico | Bin 0 -> 538 bytes src/public/favicon.png | Bin 0 -> 538 bytes src/public/favicon.svg | 14 ++++ src/public/fonts/peyda/PeydaWeb-Black.woff2 | Bin 0 -> 27272 bytes src/public/fonts/peyda/PeydaWeb-Bold.woff2 | Bin 0 -> 26780 bytes .../fonts/peyda/PeydaWeb-ExtraBold.woff2 | Bin 0 -> 28776 bytes src/public/fonts/peyda/PeydaWeb-Medium.woff2 | Bin 0 -> 28812 bytes src/public/fonts/peyda/PeydaWeb-Regular.woff2 | Bin 0 -> 28584 bytes .../fonts/peyda/PeydaWeb-SemiBold.woff2 | Bin 0 -> 28748 bytes src/public/fonts/peyda/PeydaWeb-Thin.woff2 | Bin 0 -> 28832 bytes .../fonts/peyda/peydaWeb-extralight.woff2 | Bin 0 -> 29044 bytes src/public/fonts/peyda/peydaWeb-light.woff2 | Bin 0 -> 26776 bytes src/public/fonts/rokh/Rokh-Black.woff2 | Bin 0 -> 75312 bytes src/public/fonts/rokh/Rokh-Bold.woff2 | Bin 0 -> 81596 bytes src/public/fonts/rokh/Rokh-ExtraBold.woff2 | Bin 0 -> 80876 bytes src/public/fonts/rokh/Rokh-ExtraLight.woff2 | Bin 0 -> 75672 bytes src/public/fonts/rokh/Rokh-HairLine.woff2 | Bin 0 -> 66264 bytes src/public/fonts/rokh/Rokh-Light.woff2 | Bin 0 -> 76056 bytes src/public/fonts/rokh/Rokh-Medium.woff2 | Bin 0 -> 70504 bytes src/public/fonts/rokh/Rokh-Normal.woff2 | Bin 0 -> 76828 bytes src/public/fonts/rokh/Rokh-Regular.woff2 | Bin 0 -> 76240 bytes src/public/fonts/rokh/Rokh-SemiBold.woff2 | Bin 0 -> 82160 bytes src/public/fonts/rokh/Rokh-Thin.woff2 | Bin 0 -> 74980 bytes src/public/fonts/rokh/Rokh-UltraBold.woff2 | Bin 0 -> 81828 bytes src/public/icon-192.png | Bin 0 -> 2668 bytes src/public/icon-512.png | Bin 0 -> 7314 bytes src/utils/blogContent.ts | 15 ++++ 41 files changed, 230 insertions(+), 12 deletions(-) create mode 100644 public/apple-touch-icon.png create mode 100644 public/favicon-32.png create mode 100644 public/favicon.ico create mode 100644 public/favicon.svg create mode 100644 public/icon-192.png create mode 100644 public/icon-512.png create mode 100644 src/public/apple-touch-icon.png create mode 100644 src/public/favicon-32.png create mode 100644 src/public/favicon.ico create mode 100644 src/public/favicon.png create mode 100644 src/public/favicon.svg create mode 100644 src/public/fonts/peyda/PeydaWeb-Black.woff2 create mode 100644 src/public/fonts/peyda/PeydaWeb-Bold.woff2 create mode 100644 src/public/fonts/peyda/PeydaWeb-ExtraBold.woff2 create mode 100644 src/public/fonts/peyda/PeydaWeb-Medium.woff2 create mode 100644 src/public/fonts/peyda/PeydaWeb-Regular.woff2 create mode 100644 src/public/fonts/peyda/PeydaWeb-SemiBold.woff2 create mode 100644 src/public/fonts/peyda/PeydaWeb-Thin.woff2 create mode 100644 src/public/fonts/peyda/peydaWeb-extralight.woff2 create mode 100644 src/public/fonts/peyda/peydaWeb-light.woff2 create mode 100644 src/public/fonts/rokh/Rokh-Black.woff2 create mode 100644 src/public/fonts/rokh/Rokh-Bold.woff2 create mode 100644 src/public/fonts/rokh/Rokh-ExtraBold.woff2 create mode 100644 src/public/fonts/rokh/Rokh-ExtraLight.woff2 create mode 100644 src/public/fonts/rokh/Rokh-HairLine.woff2 create mode 100644 src/public/fonts/rokh/Rokh-Light.woff2 create mode 100644 src/public/fonts/rokh/Rokh-Medium.woff2 create mode 100644 src/public/fonts/rokh/Rokh-Normal.woff2 create mode 100644 src/public/fonts/rokh/Rokh-Regular.woff2 create mode 100644 src/public/fonts/rokh/Rokh-SemiBold.woff2 create mode 100644 src/public/fonts/rokh/Rokh-Thin.woff2 create mode 100644 src/public/fonts/rokh/Rokh-UltraBold.woff2 create mode 100644 src/public/icon-192.png create mode 100644 src/public/icon-512.png diff --git a/nuxt.config.ts b/nuxt.config.ts index 469505a..21febe9 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -3,6 +3,9 @@ import { defineNuxtConfig } from 'nuxt/config' export default defineNuxtConfig({ compatibilityDate: '2026-05-27', srcDir: 'src/', + dir: { + public: 'public' + }, modules: ['@nuxtjs/tailwindcss', '@pinia/nuxt'], css: ['~/assets/css/fonts.css'], tailwindcss: { @@ -17,6 +20,12 @@ export default defineNuxtConfig({ dir: 'rtl' }, title: 'استودیو نورو | Noro Studio', + link: [ + { rel: 'icon', href: '/favicon.ico', sizes: 'any' }, + { rel: 'icon', type: 'image/svg+xml', href: '/favicon.svg' }, + { rel: 'icon', type: 'image/png', sizes: '32x32', href: '/favicon.png' }, + { rel: 'apple-touch-icon', sizes: '180x180', href: '/apple-touch-icon.png' } + ], meta: [ { charset: 'utf-8' }, { name: 'viewport', content: 'width=device-width, initial-scale=1' }, @@ -25,10 +34,9 @@ export default defineNuxtConfig({ content: 'استودیو نورو — طراحی هویت بصری، UI/UX، سوشال مدیا و محتوای دیجیتال' }, - { name: 'color-scheme', content: 'dark light' } - ], - link: [ - { rel: 'icon', type: 'image/png', href: '/favicon.png' } + { name: 'color-scheme', content: 'dark light' }, + { name: 'theme-color', content: '#39c0c4', media: '(prefers-color-scheme: light)' }, + { name: 'theme-color', content: '#050808', media: '(prefers-color-scheme: dark)' } ] } }, @@ -40,5 +48,5 @@ export default defineNuxtConfig({ cmsApiUrl: process.env.NUXT_PUBLIC_CMS_API_URL || 'http://localhost:4000' } }, - devtools: { enabled: true } + devtools: { enabled: false } }) diff --git a/public/apple-touch-icon.png b/public/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..f90a1c53657269c0e72a11b5e014b6f821c42daf GIT binary patch literal 2507 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 Q{G;__BTK`Ehput|0*RNwkN^Mx literal 0 HcmV?d00001 diff --git a/public/favicon-32.png b/public/favicon-32.png new file mode 100644 index 0000000000000000000000000000000000000000..dc0d65d484fd1c3580b717087ab0915471af2b08 GIT binary patch literal 538 zcmV+#0_FXQP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0k26!K~z{r?UXS{ zLQxckCCD+trIy-)5&{b&+Zqg`A%q+nqaoU&S{fp1i$+D;5&|uXE|riqLTQxfdZJ0i zHA*)rrQ} znt4^Dr)MmlOx{5e@VwZw2DAtcMPspRoS0W|V_X2p>kk$nw?gS8_N@Vf0*Cy8KpH3J z)yVOQ$sFX~-g&DGRI`e_0WmQqt7ozJK>}LYz0J>086luoid%y-fYO`8dhhvC!O?%m(d!i`G@~!a; z2ytP*Z-MOvzX5_iN~L_ESj@DdS6MdN4i{?p_89msm7S2#C{?Oktr@{W)5_&tt_36z c2n7F@FTMhq$2>3-xBvhE07*qoM6N<$g2U+F?*IS* literal 0 HcmV?d00001 diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..dc0d65d484fd1c3580b717087ab0915471af2b08 GIT binary patch literal 538 zcmV+#0_FXQP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0k26!K~z{r?UXS{ zLQxckCCD+trIy-)5&{b&+Zqg`A%q+nqaoU&S{fp1i$+D;5&|uXE|riqLTQxfdZJ0i zHA*)rrQ} znt4^Dr)MmlOx{5e@VwZw2DAtcMPspRoS0W|V_X2p>kk$nw?gS8_N@Vf0*Cy8KpH3J z)yVOQ$sFX~-g&DGRI`e_0WmQqt7ozJK>}LYz0J>086luoid%y-fYO`8dhhvC!O?%m(d!i`G@~!a; z2ytP*Z-MOvzX5_iN~L_ESj@DdS6MdN4i{?p_89msm7S2#C{?Oktr@{W)5_&tt_36z c2n7F@FTMhq$2>3-xBvhE07*qoM6N<$g2U+F?*IS* literal 0 HcmV?d00001 diff --git a/public/favicon.png b/public/favicon.png index 6caba6b307bcc06dc3401b29e9ce7fbfaa139021..dc0d65d484fd1c3580b717087ab0915471af2b08 100644 GIT binary patch literal 538 zcmV+#0_FXQP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0k26!K~z{r?UXS{ zLQxckCCD+trIy-)5&{b&+Zqg`A%q+nqaoU&S{fp1i$+D;5&|uXE|riqLTQxfdZJ0i zHA*)rrQ} znt4^Dr)MmlOx{5e@VwZw2DAtcMPspRoS0W|V_X2p>kk$nw?gS8_N@Vf0*Cy8KpH3J z)yVOQ$sFX~-g&DGRI`e_0WmQqt7ozJK>}LYz0J>086luoid%y-fYO`8dhhvC!O?%m(d!i`G@~!a; z2ytP*Z-MOvzX5_iN~L_ESj@DdS6MdN4i{?p_89msm7S2#C{?Oktr@{W)5_&tt_36z c2n7F@FTMhq$2>3-xBvhE07*qoM6N<$g2U+F?*IS* literal 7167 zcmYj$byU;;_dhTh3L~8`P-N1hk*+tR#L)}^DM3I|7)pxNK$KD9=#p+}kS?XAkyaR^ zMhMakzxnz8^ZVy@p67M$dA{zwulszSM_}}H)Tt?1C`m|2s1c7bmPy^Bn?!s$<5AoZku)l!TYstO)x?QYn#4SdcU0R2{HkI?oQ6uu1xwc2%qmUk@OR}#;B#CkX@7Nx z@(9IhkW}zgkV^+uhkJX?VtA`pw!?*ZG>dLjNw@LRm)*&F=Zh7Jy$@|Tp5P1BtJl(- z!aJ(S;zNY0;oSVu9Het9gdAt>M!|Z+!R4Qu(Bx_VB9*il5s2B2=!!*nZOt zk!mo=Rg`k%%5xmmh;al5t@UPi6$+S6}bWnX085|_u(8x?j78s_>+j zGpx@g(N~AZ1*nbed>2T809gBiF3j3Ydl#rCI=*p|V>_a84ATvC1XnT2+cudJAn_u@ z)6>wsx0#!?+D=~s#6lla(q-=p4${z+qRReA0A;bHr!98W;UNj$6?q7>ZRQ%i&sJ{Mr`S`35v(cx8UoB0BPj&A!Hy>N4$I-K1X?j+dlN1I053i^*auJ1U1 zORC;$1-?}9>ZgyBxkM|AeNQh4Jf)dg-4OUC*ughmK3_@6hDp+4BlGvh4PE!(AI5vS!wT~99G z9}w%*J3zNwT&wW-hC-DG)Q?(+|Zop+-E7Ft$@!SioEABQMgR(ts{NneCYO!zR;~}#A;@+NfkqIxXOr5I==_J!Hh}M6M|+k8#eQLv0W}?H*=uc3 z0~a~y`bONcgo@sy$-8cGAdhq$s^*0?s3wk-;rl{6GE(n#OklsR$)NeaXijp5Z)=&0 zB~aSYoge-&fkHkHKLWK1MCrZ-T`;6Y(6lV+U-etBW_MOdyO;6~$irgjJluPkM$&5u zEfF8!Ujr;#`JGqtQ8vJrnh?Orh6V1sgUpTIK-k0hSWF#2Y$B{mE0zoxa5KFiFZe0xc`UP}%?itG`HUnEeV|wq#YaX$@WMcMjg^kiFs^S(hwT_ttf~V~+ zwp84Sf8_|&8;A}-{v1x)+Z4Dv>JQqlLM9=Q&<9(gN@w|GYIfNRfyY6Qe`Au8kp{M) z8Z5dq<1o?UDm@RT$WG(kr~KRv*-m%)sD$}jz6s4B428M$k4Ck!AhdY$V#tnxt*YTW2A1(1h##?bs957rwh1l;ZW| z+Us9+!mUR4PcP}jSiTf#gOifG+r^mMucd;fsufDia&K>E|0xjS!uDwmGyzD3IqZ39};tbMK2V(1Q`3rx)Lfq3uEXE;7 z)f(%k-4cpM@x#*r_j(Pr8bn7rK)eB9^#>L|9pB*_%A#ShWVMPk9+ko0G(A|Ki_Qog z1Y?YsjQSvi8$j&ID4Ts(EGiM)6Ta4XxXDd!cgxJcOjsxDFC*8xmHFDzY*8yv9B~+U zqvIg`o1d@!c`=(Q6U0EL^&is0c?Wm=i#Np=`i+K(rE-hGt@Y%8i@b3zmguU+H`?W; zARhE_XH~y5aISqh7e#8*o{Ao+FP1YaOa_Y>�P&stLG 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 + + + + diff --git a/public/icon-192.png b/public/icon-192.png new file mode 100644 index 0000000000000000000000000000000000000000..fe3c412b691310102a72878d00ac6d09939da74a GIT binary patch literal 2668 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 KdS$mA{{A03nD6-j literal 0 HcmV?d00001 diff --git a/src/assets/css/tailwind.css b/src/assets/css/tailwind.css index b96d909..d81fdef 100644 --- a/src/assets/css/tailwind.css +++ b/src/assets/css/tailwind.css @@ -174,4 +174,52 @@ .noro-btn-secondary { @apply inline-flex items-center justify-center rounded-xl border border-[rgb(var(--noro-btn-secondary-border))] bg-[rgb(var(--noro-btn-secondary-bg))] px-6 py-3 text-sm font-semibold text-[rgb(var(--noro-btn-secondary-text))] transition hover:opacity-90; } + + .blog-article-html h2 { + @apply pt-4 text-2xl font-bold text-noro-text; + } + + .blog-article-html h3 { + @apply pt-2 text-xl font-bold text-noro-text; + } + + .blog-article-html h4 { + @apply pt-1 text-lg font-semibold text-noro-text; + } + + .blog-article-html p { + @apply my-3 whitespace-pre-line; + } + + .blog-article-html ul { + @apply my-4 list-disc space-y-2 pr-6 marker:text-noro-brand; + } + + .blog-article-html ol { + @apply my-4 list-decimal space-y-2 pr-6 marker:text-noro-brand; + } + + .blog-article-html blockquote { + @apply my-6 border-r-4 border-noro-brand/30 bg-noro-surface/60 px-4 py-3 italic; + } + + .blog-article-html a { + @apply text-noro-brand underline decoration-noro-brand/30 underline-offset-2 transition hover:decoration-noro-brand; + } + + .blog-article-html hr { + @apply my-8 border-noro-border; + } + + .blog-article-html img { + @apply my-6 w-full rounded-2xl border border-noro-border object-cover; + } + + .blog-article-html figure { + @apply my-6 overflow-hidden rounded-2xl border border-noro-border bg-noro-surface; + } + + .blog-article-html figcaption { + @apply px-4 py-3 text-center text-sm text-noro-muted; + } } diff --git a/src/pages/blog/[slug].vue b/src/pages/blog/[slug].vue index 1ac8afc..850d749 100644 --- a/src/pages/blog/[slug].vue +++ b/src/pages/blog/[slug].vue @@ -1,5 +1,5 @@