cloudcommerce 0.22.1 → 0.22.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.editorconfig +13 -0
- package/.gitmodules +3 -0
- package/.vscode/settings.json +2 -1
- package/CHANGELOG.md +13 -0
- package/ecomplus-stores/barra-doce/.devcontainer/devcontainer.json +30 -0
- package/ecomplus-stores/barra-doce/.editorconfig +13 -0
- package/ecomplus-stores/barra-doce/.eslintrc.cjs +3 -0
- package/ecomplus-stores/barra-doce/.firebaserc +5 -0
- package/ecomplus-stores/barra-doce/.github/build-and-deploy +1 -0
- package/ecomplus-stores/barra-doce/.github/renovate.json +5 -0
- package/ecomplus-stores/barra-doce/.github/workflows/build-and-deploy.yml +36 -0
- package/ecomplus-stores/barra-doce/.github/workflows/calibreapp-image-actions.yml +23 -0
- package/ecomplus-stores/barra-doce/.gitpod.yml +12 -0
- package/ecomplus-stores/barra-doce/.nvmrc +1 -0
- package/ecomplus-stores/barra-doce/.vscode/extensions.json +8 -0
- package/ecomplus-stores/barra-doce/.vscode/launch.json +11 -0
- package/ecomplus-stores/barra-doce/.vscode/settings.json +10 -0
- package/ecomplus-stores/barra-doce/LICENSE.md +230 -0
- package/ecomplus-stores/barra-doce/README.md +31 -0
- package/ecomplus-stores/barra-doce/SETUP.md +117 -0
- package/ecomplus-stores/{iluminim/README.pt-BR.md → barra-doce/SETUP.pt-BR.md} +5 -1
- package/ecomplus-stores/barra-doce/functions/config.json +3 -0
- package/ecomplus-stores/barra-doce/functions/example.env +10 -0
- package/ecomplus-stores/barra-doce/functions/many/index.js +14 -0
- package/ecomplus-stores/barra-doce/functions/many/package.json +22 -0
- package/ecomplus-stores/barra-doce/functions/ssr/.eslintrc.cjs +6 -0
- package/ecomplus-stores/barra-doce/functions/ssr/astro.config.mjs +4 -0
- package/ecomplus-stores/barra-doce/functions/ssr/content/blog/.gitkeep +0 -0
- package/ecomplus-stores/barra-doce/functions/ssr/content/extra-pages/.gitkeep +0 -0
- package/ecomplus-stores/barra-doce/functions/ssr/content/layout.json +37 -0
- package/ecomplus-stores/barra-doce/functions/ssr/content/pages/home.json +33 -0
- package/ecomplus-stores/barra-doce/functions/ssr/content/settings.json +48 -0
- package/ecomplus-stores/barra-doce/functions/ssr/index.js +18 -0
- package/ecomplus-stores/barra-doce/functions/ssr/package.json +31 -0
- package/ecomplus-stores/barra-doce/functions/ssr/public/admin/.gitkeep +2 -0
- package/ecomplus-stores/barra-doce/functions/ssr/public/assets/.gitkeep +2 -0
- package/ecomplus-stores/barra-doce/functions/ssr/public/img/icon.png +0 -0
- package/ecomplus-stores/barra-doce/functions/ssr/public/img/large-icon.png +0 -0
- package/ecomplus-stores/barra-doce/functions/ssr/public/img/uploads/banner-forma-decora.jpg +0 -0
- package/ecomplus-stores/barra-doce/functions/ssr/public/img/uploads/banner2.webp +0 -0
- package/ecomplus-stores/barra-doce/functions/ssr/public/img/uploads/ecom-icon.png +0 -0
- package/ecomplus-stores/barra-doce/functions/ssr/public/img/uploads/headphone.webp +0 -0
- package/ecomplus-stores/barra-doce/functions/ssr/public/img/uploads/logo-barradoce.webp +0 -0
- package/ecomplus-stores/barra-doce/functions/ssr/public/img/uploads/logo.png +0 -0
- package/ecomplus-stores/barra-doce/functions/ssr/public/img/uploads/og-image.png +0 -0
- package/ecomplus-stores/barra-doce/functions/ssr/public/img/uploads/passion.webp +0 -0
- package/ecomplus-stores/barra-doce/functions/ssr/public/img/uploads/rect8589.png +0 -0
- package/ecomplus-stores/barra-doce/functions/ssr/public/img/uploads/rect859.png +0 -0
- package/ecomplus-stores/barra-doce/functions/ssr/public/img/uploads/rect89.webp +0 -0
- package/ecomplus-stores/barra-doce/functions/ssr/public/robots.txt +8 -0
- package/ecomplus-stores/barra-doce/functions/ssr/scripts/build.sh +14 -0
- package/ecomplus-stores/barra-doce/functions/ssr/src/assets/style.css +65 -0
- package/ecomplus-stores/barra-doce/functions/ssr/src/components/AccountMenu.vue +104 -0
- package/ecomplus-stores/barra-doce/functions/ssr/src/components/Banner.vue +64 -0
- package/ecomplus-stores/barra-doce/functions/ssr/src/components/BannersGrid.astro +25 -0
- package/ecomplus-stores/barra-doce/functions/ssr/src/components/CartSidebar.vue +35 -0
- package/ecomplus-stores/barra-doce/functions/ssr/src/components/HeroSlider.vue +51 -0
- package/ecomplus-stores/barra-doce/functions/ssr/src/components/PitchBar.vue +53 -0
- package/ecomplus-stores/barra-doce/functions/ssr/src/components/Prices.vue +96 -0
- package/ecomplus-stores/barra-doce/functions/ssr/src/components/ProductCard.vue +117 -0
- package/ecomplus-stores/barra-doce/functions/ssr/src/components/ProductShelf.vue +60 -0
- package/ecomplus-stores/barra-doce/functions/ssr/src/components/SearchModal.vue +6 -0
- package/ecomplus-stores/barra-doce/functions/ssr/src/components/ShopHeader.vue +136 -0
- package/ecomplus-stores/barra-doce/functions/ssr/src/components/ShopHeaderMenu.vue +58 -0
- package/ecomplus-stores/barra-doce/functions/ssr/src/components/ShopHeaderSubmenu.vue +88 -0
- package/ecomplus-stores/barra-doce/functions/ssr/src/components/ShopSidenav.vue +61 -0
- package/ecomplus-stores/barra-doce/functions/ssr/src/components/ShopSidenavCategory.vue +80 -0
- package/ecomplus-stores/barra-doce/functions/ssr/src/env.d.ts +13 -0
- package/ecomplus-stores/barra-doce/functions/ssr/src/layouts/Base.astro +15 -0
- package/ecomplus-stores/barra-doce/functions/ssr/src/layouts/Checkout.astro +0 -0
- package/ecomplus-stores/barra-doce/functions/ssr/src/layouts/PageHeader.astro +38 -0
- package/ecomplus-stores/barra-doce/functions/ssr/src/main/Fallback.astro +10 -0
- package/ecomplus-stores/barra-doce/functions/ssr/src/main/Home.astro +29 -0
- package/ecomplus-stores/barra-doce/functions/ssr/src/main/Sections.astro +29 -0
- package/ecomplus-stores/barra-doce/functions/ssr/src/main/Wildcard.astro +18 -0
- package/ecomplus-stores/barra-doce/functions/ssr/src/pages/[...slug].astro +40 -0
- package/ecomplus-stores/barra-doce/functions/ssr/src/pages/_vue.ts +3 -0
- package/ecomplus-stores/barra-doce/functions/ssr/src/pages/app/account.astro +0 -0
- package/ecomplus-stores/barra-doce/functions/ssr/src/pages/app/index.astro +0 -0
- package/ecomplus-stores/barra-doce/functions/ssr/src/pages/fallback.astro +25 -0
- package/ecomplus-stores/barra-doce/functions/ssr/src/pages/index.astro +35 -0
- package/ecomplus-stores/barra-doce/functions/ssr/src/scripts/InlineScripts.astro +10 -0
- package/ecomplus-stores/barra-doce/functions/ssr/tailwind.config.cjs +19 -0
- package/ecomplus-stores/barra-doce/functions/ssr/tsconfig.json +12 -0
- package/ecomplus-stores/barra-doce/functions/ssr/uno.config.cjs +5 -0
- package/ecomplus-stores/barra-doce/functions/with-apps/index.js +12 -0
- package/ecomplus-stores/barra-doce/functions/with-apps/package.json +22 -0
- package/ecomplus-stores/barra-doce/package.json +28 -0
- package/ecomplus-stores/barra-doce/scripts/install.sh +14 -0
- package/ecomplus-stores/iluminim/.editorconfig +13 -0
- package/ecomplus-stores/iluminim/README.md +11 -93
- package/ecomplus-stores/iluminim/SETUP.md +117 -0
- package/ecomplus-stores/iluminim/SETUP.pt-BR.md +117 -0
- package/ecomplus-stores/iluminim/functions/many/package.json +3 -3
- package/ecomplus-stores/iluminim/functions/ssr/package.json +6 -6
- package/ecomplus-stores/iluminim/functions/ssr/src/components/ShopHeaderSubmenu.vue +1 -1
- package/ecomplus-stores/iluminim/functions/ssr/src/components/ShopSidenav.vue +2 -2
- package/ecomplus-stores/iluminim/functions/ssr/src/components/ShopSidenavCategory.vue +4 -2
- package/ecomplus-stores/iluminim/functions/ssr/src/layouts/PageHeader.astro +6 -1
- package/ecomplus-stores/iluminim/functions/with-apps/package.json +3 -3
- package/ecomplus-stores/iluminim/package.json +1 -1
- package/package.json +1 -1
- package/packages/api/package.json +1 -1
- package/packages/apps/affilate-program/package.json +1 -1
- package/packages/apps/correios/package.json +1 -1
- package/packages/apps/custom-payment/package.json +1 -1
- package/packages/apps/custom-shipping/package.json +1 -1
- package/packages/apps/datafrete/package.json +1 -1
- package/packages/apps/discounts/package.json +1 -1
- package/packages/apps/emails/package.json +1 -1
- package/packages/apps/fb-conversions/package.json +1 -1
- package/packages/apps/flash-courier/package.json +1 -1
- package/packages/apps/frenet/package.json +1 -1
- package/packages/apps/galaxpay/package.json +1 -1
- package/packages/apps/google-analytics/package.json +1 -1
- package/packages/apps/jadlog/package.json +1 -1
- package/packages/apps/loyalty-points/package.json +1 -1
- package/packages/apps/melhor-envio/package.json +1 -1
- package/packages/apps/mercadopago/package.json +1 -1
- package/packages/apps/pagarme/package.json +1 -1
- package/packages/apps/paghiper/package.json +1 -1
- package/packages/apps/pix/package.json +1 -1
- package/packages/apps/tiny-erp/package.json +1 -1
- package/packages/apps/webhooks/package.json +1 -1
- package/packages/cli/package.json +1 -1
- package/packages/config/package.json +1 -1
- package/packages/emails/package.json +1 -1
- package/packages/events/package.json +1 -1
- package/packages/feeds/package.json +1 -1
- package/packages/firebase/package.json +1 -1
- package/packages/i18n/package.json +1 -1
- package/packages/modules/package.json +1 -1
- package/packages/passport/package.json +1 -1
- package/packages/ssr/package.json +1 -1
- package/packages/storefront/dist/client/_astro/HeroSlider.cea1f361.js +1 -0
- package/packages/storefront/dist/client/_astro/{ProductShelf.9e290480.js → ProductShelf.35614736.js} +1 -1
- package/packages/storefront/dist/client/_astro/ShopHeader.dbe9c1f1.js +4 -0
- package/packages/storefront/dist/client/_astro/{_...slug_.2f4f6929.css → _...slug_.c13e0486.css} +1 -1
- package/packages/storefront/dist/client/sw.js +1 -1
- package/packages/storefront/dist/server/chunks/{_...d496b072.mjs → _...fac94758.mjs} +2 -2
- package/packages/storefront/dist/server/chunks/{account@_@astro.1b311a3d.mjs → account@_@astro.460623ee.mjs} +1 -1
- package/packages/storefront/dist/server/chunks/{endpoint@_@js.631ff6c5.mjs → endpoint@_@js.35380ea5.mjs} +2 -2
- package/packages/storefront/dist/server/chunks/{fallback@_@astro.12cf85ba.mjs → fallback@_@astro.dbc26d2d.mjs} +2 -2
- package/packages/storefront/dist/server/chunks/{index@_@astro.a20d91aa.mjs → index@_@astro.c91e679e.mjs} +2 -2
- package/packages/storefront/dist/server/chunks/{index@_@astro.69eb5e8a.mjs → index@_@astro.fec107b9.mjs} +2 -2
- package/packages/storefront/dist/server/chunks/pages/{_...slug_.astro.c93fc36d.mjs → _...slug_.astro.2e2d4770.mjs} +80 -38
- package/packages/storefront/dist/server/chunks/pages/{endpoint.js.630b1212.mjs → endpoint.js.6f0f4ede.mjs} +1 -1
- package/packages/storefront/dist/server/chunks/pages/{fallback.astro.58c7e581.mjs → fallback.astro.fc8bc7e7.mjs} +1 -1
- package/packages/storefront/dist/server/chunks/pages/{index.astro.6efe85be.mjs → index.astro.03adcc55.mjs} +5 -5
- package/packages/storefront/dist/server/entry.mjs +8 -8
- package/packages/storefront/dist/server/renderers.mjs +1 -1
- package/packages/storefront/package.json +1 -1
- package/packages/storefront/src/lib/$storefront.d.ts +1 -0
- package/packages/storefront/src/lib/components/SharedData.astro +13 -0
- package/packages/storefront/src/lib/composables/use-prices.ts +1 -1
- package/packages/storefront/src/lib/composables/use-shop-header-submenu.ts +10 -1
- package/packages/storefront/src/lib/composables/use-shop-header.ts +13 -13
- package/packages/storefront/src/lib/layouts/BaseHead.astro +1 -1
- package/packages/storefront/src/lib/layouts/use-page-header.ts +14 -2
- package/packages/storefront/src/lib/ssr-context.ts +1 -0
- package/packages/types/package.json +1 -1
- package/pnpm-workspace.yaml +2 -0
- package/packages/storefront/dist/client/_astro/HeroSlider.0890631f.js +0 -1
- package/packages/storefront/dist/client/_astro/ShopHeader.82ae97a5.js +0 -4
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "barra-doce-many",
|
|
3
|
+
"private": true,
|
|
4
|
+
"type": "module",
|
|
5
|
+
"scripts": {
|
|
6
|
+
"build": "echo '>> Run build from repository root'",
|
|
7
|
+
"serve": "firebase emulators:start --only functions",
|
|
8
|
+
"shell": "firebase functions:shell",
|
|
9
|
+
"start": "npm run shell",
|
|
10
|
+
"deploy": "firebase deploy --only functions",
|
|
11
|
+
"logs": "firebase functions:log"
|
|
12
|
+
},
|
|
13
|
+
"engines": {
|
|
14
|
+
"node": "18"
|
|
15
|
+
},
|
|
16
|
+
"main": "index.js",
|
|
17
|
+
"dependencies": {
|
|
18
|
+
"@cloudcommerce/feeds": "^0.22.1",
|
|
19
|
+
"@cloudcommerce/firebase": "^0.22.1",
|
|
20
|
+
"@cloudcommerce/passport": "^0.22.1"
|
|
21
|
+
}
|
|
22
|
+
}
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"metatags": {
|
|
3
|
+
"og_image": "",
|
|
4
|
+
"fb_app_id": "",
|
|
5
|
+
"twitter_username": ""
|
|
6
|
+
},
|
|
7
|
+
"custom_code": {
|
|
8
|
+
"css": "",
|
|
9
|
+
"html_head": "",
|
|
10
|
+
"html_body": ""
|
|
11
|
+
},
|
|
12
|
+
"header": {
|
|
13
|
+
"pitch_bar": [
|
|
14
|
+
{
|
|
15
|
+
"href": "",
|
|
16
|
+
"html": "<d-md>Ganhe tempo: </d-md>Compre online e retire <d-md>pessoalmente</d-md> na <b>loja em Moema</b>, SP"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"href": "",
|
|
20
|
+
"html": "<b>Frete grátis</b> <d-md>para todo Brasil</d-md> a partir de {free_shipping_from_value}"
|
|
21
|
+
}
|
|
22
|
+
],
|
|
23
|
+
"inline_menu_categories": {
|
|
24
|
+
"featured": [],
|
|
25
|
+
"random": 7
|
|
26
|
+
},
|
|
27
|
+
"alphabetical_sort_submenu": false
|
|
28
|
+
},
|
|
29
|
+
"service_links": [
|
|
30
|
+
{
|
|
31
|
+
"title": "Fale conosco",
|
|
32
|
+
"href": "/pages/contato"
|
|
33
|
+
}
|
|
34
|
+
],
|
|
35
|
+
"footer": {
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"meta_title": "",
|
|
3
|
+
"meta_description": "",
|
|
4
|
+
"hero": {
|
|
5
|
+
"autoplay": 9000,
|
|
6
|
+
"slides": [
|
|
7
|
+
{
|
|
8
|
+
"start": "",
|
|
9
|
+
"end": "",
|
|
10
|
+
"alt": "FORMAS DE TABLETES | Diversos modelos em diversos materiais | A partir de R$7,90",
|
|
11
|
+
"img": "/img/uploads/banner-forma-decora.jpg",
|
|
12
|
+
"mobile_img": "",
|
|
13
|
+
"href": "/categoria/formas-de-barra-e-tablete-de-chocolate",
|
|
14
|
+
"title": "Formas de tabletes",
|
|
15
|
+
"subtitle": "Acetato, 3 partes, Polipropileno, Poliestireno, Policarbonato",
|
|
16
|
+
"button_link": "/categoria/formas-de-barra-e-tablete-de-chocolate",
|
|
17
|
+
"button_text": "A partir de R$ 7,90"
|
|
18
|
+
}
|
|
19
|
+
]
|
|
20
|
+
},
|
|
21
|
+
"sections": [
|
|
22
|
+
{
|
|
23
|
+
"type": "product-shelf",
|
|
24
|
+
"collection_id": null,
|
|
25
|
+
"sort": "-price_discount",
|
|
26
|
+
"title": "",
|
|
27
|
+
"headless": false,
|
|
28
|
+
"shuffle": false,
|
|
29
|
+
"limit": 12,
|
|
30
|
+
"page": 1
|
|
31
|
+
}
|
|
32
|
+
]
|
|
33
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"domain": "ecom2-demo.web.app",
|
|
3
|
+
"name": "E-Com Plus demoStore",
|
|
4
|
+
"description": "My PWA Shop",
|
|
5
|
+
"logo": "/img/uploads/logo-barradoce.webp",
|
|
6
|
+
"icon": "/img/uploads/ecom-icon.png",
|
|
7
|
+
"primary_color": "#f06606",
|
|
8
|
+
"email": "",
|
|
9
|
+
"phone": "",
|
|
10
|
+
"address": "",
|
|
11
|
+
"corporate_name": "",
|
|
12
|
+
"doc_number": "",
|
|
13
|
+
"lang": "pt_br",
|
|
14
|
+
"currency": "BRL",
|
|
15
|
+
"currency_symbol": "R$",
|
|
16
|
+
"country_code": "BR",
|
|
17
|
+
"whatsapp": "(31) 9 8272-1558",
|
|
18
|
+
"instagram": "https://www.instagram.com/ecomclub/",
|
|
19
|
+
"facebook": "https://www.facebook.com/ecom.clubpage/",
|
|
20
|
+
"twitter": "",
|
|
21
|
+
"youtube": "https://www.youtube.com/channel/UCBlIxK5JAub0E1EX_qHdzmA",
|
|
22
|
+
"tiktok": "",
|
|
23
|
+
"pinterest": "",
|
|
24
|
+
"modules": {
|
|
25
|
+
"list_payments": {
|
|
26
|
+
"installments_option": {
|
|
27
|
+
"max_number": 6,
|
|
28
|
+
"monthly_interest": 0,
|
|
29
|
+
"min_installment": 50
|
|
30
|
+
},
|
|
31
|
+
"discount_option": {
|
|
32
|
+
"label": null,
|
|
33
|
+
"apply_at": null,
|
|
34
|
+
"type": null,
|
|
35
|
+
"value": null
|
|
36
|
+
},
|
|
37
|
+
"loyalty_points_program": {
|
|
38
|
+
"id": null,
|
|
39
|
+
"name": null,
|
|
40
|
+
"ratio": null,
|
|
41
|
+
"earn_percentage": null
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"calculate_shipping": {
|
|
45
|
+
"free_shipping_from_value": 250
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import config from '@cloudcommerce/firebase/config';
|
|
2
|
+
// eslint-ignore-next-line import/no-unresolved
|
|
3
|
+
import { handler as renderStorefront } from './dist/server/entry.mjs';
|
|
4
|
+
import mergeConfig from './config.json' assert { type: 'json' };
|
|
5
|
+
|
|
6
|
+
config.set({
|
|
7
|
+
...mergeConfig,
|
|
8
|
+
hello: 'from store',
|
|
9
|
+
/*
|
|
10
|
+
httpsFunctionOptions: {
|
|
11
|
+
minInstances: 1,
|
|
12
|
+
},
|
|
13
|
+
*/
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
global.$renderStorefront = renderStorefront;
|
|
17
|
+
|
|
18
|
+
export * from '@cloudcommerce/ssr/firebase';
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "barra-doce-ssr",
|
|
3
|
+
"private": true,
|
|
4
|
+
"type": "module",
|
|
5
|
+
"scripts": {
|
|
6
|
+
"dev": "astro dev --host",
|
|
7
|
+
"build": "bash scripts/build.sh",
|
|
8
|
+
"build:static": "BUILD_OUTPUT=static astro build",
|
|
9
|
+
"serve": "firebase emulators:start --only functions",
|
|
10
|
+
"shell": "firebase functions:shell",
|
|
11
|
+
"start": "npm run shell",
|
|
12
|
+
"deploy": "firebase deploy --only functions",
|
|
13
|
+
"logs": "firebase functions:log"
|
|
14
|
+
},
|
|
15
|
+
"engines": {
|
|
16
|
+
"node": "18"
|
|
17
|
+
},
|
|
18
|
+
"main": "index.js",
|
|
19
|
+
"dependencies": {
|
|
20
|
+
"@cloudcommerce/api": "^0.22.1",
|
|
21
|
+
"@cloudcommerce/firebase": "^0.22.1",
|
|
22
|
+
"@cloudcommerce/ssr": "^0.22.1"
|
|
23
|
+
},
|
|
24
|
+
"devDependencies": {
|
|
25
|
+
"@cloudcommerce/i18n": "^0.22.1",
|
|
26
|
+
"@cloudcommerce/storefront": "^0.22.1",
|
|
27
|
+
"@cloudcommerce/types": "^0.22.1",
|
|
28
|
+
"@fontsource/croissant-one": "^5.0.5",
|
|
29
|
+
"@iconify-json/mingcute": "^1.1.7"
|
|
30
|
+
}
|
|
31
|
+
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# workaround for cloudcommerce pnpm monorepo
|
|
4
|
+
filename="../../../packages/storefront/scripts/build-prod.sh"
|
|
5
|
+
if [[ -f $filename ]]; then
|
|
6
|
+
sh $filename
|
|
7
|
+
elif [[ -f "../$filename" ]]; then
|
|
8
|
+
sh "../$filename"
|
|
9
|
+
else
|
|
10
|
+
echo '> npx storefront build'
|
|
11
|
+
npx storefront build
|
|
12
|
+
fi
|
|
13
|
+
|
|
14
|
+
exit 0
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
--font-brand: "Croissant One";
|
|
3
|
+
}
|
|
4
|
+
html {
|
|
5
|
+
scroll-behavior: smooth;
|
|
6
|
+
}
|
|
7
|
+
body {
|
|
8
|
+
overflow-x: hidden;
|
|
9
|
+
}
|
|
10
|
+
a, button, button > * {
|
|
11
|
+
transition: background-color var(--transition),
|
|
12
|
+
color var(--transition), border-color var(--transition),
|
|
13
|
+
opacity var(--transition), transform var(--transition-fast);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.ui-link {
|
|
17
|
+
@apply not-prose font-medium text-primary underline underline-offset-4
|
|
18
|
+
hover:text-primary-bold active:text-primary-subtle;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
[class*=ui-btn] {
|
|
22
|
+
@apply not-prose inline-block text-base font-medium px-4 py-2 rounded
|
|
23
|
+
border-2 border-transparent active:ring-2;
|
|
24
|
+
}
|
|
25
|
+
.ui-btn-sm {
|
|
26
|
+
@apply text-sm px-3 py-1.5 border-1;
|
|
27
|
+
}
|
|
28
|
+
.ui-btn-lg {
|
|
29
|
+
@apply text-lg md:text-xl font-bold px-6 py-2.5 active:ring-3;
|
|
30
|
+
}
|
|
31
|
+
.ui-btn-primary {
|
|
32
|
+
@apply primary border-primary hover:primary-bold ring-primary/30;
|
|
33
|
+
}
|
|
34
|
+
.ui-btn-secondary {
|
|
35
|
+
@apply bg-secondary-100/50 text-secondary border-secondary
|
|
36
|
+
hover:secondary ring-secondary/30;
|
|
37
|
+
}
|
|
38
|
+
.ui-btn-contrast {
|
|
39
|
+
@apply bg-white text-primary hover:bg-primary-100 ring-white/30;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.ui-text-brand, .ui-title {
|
|
43
|
+
@apply font-brand font-normal not-italic;
|
|
44
|
+
}
|
|
45
|
+
.ui-title {
|
|
46
|
+
@apply not-prose text-3xl xl:text-5xl;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
[class*=ui-badge] {
|
|
50
|
+
@apply text-center px-2.5 py-0.5 rounded-md font-semibold
|
|
51
|
+
inline-block bg-secondary-200 text-secondary-900;
|
|
52
|
+
}
|
|
53
|
+
[class*=ui-badge-pill] {
|
|
54
|
+
@apply py-0 rounded-full;
|
|
55
|
+
}
|
|
56
|
+
.ui-badge-pill-sm {
|
|
57
|
+
@apply text-xs min-w-[1rem] px-0.5;
|
|
58
|
+
}
|
|
59
|
+
.ui-badge-pill-lg {
|
|
60
|
+
@apply text-lg min-w-[1.75rem] px-2;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.ui-section {
|
|
64
|
+
@apply container mx-auto px-4 sm:px-0 my-6 md:my-8;
|
|
65
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<Menu
|
|
3
|
+
as="div"
|
|
4
|
+
class="relative text-center text-sm text-base-800"
|
|
5
|
+
v-slot="{ open }"
|
|
6
|
+
>
|
|
7
|
+
<div v-if="open">
|
|
8
|
+
<span v-once>{{ initializeFirebaseAuth() }}</span>
|
|
9
|
+
</div>
|
|
10
|
+
<MenuButton class="outline-none">
|
|
11
|
+
<slot name="button" v-bind="{ open }" />
|
|
12
|
+
</MenuButton>
|
|
13
|
+
<Fade>
|
|
14
|
+
<MenuItems class="absolute -right-8 mt-2 w-56
|
|
15
|
+
rounded shadow ring-1 ring-black/5 bg-white
|
|
16
|
+
divide-y divide-base-100 focus:outline-none">
|
|
17
|
+
<div class="p-3 text-base-600">
|
|
18
|
+
{{ `${$t.i19hello} ${customerName || $t.i19visitor}` }}
|
|
19
|
+
<AccountLink role="button" class="ui-btn-sm ui-btn-primary block my-1">
|
|
20
|
+
{{ $t.i19accessMyAccount }}
|
|
21
|
+
</AccountLink>
|
|
22
|
+
<AccountLink v-if="!isLogged" is-sign-up class="ui-link block">
|
|
23
|
+
{{ $t.i19createAnAccount }}
|
|
24
|
+
</AccountLink>
|
|
25
|
+
</div>
|
|
26
|
+
<ul class="list-none">
|
|
27
|
+
<MenuItem as="li" v-slot="{ active }">
|
|
28
|
+
<AccountLink
|
|
29
|
+
to="orders"
|
|
30
|
+
class="block p-2"
|
|
31
|
+
:class="active ? 'bg-base-100 text-primary' : null"
|
|
32
|
+
>
|
|
33
|
+
{{ $t.i19myOrders }}
|
|
34
|
+
</AccountLink>
|
|
35
|
+
</MenuItem>
|
|
36
|
+
<MenuItem as="li" v-slot="{ active }">
|
|
37
|
+
<AccountLink
|
|
38
|
+
to="favorites"
|
|
39
|
+
class="block p-2"
|
|
40
|
+
:class="active ? 'bg-base-100 text-primary' : null"
|
|
41
|
+
>
|
|
42
|
+
<i class="i-star-line mr-1"></i>
|
|
43
|
+
{{ $t.i19myFavorites }}
|
|
44
|
+
</AccountLink>
|
|
45
|
+
</MenuItem>
|
|
46
|
+
<MenuItem
|
|
47
|
+
as="li"
|
|
48
|
+
v-slot="{ active }"
|
|
49
|
+
v-for="({ title, href }, i) in serviceLinks"
|
|
50
|
+
:key="`s-${i}`"
|
|
51
|
+
>
|
|
52
|
+
<ALink
|
|
53
|
+
:href="href"
|
|
54
|
+
class="block p-2"
|
|
55
|
+
:class="active ? 'bg-base-100 text-primary' : null"
|
|
56
|
+
>
|
|
57
|
+
{{ title }}
|
|
58
|
+
</ALink>
|
|
59
|
+
</MenuItem>
|
|
60
|
+
<MenuItem as="li">
|
|
61
|
+
<div class="flex justify-center gap-2 p-2 text-base-500 text-base">
|
|
62
|
+
<span v-for="(href, network) in socialNetworks" :key="network">
|
|
63
|
+
<SocialNetworkLink :network="network" class="p-1 hover:text-primary" />
|
|
64
|
+
</span>
|
|
65
|
+
</div>
|
|
66
|
+
</MenuItem>
|
|
67
|
+
<MenuItem v-if="isLogged" as="li">
|
|
68
|
+
<button @click="logout" class="p-2 text-right text-base-800">
|
|
69
|
+
<span class="text-base-600">{{ $t.i19logout }}</span>
|
|
70
|
+
<i class="i-align-arrow-left-fill text-lg ml-1"></i>
|
|
71
|
+
</button>
|
|
72
|
+
</MenuItem>
|
|
73
|
+
</ul>
|
|
74
|
+
</MenuItems>
|
|
75
|
+
</Fade>
|
|
76
|
+
</Menu>
|
|
77
|
+
</template>
|
|
78
|
+
|
|
79
|
+
<script setup lang="ts">
|
|
80
|
+
import {
|
|
81
|
+
Menu,
|
|
82
|
+
MenuButton,
|
|
83
|
+
MenuItems,
|
|
84
|
+
MenuItem,
|
|
85
|
+
} from '@headlessui/vue';
|
|
86
|
+
import { socialNetworks } from '@@sf/server-data';
|
|
87
|
+
import {
|
|
88
|
+
customerName,
|
|
89
|
+
initializeFirebaseAuth,
|
|
90
|
+
isLogged,
|
|
91
|
+
logout,
|
|
92
|
+
} from '@@sf/state/customer-session';
|
|
93
|
+
import AccountLink from '@@sf/components/AccountLink.vue';
|
|
94
|
+
import SocialNetworkLink from '@@sf/components/SocialNetworkLink.vue';
|
|
95
|
+
|
|
96
|
+
export interface Props {
|
|
97
|
+
serviceLinks?: Array<{
|
|
98
|
+
title: string;
|
|
99
|
+
href: string;
|
|
100
|
+
}>;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
defineProps<Props>();
|
|
104
|
+
</script>
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div
|
|
3
|
+
class="mx-auto overflow-x-hidden"
|
|
4
|
+
:class="hasHeader
|
|
5
|
+
? 'grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-5 items-center'
|
|
6
|
+
: null"
|
|
7
|
+
>
|
|
8
|
+
<component
|
|
9
|
+
:is="href ? 'a-link' : 'span'"
|
|
10
|
+
:href="href"
|
|
11
|
+
:class="hasHeader
|
|
12
|
+
? 'lg:col-span-3 sm:order-last [&_img]:max-w-full sm:[&_img]:max-w-none'
|
|
13
|
+
+ ' [&_img]:aspect-video sm:[&_img]:aspect-[2.5] [&_img]:object-cover'
|
|
14
|
+
: '[&_img]:max-w-full'"
|
|
15
|
+
>
|
|
16
|
+
<slot name="picture" />
|
|
17
|
+
</component>
|
|
18
|
+
<div v-if="hasHeader" class="lg:col-span-2 p-8 lg:p-12 xl:ps-32 mb-3 md:mb-0">
|
|
19
|
+
<Component
|
|
20
|
+
v-if="parsedTitle"
|
|
21
|
+
:is="headingTag"
|
|
22
|
+
class="ui-title mt-1"
|
|
23
|
+
>
|
|
24
|
+
{{ parsedTitle }}
|
|
25
|
+
</Component>
|
|
26
|
+
<p
|
|
27
|
+
v-if="parsedSubtitle"
|
|
28
|
+
class="mt-4 md:mt-6 text-base-800 uppercase font-medium text-lg lg:text-xl"
|
|
29
|
+
>
|
|
30
|
+
{{ parsedSubtitle }}
|
|
31
|
+
</p>
|
|
32
|
+
<component
|
|
33
|
+
v-if="parsedButtonText"
|
|
34
|
+
:is="buttonLink ? 'a-link' : 'span'"
|
|
35
|
+
:href="buttonLink"
|
|
36
|
+
class="ui-btn-lg ui-btn-contrast min-w-[150px] mt-7 md:mt-10"
|
|
37
|
+
>
|
|
38
|
+
<i class="i-tag-chevron-fill mr-1"></i>
|
|
39
|
+
{{ parsedButtonText }}
|
|
40
|
+
</component>
|
|
41
|
+
</div>
|
|
42
|
+
</div>
|
|
43
|
+
</template>
|
|
44
|
+
|
|
45
|
+
<script setup lang="ts">
|
|
46
|
+
import {
|
|
47
|
+
type Props as UseBannerProps,
|
|
48
|
+
useBanner,
|
|
49
|
+
} from '@@sf/composables/use-banner';
|
|
50
|
+
|
|
51
|
+
export type Props = UseBannerProps & {
|
|
52
|
+
headingTag?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
const props = withDefaults(defineProps<Props>(), {
|
|
56
|
+
headingTag: 'h3',
|
|
57
|
+
});
|
|
58
|
+
const {
|
|
59
|
+
hasHeader,
|
|
60
|
+
parsedTitle,
|
|
61
|
+
parsedSubtitle,
|
|
62
|
+
parsedButtonText,
|
|
63
|
+
} = useBanner(props);
|
|
64
|
+
</script>
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
import type { Props as UseBannerProps } from '@@sf/composables/use-banner';
|
|
3
|
+
import BannerPictures from '@@sf/components/BannerPictures.astro';
|
|
4
|
+
import Banner from '~/components/Banner.vue';
|
|
5
|
+
|
|
6
|
+
export type Props = {
|
|
7
|
+
title?: string;
|
|
8
|
+
titleLink?: string;
|
|
9
|
+
banners: UseBannerProps[];
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
const { banners } = Astro.props;
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
<section class="ui-section">
|
|
16
|
+
<ul class="flex flex-wrap lg:flex-nowrap gap-4">
|
|
17
|
+
{banners.map((banner) => (
|
|
18
|
+
<li class="lg:flex-1 [&_img]:w-full [&_img]:object-cover">
|
|
19
|
+
<Banner {...banner}>
|
|
20
|
+
<BannerPictures {...banner} slot="picture" />
|
|
21
|
+
</Banner>
|
|
22
|
+
</li>
|
|
23
|
+
))}
|
|
24
|
+
</ul>
|
|
25
|
+
</section>
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<aside class="flex flex-col h-full">
|
|
3
|
+
<header class="px-6 py-4 flex justify-end items-center gap-3">
|
|
4
|
+
<span class="text-right text-base text-base-600 font-medium">
|
|
5
|
+
{{ $t.i19myShoppingCart }}
|
|
6
|
+
</span>
|
|
7
|
+
<span class="ui-badge-pill-lg">
|
|
8
|
+
{{ totalItems }}
|
|
9
|
+
</span>
|
|
10
|
+
</header>
|
|
11
|
+
<article class="grow bg-base-50 border-t-2 border-b-2 border-base-100">
|
|
12
|
+
<div v-if="freeShippingFromValue" class="text-sm text-center">
|
|
13
|
+
<div
|
|
14
|
+
v-if="freeShippingFromValue > shoppingCart.subtotal"
|
|
15
|
+
class="p-3 secondary-subtle"
|
|
16
|
+
>
|
|
17
|
+
{{ $t.i19add$1ToEarn.replace('$1',
|
|
18
|
+
$money(freeShippingFromValue - shoppingCart.subtotal)) }}
|
|
19
|
+
<strong class="lowercase">{{ $t.i19freeShipping }}</strong>
|
|
20
|
+
</div>
|
|
21
|
+
<div v-else class="p-3 bg-success-50 text-success-800">
|
|
22
|
+
<i class="text-success-900 i-check-fill mr-1"></i>
|
|
23
|
+
{{ $t.i19freeShippingFrom }} {{ $money(freeShippingFromValue) }}
|
|
24
|
+
</div>
|
|
25
|
+
</div>
|
|
26
|
+
</article>
|
|
27
|
+
<footer class="p-5 shadow">
|
|
28
|
+
</footer>
|
|
29
|
+
</aside>
|
|
30
|
+
</template>
|
|
31
|
+
|
|
32
|
+
<script setup lang="ts">
|
|
33
|
+
import { freeShippingFromValue } from '@@sf/state/modules-info';
|
|
34
|
+
import { shoppingCart, totalItems } from '@@sf/state/shopping-cart';
|
|
35
|
+
</script>
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<section class="relative mx-auto">
|
|
3
|
+
<Carousel :autoplay="autoplay" class="secondary-subtle [&>*]:items-center">
|
|
4
|
+
<li
|
|
5
|
+
v-for="(slide, i) in slides"
|
|
6
|
+
:key="i"
|
|
7
|
+
class="shrink-0 basis-full"
|
|
8
|
+
>
|
|
9
|
+
<Banner
|
|
10
|
+
v-bind="{ ...slide, headingTag: i === 0 ? 'h2' : 'h3' }"
|
|
11
|
+
class="w-screen max-w-screen-2xl"
|
|
12
|
+
>
|
|
13
|
+
<template #picture>
|
|
14
|
+
<slot :name="`picture-${i}`" />
|
|
15
|
+
</template>
|
|
16
|
+
</Banner>
|
|
17
|
+
</li>
|
|
18
|
+
<template #controls>
|
|
19
|
+
<div
|
|
20
|
+
v-show="slides.length > 1"
|
|
21
|
+
class="absolute z-10 bottom-5 flex justify-end items-center
|
|
22
|
+
w-screen right-5 xl:right-auto xl:max-w-screen-xl xl:left-1/2 xl:-ms-[640px]"
|
|
23
|
+
>
|
|
24
|
+
<div class="relative w-20 h-10 rounded-full
|
|
25
|
+
bg-white/50 text-primary shadow-sm ring-1 ring-black/5">
|
|
26
|
+
<CarouselControl class="w-10 h-10 rounded-full hover:bg-primary/10" is-prev>
|
|
27
|
+
<i class="i-arrow-left-line"></i>
|
|
28
|
+
</CarouselControl>
|
|
29
|
+
<CarouselControl class="w-10 h-10 rounded-full hover:bg-primary/10">
|
|
30
|
+
<i class="i-arrow-right-line"></i>
|
|
31
|
+
</CarouselControl>
|
|
32
|
+
</div>
|
|
33
|
+
</div>
|
|
34
|
+
</template>
|
|
35
|
+
</Carousel>
|
|
36
|
+
</section>
|
|
37
|
+
</template>
|
|
38
|
+
|
|
39
|
+
<script setup lang="ts">
|
|
40
|
+
import type { Props as UseBannerProps } from '@@sf/composables/use-banner';
|
|
41
|
+
import Carousel from '@@sf/components/Carousel.vue';
|
|
42
|
+
import CarouselControl from '@@sf/components/CarouselControl.vue';
|
|
43
|
+
import Banner from '~/components/Banner.vue';
|
|
44
|
+
|
|
45
|
+
export type Props = {
|
|
46
|
+
autoplay?: number;
|
|
47
|
+
slides: UseBannerProps[];
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
defineProps<Props>();
|
|
51
|
+
</script>
|