Compare commits
2 commits
2ef5fbba66
...
e75258efe0
| Author | SHA1 | Date | |
|---|---|---|---|
| e75258efe0 | |||
| 6102b77ac7 |
1
.gitignore
vendored
|
|
@ -7,6 +7,7 @@ web/app/upgrade
|
||||||
web/app/cache/*
|
web/app/cache/*
|
||||||
web/app/languages/
|
web/app/languages/
|
||||||
web/app/object-cache.php
|
web/app/object-cache.php
|
||||||
|
web/app/themes/haiku-atelier-2024/assets/css/**/*
|
||||||
web/app/themes/haiku-atelier-2024/assets/js/*
|
web/app/themes/haiku-atelier-2024/assets/js/*
|
||||||
|
|
||||||
# WordPress
|
# WordPress
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,14 @@
|
||||||
"!vtsls",
|
"!vtsls",
|
||||||
"..."
|
"..."
|
||||||
],
|
],
|
||||||
|
"languages": {
|
||||||
|
"PHP": {
|
||||||
|
"language_servers": [
|
||||||
|
"phpactor",
|
||||||
|
"phpantom_lsp"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
"lsp": {
|
"lsp": {
|
||||||
"css-variables": {
|
"css-variables": {
|
||||||
"settings": {
|
"settings": {
|
||||||
|
|
|
||||||
217
aube-lock.yaml
|
|
@ -5,7 +5,12 @@ settings:
|
||||||
excludeLinksFromLockfile: false
|
excludeLinksFromLockfile: false
|
||||||
|
|
||||||
time:
|
time:
|
||||||
globals@17.6.0: 2026-05-01T16:37:48.055Z
|
'@typescript/native-preview-darwin-arm64@7.0.0-dev.20260504.1': 2026-05-04T08:07:16.408Z
|
||||||
|
'@typescript/native-preview-linux-arm64@7.0.0-dev.20260504.1': 2026-05-04T08:07:08.493Z
|
||||||
|
'@typescript/native-preview-linux-x64@7.0.0-dev.20260504.1': 2026-05-04T08:07:00.673Z
|
||||||
|
'@typescript/native-preview-win32-arm64@7.0.0-dev.20260504.1': 2026-05-04T08:06:56.870Z
|
||||||
|
'@typescript/native-preview-win32-x64@7.0.0-dev.20260504.1': 2026-05-04T08:06:52.760Z
|
||||||
|
'@typescript/native-preview@7.0.0-dev.20260504.1': 2026-05-04T08:07:19.165Z
|
||||||
|
|
||||||
importers:
|
importers:
|
||||||
|
|
||||||
|
|
@ -21,8 +26,8 @@ importers:
|
||||||
specifier: ^8.1.5
|
specifier: ^8.1.5
|
||||||
version: 8.1.5
|
version: 8.1.5
|
||||||
effect:
|
effect:
|
||||||
specifier: ^4.0.0-beta.59
|
specifier: ^4.0.0-beta.60
|
||||||
version: 4.0.0-beta.59
|
version: 4.0.0-beta.60
|
||||||
html-template-tag:
|
html-template-tag:
|
||||||
specifier: ^5.0.0
|
specifier: ^5.0.0
|
||||||
version: 5.0.0
|
version: 5.0.0
|
||||||
|
|
@ -34,13 +39,13 @@ importers:
|
||||||
version: 4.0.4
|
version: 4.0.4
|
||||||
postcss:
|
postcss:
|
||||||
specifier: ^8.4.21
|
specifier: ^8.4.21
|
||||||
version: 8.5.12
|
version: 8.5.13
|
||||||
purify-ts:
|
purify-ts:
|
||||||
specifier: 2.1.2
|
specifier: 2.1.2
|
||||||
version: 2.1.2
|
version: 2.1.2
|
||||||
stylelint-order:
|
stylelint-order:
|
||||||
specifier: '>=6'
|
specifier: '>=6'
|
||||||
version: 8.1.1(stylelint@17.9.1)
|
version: 8.1.1(stylelint@17.10.0)
|
||||||
terser:
|
terser:
|
||||||
specifier: ^5.16.0
|
specifier: ^5.16.0
|
||||||
version: 5.46.2
|
version: 5.46.2
|
||||||
|
|
@ -61,13 +66,13 @@ importers:
|
||||||
specifier: ^0.5.2
|
specifier: ^0.5.2
|
||||||
version: 0.5.2
|
version: 0.5.2
|
||||||
'@gcch/configuration-eslint':
|
'@gcch/configuration-eslint':
|
||||||
specifier: git+https://git.gcch.fr/gcch/configuration-eslint#888eb4aa54
|
specifier: git+https://git.gcch.fr/gcch/configuration-eslint
|
||||||
version: https://git.gcch.fr/gcch/configuration-eslint#888eb4aa54e5bfd6251566d7469ee99204c19f45
|
version: https://git.gcch.fr/gcch/configuration-eslint#888eb4aa54e5bfd6251566d7469ee99204c19f45
|
||||||
'@gcch/configuration-oxlint':
|
'@gcch/configuration-oxlint':
|
||||||
specifier: git+https://git.gcch.fr/gcch/configuration-oxlint#83547fc1ebfd
|
specifier: git+https://git.gcch.fr/gcch/configuration-oxlint
|
||||||
version: https://git.gcch.fr/gcch/configuration-oxlint#83547fc1ebfd6cb402e3c7f074b3e267632ebf4a
|
version: https://git.gcch.fr/gcch/configuration-oxlint#83547fc1ebfd6cb402e3c7f074b3e267632ebf4a
|
||||||
'@gcch/configuration-prettier':
|
'@gcch/configuration-prettier':
|
||||||
specifier: git+https://git.gcch.fr/gcch/configuration-prettier#d267d6dc5e
|
specifier: git+https://git.gcch.fr/gcch/configuration-prettier
|
||||||
version: https://git.gcch.fr/gcch/configuration-prettier#d267d6dc5ee8f14378180d71f651009bf7aa3acc
|
version: https://git.gcch.fr/gcch/configuration-prettier#d267d6dc5ee8f14378180d71f651009bf7aa3acc
|
||||||
'@playwright/test':
|
'@playwright/test':
|
||||||
specifier: ^1.59.1
|
specifier: ^1.59.1
|
||||||
|
|
@ -82,8 +87,8 @@ importers:
|
||||||
specifier: ^25.6.0
|
specifier: ^25.6.0
|
||||||
version: 25.6.0
|
version: 25.6.0
|
||||||
'@typescript/native-preview':
|
'@typescript/native-preview':
|
||||||
specifier: 7.0.0-dev.20260503.1
|
specifier: 7.0.0-dev.20260504.1
|
||||||
version: 7.0.0-dev.20260503.1
|
version: 7.0.0-dev.20260504.1
|
||||||
'@vitejs/plugin-legacy':
|
'@vitejs/plugin-legacy':
|
||||||
specifier: ^8.0.1
|
specifier: ^8.0.1
|
||||||
version: 8.0.1(terser@5.46.2)(vite@8.0.10(@types/node@25.6.0)(jiti@2.6.1)(sass-embedded@1.99.0)(terser@5.46.2)(yaml@2.8.3))
|
version: 8.0.1(terser@5.46.2)(vite@8.0.10(@types/node@25.6.0)(jiti@2.6.1)(sass-embedded@1.99.0)(terser@5.46.2)(yaml@2.8.3))
|
||||||
|
|
@ -115,8 +120,8 @@ importers:
|
||||||
specifier: ^6.5.0
|
specifier: ^6.5.0
|
||||||
version: 6.5.0(picomatch@4.0.4)
|
version: 6.5.0(picomatch@4.0.4)
|
||||||
globals:
|
globals:
|
||||||
specifier: ^17.6
|
specifier: '17'
|
||||||
version: 17.6.0
|
version: 17.5.0
|
||||||
jiti:
|
jiti:
|
||||||
specifier: ^2.6.1
|
specifier: ^2.6.1
|
||||||
version: 2.6.1
|
version: 2.6.1
|
||||||
|
|
@ -163,23 +168,23 @@ importers:
|
||||||
specifier: ^1.99.0
|
specifier: ^1.99.0
|
||||||
version: 1.99.0
|
version: 1.99.0
|
||||||
stylelint:
|
stylelint:
|
||||||
specifier: ^17.9.1
|
specifier: ^17.10.0
|
||||||
version: 17.9.1
|
version: 17.10.0
|
||||||
stylelint-config-clean-order:
|
stylelint-config-clean-order:
|
||||||
specifier: ^8.0.1
|
specifier: ^8.0.1
|
||||||
version: 8.0.1(stylelint@17.9.1)(stylelint-order@8.1.1(stylelint@17.9.1))
|
version: 8.0.1(stylelint@17.10.0)(stylelint-order@8.1.1(stylelint@17.10.0))
|
||||||
stylelint-config-sass-guidelines:
|
stylelint-config-sass-guidelines:
|
||||||
specifier: ^13.0.0
|
specifier: ^13.0.0
|
||||||
version: 13.0.0(postcss@8.5.12)(stylelint@17.9.1)
|
version: 13.0.0(postcss@8.5.13)(stylelint@17.10.0)
|
||||||
stylelint-config-standard-scss:
|
stylelint-config-standard-scss:
|
||||||
specifier: ^17.0.0
|
specifier: ^17.0.0
|
||||||
version: 17.0.0(postcss@8.5.12)(stylelint@17.9.1)
|
version: 17.0.0(postcss@8.5.13)(stylelint@17.10.0)
|
||||||
stylelint-declaration-block-no-ignored-properties:
|
stylelint-declaration-block-no-ignored-properties:
|
||||||
specifier: ^3.0.0
|
specifier: ^3.0.0
|
||||||
version: 3.0.0(stylelint@17.9.1)
|
version: 3.0.0(stylelint@17.10.0)
|
||||||
stylelint-plugin-logical-css:
|
stylelint-plugin-logical-css:
|
||||||
specifier: ^2.1.0
|
specifier: ^2.1.0
|
||||||
version: 2.1.0(stylelint@17.9.1)
|
version: 2.1.0(stylelint@17.10.0)
|
||||||
typescript:
|
typescript:
|
||||||
specifier: ^6.0.3
|
specifier: ^6.0.3
|
||||||
version: 6.0.3
|
version: 6.0.3
|
||||||
|
|
@ -1207,16 +1212,48 @@ packages:
|
||||||
typescript: '>=4.5.2'
|
typescript: '>=4.5.2'
|
||||||
aliasOf: '@better-typescript-lib/webworker'
|
aliasOf: '@better-typescript-lib/webworker'
|
||||||
|
|
||||||
'@typescript/native-preview-linux-x64@7.0.0-dev.20260503.1':
|
'@typescript/native-preview-darwin-arm64@7.0.0-dev.20260504.1':
|
||||||
resolution: {integrity: sha512-M64z7LwpqNfOXYCBKmD/ObwyxYOobUk4tDv0ECNLit7pDER1sswNZjJGjgRYjQsKokmydy6p3FqtJ1uUPUP/sw==}
|
resolution: {integrity: sha512-+Qs1Q7Qxfp11n/hU3pweFU+EQ37FnDsdWOOxb7/vCy8QGBysrLUUYRhQ+GSW3s663oMtN6+9Kf82hk3ZT+kXlg==}
|
||||||
|
engines: {node: '>=16.20.0'}
|
||||||
|
os:
|
||||||
|
- darwin
|
||||||
|
cpu:
|
||||||
|
- arm64
|
||||||
|
|
||||||
|
'@typescript/native-preview-linux-arm64@7.0.0-dev.20260504.1':
|
||||||
|
resolution: {integrity: sha512-y1Qai5l55Sl+/3B0hyQtvynq//C22BKFH3CfU35fbLYUo4P/ISUycyAbcA+PAPazpDFO3E56I96QUQrbJL2VVA==}
|
||||||
|
engines: {node: '>=16.20.0'}
|
||||||
|
os:
|
||||||
|
- linux
|
||||||
|
cpu:
|
||||||
|
- arm64
|
||||||
|
|
||||||
|
'@typescript/native-preview-linux-x64@7.0.0-dev.20260504.1':
|
||||||
|
resolution: {integrity: sha512-ngN3Ie3Vin6pFtqeNywxm86RTxgI0Fo0GZyJ1PxokLES8J3xfMPtMYfv85c/+5uz5+7T+m4LRLyY5IoLY4gtuw==}
|
||||||
engines: {node: '>=16.20.0'}
|
engines: {node: '>=16.20.0'}
|
||||||
os:
|
os:
|
||||||
- linux
|
- linux
|
||||||
cpu:
|
cpu:
|
||||||
- x64
|
- x64
|
||||||
|
|
||||||
'@typescript/native-preview@7.0.0-dev.20260503.1':
|
'@typescript/native-preview-win32-arm64@7.0.0-dev.20260504.1':
|
||||||
resolution: {integrity: sha512-gDro38CPFiBUGbaFGNt+ufOsEd1OrZrfrOPxsLSfBcvvoGaqAxV++ul/BHTOShoEkIYHiFsoDX2az1IPCDV2jQ==}
|
resolution: {integrity: sha512-/GZDJN/CsLbqIe7EdWDkXhNX9C41VjemBeUN6+9ckvEFLH8XyKTmXPYikNOn0N819M1KSeNZltplyUslfROOdw==}
|
||||||
|
engines: {node: '>=16.20.0'}
|
||||||
|
os:
|
||||||
|
- win32
|
||||||
|
cpu:
|
||||||
|
- arm64
|
||||||
|
|
||||||
|
'@typescript/native-preview-win32-x64@7.0.0-dev.20260504.1':
|
||||||
|
resolution: {integrity: sha512-EYQBdVZq4xIzhTtKxw6wvee9238hEb7XrPG413AEZBD3kcR3qqvPULXsPzQyEpneCReATSaihscP/LfhMQYUmA==}
|
||||||
|
engines: {node: '>=16.20.0'}
|
||||||
|
os:
|
||||||
|
- win32
|
||||||
|
cpu:
|
||||||
|
- x64
|
||||||
|
|
||||||
|
'@typescript/native-preview@7.0.0-dev.20260504.1':
|
||||||
|
resolution: {integrity: sha512-bHFGxyIU83qjj6ywn3817A+Ug2ZID0GiBA5WFdbc/T7EjcrKnUUylexq0fU81N/mTbfw3FyP6ZCEdO2Ntcl/VQ==}
|
||||||
engines: {node: '>=16.20.0'}
|
engines: {node: '>=16.20.0'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
|
|
@ -1551,8 +1588,8 @@ packages:
|
||||||
resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
|
resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
|
||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
|
|
||||||
effect@4.0.0-beta.59:
|
effect@4.0.0-beta.60:
|
||||||
resolution: {integrity: sha512-xyUDLeHSe8d6lWGOvR6Fgn2HL6gYeTZ/S4Jzk9uc4ZUxMPPsNZlNXrvk0C7/utQFzeX7uAWcVnG2BjbA0SRoAA==}
|
resolution: {integrity: sha512-OkrCKT+aBFIti4ryuxKfIozNx2SMxmFZ8uWB53gGzdjQzaJ7RVf0s6nJQ4JubJM//R24DtSYNOdmPRSK+qoRww==}
|
||||||
|
|
||||||
electron-to-chromium@1.5.344:
|
electron-to-chromium@1.5.344:
|
||||||
resolution: {integrity: sha512-4MxfbmNDm+KPh066EZy+eUnkcDPcZ35wNmOWzFuh/ijvHsve6kbLTLURy88uCNK5FbpN+yk2nQY6BYh1GEt+wg==}
|
resolution: {integrity: sha512-4MxfbmNDm+KPh066EZy+eUnkcDPcZ35wNmOWzFuh/ijvHsve6kbLTLURy88uCNK5FbpN+yk2nQY6BYh1GEt+wg==}
|
||||||
|
|
@ -1875,10 +1912,6 @@ packages:
|
||||||
resolution: {integrity: sha512-qoV+HK2yFl/366t2/Cb3+xxPUo5BuMynomoDmiaZBIdbs+0pYbjfZU+twLhGKp4uCZ/+NbtpVepH5bGCxRyy2g==}
|
resolution: {integrity: sha512-qoV+HK2yFl/366t2/Cb3+xxPUo5BuMynomoDmiaZBIdbs+0pYbjfZU+twLhGKp4uCZ/+NbtpVepH5bGCxRyy2g==}
|
||||||
engines: {node: '>=18'}
|
engines: {node: '>=18'}
|
||||||
|
|
||||||
globals@17.6.0:
|
|
||||||
resolution: {integrity: sha512-sepffkT8stwnIYbsMBpoCHJuJM5l98FUF2AnE07hfvE0m/qp3R586hw4jF4uadbhvg1ooIdzuu7CsfD2jzCaNA==}
|
|
||||||
engines: {node: '>=18'}
|
|
||||||
|
|
||||||
globalthis@1.0.4:
|
globalthis@1.0.4:
|
||||||
resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
|
resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
|
||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
|
|
@ -2561,6 +2594,10 @@ packages:
|
||||||
resolution: {integrity: sha512-W62t/Se6rA0Az3DfCL0AqJwXuKwBeYg6nOaIgzP+xZ7N5BFCI7DYi1qs6ygUYT6rvfi6t9k65UMLJC+PHZpDAA==}
|
resolution: {integrity: sha512-W62t/Se6rA0Az3DfCL0AqJwXuKwBeYg6nOaIgzP+xZ7N5BFCI7DYi1qs6ygUYT6rvfi6t9k65UMLJC+PHZpDAA==}
|
||||||
engines: {node: ^10 || ^12 || >=14}
|
engines: {node: ^10 || ^12 || >=14}
|
||||||
|
|
||||||
|
postcss@8.5.13:
|
||||||
|
resolution: {integrity: sha512-qif0+jGGZoLWdHey3UFHHWP0H7Gbmsk8T5VEqyYFbWqPr1XqvLGBbk/sl8V5exGmcYJklJOhOQq1pV9IcsiFag==}
|
||||||
|
engines: {node: ^10 || ^12 || >=14}
|
||||||
|
|
||||||
prelude-ls@1.2.1:
|
prelude-ls@1.2.1:
|
||||||
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
|
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
|
||||||
engines: {node: '>= 0.8.0'}
|
engines: {node: '>= 0.8.0'}
|
||||||
|
|
@ -2933,8 +2970,8 @@ packages:
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
stylelint: ^16.8.2 || ^17.0.0
|
stylelint: ^16.8.2 || ^17.0.0
|
||||||
|
|
||||||
stylelint@17.9.1:
|
stylelint@17.10.0:
|
||||||
resolution: {integrity: sha512-THTmnAPJTrg/JhkTWZlSyrO+HUYMx6ELthIHeMyD2WOKqXIJUFQv2Yxn91bvUrZdbBJaW2dUuQdPST2wcQ6C3g==}
|
resolution: {integrity: sha512-cI7I6HHEYOHHVNVci+s92WlA3QfmNhjwFdgCgYV3TLEysilOjk+B3EFxMED1xY9GYB0Kre3OD+mSLj19VLTIvA==}
|
||||||
engines: {node: '>=20.19.0'}
|
engines: {node: '>=20.19.0'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
|
|
@ -3907,7 +3944,7 @@ snapshots:
|
||||||
eslint-plugin-perfectionist: 5.9.0(eslint@10.3.0(jiti@2.6.1))
|
eslint-plugin-perfectionist: 5.9.0(eslint@10.3.0(jiti@2.6.1))
|
||||||
eslint-plugin-sonarjs: 4.0.3(eslint@10.3.0(jiti@2.6.1))
|
eslint-plugin-sonarjs: 4.0.3(eslint@10.3.0(jiti@2.6.1))
|
||||||
eslint-plugin-unicorn: 64.0.0(eslint@10.3.0(jiti@2.6.1))
|
eslint-plugin-unicorn: 64.0.0(eslint@10.3.0(jiti@2.6.1))
|
||||||
globals: 17.6.0
|
globals: 17.5.0
|
||||||
typescript-eslint: 8.59.1(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3)
|
typescript-eslint: 8.59.1(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3)
|
||||||
|
|
||||||
'@gcch/configuration-oxlint@https://git.gcch.fr/gcch/configuration-oxlint#83547fc1ebfd6cb402e3c7f074b3e267632ebf4a':
|
'@gcch/configuration-oxlint@https://git.gcch.fr/gcch/configuration-oxlint#83547fc1ebfd6cb402e3c7f074b3e267632ebf4a':
|
||||||
|
|
@ -3916,7 +3953,7 @@ snapshots:
|
||||||
eslint-plugin-functional: 9.0.4(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3)
|
eslint-plugin-functional: 9.0.4(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3)
|
||||||
eslint-plugin-jsx-a11y: 6.10.2(eslint@10.3.0(jiti@2.6.1))
|
eslint-plugin-jsx-a11y: 6.10.2(eslint@10.3.0(jiti@2.6.1))
|
||||||
eslint-plugin-perfectionist: 5.9.0(eslint@10.3.0(jiti@2.6.1))
|
eslint-plugin-perfectionist: 5.9.0(eslint@10.3.0(jiti@2.6.1))
|
||||||
globals: 17.6.0
|
globals: 17.5.0
|
||||||
oxlint: 1.62.0(oxlint-tsgolint@0.22.1)
|
oxlint: 1.62.0(oxlint-tsgolint@0.22.1)
|
||||||
oxlint-tsgolint: 0.22.1
|
oxlint-tsgolint: 0.22.1
|
||||||
|
|
||||||
|
|
@ -4060,7 +4097,7 @@ snapshots:
|
||||||
|
|
||||||
'@standard-schema/spec@1.1.0': {}
|
'@standard-schema/spec@1.1.0': {}
|
||||||
|
|
||||||
'@stylistic/stylelint-plugin@5.1.0(stylelint@17.9.1)':
|
'@stylistic/stylelint-plugin@5.1.0(stylelint@17.10.0)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0)
|
'@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0)
|
||||||
'@csstools/css-tokenizer': 4.0.0
|
'@csstools/css-tokenizer': 4.0.0
|
||||||
|
|
@ -4069,7 +4106,7 @@ snapshots:
|
||||||
postcss-selector-parser: 7.1.1
|
postcss-selector-parser: 7.1.1
|
||||||
postcss-value-parser: 4.2.0
|
postcss-value-parser: 4.2.0
|
||||||
style-search: 0.1.0
|
style-search: 0.1.0
|
||||||
stylelint: 17.9.1
|
stylelint: 17.10.0
|
||||||
|
|
||||||
'@types/bun@1.3.13':
|
'@types/bun@1.3.13':
|
||||||
dependencies:
|
dependencies:
|
||||||
|
|
@ -4246,11 +4283,23 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
typescript: 6.0.3
|
typescript: 6.0.3
|
||||||
|
|
||||||
'@typescript/native-preview-linux-x64@7.0.0-dev.20260503.1': {}
|
'@typescript/native-preview-darwin-arm64@7.0.0-dev.20260504.1': {}
|
||||||
|
|
||||||
'@typescript/native-preview@7.0.0-dev.20260503.1':
|
'@typescript/native-preview-linux-arm64@7.0.0-dev.20260504.1': {}
|
||||||
|
|
||||||
|
'@typescript/native-preview-linux-x64@7.0.0-dev.20260504.1': {}
|
||||||
|
|
||||||
|
'@typescript/native-preview-win32-arm64@7.0.0-dev.20260504.1': {}
|
||||||
|
|
||||||
|
'@typescript/native-preview-win32-x64@7.0.0-dev.20260504.1': {}
|
||||||
|
|
||||||
|
'@typescript/native-preview@7.0.0-dev.20260504.1':
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@typescript/native-preview-linux-x64': 7.0.0-dev.20260503.1
|
'@typescript/native-preview-darwin-arm64': 7.0.0-dev.20260504.1
|
||||||
|
'@typescript/native-preview-linux-arm64': 7.0.0-dev.20260504.1
|
||||||
|
'@typescript/native-preview-linux-x64': 7.0.0-dev.20260504.1
|
||||||
|
'@typescript/native-preview-win32-arm64': 7.0.0-dev.20260504.1
|
||||||
|
'@typescript/native-preview-win32-x64': 7.0.0-dev.20260504.1
|
||||||
? '@vitejs/plugin-legacy@8.0.1(terser@5.46.2)(vite@8.0.10(@types/node@25.6.0)(jiti@2.6.1)(sass-embedded@1.99.0)(terser@5.46.2)(yaml@2.8.3))'
|
? '@vitejs/plugin-legacy@8.0.1(terser@5.46.2)(vite@8.0.10(@types/node@25.6.0)(jiti@2.6.1)(sass-embedded@1.99.0)(terser@5.46.2)(yaml@2.8.3))'
|
||||||
|
|
||||||
: dependencies:
|
: dependencies:
|
||||||
|
|
@ -4612,7 +4661,7 @@ snapshots:
|
||||||
es-errors: 1.3.0
|
es-errors: 1.3.0
|
||||||
gopd: 1.2.0
|
gopd: 1.2.0
|
||||||
|
|
||||||
effect@4.0.0-beta.59:
|
effect@4.0.0-beta.60:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@standard-schema/spec': 1.1.0
|
'@standard-schema/spec': 1.1.0
|
||||||
fast-check: 4.7.0
|
fast-check: 4.7.0
|
||||||
|
|
@ -5069,8 +5118,6 @@ snapshots:
|
||||||
|
|
||||||
globals@17.5.0: {}
|
globals@17.5.0: {}
|
||||||
|
|
||||||
globals@17.6.0: {}
|
|
||||||
|
|
||||||
globalthis@1.0.4:
|
globalthis@1.0.4:
|
||||||
dependencies:
|
dependencies:
|
||||||
define-properties: 1.2.1
|
define-properties: 1.2.1
|
||||||
|
|
@ -5741,13 +5788,13 @@ snapshots:
|
||||||
|
|
||||||
postcss-resolve-nested-selector@0.1.6: {}
|
postcss-resolve-nested-selector@0.1.6: {}
|
||||||
|
|
||||||
postcss-safe-parser@7.0.1(postcss@8.5.12):
|
postcss-safe-parser@7.0.1(postcss@8.5.13):
|
||||||
dependencies:
|
dependencies:
|
||||||
postcss: 8.5.12
|
postcss: 8.5.13
|
||||||
|
|
||||||
postcss-scss@4.0.9(postcss@8.5.12):
|
postcss-scss@4.0.9(postcss@8.5.13):
|
||||||
dependencies:
|
dependencies:
|
||||||
postcss: 8.5.12
|
postcss: 8.5.13
|
||||||
|
|
||||||
postcss-selector-parser@7.1.1:
|
postcss-selector-parser@7.1.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
|
|
@ -5766,6 +5813,12 @@ snapshots:
|
||||||
picocolors: 1.1.1
|
picocolors: 1.1.1
|
||||||
source-map-js: 1.2.1
|
source-map-js: 1.2.1
|
||||||
|
|
||||||
|
postcss@8.5.13:
|
||||||
|
dependencies:
|
||||||
|
nanoid: 3.3.11
|
||||||
|
picocolors: 1.1.1
|
||||||
|
source-map-js: 1.2.1
|
||||||
|
|
||||||
prelude-ls@1.2.1: {}
|
prelude-ls@1.2.1: {}
|
||||||
|
|
||||||
prettier-plugin-curly@0.4.1(prettier@3.8.3):
|
prettier-plugin-curly@0.4.1(prettier@3.8.3):
|
||||||
|
|
@ -6095,58 +6148,58 @@ snapshots:
|
||||||
|
|
||||||
style-search@0.1.0: {}
|
style-search@0.1.0: {}
|
||||||
|
|
||||||
stylelint-config-clean-order@8.0.1(stylelint@17.9.1)(stylelint-order@8.1.1(stylelint@17.9.1)):
|
stylelint-config-clean-order@8.0.1(stylelint@17.10.0)(stylelint-order@8.1.1(stylelint@17.10.0)):
|
||||||
dependencies:
|
dependencies:
|
||||||
stylelint: 17.9.1
|
stylelint: 17.10.0
|
||||||
stylelint-order: 8.1.1(stylelint@17.9.1)
|
stylelint-order: 8.1.1(stylelint@17.10.0)
|
||||||
|
|
||||||
stylelint-config-recommended-scss@17.0.1(postcss@8.5.12)(stylelint@17.9.1):
|
stylelint-config-recommended-scss@17.0.1(postcss@8.5.13)(stylelint@17.10.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
postcss: 8.5.12
|
postcss: 8.5.13
|
||||||
postcss-scss: 4.0.9(postcss@8.5.12)
|
postcss-scss: 4.0.9(postcss@8.5.13)
|
||||||
stylelint: 17.9.1
|
stylelint: 17.10.0
|
||||||
stylelint-config-recommended: 18.0.0(stylelint@17.9.1)
|
stylelint-config-recommended: 18.0.0(stylelint@17.10.0)
|
||||||
stylelint-scss: 7.0.0(stylelint@17.9.1)
|
stylelint-scss: 7.0.0(stylelint@17.10.0)
|
||||||
|
|
||||||
stylelint-config-recommended@18.0.0(stylelint@17.9.1):
|
stylelint-config-recommended@18.0.0(stylelint@17.10.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
stylelint: 17.9.1
|
stylelint: 17.10.0
|
||||||
|
|
||||||
stylelint-config-sass-guidelines@13.0.0(postcss@8.5.12)(stylelint@17.9.1):
|
stylelint-config-sass-guidelines@13.0.0(postcss@8.5.13)(stylelint@17.10.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@stylistic/stylelint-plugin': 5.1.0(stylelint@17.9.1)
|
'@stylistic/stylelint-plugin': 5.1.0(stylelint@17.10.0)
|
||||||
postcss: 8.5.12
|
postcss: 8.5.13
|
||||||
postcss-scss: 4.0.9(postcss@8.5.12)
|
postcss-scss: 4.0.9(postcss@8.5.13)
|
||||||
stylelint: 17.9.1
|
stylelint: 17.10.0
|
||||||
stylelint-scss: 7.0.0(stylelint@17.9.1)
|
stylelint-scss: 7.0.0(stylelint@17.10.0)
|
||||||
|
|
||||||
stylelint-config-standard-scss@17.0.0(postcss@8.5.12)(stylelint@17.9.1):
|
stylelint-config-standard-scss@17.0.0(postcss@8.5.13)(stylelint@17.10.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
postcss: 8.5.12
|
postcss: 8.5.13
|
||||||
stylelint: 17.9.1
|
stylelint: 17.10.0
|
||||||
stylelint-config-recommended-scss: 17.0.1(postcss@8.5.12)(stylelint@17.9.1)
|
stylelint-config-recommended-scss: 17.0.1(postcss@8.5.13)(stylelint@17.10.0)
|
||||||
stylelint-config-standard: 40.0.0(stylelint@17.9.1)
|
stylelint-config-standard: 40.0.0(stylelint@17.10.0)
|
||||||
|
|
||||||
stylelint-config-standard@40.0.0(stylelint@17.9.1):
|
stylelint-config-standard@40.0.0(stylelint@17.10.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
stylelint: 17.9.1
|
stylelint: 17.10.0
|
||||||
stylelint-config-recommended: 18.0.0(stylelint@17.9.1)
|
stylelint-config-recommended: 18.0.0(stylelint@17.10.0)
|
||||||
|
|
||||||
stylelint-declaration-block-no-ignored-properties@3.0.0(stylelint@17.9.1):
|
stylelint-declaration-block-no-ignored-properties@3.0.0(stylelint@17.10.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
stylelint: 17.9.1
|
stylelint: 17.10.0
|
||||||
|
|
||||||
stylelint-order@8.1.1(stylelint@17.9.1):
|
stylelint-order@8.1.1(stylelint@17.10.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
postcss: 8.5.12
|
postcss: 8.5.12
|
||||||
postcss-sorting: 10.0.0(postcss@8.5.12)
|
postcss-sorting: 10.0.0(postcss@8.5.12)
|
||||||
stylelint: 17.9.1
|
stylelint: 17.10.0
|
||||||
|
|
||||||
stylelint-plugin-logical-css@2.1.0(stylelint@17.9.1):
|
stylelint-plugin-logical-css@2.1.0(stylelint@17.10.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
stylelint: 17.9.1
|
stylelint: 17.10.0
|
||||||
|
|
||||||
stylelint-scss@7.0.0(stylelint@17.9.1):
|
stylelint-scss@7.0.0(stylelint@17.10.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
css-tree: 3.2.1
|
css-tree: 3.2.1
|
||||||
is-plain-object: 5.0.0
|
is-plain-object: 5.0.0
|
||||||
|
|
@ -6156,9 +6209,9 @@ snapshots:
|
||||||
postcss-resolve-nested-selector: 0.1.6
|
postcss-resolve-nested-selector: 0.1.6
|
||||||
postcss-selector-parser: 7.1.1
|
postcss-selector-parser: 7.1.1
|
||||||
postcss-value-parser: 4.2.0
|
postcss-value-parser: 4.2.0
|
||||||
stylelint: 17.9.1
|
stylelint: 17.10.0
|
||||||
|
|
||||||
stylelint@17.9.1:
|
stylelint@17.10.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@csstools/css-calc': 3.2.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)
|
'@csstools/css-calc': 3.2.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)
|
||||||
'@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0)
|
'@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0)
|
||||||
|
|
@ -6187,8 +6240,8 @@ snapshots:
|
||||||
micromatch: 4.0.8
|
micromatch: 4.0.8
|
||||||
normalize-path: 3.0.0
|
normalize-path: 3.0.0
|
||||||
picocolors: 1.1.1
|
picocolors: 1.1.1
|
||||||
postcss: 8.5.12
|
postcss: 8.5.13
|
||||||
postcss-safe-parser: 7.0.1(postcss@8.5.12)
|
postcss-safe-parser: 7.0.1(postcss@8.5.13)
|
||||||
postcss-selector-parser: 7.1.1
|
postcss-selector-parser: 7.1.1
|
||||||
postcss-value-parser: 4.2.0
|
postcss-value-parser: 4.2.0
|
||||||
string-width: 8.2.1
|
string-width: 8.2.1
|
||||||
|
|
@ -6381,7 +6434,7 @@ snapshots:
|
||||||
jiti: 2.6.1
|
jiti: 2.6.1
|
||||||
lightningcss: 1.32.0
|
lightningcss: 1.32.0
|
||||||
picomatch: 4.0.4
|
picomatch: 4.0.4
|
||||||
postcss: 8.5.12
|
postcss: 8.5.13
|
||||||
rolldown: 1.0.0-rc.17
|
rolldown: 1.0.0-rc.17
|
||||||
sass-embedded: 1.99.0
|
sass-embedded: 1.99.0
|
||||||
terser: 5.46.2
|
terser: 5.46.2
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,6 @@ declare(strict_types=1);
|
||||||
|
|
||||||
use Roots\WPConfig\Config;
|
use Roots\WPConfig\Config;
|
||||||
|
|
||||||
use function base64_encode;
|
|
||||||
use function Env\env;
|
use function Env\env;
|
||||||
|
|
||||||
Config::define('SAVEQUERIES', true);
|
Config::define('SAVEQUERIES', true);
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,6 @@ declare(strict_types=1);
|
||||||
|
|
||||||
use Roots\WPConfig\Config;
|
use Roots\WPConfig\Config;
|
||||||
|
|
||||||
use function base64_encode;
|
|
||||||
use function Env\env;
|
use function Env\env;
|
||||||
|
|
||||||
Config::define('WP_DEBUG', true);
|
Config::define('WP_DEBUG', true);
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,6 @@ declare(strict_types=1);
|
||||||
|
|
||||||
use Roots\WPConfig\Config;
|
use Roots\WPConfig\Config;
|
||||||
|
|
||||||
use function base64_encode;
|
|
||||||
use function Env\env;
|
use function Env\env;
|
||||||
|
|
||||||
Config::define('DISALLOW_INDEXING', true);
|
Config::define('DISALLOW_INDEXING', true);
|
||||||
|
|
|
||||||
20171
db/haiku_atelier-2026-05-05-b350112_pré_nettoyage.sql
Normal file
20126
db/haiku_atelier-2026-05-05-b7eef2f.sql
Normal file
9
docs/QUERIES.md
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
# Requête
|
||||||
|
|
||||||
|
## Nettoyer les photos fantômes
|
||||||
|
|
||||||
|
Cette commande nettoie les photos « fantômes » : les attachements toujours présents dans la base de données alors que l'image a été supprimée. Des carrés gris remplacement alors les photos dans l'administration du Produit.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wp db --allow-root query "DELETE FROM haikuwp_postmeta WHERE meta_value NOT IN (SELECT ID FROM haikuwp_posts) AND meta_key LIKE '%photos_colonne%'"
|
||||||
|
```
|
||||||
269
mise.lock
Normal file
|
|
@ -0,0 +1,269 @@
|
||||||
|
# @generated - this file is auto-generated by `mise lock` https://mise.en.dev/dev-tools/mise-lock.html
|
||||||
|
|
||||||
|
[[tools."aqua:blopker/codebook"]]
|
||||||
|
version = "0.3.39"
|
||||||
|
backend = "aqua:blopker/codebook"
|
||||||
|
|
||||||
|
[tools."aqua:blopker/codebook"."platforms.linux-arm64"]
|
||||||
|
checksum = "sha256:38302c6e719ce67083e9229c373943ebe45aa359a7a2cfb06e48221c33b59516"
|
||||||
|
url = "https://github.com/blopker/codebook/releases/download/v0.3.39/codebook-lsp-aarch64-unknown-linux-musl.tar.gz"
|
||||||
|
|
||||||
|
[tools."aqua:blopker/codebook"."platforms.linux-arm64-musl"]
|
||||||
|
checksum = "sha256:38302c6e719ce67083e9229c373943ebe45aa359a7a2cfb06e48221c33b59516"
|
||||||
|
url = "https://github.com/blopker/codebook/releases/download/v0.3.39/codebook-lsp-aarch64-unknown-linux-musl.tar.gz"
|
||||||
|
|
||||||
|
[tools."aqua:blopker/codebook"."platforms.linux-x64"]
|
||||||
|
checksum = "sha256:fdb419ed332aacba5757a3b34ec2a8cba3a94b50134ab34a8dc1af8106101dc5"
|
||||||
|
url = "https://github.com/blopker/codebook/releases/download/v0.3.39/codebook-lsp-x86_64-unknown-linux-musl.tar.gz"
|
||||||
|
|
||||||
|
[tools."aqua:blopker/codebook"."platforms.linux-x64-musl"]
|
||||||
|
checksum = "sha256:fdb419ed332aacba5757a3b34ec2a8cba3a94b50134ab34a8dc1af8106101dc5"
|
||||||
|
url = "https://github.com/blopker/codebook/releases/download/v0.3.39/codebook-lsp-x86_64-unknown-linux-musl.tar.gz"
|
||||||
|
|
||||||
|
[tools."aqua:blopker/codebook"."platforms.macos-arm64"]
|
||||||
|
checksum = "sha256:c3f8f36a4747542ece10c65cd8dd724aa0dbd31c08a1fd03fb53813eff87b8ce"
|
||||||
|
url = "https://github.com/blopker/codebook/releases/download/v0.3.39/codebook-lsp-aarch64-apple-darwin.tar.gz"
|
||||||
|
|
||||||
|
[tools."aqua:blopker/codebook"."platforms.macos-x64"]
|
||||||
|
checksum = "sha256:b3392e8eb080f3e6e083ada59bafcc6e50681d99b0cbd4f420ab4c7123d08baa"
|
||||||
|
url = "https://github.com/blopker/codebook/releases/download/v0.3.39/codebook-lsp-x86_64-apple-darwin.tar.gz"
|
||||||
|
|
||||||
|
[tools."aqua:blopker/codebook"."platforms.windows-x64"]
|
||||||
|
checksum = "sha256:dc6c89bdd9e20c00de10d8eb68ffc0e581831eae5a62c9e4efd25905eba78413"
|
||||||
|
url = "https://github.com/blopker/codebook/releases/download/v0.3.39/codebook-lsp-x86_64-pc-windows-msvc.zip"
|
||||||
|
|
||||||
|
[[tools."aqua:numtide/treefmt"]]
|
||||||
|
version = "2.5.0"
|
||||||
|
backend = "aqua:numtide/treefmt"
|
||||||
|
|
||||||
|
[tools."aqua:numtide/treefmt"."platforms.linux-arm64"]
|
||||||
|
checksum = "sha256:fce47c6fc8cb6a87461b1309fc6d3102eade64b6fe0c9b86678b4eed9eb00e57"
|
||||||
|
url = "https://github.com/numtide/treefmt/releases/download/v2.5.0/treefmt_2.5.0_linux_arm64.tar.gz"
|
||||||
|
|
||||||
|
[tools."aqua:numtide/treefmt"."platforms.linux-arm64-musl"]
|
||||||
|
checksum = "sha256:fce47c6fc8cb6a87461b1309fc6d3102eade64b6fe0c9b86678b4eed9eb00e57"
|
||||||
|
url = "https://github.com/numtide/treefmt/releases/download/v2.5.0/treefmt_2.5.0_linux_arm64.tar.gz"
|
||||||
|
|
||||||
|
[tools."aqua:numtide/treefmt"."platforms.linux-x64"]
|
||||||
|
checksum = "sha256:95f707bf9666d08b50888b116768fd77f042ad5af92aa3b795f063160e72758f"
|
||||||
|
url = "https://github.com/numtide/treefmt/releases/download/v2.5.0/treefmt_2.5.0_linux_amd64.tar.gz"
|
||||||
|
|
||||||
|
[tools."aqua:numtide/treefmt"."platforms.linux-x64-musl"]
|
||||||
|
checksum = "sha256:95f707bf9666d08b50888b116768fd77f042ad5af92aa3b795f063160e72758f"
|
||||||
|
url = "https://github.com/numtide/treefmt/releases/download/v2.5.0/treefmt_2.5.0_linux_amd64.tar.gz"
|
||||||
|
|
||||||
|
[tools."aqua:numtide/treefmt"."platforms.macos-arm64"]
|
||||||
|
checksum = "sha256:a3cdfa8e92eb7c302bb851f73800187e75d5789f2a75835b403b158d77b2c376"
|
||||||
|
url = "https://github.com/numtide/treefmt/releases/download/v2.5.0/treefmt_2.5.0_darwin_arm64.tar.gz"
|
||||||
|
|
||||||
|
[tools."aqua:numtide/treefmt"."platforms.macos-x64"]
|
||||||
|
checksum = "sha256:21388b1f7d6c2f572e1ce9231f7dfc08f80a062438908791ab078c1d76b10a49"
|
||||||
|
url = "https://github.com/numtide/treefmt/releases/download/v2.5.0/treefmt_2.5.0_darwin_amd64.tar.gz"
|
||||||
|
|
||||||
|
[[tools.aube]]
|
||||||
|
version = "1.8.0"
|
||||||
|
backend = "github:endevco/aube"
|
||||||
|
|
||||||
|
[tools.aube."platforms.linux-arm64"]
|
||||||
|
checksum = "sha256:622c470feba3270e2290d4f2ffb7fcde0e391dd34bd352d24e5b7fd36ddbbbb5"
|
||||||
|
url = "https://github.com/endevco/aube/releases/download/v1.8.0/aube-v1.8.0-aarch64-unknown-linux-gnu.tar.gz"
|
||||||
|
url_api = "https://api.github.com/repos/endevco/aube/releases/assets/411310208"
|
||||||
|
provenance = "github-attestations"
|
||||||
|
|
||||||
|
[tools.aube."platforms.linux-arm64-musl"]
|
||||||
|
checksum = "sha256:7b1b946986f71a625d48b6c602696d859e4f683bf35f29e2cc1096fedacce6a2"
|
||||||
|
url = "https://github.com/endevco/aube/releases/download/v1.8.0/aube-v1.8.0-aarch64-unknown-linux-musl.tar.gz"
|
||||||
|
url_api = "https://api.github.com/repos/endevco/aube/releases/assets/411310268"
|
||||||
|
provenance = "github-attestations"
|
||||||
|
|
||||||
|
[tools.aube."platforms.linux-x64"]
|
||||||
|
checksum = "sha256:298ff8f1a1820a68a369d03c3dfa46aca8ccbceb1a4facd97329b10a03322abb"
|
||||||
|
url = "https://github.com/endevco/aube/releases/download/v1.8.0/aube-v1.8.0-x86_64-unknown-linux-gnu.tar.gz"
|
||||||
|
url_api = "https://api.github.com/repos/endevco/aube/releases/assets/411329171"
|
||||||
|
provenance = "github-attestations"
|
||||||
|
|
||||||
|
[tools.aube."platforms.linux-x64-musl"]
|
||||||
|
checksum = "sha256:332379d6b167c83b7ab7d5a393e55f9dcea5185d3819ee5211739a6d81dba328"
|
||||||
|
url = "https://github.com/endevco/aube/releases/download/v1.8.0/aube-v1.8.0-x86_64-unknown-linux-musl.tar.gz"
|
||||||
|
url_api = "https://api.github.com/repos/endevco/aube/releases/assets/411310212"
|
||||||
|
provenance = "github-attestations"
|
||||||
|
|
||||||
|
[tools.aube."platforms.macos-arm64"]
|
||||||
|
checksum = "sha256:9f1aaf17fe031a8356a41388cec852aef3a82b741b25b14b40a2c403500d1201"
|
||||||
|
url = "https://github.com/endevco/aube/releases/download/v1.8.0/aube-v1.8.0-aarch64-apple-darwin.tar.gz"
|
||||||
|
url_api = "https://api.github.com/repos/endevco/aube/releases/assets/411311071"
|
||||||
|
provenance = "github-attestations"
|
||||||
|
|
||||||
|
[tools.aube."platforms.windows-x64"]
|
||||||
|
checksum = "sha256:9d49bec5dbd480980fa835ad6abdb5d02c561dabc1424b80e71e69411bbb7bef"
|
||||||
|
url = "https://github.com/endevco/aube/releases/download/v1.8.0/aube-v1.8.0-x86_64-pc-windows-msvc.zip"
|
||||||
|
url_api = "https://api.github.com/repos/endevco/aube/releases/assets/411318019"
|
||||||
|
provenance = "github-attestations"
|
||||||
|
|
||||||
|
[[tools."github:AJenbo/phpantom_lsp"]]
|
||||||
|
version = "0.7.0"
|
||||||
|
backend = "github:AJenbo/phpantom_lsp"
|
||||||
|
|
||||||
|
[tools."github:AJenbo/phpantom_lsp"."platforms.linux-arm64"]
|
||||||
|
checksum = "sha256:8a307b76c3743089fe3830ffc83040a03c3ce41399774731f51d3e754a492cf1"
|
||||||
|
url = "https://github.com/AJenbo/phpantom_lsp/releases/download/0.7.0/phpantom_lsp-aarch64-unknown-linux-gnu.tar.gz"
|
||||||
|
url_api = "https://api.github.com/repos/AJenbo/phpantom_lsp/releases/assets/391327569"
|
||||||
|
|
||||||
|
[tools."github:AJenbo/phpantom_lsp"."platforms.linux-arm64-musl"]
|
||||||
|
checksum = "sha256:8a307b76c3743089fe3830ffc83040a03c3ce41399774731f51d3e754a492cf1"
|
||||||
|
url = "https://github.com/AJenbo/phpantom_lsp/releases/download/0.7.0/phpantom_lsp-aarch64-unknown-linux-gnu.tar.gz"
|
||||||
|
url_api = "https://api.github.com/repos/AJenbo/phpantom_lsp/releases/assets/391327569"
|
||||||
|
|
||||||
|
[tools."github:AJenbo/phpantom_lsp"."platforms.linux-x64"]
|
||||||
|
checksum = "sha256:a593da7e62adcef3ec63ca273f855ae269d55f2eed1f5d01ea0e3347f1597a5c"
|
||||||
|
url = "https://github.com/AJenbo/phpantom_lsp/releases/download/0.7.0/phpantom_lsp-x86_64-unknown-linux-gnu.tar.gz"
|
||||||
|
url_api = "https://api.github.com/repos/AJenbo/phpantom_lsp/releases/assets/391327589"
|
||||||
|
|
||||||
|
[tools."github:AJenbo/phpantom_lsp"."platforms.linux-x64-musl"]
|
||||||
|
checksum = "sha256:a593da7e62adcef3ec63ca273f855ae269d55f2eed1f5d01ea0e3347f1597a5c"
|
||||||
|
url = "https://github.com/AJenbo/phpantom_lsp/releases/download/0.7.0/phpantom_lsp-x86_64-unknown-linux-gnu.tar.gz"
|
||||||
|
url_api = "https://api.github.com/repos/AJenbo/phpantom_lsp/releases/assets/391327589"
|
||||||
|
|
||||||
|
[tools."github:AJenbo/phpantom_lsp"."platforms.macos-arm64"]
|
||||||
|
checksum = "sha256:f70e3ecf174df0776fd9f0f98447dc2d735018603b71e1620929dc92967b9aa0"
|
||||||
|
url = "https://github.com/AJenbo/phpantom_lsp/releases/download/0.7.0/phpantom_lsp-aarch64-apple-darwin.tar.gz"
|
||||||
|
url_api = "https://api.github.com/repos/AJenbo/phpantom_lsp/releases/assets/391327560"
|
||||||
|
|
||||||
|
[tools."github:AJenbo/phpantom_lsp"."platforms.macos-x64"]
|
||||||
|
checksum = "sha256:c4c4da8db230c8f0bf0e489d149f1ace04062a169a61ca23b33674de0c69e3f6"
|
||||||
|
url = "https://github.com/AJenbo/phpantom_lsp/releases/download/0.7.0/phpantom_lsp-x86_64-apple-darwin.tar.gz"
|
||||||
|
url_api = "https://api.github.com/repos/AJenbo/phpantom_lsp/releases/assets/391327579"
|
||||||
|
|
||||||
|
[[tools.just]]
|
||||||
|
version = "1.50.0"
|
||||||
|
backend = "aqua:casey/just"
|
||||||
|
|
||||||
|
[tools.just."platforms.linux-arm64"]
|
||||||
|
checksum = "sha256:3beb4967ce05883cf09ac12d6d128166eb4c6d0b03eff74b61018a6880655d7d"
|
||||||
|
url = "https://github.com/casey/just/releases/download/1.50.0/just-1.50.0-aarch64-unknown-linux-musl.tar.gz"
|
||||||
|
|
||||||
|
[tools.just."platforms.linux-arm64-musl"]
|
||||||
|
checksum = "sha256:3beb4967ce05883cf09ac12d6d128166eb4c6d0b03eff74b61018a6880655d7d"
|
||||||
|
url = "https://github.com/casey/just/releases/download/1.50.0/just-1.50.0-aarch64-unknown-linux-musl.tar.gz"
|
||||||
|
|
||||||
|
[tools.just."platforms.linux-x64"]
|
||||||
|
checksum = "sha256:27e011cd6328fadd632e59233d2cf5f18460b8a8c4269acd324c1a8669f34db0"
|
||||||
|
url = "https://github.com/casey/just/releases/download/1.50.0/just-1.50.0-x86_64-unknown-linux-musl.tar.gz"
|
||||||
|
|
||||||
|
[tools.just."platforms.linux-x64-musl"]
|
||||||
|
checksum = "sha256:27e011cd6328fadd632e59233d2cf5f18460b8a8c4269acd324c1a8669f34db0"
|
||||||
|
url = "https://github.com/casey/just/releases/download/1.50.0/just-1.50.0-x86_64-unknown-linux-musl.tar.gz"
|
||||||
|
|
||||||
|
[tools.just."platforms.macos-arm64"]
|
||||||
|
checksum = "sha256:891262207663bff1aa422dbe799a76deae4064eaa445f14eb28aef7a388222cd"
|
||||||
|
url = "https://github.com/casey/just/releases/download/1.50.0/just-1.50.0-aarch64-apple-darwin.tar.gz"
|
||||||
|
|
||||||
|
[tools.just."platforms.macos-x64"]
|
||||||
|
checksum = "sha256:e4fa28fe63381ca32fad101e86d4a1da7cd2d34d1b080985a37ec9dc951922fe"
|
||||||
|
url = "https://github.com/casey/just/releases/download/1.50.0/just-1.50.0-x86_64-apple-darwin.tar.gz"
|
||||||
|
|
||||||
|
[tools.just."platforms.windows-x64"]
|
||||||
|
checksum = "sha256:5dc713f049e174e22de41fd06292a26c9b90f2d37c1be9390d2082fe6928b376"
|
||||||
|
url = "https://github.com/casey/just/releases/download/1.50.0/just-1.50.0-x86_64-pc-windows-msvc.zip"
|
||||||
|
|
||||||
|
[[tools.mago]]
|
||||||
|
version = "1.25.2"
|
||||||
|
backend = "aqua:carthage-software/mago"
|
||||||
|
|
||||||
|
[tools.mago."platforms.linux-arm64"]
|
||||||
|
checksum = "sha256:48abe89725c8d39e2e9f3683720899f992812639e5bb174ba9ed4df27eb95c49"
|
||||||
|
url = "https://github.com/carthage-software/mago/releases/download/1.25.2/mago-1.25.2-aarch64-unknown-linux-musl.tar.gz"
|
||||||
|
provenance = "github-attestations"
|
||||||
|
|
||||||
|
[tools.mago."platforms.linux-arm64-musl"]
|
||||||
|
checksum = "sha256:48abe89725c8d39e2e9f3683720899f992812639e5bb174ba9ed4df27eb95c49"
|
||||||
|
url = "https://github.com/carthage-software/mago/releases/download/1.25.2/mago-1.25.2-aarch64-unknown-linux-musl.tar.gz"
|
||||||
|
provenance = "github-attestations"
|
||||||
|
|
||||||
|
[tools.mago."platforms.linux-x64"]
|
||||||
|
checksum = "sha256:b21aac6fe69467bfe87633614b0962eb3b699194f66d50b84fc35a8263ccbcf2"
|
||||||
|
url = "https://github.com/carthage-software/mago/releases/download/1.25.2/mago-1.25.2-x86_64-unknown-linux-musl.tar.gz"
|
||||||
|
|
||||||
|
[tools.mago."platforms.linux-x64-musl"]
|
||||||
|
checksum = "sha256:b21aac6fe69467bfe87633614b0962eb3b699194f66d50b84fc35a8263ccbcf2"
|
||||||
|
url = "https://github.com/carthage-software/mago/releases/download/1.25.2/mago-1.25.2-x86_64-unknown-linux-musl.tar.gz"
|
||||||
|
provenance = "github-attestations"
|
||||||
|
|
||||||
|
[tools.mago."platforms.macos-arm64"]
|
||||||
|
checksum = "sha256:d831c4c75a2d32f0df61a950229fb97e27e1d36b6cf83208f90102255be4d348"
|
||||||
|
url = "https://github.com/carthage-software/mago/releases/download/1.25.2/mago-1.25.2-aarch64-apple-darwin.tar.gz"
|
||||||
|
provenance = "github-attestations"
|
||||||
|
|
||||||
|
[tools.mago."platforms.macos-x64"]
|
||||||
|
checksum = "sha256:30e7722047b7d977985cd85c931d5f2cfb0f2ab31590c81ed945b9a2fda54f6a"
|
||||||
|
url = "https://github.com/carthage-software/mago/releases/download/1.25.2/mago-1.25.2-x86_64-apple-darwin.tar.gz"
|
||||||
|
provenance = "github-attestations"
|
||||||
|
|
||||||
|
[tools.mago."platforms.windows-x64"]
|
||||||
|
checksum = "sha256:d755fd8ed31826def064231d5cc21ab330e0f44da3563ce49d0e3720ce31de34"
|
||||||
|
url = "https://github.com/carthage-software/mago/releases/download/1.25.2/mago-1.25.2-x86_64-pc-windows-msvc.zip"
|
||||||
|
provenance = "github-attestations"
|
||||||
|
|
||||||
|
[[tools.node]]
|
||||||
|
version = "25.9.0"
|
||||||
|
backend = "core:node"
|
||||||
|
|
||||||
|
[tools.node."platforms.linux-arm64"]
|
||||||
|
checksum = "sha256:8fb4283301b8c720fc9f18bffff0f659e72cc14d0cf207a3bb411808aaa73a57"
|
||||||
|
url = "https://nodejs.org/dist/v25.9.0/node-v25.9.0-linux-arm64.tar.gz"
|
||||||
|
|
||||||
|
[tools.node."platforms.linux-arm64-musl"]
|
||||||
|
checksum = "sha256:97f6fe125faa51f84a7bb600d0cd7aefcfaaa0e75a5f49a7c61c3df91d12d535"
|
||||||
|
url = "https://unofficial-builds.nodejs.org/download/release/v25.9.0/node-v25.9.0-linux-arm64-musl.tar.gz"
|
||||||
|
|
||||||
|
[tools.node."platforms.linux-x64"]
|
||||||
|
checksum = "sha256:134e55b2408448a219760fe04dc44d6851f9de8a79549021ffd870e9082d9e7b"
|
||||||
|
url = "https://nodejs.org/dist/v25.9.0/node-v25.9.0-linux-x64.tar.gz"
|
||||||
|
|
||||||
|
[tools.node."platforms.linux-x64-musl"]
|
||||||
|
checksum = "sha256:1ac44af012be6bc17f1e3723edbf12897c0baeae5d1dc75b9f97d71413e4c8f5"
|
||||||
|
url = "https://unofficial-builds.nodejs.org/download/release/v25.9.0/node-v25.9.0-linux-x64-musl.tar.gz"
|
||||||
|
|
||||||
|
[tools.node."platforms.macos-arm64"]
|
||||||
|
checksum = "sha256:e479f3c469d3d9303a44f00a8ea37a3788395d171bb8059c48a4bbbd2e371b59"
|
||||||
|
url = "https://nodejs.org/dist/v25.9.0/node-v25.9.0-darwin-arm64.tar.gz"
|
||||||
|
|
||||||
|
[tools.node."platforms.macos-x64"]
|
||||||
|
checksum = "sha256:7d737b53ce191142bfa1c17cfa5b070d96e84eebf76b8dd06d84981cbdc3f7e3"
|
||||||
|
url = "https://nodejs.org/dist/v25.9.0/node-v25.9.0-darwin-x64.tar.gz"
|
||||||
|
|
||||||
|
[tools.node."platforms.windows-x64"]
|
||||||
|
checksum = "sha256:929552b8305effac843ba7b4270c437aefb702fc3fbd73fcd1bffd35d4ac284e"
|
||||||
|
url = "https://nodejs.org/dist/v25.9.0/node-v25.9.0-win-x64.zip"
|
||||||
|
|
||||||
|
[[tools.watchexec]]
|
||||||
|
version = "2.5.1"
|
||||||
|
backend = "aqua:watchexec/watchexec"
|
||||||
|
|
||||||
|
[tools.watchexec."platforms.linux-arm64"]
|
||||||
|
checksum = "sha256:c073887583d502fa0b393a8b847bb4460a111b3b0a199d1f70dafd5d89e71a2f"
|
||||||
|
url = "https://github.com/watchexec/watchexec/releases/download/v2.5.1/watchexec-2.5.1-aarch64-unknown-linux-musl.tar.xz"
|
||||||
|
|
||||||
|
[tools.watchexec."platforms.linux-arm64-musl"]
|
||||||
|
checksum = "sha256:c073887583d502fa0b393a8b847bb4460a111b3b0a199d1f70dafd5d89e71a2f"
|
||||||
|
url = "https://github.com/watchexec/watchexec/releases/download/v2.5.1/watchexec-2.5.1-aarch64-unknown-linux-musl.tar.xz"
|
||||||
|
|
||||||
|
[tools.watchexec."platforms.linux-x64"]
|
||||||
|
checksum = "sha256:9efabd08de720c1ee7e57b487fe11904f0966828e76146e2b5ea5deee90626be"
|
||||||
|
url = "https://github.com/watchexec/watchexec/releases/download/v2.5.1/watchexec-2.5.1-x86_64-unknown-linux-musl.tar.xz"
|
||||||
|
|
||||||
|
[tools.watchexec."platforms.linux-x64-musl"]
|
||||||
|
checksum = "sha256:9efabd08de720c1ee7e57b487fe11904f0966828e76146e2b5ea5deee90626be"
|
||||||
|
url = "https://github.com/watchexec/watchexec/releases/download/v2.5.1/watchexec-2.5.1-x86_64-unknown-linux-musl.tar.xz"
|
||||||
|
|
||||||
|
[tools.watchexec."platforms.macos-arm64"]
|
||||||
|
checksum = "sha256:c5e405dd1109940b2510398d2182990c1be59063b94e11d7ace9c7b435cb1df1"
|
||||||
|
url = "https://github.com/watchexec/watchexec/releases/download/v2.5.1/watchexec-2.5.1-aarch64-apple-darwin.tar.xz"
|
||||||
|
|
||||||
|
[tools.watchexec."platforms.macos-x64"]
|
||||||
|
checksum = "sha256:bb74bf33286ff7f31dd8e763e017fbc0418360d88baefd35bc57d662d28394e2"
|
||||||
|
url = "https://github.com/watchexec/watchexec/releases/download/v2.5.1/watchexec-2.5.1-x86_64-apple-darwin.tar.xz"
|
||||||
|
|
||||||
|
[tools.watchexec."platforms.windows-x64"]
|
||||||
|
checksum = "sha256:aa448c2704ca1a37ce0f1fc75381d9a411946dd293cf6236293f549426a577f7"
|
||||||
|
url = "https://github.com/watchexec/watchexec/releases/download/v2.5.1/watchexec-2.5.1-x86_64-pc-windows-msvc.zip"
|
||||||
43
mise.toml
|
|
@ -1,2 +1,45 @@
|
||||||
[tools]
|
[tools]
|
||||||
|
aube = "latest"
|
||||||
|
just = "latest"
|
||||||
|
mago = "latest"
|
||||||
|
node = "latest"
|
||||||
|
watchexec = "latest"
|
||||||
|
"aqua:numtide/treefmt" = "latest"
|
||||||
"github:AJenbo/phpantom_lsp" = "latest"
|
"github:AJenbo/phpantom_lsp" = "latest"
|
||||||
|
"aqua:blopker/codebook" = "latest"
|
||||||
|
|
||||||
|
[tasks.format]
|
||||||
|
alias = "f"
|
||||||
|
description = "Formate le code avec treefmt en utilisant la configuration globale"
|
||||||
|
run = "treefmt --config-file ~/.config/treefmt/treefmt.toml ."
|
||||||
|
tools."aqua:numtide/treefmt" = "latest"
|
||||||
|
sources = [
|
||||||
|
"*.{json,md,toml}",
|
||||||
|
"cfg/*.ts",
|
||||||
|
"web/app/themes/haiku-atelier-2024/src/**/*.ts"
|
||||||
|
]
|
||||||
|
|
||||||
|
[tasks.watch-format]
|
||||||
|
alias = "wf"
|
||||||
|
description = "Formate le code avec treefmt en utilisant la configuration globale"
|
||||||
|
run = "watchexec -w web/app/themes/haiku-atelier-2024/src/ mise run format"
|
||||||
|
sources = ["*.{json,md,toml}", "cfg/*.ts", "web/app/themes/haiku-atelier-2024/src/**/*.ts"]
|
||||||
|
|
||||||
|
[tasks.build-css]
|
||||||
|
description = "Compile le CSS depuis les fichiers SCSS"
|
||||||
|
outputs = ["web/app/themes/haiku-atelier-2024/assets/css/**/*.css"]
|
||||||
|
run = [
|
||||||
|
"aube x sass --update web/app/themes/haiku-atelier-2024/src/sass:web/app/themes/haiku-atelier-2024/assets/css",
|
||||||
|
"aube x lightningcss --browserslist --bundle --minify --output-file web/app/themes/haiku-atelier-2024/assets/css/main.min.css -- web/app/themes/haiku-atelier-2024/assets/css/main.css",
|
||||||
|
"aube x lightningcss --browserslist --bundle --minify --output-file web/app/themes/haiku-atelier-2024/assets/css/pages/page-panier.min.css -- web/app/themes/haiku-atelier-2024/assets/css/pages/page-panier.css",
|
||||||
|
"aube x lightningcss --browserslist --bundle --minify --output-file web/app/themes/haiku-atelier-2024/assets/css/pages/page-accueil.min.css -- web/app/themes/haiku-atelier-2024/assets/css/pages/page-accueil.css",
|
||||||
|
"aube x lightningcss --browserslist --bundle --minify --output-file web/app/themes/haiku-atelier-2024/assets/css/pages/page-boutique.min.css -- web/app/themes/haiku-atelier-2024/assets/css/pages/page-boutique.css",
|
||||||
|
"aube x lightningcss --browserslist --bundle --minify --output-file web/app/themes/haiku-atelier-2024/assets/css/pages/page-a-propos.min.css -- web/app/themes/haiku-atelier-2024/assets/css/pages/page-a-propos.css",
|
||||||
|
"aube x lightningcss --browserslist --bundle --minify --output-file web/app/themes/haiku-atelier-2024/assets/css/pages/page-modele-simple.min.css -- web/app/themes/haiku-atelier-2024/assets/css/pages/page-modele-simple.css",
|
||||||
|
"aube x lightningcss --browserslist --bundle --minify --output-file web/app/themes/haiku-atelier-2024/assets/css/pages/page-succes-commande.min.css -- web/app/themes/haiku-atelier-2024/assets/css/pages/page-succes-commande.css",
|
||||||
|
]
|
||||||
|
sources = ["web/app/themes/haiku-atelier-2024/src/sass/**/*.scss"]
|
||||||
|
|
||||||
|
[tasks.test-shop]
|
||||||
|
description = "Lance les tests d'intégration pour la page Boutique"
|
||||||
|
run = "aube x playwright test --config cfg/playwright.config.ts tests/playwright/shop.spec.ts"
|
||||||
|
|
|
||||||
14
package.json
|
|
@ -15,7 +15,7 @@
|
||||||
"@mobily/ts-belt": "v4.0.0-rc.5",
|
"@mobily/ts-belt": "v4.0.0-rc.5",
|
||||||
"@sentry/browser": "^10.51.0",
|
"@sentry/browser": "^10.51.0",
|
||||||
"a11y-dialog": "^8.1.5",
|
"a11y-dialog": "^8.1.5",
|
||||||
"effect": "^4.0.0-beta.59",
|
"effect": "^4.0.0-beta.60",
|
||||||
"html-template-tag": "^5.0.0",
|
"html-template-tag": "^5.0.0",
|
||||||
"lit-html": "^3.3.2",
|
"lit-html": "^3.3.2",
|
||||||
"purify-ts": "2.1.2",
|
"purify-ts": "2.1.2",
|
||||||
|
|
@ -25,14 +25,14 @@
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@effect/language-service": "^0.85.1",
|
"@effect/language-service": "^0.85.1",
|
||||||
"@effect/tsgo": "^0.5.2",
|
"@effect/tsgo": "^0.5.2",
|
||||||
"@gcch/configuration-eslint": "git+https://git.gcch.fr/gcch/configuration-eslint#888eb4aa54",
|
"@gcch/configuration-eslint": "git+https://git.gcch.fr/gcch/configuration-eslint",
|
||||||
"@gcch/configuration-oxlint": "git+https://git.gcch.fr/gcch/configuration-oxlint#83547fc1ebfd",
|
"@gcch/configuration-oxlint": "git+https://git.gcch.fr/gcch/configuration-oxlint",
|
||||||
"@gcch/configuration-prettier": "git+https://git.gcch.fr/gcch/configuration-prettier#d267d6dc5e",
|
"@gcch/configuration-prettier": "git+https://git.gcch.fr/gcch/configuration-prettier",
|
||||||
"@playwright/test": "^1.59.1",
|
"@playwright/test": "^1.59.1",
|
||||||
"@sentry/core": "^10.51.0",
|
"@sentry/core": "^10.51.0",
|
||||||
"@types/bun": "^1.3.13",
|
"@types/bun": "^1.3.13",
|
||||||
"@types/node": "^25.6.0",
|
"@types/node": "^25.6.0",
|
||||||
"@typescript/native-preview": "7.0.0-dev.20260503.1",
|
"@typescript/native-preview": "7.0.0-dev.20260504.1",
|
||||||
"@vitejs/plugin-legacy": "^8.0.1",
|
"@vitejs/plugin-legacy": "^8.0.1",
|
||||||
"better-typescript-lib": "^2.12.0",
|
"better-typescript-lib": "^2.12.0",
|
||||||
"browserslist": "^4.28.2",
|
"browserslist": "^4.28.2",
|
||||||
|
|
@ -43,7 +43,7 @@
|
||||||
"eslint-plugin-oxlint": "^1.62.0",
|
"eslint-plugin-oxlint": "^1.62.0",
|
||||||
"eslint-plugin-perfectionist": "^5.9.0",
|
"eslint-plugin-perfectionist": "^5.9.0",
|
||||||
"fdir": "^6.5.0",
|
"fdir": "^6.5.0",
|
||||||
"globals": "^17.6",
|
"globals": "17",
|
||||||
"jiti": "^2.6.1",
|
"jiti": "^2.6.1",
|
||||||
"knip": "^6.11.0",
|
"knip": "^6.11.0",
|
||||||
"lightningcss": "^1.32.0",
|
"lightningcss": "^1.32.0",
|
||||||
|
|
@ -59,7 +59,7 @@
|
||||||
"prettier-plugin-sh": "^0.18.1",
|
"prettier-plugin-sh": "^0.18.1",
|
||||||
"prettier-plugin-sort-json": "^4.2.0",
|
"prettier-plugin-sort-json": "^4.2.0",
|
||||||
"sass-embedded": "^1.99.0",
|
"sass-embedded": "^1.99.0",
|
||||||
"stylelint": "^17.9.1",
|
"stylelint": "^17.10.0",
|
||||||
"stylelint-config-clean-order": "^8.0.1",
|
"stylelint-config-clean-order": "^8.0.1",
|
||||||
"stylelint-config-sass-guidelines": "^13.0.0",
|
"stylelint-config-sass-guidelines": "^13.0.0",
|
||||||
"stylelint-config-standard-scss": "^17.0.0",
|
"stylelint-config-standard-scss": "^17.0.0",
|
||||||
|
|
|
||||||
|
|
@ -1,50 +1,40 @@
|
||||||
/** @effect-diagnostics asyncFunction:skip-file */
|
/** @effect-diagnostics asyncFunction:skip-file */
|
||||||
import type { APIRequestContext, Locator, Page, Response } from "@playwright/test";
|
import type { APIRequestContext, Locator, Page, Response } from "@playwright/test";
|
||||||
import { expect, test } from "@playwright/test";
|
import { expect, test } from "@playwright/test";
|
||||||
|
import { ManagedRuntime } from "effect";
|
||||||
|
import { APIClient } from "../../web/app/themes/haiku-atelier-2024/src/scripts-effect/lib/api.ts";
|
||||||
import type { WCV3Products } from "../../web/app/themes/haiku-atelier-2024/src/scripts/lib/types/api/v3/products";
|
import type { WCV3Products } from "../../web/app/themes/haiku-atelier-2024/src/scripts/lib/types/api/v3/products";
|
||||||
import type { BackendHeaders } from "./utils.ts";
|
import type { BackendHeaders } from "./utils.ts";
|
||||||
import { getBackendHeadersFromHtml } from "./utils.ts";
|
import { getBackendHeadersFromHtml } from "./utils.ts";
|
||||||
|
|
||||||
test.describe.configure({ mode: "parallel", timeout: 60_000 });
|
test.describe.configure({ mode: "parallel", timeout: 60_000 });
|
||||||
|
|
||||||
|
/** _Runtime_ pour effectuer les appels API. */
|
||||||
|
const TestRuntime = ManagedRuntime.make(APIClient.Live);
|
||||||
|
|
||||||
|
test("is on the first page of the Shop", async ({ page }): Promise<void> => {
|
||||||
|
const FIRST_PAGE_NUMBER = "1";
|
||||||
|
await page.goto("https://haikuatelier.gcch.local/shop/");
|
||||||
|
|
||||||
|
const productsGrid: Locator = page.locator(".grille-produits");
|
||||||
|
await expect(productsGrid, "La grille des Produits est visible.").toBeVisible();
|
||||||
|
|
||||||
|
expect(await productsGrid.getAttribute("data-page"), "Le numéro de page initial est correct.").toBe(
|
||||||
|
FIRST_PAGE_NUMBER,
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
test("can scroll to the end of the grid", async ({ page }): Promise<void> => {
|
test("can scroll to the end of the grid", async ({ page }): Promise<void> => {
|
||||||
await scrollToGridsEnd(page);
|
await page.goto("https://haikuatelier.gcch.local/shop/");
|
||||||
});
|
|
||||||
|
|
||||||
test("can access all Products' pages", async ({ page, request }): Promise<void> => {
|
|
||||||
await page["goto"]("https://haikuatelier.gcch.local/shop/");
|
|
||||||
const links = await getAllProductsLinks(page, request);
|
|
||||||
|
|
||||||
for (const link of links) {
|
|
||||||
// Vérifie que le lien de la page retourne OK.
|
|
||||||
const req = await request.get(link);
|
|
||||||
await expect(req, "The Product's page is accessible").toBeOK();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
const getAllProductsLinks = async (page: Page, request: APIRequestContext): Promise<Array<string>> => {
|
|
||||||
const backendHeaders: BackendHeaders = await getBackendHeadersFromHtml(page);
|
|
||||||
const response = await request.get("/wp-json/wc/v3/products?page=1&per_page=100&status=publish", {
|
|
||||||
headers: { Authorization: `Basic ${backendHeaders.authString}`, Nonce: backendHeaders.nonce },
|
|
||||||
});
|
|
||||||
const json = (await response.json()) as WCV3Products;
|
|
||||||
return json.map(p => p.permalink);
|
|
||||||
};
|
|
||||||
|
|
||||||
const scrollToGridsEnd = async (page: Page): Promise<void> => {
|
|
||||||
await page["goto"]("https://haikuatelier.gcch.local/shop/");
|
|
||||||
|
|
||||||
let hasMoreProducts = true;
|
let hasMoreProducts = true;
|
||||||
let currentPageNumber = "1";
|
let currentPageNumber = "1";
|
||||||
|
|
||||||
const productsGrid: Locator = page.locator(".grille-produits");
|
const productsGrid: Locator = page.locator(".grille-produits");
|
||||||
await expect(productsGrid, "The Product's grid is visible").toBeVisible();
|
await expect(productsGrid, "La grille des Produits est visible.").toBeVisible();
|
||||||
expect(await productsGrid.getAttribute("data-page"), "The initial page number attribute is correct").toBe(
|
|
||||||
currentPageNumber,
|
|
||||||
);
|
|
||||||
|
|
||||||
const showMoreButton: Locator = page.getByRole("button", { name: "Show more" });
|
const showMoreButton: Locator = page.getByRole("button", { name: "Show more" });
|
||||||
await expect(showMoreButton, "The 'Show more' button is visible").toBeVisible();
|
await expect(showMoreButton, "Le bouton « Show more » est visible.").toBeVisible();
|
||||||
|
|
||||||
while (hasMoreProducts) {
|
while (hasMoreProducts) {
|
||||||
const newProductsResponse: Promise<Response> = page.waitForResponse(new RegExp(".*wp-json/wc/v3/products.*"));
|
const newProductsResponse: Promise<Response> = page.waitForResponse(new RegExp(".*wp-json/wc/v3/products.*"));
|
||||||
|
|
@ -57,7 +47,7 @@ const scrollToGridsEnd = async (page: Page): Promise<void> => {
|
||||||
await gridWithNewPageNumber.waitFor();
|
await gridWithNewPageNumber.waitFor();
|
||||||
|
|
||||||
// Redondance pour expliciter la raison de l'assertion.
|
// Redondance pour expliciter la raison de l'assertion.
|
||||||
expect(await productsGrid.getAttribute("data-page"), "The page number attribute is incremented").toBe(
|
expect(await productsGrid.getAttribute("data-page"), "Le numéro de page a été incrémenté.").toBe(
|
||||||
newPageNumber,
|
newPageNumber,
|
||||||
);
|
);
|
||||||
currentPageNumber = newPageNumber;
|
currentPageNumber = newPageNumber;
|
||||||
|
|
@ -67,4 +57,44 @@ const scrollToGridsEnd = async (page: Page): Promise<void> => {
|
||||||
hasMoreProducts = false;
|
hasMoreProducts = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
test("can access all Products' pages", async ({ page, request }): Promise<void> => {
|
||||||
|
await page.goto("https://haikuatelier.gcch.local/shop/");
|
||||||
|
const links = await getAllProductsLinks(page, request);
|
||||||
|
|
||||||
|
for (const link of links) {
|
||||||
|
// Vérifie que le lien de la page retourne OK.
|
||||||
|
const req = await request.get(link);
|
||||||
|
await expect(req, "La page du Produit est accessible.").toBeOK();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
test("has no Product with broken images", async ({ page }): Promise<void> => {
|
||||||
|
await page.goto("https://haikuatelier.gcch.local/shop/");
|
||||||
|
|
||||||
|
await loadMoreProducts(page);
|
||||||
|
|
||||||
|
const brokenImages = await page.locator("a:has(img[src=''])").all();
|
||||||
|
const links = await Promise.all(brokenImages.map(locator => locator.getAttribute("href")));
|
||||||
|
|
||||||
|
console.info("Liens des Produits avec images cassées :", links);
|
||||||
|
|
||||||
|
expect(links.length, "Il n'y pas d'images cassées.").toEqual(0);
|
||||||
|
});
|
||||||
|
|
||||||
|
const getAllProductsLinks = async (page: Page, request: APIRequestContext): Promise<Array<string>> => {
|
||||||
|
const backendHeaders: BackendHeaders = await getBackendHeadersFromHtml(page);
|
||||||
|
const response = await request.get("/wp-json/wc/v3/products?page=1&per_page=100&status=publish", {
|
||||||
|
headers: { Authorization: `Basic ${backendHeaders.authString}`, Nonce: backendHeaders.nonce },
|
||||||
|
});
|
||||||
|
const json = (await response.json()) as WCV3Products;
|
||||||
|
return json.map(p => p.permalink);
|
||||||
|
};
|
||||||
|
|
||||||
|
const loadMoreProducts = async (page: Page): Promise<void> => {
|
||||||
|
const showMoreButton: Locator = page.getByRole("button", { name: "Show more" });
|
||||||
|
const newProductsResponse: Promise<Response> = page.waitForResponse(new RegExp(".*wp-json/wc/v3/products.*"));
|
||||||
|
await showMoreButton.click();
|
||||||
|
await newProductsResponse;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@
|
||||||
{
|
{
|
||||||
"diagnosticSeverity": {
|
"diagnosticSeverity": {
|
||||||
"anyUnknownInErrorContext": "error",
|
"anyUnknownInErrorContext": "error",
|
||||||
"asyncFunction": "warning",
|
"asyncFunction": "off",
|
||||||
"catchAllToMapError": "error",
|
"catchAllToMapError": "error",
|
||||||
"catchUnfailableEffect": "error",
|
"catchUnfailableEffect": "error",
|
||||||
"classSelfMismatch": "error",
|
"classSelfMismatch": "error",
|
||||||
|
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
{"version":3,"sourceRoot":"","sources":["../../../src/sass/pages/page-404.scss"],"names":[],"mappings":"AAEA;EAEE;EAGA;EAEA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAKN;EACE;IACE;IACA","file":"page-404.css"}
|
|
||||||
|
|
@ -1,121 +0,0 @@
|
||||||
@charset "UTF-8";
|
|
||||||
#page-a-propos {
|
|
||||||
--hauteur-conteneur: var(--contenu-page-hauteur-minimale-sans-categories);
|
|
||||||
--page-marges-bloc-debut: var(--en-tete-hauteur);
|
|
||||||
--conteneur-marges-internes-ligne: var(--espace-xl);
|
|
||||||
overflow: hidden;
|
|
||||||
display: flex;
|
|
||||||
flex-flow: column nowrap;
|
|
||||||
min-block-size: var(--hauteur-conteneur);
|
|
||||||
max-block-size: var(--hauteur-conteneur);
|
|
||||||
margin-top: var(--page-marges-bloc-debut);
|
|
||||||
}
|
|
||||||
#page-a-propos .storytelling {
|
|
||||||
overflow-y: scroll;
|
|
||||||
overscroll-behavior: none;
|
|
||||||
min-block-size: inherit;
|
|
||||||
max-block-size: inherit;
|
|
||||||
}
|
|
||||||
#page-a-propos .storytelling__conteneur {
|
|
||||||
overscroll-behavior: inherit;
|
|
||||||
display: flex;
|
|
||||||
flex-flow: column nowrap;
|
|
||||||
place-items: center;
|
|
||||||
min-block-size: calc(var(--hauteur-conteneur) * 13);
|
|
||||||
padding: 0 var(--conteneur-marges-internes-ligne);
|
|
||||||
}
|
|
||||||
#page-a-propos .storytelling__animation {
|
|
||||||
--hauteur-animation: 90px;
|
|
||||||
--taille-police: calc(var(--espace-xl) * 2.5);
|
|
||||||
pointer-events: none;
|
|
||||||
position: absolute;
|
|
||||||
z-index: 3;
|
|
||||||
top: 0;
|
|
||||||
right: 0;
|
|
||||||
left: 0;
|
|
||||||
overflow: hidden;
|
|
||||||
display: grid;
|
|
||||||
place-content: center;
|
|
||||||
place-items: center;
|
|
||||||
block-size: 100%;
|
|
||||||
margin: auto;
|
|
||||||
visibility: visible;
|
|
||||||
opacity: 100%;
|
|
||||||
mask-image: linear-gradient(
|
|
||||||
var(--mask-direction, to right),
|
|
||||||
hsla(0, 0%, 0%, 0),
|
|
||||||
hsl(0, 0%, 0%) 20%,
|
|
||||||
hsl(0, 0%, 0%) 80%,
|
|
||||||
hsla(0, 0%, 0%, 0)
|
|
||||||
);
|
|
||||||
transition: 1s opacity ease-in-out, 1s visibility ease-in-out;
|
|
||||||
}
|
|
||||||
#page-a-propos .storytelling__animation[hidden] {
|
|
||||||
display: grid !important;
|
|
||||||
visibility: hidden;
|
|
||||||
opacity: 0%;
|
|
||||||
transition: 1s opacity ease-in-out, 1s visibility ease-in-out;
|
|
||||||
}
|
|
||||||
#page-a-propos .storytelling__animation.no-js {
|
|
||||||
visibility: hidden;
|
|
||||||
opacity: 0%;
|
|
||||||
transition: 1s opacity ease-in-out, 1s visibility ease-in-out;
|
|
||||||
}
|
|
||||||
#page-a-propos .storytelling__animation .animation-conteneur {
|
|
||||||
overflow: visible;
|
|
||||||
width: 120vw;
|
|
||||||
block-size: var(--hauteur-animation);
|
|
||||||
}
|
|
||||||
#page-a-propos .storytelling__animation .animation-texte {
|
|
||||||
overflow: visible;
|
|
||||||
font-size: var(--taille-police);
|
|
||||||
font-weight: 600;
|
|
||||||
text-shadow: 4px 4px 0 var(--couleur-blanc);
|
|
||||||
text-transform: uppercase;
|
|
||||||
letter-spacing: var(--espacement-inter-lettres-rapproche-s);
|
|
||||||
}
|
|
||||||
#page-a-propos .storytelling__image {
|
|
||||||
position: sticky;
|
|
||||||
top: 0;
|
|
||||||
align-content: center;
|
|
||||||
inline-size: max-content;
|
|
||||||
max-inline-size: 100%;
|
|
||||||
min-block-size: var(--hauteur-conteneur);
|
|
||||||
max-block-size: var(--hauteur-conteneur);
|
|
||||||
}
|
|
||||||
#page-a-propos .storytelling__image[data-caché] {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
#page-a-propos .storytelling__image picture {
|
|
||||||
max-block-size: inherit;
|
|
||||||
}
|
|
||||||
#page-a-propos .storytelling__image img {
|
|
||||||
scale: 0.95;
|
|
||||||
max-block-size: inherit;
|
|
||||||
margin: auto;
|
|
||||||
object-fit: contain;
|
|
||||||
background: transparent;
|
|
||||||
}
|
|
||||||
@media (scripting: none) {
|
|
||||||
#page-a-propos .storytelling__animation {
|
|
||||||
visibility: hidden;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@media (width <= 700px) {
|
|
||||||
#page-a-propos {
|
|
||||||
--conteneur-marges-internes-ligne: var(--espace-l);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@media (width <= 500px) {
|
|
||||||
#page-a-propos {
|
|
||||||
--conteneur-marges-internes-ligne: var(--espace-m);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@supports (-moz-appearance: none) {
|
|
||||||
#page-a-propos .storytelling__animation {
|
|
||||||
--taille-police: calc(var(--espace-xl) * 2.2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* # sourceMappingURL=page-a-propos.css.map */
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
{"version":3,"sourceRoot":"","sources":["../../../src/sass/pages/page-a-propos.scss"],"names":[],"mappings":";AAEA;EAEE;EAGA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;AAIF;EACE;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAOA;;AAEA;EACE;EACA;EACA;EACA;;AAIF;EACE;EACA;EACA;;AAGF;EACE;EAIA;EACA;;AAGF;EACE;EAGA;EACA;EAGA;EACA;EACA;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAMN;EACE;IACE;;;AAIJ;EAjIF;IAkII;;;AAGF;EArIF;IAsII;;;;AAKJ;EACE;IACE","file":"page-a-propos.css"}
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
#page-a-propos{--hauteur-conteneur:var(--contenu-page-hauteur-minimale-sans-categories);--page-marges-bloc-debut:var(--en-tete-hauteur);--conteneur-marges-internes-ligne:var(--espace-xl);min-block-size:var(--hauteur-conteneur);max-block-size:var(--hauteur-conteneur);margin-top:var(--page-marges-bloc-debut);flex-flow:column;display:flex;overflow:hidden}#page-a-propos .storytelling{overscroll-behavior:none;min-block-size:inherit;max-block-size:inherit;overflow-y:scroll}#page-a-propos .storytelling__conteneur{overscroll-behavior:inherit;min-block-size:calc(var(--hauteur-conteneur) * 13);padding:0 var(--conteneur-marges-internes-ligne);flex-flow:column;place-items:center;display:flex}#page-a-propos .storytelling__animation{--hauteur-animation:90px;--taille-police:calc(var(--espace-xl) * 2.5);pointer-events:none;z-index:3;visibility:visible;opacity:1;block-size:100%;mask-image:linear-gradient(var(--mask-direction,to right), #0000, #000 20%, #000 80%, #0000);place-content:center;place-items:center;margin:auto;transition:opacity 1s ease-in-out,visibility 1s ease-in-out;display:grid;position:absolute;top:0;left:0;right:0;overflow:hidden}#page-a-propos .storytelling__animation[hidden]{visibility:hidden;opacity:0;transition:opacity 1s ease-in-out,visibility 1s ease-in-out;display:grid!important}#page-a-propos .storytelling__animation.no-js{visibility:hidden;opacity:0;transition:opacity 1s ease-in-out,visibility 1s ease-in-out}#page-a-propos .storytelling__animation .animation-conteneur{width:120vw;block-size:var(--hauteur-animation);overflow:visible}#page-a-propos .storytelling__animation .animation-texte{font-size:var(--taille-police);text-shadow:4px 4px 0 var(--couleur-blanc);text-transform:uppercase;letter-spacing:var(--espacement-inter-lettres-rapproche-s);font-weight:600;overflow:visible}#page-a-propos .storytelling__image{inline-size:max-content;max-inline-size:100%;min-block-size:var(--hauteur-conteneur);max-block-size:var(--hauteur-conteneur);align-content:center;position:sticky;top:0}#page-a-propos .storytelling__image[data-caché]{display:none!important}#page-a-propos .storytelling__image picture{max-block-size:inherit}#page-a-propos .storytelling__image img{max-block-size:inherit;object-fit:contain;background:0 0;margin:auto;scale:.95}@media (scripting:none){#page-a-propos .storytelling__animation{visibility:hidden}}@media (width<=700px){#page-a-propos{--conteneur-marges-internes-ligne:var(--espace-l)}}@media (width<=500px){#page-a-propos{--conteneur-marges-internes-ligne:var(--espace-m)}}@supports ((-moz-appearance:none)){#page-a-propos .storytelling__animation{--taille-police:calc(var(--espace-xl) * 2.2)}}
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
#page-accueil {
|
|
||||||
--hauteur-conteneur: calc(100svh - var(--pied-de-page-hauteur));
|
|
||||||
overflow: hidden;
|
|
||||||
display: flex;
|
|
||||||
flex-flow: column nowrap;
|
|
||||||
min-block-size: var(--hauteur-conteneur);
|
|
||||||
max-block-size: var(--hauteur-conteneur);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* # sourceMappingURL=page-accueil.css.map */
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
{"version":3,"sourceRoot":"","sources":["../../../src/sass/pages/page-accueil.scss"],"names":[],"mappings":"AAEA;EAEE;EAEA;EACA;EACA;EACA;EACA","file":"page-accueil.css"}
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
#page-accueil{--hauteur-conteneur:calc(100svh - var(--pied-de-page-hauteur));min-block-size:var(--hauteur-conteneur);max-block-size:var(--hauteur-conteneur);flex-flow:column;display:flex;overflow:hidden}
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
#page-boutique .actions {
|
|
||||||
align-content: center;
|
|
||||||
width: 100%;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
#page-boutique .actions button {
|
|
||||||
padding: var(--espace-xl) 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* # sourceMappingURL=page-boutique.css.map */
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
{"version":3,"sourceRoot":"","sources":["../../../src/sass/pages/page-boutique.scss"],"names":[],"mappings":"AAGE;EACE;EACA;EACA;;AAEA;EACE","file":"page-boutique.css"}
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
#page-boutique .actions{text-align:center;align-content:center;width:100%}#page-boutique .actions button{padding:var(--espace-xl) 0}
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
{"version":3,"sourceRoot":"","sources":["../../../src/sass/pages/page-contact.scss"],"names":[],"mappings":"AAEA;EAEE;AAAA;AAAA;EAKA;EAEA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAKN;EACE;IACE;IACA","file":"page-contact.css"}
|
|
||||||
|
|
@ -1,54 +0,0 @@
|
||||||
#page-contact {
|
|
||||||
--page-hauteur-minimale: calc(
|
|
||||||
100svh - var(--en-tete-hauteur) - var(--pied-de-page-hauteur) - var(--espace-xl) - 1px
|
|
||||||
);
|
|
||||||
--page-marges-bloc-debut: var(--en-tete-hauteur);
|
|
||||||
margin-top: var(--page-marges-bloc-debut);
|
|
||||||
margin-bottom: var(--espace-xl);
|
|
||||||
border-bottom: 1px solid var(--couleur-noir);
|
|
||||||
flex-flow: column;
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
#page-contact .contenu {
|
|
||||||
width: min(50rem, 100%);
|
|
||||||
min-height: var(--page-hauteur-minimale);
|
|
||||||
border: 1px solid var(--couleur-noir);
|
|
||||||
border-bottom: initial;
|
|
||||||
flex-flow: column;
|
|
||||||
place-items: center;
|
|
||||||
margin: auto;
|
|
||||||
font-style: italic;
|
|
||||||
font-weight: 500;
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
#page-contact .contenu__en-tete {
|
|
||||||
width: 100%;
|
|
||||||
padding: var(--espace-m) var(--espace-xl);
|
|
||||||
color: var(--couleur-blanc);
|
|
||||||
background: var(--couleur-noir);
|
|
||||||
}
|
|
||||||
#page-contact .contenu__en-tete h2 {
|
|
||||||
text-transform: uppercase;
|
|
||||||
width: fit-content;
|
|
||||||
letter-spacing: var(--espacement-inter-lettres-etendu-l);
|
|
||||||
margin: auto;
|
|
||||||
}
|
|
||||||
#page-contact .contenu__textuel {
|
|
||||||
max-width: 34rem;
|
|
||||||
height: 100%;
|
|
||||||
padding: 0 var(--espace-xl);
|
|
||||||
text-wrap: pretty;
|
|
||||||
flex-flow: column;
|
|
||||||
flex: 1;
|
|
||||||
place-content: center;
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
#page-contact .contenu__textuel p + p {
|
|
||||||
margin-top: var(--espace-m);
|
|
||||||
}
|
|
||||||
@media (width <= 50rem) {
|
|
||||||
#page-contact .contenu {
|
|
||||||
border-right: initial;
|
|
||||||
border-left: initial;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,97 +0,0 @@
|
||||||
.page-modele-simple {
|
|
||||||
--page-hauteur-minimale: calc(
|
|
||||||
100svh - var(--en-tete-hauteur) - var(--pied-de-page-hauteur) - var(--espace-xl) - 1px
|
|
||||||
);
|
|
||||||
--page-marges-bloc-debut: var(--en-tete-hauteur);
|
|
||||||
display: flex;
|
|
||||||
flex-flow: column nowrap;
|
|
||||||
margin-top: var(--page-marges-bloc-debut);
|
|
||||||
margin-bottom: var(--espace-xl);
|
|
||||||
border-bottom: 1px solid var(--couleur-noir);
|
|
||||||
}
|
|
||||||
.page-modele-simple .contenu {
|
|
||||||
display: flex;
|
|
||||||
flex-flow: column nowrap;
|
|
||||||
place-items: center;
|
|
||||||
width: min(50rem, 100%);
|
|
||||||
min-height: var(--page-hauteur-minimale);
|
|
||||||
margin: auto;
|
|
||||||
border: 1px solid var(--couleur-noir);
|
|
||||||
border-bottom: initial;
|
|
||||||
font-weight: 400;
|
|
||||||
font-style: italic;
|
|
||||||
}
|
|
||||||
.page-modele-simple .contenu__en-tete {
|
|
||||||
width: 100%;
|
|
||||||
padding: var(--espace-m) var(--espace-xl);
|
|
||||||
color: var(--couleur-blanc);
|
|
||||||
background: var(--couleur-noir);
|
|
||||||
}
|
|
||||||
.page-modele-simple .contenu__en-tete h2 {
|
|
||||||
width: fit-content;
|
|
||||||
margin: auto;
|
|
||||||
text-transform: uppercase;
|
|
||||||
letter-spacing: var(--espacement-inter-lettres-etendu-l);
|
|
||||||
}
|
|
||||||
.page-modele-simple .contenu__textuel {
|
|
||||||
display: flex;
|
|
||||||
flex: 1;
|
|
||||||
flex-flow: column nowrap;
|
|
||||||
place-content: center;
|
|
||||||
max-width: 34rem;
|
|
||||||
height: 100%;
|
|
||||||
padding: 0 var(--espace-xl);
|
|
||||||
text-wrap: pretty;
|
|
||||||
}
|
|
||||||
.page-modele-simple .contenu__textuel p + p {
|
|
||||||
margin-top: var(--espace-m);
|
|
||||||
}
|
|
||||||
.page-modele-simple#page-cgv .contenu {
|
|
||||||
font-style: normal;
|
|
||||||
}
|
|
||||||
.page-modele-simple#page-cgv .contenu header {
|
|
||||||
font-style: italic;
|
|
||||||
}
|
|
||||||
.page-modele-simple#page-cgv .contenu__textuel {
|
|
||||||
max-width: initial;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
.page-modele-simple#page-cgv .contenu__textuel__section {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
.page-modele-simple#page-cgv .contenu__textuel__section:first-of-type header {
|
|
||||||
border-top: initial;
|
|
||||||
}
|
|
||||||
.page-modele-simple#page-cgv .contenu__textuel__section header {
|
|
||||||
width: 100%;
|
|
||||||
margin-bottom: var(--espace-l);
|
|
||||||
padding: var(--espace-m) var(--espace-xl);
|
|
||||||
border-top: 1px solid var(--couleur-noir);
|
|
||||||
border-bottom: 1px solid var(--couleur-noir);
|
|
||||||
}
|
|
||||||
.page-modele-simple#page-cgv .contenu__textuel__section header h3 {
|
|
||||||
width: fit-content;
|
|
||||||
margin: auto;
|
|
||||||
text-transform: uppercase;
|
|
||||||
letter-spacing: var(--espacement-inter-lettres-etendu-l);
|
|
||||||
}
|
|
||||||
.page-modele-simple#page-cgv .contenu__textuel__section ul {
|
|
||||||
margin-bottom: 1lh;
|
|
||||||
padding: 0 var(--espace-xl);
|
|
||||||
list-style: square;
|
|
||||||
list-style-position: inside;
|
|
||||||
}
|
|
||||||
.page-modele-simple#page-cgv .contenu__textuel__section p {
|
|
||||||
padding: 0 var(--espace-xl);
|
|
||||||
}
|
|
||||||
.page-modele-simple#page-cgv .contenu__textuel__section p:last-of-type {
|
|
||||||
margin-bottom: var(--espace-xl);
|
|
||||||
}
|
|
||||||
@media (width <= 50rem) {
|
|
||||||
.page-modele-simple .contenu {
|
|
||||||
border-right: initial;
|
|
||||||
border-left: initial;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* # sourceMappingURL=page-modele-simple.css.map */
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
{"version":3,"sourceRoot":"","sources":["../../../src/sass/pages/page-modele-simple.scss"],"names":[],"mappings":"AAEA;EAEE;AAAA;AAAA;EAKA;EAEA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAMJ;EACE;;AAEA;EACE;;AAGF;EACE;EACA;;AAEA;EACE;;AAGE;EACE;;AAIJ;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAIJ;EACE;EACA;EACA;EACA;;AAKF;EACE;;AAEA;EACE;;AAQZ;EACE;IACE;IACA","file":"page-modele-simple.css"}
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
.page-modele-simple{--page-hauteur-minimale:calc(100svh - var(--en-tete-hauteur) - var(--pied-de-page-hauteur) - var(--espace-xl) - 1px);--page-marges-bloc-debut:var(--en-tete-hauteur);margin-top:var(--page-marges-bloc-debut);margin-bottom:var(--espace-xl);border-bottom:1px solid var(--couleur-noir);flex-flow:column;display:flex}.page-modele-simple .contenu{width:min(50rem,100%);min-height:var(--page-hauteur-minimale);border:1px solid var(--couleur-noir);border-bottom:initial;flex-flow:column;place-items:center;margin:auto;font-style:italic;font-weight:400;display:flex}.page-modele-simple .contenu__en-tete{width:100%;padding:var(--espace-m) var(--espace-xl);color:var(--couleur-blanc);background:var(--couleur-noir)}.page-modele-simple .contenu__en-tete h2{text-transform:uppercase;width:fit-content;letter-spacing:var(--espacement-inter-lettres-etendu-l);margin:auto}.page-modele-simple .contenu__textuel{max-width:34rem;height:100%;padding:0 var(--espace-xl);text-wrap:pretty;flex-flow:column;flex:1;place-content:center;display:flex}.page-modele-simple .contenu__textuel p+p{margin-top:var(--espace-m)}.page-modele-simple#page-cgv .contenu{font-style:normal}.page-modele-simple#page-cgv .contenu header{font-style:italic}.page-modele-simple#page-cgv .contenu__textuel{max-width:initial;padding:0}.page-modele-simple#page-cgv .contenu__textuel__section{width:100%}.page-modele-simple#page-cgv .contenu__textuel__section:first-of-type header{border-top:initial}.page-modele-simple#page-cgv .contenu__textuel__section header{width:100%;margin-bottom:var(--espace-l);padding:var(--espace-m) var(--espace-xl);border-top:1px solid var(--couleur-noir);border-bottom:1px solid var(--couleur-noir)}.page-modele-simple#page-cgv .contenu__textuel__section header h3{text-transform:uppercase;width:fit-content;letter-spacing:var(--espacement-inter-lettres-etendu-l);margin:auto}.page-modele-simple#page-cgv .contenu__textuel__section ul{padding:0 var(--espace-xl);margin-bottom:1lh;list-style:inside square}.page-modele-simple#page-cgv .contenu__textuel__section p{padding:0 var(--espace-xl)}.page-modele-simple#page-cgv .contenu__textuel__section p:last-of-type{margin-bottom:var(--espace-xl)}@media (width<=50rem){.page-modele-simple .contenu{border-right:initial;border-left:initial}}
|
|
||||||
|
|
@ -1,473 +0,0 @@
|
||||||
@charset "UTF-8";
|
|
||||||
#panneau-panier {
|
|
||||||
border-right: 1px solid var(--couleur-noir);
|
|
||||||
}
|
|
||||||
#panneau-panier > div {
|
|
||||||
place-content: center;
|
|
||||||
}
|
|
||||||
#panneau-panier .panneau__grille-produits {
|
|
||||||
display: flex;
|
|
||||||
flex-flow: column nowrap;
|
|
||||||
}
|
|
||||||
#panneau-panier .panneau__grille-produits__produit {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: 1fr 1fr;
|
|
||||||
grid-template-rows: 1fr;
|
|
||||||
border-bottom: 1px solid var(--couleur-noir);
|
|
||||||
}
|
|
||||||
#panneau-panier .panneau__grille-produits__produit__illustratif {
|
|
||||||
border-right: 1px solid var(--couleur-noir);
|
|
||||||
}
|
|
||||||
#panneau-panier .panneau__grille-produits__produit__illustratif picture {
|
|
||||||
overflow: hidden;
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
#panneau-panier .panneau__grille-produits__produit__illustratif img {
|
|
||||||
aspect-ratio: 1;
|
|
||||||
height: auto;
|
|
||||||
}
|
|
||||||
#panneau-panier .panneau__grille-produits .detail-produit {
|
|
||||||
display: flex;
|
|
||||||
flex-flow: column nowrap;
|
|
||||||
place-content: center;
|
|
||||||
width: fit-content;
|
|
||||||
margin: auto;
|
|
||||||
padding: 0 var(--espace-xl);
|
|
||||||
font-style: italic;
|
|
||||||
}
|
|
||||||
#panneau-panier .panneau__grille-produits .detail-produit__nom-prix {
|
|
||||||
display: flex;
|
|
||||||
flex-flow: row nowrap;
|
|
||||||
column-gap: var(--espace-l);
|
|
||||||
justify-content: space-between;
|
|
||||||
font-size: var(--espace-l);
|
|
||||||
line-height: var(--hauteur-ligne-moitie);
|
|
||||||
}
|
|
||||||
#panneau-panier .panneau__grille-produits .detail-produit__nom-prix span {
|
|
||||||
min-width: 4rem;
|
|
||||||
font-weight: 600;
|
|
||||||
font-style: initial;
|
|
||||||
text-align: right;
|
|
||||||
}
|
|
||||||
#panneau-panier .panneau__grille-produits .detail-produit__description {
|
|
||||||
margin-bottom: var(--espace-l);
|
|
||||||
text-transform: lowercase;
|
|
||||||
}
|
|
||||||
#panneau-panier .panneau__grille-produits .detail-produit__actions {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: 0.25fr auto 0.25fr;
|
|
||||||
grid-template-rows: 1fr 1fr;
|
|
||||||
font-weight: 500;
|
|
||||||
font-style: initial;
|
|
||||||
/* Bouton d'addition de quantité */
|
|
||||||
}
|
|
||||||
#panneau-panier .panneau__grille-produits .detail-produit__actions button:first-of-type {
|
|
||||||
grid-column: 1;
|
|
||||||
min-width: 3rem;
|
|
||||||
max-width: 3rem;
|
|
||||||
border: 1px solid var(--couleur-noir);
|
|
||||||
border-bottom: initial;
|
|
||||||
}
|
|
||||||
#panneau-panier .panneau__grille-produits .detail-produit__actions {
|
|
||||||
/*
|
|
||||||
* 1. Cache les flèches d'augmentation/diminution sur Firefox.
|
|
||||||
* 2. Cache les flèches d'augmentation/diminution sur Chrome/Edge/Safari.
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
#panneau-panier .panneau__grille-produits .detail-produit__actions input[type="number"] {
|
|
||||||
grid-column: 2;
|
|
||||||
width: 100%;
|
|
||||||
border: initial;
|
|
||||||
border-top: 1px solid var(--couleur-noir);
|
|
||||||
text-align: center;
|
|
||||||
appearance: textfield; /* 1 */
|
|
||||||
}
|
|
||||||
#panneau-panier
|
|
||||||
.panneau__grille-produits
|
|
||||||
.detail-produit__actions
|
|
||||||
input[type="number"]::-webkit-outer-spin-button,
|
|
||||||
#panneau-panier
|
|
||||||
.panneau__grille-produits
|
|
||||||
.detail-produit__actions
|
|
||||||
input[type="number"]::-webkit-inner-spin-button {
|
|
||||||
margin: 0; /* 2 */
|
|
||||||
appearance: none; /* 2 */
|
|
||||||
}
|
|
||||||
#panneau-panier .panneau__grille-produits .detail-produit__actions {
|
|
||||||
/* Bouton de suppression de quantité */
|
|
||||||
}
|
|
||||||
#panneau-panier .panneau__grille-produits .detail-produit__actions button:nth-of-type(2) {
|
|
||||||
grid-column: 3;
|
|
||||||
min-width: 3rem;
|
|
||||||
max-width: 3rem;
|
|
||||||
border: 1px solid var(--couleur-noir);
|
|
||||||
border-bottom: initial;
|
|
||||||
}
|
|
||||||
#panneau-panier .panneau__grille-produits .detail-produit__actions {
|
|
||||||
/* Bouton de suppression du Produit du Panier */
|
|
||||||
}
|
|
||||||
#panneau-panier .panneau__grille-produits .detail-produit__actions button:last-of-type {
|
|
||||||
grid-column: span 3;
|
|
||||||
grid-row: 2;
|
|
||||||
padding: var(--espace-xs);
|
|
||||||
border: 1px solid var(--couleur-noir);
|
|
||||||
text-transform: lowercase;
|
|
||||||
}
|
|
||||||
#panneau-panier .panneau__instructions-code-promo {
|
|
||||||
width: 100%;
|
|
||||||
padding: var(--espace-l) var(--espace-xl);
|
|
||||||
border-bottom: 1px solid var(--couleur-noir);
|
|
||||||
text-align: center;
|
|
||||||
/*
|
|
||||||
* 1. Nécessaire pour ne pas qu'un espace vertical non souhaité apparaisse.
|
|
||||||
* 2. Applique une marge entre les instructions et le code promo de notre choix.
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
#panneau-panier .panneau__instructions-code-promo__instructions {
|
|
||||||
resize: vertical;
|
|
||||||
display: block; /* 1 */
|
|
||||||
width: 100%;
|
|
||||||
margin: auto; /* 1 */
|
|
||||||
margin-bottom: var(--espace-s); /* 2 */
|
|
||||||
padding: var(--espace-s);
|
|
||||||
border: 1px solid transparent;
|
|
||||||
font-size: 0.8rem;
|
|
||||||
font-weight: 450;
|
|
||||||
background: initial;
|
|
||||||
}
|
|
||||||
#panneau-panier .panneau__instructions-code-promo__code-promo {
|
|
||||||
display: flex;
|
|
||||||
flex-flow: row wrap;
|
|
||||||
place-content: center;
|
|
||||||
width: fit-content;
|
|
||||||
margin: auto;
|
|
||||||
/*
|
|
||||||
* 1. Longueur minimale pour le Bouton n'ait pas à changer de taille quel que soit son texte
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
#panneau-panier .panneau__instructions-code-promo__code-promo button {
|
|
||||||
min-width: 9rem; /* 1 */
|
|
||||||
padding: var(--espace-xs) var(--espace-xl);
|
|
||||||
border: 1px solid var(--couleur-noir);
|
|
||||||
border-left: initial;
|
|
||||||
text-transform: lowercase;
|
|
||||||
}
|
|
||||||
#panneau-panier .panneau__instructions-code-promo__code-promo__message {
|
|
||||||
flex-basis: 100%;
|
|
||||||
margin-top: var(--espace-m);
|
|
||||||
}
|
|
||||||
#panneau-panier .panneau__sous-totaux {
|
|
||||||
width: min(40rem, 100%);
|
|
||||||
margin: auto;
|
|
||||||
padding: var(--espace-l) var(--espace-xl);
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
#panneau-panier .panneau__sous-totaux__ligne {
|
|
||||||
display: flex;
|
|
||||||
flex-flow: row nowrap;
|
|
||||||
justify-content: space-between;
|
|
||||||
font-style: italic;
|
|
||||||
}
|
|
||||||
#panneau-panier .panneau__sous-totaux__ligne strong {
|
|
||||||
text-align: right;
|
|
||||||
text-transform: lowercase;
|
|
||||||
}
|
|
||||||
#panneau-panier .panneau__sous-totaux__ligne#sous-total-livraison p:last-of-type {
|
|
||||||
text-align: right;
|
|
||||||
}
|
|
||||||
#panneau-panier .panneau__sous-totaux__ligne#sous-total-livraison p:last-of-type span {
|
|
||||||
color: var(--couleur-gris-fonce);
|
|
||||||
}
|
|
||||||
#panneau-panier .panneau__sous-totaux__choix-methode-livraison {
|
|
||||||
flex-flow: row wrap;
|
|
||||||
gap: var(--espace-xs) var(--espace-m);
|
|
||||||
justify-content: center;
|
|
||||||
font-size: 0.9rem;
|
|
||||||
letter-spacing: inherit;
|
|
||||||
}
|
|
||||||
#panneau-panier .panneau__sous-totaux__choix-methode-livraison > label:first-of-type {
|
|
||||||
cursor: revert;
|
|
||||||
flex-basis: 100%;
|
|
||||||
margin-bottom: var(--espace-xs);
|
|
||||||
color: var(--couleur-gris-fonce);
|
|
||||||
text-align: center;
|
|
||||||
text-transform: lowercase;
|
|
||||||
}
|
|
||||||
#panneau-panier .panneau__sous-totaux__choix-methode-livraison div {
|
|
||||||
display: flex;
|
|
||||||
flex-flow: row nowrap;
|
|
||||||
column-gap: 1ch;
|
|
||||||
place-items: center;
|
|
||||||
}
|
|
||||||
#panneau-panier .panneau__sous-totaux__conditions-livraison {
|
|
||||||
margin-top: var(--espace-l);
|
|
||||||
font-size: 0.8rem;
|
|
||||||
font-weight: 450;
|
|
||||||
color: var(--couleur-gris-fonce);
|
|
||||||
letter-spacing: var(--espacement-inter-lettres-etendu-s);
|
|
||||||
}
|
|
||||||
#panneau-panier .panneau__pied-de-page {
|
|
||||||
align-content: center;
|
|
||||||
padding: var(--espace-l) 0;
|
|
||||||
font-size: 1.25rem;
|
|
||||||
font-style: italic;
|
|
||||||
color: var(--couleur-blanc);
|
|
||||||
text-align: center;
|
|
||||||
text-transform: uppercase;
|
|
||||||
letter-spacing: 2px;
|
|
||||||
background: var(--couleur-noir);
|
|
||||||
}
|
|
||||||
#panneau-panier .panneau__pied-de-page span {
|
|
||||||
margin-left: var(--espace-l);
|
|
||||||
font-style: initial;
|
|
||||||
}
|
|
||||||
@media (width <= 500px) {
|
|
||||||
#panneau-panier .panneau__grille-produits__produit__illustratif img {
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
#panneau-panier .panneau__grille-produits .detail-produit {
|
|
||||||
padding: var(--espace-l);
|
|
||||||
}
|
|
||||||
#panneau-panier .panneau__grille-produits .detail-produit .detail-produit__nom-prix {
|
|
||||||
column-gap: var(--espace-l);
|
|
||||||
}
|
|
||||||
#panneau-panier .panneau__instructions-code-promo {
|
|
||||||
padding: var(--espace-xl) var(--espace-l);
|
|
||||||
}
|
|
||||||
#panneau-panier
|
|
||||||
.panneau__instructions-code-promo
|
|
||||||
.panneau__instructions-code-promo__code-promo
|
|
||||||
input,
|
|
||||||
#panneau-panier
|
|
||||||
.panneau__instructions-code-promo
|
|
||||||
.panneau__instructions-code-promo__code-promo
|
|
||||||
button {
|
|
||||||
flex: 1;
|
|
||||||
}
|
|
||||||
#panneau-panier .panneau__sous-totaux {
|
|
||||||
padding: var(--espace-xl) var(--espace-l);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#panneau-informations-client {
|
|
||||||
position: sticky;
|
|
||||||
top: var(--en-tete-hauteur);
|
|
||||||
right: 0;
|
|
||||||
height: fit-content;
|
|
||||||
}
|
|
||||||
#panneau-informations-client > * {
|
|
||||||
align-content: center;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
#panneau-informations-client .panneau__paypal-express {
|
|
||||||
--hauteur-images-bouton: 18px;
|
|
||||||
--hauteur-bouton: calc(var(--hauteur-images-bouton) * 2);
|
|
||||||
--longueur-bouton: 250px;
|
|
||||||
--espacement-inter-images: var(--espace-xs);
|
|
||||||
padding: var(--espace-xl);
|
|
||||||
border-bottom: 1px solid var(--couleur-noir);
|
|
||||||
}
|
|
||||||
#panneau-informations-client .panneau__paypal-express p {
|
|
||||||
margin-bottom: var(--espace-s);
|
|
||||||
font-style: italic;
|
|
||||||
}
|
|
||||||
#panneau-informations-client .panneau__paypal-express button {
|
|
||||||
display: flex;
|
|
||||||
column-gap: var(--espacement-inter-images);
|
|
||||||
place-content: center;
|
|
||||||
place-items: center;
|
|
||||||
width: var(--longueur-bouton);
|
|
||||||
height: var(--hauteur-bouton);
|
|
||||||
margin: auto;
|
|
||||||
background: var(--couleur-noir);
|
|
||||||
}
|
|
||||||
#panneau-informations-client .panneau__paypal-express button img {
|
|
||||||
height: var(--hauteur-images-bouton);
|
|
||||||
background: inherit;
|
|
||||||
}
|
|
||||||
#panneau-informations-client .panneau__paypal-express button img:first-of-type {
|
|
||||||
margin-top: -1px;
|
|
||||||
}
|
|
||||||
#panneau-informations-client .panneau__formulaires {
|
|
||||||
padding: var(--espace-xl) 0;
|
|
||||||
}
|
|
||||||
#panneau-informations-client .panneau__formulaires .panneau__formulaires__separation-adresses {
|
|
||||||
position: relative;
|
|
||||||
display: flex;
|
|
||||||
flex-flow: row nowrap;
|
|
||||||
column-gap: 1ch;
|
|
||||||
place-items: center;
|
|
||||||
width: fit-content;
|
|
||||||
margin: auto;
|
|
||||||
margin-bottom: var(--espace-m);
|
|
||||||
font-size: 0.8rem;
|
|
||||||
font-style: italic;
|
|
||||||
}
|
|
||||||
#panneau-informations-client
|
|
||||||
.panneau__formulaires
|
|
||||||
.panneau__formulaires__separation-adresses
|
|
||||||
label {
|
|
||||||
text-transform: lowercase;
|
|
||||||
}
|
|
||||||
#panneau-informations-client
|
|
||||||
.panneau__formulaires
|
|
||||||
.panneau__formulaires__paiement
|
|
||||||
.formulaire__paiement__attente-renseignement-formulaires {
|
|
||||||
align-content: center;
|
|
||||||
width: 100%;
|
|
||||||
padding: 0;
|
|
||||||
font-size: 0.8rem;
|
|
||||||
font-weight: 450;
|
|
||||||
color: var(--couleur-gris-fonce);
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
#panneau-informations-client
|
|
||||||
.panneau__formulaires
|
|
||||||
.panneau__formulaires__paiement
|
|
||||||
.formulaire__paiement__attente-renseignement-formulaires
|
|
||||||
p + p {
|
|
||||||
margin-top: 1lh;
|
|
||||||
}
|
|
||||||
#panneau-informations-client .panneau__formulaires .panneau__formulaires__message {
|
|
||||||
margin: var(--espace-xl) 0;
|
|
||||||
font-weight: 500;
|
|
||||||
font-style: italic;
|
|
||||||
}
|
|
||||||
#panneau-informations-client .formulaire {
|
|
||||||
margin: auto;
|
|
||||||
padding: 0 var(--espace-xl);
|
|
||||||
}
|
|
||||||
#panneau-informations-client .formulaire + .formulaire {
|
|
||||||
margin-top: var(--espace-xl);
|
|
||||||
}
|
|
||||||
#panneau-informations-client .formulaire .formulaire__titre {
|
|
||||||
margin-bottom: var(--espace-m);
|
|
||||||
font-size: 1.25rem;
|
|
||||||
font-weight: 600;
|
|
||||||
font-style: italic;
|
|
||||||
letter-spacing: 1px;
|
|
||||||
}
|
|
||||||
#panneau-informations-client .formulaire .formulaire__champs {
|
|
||||||
width: fit-content;
|
|
||||||
margin: auto;
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
#panneau-informations-client .formulaire .formulaire__champs .formulaire__champs__champ {
|
|
||||||
display: flex;
|
|
||||||
flex-flow: row nowrap;
|
|
||||||
column-gap: var(--espace-xl);
|
|
||||||
place-items: center;
|
|
||||||
justify-content: space-between;
|
|
||||||
}
|
|
||||||
#panneau-informations-client
|
|
||||||
.formulaire
|
|
||||||
.formulaire__champs
|
|
||||||
.formulaire__champs__champ
|
|
||||||
+ .formulaire__champs__champ {
|
|
||||||
margin-top: var(--espace-l);
|
|
||||||
}
|
|
||||||
#panneau-informations-client .formulaire label {
|
|
||||||
width: min(7rem, 100%);
|
|
||||||
font-weight: 400;
|
|
||||||
text-transform: lowercase;
|
|
||||||
}
|
|
||||||
#panneau-informations-client .formulaire label:has(+ :is(input:required, select:required)) {
|
|
||||||
font-weight: 600;
|
|
||||||
}
|
|
||||||
#panneau-informations-client .formulaire input, #panneau-informations-client .formulaire select {
|
|
||||||
width: min(15rem, 100%);
|
|
||||||
}
|
|
||||||
#panneau-informations-client .panneau__pied-de-page {
|
|
||||||
align-content: center;
|
|
||||||
font-size: 1.25rem;
|
|
||||||
font-style: italic;
|
|
||||||
color: var(--couleur-blanc);
|
|
||||||
text-align: center;
|
|
||||||
text-transform: uppercase;
|
|
||||||
letter-spacing: 2px;
|
|
||||||
border-block: 1px solid var(--couleur-noir);
|
|
||||||
border-block-end: 0;
|
|
||||||
background: var(--arriere-plan-points);
|
|
||||||
}
|
|
||||||
#panneau-informations-client .panneau__pied-de-page:has(button[disabled]) {
|
|
||||||
background: var(--couleur-gris-fond);
|
|
||||||
}
|
|
||||||
#panneau-informations-client .panneau__pied-de-page button {
|
|
||||||
padding: var(--espace-l) 0;
|
|
||||||
}
|
|
||||||
@media (hover: hover) {
|
|
||||||
#panneau-informations-client .panneau__pied-de-page button:not([disabled]):hover {
|
|
||||||
font-weight: 600;
|
|
||||||
color: var(--couleur-blanc);
|
|
||||||
background: var(--couleur-gris-fonce-fond);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@media (width <= 500px) {
|
|
||||||
#panneau-informations-client .panneau__formulaires {
|
|
||||||
padding: var(--espace-xl) 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* 1. Applique une marge supérieure égale à la hauteur de l'en-tête pour qu'elle puisse s'afficher
|
|
||||||
* correctement.
|
|
||||||
*/
|
|
||||||
#page-panier {
|
|
||||||
/* Dimensions */
|
|
||||||
--menu-section-hauteur: var(--menu-categories-produits-hauteur);
|
|
||||||
/* Marges */
|
|
||||||
--menu-section-marges-bloc-debut: var(--en-tete-hauteur); /* 1 */
|
|
||||||
position: relative;
|
|
||||||
display: flex;
|
|
||||||
flex-flow: row wrap;
|
|
||||||
min-height: calc(100svh - var(--en-tete-hauteur) - var(--pied-de-page-hauteur));
|
|
||||||
margin-top: var(--menu-section-marges-bloc-debut);
|
|
||||||
}
|
|
||||||
#page-panier .panneau {
|
|
||||||
flex: 1 1 30rem;
|
|
||||||
border-top: 1px solid var(--couleur-noir);
|
|
||||||
border-bottom: 1px solid var(--couleur-noir);
|
|
||||||
}
|
|
||||||
#page-panier .panneau__en-tete {
|
|
||||||
position: sticky;
|
|
||||||
z-index: 2;
|
|
||||||
top: var(--menu-section-marges-bloc-debut);
|
|
||||||
display: block;
|
|
||||||
align-content: center;
|
|
||||||
min-height: var(--menu-categories-produits-hauteur);
|
|
||||||
max-height: var(--menu-categories-produits-hauteur);
|
|
||||||
color: var(--couleur-gris);
|
|
||||||
text-align: center;
|
|
||||||
background: var(--couleur-noir);
|
|
||||||
}
|
|
||||||
#page-panier .panneau__en-tete h2 {
|
|
||||||
font-weight: 450;
|
|
||||||
font-style: italic;
|
|
||||||
color: var(--couleur-gris);
|
|
||||||
text-transform: uppercase;
|
|
||||||
letter-spacing: 1px;
|
|
||||||
background: var(--couleur-noir);
|
|
||||||
}
|
|
||||||
#page-panier .panier-vide {
|
|
||||||
display: none;
|
|
||||||
flex-basis: 100%;
|
|
||||||
align-content: center;
|
|
||||||
min-height: calc(100svh - var(--en-tete-hauteur) - var(--pied-de-page-hauteur));
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
#page-panier .panier-vide p {
|
|
||||||
font-size: 1.25rem;
|
|
||||||
}
|
|
||||||
#page-panier .panier-vide a {
|
|
||||||
display: inline-block;
|
|
||||||
margin-top: var(--espace-m);
|
|
||||||
font-size: initial;
|
|
||||||
}
|
|
||||||
#page-panier[data-contient-articles="false"] .panneau {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
#page-panier[data-contient-articles="false"] .panier-vide {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* # sourceMappingURL=page-panier.css.map */
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
{"version":3,"sourceRoot":"","sources":["../../../src/sass/layouts/_panneau-panier.scss","../../../src/sass/layouts/_panneau-informations-client.scss","../../../src/sass/pages/page-panier.scss"],"names":[],"mappings":";AAEA;EACE;;AAEA;EACE;;AAIF;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAGA;EACE;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;AAMN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAIJ;EACE;EACA;;AAIF;EACE;EACA;EACA;EACA;EACA;AAEA;;AACA;EACE;EACA;EACA;EACA;EACA;;AAbJ;AAgBE;AAAA;AAAA;AAAA;;AAIA;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AA9BN;AAkCE;;AACA;EACE;EACA;EACA;EACA;EACA;;AAxCJ;AA2CE;;AACA;EACE;EACA;EACA;EACA;EACA;;AAOR;EACE;EACA;EACA;EACA;AAEA;AAAA;AAAA;AAAA;;AAIA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;AAEA;AAAA;AAAA;;AAGA;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;;AAKN;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAKA;EACE;;AAEA;EACE;;AAMR;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAMJ;EACE;EACA;EACA;EACA;EACA;;AAKJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAIJ;EACE;IACE;;EAGF;IACE;;EAEA;IACE;;EAIJ;IACE;;EAGE;IACE;;EAKN;IACE;;;;ACpRN;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAIF;EAEE;EACA;EACA;EAGA;EAEA;EACA;;AAEA;EACE;EACA;;AAIF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;;AAMN;EACE;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAKF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGE;EACE;;AAMR;EACE;EACA;EACA;;AAIJ;EACE;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAKN;EACE;EACA;EACA;;AAEA;EACE;;AAIJ;EACE;;AAKJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGA;EACE;;AAGF;EACE;;AAGE;EACE;IACE;IACA;IACA;;;AAOV;EACE;IACE;;;;AClLN;AAAA;AAAA;AAAA;AAIA;AACE;EACA;AAEA;EACA;EAEA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;AAKN;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;;AAKF;EACE;;AAGF;EACE","file":"page-panier.css"}
|
|
||||||
|
|
@ -1,109 +0,0 @@
|
||||||
#page-succes-commande {
|
|
||||||
--page-hauteur-minimale: calc(
|
|
||||||
100svh - var(--en-tete-hauteur) - var(--pied-de-page-hauteur) - var(--espace-xl) - 1px
|
|
||||||
);
|
|
||||||
--page-marges-bloc-debut: var(--en-tete-hauteur);
|
|
||||||
display: flex;
|
|
||||||
flex-flow: column nowrap;
|
|
||||||
margin-top: var(--page-marges-bloc-debut);
|
|
||||||
margin-bottom: var(--espace-xl);
|
|
||||||
border-bottom: 1px solid var(--couleur-noir);
|
|
||||||
}
|
|
||||||
#page-succes-commande .contenu {
|
|
||||||
display: flex;
|
|
||||||
flex-flow: column nowrap;
|
|
||||||
place-items: center;
|
|
||||||
width: min(50rem, 100%);
|
|
||||||
min-height: var(--page-hauteur-minimale);
|
|
||||||
margin: auto;
|
|
||||||
border: 1px solid var(--couleur-noir);
|
|
||||||
border-bottom: initial;
|
|
||||||
font-weight: 500;
|
|
||||||
font-style: italic;
|
|
||||||
}
|
|
||||||
#page-succes-commande .contenu__en-tete {
|
|
||||||
width: 100%;
|
|
||||||
padding: var(--espace-m) var(--espace-xl);
|
|
||||||
color: var(--couleur-blanc);
|
|
||||||
background: var(--couleur-noir);
|
|
||||||
}
|
|
||||||
#page-succes-commande .contenu__en-tete h2 {
|
|
||||||
width: fit-content;
|
|
||||||
margin: auto;
|
|
||||||
text-transform: uppercase;
|
|
||||||
letter-spacing: var(--espacement-inter-lettres-etendu-l);
|
|
||||||
}
|
|
||||||
#page-succes-commande .contenu__textuel {
|
|
||||||
display: flex;
|
|
||||||
flex: 1;
|
|
||||||
flex-flow: column nowrap;
|
|
||||||
place-content: center;
|
|
||||||
max-width: 34rem;
|
|
||||||
height: 100%;
|
|
||||||
padding: var(--espace-xl);
|
|
||||||
font-style: normal;
|
|
||||||
}
|
|
||||||
#page-succes-commande .contenu__textuel p + p {
|
|
||||||
margin-top: var(--espace-m);
|
|
||||||
}
|
|
||||||
#page-succes-commande .contenu__rappel-commande {
|
|
||||||
display: flex;
|
|
||||||
flex-flow: column nowrap;
|
|
||||||
border-top: 1px solid var(--couleur-noir);
|
|
||||||
}
|
|
||||||
#page-succes-commande .contenu__rappel-commande__produit {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: 1fr 1fr;
|
|
||||||
grid-template-rows: 1fr;
|
|
||||||
border-bottom: 1px solid var(--couleur-noir);
|
|
||||||
}
|
|
||||||
#page-succes-commande .contenu__rappel-commande__produit:only-child,
|
|
||||||
#page-succes-commande .contenu__rappel-commande__produit:last-of-type {
|
|
||||||
border-bottom: initial;
|
|
||||||
}
|
|
||||||
#page-succes-commande .contenu__rappel-commande__produit__illustratif {
|
|
||||||
border-right: 1px solid var(--couleur-noir);
|
|
||||||
}
|
|
||||||
#page-succes-commande .contenu__rappel-commande__produit__illustratif picture {
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
#page-succes-commande .contenu__rappel-commande__produit__illustratif img {
|
|
||||||
aspect-ratio: 1;
|
|
||||||
height: auto;
|
|
||||||
}
|
|
||||||
#page-succes-commande .contenu__rappel-commande .detail-produit {
|
|
||||||
display: flex;
|
|
||||||
flex-flow: column nowrap;
|
|
||||||
place-content: center;
|
|
||||||
width: 100%;
|
|
||||||
padding: 0 var(--espace-xl);
|
|
||||||
font-style: italic;
|
|
||||||
}
|
|
||||||
#page-succes-commande .contenu__rappel-commande .detail-produit__nom-prix {
|
|
||||||
display: flex;
|
|
||||||
flex-flow: row nowrap;
|
|
||||||
column-gap: var(--espace-xl);
|
|
||||||
justify-content: space-between;
|
|
||||||
margin-bottom: var(--espace-xs);
|
|
||||||
font-size: var(--espace-l);
|
|
||||||
line-height: var(--hauteur-ligne-moitie);
|
|
||||||
}
|
|
||||||
#page-succes-commande .contenu__rappel-commande .detail-produit__nom-prix span {
|
|
||||||
min-width: 4rem;
|
|
||||||
font-weight: 600;
|
|
||||||
font-style: initial;
|
|
||||||
text-align: right;
|
|
||||||
}
|
|
||||||
#page-succes-commande .contenu__rappel-commande .detail-produit__description {
|
|
||||||
margin-bottom: var(--espace-l);
|
|
||||||
line-height: var(--hauteur-ligne-moitie);
|
|
||||||
text-transform: lowercase;
|
|
||||||
}
|
|
||||||
@media (width <= 50rem) {
|
|
||||||
#page-succes-commande .contenu {
|
|
||||||
border-right: initial;
|
|
||||||
border-left: initial;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* # sourceMappingURL=page-succes-commande.css.map */
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
{"version":3,"sourceRoot":"","sources":["../../../src/sass/pages/page-succes-commande.scss"],"names":[],"mappings":"AAEA;EAEE;AAAA;AAAA;EAKA;EAEA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAIF;EACE;;AAEA;EACE;;AAGF;EACE;EACA;;AAMN;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAIJ;EACE;EACA;EACA;;AAMR;EACE;IACE;IACA","file":"page-succes-commande.css"}
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
#page-succes-commande{--page-hauteur-minimale:calc(100svh - var(--en-tete-hauteur) - var(--pied-de-page-hauteur) - var(--espace-xl) - 1px);--page-marges-bloc-debut:var(--en-tete-hauteur);margin-top:var(--page-marges-bloc-debut);margin-bottom:var(--espace-xl);border-bottom:1px solid var(--couleur-noir);flex-flow:column;display:flex}#page-succes-commande .contenu{width:min(50rem,100%);min-height:var(--page-hauteur-minimale);border:1px solid var(--couleur-noir);border-bottom:initial;flex-flow:column;place-items:center;margin:auto;font-style:italic;font-weight:500;display:flex}#page-succes-commande .contenu__en-tete{width:100%;padding:var(--espace-m) var(--espace-xl);color:var(--couleur-blanc);background:var(--couleur-noir)}#page-succes-commande .contenu__en-tete h2{text-transform:uppercase;width:fit-content;letter-spacing:var(--espacement-inter-lettres-etendu-l);margin:auto}#page-succes-commande .contenu__textuel{max-width:34rem;height:100%;padding:var(--espace-xl);flex-flow:column;flex:1;place-content:center;font-style:normal;display:flex}#page-succes-commande .contenu__textuel p+p{margin-top:var(--espace-m)}#page-succes-commande .contenu__rappel-commande{border-top:1px solid var(--couleur-noir);flex-flow:column;display:flex}#page-succes-commande .contenu__rappel-commande__produit{border-bottom:1px solid var(--couleur-noir);grid-template-rows:1fr;grid-template-columns:1fr 1fr;display:grid}#page-succes-commande .contenu__rappel-commande__produit:only-child,#page-succes-commande .contenu__rappel-commande__produit:last-of-type{border-bottom:initial}#page-succes-commande .contenu__rappel-commande__produit__illustratif{border-right:1px solid var(--couleur-noir)}#page-succes-commande .contenu__rappel-commande__produit__illustratif picture{overflow:hidden}#page-succes-commande .contenu__rappel-commande__produit__illustratif img{aspect-ratio:1;height:auto}#page-succes-commande .contenu__rappel-commande .detail-produit{width:100%;padding:0 var(--espace-xl);flex-flow:column;place-content:center;font-style:italic;display:flex}#page-succes-commande .contenu__rappel-commande .detail-produit__nom-prix{column-gap:var(--espace-xl);margin-bottom:var(--espace-xs);font-size:var(--espace-l);line-height:var(--hauteur-ligne-moitie);flex-flow:row;justify-content:space-between;display:flex}#page-succes-commande .contenu__rappel-commande .detail-produit__nom-prix span{min-width:4rem;font-weight:600;font-style:initial;text-align:right}#page-succes-commande .contenu__rappel-commande .detail-produit__description{margin-bottom:var(--espace-l);line-height:var(--hauteur-ligne-moitie);text-transform:lowercase}@media (width<=50rem){#page-succes-commande .contenu{border-right:initial;border-left:initial}}
|
|
||||||
|
|
@ -17,6 +17,7 @@ use Psl\Option\Option;
|
||||||
use stdClass;
|
use stdClass;
|
||||||
use Timber\Timber;
|
use Timber\Timber;
|
||||||
use WC_Product;
|
use WC_Product;
|
||||||
|
use WP_Term;
|
||||||
|
|
||||||
use function add_action;
|
use function add_action;
|
||||||
use function assert;
|
use function assert;
|
||||||
|
|
@ -40,6 +41,11 @@ if ($raw_product === null || $raw_product === false) {
|
||||||
// Assemble les données d'intérêt pour la page au sein d'une Classe.
|
// Assemble les données d'intérêt pour la page au sein d'une Classe.
|
||||||
$product = Product::from_wc_product($raw_product);
|
$product = Product::from_wc_product($raw_product);
|
||||||
|
|
||||||
|
// echo("<pre>");
|
||||||
|
// print_r($raw_product->get_data());
|
||||||
|
// echo("</pre>");
|
||||||
|
// exit;
|
||||||
|
|
||||||
/** @var int $maximum_price Le prix de la Variation la plus chère */
|
/** @var int $maximum_price Le prix de la Variation la plus chère */
|
||||||
$maximum_price = collect($product->variations)->max('price');
|
$maximum_price = collect($product->variations)->max('price');
|
||||||
|
|
||||||
|
|
@ -64,8 +70,8 @@ $product_tags = $raw_product->get_tag_ids()
|
||||||
id : $id,
|
id : $id,
|
||||||
taxonomy: 'product_tag',
|
taxonomy: 'product_tag',
|
||||||
)))
|
)))
|
||||||
|> (static fn(/** @var list<Option<WC_Term>> */ $tags) => Arr::reject($tags, static fn($tag) => $tag->isNone()))
|
|> (static fn(/** @var list<Option<WP_Term>> */ $tags) => Arr::reject($tags, static fn($tag) => $tag->isNone()))
|
||||||
|> (static fn(/** @var list<Option<WC_Term>> */ $tags) => Arr::map($tags, static fn($tag) => $tag->unwrap()));
|
|> (static fn(/** @var list<Option<WP_Term>> */ $tags) => Arr::map($tags, static fn($tag) => $tag->unwrap()));
|
||||||
$tags = get_terms(['taxonomy' => 'product_tag', 'hide_empty' => true]);
|
$tags = get_terms(['taxonomy' => 'product_tag', 'hide_empty' => true]);
|
||||||
|
|
||||||
// Injecte les états initiaux des données du Produit sous forme de JSON dans le contexte.
|
// Injecte les états initiaux des données du Produit sous forme de JSON dans le contexte.
|
||||||
|
|
|
||||||
|
|
@ -115,7 +115,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* * Bouton du compte de Produits dans le Panier. */
|
/* Bouton du compte de Produits dans le Panier. */
|
||||||
.compte-panier {
|
.compte-panier {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-flow: row nowrap;
|
flex-flow: row nowrap;
|
||||||
|
|
@ -123,13 +123,7 @@
|
||||||
place-items: center;
|
place-items: center;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
|
||||||
&[disabled] {
|
/* TODO: Utiliser un background sur .compte-panier pour varier l'apparence du bouton */
|
||||||
background: var(--arriere-plan-points);
|
|
||||||
|
|
||||||
a:hover, a:active, a:focus-within {
|
|
||||||
border: 1px solid var(--couleur-noir);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
a {
|
a {
|
||||||
padding-block: var(--espace-2xs);
|
padding-block: var(--espace-2xs);
|
||||||
|
|
@ -141,14 +135,19 @@
|
||||||
background: var(--couleur-gris-fond);
|
background: var(--couleur-gris-fond);
|
||||||
}
|
}
|
||||||
|
|
||||||
&:hover, &:focus-within {
|
&:focus-visible, &:focus-within {
|
||||||
|
background: var(--arriere-plan-points);
|
||||||
|
outline-color: var(--couleur-noir);
|
||||||
|
}
|
||||||
|
&:active {
|
||||||
color: var(--couleur-blanc);
|
color: var(--couleur-blanc);
|
||||||
background: var(--couleur-gris-fonce-fond);
|
background: var(--arriere-plan-points);
|
||||||
}
|
}
|
||||||
|
|
||||||
&:active {
|
@media (hover: hover) {
|
||||||
color: var(--couleur-noir);
|
&:hover {
|
||||||
background: var(--arriere-plan-points);
|
background: var(--arriere-plan-points);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ const ProductPageRuntime = ManagedRuntime.make(
|
||||||
pipe(
|
pipe(
|
||||||
ProductPageDOM.Live,
|
ProductPageDOM.Live,
|
||||||
Layer.provideMerge(ProductPageMessages.Live),
|
Layer.provideMerge(ProductPageMessages.Live),
|
||||||
Layer.provide(ProductPageElements.Live),
|
Layer.provideMerge(ProductPageElements.Live),
|
||||||
Layer.provide(APIClient.Live),
|
Layer.provide(APIClient.Live),
|
||||||
Layer.tapError(error => Console.error("ProductPageRuntime", "Impossible de créer le Layer :", error)),
|
Layer.tapError(error => Console.error("ProductPageRuntime", "Impossible de créer le Layer :", error)),
|
||||||
),
|
),
|
||||||
|
|
|
||||||
|
|
@ -5,13 +5,7 @@ import { Array as FxArray, Context, Effect, HashMap, Layer, Option, pipe } from
|
||||||
import type { DetailEnsemble } from "./types.d.ts";
|
import type { DetailEnsemble } from "./types.d.ts";
|
||||||
|
|
||||||
import { getAllSelectorFromDocument, getFirstSelectorFromDocument } from "../../scripts-effect/lib/dom.ts";
|
import { getAllSelectorFromDocument, getFirstSelectorFromDocument } from "../../scripts-effect/lib/dom.ts";
|
||||||
import {
|
import { ATTRIBUT_ARIA_CONTROLS, DOM_BOUTON_AJOUT_PANIER, DOM_BOUTONS_ACCORDEON, DOM_CONTENUS_ACCORDEON, DOM_PRIX_PRODUIT } from "../constantes/dom.ts";
|
||||||
ATTRIBUT_ARIA_CONTROLS,
|
|
||||||
DOM_BOUTON_AJOUT_PANIER,
|
|
||||||
DOM_BOUTONS_ACCORDEON,
|
|
||||||
DOM_CONTENUS_ACCORDEON,
|
|
||||||
DOM_PRIX_PRODUIT,
|
|
||||||
} from "../constantes/dom.ts";
|
|
||||||
import { IncoherentDOMError } from "./errors.ts";
|
import { IncoherentDOMError } from "./errors.ts";
|
||||||
|
|
||||||
class ProductPageElements
|
class ProductPageElements
|
||||||
|
|
@ -25,6 +19,8 @@ class ProductPageElements
|
||||||
|
|
||||||
const PageStatesRawJson = yield* getFirstSelectorFromDocument<HTMLScriptElement>("#page-states");
|
const PageStatesRawJson = yield* getFirstSelectorFromDocument<HTMLScriptElement>("#page-states");
|
||||||
|
|
||||||
|
const ContextRawJson = yield* getFirstSelectorFromDocument<HTMLScriptElement>("#product-json");
|
||||||
|
|
||||||
const ProductPrice = yield* getFirstSelectorFromDocument<HTMLParagraphElement>(DOM_PRIX_PRODUIT);
|
const ProductPrice = yield* getFirstSelectorFromDocument<HTMLParagraphElement>(DOM_PRIX_PRODUIT);
|
||||||
|
|
||||||
const VariationChoiceForm = yield* getFirstSelectorFromDocument<HTMLFormElement>("#variation-choice");
|
const VariationChoiceForm = yield* getFirstSelectorFromDocument<HTMLFormElement>("#variation-choice");
|
||||||
|
|
@ -51,6 +47,7 @@ class ProductPageElements
|
||||||
|
|
||||||
return {
|
return {
|
||||||
AddToCartButton,
|
AddToCartButton,
|
||||||
|
ContextRawJson,
|
||||||
Details,
|
Details,
|
||||||
DetailsButtons,
|
DetailsButtons,
|
||||||
DetailsContents,
|
DetailsContents,
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
// Scripts pour la Page Produit
|
// Scripts pour la Page Produit
|
||||||
|
|
||||||
import { Cause, Console, Effect } from "effect";
|
import { Cause, Console, Effect, pipe } from "effect";
|
||||||
import ProductPageRuntime from "./page-produit/runtime.ts";
|
import ProductPageRuntime from "./page-produit/runtime.ts";
|
||||||
import ProductPageDOM from "./page-produit/service-dom.ts";
|
import ProductPageDOM from "./page-produit/service-dom.ts";
|
||||||
import ProductPageMessages from "./page-produit/service-messages.ts";
|
import ProductPageMessages from "./page-produit/service-messages.ts";
|
||||||
|
|
@ -10,26 +10,22 @@ document.addEventListener("DOMContentLoaded", (): void => {
|
||||||
const DOM = yield* ProductPageDOM;
|
const DOM = yield* ProductPageDOM;
|
||||||
const Messages = yield* ProductPageMessages;
|
const Messages = yield* ProductPageMessages;
|
||||||
|
|
||||||
const effects = Effect.all(
|
// yield* Effect.forkChild(Effect.gen(function*() {
|
||||||
[
|
// yield* Effect.log(JSON.parse(Elements.ContextRawJson.textContent));
|
||||||
|
// }));
|
||||||
|
|
||||||
|
yield* pipe(
|
||||||
|
Effect.all([
|
||||||
DOM.initAddToCartButtonInitialState(),
|
DOM.initAddToCartButtonInitialState(),
|
||||||
DOM.initAddToCartButtonUpdates(),
|
DOM.initAddToCartButtonUpdates(),
|
||||||
DOM.initAddToCartButtonClicks(),
|
DOM.initAddToCartButtonClicks(),
|
||||||
DOM.initDetailInteractions(),
|
DOM.initDetailInteractions(),
|
||||||
DOM.initPriceUpdatesOnVariationChange(),
|
DOM.initPriceUpdatesOnVariationChange(),
|
||||||
Messages.initAddToCartButtonUpdates(),
|
Messages.initAddToCartButtonUpdates(),
|
||||||
],
|
], { concurrency: "unbounded" }),
|
||||||
{
|
Effect.tapCause(cause => Console.error(Cause.pretty(cause))),
|
||||||
concurrency: "unbounded",
|
|
||||||
},
|
|
||||||
);
|
);
|
||||||
|
|
||||||
yield* effects.pipe(Effect.tapCause(cause => Console.error(Cause.pretty(cause))));
|
|
||||||
}).pipe(ProductPageRuntime.runFork);
|
}).pipe(ProductPageRuntime.runFork);
|
||||||
|
|
||||||
document.querySelector("#cart-error button").addEventListener("click", (): void => {
|
|
||||||
document.querySelector("#cart-error").close();
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// const ajouteProduitAuPanier = (event: MouseEvent): void => {
|
// const ajouteProduitAuPanier = (event: MouseEvent): void => {
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,14 @@
|
||||||
<header id="en-tete">
|
<header id="en-tete">
|
||||||
<div class="logo">
|
<div class="logo">
|
||||||
<img
|
<a
|
||||||
alt="Haiku Atelier's Logo" decoding="async"
|
aria-label="Go to the Shop" href="/shop"
|
||||||
height="77" loading="eager"
|
title="Go to the Shop"
|
||||||
src="{{ site.theme.link }}/assets/img/logos/logo-v2-text.svg" width="307"
|
>
|
||||||
/>
|
<img
|
||||||
|
alt="Haiku Atelier's Logo" height="77"
|
||||||
|
src="{{ site.theme.link }}/assets/img/logos/logo-v2-text.svg" width="307"
|
||||||
|
/>
|
||||||
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{# TODO: Utiliser un Menu WordPress ? #}
|
{# TODO: Utiliser un Menu WordPress ? #}
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 9 KiB |
|
Before Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 398 KiB |
|
Before Width: | Height: | Size: 48 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 350 KiB |
|
Before Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 285 KiB |
|
Before Width: | Height: | Size: 6.5 KiB |
|
Before Width: | Height: | Size: 278 KiB |
|
Before Width: | Height: | Size: 8.5 KiB |
|
Before Width: | Height: | Size: 262 KiB |
|
Before Width: | Height: | Size: 7.5 KiB |
|
Before Width: | Height: | Size: 251 KiB |
|
Before Width: | Height: | Size: 9 KiB |
|
Before Width: | Height: | Size: 306 KiB |
|
Before Width: | Height: | Size: 8.3 KiB |
|
Before Width: | Height: | Size: 323 KiB |
|
Before Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 1,001 KiB |
|
Before Width: | Height: | Size: 6.2 KiB |
|
Before Width: | Height: | Size: 457 KiB |