Merge remote-tracking branch 'upstream/main'

pagebuilder
Tejas Chari 2023-11-06 17:55:08 +05:30
commit b866e6cb47
22 changed files with 564 additions and 216 deletions

View File

@ -4,13 +4,27 @@
body { body {
@apply bg-white; @apply bg-white;
@apply text-gray-500; @apply text-gray-600;
@apply font-normal; @apply font-light;
}
a {
@apply text-gray-600;
}
a:hover {
@apply text-blue-700;
@apply underline;
@apply underline-offset-2;
} }
.icon-tabler { .icon-tabler {
stroke-width: 1px; stroke-width: 1px;
fill: none; fill: none;
@apply text-gray-700; @apply text-gray-500;
@apply stroke-gray-700; @apply stroke-gray-500;
}
a:hover .icon-tabler {
@apply stroke-blue-900;
} }

5
_dev/js/theme.js Normal file
View File

@ -0,0 +1,5 @@
import $ from 'jquery';
import prestashop from 'prestashop';
$(function() {
})

View File

@ -5,11 +5,16 @@
"license": "MIT", "license": "MIT",
"devDependencies": { "devDependencies": {
"livereload": "^0.9.3", "livereload": "^0.9.3",
"tailwindcss": "^3.3.5" "tailwindcss": "^3.3.5",
"vite": "^4.5.0"
}, },
"scripts": { "scripts": {
"dev:tailwind": "tailwindcss -i ./elegance.css -o ../assets/css/theme.css --watch", "dev:tailwind": "tailwindcss -i ./elegance.css -o ../assets/css/theme.css --watch",
"dev:livereload": "livereload \"../templates/, ../modules/, ../assets/\"", "dev:livereload": "livereload \"../templates/, ../modules/, ../assets/\"",
"dev": "yarn run dev:livereload & yarn run dev:tailwind" "dev:js": "vite dev",
"dev": "yarn run dev:livereload & yarn run dev:tailwind & yarn run dev:js"
},
"dependencies": {
"jquery": "^3.7.1"
} }
} }

26
_dev/vite.config.js Normal file
View File

@ -0,0 +1,26 @@
import { defineConfig } from 'vite'
export default defineConfig({
build: {
lib: {
entry: "./js/theme.js",
name: 'theme',
formats: ['iife'],
fileName: function() {
return 'theme.js'
}
},
outDir: '../assets/js/',
rollupOptions: {
external: ['$', 'jquery', 'prestashop'],
output: {
globals: {
$: '$',
jquery: 'jQuery',
prestashop: 'prestashop'
}
}
},
write: true
},
})

View File

@ -7,6 +7,116 @@
resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30" resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30"
integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==
"@esbuild/android-arm64@0.18.20":
version "0.18.20"
resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz#984b4f9c8d0377443cc2dfcef266d02244593622"
integrity sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==
"@esbuild/android-arm@0.18.20":
version "0.18.20"
resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz#fedb265bc3a589c84cc11f810804f234947c3682"
integrity sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==
"@esbuild/android-x64@0.18.20":
version "0.18.20"
resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz#35cf419c4cfc8babe8893d296cd990e9e9f756f2"
integrity sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==
"@esbuild/darwin-arm64@0.18.20":
version "0.18.20"
resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz#08172cbeccf95fbc383399a7f39cfbddaeb0d7c1"
integrity sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==
"@esbuild/darwin-x64@0.18.20":
version "0.18.20"
resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz#d70d5790d8bf475556b67d0f8b7c5bdff053d85d"
integrity sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==
"@esbuild/freebsd-arm64@0.18.20":
version "0.18.20"
resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz#98755cd12707f93f210e2494d6a4b51b96977f54"
integrity sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==
"@esbuild/freebsd-x64@0.18.20":
version "0.18.20"
resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz#c1eb2bff03915f87c29cece4c1a7fa1f423b066e"
integrity sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==
"@esbuild/linux-arm64@0.18.20":
version "0.18.20"
resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz#bad4238bd8f4fc25b5a021280c770ab5fc3a02a0"
integrity sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==
"@esbuild/linux-arm@0.18.20":
version "0.18.20"
resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz#3e617c61f33508a27150ee417543c8ab5acc73b0"
integrity sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==
"@esbuild/linux-ia32@0.18.20":
version "0.18.20"
resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz#699391cccba9aee6019b7f9892eb99219f1570a7"
integrity sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==
"@esbuild/linux-loong64@0.18.20":
version "0.18.20"
resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz#e6fccb7aac178dd2ffb9860465ac89d7f23b977d"
integrity sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==
"@esbuild/linux-mips64el@0.18.20":
version "0.18.20"
resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz#eeff3a937de9c2310de30622a957ad1bd9183231"
integrity sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==
"@esbuild/linux-ppc64@0.18.20":
version "0.18.20"
resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz#2f7156bde20b01527993e6881435ad79ba9599fb"
integrity sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==
"@esbuild/linux-riscv64@0.18.20":
version "0.18.20"
resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz#6628389f210123d8b4743045af8caa7d4ddfc7a6"
integrity sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==
"@esbuild/linux-s390x@0.18.20":
version "0.18.20"
resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz#255e81fb289b101026131858ab99fba63dcf0071"
integrity sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==
"@esbuild/linux-x64@0.18.20":
version "0.18.20"
resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz#c7690b3417af318a9b6f96df3031a8865176d338"
integrity sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==
"@esbuild/netbsd-x64@0.18.20":
version "0.18.20"
resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz#30e8cd8a3dded63975e2df2438ca109601ebe0d1"
integrity sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==
"@esbuild/openbsd-x64@0.18.20":
version "0.18.20"
resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz#7812af31b205055874c8082ea9cf9ab0da6217ae"
integrity sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==
"@esbuild/sunos-x64@0.18.20":
version "0.18.20"
resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz#d5c275c3b4e73c9b0ecd38d1ca62c020f887ab9d"
integrity sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==
"@esbuild/win32-arm64@0.18.20":
version "0.18.20"
resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz#73bc7f5a9f8a77805f357fab97f290d0e4820ac9"
integrity sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==
"@esbuild/win32-ia32@0.18.20":
version "0.18.20"
resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz#ec93cbf0ef1085cc12e71e0d661d20569ff42102"
integrity sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==
"@esbuild/win32-x64@0.18.20":
version "0.18.20"
resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz#786c5f41f043b07afb1af37683d7c33668858f6d"
integrity sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==
"@jridgewell/gen-mapping@^0.3.2": "@jridgewell/gen-mapping@^0.3.2":
version "0.3.3" version "0.3.3"
resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098"
@ -148,6 +258,34 @@ dlv@^1.1.3:
resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79"
integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==
esbuild@^0.18.10:
version "0.18.20"
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.18.20.tgz#4709f5a34801b43b799ab7d6d82f7284a9b7a7a6"
integrity sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==
optionalDependencies:
"@esbuild/android-arm" "0.18.20"
"@esbuild/android-arm64" "0.18.20"
"@esbuild/android-x64" "0.18.20"
"@esbuild/darwin-arm64" "0.18.20"
"@esbuild/darwin-x64" "0.18.20"
"@esbuild/freebsd-arm64" "0.18.20"
"@esbuild/freebsd-x64" "0.18.20"
"@esbuild/linux-arm" "0.18.20"
"@esbuild/linux-arm64" "0.18.20"
"@esbuild/linux-ia32" "0.18.20"
"@esbuild/linux-loong64" "0.18.20"
"@esbuild/linux-mips64el" "0.18.20"
"@esbuild/linux-ppc64" "0.18.20"
"@esbuild/linux-riscv64" "0.18.20"
"@esbuild/linux-s390x" "0.18.20"
"@esbuild/linux-x64" "0.18.20"
"@esbuild/netbsd-x64" "0.18.20"
"@esbuild/openbsd-x64" "0.18.20"
"@esbuild/sunos-x64" "0.18.20"
"@esbuild/win32-arm64" "0.18.20"
"@esbuild/win32-ia32" "0.18.20"
"@esbuild/win32-x64" "0.18.20"
fast-glob@^3.3.0: fast-glob@^3.3.0:
version "3.3.1" version "3.3.1"
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4"
@ -270,6 +408,11 @@ jiti@^1.19.1:
resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d" resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d"
integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q== integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==
jquery@^3.7.1:
version "3.7.1"
resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.7.1.tgz#083ef98927c9a6a74d05a6af02806566d16274de"
integrity sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==
lilconfig@^2.0.5, lilconfig@^2.1.0: lilconfig@^2.0.5, lilconfig@^2.1.0:
version "2.1.0" version "2.1.0"
resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52"
@ -430,7 +573,7 @@ postcss-value-parser@^4.0.0:
resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514"
integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
postcss@^8.4.23: postcss@^8.4.23, postcss@^8.4.27:
version "8.4.31" version "8.4.31"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d"
integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==
@ -472,6 +615,13 @@ reusify@^1.0.4:
resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
rollup@^3.27.1:
version "3.29.4"
resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.29.4.tgz#4d70c0f9834146df8705bfb69a9a19c9e1109981"
integrity sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==
optionalDependencies:
fsevents "~2.3.2"
run-parallel@^1.1.9: run-parallel@^1.1.9:
version "1.2.0" version "1.2.0"
resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
@ -561,6 +711,17 @@ util-deprecate@^1.0.2:
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
vite@^4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/vite/-/vite-4.5.0.tgz#ec406295b4167ac3bc23e26f9c8ff559287cff26"
integrity sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==
dependencies:
esbuild "^0.18.10"
postcss "^8.4.27"
rollup "^3.27.1"
optionalDependencies:
fsevents "~2.3.2"
wrappy@1: wrappy@1:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"

View File

@ -645,11 +645,21 @@ video {
margin-right: -1rem; margin-right: -1rem;
} }
.mx-4 {
margin-left: 1rem;
margin-right: 1rem;
}
.mx-auto { .mx-auto {
margin-left: auto; margin-left: auto;
margin-right: auto; margin-right: auto;
} }
.my-12 {
margin-top: 3rem;
margin-bottom: 3rem;
}
.my-2 { .my-2 {
margin-top: 0.5rem; margin-top: 0.5rem;
margin-bottom: 0.5rem; margin-bottom: 0.5rem;
@ -665,14 +675,8 @@ video {
margin-bottom: 2rem; margin-bottom: 2rem;
} }
.my-12 { .mb-1 {
margin-top: 3rem; margin-bottom: 0.25rem;
margin-bottom: 3rem;
}
.mx-4 {
margin-left: 1rem;
margin-right: 1rem;
} }
.mb-4 { .mb-4 {
@ -683,26 +687,34 @@ video {
margin-left: 0.25rem; margin-left: 0.25rem;
} }
.mr-4 {
margin-right: 1rem;
}
.mt-1 { .mt-1 {
margin-top: 0.25rem; margin-top: 0.25rem;
} }
.mt-2 {
margin-top: 0.5rem;
}
.mt-3 {
margin-top: 0.75rem;
}
.mt-16 { .mt-16 {
margin-top: 4rem; margin-top: 4rem;
} }
.mt-2 {
margin-top: 0.5rem;
}
.mt-24 { .mt-24 {
margin-top: 6rem; margin-top: 6rem;
} }
.mt-3 {
margin-top: 0.75rem;
}
.mt-8 {
margin-top: 2rem;
}
.block { .block {
display: block; display: block;
} }
@ -755,10 +767,6 @@ video {
height: 2rem; height: 2rem;
} }
.h-96 {
height: 24rem;
}
.h-auto { .h-auto {
height: auto; height: auto;
} }
@ -767,10 +775,22 @@ video {
height: 100%; height: 100%;
} }
.w-1\/3 {
width: 33.333333%;
}
.w-1\/4 {
width: 25%;
}
.w-12 { .w-12 {
width: 3rem; width: 3rem;
} }
.w-14 {
width: 3.5rem;
}
.w-24 { .w-24 {
width: 6rem; width: 6rem;
} }
@ -791,22 +811,12 @@ video {
width: 100%; width: 100%;
} }
.w-14 { .max-w-2xl {
width: 3.5rem; max-width: 42rem;
} }
.w-28 { .max-w-\[140px\] {
width: 7rem; max-width: 140px;
}
.min-w-fit {
min-width: -moz-fit-content;
min-width: fit-content;
}
.min-w-min {
min-width: -moz-min-content;
min-width: min-content;
} }
.max-w-\[200px\] { .max-w-\[200px\] {
@ -821,18 +831,6 @@ video {
max-width: 100%; max-width: 100%;
} }
.max-w-2xl {
max-width: 42rem;
}
.max-w-\[112px\] {
max-width: 112px;
}
.max-w-\[140px\] {
max-width: 140px;
}
.flex-1 { .flex-1 {
flex: 1 1 0%; flex: 1 1 0%;
} }
@ -896,6 +894,10 @@ video {
justify-content: space-around; justify-content: space-around;
} }
.gap-1 {
gap: 0.25rem;
}
.gap-2 { .gap-2 {
gap: 0.5rem; gap: 0.5rem;
} }
@ -904,18 +906,14 @@ video {
gap: 1rem; gap: 1rem;
} }
.gap-8 {
gap: 2rem;
}
.gap-1 {
gap: 0.25rem;
}
.gap-6 { .gap-6 {
gap: 1.5rem; gap: 1.5rem;
} }
.gap-8 {
gap: 2rem;
}
.truncate { .truncate {
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
@ -935,14 +933,14 @@ video {
border-color: rgb(23 37 84 / var(--tw-border-opacity)); border-color: rgb(23 37 84 / var(--tw-border-opacity));
} }
.bg-gray-100 { .border-gray-300 {
--tw-bg-opacity: 1; --tw-border-opacity: 1;
background-color: rgb(243 244 246 / var(--tw-bg-opacity)); border-color: rgb(209 213 219 / var(--tw-border-opacity));
} }
.bg-white { .border-red-100 {
--tw-bg-opacity: 1; --tw-border-opacity: 1;
background-color: rgb(255 255 255 / var(--tw-bg-opacity)); border-color: rgb(254 226 226 / var(--tw-border-opacity));
} }
.bg-blue-950 { .bg-blue-950 {
@ -950,6 +948,21 @@ video {
background-color: rgb(23 37 84 / var(--tw-bg-opacity)); background-color: rgb(23 37 84 / var(--tw-bg-opacity));
} }
.bg-gray-100 {
--tw-bg-opacity: 1;
background-color: rgb(243 244 246 / var(--tw-bg-opacity));
}
.bg-red-50 {
--tw-bg-opacity: 1;
background-color: rgb(254 242 242 / var(--tw-bg-opacity));
}
.bg-white {
--tw-bg-opacity: 1;
background-color: rgb(255 255 255 / var(--tw-bg-opacity));
}
.object-cover { .object-cover {
-o-object-fit: cover; -o-object-fit: cover;
object-fit: cover; object-fit: cover;
@ -1002,6 +1015,10 @@ video {
padding-right: 0px; padding-right: 0px;
} }
.pr-6 {
padding-right: 1.5rem;
}
.pr-8 { .pr-8 {
padding-right: 2rem; padding-right: 2rem;
} }
@ -1014,14 +1031,14 @@ video {
padding-top: 1rem; padding-top: 1rem;
} }
.pr-6 {
padding-right: 1.5rem;
}
.text-left { .text-left {
text-align: left; text-align: left;
} }
.text-center {
text-align: center;
}
.text-justify { .text-justify {
text-align: justify; text-align: justify;
} }
@ -1055,48 +1072,42 @@ video {
font-weight: 700; font-weight: 700;
} }
.font-medium {
font-weight: 500;
}
.font-semibold {
font-weight: 600;
}
.font-light { .font-light {
font-weight: 300; font-weight: 300;
} }
.font-medium {
font-weight: 500;
}
.font-normal { .font-normal {
font-weight: 400; font-weight: 400;
} }
.font-semibold {
font-weight: 600;
}
.uppercase {
text-transform: uppercase;
}
.leading-6 {
line-height: 1.5rem;
}
.leading-none { .leading-none {
line-height: 1; line-height: 1;
} }
.text-red-400 {
--tw-text-opacity: 1;
color: rgb(248 113 113 / var(--tw-text-opacity));
}
.text-red-700 {
--tw-text-opacity: 1;
color: rgb(185 28 28 / var(--tw-text-opacity));
}
.text-red-700\/50 {
color: rgb(185 28 28 / 0.5);
}
.text-blue-950 { .text-blue-950 {
--tw-text-opacity: 1; --tw-text-opacity: 1;
color: rgb(23 37 84 / var(--tw-text-opacity)); color: rgb(23 37 84 / var(--tw-text-opacity));
} }
.text-white { .text-gray-50 {
--tw-text-opacity: 1; --tw-text-opacity: 1;
color: rgb(255 255 255 / var(--tw-text-opacity)); color: rgb(249 250 251 / var(--tw-text-opacity));
} }
.text-gray-500 { .text-gray-500 {
@ -1104,10 +1115,28 @@ video {
color: rgb(107 114 128 / var(--tw-text-opacity)); color: rgb(107 114 128 / var(--tw-text-opacity));
} }
.text-red-700\/50 {
color: rgb(185 28 28 / 0.5);
}
.text-red-900 {
--tw-text-opacity: 1;
color: rgb(127 29 29 / var(--tw-text-opacity));
}
.text-white {
--tw-text-opacity: 1;
color: rgb(255 255 255 / var(--tw-text-opacity));
}
.line-through { .line-through {
text-decoration-line: line-through; text-decoration-line: line-through;
} }
.underline-offset-2 {
text-underline-offset: 2px;
}
.shadow { .shadow {
--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1); --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color); --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);
@ -1122,7 +1151,7 @@ body {
--tw-bg-opacity: 1; --tw-bg-opacity: 1;
background-color: rgb(255 255 255 / var(--tw-bg-opacity)); background-color: rgb(255 255 255 / var(--tw-bg-opacity));
--tw-text-opacity: 1; --tw-text-opacity: 1;
color: rgb(107 114 128 / var(--tw-text-opacity)); color: rgb(75 85 99 / var(--tw-text-opacity));
font-weight: 400; font-weight: 400;
} }
@ -1130,22 +1159,35 @@ body {
stroke-width: 1px; stroke-width: 1px;
fill: none; fill: none;
--tw-text-opacity: 1; --tw-text-opacity: 1;
color: rgb(55 65 81 / var(--tw-text-opacity)); color: rgb(107 114 128 / var(--tw-text-opacity));
stroke: #374151; stroke: #6b7280;
}
a:hover .icon-tabler {
stroke: #1e3a8a;
} }
.hover\:stroke-2:hover { .hover\:stroke-2:hover {
stroke-width: 2; stroke-width: 2;
} }
.hover\:text-blue-900:hover {
--tw-text-opacity: 1;
color: rgb(30 58 138 / var(--tw-text-opacity));
}
.hover\:text-gray-950:hover {
--tw-text-opacity: 1;
color: rgb(3 7 18 / var(--tw-text-opacity));
}
.hover\:text-yellow-700:hover { .hover\:text-yellow-700:hover {
--tw-text-opacity: 1; --tw-text-opacity: 1;
color: rgb(161 98 7 / var(--tw-text-opacity)); color: rgb(161 98 7 / var(--tw-text-opacity));
} }
.hover\:text-gray-950:hover { .hover\:underline:hover {
--tw-text-opacity: 1; text-decoration-line: underline;
color: rgb(3 7 18 / var(--tw-text-opacity));
} }
.focus\:ring-2:focus { .focus\:ring-2:focus {
@ -1158,11 +1200,6 @@ body {
display: flex; display: flex;
} }
.group:hover .group-hover\:text-gray-900 {
--tw-text-opacity: 1;
color: rgb(17 24 39 / var(--tw-text-opacity));
}
.group:hover .group-hover\:text-gray-950 { .group:hover .group-hover\:text-gray-950 {
--tw-text-opacity: 1; --tw-text-opacity: 1;
color: rgb(3 7 18 / var(--tw-text-opacity)); color: rgb(3 7 18 / var(--tw-text-opacity));
@ -1183,6 +1220,10 @@ body {
display: none; display: none;
} }
.md\:w-1\/2 {
width: 50%;
}
.md\:w-24 { .md\:w-24 {
width: 6rem; width: 6rem;
} }
@ -1217,6 +1258,10 @@ body {
display: none; display: none;
} }
.lg\:w-1\/3 {
width: 33.333333%;
}
.lg\:w-full { .lg\:w-full {
width: 100%; width: 100%;
} }

View File

@ -0,0 +1,43 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License version 3.0
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0
*}
<div class="w-full flex justify-around">
{foreach from=$blocks item=$block key=$key}
<div{if $block['type_link'] !== $LINK_TYPE_NONE && !empty($block['link'])} style="cursor:pointer;" onclick="window.open('{$block['link']}')"{/if} class='flex flex-wrap md:flex-nowrap gap-2 items-center justify-center'>
<span class="item-product w-5 h-5">
{if $block['icon'] != 'undefined'}
{if $block['custom_icon']}
<img {if $block['is_svg']}class="svg" {/if}src="{$block['custom_icon']}">
{elseif $block['icon']}
<img class="svg" src="{$block['icon']}">
{/if}
{/if}&nbsp;
</span>
{if empty($block['description'])}
<p class="block-title text-sm" >{$block['title']}</p>
{else}
<div class='flex flex-col items-center md:items-start'>
<span class="block-title text-sm" >{$block['title']}</span>
<p class='text-xs'>{$block['description'] nofilter}</p>
</div>
{/if}
</div>
{/foreach}
</div>

View File

@ -24,19 +24,13 @@
*} *}
<div id="block_myaccount_infos" class="col-md-3 links wrapper"> <div id="block_myaccount_infos" class="col-md-3 links wrapper">
<p class="h3 myaccount-title hidden-sm-down"> <p class="font-bold">
<a class="text-uppercase" href="{$urls.pages.my_account}" rel="nofollow"> <a class="text-uppercase" href="{$urls.pages.my_account}" rel="nofollow">
{l s='Your account' d='Shop.Theme.Customeraccount'} {l s='Your account' d='Shop.Theme.Customeraccount'}
</a> </a>
</p> </p>
<div class="title clearfix hidden-md-up" data-target="#footer_account_list" data-toggle="collapse"> <div class="title clearfix hidden-md-up" data-target="#footer_account_list" data-toggle="collapse">
<span class="h3">{l s='Your account' d='Shop.Theme.Customeraccount'}</span> <span class="text-base">{l s='Your account' d='Shop.Theme.Customeraccount'}</span>
<span class="float-xs-right">
<span class="navbar-toggler collapse-icons">
<i class="material-icons add">&#xE313;</i>
<i class="material-icons remove">&#xE316;</i>
</span>
</span>
</div> </div>
<ul class="account-list collapse" id="footer_account_list"> <ul class="account-list collapse" id="footer_account_list">
{foreach from=$my_account_urls item=my_account_url} {foreach from=$my_account_urls item=my_account_url}

View File

@ -23,15 +23,19 @@
* International Registered Trademark & Property of PrestaShop SA * International Registered Trademark & Property of PrestaShop SA
*} *}
<div id="_desktop_user_info" class="relative"> <div id="_desktop_user_info" class="relative">
<div class="flex max-w-[200px] justify-end"> <div class="flex max-w-[200px] justify-end mx-4">
{if $logged} {if $logged}
<a <a
class="logout hidden-sm-down" class="logout hidden-sm-down mr-4"
href="{$logout_url}" href="{$logout_url}"
rel="nofollow" rel="nofollow"
> >
<i class="material-icons">&#xE7FF;</i> <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-logout" width="24" height="24" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round">
{l s='Sign out' d='Shop.Theme.Actions'} <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
<path d="M14 8v-2a2 2 0 0 0 -2 -2h-7a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h7a2 2 0 0 0 2 -2v-2"></path>
<path d="M9 12h12l-3 -3"></path>
<path d="M18 15l3 -3"></path>
</svg>
</a> </a>
<a <a
class="account" class="account"
@ -39,8 +43,12 @@
title="{l s='View my customer account' d='Shop.Theme.Customeraccount'}" title="{l s='View my customer account' d='Shop.Theme.Customeraccount'}"
rel="nofollow" rel="nofollow"
> >
<i class="material-icons hidden-md-up logged">&#xE7FF;</i> <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-user-circle" width="24" height="24" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round">
<span class="hidden-sm-down">{$customerName}</span> <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
<path d="M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0"></path>
<path d="M12 10m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0"></path>
<path d="M6.168 18.849a4 4 0 0 1 3.832 -2.849h4a4 4 0 0 1 3.834 2.855"></path>
</svg>
</a> </a>
{else} {else}
<a <a

View File

@ -22,16 +22,16 @@
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
* International Registered Trademark & Property of PrestaShop SA * International Registered Trademark & Property of PrestaShop SA
*} *}
<div class="container"> <div class="flex flex-wrap flex-1 flex-col md:flex-row">
{foreach $linkBlocks as $linkBlock} {foreach $linkBlocks as $linkBlock}
<div class="flex flex-col mb-4"> <div class="flex flex-col mb-4 md:w-1/3">
<div class="font-bold mb-4"> <div class="font-bold mb-4">
{$linkBlock.title} {$linkBlock.title}
</div> </div>
<ul> <ul class="flex flex-col">
{foreach $linkBlock.links as $link} {foreach $linkBlock.links as $link}
<li> <li class="flex">
<a id="{$link.id}-{$linkBlock.id}" class="{$link.class}" href="{$link.url}" title="{$link.description}" {if !empty($link.target)} target="{$link.target}" {/if}> <a id="{$link.id}-{$linkBlock.id}" class="text-sm font-normal leading-6 {$link.class}" href="{$link.url}" title="{$link.description}" {if !empty($link.target)} target="{$link.target}" {/if}>
{$link.title} {$link.title}
</a> </a>
</li> </li>

View File

@ -31,9 +31,9 @@
<a itemprop="item" href="{$path.url}"> <a itemprop="item" href="{$path.url}">
<span itemprop="name">{$path.title}</span> <span itemprop="name">{$path.title}</span>
</a> </a>
<span class="mx-4"> {if !$smarty.foreach.breadcrumb.last}
/ <span class="mx-4">/</span>
</span> {/if}
<meta itemprop="position" content="{$smarty.foreach.breadcrumb.iteration}"> <meta itemprop="position" content="{$smarty.foreach.breadcrumb.iteration}">
</li> </li>
{/block} {/block}

View File

@ -22,14 +22,47 @@
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
* International Registered Trademark & Property of PrestaShop SA * International Registered Trademark & Property of PrestaShop SA
*} *}
<div class="container mx-auto flex flex-col">
<div class="container mx-auto"> {block name='hook_footer_before'}
<div class="flex items-center"> {hook h='displayFooterBefore'}
<div class="w-48 h-48 flex flex-col justify-center"> {/block}
</div>
<div class="container mx-auto flex flex-col gap-8">
<div class="flex flex-col lg:flex-row gap-8">
<div class="w-48 flex flex-row justify-center items-center">
<a class="w-24 h-24" href="{$urls.base_url}"> <a class="w-24 h-24" href="{$urls.base_url}">
<img class="logo w-full aspect-square object-fit" src="{$shop.logo}" alt="{$shop.name}"> <img class="logo w-full aspect-square object-fit" src="{$shop.logo}" alt="{$shop.name}">
</a> </a>
<div class="h-96"> </div>
<div class="w-full flex flex-1 flex-col lg:flex-row">
{block name='hook_footer'}
{hook h='displayFooter'}
{/block}
</div>
<div class="flex justify-center items-center gap-4">
<a class="p-4" href="{$urls.base_url}">
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-x" width="24" height="24" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
<path d="M4 4l11.733 16h4.267l-11.733 -16z"></path>
<path d="M4 20l6.768 -6.768m2.46 -2.46l6.772 -6.772"></path>
</svg>
</a>
<a class="p-4">
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-instagram" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
<path d="M4 4m0 4a4 4 0 0 1 4 -4h8a4 4 0 0 1 4 4v8a4 4 0 0 1 -4 4h-8a4 4 0 0 1 -4 -4z"></path>
<path d="M12 12m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0"></path>
<path d="M16.5 7.5l0 .01"></path>
</svg>
</a>
<a class="p-4">
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-instagram" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
<path d="M4 4m0 4a4 4 0 0 1 4 -4h8a4 4 0 0 1 4 4v8a4 4 0 0 1 -4 4h-8a4 4 0 0 1 -4 -4z"></path>
<path d="M12 12m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0"></path>
<path d="M16.5 7.5l0 .01"></path>
</svg>
</a>
</div> </div>
</div> </div>
<div class="flex"> <div class="flex">
@ -37,13 +70,9 @@
{hook h='displayFooterAfter'} {hook h='displayFooterAfter'}
{/block} {/block}
</div> </div>
<div class="container"> <div class="flex py-8">
<div class="flex justify-center py-8"> <a href="{$shop.url}">
{block name='copyright_link'} <span class="text-sm">© 2023 Brooksbingham Clothing</span>
<a class="_blank" href="https://www.prestashop.com" target="_blank" rel="nofollow"> </a>
{l s='%copyright% %year% - Ecommerce software by %prestashop%' sprintf=['%prestashop%' => 'PrestaShop™', '%year%' => 'Y'|date, '%copyright%' => '©'] d='Shop.Theme.Global'}
</a>
{/block}
</div>
</div> </div>
</div> </div>

View File

@ -23,11 +23,11 @@
* International Registered Trademark & Property of PrestaShop SA * International Registered Trademark & Property of PrestaShop SA
*} *}
{if $errors|count} {if $errors|count}
<div class="help-block"> <div class="help-block mb-4">
{block name='form_errors'} {block name='form_errors'}
<ul> <ul>
{foreach $errors as $error} {foreach $errors as $error}
<li class="alert alert-danger">{$error|nl2br nofilter}</li> <li class="alert alert-danger px-4 py-2 border border-red-100 bg-red-50 text-red-900">{$error|nl2br nofilter}</li>
{/foreach} {/foreach}
</ul> </ul>
{/block} {/block}

View File

@ -30,8 +30,8 @@
{else} {else}
<div class="form-group row {if !empty($field.errors)}has-error{/if}"> <div class="form-group row {if !empty($field.errors)}has-error{/if} flex flex-col">
<label class="col-md-3 form-control-label{if $field.required} required{/if}"> <label class="font-medium form-control-label{if $field.required} required{/if} mb-1">
{if $field.type !== 'checkbox'} {if $field.type !== 'checkbox'}
{$field.label} {$field.label}
{/if} {/if}
@ -88,9 +88,8 @@
{block name='form_field_item_checkbox'} {block name='form_field_item_checkbox'}
<span class="custom-checkbox"> <span class="custom-checkbox">
<label> <label class="font-light text-sm">
<input name="{$field.name}" type="checkbox" value="1" {if $field.value}checked="checked"{/if} {if $field.required}required{/if}> <input name="{$field.name}" type="checkbox" value="1" {if $field.value}checked="checked"{/if} {if $field.required}required{/if}>
<span><i class="material-icons rtl-no-flip checkbox-checked">&#xE5CA;</i></span>
{$field.label nofilter} {$field.label nofilter}
</label> </label>
</span> </span>
@ -132,9 +131,9 @@
{elseif $field.type === 'password'} {elseif $field.type === 'password'}
{block name='form_field_item_password'} {block name='form_field_item_password'}
<div class="input-group js-parent-focus"> <div class="input-group js-parent-focus relative">
<input <input
class="form-control js-child-focus js-visible-password" class="form-control js-child-focus js-visible-password px-2 py-1 border border-gray-300 w-full"
name="{$field.name}" name="{$field.name}"
title="{l s='At least 5 characters long' d='Shop.Forms.Help'}" title="{l s='At least 5 characters long' d='Shop.Forms.Help'}"
type="password" type="password"
@ -142,17 +141,6 @@
pattern=".{literal}{{/literal}5,{literal}}{/literal}" pattern=".{literal}{{/literal}5,{literal}}{/literal}"
{if $field.required}required{/if} {if $field.required}required{/if}
> >
<span class="input-group-btn">
<button
class="btn"
type="button"
data-action="show-password"
data-text-show="{l s='Show' d='Shop.Theme.Actions'}"
data-text-hide="{l s='Hide' d='Shop.Theme.Actions'}"
>
{l s='Show' d='Shop.Theme.Actions'}
</button>
</span>
</div> </div>
{/block} {/block}
@ -160,7 +148,7 @@
{block name='form_field_item_other'} {block name='form_field_item_other'}
<input <input
class="form-control" class="form-control px-2 py-1 border border-gray-300 w-full"
name="{$field.name}" name="{$field.name}"
type="{$field.type}" type="{$field.type}"
value="{$field.value}" value="{$field.value}"

View File

@ -40,19 +40,19 @@
</div> </div>
{/if} {/if}
{/block} {/block}
<div class="product-description flex flex-col pt-4 group-hover:text-gray-950 gap-1"> <div class="product-description flex flex-col pt-4 group-hover:text-blue-900 gap-1">
{block name='product_price_and_shipping'} {block name='product_price_and_shipping'}
<div class="flex w-full justify-between items-center"> <div class="flex w-full justify-between items-center">
{if $product.has_discount} {if $product.has_discount}
<span class="regular-price line-through text-red-700/50 leading-none">{$product.regular_price}</span> <span class="regular-price line-through leading-none font-medium">{$product.regular_price}</span>
{/if} {/if}
<div class="font-semibold text-lg"> <div class="font-bold text-lg">
<span>{$product.price}</span> <span>{$product.price}</span>
</div> </div>
</div> </div>
{/block} {/block}
{block name='product_name'} {block name='product_name'}
<span class="text-xl" itemprop="name">{$product.name|truncate:30:'...'}</span> <span class="text-xl font-medium" itemprop="name">{$product.name|truncate:30:'...'}</span>
{/block} {/block}
</div> </div>
</a> </a>

View File

@ -22,14 +22,50 @@
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
* International Registered Trademark & Property of PrestaShop SA * International Registered Trademark & Property of PrestaShop SA
*} *}
<div class="product-add-to-cart"> <div class="product-add-to-cart flex flex-col gap-4 mt-12 mb-4">
{if !$configuration.is_catalog} {if !$configuration.is_catalog}
{block name='product_availability'}
<span id="product-availability" class='flex w-full justify-center items-center gap-1 text-xl'>
{if $product.show_availability && $product.availability_message}
{if $product.availability == 'available'}
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-box-seam" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
<path d="M12 3l8 4.5v9l-8 4.5l-8 -4.5v-9l8 -4.5"></path>
<path d="M12 12l8 -4.5"></path>
<path d="M8.2 9.8l7.6 -4.6"></path>
<path d="M12 12v9"></path>
<path d="M12 12l-8 -4.5"></path>
</svg>
{elseif $product.availability == 'last_remaining_items'}
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-hourglass" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
<path d="M6.5 7h11"></path>
<path d="M6.5 17h11"></path>
<path d="M6 20v-2a6 6 0 1 1 12 0v2a1 1 0 0 1 -1 1h-10a1 1 0 0 1 -1 -1z"></path>
<path d="M6 4v2a6 6 0 1 0 12 0v-2a1 1 0 0 0 -1 -1h-10a1 1 0 0 0 -1 1z"></path>
</svg>
{else}
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-package-off" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
<path d="M8.812 4.793l3.188 -1.793l8 4.5v8.5m-2.282 1.784l-5.718 3.216l-8 -4.5v-9l2.223 -1.25"></path>
<path d="M14.543 10.57l5.457 -3.07"></path>
<path d="M12 12v9"></path>
<path d="M12 12l-8 -4.5"></path>
<path d="M16 5.25l-4.35 2.447m-2.564 1.442l-1.086 .611"></path>
<path d="M3 3l18 18"></path>
</svg>
{/if}
{$product.availability_message}
{/if}
</span>
{/block}
{block name='product_quantity'} {block name='product_quantity'}
<div class="flex flex-col gap-4 my-12"> <div class="flex w-full flex-col gap-4">
<div class="add"> <div class="add">
<button <button
class="add-to-cart w-full h-12 bg-blue-950 text-white text-base font-light" class="add-to-cart w-full h-12 bg-blue-950 disabled:bg-gray-700 text-white text-base font-light"
data-button-action="add-to-cart" data-button-action="add-to-cart"
type="submit" type="submit"
{if !$product.add_to_cart_url} {if !$product.add_to_cart_url}
@ -54,21 +90,6 @@
</div> </div>
{/block} {/block}
{block name='product_availability'}
<span id="product-availability">
{if $product.show_availability && $product.availability_message}
{if $product.availability == 'available'}
<i class="material-icons rtl-no-flip product-available">&#xE5CA;</i>
{elseif $product.availability == 'last_remaining_items'}
<i class="material-icons product-last-items">&#xE002;</i>
{else}
<i class="material-icons product-unavailable">&#xE14B;</i>
{/if}
{$product.availability_message}
{/if}
</span>
{/block}
{block name='product_minimal_quantity'} {block name='product_minimal_quantity'}
<p class="product-minimal-quantity"> <p class="product-minimal-quantity">
{if $product.minimal_quantity > 1} {if $product.minimal_quantity > 1}

View File

@ -23,12 +23,12 @@
* International Registered Trademark & Property of PrestaShop SA * International Registered Trademark & Property of PrestaShop SA
*} *}
{if $product.show_price} {if $product.show_price}
<div class="product-prices"> <div class="product-prices flex flex-col mt-2">
{block name='product_discount'} {block name='product_discount'}
{if $product.has_discount} {if $product.has_discount}
<div class="product-discount"> <div class="product-discount">
{hook h='displayProductPriceBlock' product=$product type="old_price"} {hook h='displayProductPriceBlock' product=$product type="old_price"}
<span class="regular-price ">{$product.regular_price}</span> <span class="regular-price line-through text-red-700/50 leading-none">{$product.regular_price}</span>
</div> </div>
{/if} {/if}
{/block} {/block}
@ -43,14 +43,14 @@
<link itemprop="availability" href="{$product.seo_availability}"/> <link itemprop="availability" href="{$product.seo_availability}"/>
<meta itemprop="priceCurrency" content="{$currency.iso_code}"> <meta itemprop="priceCurrency" content="{$currency.iso_code}">
<div class="current-price"> <div class="current-price flex gap-2 items-baseline">
<span itemprop="price" class="text-2xl font-normal" content="{$product.price_amount}">{$product.price}</span> <span itemprop="price" class="text-2xl font-normal" content="{$product.price_amount}">{$product.price}</span>
{if $product.has_discount} {if $product.has_discount}
{if $product.discount_type === 'percentage'} {if $product.discount_type === 'percentage'}
<span class="discount discount-percentage">{l s='Save %percentage%' d='Shop.Theme.Catalog' sprintf=['%percentage%' => $product.discount_percentage_absolute]}</span> <span class="discount discount-percentage">{l s='Save %percentage%' d='Shop.Theme.Catalog' sprintf=['%percentage%' => $product.discount_percentage_absolute]}</span>
{else} {else}
<span class="discount discount-amount"> <span class="discount discount-amount text-sm">
{l s='Save %amount%' d='Shop.Theme.Catalog' sprintf=['%amount%' => $product.discount_to_display]} {l s='Save %amount%' d='Shop.Theme.Catalog' sprintf=['%amount%' => $product.discount_to_display]}
</span> </span>
{/if} {/if}

View File

@ -134,7 +134,7 @@
{/block} {/block}
{block name='product_tabs'} {block name='product_tabs'}
<div class="tabs flex flex-col gap-4 mt-16 lg:mt-36"> <div class="tabs flex flex-col gap-4 mt-16">
<ul class="nav nav-tabs flex justify-around" role="tablist"> <ul class="nav nav-tabs flex justify-around" role="tablist">
{if $product.description} {if $product.description}
<li class="nav-item text-base font-semibold text-blue-950"> <li class="nav-item text-base font-semibold text-blue-950">
@ -222,9 +222,9 @@
{block name='product_accessories'} {block name='product_accessories'}
{if $accessories} {if $accessories}
<section class="product-accessories mt-24"> <section class="product-accessories flex flex-col gap-8 mt-24">
<p class="text-2xl font-bold">{l s='Related Products' d='Shop.Theme.Catalog'}</p> <p class="text-2xl font-bold">{l s='Related Products' d='Shop.Theme.Catalog'}</p>
<div class="products grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4"> <div class="products grid grid-cols-1 md:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-8">
{foreach from=$accessories item="product_accessory"} {foreach from=$accessories item="product_accessory"}
{block name='product_miniature'} {block name='product_miniature'}
{include file='catalog/_partials/miniatures/product.tpl' product=$product_accessory} {include file='catalog/_partials/miniatures/product.tpl' product=$product_accessory}

View File

@ -28,7 +28,7 @@
{/block} {/block}
<form action="{block name='customer_form_actionurl'}{$action}{/block}" id="customer-form" class="js-customer-form" method="post"> <form action="{block name='customer_form_actionurl'}{$action}{/block}" id="customer-form" class="js-customer-form" method="post">
<section> <section class="flex flex-col gap-2">
{block "form_fields"} {block "form_fields"}
{foreach from=$formFields item="field"} {foreach from=$formFields item="field"}
{block "form_field"} {block "form_field"}
@ -40,10 +40,10 @@
</section> </section>
{block name='customer_form_footer'} {block name='customer_form_footer'}
<footer class="form-footer clearfix"> <footer class="flex w-full mt-8">
<input type="hidden" name="submitCreate" value="1"> <input type="hidden" name="submitCreate" value="1">
{block "form_buttons"} {block "form_buttons"}
<button class="btn btn-primary form-control-submit float-xs-right" data-link-action="save-customer" type="submit"> <button class="py-2 w-full uppercase font-medium bg-blue-950 text-gray-50" data-link-action="save-customer" type="submit">
{l s='Save' d='Shop.Theme.Actions'} {l s='Save' d='Shop.Theme.Actions'}
</button> </button>
{/block} {/block}

View File

@ -29,8 +29,7 @@
{/block} {/block}
<form id="login-form" action="{block name='login_form_actionurl'}{$action}{/block}" method="post"> <form id="login-form" action="{block name='login_form_actionurl'}{$action}{/block}" method="post">
<section class="flex flex-col gap-2">
<section>
{block name='login_form_fields'} {block name='login_form_fields'}
{foreach from=$formFields item="field"} {foreach from=$formFields item="field"}
{block name='form_field'} {block name='form_field'}
@ -39,17 +38,17 @@
{/foreach} {/foreach}
{/block} {/block}
<div class="forgot-password"> <div class="forgot-password">
<a href="{$urls.pages.password}" rel="nofollow"> <a class="text-base hover:underline underline-offset-2 hover:text-blue-900" href="{$urls.pages.password}" rel="nofollow">
{l s='Forgot your password?' d='Shop.Theme.Customeraccount'} {l s='Forgot your password?' d='Shop.Theme.Customeraccount'}
</a> </a>
</div> </div>
</section> </section>
{block name='login_form_footer'} {block name='login_form_footer'}
<footer class="form-footer text-sm-center clearfix"> <footer class="form-footer w-full mt-8">
<input type="hidden" name="submitLogin" value="1"> <input type="hidden" name="submitLogin" value="1">
{block name='form_buttons'} {block name='form_buttons'}
<button id="submit-login" class="btn btn-primary" data-link-action="sign-in" type="submit" class="form-control-submit"> <button id="submit-login" class="uppercase font-medium py-2 text-center w-full bg-blue-950 text-gray-50" data-link-action="sign-in" type="submit" >
{l s='Sign in' d='Shop.Theme.Actions'} {l s='Sign in' d='Shop.Theme.Actions'}
</button> </button>
{/block} {/block}

View File

@ -22,25 +22,27 @@
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
* International Registered Trademark & Property of PrestaShop SA * International Registered Trademark & Property of PrestaShop SA
*} *}
{extends file='page.tpl'} {extends file=$layout}
{block name='content'}
{block name='page_title'} <div class="flex items-center flex-col">
{l s='Log in to your account' d='Shop.Theme.Customeraccount'} {block name='page_title'}
{/block} <span class="text-lg font-medium mb-4">
{l s='Log in to your account' d='Shop.Theme.Customeraccount'}
{block name='page_content'} </span>
{/block}
{block name='login_form_container'} {block name='login_form_container'}
<section class="login-form"> <section class="login-form w-1/4">
{render file='customer/_partials/login-form.tpl' ui=$login_form} {render file='customer/_partials/login-form.tpl' ui=$login_form}
</section> </section>
<hr/> <hr/>
{block name='display_after_login_form'} {block name='display_after_login_form'}
{hook h='displayCustomerLoginFormAfter'} {hook h='displayCustomerLoginFormAfter'}
{/block} {/block}
<div class="no-account"> <div class="no-account mt-2">
<a href="{$urls.pages.register}" data-link-action="display-register-form"> <a class="text-base hover:underline underline-offset-2 hover:text-blue-900 font-normal" href="{$urls.pages.register}" data-link-action="display-register-form">
{l s='No account? Create one here' d='Shop.Theme.Customeraccount'} {l s='No account? Create one here' d='Shop.Theme.Customeraccount'}
</a> </a>
</div> </div>
{/block} {/block}
</div>
{/block} {/block}

View File

@ -22,18 +22,26 @@
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
* International Registered Trademark & Property of PrestaShop SA * International Registered Trademark & Property of PrestaShop SA
*} *}
{extends file='page.tpl'} {extends file=$layout}
{block name='content'}
{block name='page_title'} <div class="flex flex-col items-center">
{l s='Create an account' d='Shop.Theme.Customeraccount'} {block name='page_title'}
{/block} <span class="text-lg font-medium mb-4">
{l s='Create an account' d='Shop.Theme.Customeraccount'}
{block name='page_content'} </span>
{/block}
{block name='register_form_container'} {block name='register_form_container'}
<div class="w-full md:w-1/2 lg:w-1/3">
{$hook_create_account_top nofilter} {$hook_create_account_top nofilter}
<section class="register-form"> <section class="register-form">
<p>{l s='Already have an account?' d='Shop.Theme.Customeraccount'} <a href="{$urls.pages.authentication}">{l s='Log in instead!' d='Shop.Theme.Customeraccount'}</a></p>
{render file='customer/_partials/customer-form.tpl' ui=$register_form} {render file='customer/_partials/customer-form.tpl' ui=$register_form}
<div class="flex justify-center mt-8">
<a class="text-base hover:underline underline-offset-2 hover:text-blue-900 font-normal" href="{$urls.pages.authentication}">
{l s='Already have an account? Log in instead!' d='Shop.Theme.Customeraccount'}
</a>
</div>
</section> </section>
</div>
{/block} {/block}
</div>
{/block} {/block}