@zenky/storefront-vue 0.10.0 → 0.10.4

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.
Files changed (77) hide show
  1. package/CHANGELOG.md +105 -0
  2. package/README.md +66 -6
  3. package/dist/cart/index.d.ts +31 -2
  4. package/dist/cart/index.js +6 -9
  5. package/dist/catalog/index.d.ts +1 -11
  6. package/dist/catalog/index.js +2 -2
  7. package/dist/chunk-2CI4RW7V.js +21 -0
  8. package/dist/chunk-2CI4RW7V.js.map +1 -0
  9. package/dist/{chunk-GW2QNTAD.js → chunk-4IFPVEO7.js} +3 -113
  10. package/dist/chunk-4IFPVEO7.js.map +1 -0
  11. package/dist/{chunk-EYRCAUUP.js → chunk-E3G7NGCH.js} +2 -2
  12. package/dist/chunk-E3G7NGCH.js.map +1 -0
  13. package/dist/{chunk-IGDDWGS4.js → chunk-IVG4FQE5.js} +21 -13
  14. package/dist/chunk-IVG4FQE5.js.map +1 -0
  15. package/dist/{chunk-PJ2LEKW6.js → chunk-MZ66ARDL.js} +18 -3
  16. package/dist/chunk-MZ66ARDL.js.map +1 -0
  17. package/dist/{chunk-2OD7CLKD.js → chunk-NG7RUIWW.js} +3 -13
  18. package/dist/chunk-NG7RUIWW.js.map +1 -0
  19. package/dist/{chunk-VL3T36VM.js → chunk-NIQFYJRP.js} +53 -9
  20. package/dist/chunk-NIQFYJRP.js.map +1 -0
  21. package/dist/{chunk-AL5W5JSD.js → chunk-OTSAR32A.js} +6 -3
  22. package/dist/chunk-OTSAR32A.js.map +1 -0
  23. package/dist/{chunk-BIGTKVC6.js → chunk-SS7B2NLF.js} +3 -3
  24. package/dist/{chunk-BIGTKVC6.js.map → chunk-SS7B2NLF.js.map} +1 -1
  25. package/dist/{chunk-PWHIDGKW.js → chunk-TB5TBJ4U.js} +53 -6
  26. package/dist/chunk-TB5TBJ4U.js.map +1 -0
  27. package/dist/{chunk-4MJKN7PL.js → chunk-YREGCQSB.js} +4 -6
  28. package/dist/chunk-YREGCQSB.js.map +1 -0
  29. package/dist/{chunk-OQLU7FSR.js → chunk-YS5DXYYV.js} +228 -51
  30. package/dist/chunk-YS5DXYYV.js.map +1 -0
  31. package/dist/index.d.ts +6 -8
  32. package/dist/index.js +14 -16
  33. package/dist/order/index.d.ts +2 -0
  34. package/dist/order/index.js +2 -5
  35. package/dist/order/index.js.map +1 -1
  36. package/dist/pagination/index.js.map +1 -1
  37. package/dist/ports/index.d.ts +12 -1
  38. package/dist/ports/index.js +1 -1
  39. package/dist/products/index.js +3 -4
  40. package/dist/promotions/index.js +3 -5
  41. package/dist/seo/index.d.ts +5 -11
  42. package/dist/seo/index.js +17 -27
  43. package/dist/seo/index.js.map +1 -1
  44. package/dist/snippets/index.d.ts +21 -15
  45. package/dist/snippets/index.js +1 -1
  46. package/dist/stores/index.d.ts +1 -1
  47. package/dist/stores/index.js +3 -5
  48. package/dist/theme/index.d.ts +1 -11
  49. package/dist/theme/index.js +1 -1
  50. package/dist/utils/index.d.ts +28 -5
  51. package/dist/utils/index.js +1 -1
  52. package/dist/website-settings/index.d.ts +1 -1
  53. package/docs/consumer-setup.md +279 -0
  54. package/docs/ports.md +148 -0
  55. package/docs/releasing.md +53 -0
  56. package/package.json +27 -8
  57. package/dist/chunk-2OD7CLKD.js.map +0 -1
  58. package/dist/chunk-4MJKN7PL.js.map +0 -1
  59. package/dist/chunk-AL5W5JSD.js.map +0 -1
  60. package/dist/chunk-BWUKMWHL.js +0 -45
  61. package/dist/chunk-BWUKMWHL.js.map +0 -1
  62. package/dist/chunk-DKWDKVXQ.js +0 -91
  63. package/dist/chunk-DKWDKVXQ.js.map +0 -1
  64. package/dist/chunk-EYRCAUUP.js.map +0 -1
  65. package/dist/chunk-GW2QNTAD.js.map +0 -1
  66. package/dist/chunk-IGDDWGS4.js.map +0 -1
  67. package/dist/chunk-OQLU7FSR.js.map +0 -1
  68. package/dist/chunk-PJ2LEKW6.js.map +0 -1
  69. package/dist/chunk-PWHIDGKW.js.map +0 -1
  70. package/dist/chunk-V3VVDQIR.js +0 -27
  71. package/dist/chunk-V3VVDQIR.js.map +0 -1
  72. package/dist/chunk-VL3T36VM.js.map +0 -1
  73. package/dist/layout/index.d.ts +0 -54
  74. package/dist/layout/index.js +0 -102
  75. package/dist/layout/index.js.map +0 -1
  76. package/dist/schedule-Dd3zwHEb.d.ts +0 -27
  77. package/dist/snippets-BC5bkSjm.d.ts +0 -23
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/stores/order-settings.ts","../src/stores/cart.ts"],"names":["defineStore","ref","raw","computed"],"mappings":"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","file":"chunk-VL3T36VM.js","sourcesContent":["import { DeliveryMethod } from '@zenky/storefront-api'\nimport { defineStore } from 'pinia'\nimport { computed, ref, type ComputedRef, type Ref } from 'vue'\n\nimport type { City, Stock } from '@zenky/storefront-api'\n\nimport { useRuntime } from '../ports/runtime'\n\n// Ключи совпадают с прежними CookieKey.* — чтобы не потерять сохранённые настройки.\nconst KEY_DELIVERY_METHOD = 'zenky_delivery_method'\nconst KEY_ON_PREMISE_TABLE = 'zenky_on_premise_table'\nconst KEY_SELECTED_STOCK_ID = 'zenky_selected_stock_id'\nconst KEY_SELECTED_ADDRESS = 'zenky_selected_address'\nconst KEY_SELECTED_ADDRESS_ID = 'zenky_selected_address_id'\nconst KEY_SELECTED_ADDRESS_NAME = 'zenky_selected_address_name'\n\nconst VALID_DELIVERY_METHODS = new Set<string>(Object.values(DeliveryMethod))\n\nexport interface OrderSettingsStore {\n deliveryMethod: Ref<DeliveryMethod>\n onPremiseTable: Ref<string | null>\n selectedStock: Ref<Stock | null>\n selectedAddress: Ref<string | null>\n selectedAddressId: Ref<string | null>\n selectedAddressName: Ref<string | null>\n setDeliveryMethod: (method: DeliveryMethod) => void\n setOnPremiseTable: (table: string | null) => void\n setSelectedStock: (stock: Stock | null) => void\n setSelectedAddress: (\n address: string | null,\n addressId?: string | null,\n addressName?: string | null\n ) => void\n validateDeliveryMethod: (availableMethods: DeliveryMethod[]) => void\n restoreFromCookies: (city: City) => void\n isDelivery: ComputedRef<boolean>\n isPickup: ComputedRef<boolean>\n isOnPremise: ComputedRef<boolean>\n needsAddress: ComputedRef<boolean>\n needsStock: ComputedRef<boolean>\n needsTable: ComputedRef<boolean>\n}\n\nexport const useOrderSettingsStore = defineStore('zenky-order-settings', (): OrderSettingsStore => {\n const { storage } = useRuntime()\n\n const deliveryMethod = ref<DeliveryMethod>(DeliveryMethod.Delivery)\n const onPremiseTable = ref<string | null>(null)\n const selectedStock = ref<Stock | null>(null)\n const selectedAddress = ref<string | null>(null)\n const selectedAddressId = ref<string | null>(null)\n const selectedAddressName = ref<string | null>(null)\n\n function setDeliveryMethod(method: DeliveryMethod): void {\n deliveryMethod.value = method\n storage.set(KEY_DELIVERY_METHOD, method)\n }\n\n function setOnPremiseTable(table: string | null): void {\n onPremiseTable.value = table\n if (table) storage.set(KEY_ON_PREMISE_TABLE, table)\n else storage.remove(KEY_ON_PREMISE_TABLE)\n }\n\n function setSelectedStock(stock: Stock | null): void {\n selectedStock.value = stock\n if (stock) storage.set(KEY_SELECTED_STOCK_ID, stock.id)\n else storage.remove(KEY_SELECTED_STOCK_ID)\n }\n\n function setSelectedAddress(\n address: string | null,\n addressId?: string | null,\n addressName?: string | null\n ): void {\n selectedAddress.value = address\n selectedAddressId.value = addressId ?? null\n selectedAddressName.value = addressName ?? null\n writeOrRemove(KEY_SELECTED_ADDRESS, address)\n writeOrRemove(KEY_SELECTED_ADDRESS_ID, addressId ?? null)\n writeOrRemove(KEY_SELECTED_ADDRESS_NAME, addressName ?? null)\n }\n\n function writeOrRemove(key: string, value: string | null): void {\n if (value) storage.set(key, value)\n else storage.remove(key)\n }\n\n /** Если текущий метод не входит в доступные — переключить на первый доступный. */\n function validateDeliveryMethod(availableMethods: DeliveryMethod[]): void {\n const first = availableMethods[0]\n if (!first) return\n\n if (!availableMethods.includes(deliveryMethod.value)) {\n deliveryMethod.value = first\n storage.set(KEY_DELIVERY_METHOD, first)\n }\n }\n\n /** Восстановить настройки из cookies. Вызывать после загрузки города. */\n function restoreFromCookies(city: City): void {\n const savedMethod = storage.get(KEY_DELIVERY_METHOD)\n if (savedMethod && VALID_DELIVERY_METHODS.has(savedMethod)) {\n deliveryMethod.value = savedMethod as DeliveryMethod\n }\n\n const savedStockId = storage.get(KEY_SELECTED_STOCK_ID)\n const stocks = city.stocks ?? []\n if (savedStockId && stocks.length) {\n const stock = stocks.find((s) => s.id === savedStockId) ?? null\n selectedStock.value = stock\n if (!stock) storage.remove(KEY_SELECTED_STOCK_ID)\n }\n\n const savedAddress = storage.get(KEY_SELECTED_ADDRESS)\n if (savedAddress) selectedAddress.value = savedAddress\n\n const savedAddressId = storage.get(KEY_SELECTED_ADDRESS_ID)\n if (savedAddressId) selectedAddressId.value = savedAddressId\n\n const savedAddressName = storage.get(KEY_SELECTED_ADDRESS_NAME)\n if (savedAddressName) selectedAddressName.value = savedAddressName\n\n const savedTable = storage.get(KEY_ON_PREMISE_TABLE)\n if (savedTable) onPremiseTable.value = savedTable\n }\n\n const isDelivery = computed(() => deliveryMethod.value === DeliveryMethod.Delivery)\n const isPickup = computed(() => deliveryMethod.value === DeliveryMethod.Pickup)\n const isOnPremise = computed(() => deliveryMethod.value === DeliveryMethod.OnPremise)\n const needsAddress = computed(() => deliveryMethod.value === DeliveryMethod.Delivery)\n const needsStock = computed(\n () =>\n deliveryMethod.value === DeliveryMethod.Pickup ||\n deliveryMethod.value === DeliveryMethod.OnPremise\n )\n const needsTable = computed(() => deliveryMethod.value === DeliveryMethod.OnPremise)\n\n return {\n deliveryMethod,\n onPremiseTable,\n selectedStock,\n selectedAddress,\n selectedAddressId,\n selectedAddressName,\n setDeliveryMethod,\n setOnPremiseTable,\n setSelectedStock,\n setSelectedAddress,\n validateDeliveryMethod,\n restoreFromCookies,\n isDelivery,\n isPickup,\n isOnPremise,\n needsAddress,\n needsStock,\n needsTable,\n }\n})\n","import { PaymentMethod } from '@zenky/storefront-api'\nimport { defineStore } from 'pinia'\nimport { computed, ref, type ComputedRef, type Ref } from 'vue'\n\nimport type {\n DeliveryMethod,\n Order,\n OrderCheckoutTotal,\n OrderDeliveryMethod,\n OrderPaymentMethod,\n OrderPaymentTransaction,\n OrderProductVariant,\n OrderSettings,\n} from '@zenky/storefront-api'\n\nimport { useRuntime } from '../ports/runtime'\nimport { useOrderSettingsStore } from './order-settings'\n\n// Ключи совпадают с прежними CookieKey.* — чтобы не потерять сохранённое.\nconst KEY_COMMENT = 'zenky_order_comment'\nconst KEY_PERSONS_COUNT = 'zenky_order_persons_count'\n\nexport interface CartCredentials {\n id: string\n token: string\n}\n\n/** Намерение по бонусам (business-state) — для headless-reconciliation. */\nexport interface AppliedBonusesIntent {\n enabled: boolean\n /** null = «списать максимум». */\n desiredAmountMinor: number | null\n /** PIN-flow: бонусы сняты, нужно подтвердить заново. */\n requiresConfirmation: boolean\n}\n\nexport interface MinPriceViolation {\n remaining: number\n progress: number\n minPrice: number\n}\n\nfunction emptyBonusesIntent(): AppliedBonusesIntent {\n return { enabled: false, desiredAmountMinor: null, requiresConfirmation: false }\n}\n\nfunction parsePersonsCount(raw: string | null): number {\n const parsed = raw ? Number.parseInt(raw, 10) : NaN\n return Number.isFinite(parsed) && parsed > 0 ? parsed : 0\n}\n\nexport interface CartStore {\n order: Ref<Order | null>\n credentials: Ref<CartCredentials | null>\n loading: Ref<boolean>\n initializing: Ref<boolean>\n optimisticAdjustments: Ref<Record<string, number>>\n lineOptimistic: Ref<Record<string, number>>\n deliveryMethods: Ref<OrderDeliveryMethod[]>\n orderSettings: Ref<OrderSettings | null>\n comment: Ref<string>\n personsCount: Ref<number>\n checkoutTotal: Ref<OrderCheckoutTotal | null>\n selectedPaymentMethod: Ref<PaymentMethod | null>\n selectedPaymentBill: Ref<number | null>\n selectedCardTokenId: Ref<string | null>\n selectedSaveCard: Ref<boolean>\n bonusesIntent: Ref<AppliedBonusesIntent>\n deliveryTimeIntent: Ref<string | null>\n minPriceViolation: Ref<MinPriceViolation | null>\n setOrder: (order: Order) => void\n patchOrder: (partial: Order) => void\n setCredentials: (credentials: CartCredentials) => void\n setLoading: (value: boolean) => void\n setInitializing: (value: boolean) => void\n adjustOptimistic: (productId: string, delta: number) => void\n clearOptimistic: (productId: string) => void\n adjustLineOptimistic: (lineKey: string, delta: number) => void\n setDeliveryMethods: (methods: OrderDeliveryMethod[]) => void\n setOrderSettings: (settings: OrderSettings) => void\n setComment: (value: string) => void\n setPersonsCount: (value: number) => void\n setSelectedPaymentMethod: (method: PaymentMethod | null) => void\n setSelectedPaymentBill: (bill: number | null) => void\n setSelectedCardTokenId: (id: string | null) => void\n setSelectedSaveCard: (value: boolean) => void\n setBonusesIntentEnabled: (value: boolean) => void\n setDesiredBonusesAmount: (value: number | null) => void\n setBonusesRequiresConfirmation: (value: boolean) => void\n clearBonusesIntent: () => void\n setDeliveryTimeIntent: (value: string | null) => void\n restorePaymentSelection: (payments: OrderPaymentTransaction[]) => void\n validatePaymentSelection: () => void\n setOrderPaymentsState: (payments: OrderPaymentTransaction[]) => void\n setCheckoutTotal: (value: OrderCheckoutTotal) => void\n clearCart: () => void\n hasOrder: ComputedRef<boolean>\n hasCredentials: ComputedRef<boolean>\n variants: ComputedRef<OrderProductVariant[]>\n totalPrice: ComputedRef<number>\n itemCount: ComputedRef<number>\n availableDeliveryMethodIds: ComputedRef<DeliveryMethod[]>\n paymentMethods: ComputedRef<OrderPaymentMethod[]>\n hasBonusesApplied: ComputedRef<boolean>\n productQuantities: ComputedRef<Record<string, number>>\n}\n\nexport const useCartStore = defineStore('zenky-cart', (): CartStore => {\n const { storage } = useRuntime()\n\n const order = ref<Order | null>(null)\n const credentials = ref<CartCredentials | null>(null)\n const loading = ref(false)\n const initializing = ref(false)\n const optimisticAdjustments = ref<Record<string, number>>({})\n const lineOptimistic = ref<Record<string, number>>({})\n const deliveryMethods = ref<OrderDeliveryMethod[]>([])\n const orderSettings = ref<OrderSettings | null>(null)\n const comment = ref(storage.get(KEY_COMMENT) ?? '')\n const personsCount = ref(parsePersonsCount(storage.get(KEY_PERSONS_COUNT)))\n const checkoutTotal = ref<OrderCheckoutTotal | null>(null)\n const selectedPaymentMethod = ref<PaymentMethod | null>(null)\n const selectedPaymentBill = ref<number | null>(null)\n const selectedCardTokenId = ref<string | null>(null)\n const selectedSaveCard = ref(false)\n const bonusesIntent = ref<AppliedBonusesIntent>(emptyBonusesIntent())\n const deliveryTimeIntent = ref<string | null>(null)\n const minPriceViolation = ref<MinPriceViolation | null>(null)\n\n function restorePaymentSelection(payments: OrderPaymentTransaction[]): void {\n const restored = payments.find((p) => {\n const raw = p.method as unknown\n const id = typeof raw === 'string' ? raw : ((raw as { id?: string } | null)?.id ?? null)\n return id !== PaymentMethod.Bonuses\n })\n if (!restored) return\n\n const raw = restored.method as unknown\n const methodId = (\n typeof raw === 'string' ? raw : ((raw as { id?: PaymentMethod } | null)?.id ?? null)\n ) as PaymentMethod | null\n if (!methodId || selectedPaymentMethod.value === methodId) return\n\n selectedPaymentMethod.value = methodId\n\n const meta = restored.transaction_meta as { bill?: number | null } | null | undefined\n const billMinor = meta?.bill ?? null\n const newBill = billMinor != null && billMinor > 0 ? billMinor : null\n if (selectedPaymentBill.value !== newBill) {\n selectedPaymentBill.value = newBill\n }\n }\n\n function validatePaymentSelection(): void {\n if (!selectedPaymentMethod.value) return\n const methods = orderSettings.value?.payment_methods ?? []\n if (!methods.some((m) => m.id === selectedPaymentMethod.value)) {\n selectedPaymentMethod.value = null\n selectedPaymentBill.value = null\n }\n }\n\n function setOrder(next: Order): void {\n if (!next || !next.id || !next.token) {\n console.warn('[cart] setOrder ignored — missing id/token', next)\n return\n }\n\n order.value = next\n credentials.value = { id: next.id, token: next.token }\n\n if (Array.isArray(next.payments) && next.payments.length > 0) {\n restorePaymentSelection(next.payments as unknown as OrderPaymentTransaction[])\n }\n }\n\n function patchOrder(partial: Order): void {\n if (!partial || !partial.id || !partial.token) {\n console.warn('[cart] patchOrder ignored — missing id/token', partial)\n return\n }\n\n if (!order.value) {\n order.value = partial\n } else {\n const merged: Order = { ...order.value }\n for (const key of Object.keys(partial) as (keyof Order)[]) {\n const value = partial[key]\n if (value !== undefined) {\n ;(merged as unknown as Record<string, unknown>)[key as string] = value\n }\n }\n order.value = merged\n }\n\n credentials.value = { id: partial.id, token: partial.token }\n\n if (Array.isArray(partial.payments) && partial.payments.length > 0) {\n restorePaymentSelection(partial.payments as unknown as OrderPaymentTransaction[])\n }\n }\n\n function setCredentials(next: CartCredentials): void {\n credentials.value = next\n }\n\n function setLoading(value: boolean): void {\n loading.value = value\n }\n\n function setInitializing(value: boolean): void {\n initializing.value = value\n }\n\n function adjustOptimistic(productId: string, delta: number): void {\n const next = (optimisticAdjustments.value[productId] ?? 0) + delta\n if (next === 0) delete optimisticAdjustments.value[productId]\n else optimisticAdjustments.value[productId] = next\n }\n\n function clearOptimistic(productId: string): void {\n delete optimisticAdjustments.value[productId]\n }\n\n function adjustLineOptimistic(lineKey: string, delta: number): void {\n const next = (lineOptimistic.value[lineKey] ?? 0) + delta\n if (next === 0) delete lineOptimistic.value[lineKey]\n else lineOptimistic.value[lineKey] = next\n }\n\n function setDeliveryMethods(methods: OrderDeliveryMethod[]): void {\n deliveryMethods.value = methods\n const settingsStore = useOrderSettingsStore()\n settingsStore.validateDeliveryMethod(methods.map((m) => m.id))\n }\n\n function setOrderSettings(settings: OrderSettings): void {\n orderSettings.value = settings\n setDeliveryMethods(settings.delivery_methods)\n validatePaymentSelection()\n }\n\n function setComment(value: string): void {\n comment.value = value\n if (value) storage.set(KEY_COMMENT, value)\n else storage.remove(KEY_COMMENT)\n }\n\n function setPersonsCount(value: number): void {\n personsCount.value = value\n if (value > 0) storage.set(KEY_PERSONS_COUNT, String(value))\n else storage.remove(KEY_PERSONS_COUNT)\n }\n\n function setSelectedPaymentMethod(method: PaymentMethod | null): void {\n selectedPaymentMethod.value = method\n }\n\n function setSelectedPaymentBill(bill: number | null): void {\n selectedPaymentBill.value = bill\n }\n\n function setSelectedCardTokenId(id: string | null): void {\n selectedCardTokenId.value = id\n }\n\n function setSelectedSaveCard(value: boolean): void {\n selectedSaveCard.value = value\n }\n\n function setBonusesIntentEnabled(value: boolean): void {\n bonusesIntent.value.enabled = value\n if (!value) {\n bonusesIntent.value.desiredAmountMinor = null\n bonusesIntent.value.requiresConfirmation = false\n }\n }\n\n function setDesiredBonusesAmount(value: number | null): void {\n bonusesIntent.value.desiredAmountMinor = value\n }\n\n function setBonusesRequiresConfirmation(value: boolean): void {\n bonusesIntent.value.requiresConfirmation = value\n }\n\n function clearBonusesIntent(): void {\n bonusesIntent.value = emptyBonusesIntent()\n }\n\n function setDeliveryTimeIntent(value: string | null): void {\n deliveryTimeIntent.value = value\n }\n\n function setOrderPaymentsState(payments: OrderPaymentTransaction[]): void {\n if (order.value) {\n order.value = { ...order.value, payments } as Order\n }\n restorePaymentSelection(payments)\n }\n\n function setCheckoutTotal(value: OrderCheckoutTotal): void {\n checkoutTotal.value = value\n\n const min = value.min_price\n minPriceViolation.value =\n min != null && value.total > 0 && value.total < min\n ? {\n remaining: Math.max(0, min - value.total),\n progress: Math.min(1, value.total / min),\n minPrice: min,\n }\n : null\n }\n\n function clearCart(): void {\n order.value = null\n credentials.value = null\n checkoutTotal.value = null\n optimisticAdjustments.value = {}\n lineOptimistic.value = {}\n orderSettings.value = null\n comment.value = ''\n personsCount.value = 0\n storage.remove(KEY_COMMENT)\n storage.remove(KEY_PERSONS_COUNT)\n selectedPaymentMethod.value = null\n selectedPaymentBill.value = null\n selectedCardTokenId.value = null\n selectedSaveCard.value = false\n bonusesIntent.value = emptyBonusesIntent()\n deliveryTimeIntent.value = null\n minPriceViolation.value = null\n }\n\n const hasOrder = computed(() => order.value !== null)\n const hasCredentials = computed(() => credentials.value !== null)\n const variants = computed<OrderProductVariant[]>(() => order.value?.variants ?? [])\n const totalPrice = computed(() => order.value?.total_price ?? 0)\n const itemCount = computed(() => variants.value.reduce((sum, v) => sum + v.quantity, 0))\n const availableDeliveryMethodIds = computed<DeliveryMethod[]>(() =>\n deliveryMethods.value.map((m) => m.id)\n )\n const paymentMethods = computed<OrderPaymentMethod[]>(\n () => orderSettings.value?.payment_methods ?? []\n )\n const hasBonusesApplied = computed(() => {\n const payments = order.value?.payments ?? []\n return (payments as unknown as Array<{ method: unknown }>).some((p) => {\n const raw = p.method\n const id = typeof raw === 'string' ? raw : ((raw as { id?: string } | null)?.id ?? null)\n return id === PaymentMethod.Bonuses\n })\n })\n const productQuantities = computed<Record<string, number>>(() => {\n const map: Record<string, number> = {}\n for (const variant of variants.value) {\n const pid = variant.product_id\n map[pid] = (map[pid] ?? 0) + variant.quantity\n }\n return map\n })\n\n return {\n order,\n credentials,\n loading,\n initializing,\n optimisticAdjustments,\n lineOptimistic,\n deliveryMethods,\n orderSettings,\n comment,\n personsCount,\n checkoutTotal,\n selectedPaymentMethod,\n selectedPaymentBill,\n selectedCardTokenId,\n selectedSaveCard,\n bonusesIntent,\n deliveryTimeIntent,\n minPriceViolation,\n setOrder,\n patchOrder,\n setCredentials,\n setLoading,\n setInitializing,\n adjustOptimistic,\n clearOptimistic,\n adjustLineOptimistic,\n setDeliveryMethods,\n setOrderSettings,\n setComment,\n setPersonsCount,\n setSelectedPaymentMethod,\n setSelectedPaymentBill,\n setSelectedCardTokenId,\n setSelectedSaveCard,\n setBonusesIntentEnabled,\n setDesiredBonusesAmount,\n setBonusesRequiresConfirmation,\n clearBonusesIntent,\n setDeliveryTimeIntent,\n restorePaymentSelection,\n validatePaymentSelection,\n setOrderPaymentsState,\n setCheckoutTotal,\n clearCart,\n hasOrder,\n hasCredentials,\n variants,\n totalPrice,\n itemCount,\n availableDeliveryMethodIds,\n paymentMethods,\n hasBonusesApplied,\n productQuantities,\n }\n})\n"]}
@@ -1,54 +0,0 @@
1
- import { ComputedRef } from 'vue';
2
- import { City, Phone, Store, Stock } from '@zenky/storefront-api';
3
- import { T as TodayScheduleInfo, D as DayScheduleInfo, S as SocialLink } from '../schedule-Dd3zwHEb.js';
4
-
5
- interface LegalLink {
6
- label: string;
7
- to: string;
8
- }
9
- interface FormattedPhone {
10
- formatted: string;
11
- telLink: string;
12
- }
13
- /** App-специфичные значения для шапки (из Website Builder / app.config). */
14
- interface HeaderDataOptions {
15
- showStoreName: boolean;
16
- logoOverride: string | null;
17
- }
18
- /** App-специфичные значения для футера (logo-override + правовые ссылки фичи). */
19
- interface FooterDataOptions {
20
- logoOverride: string | null;
21
- legalLinks: ComputedRef<LegalLink[]>;
22
- }
23
- interface HeaderData {
24
- storeName: ComputedRef<string>;
25
- showStoreName: ComputedRef<boolean>;
26
- logoUrl: ComputedRef<string | null>;
27
- cityName: ComputedRef<string | null>;
28
- cities: ComputedRef<City[]>;
29
- phone: ComputedRef<Phone | null>;
30
- phoneFormatted: ComputedRef<string | null>;
31
- phoneTelLink: ComputedRef<string | null>;
32
- schedule: ComputedRef<TodayScheduleInfo | null>;
33
- scheduleHours: ComputedRef<string | null>;
34
- cartCount: ComputedRef<number>;
35
- }
36
- interface FooterData {
37
- storeName: ComputedRef<string>;
38
- logoUrl: ComputedRef<string | null>;
39
- phones: ComputedRef<FormattedPhone[]>;
40
- todaySchedule: ComputedRef<TodayScheduleInfo | null>;
41
- weeklySchedule: ComputedRef<DayScheduleInfo[]>;
42
- address: ComputedRef<string | null>;
43
- socialLinks: ComputedRef<SocialLink[]>;
44
- legalLinks: ComputedRef<LegalLink[]>;
45
- copyrightYear: ComputedRef<number>;
46
- appStoreUrl: ComputedRef<string | null>;
47
- googlePlayUrl: ComputedRef<string | null>;
48
- }
49
-
50
- declare function useHeaderData(store: ComputedRef<Store>, city: ComputedRef<City>, stock: ComputedRef<Stock | null>, options: HeaderDataOptions): HeaderData;
51
-
52
- declare function useFooterData(store: ComputedRef<Store>, city: ComputedRef<City>, stock: ComputedRef<Stock | null>, options: FooterDataOptions): FooterData;
53
-
54
- export { type FooterData, type FooterDataOptions, type FormattedPhone, type HeaderData, type HeaderDataOptions, type LegalLink, useFooterData, useHeaderData };
@@ -1,102 +0,0 @@
1
- import { formatPhoneNational, getPhoneTelLink, getTodayInfo, getWeeklySchedule, getSocialLinks } from '../chunk-PJ2LEKW6.js';
2
- import '../chunk-XUGXLJZB.js';
3
- import { useCartStore } from '../chunk-VL3T36VM.js';
4
- import '../chunk-V3VVDQIR.js';
5
- import { computed } from 'vue';
6
-
7
- function useHeaderData(store, city, stock, options) {
8
- const storeName = computed(() => store.value.name);
9
- const showStoreName = computed(() => options.showStoreName);
10
- const logoUrl = computed(() => {
11
- if (options.logoOverride) return options.logoOverride;
12
- const logo = store.value.logo;
13
- return logo?.medium?.url ?? logo?.large?.url ?? null;
14
- });
15
- const cityName = computed(() => city.value.name);
16
- const cities = computed(() => store.value.cities);
17
- const phone = computed(() => {
18
- const cityPhones = city.value.phones;
19
- if (cityPhones && cityPhones.length > 0) {
20
- return cityPhones[0] ?? null;
21
- }
22
- return store.value.phones.length > 0 ? store.value.phones[0] ?? null : null;
23
- });
24
- const phoneFormatted = computed(() => formatPhoneNational(phone.value));
25
- const phoneTelLink = computed(() => getPhoneTelLink(phone.value));
26
- const schedule = computed(
27
- () => getTodayInfo(stock.value?.schedule ?? city.value.schedule)
28
- );
29
- const scheduleHours = computed(() => {
30
- const info = schedule.value;
31
- if (!info) return null;
32
- if (info.todayHours) return info.todayHours;
33
- if (info.openingAt && info.closingAt) return `${info.openingAt}\u2013${info.closingAt}`;
34
- return null;
35
- });
36
- const cartStore = useCartStore();
37
- const cartCount = computed(() => cartStore.itemCount);
38
- return {
39
- storeName,
40
- showStoreName,
41
- logoUrl,
42
- cityName,
43
- cities,
44
- phone,
45
- phoneFormatted,
46
- phoneTelLink,
47
- schedule,
48
- scheduleHours,
49
- cartCount
50
- };
51
- }
52
- function useFooterData(store, city, stock, options) {
53
- const storeName = computed(() => store.value.name);
54
- const logoUrl = computed(() => {
55
- if (options.logoOverride) return options.logoOverride;
56
- const logo = store.value.logo;
57
- return logo?.medium?.url ?? logo?.large?.url ?? null;
58
- });
59
- const phones = computed(() => {
60
- const cityPhones = city.value.phones;
61
- const rawPhones = cityPhones && cityPhones.length > 0 ? cityPhones : store.value.phones;
62
- return rawPhones.map((p) => {
63
- const formatted = formatPhoneNational(p);
64
- const telLink = getPhoneTelLink(p);
65
- if (!formatted || !telLink) return null;
66
- return { formatted, telLink };
67
- }).filter((p) => p !== null);
68
- });
69
- const activeSchedule = computed(() => stock.value?.schedule ?? city.value.schedule);
70
- const todaySchedule = computed(() => getTodayInfo(activeSchedule.value));
71
- const weeklySchedule = computed(() => getWeeklySchedule(activeSchedule.value));
72
- const address = computed(() => {
73
- if (stock.value?.address) return stock.value.address;
74
- const cityStocks = city.value.stocks;
75
- if (cityStocks && cityStocks.length > 0) {
76
- return cityStocks[0]?.address ?? null;
77
- }
78
- return null;
79
- });
80
- const socialLinks = computed(() => getSocialLinks(store.value.links));
81
- const legalLinks = options.legalLinks;
82
- const copyrightYear = computed(() => (/* @__PURE__ */ new Date()).getFullYear());
83
- const appStoreUrl = computed(() => store.value.app_store_url);
84
- const googlePlayUrl = computed(() => store.value.google_play_url);
85
- return {
86
- storeName,
87
- logoUrl,
88
- phones,
89
- todaySchedule,
90
- weeklySchedule,
91
- address,
92
- socialLinks,
93
- legalLinks,
94
- copyrightYear,
95
- appStoreUrl,
96
- googlePlayUrl
97
- };
98
- }
99
-
100
- export { useFooterData, useHeaderData };
101
- //# sourceMappingURL=index.js.map
102
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/layout/useHeaderData.ts","../../src/layout/useFooterData.ts"],"names":["computed"],"mappings":"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","file":"index.js","sourcesContent":["import { computed, type ComputedRef } from 'vue'\n\nimport type { City, Phone, Stock, Store } from '@zenky/storefront-api'\n\nimport { formatPhoneNational, getPhoneTelLink, getTodayInfo } from '../utils'\nimport type { TodayScheduleInfo } from '../utils'\nimport { useCartStore } from '../stores/cart'\nimport type { HeaderData, HeaderDataOptions } from './types'\n\nexport function useHeaderData(\n store: ComputedRef<Store>,\n city: ComputedRef<City>,\n stock: ComputedRef<Stock | null>,\n options: HeaderDataOptions\n): HeaderData {\n const storeName = computed<string>(() => store.value.name)\n const showStoreName = computed<boolean>(() => options.showStoreName)\n\n const logoUrl = computed<string | null>(() => {\n if (options.logoOverride) return options.logoOverride\n const logo = store.value.logo\n return logo?.medium?.url ?? logo?.large?.url ?? null\n })\n\n const cityName = computed<string | null>(() => city.value.name)\n const cities = computed<City[]>(() => store.value.cities)\n\n const phone = computed<Phone | null>(() => {\n const cityPhones = city.value.phones\n\n if (cityPhones && cityPhones.length > 0) {\n return cityPhones[0] ?? null\n }\n\n return store.value.phones.length > 0 ? (store.value.phones[0] ?? null) : null\n })\n\n const phoneFormatted = computed<string | null>(() => formatPhoneNational(phone.value))\n const phoneTelLink = computed<string | null>(() => getPhoneTelLink(phone.value))\n // Режим работы привязан к складу; если склад выбран — его расписание, иначе city.schedule.\n const schedule = computed<TodayScheduleInfo | null>(() =>\n getTodayInfo(stock.value?.schedule ?? city.value.schedule)\n )\n\n const scheduleHours = computed<string | null>(() => {\n const info = schedule.value\n\n if (!info) return null\n\n if (info.todayHours) return info.todayHours\n if (info.openingAt && info.closingAt) return `${info.openingAt}–${info.closingAt}`\n\n return null\n })\n\n const cartStore = useCartStore()\n const cartCount = computed<number>(() => cartStore.itemCount)\n\n return {\n storeName,\n showStoreName,\n logoUrl,\n cityName,\n cities,\n phone,\n phoneFormatted,\n phoneTelLink,\n schedule,\n scheduleHours,\n cartCount,\n }\n}\n","import { computed, type ComputedRef } from 'vue'\n\nimport type { City, Stock, Store } from '@zenky/storefront-api'\n\nimport {\n formatPhoneNational,\n getPhoneTelLink,\n getSocialLinks,\n getTodayInfo,\n getWeeklySchedule,\n} from '../utils'\nimport type { DayScheduleInfo, SocialLink, TodayScheduleInfo } from '../utils'\nimport type { FooterData, FooterDataOptions, FormattedPhone } from './types'\n\nexport function useFooterData(\n store: ComputedRef<Store>,\n city: ComputedRef<City>,\n stock: ComputedRef<Stock | null>,\n options: FooterDataOptions\n): FooterData {\n const storeName = computed<string>(() => store.value.name)\n\n const logoUrl = computed<string | null>(() => {\n if (options.logoOverride) return options.logoOverride\n const logo = store.value.logo\n return logo?.medium?.url ?? logo?.large?.url ?? null\n })\n\n const phones = computed<FormattedPhone[]>(() => {\n const cityPhones = city.value.phones\n const rawPhones = cityPhones && cityPhones.length > 0 ? cityPhones : store.value.phones\n\n return rawPhones\n .map((p) => {\n const formatted = formatPhoneNational(p)\n const telLink = getPhoneTelLink(p)\n\n if (!formatted || !telLink) return null\n\n return { formatted, telLink }\n })\n .filter((p): p is FormattedPhone => p !== null)\n })\n\n const activeSchedule = computed(() => stock.value?.schedule ?? city.value.schedule)\n\n const todaySchedule = computed<TodayScheduleInfo | null>(() => getTodayInfo(activeSchedule.value))\n\n const weeklySchedule = computed<DayScheduleInfo[]>(() => getWeeklySchedule(activeSchedule.value))\n\n const address = computed<string | null>(() => {\n if (stock.value?.address) return stock.value.address\n\n const cityStocks = city.value.stocks\n\n if (cityStocks && cityStocks.length > 0) {\n return cityStocks[0]?.address ?? null\n }\n\n return null\n })\n\n const socialLinks = computed<SocialLink[]>(() => getSocialLinks(store.value.links))\n\n const legalLinks = options.legalLinks\n\n const copyrightYear = computed<number>(() => new Date().getFullYear())\n\n const appStoreUrl = computed<string | null>(() => store.value.app_store_url)\n const googlePlayUrl = computed<string | null>(() => store.value.google_play_url)\n\n return {\n storeName,\n logoUrl,\n phones,\n todaySchedule,\n weeklySchedule,\n address,\n socialLinks,\n legalLinks,\n copyrightYear,\n appStoreUrl,\n googlePlayUrl,\n }\n}\n"]}
@@ -1,27 +0,0 @@
1
- import { ContactType, Contact, Schedule } from '@zenky/storefront-api';
2
-
3
- interface SocialLink {
4
- type: ContactType;
5
- url: string;
6
- label: string;
7
- }
8
- declare function getSocialLinks(contacts: Contact[]): SocialLink[];
9
- declare function getEmailLink(contacts: Contact[]): string | null;
10
- declare function getWebsiteLink(contacts: Contact[]): string | null;
11
-
12
- interface DayScheduleInfo {
13
- dayKey: string;
14
- name: string;
15
- hours: string | null;
16
- }
17
- interface TodayScheduleInfo {
18
- isOpenNow: boolean;
19
- todayHours: string | null;
20
- openingAt: string | null;
21
- closingAt: string | null;
22
- }
23
- declare function getTodayInfo(schedule: Schedule | null | undefined): TodayScheduleInfo | null;
24
- declare function getWeeklySchedule(schedule: Schedule | null | undefined, locale?: string): DayScheduleInfo[];
25
- declare function formatScheduleStatus(schedule: Schedule | null | undefined, locale?: string): string | null;
26
-
27
- export { type DayScheduleInfo as D, type SocialLink as S, type TodayScheduleInfo as T, getSocialLinks as a, getTodayInfo as b, getWebsiteLink as c, getWeeklySchedule as d, formatScheduleStatus as f, getEmailLink as g };
@@ -1,23 +0,0 @@
1
- type SnippetPosition = 'head_start' | 'head_end' | 'body_start' | 'body_end';
2
- type SnippetLanguage = 'html' | 'css' | 'javascript';
3
- interface Snippet {
4
- id: string;
5
- name?: string;
6
- position: SnippetPosition;
7
- language: SnippetLanguage;
8
- code: string;
9
- enabled: boolean;
10
- }
11
- interface RawSnippetItem {
12
- language: SnippetLanguage;
13
- content: string;
14
- enabled?: boolean;
15
- name?: string;
16
- }
17
- interface SnippetGroup {
18
- region: SnippetPosition;
19
- snippets: RawSnippetItem[];
20
- }
21
- declare function normalizeSnippets(groups: SnippetGroup[] | null | undefined): Snippet[];
22
-
23
- export { type RawSnippetItem as R, type Snippet as S, type SnippetGroup as a, type SnippetLanguage as b, type SnippetPosition as c, normalizeSnippets as n };