simplycms 0.4.0
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/LICENSE +21 -0
- package/README.md +26 -0
- package/dist/admin/components/AddProductToOrder.d.ts +12 -0
- package/dist/admin/components/AddProductToOrder.js +4 -0
- package/dist/admin/components/AddProductToOrder.js.map +1 -0
- package/dist/admin/components/AllProductProperties.d.ts +6 -0
- package/dist/admin/components/AllProductProperties.js +4 -0
- package/dist/admin/components/AllProductProperties.js.map +1 -0
- package/dist/admin/components/ImageUpload.d.ts +10 -0
- package/dist/admin/components/ImageUpload.js +4 -0
- package/dist/admin/components/ImageUpload.js.map +1 -0
- package/dist/admin/components/ProductModifications.d.ts +6 -0
- package/dist/admin/components/ProductModifications.js +9 -0
- package/dist/admin/components/ProductModifications.js.map +1 -0
- package/dist/admin/components/ProductPricesEditor.d.ts +6 -0
- package/dist/admin/components/ProductPricesEditor.js +4 -0
- package/dist/admin/components/ProductPricesEditor.js.map +1 -0
- package/dist/admin/components/ProductPropertyValues.d.ts +7 -0
- package/dist/admin/components/ProductPropertyValues.js +4 -0
- package/dist/admin/components/ProductPropertyValues.js.map +1 -0
- package/dist/admin/components/RichTextEditor.d.ts +8 -0
- package/dist/admin/components/RichTextEditor.js +4 -0
- package/dist/admin/components/RichTextEditor.js.map +1 -0
- package/dist/admin/components/SectionPropertiesManager.d.ts +5 -0
- package/dist/admin/components/SectionPropertiesManager.js +4 -0
- package/dist/admin/components/SectionPropertiesManager.js.map +1 -0
- package/dist/admin/components/SectionPropertiesTable.d.ts +5 -0
- package/dist/admin/components/SectionPropertiesTable.js +4 -0
- package/dist/admin/components/SectionPropertiesTable.js.map +1 -0
- package/dist/admin/components/SimpleProductFields.d.ts +10 -0
- package/dist/admin/components/SimpleProductFields.js +7 -0
- package/dist/admin/components/SimpleProductFields.js.map +1 -0
- package/dist/admin/components/StockByPointManager.d.ts +7 -0
- package/dist/admin/components/StockByPointManager.js +4 -0
- package/dist/admin/components/StockByPointManager.js.map +1 -0
- package/dist/admin/components/StockStatusSelect.d.ts +9 -0
- package/dist/admin/components/StockStatusSelect.js +4 -0
- package/dist/admin/components/StockStatusSelect.js.map +1 -0
- package/dist/admin/components/ThemeActivateDialog.d.ts +14 -0
- package/dist/admin/components/ThemeActivateDialog.js +4 -0
- package/dist/admin/components/ThemeActivateDialog.js.map +1 -0
- package/dist/admin/components/ThemeCard.d.ts +29 -0
- package/dist/admin/components/ThemeCard.js +5 -0
- package/dist/admin/components/ThemeCard.js.map +1 -0
- package/dist/admin/hooks/usePluginToggle.d.ts +21 -0
- package/dist/admin/hooks/useThemeActivate.d.ts +15 -0
- package/dist/admin/index.d.ts +54 -0
- package/dist/admin/index.js +62 -0
- package/dist/admin/index.js.map +1 -0
- package/dist/admin/layouts/AdminLayout.d.ts +3 -0
- package/dist/admin/layouts/AdminLayout.js +6 -0
- package/dist/admin/layouts/AdminLayout.js.map +1 -0
- package/dist/admin/layouts/AdminSidebar.d.ts +1 -0
- package/dist/admin/layouts/AdminSidebar.js +5 -0
- package/dist/admin/layouts/AdminSidebar.js.map +1 -0
- package/dist/admin/lib/adminLinks.d.ts +10 -0
- package/dist/admin/lib/pluginSettingsFields.d.ts +21 -0
- package/dist/admin/lib/revalidateTheme.d.ts +30 -0
- package/dist/admin/pages/BannerEdit.d.ts +1 -0
- package/dist/admin/pages/BannerEdit.js +6 -0
- package/dist/admin/pages/BannerEdit.js.map +1 -0
- package/dist/admin/pages/Banners.d.ts +1 -0
- package/dist/admin/pages/Banners.js +5 -0
- package/dist/admin/pages/Banners.js.map +1 -0
- package/dist/admin/pages/Dashboard.d.ts +1 -0
- package/dist/admin/pages/Dashboard.js +5 -0
- package/dist/admin/pages/Dashboard.js.map +1 -0
- package/dist/admin/pages/DiscountEdit.d.ts +1 -0
- package/dist/admin/pages/DiscountEdit.js +5 -0
- package/dist/admin/pages/DiscountEdit.js.map +1 -0
- package/dist/admin/pages/DiscountGroupEdit.d.ts +1 -0
- package/dist/admin/pages/DiscountGroupEdit.js +5 -0
- package/dist/admin/pages/DiscountGroupEdit.js.map +1 -0
- package/dist/admin/pages/Discounts.d.ts +1 -0
- package/dist/admin/pages/Discounts.js +5 -0
- package/dist/admin/pages/Discounts.js.map +1 -0
- package/dist/admin/pages/OrderDetail.d.ts +1 -0
- package/dist/admin/pages/OrderDetail.js +6 -0
- package/dist/admin/pages/OrderDetail.js.map +1 -0
- package/dist/admin/pages/OrderStatuses.d.ts +1 -0
- package/dist/admin/pages/OrderStatuses.js +4 -0
- package/dist/admin/pages/OrderStatuses.js.map +1 -0
- package/dist/admin/pages/Orders.d.ts +1 -0
- package/dist/admin/pages/Orders.js +5 -0
- package/dist/admin/pages/Orders.js.map +1 -0
- package/dist/admin/pages/PickupPointEdit.d.ts +1 -0
- package/dist/admin/pages/PickupPointEdit.js +5 -0
- package/dist/admin/pages/PickupPointEdit.js.map +1 -0
- package/dist/admin/pages/PickupPoints.d.ts +1 -0
- package/dist/admin/pages/PickupPoints.js +5 -0
- package/dist/admin/pages/PickupPoints.js.map +1 -0
- package/dist/admin/pages/PlaceholderPage.d.ts +1 -0
- package/dist/admin/pages/PlaceholderPage.js +4 -0
- package/dist/admin/pages/PlaceholderPage.js.map +1 -0
- package/dist/admin/pages/PluginSettings.d.ts +1 -0
- package/dist/admin/pages/PluginSettings.js +6 -0
- package/dist/admin/pages/PluginSettings.js.map +1 -0
- package/dist/admin/pages/Plugins.d.ts +1 -0
- package/dist/admin/pages/Plugins.js +6 -0
- package/dist/admin/pages/Plugins.js.map +1 -0
- package/dist/admin/pages/PriceTypeEdit.d.ts +1 -0
- package/dist/admin/pages/PriceTypeEdit.js +5 -0
- package/dist/admin/pages/PriceTypeEdit.js.map +1 -0
- package/dist/admin/pages/PriceTypes.d.ts +1 -0
- package/dist/admin/pages/PriceTypes.js +5 -0
- package/dist/admin/pages/PriceTypes.js.map +1 -0
- package/dist/admin/pages/PriceValidator.d.ts +1 -0
- package/dist/admin/pages/PriceValidator.js +4 -0
- package/dist/admin/pages/PriceValidator.js.map +1 -0
- package/dist/admin/pages/ProductEdit.d.ts +1 -0
- package/dist/admin/pages/ProductEdit.js +14 -0
- package/dist/admin/pages/ProductEdit.js.map +1 -0
- package/dist/admin/pages/Products.d.ts +1 -0
- package/dist/admin/pages/Products.js +5 -0
- package/dist/admin/pages/Products.js.map +1 -0
- package/dist/admin/pages/Properties.d.ts +1 -0
- package/dist/admin/pages/Properties.js +5 -0
- package/dist/admin/pages/Properties.js.map +1 -0
- package/dist/admin/pages/PropertyEdit.d.ts +1 -0
- package/dist/admin/pages/PropertyEdit.js +5 -0
- package/dist/admin/pages/PropertyEdit.js.map +1 -0
- package/dist/admin/pages/PropertyOptionEdit.d.ts +1 -0
- package/dist/admin/pages/PropertyOptionEdit.js +7 -0
- package/dist/admin/pages/PropertyOptionEdit.js.map +1 -0
- package/dist/admin/pages/ReviewDetail.d.ts +1 -0
- package/dist/admin/pages/ReviewDetail.js +5 -0
- package/dist/admin/pages/ReviewDetail.js.map +1 -0
- package/dist/admin/pages/Reviews.d.ts +1 -0
- package/dist/admin/pages/Reviews.js +5 -0
- package/dist/admin/pages/Reviews.js.map +1 -0
- package/dist/admin/pages/SectionEdit.d.ts +1 -0
- package/dist/admin/pages/SectionEdit.js +8 -0
- package/dist/admin/pages/SectionEdit.js.map +1 -0
- package/dist/admin/pages/Sections.d.ts +1 -0
- package/dist/admin/pages/Sections.js +5 -0
- package/dist/admin/pages/Sections.js.map +1 -0
- package/dist/admin/pages/Settings.d.ts +1 -0
- package/dist/admin/pages/Settings.js +4 -0
- package/dist/admin/pages/Settings.js.map +1 -0
- package/dist/admin/pages/Shipping.d.ts +1 -0
- package/dist/admin/pages/Shipping.js +5 -0
- package/dist/admin/pages/Shipping.js.map +1 -0
- package/dist/admin/pages/ShippingMethodEdit.d.ts +1 -0
- package/dist/admin/pages/ShippingMethodEdit.js +5 -0
- package/dist/admin/pages/ShippingMethodEdit.js.map +1 -0
- package/dist/admin/pages/ShippingMethods.d.ts +1 -0
- package/dist/admin/pages/ShippingMethods.js +5 -0
- package/dist/admin/pages/ShippingMethods.js.map +1 -0
- package/dist/admin/pages/ShippingZoneEdit.d.ts +1 -0
- package/dist/admin/pages/ShippingZoneEdit.js +5 -0
- package/dist/admin/pages/ShippingZoneEdit.js.map +1 -0
- package/dist/admin/pages/ShippingZones.d.ts +1 -0
- package/dist/admin/pages/ShippingZones.js +5 -0
- package/dist/admin/pages/ShippingZones.js.map +1 -0
- package/dist/admin/pages/ThemeSettings.d.ts +1 -0
- package/dist/admin/pages/ThemeSettings.js +6 -0
- package/dist/admin/pages/ThemeSettings.js.map +1 -0
- package/dist/admin/pages/Themes.d.ts +1 -0
- package/dist/admin/pages/Themes.js +8 -0
- package/dist/admin/pages/Themes.js.map +1 -0
- package/dist/admin/pages/UserCategories.d.ts +1 -0
- package/dist/admin/pages/UserCategories.js +5 -0
- package/dist/admin/pages/UserCategories.js.map +1 -0
- package/dist/admin/pages/UserCategoryEdit.d.ts +1 -0
- package/dist/admin/pages/UserCategoryEdit.js +5 -0
- package/dist/admin/pages/UserCategoryEdit.js.map +1 -0
- package/dist/admin/pages/UserCategoryRuleEdit.d.ts +1 -0
- package/dist/admin/pages/UserCategoryRuleEdit.js +5 -0
- package/dist/admin/pages/UserCategoryRuleEdit.js.map +1 -0
- package/dist/admin/pages/UserCategoryRules.d.ts +1 -0
- package/dist/admin/pages/UserCategoryRules.js +5 -0
- package/dist/admin/pages/UserCategoryRules.js.map +1 -0
- package/dist/admin/pages/UserEdit.d.ts +1 -0
- package/dist/admin/pages/UserEdit.js +5 -0
- package/dist/admin/pages/UserEdit.js.map +1 -0
- package/dist/admin/pages/Users.d.ts +1 -0
- package/dist/admin/pages/Users.js +5 -0
- package/dist/admin/pages/Users.js.map +1 -0
- package/dist/auth/accept-invite.d.ts +38 -0
- package/dist/auth/authz.d.ts +79 -0
- package/dist/auth/drizzle-proxy.d.ts +13 -0
- package/dist/auth/env.d.ts +31 -0
- package/dist/auth/hooks.d.ts +63 -0
- package/dist/auth/index.d.ts +33 -0
- package/dist/auth/index.js +348 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/instance.d.ts +60 -0
- package/dist/auth/invite-email.d.ts +38 -0
- package/dist/auth/invite-store.d.ts +11 -0
- package/dist/auth/invite.d.ts +83 -0
- package/dist/auth/provision.d.ts +10 -0
- package/dist/auth/send-email.d.ts +19 -0
- package/dist/auth/session.d.ts +33 -0
- package/dist/cart-ui/CartButton.d.ts +1 -0
- package/dist/cart-ui/CartButton.js +4 -0
- package/dist/cart-ui/CartButton.js.map +1 -0
- package/dist/cart-ui/CartDrawer.d.ts +1 -0
- package/dist/cart-ui/CartDrawer.js +6 -0
- package/dist/cart-ui/CartDrawer.js.map +1 -0
- package/dist/cart-ui/CartItem.d.ts +6 -0
- package/dist/cart-ui/CartItem.js +5 -0
- package/dist/cart-ui/CartItem.js.map +1 -0
- package/dist/cart-ui/CartItemView.d.ts +7 -0
- package/dist/cart-ui/CartItemView.js +4 -0
- package/dist/cart-ui/CartItemView.js.map +1 -0
- package/dist/cart-ui/index.d.ts +5 -0
- package/dist/cart-ui/index.js +7 -0
- package/dist/cart-ui/index.js.map +1 -0
- package/dist/catalog-ui/ActiveFilters.d.ts +28 -0
- package/dist/catalog-ui/ActiveFilters.js +4 -0
- package/dist/catalog-ui/ActiveFilters.js.map +1 -0
- package/dist/catalog-ui/FilterSidebar.d.ts +31 -0
- package/dist/catalog-ui/FilterSidebar.js +4 -0
- package/dist/catalog-ui/FilterSidebar.js.map +1 -0
- package/dist/catalog-ui/ModificationSelector.d.ts +25 -0
- package/dist/catalog-ui/ModificationSelector.js +4 -0
- package/dist/catalog-ui/ModificationSelector.js.map +1 -0
- package/dist/catalog-ui/ProductCard.d.ts +22 -0
- package/dist/catalog-ui/ProductCard.js +4 -0
- package/dist/catalog-ui/ProductCard.js.map +1 -0
- package/dist/catalog-ui/ProductCharacteristics.d.ts +22 -0
- package/dist/catalog-ui/ProductCharacteristics.js +4 -0
- package/dist/catalog-ui/ProductCharacteristics.js.map +1 -0
- package/dist/catalog-ui/ProductGallery.d.ts +6 -0
- package/dist/catalog-ui/ProductGallery.js +4 -0
- package/dist/catalog-ui/ProductGallery.js.map +1 -0
- package/dist/catalog-ui/StockDisplay.d.ts +13 -0
- package/dist/catalog-ui/StockDisplay.js +4 -0
- package/dist/catalog-ui/StockDisplay.js.map +1 -0
- package/dist/catalog-ui/index.d.ts +7 -0
- package/dist/catalog-ui/index.js +10 -0
- package/dist/catalog-ui/index.js.map +1 -0
- package/dist/checkout-ui/AddressCard.d.ts +11 -0
- package/dist/checkout-ui/AddressCard.js +4 -0
- package/dist/checkout-ui/AddressCard.js.map +1 -0
- package/dist/checkout-ui/AddressSaveDialog.d.ts +10 -0
- package/dist/checkout-ui/AddressSaveDialog.js +4 -0
- package/dist/checkout-ui/AddressSaveDialog.js.map +1 -0
- package/dist/checkout-ui/AddressSelectorPopup.d.ts +17 -0
- package/dist/checkout-ui/AddressSelectorPopup.js +4 -0
- package/dist/checkout-ui/AddressSelectorPopup.js.map +1 -0
- package/dist/checkout-ui/CheckoutAuthBlock.d.ts +7 -0
- package/dist/checkout-ui/CheckoutAuthBlock.js +4 -0
- package/dist/checkout-ui/CheckoutAuthBlock.js.map +1 -0
- package/dist/checkout-ui/CheckoutContactForm.d.ts +11 -0
- package/dist/checkout-ui/CheckoutContactForm.js +4 -0
- package/dist/checkout-ui/CheckoutContactForm.js.map +1 -0
- package/dist/checkout-ui/CheckoutDeliveryForm.d.ts +16 -0
- package/dist/checkout-ui/CheckoutDeliveryForm.js +7 -0
- package/dist/checkout-ui/CheckoutDeliveryForm.js.map +1 -0
- package/dist/checkout-ui/CheckoutOrderSummary.d.ts +11 -0
- package/dist/checkout-ui/CheckoutOrderSummary.js +4 -0
- package/dist/checkout-ui/CheckoutOrderSummary.js.map +1 -0
- package/dist/checkout-ui/CheckoutPaymentForm.d.ts +6 -0
- package/dist/checkout-ui/CheckoutPaymentForm.js +4 -0
- package/dist/checkout-ui/CheckoutPaymentForm.js.map +1 -0
- package/dist/checkout-ui/CheckoutRecipientForm.d.ts +13 -0
- package/dist/checkout-ui/CheckoutRecipientForm.js +7 -0
- package/dist/checkout-ui/CheckoutRecipientForm.js.map +1 -0
- package/dist/checkout-ui/RecipientCard.d.ts +12 -0
- package/dist/checkout-ui/RecipientCard.js +4 -0
- package/dist/checkout-ui/RecipientCard.js.map +1 -0
- package/dist/checkout-ui/RecipientSaveDialog.d.ts +10 -0
- package/dist/checkout-ui/RecipientSaveDialog.js +4 -0
- package/dist/checkout-ui/RecipientSaveDialog.js.map +1 -0
- package/dist/checkout-ui/RecipientSelectorPopup.d.ts +20 -0
- package/dist/checkout-ui/RecipientSelectorPopup.js +4 -0
- package/dist/checkout-ui/RecipientSelectorPopup.js.map +1 -0
- package/dist/checkout-ui/index.d.ts +12 -0
- package/dist/checkout-ui/index.js +15 -0
- package/dist/checkout-ui/index.js.map +1 -0
- package/dist/chunk-23G3T7E3.js +26 -0
- package/dist/chunk-23G3T7E3.js.map +1 -0
- package/dist/chunk-23KPFM3P.js +47 -0
- package/dist/chunk-23KPFM3P.js.map +1 -0
- package/dist/chunk-26OAKQPA.js +83 -0
- package/dist/chunk-26OAKQPA.js.map +1 -0
- package/dist/chunk-2AZMVBJI.js +58 -0
- package/dist/chunk-2AZMVBJI.js.map +1 -0
- package/dist/chunk-2C5VTSRE.js +85 -0
- package/dist/chunk-2C5VTSRE.js.map +1 -0
- package/dist/chunk-2FX2C6KG.js +3 -0
- package/dist/chunk-2FX2C6KG.js.map +1 -0
- package/dist/chunk-2K6FGG5B.js +78 -0
- package/dist/chunk-2K6FGG5B.js.map +1 -0
- package/dist/chunk-2KKQO57H.js +3 -0
- package/dist/chunk-2KKQO57H.js.map +1 -0
- package/dist/chunk-2Q3JIBH2.js +85 -0
- package/dist/chunk-2Q3JIBH2.js.map +1 -0
- package/dist/chunk-2VKURKLN.js +10 -0
- package/dist/chunk-2VKURKLN.js.map +1 -0
- package/dist/chunk-2ZFFIRA7.js +94 -0
- package/dist/chunk-2ZFFIRA7.js.map +1 -0
- package/dist/chunk-2ZMYMDWX.js +506 -0
- package/dist/chunk-2ZMYMDWX.js.map +1 -0
- package/dist/chunk-2ZOJ3BRO.js +101 -0
- package/dist/chunk-2ZOJ3BRO.js.map +1 -0
- package/dist/chunk-34RUH5Q5.js +56 -0
- package/dist/chunk-34RUH5Q5.js.map +1 -0
- package/dist/chunk-36KE54CI.js +138 -0
- package/dist/chunk-36KE54CI.js.map +1 -0
- package/dist/chunk-36N7MZUX.js +49 -0
- package/dist/chunk-36N7MZUX.js.map +1 -0
- package/dist/chunk-3AESWXJD.js +398 -0
- package/dist/chunk-3AESWXJD.js.map +1 -0
- package/dist/chunk-3AJKXVPJ.js +68 -0
- package/dist/chunk-3AJKXVPJ.js.map +1 -0
- package/dist/chunk-3DJRL4IK.js +292 -0
- package/dist/chunk-3DJRL4IK.js.map +1 -0
- package/dist/chunk-3IGJUUBL.js +60 -0
- package/dist/chunk-3IGJUUBL.js.map +1 -0
- package/dist/chunk-3LFRV3X6.js +237 -0
- package/dist/chunk-3LFRV3X6.js.map +1 -0
- package/dist/chunk-3MK6QUQK.js +24 -0
- package/dist/chunk-3MK6QUQK.js.map +1 -0
- package/dist/chunk-3SW2KIUN.js +103 -0
- package/dist/chunk-3SW2KIUN.js.map +1 -0
- package/dist/chunk-3WTEL7HT.js +18 -0
- package/dist/chunk-3WTEL7HT.js.map +1 -0
- package/dist/chunk-3XVESNZC.js +77 -0
- package/dist/chunk-3XVESNZC.js.map +1 -0
- package/dist/chunk-43LZRWRG.js +57 -0
- package/dist/chunk-43LZRWRG.js.map +1 -0
- package/dist/chunk-45B5PZRY.js +460 -0
- package/dist/chunk-45B5PZRY.js.map +1 -0
- package/dist/chunk-45QHWHQX.js +26 -0
- package/dist/chunk-45QHWHQX.js.map +1 -0
- package/dist/chunk-473Q4TND.js +35 -0
- package/dist/chunk-473Q4TND.js.map +1 -0
- package/dist/chunk-4DRH2QKU.js +123 -0
- package/dist/chunk-4DRH2QKU.js.map +1 -0
- package/dist/chunk-4DVL46A2.js +42 -0
- package/dist/chunk-4DVL46A2.js.map +1 -0
- package/dist/chunk-4FV5KTST.js +49 -0
- package/dist/chunk-4FV5KTST.js.map +1 -0
- package/dist/chunk-4KSSZJB6.js +717 -0
- package/dist/chunk-4KSSZJB6.js.map +1 -0
- package/dist/chunk-4LNEHCYO.js +62 -0
- package/dist/chunk-4LNEHCYO.js.map +1 -0
- package/dist/chunk-4LWRNI4H.js +109 -0
- package/dist/chunk-4LWRNI4H.js.map +1 -0
- package/dist/chunk-4N7CLW6Y.js +72 -0
- package/dist/chunk-4N7CLW6Y.js.map +1 -0
- package/dist/chunk-4YRIIXCU.js +70 -0
- package/dist/chunk-4YRIIXCU.js.map +1 -0
- package/dist/chunk-5A2ANDF7.js +368 -0
- package/dist/chunk-5A2ANDF7.js.map +1 -0
- package/dist/chunk-5BSNLAZG.js +98 -0
- package/dist/chunk-5BSNLAZG.js.map +1 -0
- package/dist/chunk-5C2YI56N.js +38 -0
- package/dist/chunk-5C2YI56N.js.map +1 -0
- package/dist/chunk-5DAAQK77.js +264 -0
- package/dist/chunk-5DAAQK77.js.map +1 -0
- package/dist/chunk-5GOKOB4W.js +121 -0
- package/dist/chunk-5GOKOB4W.js.map +1 -0
- package/dist/chunk-5JTWID4O.js +3 -0
- package/dist/chunk-5JTWID4O.js.map +1 -0
- package/dist/chunk-5O4GVI37.js +18 -0
- package/dist/chunk-5O4GVI37.js.map +1 -0
- package/dist/chunk-5QDPW3VW.js +3 -0
- package/dist/chunk-5QDPW3VW.js.map +1 -0
- package/dist/chunk-5UP3MCBC.js +118 -0
- package/dist/chunk-5UP3MCBC.js.map +1 -0
- package/dist/chunk-5XW3TCGE.js +132 -0
- package/dist/chunk-5XW3TCGE.js.map +1 -0
- package/dist/chunk-64LMUHDA.js +122 -0
- package/dist/chunk-64LMUHDA.js.map +1 -0
- package/dist/chunk-6CF3TA4X.js +23 -0
- package/dist/chunk-6CF3TA4X.js.map +1 -0
- package/dist/chunk-6D2UAQNA.js +36 -0
- package/dist/chunk-6D2UAQNA.js.map +1 -0
- package/dist/chunk-6EQJNNCU.js +39 -0
- package/dist/chunk-6EQJNNCU.js.map +1 -0
- package/dist/chunk-6J52Y6TD.js +38 -0
- package/dist/chunk-6J52Y6TD.js.map +1 -0
- package/dist/chunk-6SGVGV62.js +24 -0
- package/dist/chunk-6SGVGV62.js.map +1 -0
- package/dist/chunk-6ZC3GWAR.js +37 -0
- package/dist/chunk-6ZC3GWAR.js.map +1 -0
- package/dist/chunk-77RQYFQK.js +23 -0
- package/dist/chunk-77RQYFQK.js.map +1 -0
- package/dist/chunk-7JQNN4AX.js +64 -0
- package/dist/chunk-7JQNN4AX.js.map +1 -0
- package/dist/chunk-7RYIOR2A.js +183 -0
- package/dist/chunk-7RYIOR2A.js.map +1 -0
- package/dist/chunk-7S3MSMHE.js +90 -0
- package/dist/chunk-7S3MSMHE.js.map +1 -0
- package/dist/chunk-7ZS5RS5Z.js +172 -0
- package/dist/chunk-7ZS5RS5Z.js.map +1 -0
- package/dist/chunk-AFTVAKEC.js +25 -0
- package/dist/chunk-AFTVAKEC.js.map +1 -0
- package/dist/chunk-ALVECZR7.js +8 -0
- package/dist/chunk-ALVECZR7.js.map +1 -0
- package/dist/chunk-AN54YETW.js +20 -0
- package/dist/chunk-AN54YETW.js.map +1 -0
- package/dist/chunk-ARVI27TR.js +324 -0
- package/dist/chunk-ARVI27TR.js.map +1 -0
- package/dist/chunk-ASFG2LKM.js +10 -0
- package/dist/chunk-ASFG2LKM.js.map +1 -0
- package/dist/chunk-AVHWYNGC.js +502 -0
- package/dist/chunk-AVHWYNGC.js.map +1 -0
- package/dist/chunk-B6ZJSQ4P.js +30 -0
- package/dist/chunk-B6ZJSQ4P.js.map +1 -0
- package/dist/chunk-BDKJ3ITL.js +1311 -0
- package/dist/chunk-BDKJ3ITL.js.map +1 -0
- package/dist/chunk-BDR6DRJX.js +47 -0
- package/dist/chunk-BDR6DRJX.js.map +1 -0
- package/dist/chunk-BSISQVY4.js +36 -0
- package/dist/chunk-BSISQVY4.js.map +1 -0
- package/dist/chunk-BTOPIWDA.js +144 -0
- package/dist/chunk-BTOPIWDA.js.map +1 -0
- package/dist/chunk-BWECTMUZ.js +101 -0
- package/dist/chunk-BWECTMUZ.js.map +1 -0
- package/dist/chunk-BZAWFPGX.js +91 -0
- package/dist/chunk-BZAWFPGX.js.map +1 -0
- package/dist/chunk-CETG5B3V.js +154 -0
- package/dist/chunk-CETG5B3V.js.map +1 -0
- package/dist/chunk-CFE2YHHY.js +52 -0
- package/dist/chunk-CFE2YHHY.js.map +1 -0
- package/dist/chunk-CKD5KAD2.js +179 -0
- package/dist/chunk-CKD5KAD2.js.map +1 -0
- package/dist/chunk-CMLIVKLK.js +319 -0
- package/dist/chunk-CMLIVKLK.js.map +1 -0
- package/dist/chunk-CRAH3NMI.js +96 -0
- package/dist/chunk-CRAH3NMI.js.map +1 -0
- package/dist/chunk-CTFOP3GR.js +3 -0
- package/dist/chunk-CTFOP3GR.js.map +1 -0
- package/dist/chunk-CZJWLCK7.js +3 -0
- package/dist/chunk-CZJWLCK7.js.map +1 -0
- package/dist/chunk-D3G6XGKV.js +82 -0
- package/dist/chunk-D3G6XGKV.js.map +1 -0
- package/dist/chunk-D55EEFVJ.js +48 -0
- package/dist/chunk-D55EEFVJ.js.map +1 -0
- package/dist/chunk-DOAFQERM.js +15 -0
- package/dist/chunk-DOAFQERM.js.map +1 -0
- package/dist/chunk-DR5R3J76.js +154 -0
- package/dist/chunk-DR5R3J76.js.map +1 -0
- package/dist/chunk-DRWZUYAN.js +15 -0
- package/dist/chunk-DRWZUYAN.js.map +1 -0
- package/dist/chunk-DW64EGU4.js +300 -0
- package/dist/chunk-DW64EGU4.js.map +1 -0
- package/dist/chunk-DWO7VQQT.js +253 -0
- package/dist/chunk-DWO7VQQT.js.map +1 -0
- package/dist/chunk-DZDZ6SSB.js +54 -0
- package/dist/chunk-DZDZ6SSB.js.map +1 -0
- package/dist/chunk-E6TWPPJC.js +21 -0
- package/dist/chunk-E6TWPPJC.js.map +1 -0
- package/dist/chunk-EFLUQ3O7.js +29 -0
- package/dist/chunk-EFLUQ3O7.js.map +1 -0
- package/dist/chunk-ELAU7VSL.js +157 -0
- package/dist/chunk-ELAU7VSL.js.map +1 -0
- package/dist/chunk-EQDFU2YI.js +228 -0
- package/dist/chunk-EQDFU2YI.js.map +1 -0
- package/dist/chunk-ETDZDO35.js +30 -0
- package/dist/chunk-ETDZDO35.js.map +1 -0
- package/dist/chunk-EZFEM6WJ.js +26 -0
- package/dist/chunk-EZFEM6WJ.js.map +1 -0
- package/dist/chunk-F2N5BY57.js +513 -0
- package/dist/chunk-F2N5BY57.js.map +1 -0
- package/dist/chunk-FBCWGQCA.js +38 -0
- package/dist/chunk-FBCWGQCA.js.map +1 -0
- package/dist/chunk-FETHDFGX.js +28 -0
- package/dist/chunk-FETHDFGX.js.map +1 -0
- package/dist/chunk-FFOYJA7C.js +52 -0
- package/dist/chunk-FFOYJA7C.js.map +1 -0
- package/dist/chunk-FJN35H2F.js +23 -0
- package/dist/chunk-FJN35H2F.js.map +1 -0
- package/dist/chunk-FSWFG3W5.js +434 -0
- package/dist/chunk-FSWFG3W5.js.map +1 -0
- package/dist/chunk-FVUVJDMM.js +302 -0
- package/dist/chunk-FVUVJDMM.js.map +1 -0
- package/dist/chunk-GA3G4WSB.js +43 -0
- package/dist/chunk-GA3G4WSB.js.map +1 -0
- package/dist/chunk-GBX3EEET.js +50 -0
- package/dist/chunk-GBX3EEET.js.map +1 -0
- package/dist/chunk-GCV75UWZ.js +146 -0
- package/dist/chunk-GCV75UWZ.js.map +1 -0
- package/dist/chunk-GDMEC2JX.js +261 -0
- package/dist/chunk-GDMEC2JX.js.map +1 -0
- package/dist/chunk-GDOSHZKL.js +26 -0
- package/dist/chunk-GDOSHZKL.js.map +1 -0
- package/dist/chunk-GEFYA744.js +218 -0
- package/dist/chunk-GEFYA744.js.map +1 -0
- package/dist/chunk-GNPMPJBU.js +148 -0
- package/dist/chunk-GNPMPJBU.js.map +1 -0
- package/dist/chunk-GU4OCP5D.js +3 -0
- package/dist/chunk-GU4OCP5D.js.map +1 -0
- package/dist/chunk-GZWE2546.js +65 -0
- package/dist/chunk-GZWE2546.js.map +1 -0
- package/dist/chunk-HDKJLZP5.js +90 -0
- package/dist/chunk-HDKJLZP5.js.map +1 -0
- package/dist/chunk-HDZ2KCVD.js +118 -0
- package/dist/chunk-HDZ2KCVD.js.map +1 -0
- package/dist/chunk-HFELN34F.js +24 -0
- package/dist/chunk-HFELN34F.js.map +1 -0
- package/dist/chunk-HG5KZVG2.js +254 -0
- package/dist/chunk-HG5KZVG2.js.map +1 -0
- package/dist/chunk-HGKPFE57.js +302 -0
- package/dist/chunk-HGKPFE57.js.map +1 -0
- package/dist/chunk-HIAANCKI.js +367 -0
- package/dist/chunk-HIAANCKI.js.map +1 -0
- package/dist/chunk-HV3QOXWS.js +94 -0
- package/dist/chunk-HV3QOXWS.js.map +1 -0
- package/dist/chunk-HW3CZJDX.js +26 -0
- package/dist/chunk-HW3CZJDX.js.map +1 -0
- package/dist/chunk-HYLFXHZ4.js +39 -0
- package/dist/chunk-HYLFXHZ4.js.map +1 -0
- package/dist/chunk-I3U4TB4H.js +323 -0
- package/dist/chunk-I3U4TB4H.js.map +1 -0
- package/dist/chunk-I4LPT6E5.js +163 -0
- package/dist/chunk-I4LPT6E5.js.map +1 -0
- package/dist/chunk-I65ATTOO.js +97 -0
- package/dist/chunk-I65ATTOO.js.map +1 -0
- package/dist/chunk-I7WLAPVP.js +3 -0
- package/dist/chunk-I7WLAPVP.js.map +1 -0
- package/dist/chunk-IBKHUHET.js +13 -0
- package/dist/chunk-IBKHUHET.js.map +1 -0
- package/dist/chunk-IFL7XD6B.js +32 -0
- package/dist/chunk-IFL7XD6B.js.map +1 -0
- package/dist/chunk-IMVSNS6Y.js +72 -0
- package/dist/chunk-IMVSNS6Y.js.map +1 -0
- package/dist/chunk-INYK2AFU.js +309 -0
- package/dist/chunk-INYK2AFU.js.map +1 -0
- package/dist/chunk-IODBINZ4.js +20 -0
- package/dist/chunk-IODBINZ4.js.map +1 -0
- package/dist/chunk-IP2II4EJ.js +170 -0
- package/dist/chunk-IP2II4EJ.js.map +1 -0
- package/dist/chunk-IPQRYSSD.js +3 -0
- package/dist/chunk-IPQRYSSD.js.map +1 -0
- package/dist/chunk-IRR2UMIH.js +13 -0
- package/dist/chunk-IRR2UMIH.js.map +1 -0
- package/dist/chunk-ISBZVXFF.js +108 -0
- package/dist/chunk-ISBZVXFF.js.map +1 -0
- package/dist/chunk-IULIXR7J.js +37 -0
- package/dist/chunk-IULIXR7J.js.map +1 -0
- package/dist/chunk-J4DP2OAU.js +142 -0
- package/dist/chunk-J4DP2OAU.js.map +1 -0
- package/dist/chunk-JG3KDN6H.js +26 -0
- package/dist/chunk-JG3KDN6H.js.map +1 -0
- package/dist/chunk-JGO2CL3O.js +43 -0
- package/dist/chunk-JGO2CL3O.js.map +1 -0
- package/dist/chunk-JO63AJJG.js +226 -0
- package/dist/chunk-JO63AJJG.js.map +1 -0
- package/dist/chunk-JORMRKZX.js +50 -0
- package/dist/chunk-JORMRKZX.js.map +1 -0
- package/dist/chunk-JRX5ACKU.js +20 -0
- package/dist/chunk-JRX5ACKU.js.map +1 -0
- package/dist/chunk-JUT26UJC.js +141 -0
- package/dist/chunk-JUT26UJC.js.map +1 -0
- package/dist/chunk-K53S2TG5.js +218 -0
- package/dist/chunk-K53S2TG5.js.map +1 -0
- package/dist/chunk-KLRI2TQ3.js +15 -0
- package/dist/chunk-KLRI2TQ3.js.map +1 -0
- package/dist/chunk-KLU72IVW.js +120 -0
- package/dist/chunk-KLU72IVW.js.map +1 -0
- package/dist/chunk-KXGQVXV5.js +3 -0
- package/dist/chunk-KXGQVXV5.js.map +1 -0
- package/dist/chunk-KYQQL3WB.js +3 -0
- package/dist/chunk-KYQQL3WB.js.map +1 -0
- package/dist/chunk-L3CXS3RA.js +20 -0
- package/dist/chunk-L3CXS3RA.js.map +1 -0
- package/dist/chunk-L3MIV7VH.js +47 -0
- package/dist/chunk-L3MIV7VH.js.map +1 -0
- package/dist/chunk-L7DU5MY7.js +285 -0
- package/dist/chunk-L7DU5MY7.js.map +1 -0
- package/dist/chunk-LL3IE3SI.js +26 -0
- package/dist/chunk-LL3IE3SI.js.map +1 -0
- package/dist/chunk-LL6RMSEC.js +53 -0
- package/dist/chunk-LL6RMSEC.js.map +1 -0
- package/dist/chunk-LNEHQXYC.js +159 -0
- package/dist/chunk-LNEHQXYC.js.map +1 -0
- package/dist/chunk-LRZSDJS7.js +27 -0
- package/dist/chunk-LRZSDJS7.js.map +1 -0
- package/dist/chunk-LS3LMIS4.js +87 -0
- package/dist/chunk-LS3LMIS4.js.map +1 -0
- package/dist/chunk-LUOSFQD5.js +28 -0
- package/dist/chunk-LUOSFQD5.js.map +1 -0
- package/dist/chunk-LVIY3WV5.js +102 -0
- package/dist/chunk-LVIY3WV5.js.map +1 -0
- package/dist/chunk-LZYG4G4X.js +43 -0
- package/dist/chunk-LZYG4G4X.js.map +1 -0
- package/dist/chunk-M2OQPMVT.js +3 -0
- package/dist/chunk-M2OQPMVT.js.map +1 -0
- package/dist/chunk-M3G257NG.js +29 -0
- package/dist/chunk-M3G257NG.js.map +1 -0
- package/dist/chunk-MBDMH57M.js +307 -0
- package/dist/chunk-MBDMH57M.js.map +1 -0
- package/dist/chunk-MCXTDDUI.js +62 -0
- package/dist/chunk-MCXTDDUI.js.map +1 -0
- package/dist/chunk-MJ7TXDR6.js +11 -0
- package/dist/chunk-MJ7TXDR6.js.map +1 -0
- package/dist/chunk-MLJ2I5US.js +108 -0
- package/dist/chunk-MLJ2I5US.js.map +1 -0
- package/dist/chunk-MQ422VVU.js +45 -0
- package/dist/chunk-MQ422VVU.js.map +1 -0
- package/dist/chunk-MTGH4EXD.js +27 -0
- package/dist/chunk-MTGH4EXD.js.map +1 -0
- package/dist/chunk-MX2JHIZP.js +29 -0
- package/dist/chunk-MX2JHIZP.js.map +1 -0
- package/dist/chunk-MYNYNET3.js +71 -0
- package/dist/chunk-MYNYNET3.js.map +1 -0
- package/dist/chunk-NBND7WAT.js +33 -0
- package/dist/chunk-NBND7WAT.js.map +1 -0
- package/dist/chunk-NEUEOUZA.js +62 -0
- package/dist/chunk-NEUEOUZA.js.map +1 -0
- package/dist/chunk-NLK2FJGF.js +52 -0
- package/dist/chunk-NLK2FJGF.js.map +1 -0
- package/dist/chunk-NOGEBCZM.js +38 -0
- package/dist/chunk-NOGEBCZM.js.map +1 -0
- package/dist/chunk-NRZS2NEG.js +213 -0
- package/dist/chunk-NRZS2NEG.js.map +1 -0
- package/dist/chunk-NSKMDSE7.js +63 -0
- package/dist/chunk-NSKMDSE7.js.map +1 -0
- package/dist/chunk-NZI53CGC.js +45 -0
- package/dist/chunk-NZI53CGC.js.map +1 -0
- package/dist/chunk-O5EHX5YI.js +3 -0
- package/dist/chunk-O5EHX5YI.js.map +1 -0
- package/dist/chunk-OAYDU5TD.js +104 -0
- package/dist/chunk-OAYDU5TD.js.map +1 -0
- package/dist/chunk-ODV2GIRU.js +63 -0
- package/dist/chunk-ODV2GIRU.js.map +1 -0
- package/dist/chunk-OEV4FPTR.js +140 -0
- package/dist/chunk-OEV4FPTR.js.map +1 -0
- package/dist/chunk-OMPF7GTV.js +63 -0
- package/dist/chunk-OMPF7GTV.js.map +1 -0
- package/dist/chunk-OWHK34K6.js +3 -0
- package/dist/chunk-OWHK34K6.js.map +1 -0
- package/dist/chunk-OYSLI33V.js +192 -0
- package/dist/chunk-OYSLI33V.js.map +1 -0
- package/dist/chunk-P6OAVA6S.js +301 -0
- package/dist/chunk-P6OAVA6S.js.map +1 -0
- package/dist/chunk-PKPSEUTH.js +416 -0
- package/dist/chunk-PKPSEUTH.js.map +1 -0
- package/dist/chunk-PKSF2WRO.js +20 -0
- package/dist/chunk-PKSF2WRO.js.map +1 -0
- package/dist/chunk-PO4IZSDA.js +79 -0
- package/dist/chunk-PO4IZSDA.js.map +1 -0
- package/dist/chunk-PUHHIN2C.js +476 -0
- package/dist/chunk-PUHHIN2C.js.map +1 -0
- package/dist/chunk-PXWQPR5U.js +166 -0
- package/dist/chunk-PXWQPR5U.js.map +1 -0
- package/dist/chunk-PZ5AY32C.js +9 -0
- package/dist/chunk-PZ5AY32C.js.map +1 -0
- package/dist/chunk-Q6LPYDSV.js +313 -0
- package/dist/chunk-Q6LPYDSV.js.map +1 -0
- package/dist/chunk-Q7AOMRRU.js +43 -0
- package/dist/chunk-Q7AOMRRU.js.map +1 -0
- package/dist/chunk-QCTPHFFT.js +21 -0
- package/dist/chunk-QCTPHFFT.js.map +1 -0
- package/dist/chunk-QDSHCGZP.js +33 -0
- package/dist/chunk-QDSHCGZP.js.map +1 -0
- package/dist/chunk-QGI7PAOJ.js +30 -0
- package/dist/chunk-QGI7PAOJ.js.map +1 -0
- package/dist/chunk-QPHGCZ22.js +22 -0
- package/dist/chunk-QPHGCZ22.js.map +1 -0
- package/dist/chunk-QQDFDCU7.js +93 -0
- package/dist/chunk-QQDFDCU7.js.map +1 -0
- package/dist/chunk-QXJIUF4T.js +15 -0
- package/dist/chunk-QXJIUF4T.js.map +1 -0
- package/dist/chunk-RFQAQV3K.js +118 -0
- package/dist/chunk-RFQAQV3K.js.map +1 -0
- package/dist/chunk-RJLDWZ2W.js +28 -0
- package/dist/chunk-RJLDWZ2W.js.map +1 -0
- package/dist/chunk-RMPQOZUE.js +3 -0
- package/dist/chunk-RMPQOZUE.js.map +1 -0
- package/dist/chunk-RSL3DLME.js +256 -0
- package/dist/chunk-RSL3DLME.js.map +1 -0
- package/dist/chunk-RXDCW5CH.js +38 -0
- package/dist/chunk-RXDCW5CH.js.map +1 -0
- package/dist/chunk-SACNJKU5.js +95 -0
- package/dist/chunk-SACNJKU5.js.map +1 -0
- package/dist/chunk-SECPVOGP.js +11 -0
- package/dist/chunk-SECPVOGP.js.map +1 -0
- package/dist/chunk-SFVHV7R3.js +311 -0
- package/dist/chunk-SFVHV7R3.js.map +1 -0
- package/dist/chunk-SG2BHFVT.js +134 -0
- package/dist/chunk-SG2BHFVT.js.map +1 -0
- package/dist/chunk-SGUAXELO.js +27 -0
- package/dist/chunk-SGUAXELO.js.map +1 -0
- package/dist/chunk-SHMJRRUY.js +3 -0
- package/dist/chunk-SHMJRRUY.js.map +1 -0
- package/dist/chunk-SQIVVHWN.js +23 -0
- package/dist/chunk-SQIVVHWN.js.map +1 -0
- package/dist/chunk-SU3R36OS.js +169 -0
- package/dist/chunk-SU3R36OS.js.map +1 -0
- package/dist/chunk-T2UW5EWA.js +327 -0
- package/dist/chunk-T2UW5EWA.js.map +1 -0
- package/dist/chunk-TKJXSSVT.js +94 -0
- package/dist/chunk-TKJXSSVT.js.map +1 -0
- package/dist/chunk-TS3EGKET.js +38 -0
- package/dist/chunk-TS3EGKET.js.map +1 -0
- package/dist/chunk-TTCWYWQU.js +31 -0
- package/dist/chunk-TTCWYWQU.js.map +1 -0
- package/dist/chunk-TY7P22ZE.js +334 -0
- package/dist/chunk-TY7P22ZE.js.map +1 -0
- package/dist/chunk-TZMNJIAU.js +50 -0
- package/dist/chunk-TZMNJIAU.js.map +1 -0
- package/dist/chunk-UBLERNL3.js +595 -0
- package/dist/chunk-UBLERNL3.js.map +1 -0
- package/dist/chunk-UCZQWXCW.js +216 -0
- package/dist/chunk-UCZQWXCW.js.map +1 -0
- package/dist/chunk-UIKJ4EUT.js +65 -0
- package/dist/chunk-UIKJ4EUT.js.map +1 -0
- package/dist/chunk-UJNINZMO.js +40 -0
- package/dist/chunk-UJNINZMO.js.map +1 -0
- package/dist/chunk-ULHJAUDC.js +78 -0
- package/dist/chunk-ULHJAUDC.js.map +1 -0
- package/dist/chunk-UVQZ4IPW.js +96 -0
- package/dist/chunk-UVQZ4IPW.js.map +1 -0
- package/dist/chunk-V23ZBHSL.js +69 -0
- package/dist/chunk-V23ZBHSL.js.map +1 -0
- package/dist/chunk-V2Q67K4F.js +32 -0
- package/dist/chunk-V2Q67K4F.js.map +1 -0
- package/dist/chunk-V5N6TAJC.js +395 -0
- package/dist/chunk-V5N6TAJC.js.map +1 -0
- package/dist/chunk-V6OUDHXW.js +31 -0
- package/dist/chunk-V6OUDHXW.js.map +1 -0
- package/dist/chunk-VHO66UIW.js +29 -0
- package/dist/chunk-VHO66UIW.js.map +1 -0
- package/dist/chunk-VMMM2RIG.js +8 -0
- package/dist/chunk-VMMM2RIG.js.map +1 -0
- package/dist/chunk-VNIVHR4Z.js +327 -0
- package/dist/chunk-VNIVHR4Z.js.map +1 -0
- package/dist/chunk-VQYOEDXN.js +3 -0
- package/dist/chunk-VQYOEDXN.js.map +1 -0
- package/dist/chunk-VSXW336V.js +13 -0
- package/dist/chunk-VSXW336V.js.map +1 -0
- package/dist/chunk-VT3TJVSJ.js +118 -0
- package/dist/chunk-VT3TJVSJ.js.map +1 -0
- package/dist/chunk-WCKHXPYN.js +68 -0
- package/dist/chunk-WCKHXPYN.js.map +1 -0
- package/dist/chunk-WCSVGTBO.js +3 -0
- package/dist/chunk-WCSVGTBO.js.map +1 -0
- package/dist/chunk-WGJTOHEA.js +3 -0
- package/dist/chunk-WGJTOHEA.js.map +1 -0
- package/dist/chunk-WUXO6KCX.js +40 -0
- package/dist/chunk-WUXO6KCX.js.map +1 -0
- package/dist/chunk-XBHNK4ER.js +92 -0
- package/dist/chunk-XBHNK4ER.js.map +1 -0
- package/dist/chunk-XBXHWNNS.js +44 -0
- package/dist/chunk-XBXHWNNS.js.map +1 -0
- package/dist/chunk-XHM4DSKW.js +17 -0
- package/dist/chunk-XHM4DSKW.js.map +1 -0
- package/dist/chunk-XU3QEACK.js +3 -0
- package/dist/chunk-XU3QEACK.js.map +1 -0
- package/dist/chunk-YAAGMUI6.js +29 -0
- package/dist/chunk-YAAGMUI6.js.map +1 -0
- package/dist/chunk-YAVF46NP.js +103 -0
- package/dist/chunk-YAVF46NP.js.map +1 -0
- package/dist/chunk-YDSW4PMT.js +3 -0
- package/dist/chunk-YDSW4PMT.js.map +1 -0
- package/dist/chunk-YJSUFOSO.js +27 -0
- package/dist/chunk-YJSUFOSO.js.map +1 -0
- package/dist/chunk-YL2AW5T6.js +3 -0
- package/dist/chunk-YL2AW5T6.js.map +1 -0
- package/dist/chunk-YLVDMRLC.js +40 -0
- package/dist/chunk-YLVDMRLC.js.map +1 -0
- package/dist/chunk-YMAXW25I.js +587 -0
- package/dist/chunk-YMAXW25I.js.map +1 -0
- package/dist/chunk-YMT764VJ.js +81 -0
- package/dist/chunk-YMT764VJ.js.map +1 -0
- package/dist/chunk-YRBASM6H.js +160 -0
- package/dist/chunk-YRBASM6H.js.map +1 -0
- package/dist/chunk-Z3EJA3GJ.js +3 -0
- package/dist/chunk-Z3EJA3GJ.js.map +1 -0
- package/dist/chunk-Z5W5Q64K.js +3 -0
- package/dist/chunk-Z5W5Q64K.js.map +1 -0
- package/dist/chunk-Z7XTHXGI.js +87 -0
- package/dist/chunk-Z7XTHXGI.js.map +1 -0
- package/dist/chunk-ZNKTJGLV.js +183 -0
- package/dist/chunk-ZNKTJGLV.js.map +1 -0
- package/dist/chunk-ZO5HCIKL.js +11 -0
- package/dist/chunk-ZO5HCIKL.js.map +1 -0
- package/dist/chunk-ZQN6MC2O.js +90 -0
- package/dist/chunk-ZQN6MC2O.js.map +1 -0
- package/dist/chunk-ZS26TLLE.js +19 -0
- package/dist/chunk-ZS26TLLE.js.map +1 -0
- package/dist/chunk-ZSQQH3P2.js +96 -0
- package/dist/chunk-ZSQQH3P2.js.map +1 -0
- package/dist/contracts/index.d.ts +2 -0
- package/dist/contracts/index.js +3 -0
- package/dist/contracts/index.js.map +1 -0
- package/dist/contracts/objects/banner.d.ts +31 -0
- package/dist/contracts/objects/catalog.d.ts +65 -0
- package/dist/contracts/objects/common.d.ts +21 -0
- package/dist/contracts/objects/config.d.ts +14 -0
- package/dist/contracts/objects/discount.d.ts +79 -0
- package/dist/contracts/objects/identity.d.ts +8 -0
- package/dist/contracts/objects/index.d.ts +10 -0
- package/dist/contracts/objects/index.js +3 -0
- package/dist/contracts/objects/index.js.map +1 -0
- package/dist/contracts/objects/inventory.d.ts +34 -0
- package/dist/contracts/objects/order.d.ts +48 -0
- package/dist/contracts/objects/pricing.d.ts +18 -0
- package/dist/contracts/objects/shipping.d.ts +112 -0
- package/dist/contracts/ports/index.d.ts +83 -0
- package/dist/contracts/ports/index.js +3 -0
- package/dist/contracts/ports/index.js.map +1 -0
- package/dist/contracts/semver/index.d.ts +13 -0
- package/dist/contracts/semver/index.js +43 -0
- package/dist/contracts/semver/index.js.map +1 -0
- package/dist/contracts/semver/version.d.ts +15 -0
- package/dist/contracts/views/cart.d.ts +18 -0
- package/dist/contracts/views/catalog.d.ts +38 -0
- package/dist/contracts/views/common.d.ts +32 -0
- package/dist/contracts/views/fixtures/cart.d.ts +6 -0
- package/dist/contracts/views/fixtures/catalog.d.ts +10 -0
- package/dist/contracts/views/fixtures/home.d.ts +6 -0
- package/dist/contracts/views/fixtures/index.d.ts +30 -0
- package/dist/contracts/views/fixtures/index.js +184 -0
- package/dist/contracts/views/fixtures/index.js.map +1 -0
- package/dist/contracts/views/fixtures/product-detail.d.ts +6 -0
- package/dist/contracts/views/home.d.ts +43 -0
- package/dist/contracts/views/index.d.ts +7 -0
- package/dist/contracts/views/index.js +45 -0
- package/dist/contracts/views/index.js.map +1 -0
- package/dist/contracts/views/product-detail.d.ts +70 -0
- package/dist/contracts/views/requisites.d.ts +75 -0
- package/dist/contracts/views/slots.d.ts +15 -0
- package/dist/core/components/NavLink.d.ts +12 -0
- package/dist/core/components/NavLink.js +27 -0
- package/dist/core/components/NavLink.js.map +1 -0
- package/dist/core/components/ThemeToggle.d.ts +1 -0
- package/dist/core/components/ThemeToggle.js +34 -0
- package/dist/core/components/ThemeToggle.js.map +1 -0
- package/dist/core/components/cart/CartDrawer.d.ts +1 -0
- package/dist/core/components/cart/CartDrawer.js +4 -0
- package/dist/core/components/cart/CartDrawer.js.map +1 -0
- package/dist/core/components/cart/CartItem.d.ts +1 -0
- package/dist/core/components/cart/CartItem.js +4 -0
- package/dist/core/components/cart/CartItem.js.map +1 -0
- package/dist/core/components/catalog/ActiveFilters.d.ts +2 -0
- package/dist/core/components/catalog/ActiveFilters.js +4 -0
- package/dist/core/components/catalog/ActiveFilters.js.map +1 -0
- package/dist/core/components/catalog/FilterSidebar.d.ts +2 -0
- package/dist/core/components/catalog/FilterSidebar.js +4 -0
- package/dist/core/components/catalog/FilterSidebar.js.map +1 -0
- package/dist/core/components/catalog/ModificationSelector.d.ts +2 -0
- package/dist/core/components/catalog/ModificationSelector.js +4 -0
- package/dist/core/components/catalog/ModificationSelector.js.map +1 -0
- package/dist/core/components/catalog/ProductCard.d.ts +1 -0
- package/dist/core/components/catalog/ProductCard.js +4 -0
- package/dist/core/components/catalog/ProductCard.js.map +1 -0
- package/dist/core/components/catalog/ProductCharacteristics.d.ts +1 -0
- package/dist/core/components/catalog/ProductCharacteristics.js +4 -0
- package/dist/core/components/catalog/ProductCharacteristics.js.map +1 -0
- package/dist/core/components/catalog/ProductGallery.d.ts +1 -0
- package/dist/core/components/catalog/ProductGallery.js +4 -0
- package/dist/core/components/catalog/ProductGallery.js.map +1 -0
- package/dist/core/components/catalog/StockDisplay.d.ts +1 -0
- package/dist/core/components/catalog/StockDisplay.js +4 -0
- package/dist/core/components/catalog/StockDisplay.js.map +1 -0
- package/dist/core/components/checkout/CheckoutAuthBlock.d.ts +1 -0
- package/dist/core/components/checkout/CheckoutAuthBlock.js +4 -0
- package/dist/core/components/checkout/CheckoutAuthBlock.js.map +1 -0
- package/dist/core/components/checkout/CheckoutContactForm.d.ts +1 -0
- package/dist/core/components/checkout/CheckoutContactForm.js +4 -0
- package/dist/core/components/checkout/CheckoutContactForm.js.map +1 -0
- package/dist/core/components/checkout/CheckoutDeliveryForm.d.ts +1 -0
- package/dist/core/components/checkout/CheckoutDeliveryForm.js +4 -0
- package/dist/core/components/checkout/CheckoutDeliveryForm.js.map +1 -0
- package/dist/core/components/checkout/CheckoutOrderSummary.d.ts +1 -0
- package/dist/core/components/checkout/CheckoutOrderSummary.js +4 -0
- package/dist/core/components/checkout/CheckoutOrderSummary.js.map +1 -0
- package/dist/core/components/checkout/CheckoutPaymentForm.d.ts +1 -0
- package/dist/core/components/checkout/CheckoutPaymentForm.js +4 -0
- package/dist/core/components/checkout/CheckoutPaymentForm.js.map +1 -0
- package/dist/core/components/checkout/CheckoutRecipientForm.d.ts +1 -0
- package/dist/core/components/checkout/CheckoutRecipientForm.js +4 -0
- package/dist/core/components/checkout/CheckoutRecipientForm.js.map +1 -0
- package/dist/core/components/profile/AddressesList.d.ts +1 -0
- package/dist/core/components/profile/AddressesList.js +4 -0
- package/dist/core/components/profile/AddressesList.js.map +1 -0
- package/dist/core/components/profile/AvatarUpload.d.ts +1 -0
- package/dist/core/components/profile/AvatarUpload.js +4 -0
- package/dist/core/components/profile/AvatarUpload.js.map +1 -0
- package/dist/core/components/profile/RecipientsList.d.ts +1 -0
- package/dist/core/components/profile/RecipientsList.js +4 -0
- package/dist/core/components/profile/RecipientsList.js.map +1 -0
- package/dist/core/components/reviews/ProductReviews.d.ts +1 -0
- package/dist/core/components/reviews/ProductReviews.js +4 -0
- package/dist/core/components/reviews/ProductReviews.js.map +1 -0
- package/dist/core/components/reviews/StarRating.d.ts +1 -0
- package/dist/core/components/reviews/StarRating.js +4 -0
- package/dist/core/components/reviews/StarRating.js.map +1 -0
- package/dist/core/hooks/use-toast.d.ts +2 -0
- package/dist/core/hooks/use-toast.js +4 -0
- package/dist/core/hooks/use-toast.js.map +1 -0
- package/dist/core/hooks/useAddressBook.d.ts +32 -0
- package/dist/core/hooks/useAddressBook.js +27 -0
- package/dist/core/hooks/useAddressBook.js.map +1 -0
- package/dist/core/hooks/useAuth.d.ts +21 -0
- package/dist/core/hooks/useAuth.js +6 -0
- package/dist/core/hooks/useAuth.js.map +1 -0
- package/dist/core/hooks/useBanners.d.ts +14 -0
- package/dist/core/hooks/useBanners.js +5 -0
- package/dist/core/hooks/useBanners.js.map +1 -0
- package/dist/core/hooks/useCart.d.ts +2 -0
- package/dist/core/hooks/useCart.js +4 -0
- package/dist/core/hooks/useCart.js.map +1 -0
- package/dist/core/hooks/useDiscountedPrice.d.ts +24 -0
- package/dist/core/hooks/useDiscountedPrice.js +5 -0
- package/dist/core/hooks/useDiscountedPrice.js.map +1 -0
- package/dist/core/hooks/usePriceType.d.ts +11 -0
- package/dist/core/hooks/usePriceType.js +8 -0
- package/dist/core/hooks/usePriceType.js.map +1 -0
- package/dist/core/hooks/useProductReviews.d.ts +36 -0
- package/dist/core/hooks/useProductReviews.js +9 -0
- package/dist/core/hooks/useProductReviews.js.map +1 -0
- package/dist/core/hooks/useProductsWithStock.d.ts +2 -0
- package/dist/core/hooks/useProductsWithStock.js +4 -0
- package/dist/core/hooks/useProductsWithStock.js.map +1 -0
- package/dist/core/hooks/useRecipientBook.d.ts +27 -0
- package/dist/core/hooks/useRecipientBook.js +27 -0
- package/dist/core/hooks/useRecipientBook.js.map +1 -0
- package/dist/core/hooks/useShippingDirectory.d.ts +23 -0
- package/dist/core/hooks/useShippingDirectory.js +40 -0
- package/dist/core/hooks/useShippingDirectory.js.map +1 -0
- package/dist/core/hooks/useStock.d.ts +20 -0
- package/dist/core/hooks/useStock.js +5 -0
- package/dist/core/hooks/useStock.js.map +1 -0
- package/dist/core/index.d.ts +39 -0
- package/dist/core/index.js +41 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/lib/auth-client.d.ts +18 -0
- package/dist/core/lib/auth-client.js +4 -0
- package/dist/core/lib/auth-client.js.map +1 -0
- package/dist/core/lib/auth-session.d.ts +14 -0
- package/dist/core/lib/auth-session.js +4 -0
- package/dist/core/lib/auth-session.js.map +1 -0
- package/dist/core/lib/banners.d.ts +18 -0
- package/dist/core/lib/banners.js +4 -0
- package/dist/core/lib/banners.js.map +1 -0
- package/dist/core/lib/discounts.d.ts +30 -0
- package/dist/core/lib/discounts.js +4 -0
- package/dist/core/lib/discounts.js.map +1 -0
- package/dist/core/lib/price-type.d.ts +19 -0
- package/dist/core/lib/price-type.js +4 -0
- package/dist/core/lib/price-type.js.map +1 -0
- package/dist/core/lib/review-form.d.ts +20 -0
- package/dist/core/lib/review-form.js +4 -0
- package/dist/core/lib/review-form.js.map +1 -0
- package/dist/core/lib/reviews.d.ts +28 -0
- package/dist/core/lib/reviews.js +4 -0
- package/dist/core/lib/reviews.js.map +1 -0
- package/dist/core/lib/section-filters.d.ts +17 -0
- package/dist/core/lib/section-filters.js +13 -0
- package/dist/core/lib/section-filters.js.map +1 -0
- package/dist/core/lib/shipping-directory.d.ts +24 -0
- package/dist/core/lib/shipping-directory.js +4 -0
- package/dist/core/lib/shipping-directory.js.map +1 -0
- package/dist/core/lib/stock.d.ts +19 -0
- package/dist/core/lib/stock.js +4 -0
- package/dist/core/lib/stock.js.map +1 -0
- package/dist/core/lib/user-addresses.d.ts +30 -0
- package/dist/core/lib/user-addresses.js +4 -0
- package/dist/core/lib/user-addresses.js.map +1 -0
- package/dist/core/lib/user-recipients.d.ts +30 -0
- package/dist/core/lib/user-recipients.js +4 -0
- package/dist/core/lib/user-recipients.js.map +1 -0
- package/dist/core/providers/CMSProvider.d.ts +9 -0
- package/dist/core/providers/CMSProvider.js +8 -0
- package/dist/core/providers/CMSProvider.js.map +1 -0
- package/dist/data-supabase/catalogRepository.d.ts +3 -0
- package/dist/data-supabase/identityProvider.d.ts +3 -0
- package/dist/data-supabase/index.d.ts +5 -0
- package/dist/data-supabase/index.js +497 -0
- package/dist/data-supabase/index.js.map +1 -0
- package/dist/data-supabase/mappers.d.ts +17 -0
- package/dist/data-supabase/orderRepository.d.ts +3 -0
- package/dist/data-supabase/scope.d.ts +7 -0
- package/dist/db/actor.d.ts +57 -0
- package/dist/db/client.d.ts +46 -0
- package/dist/db/index.d.ts +12 -0
- package/dist/db/index.js +88 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/with-actor.d.ts +37 -0
- package/dist/domain/discounts.d.ts +3 -0
- package/dist/domain/discounts.js +4 -0
- package/dist/domain/discounts.js.map +1 -0
- package/dist/domain/index.d.ts +6 -0
- package/dist/domain/index.js +9 -0
- package/dist/domain/index.js.map +1 -0
- package/dist/domain/inventory.d.ts +13 -0
- package/dist/domain/inventory.js +4 -0
- package/dist/domain/inventory.js.map +1 -0
- package/dist/domain/money.d.ts +30 -0
- package/dist/domain/money.js +4 -0
- package/dist/domain/money.js.map +1 -0
- package/dist/domain/pricing.d.ts +7 -0
- package/dist/domain/pricing.js +4 -0
- package/dist/domain/pricing.js.map +1 -0
- package/dist/domain/shipping.d.ts +68 -0
- package/dist/domain/shipping.js +5 -0
- package/dist/domain/shipping.js.map +1 -0
- package/dist/domain/user-categories/conditions.d.ts +14 -0
- package/dist/domain/user-categories/engine.d.ts +13 -0
- package/dist/domain/user-categories/index.d.ts +2 -0
- package/dist/domain/user-categories/index.js +4 -0
- package/dist/domain/user-categories/index.js.map +1 -0
- package/dist/domain/user-categories/types.d.ts +50 -0
- package/dist/i18n/I18nProvider.d.ts +23 -0
- package/dist/i18n/catalogs/en/admin/banners.d.ts +3 -0
- package/dist/i18n/catalogs/en/admin/common.d.ts +3 -0
- package/dist/i18n/catalogs/en/admin/dashboard.d.ts +3 -0
- package/dist/i18n/catalogs/en/admin/discounts.d.ts +3 -0
- package/dist/i18n/catalogs/en/admin/index.d.ts +3 -0
- package/dist/i18n/catalogs/en/admin/nav.d.ts +3 -0
- package/dist/i18n/catalogs/en/admin/orders.d.ts +3 -0
- package/dist/i18n/catalogs/en/admin/plugins.d.ts +3 -0
- package/dist/i18n/catalogs/en/admin/prices.d.ts +3 -0
- package/dist/i18n/catalogs/en/admin/products.d.ts +3 -0
- package/dist/i18n/catalogs/en/admin/properties.d.ts +3 -0
- package/dist/i18n/catalogs/en/admin/reviews.d.ts +3 -0
- package/dist/i18n/catalogs/en/admin/sections.d.ts +3 -0
- package/dist/i18n/catalogs/en/admin/settings.d.ts +3 -0
- package/dist/i18n/catalogs/en/admin/shipping.d.ts +3 -0
- package/dist/i18n/catalogs/en/admin/themes.d.ts +3 -0
- package/dist/i18n/catalogs/en/admin/users.d.ts +3 -0
- package/dist/i18n/catalogs/en/admin/validator.d.ts +3 -0
- package/dist/i18n/catalogs/en/app.d.ts +14 -0
- package/dist/i18n/catalogs/en/auth.d.ts +3 -0
- package/dist/i18n/catalogs/en/breadcrumbs.d.ts +3 -0
- package/dist/i18n/catalogs/en/cart.d.ts +3 -0
- package/dist/i18n/catalogs/en/catalog.d.ts +3 -0
- package/dist/i18n/catalogs/en/checkout.d.ts +3 -0
- package/dist/i18n/catalogs/en/common.d.ts +3 -0
- package/dist/i18n/catalogs/en/home.d.ts +3 -0
- package/dist/i18n/catalogs/en/index.d.ts +12 -0
- package/dist/i18n/catalogs/en/nav.d.ts +3 -0
- package/dist/i18n/catalogs/en/product.d.ts +3 -0
- package/dist/i18n/catalogs/en/profile.d.ts +3 -0
- package/dist/i18n/catalogs/en/properties.d.ts +3 -0
- package/dist/i18n/catalogs/en/reviews.d.ts +3 -0
- package/dist/i18n/catalogs/en/validation.d.ts +3 -0
- package/dist/i18n/catalogs/uk/admin/banners.d.ts +57 -0
- package/dist/i18n/catalogs/uk/admin/common.d.ts +16 -0
- package/dist/i18n/catalogs/uk/admin/dashboard.d.ts +18 -0
- package/dist/i18n/catalogs/uk/admin/discounts.d.ts +67 -0
- package/dist/i18n/catalogs/uk/admin/index.d.ts +710 -0
- package/dist/i18n/catalogs/uk/admin/nav.d.ts +32 -0
- package/dist/i18n/catalogs/uk/admin/orders.d.ts +67 -0
- package/dist/i18n/catalogs/uk/admin/plugins.d.ts +53 -0
- package/dist/i18n/catalogs/uk/admin/prices.d.ts +16 -0
- package/dist/i18n/catalogs/uk/admin/products.d.ts +74 -0
- package/dist/i18n/catalogs/uk/admin/properties.d.ts +63 -0
- package/dist/i18n/catalogs/uk/admin/reviews.d.ts +24 -0
- package/dist/i18n/catalogs/uk/admin/sections.d.ts +18 -0
- package/dist/i18n/catalogs/uk/admin/settings.d.ts +11 -0
- package/dist/i18n/catalogs/uk/admin/shipping.d.ts +96 -0
- package/dist/i18n/catalogs/uk/admin/themes.d.ts +21 -0
- package/dist/i18n/catalogs/uk/admin/users.d.ts +96 -0
- package/dist/i18n/catalogs/uk/admin/validator.d.ts +30 -0
- package/dist/i18n/catalogs/uk/app.d.ts +15 -0
- package/dist/i18n/catalogs/uk/auth.d.ts +51 -0
- package/dist/i18n/catalogs/uk/breadcrumbs.d.ts +4 -0
- package/dist/i18n/catalogs/uk/cart.d.ts +21 -0
- package/dist/i18n/catalogs/uk/catalog.d.ts +22 -0
- package/dist/i18n/catalogs/uk/checkout.d.ts +96 -0
- package/dist/i18n/catalogs/uk/common.d.ts +83 -0
- package/dist/i18n/catalogs/uk/home.d.ts +5 -0
- package/dist/i18n/catalogs/uk/index.d.ts +1139 -0
- package/dist/i18n/catalogs/uk/nav.d.ts +7 -0
- package/dist/i18n/catalogs/uk/product.d.ts +25 -0
- package/dist/i18n/catalogs/uk/profile.d.ts +87 -0
- package/dist/i18n/catalogs/uk/properties.d.ts +16 -0
- package/dist/i18n/catalogs/uk/reviews.d.ts +26 -0
- package/dist/i18n/catalogs/uk/validation.d.ts +33 -0
- package/dist/i18n/index.d.ts +3 -0
- package/dist/i18n/index.js +2779 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/i18n/translator.d.ts +19 -0
- package/dist/i18n/types.d.ts +14 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/plugin-sdk/definePlugin.d.ts +9 -0
- package/dist/plugin-sdk/index.d.ts +6 -0
- package/dist/plugin-sdk/index.js +266 -0
- package/dist/plugin-sdk/index.js.map +1 -0
- package/dist/plugin-sdk/server/config-db.d.ts +22 -0
- package/dist/plugin-sdk/server/guard.d.ts +17 -0
- package/dist/plugin-sdk/server/index.d.ts +42 -0
- package/dist/plugin-sdk/server/index.js +191 -0
- package/dist/plugin-sdk/server/index.js.map +1 -0
- package/dist/plugin-sdk/server/table-db.d.ts +36 -0
- package/dist/plugin-sdk/types.d.ts +66 -0
- package/dist/plugin-sdk/usePluginConfig.d.ts +22 -0
- package/dist/plugin-sdk/usePluginT.d.ts +19 -0
- package/dist/plugin-sdk/usePluginTable.d.ts +12 -0
- package/dist/plugins/HookRegistry.d.ts +29 -0
- package/dist/plugins/PluginLoader.d.ts +19 -0
- package/dist/plugins/PluginSlot.d.ts +21 -0
- package/dist/plugins/PluginSlot.js +5 -0
- package/dist/plugins/PluginSlot.js.map +1 -0
- package/dist/plugins/adminLifecycle.d.ts +27 -0
- package/dist/plugins/bootstrap.d.ts +16 -0
- package/dist/plugins/bootstrap.js +5 -0
- package/dist/plugins/bootstrap.js.map +1 -0
- package/dist/plugins/hooks.d.ts +67 -0
- package/dist/plugins/index.d.ts +12 -0
- package/dist/plugins/index.js +171 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/pluginRepository.d.ts +19 -0
- package/dist/plugins/server/index.d.ts +25 -0
- package/dist/plugins/server/index.js +95 -0
- package/dist/plugins/server/index.js.map +1 -0
- package/dist/plugins/server/registry-db.d.ts +19 -0
- package/dist/plugins/types.d.ts +126 -0
- package/dist/plugins/types.js +4 -0
- package/dist/plugins/types.js.map +1 -0
- package/dist/plugins/validatePluginModule.d.ts +13 -0
- package/dist/profile-ui/AddressesList.d.ts +9 -0
- package/dist/profile-ui/AddressesList.js +4 -0
- package/dist/profile-ui/AddressesList.js.map +1 -0
- package/dist/profile-ui/AvatarUpload.d.ts +28 -0
- package/dist/profile-ui/AvatarUpload.js +4 -0
- package/dist/profile-ui/AvatarUpload.js.map +1 -0
- package/dist/profile-ui/RecipientsList.d.ts +9 -0
- package/dist/profile-ui/RecipientsList.js +4 -0
- package/dist/profile-ui/RecipientsList.js.map +1 -0
- package/dist/profile-ui/index.d.ts +3 -0
- package/dist/profile-ui/index.js +6 -0
- package/dist/profile-ui/index.js.map +1 -0
- package/dist/react-query/EngineProvider.d.ts +9 -0
- package/dist/react-query/hooks.d.ts +8 -0
- package/dist/react-query/index.d.ts +7 -0
- package/dist/react-query/index.js +173 -0
- package/dist/react-query/index.js.map +1 -0
- package/dist/react-query/queries.d.ts +31 -0
- package/dist/react-query/queries.js +4 -0
- package/dist/react-query/queries.js.map +1 -0
- package/dist/react-query/useCart.d.ts +32 -0
- package/dist/react-query/useFormatPrice.d.ts +12 -0
- package/dist/reviews-ui/ProductReviews.d.ts +18 -0
- package/dist/reviews-ui/ProductReviews.js +7 -0
- package/dist/reviews-ui/ProductReviews.js.map +1 -0
- package/dist/reviews-ui/ReviewCard.d.ts +7 -0
- package/dist/reviews-ui/ReviewCard.js +5 -0
- package/dist/reviews-ui/ReviewCard.js.map +1 -0
- package/dist/reviews-ui/ReviewForm.d.ts +25 -0
- package/dist/reviews-ui/ReviewForm.js +5 -0
- package/dist/reviews-ui/ReviewForm.js.map +1 -0
- package/dist/reviews-ui/ReviewRichTextEditor.d.ts +8 -0
- package/dist/reviews-ui/ReviewRichTextEditor.js +4 -0
- package/dist/reviews-ui/ReviewRichTextEditor.js.map +1 -0
- package/dist/reviews-ui/StarRating.d.ts +8 -0
- package/dist/reviews-ui/StarRating.js +4 -0
- package/dist/reviews-ui/StarRating.js.map +1 -0
- package/dist/reviews-ui/index.d.ts +5 -0
- package/dist/reviews-ui/index.js +8 -0
- package/dist/reviews-ui/index.js.map +1 -0
- package/dist/runtime/config.d.ts +42 -0
- package/dist/runtime/index.d.ts +36 -0
- package/dist/runtime/index.js +36 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/schema/auth.d.ts +623 -0
- package/dist/schema/index.d.ts +17 -0
- package/dist/schema/media.d.ts +143 -0
- package/dist/schema/relations.d.ts +202 -0
- package/dist/schema/relations.js +1494 -0
- package/dist/schema/relations.js.map +1 -0
- package/dist/schema/schema.d.ts +7224 -0
- package/dist/schema/schema.js +1085 -0
- package/dist/schema/schema.js.map +1 -0
- package/dist/schema/types.d.ts +74 -0
- package/dist/schema/types.js +3 -0
- package/dist/schema/types.js.map +1 -0
- package/dist/storefront/client.d.ts +7 -0
- package/dist/storefront/index.d.ts +3 -0
- package/dist/storefront/index.js +5 -0
- package/dist/storefront/index.js.map +1 -0
- package/dist/storefront/loaders/addresses.d.ts +47 -0
- package/dist/storefront/loaders/banners.d.ts +19 -0
- package/dist/storefront/loaders/catalog-filters.d.ts +56 -0
- package/dist/storefront/loaders/catalog-products.d.ts +27 -0
- package/dist/storefront/loaders/categories.d.ts +19 -0
- package/dist/storefront/loaders/db.d.ts +42 -0
- package/dist/storefront/loaders/discounts.d.ts +15 -0
- package/dist/storefront/loaders/entities/banner.d.ts +449 -0
- package/dist/storefront/loaders/entities/catalog-product.d.ts +135 -0
- package/dist/storefront/loaders/entities/discount.d.ts +17 -0
- package/dist/storefront/loaders/entities/home-product.d.ts +130 -0
- package/dist/storefront/loaders/entities/modification.d.ts +259 -0
- package/dist/storefront/loaders/entities/order.d.ts +616 -0
- package/dist/storefront/loaders/entities/price.d.ts +108 -0
- package/dist/storefront/loaders/entities/product.d.ts +313 -0
- package/dist/storefront/loaders/entities/property.d.ts +414 -0
- package/dist/storefront/loaders/entities/section.d.ts +293 -0
- package/dist/storefront/loaders/home-sections.d.ts +20 -0
- package/dist/storefront/loaders/home.d.ts +31 -0
- package/dist/storefront/loaders/index.d.ts +48 -0
- package/dist/storefront/loaders/index.js +4 -0
- package/dist/storefront/loaders/index.js.map +1 -0
- package/dist/storefront/loaders/modification-values.d.ts +23 -0
- package/dist/storefront/loaders/order-create.d.ts +52 -0
- package/dist/storefront/loaders/order-statuses.d.ts +8 -0
- package/dist/storefront/loaders/orders.d.ts +27 -0
- package/dist/storefront/loaders/pickup-points.d.ts +6 -0
- package/dist/storefront/loaders/pricing.d.ts +10 -0
- package/dist/storefront/loaders/product-detail.d.ts +22 -0
- package/dist/storefront/loaders/products.d.ts +38 -0
- package/dist/storefront/loaders/profile.d.ts +37 -0
- package/dist/storefront/loaders/properties.d.ts +16 -0
- package/dist/storefront/loaders/property-option.d.ts +18 -0
- package/dist/storefront/loaders/property-values.d.ts +256 -0
- package/dist/storefront/loaders/recipients.d.ts +52 -0
- package/dist/storefront/loaders/reviews-write.d.ts +26 -0
- package/dist/storefront/loaders/reviews.d.ts +57 -0
- package/dist/storefront/loaders/sections.d.ts +13 -0
- package/dist/storefront/loaders/session.d.ts +28 -0
- package/dist/storefront/loaders/shipping.d.ts +57 -0
- package/dist/storefront/loaders/sitemap.d.ts +38 -0
- package/dist/storefront/loaders/stock-info.d.ts +38 -0
- package/dist/storefront/loaders/stock.d.ts +24 -0
- package/dist/storefront/seo/index.d.ts +2 -0
- package/dist/storefront/seo/index.js +4 -0
- package/dist/storefront/seo/index.js.map +1 -0
- package/dist/storefront/seo/robots.d.ts +2 -0
- package/dist/storefront/seo/sitemap.d.ts +11 -0
- package/dist/storefront-routes/active-theme.d.ts +14 -0
- package/dist/storefront-routes/active-theme.js +13 -0
- package/dist/storefront-routes/active-theme.js.map +1 -0
- package/dist/storefront-routes/components/BannerSlider.d.ts +8 -0
- package/dist/storefront-routes/components/BannerSlider.js +3 -0
- package/dist/storefront-routes/components/BannerSlider.js.map +1 -0
- package/dist/storefront-routes/components/ProductCarousel.d.ts +20 -0
- package/dist/storefront-routes/components/ProductCarousel.js +3 -0
- package/dist/storefront-routes/components/ProductCarousel.js.map +1 -0
- package/dist/storefront-routes/components/SetPasswordForm.d.ts +8 -0
- package/dist/storefront-routes/components/SetPasswordForm.js +3 -0
- package/dist/storefront-routes/components/SetPasswordForm.js.map +1 -0
- package/dist/storefront-routes/components/SsrProductGrid.d.ts +12 -0
- package/dist/storefront-routes/components/SsrProductGrid.js +3 -0
- package/dist/storefront-routes/components/SsrProductGrid.js.map +1 -0
- package/dist/storefront-routes/index.d.ts +6 -0
- package/dist/storefront-routes/index.js +14 -0
- package/dist/storefront-routes/index.js.map +1 -0
- package/dist/storefront-routes/pages/Auth.d.ts +2 -0
- package/dist/storefront-routes/pages/Auth.js +400 -0
- package/dist/storefront-routes/pages/Auth.js.map +1 -0
- package/dist/storefront-routes/pages/AuthInvite.d.ts +1 -0
- package/dist/storefront-routes/pages/AuthInvite.js +56 -0
- package/dist/storefront-routes/pages/AuthInvite.js.map +1 -0
- package/dist/storefront-routes/pages/AuthSetPassword.d.ts +12 -0
- package/dist/storefront-routes/pages/AuthSetPassword.js +40 -0
- package/dist/storefront-routes/pages/AuthSetPassword.js.map +1 -0
- package/dist/storefront-routes/pages/Cart.d.ts +5 -0
- package/dist/storefront-routes/pages/Cart.js +42 -0
- package/dist/storefront-routes/pages/Cart.js.map +1 -0
- package/dist/storefront-routes/pages/Catalog.d.ts +12 -0
- package/dist/storefront-routes/pages/Catalog.js +40 -0
- package/dist/storefront-routes/pages/Catalog.js.map +1 -0
- package/dist/storefront-routes/pages/CatalogSection.d.ts +13 -0
- package/dist/storefront-routes/pages/CatalogSection.js +65 -0
- package/dist/storefront-routes/pages/CatalogSection.js.map +1 -0
- package/dist/storefront-routes/pages/Checkout.d.ts +1 -0
- package/dist/storefront-routes/pages/Checkout.js +281 -0
- package/dist/storefront-routes/pages/Checkout.js.map +1 -0
- package/dist/storefront-routes/pages/Home.d.ts +15 -0
- package/dist/storefront-routes/pages/Home.js +10 -0
- package/dist/storefront-routes/pages/Home.js.map +1 -0
- package/dist/storefront-routes/pages/OrderSuccess.d.ts +1 -0
- package/dist/storefront-routes/pages/OrderSuccess.js +186 -0
- package/dist/storefront-routes/pages/OrderSuccess.js.map +1 -0
- package/dist/storefront-routes/pages/ProductDetail.d.ts +11 -0
- package/dist/storefront-routes/pages/ProductDetail.js +475 -0
- package/dist/storefront-routes/pages/ProductDetail.js.map +1 -0
- package/dist/storefront-routes/pages/Profile.d.ts +1 -0
- package/dist/storefront-routes/pages/Profile.js +133 -0
- package/dist/storefront-routes/pages/Profile.js.map +1 -0
- package/dist/storefront-routes/pages/ProfileOrderDetail.d.ts +1 -0
- package/dist/storefront-routes/pages/ProfileOrderDetail.js +280 -0
- package/dist/storefront-routes/pages/ProfileOrderDetail.js.map +1 -0
- package/dist/storefront-routes/pages/ProfileOrders.d.ts +1 -0
- package/dist/storefront-routes/pages/ProfileOrders.js +131 -0
- package/dist/storefront-routes/pages/ProfileOrders.js.map +1 -0
- package/dist/storefront-routes/pages/ProfileSettings.d.ts +1 -0
- package/dist/storefront-routes/pages/ProfileSettings.js +344 -0
- package/dist/storefront-routes/pages/ProfileSettings.js.map +1 -0
- package/dist/storefront-routes/pages/Properties.d.ts +5 -0
- package/dist/storefront-routes/pages/Properties.js +53 -0
- package/dist/storefront-routes/pages/Properties.js.map +1 -0
- package/dist/storefront-routes/pages/PropertyDetail.d.ts +6 -0
- package/dist/storefront-routes/pages/PropertyDetail.js +78 -0
- package/dist/storefront-routes/pages/PropertyDetail.js.map +1 -0
- package/dist/storefront-routes/pages/PropertyPage.d.ts +7 -0
- package/dist/storefront-routes/pages/PropertyPage.js +131 -0
- package/dist/storefront-routes/pages/PropertyPage.js.map +1 -0
- package/dist/storefront-routes/pages/cart/breadcrumbs.d.ts +4 -0
- package/dist/storefront-routes/pages/cart/slots.d.ts +2 -0
- package/dist/storefront-routes/pages/catalog/active-filter-chips.d.ts +20 -0
- package/dist/storefront-routes/pages/catalog/breadcrumbs.d.ts +6 -0
- package/dist/storefront-routes/pages/catalog/filter-predicates.d.ts +21 -0
- package/dist/storefront-routes/pages/catalog/filtering.d.ts +25 -0
- package/dist/storefront-routes/pages/catalog/slot-context.d.ts +34 -0
- package/dist/storefront-routes/pages/catalog/slots.d.ts +3 -0
- package/dist/storefront-routes/pages/catalog/types.d.ts +33 -0
- package/dist/storefront-routes/pages/catalog/useActiveFilters.d.ts +17 -0
- package/dist/storefront-routes/pages/catalog/useCatalogController.d.ts +19 -0
- package/dist/storefront-routes/pages/catalog/useCatalogProductsQuery.d.ts +18 -0
- package/dist/storefront-routes/pages/catalog/useCatalogQueries.d.ts +17 -0
- package/dist/storefront-routes/pages/catalog/usePricedProducts.d.ts +38 -0
- package/dist/storefront-routes/pages/home/SectionProductCarousel.d.ts +11 -0
- package/dist/storefront-routes/pages/home/queries.d.ts +26 -0
- package/dist/storefront-routes/pages/home/slot-context.d.ts +26 -0
- package/dist/storefront-routes/pages/home/slots.d.ts +3 -0
- package/dist/storefront-routes/pages/home/toCardViewModel.d.ts +9 -0
- package/dist/storefront-routes/pages/home/types.d.ts +18 -0
- package/dist/storefront-routes/pages/product-detail/breadcrumbs.d.ts +10 -0
- package/dist/storefront-routes/pages/product-detail/cart-item.d.ts +18 -0
- package/dist/storefront-routes/pages/product-detail/pricing.d.ts +20 -0
- package/dist/storefront-routes/pages/product-detail/slot-context.d.ts +39 -0
- package/dist/storefront-routes/pages/product-detail/slots.d.ts +3 -0
- package/dist/storefront-routes/pages/product-detail/types.d.ts +51 -0
- package/dist/storefront-routes/pages/product-detail/useModificationData.d.ts +18 -0
- package/dist/storefront-routes/pages/product-detail/useModificationSelection.d.ts +12 -0
- package/dist/storefront-routes/pages/product-detail/useProductContent.d.ts +15 -0
- package/dist/storefront-routes/pages/product-detail/useProductPricing.d.ts +14 -0
- package/dist/storefront-routes/pages/product-detail/useProductQuery.d.ts +10 -0
- package/dist/storefront-routes/seo/interceptor.d.ts +28 -0
- package/dist/storefront-routes/seo/interceptor.js +45 -0
- package/dist/storefront-routes/seo/interceptor.js.map +1 -0
- package/dist/storefront-routes/seo/robots.d.ts +2 -0
- package/dist/storefront-routes/seo/robots.js +13 -0
- package/dist/storefront-routes/seo/robots.js.map +1 -0
- package/dist/storefront-routes/seo/sitemap.d.ts +7 -0
- package/dist/storefront-routes/seo/sitemap.js +17 -0
- package/dist/storefront-routes/seo/sitemap.js.map +1 -0
- package/dist/storefront-routes/server/auth.d.ts +24 -0
- package/dist/storefront-routes/server/auth.js +24 -0
- package/dist/storefront-routes/server/auth.js.map +1 -0
- package/dist/storefront-routes/server/catalog.d.ts +50 -0
- package/dist/storefront-routes/server/catalog.js +4 -0
- package/dist/storefront-routes/server/catalog.js.map +1 -0
- package/dist/storefront-routes/server/checkout-input.d.ts +67 -0
- package/dist/storefront-routes/server/checkout-input.js +3 -0
- package/dist/storefront-routes/server/checkout-input.js.map +1 -0
- package/dist/storefront-routes/server/checkout.d.ts +51 -0
- package/dist/storefront-routes/server/checkout.js +4 -0
- package/dist/storefront-routes/server/checkout.js.map +1 -0
- package/dist/storefront-routes/server/home.d.ts +21 -0
- package/dist/storefront-routes/server/home.js +3 -0
- package/dist/storefront-routes/server/home.js.map +1 -0
- package/dist/storefront-routes/server/invite.d.ts +11 -0
- package/dist/storefront-routes/server/invite.js +3 -0
- package/dist/storefront-routes/server/invite.js.map +1 -0
- package/dist/storefront-routes/server/is-admin.d.ts +22 -0
- package/dist/storefront-routes/server/is-admin.js +3 -0
- package/dist/storefront-routes/server/is-admin.js.map +1 -0
- package/dist/storefront-routes/server/order-view.d.ts +18 -0
- package/dist/storefront-routes/server/order-view.js +3 -0
- package/dist/storefront-routes/server/order-view.js.map +1 -0
- package/dist/storefront-routes/server/product-list-item.d.ts +33 -0
- package/dist/storefront-routes/server/product-list-item.js +3 -0
- package/dist/storefront-routes/server/product-list-item.js.map +1 -0
- package/dist/storefront-routes/server/products.d.ts +23 -0
- package/dist/storefront-routes/server/products.js +3 -0
- package/dist/storefront-routes/server/products.js.map +1 -0
- package/dist/storefront-routes/server/profile-orders.d.ts +41 -0
- package/dist/storefront-routes/server/profile-orders.js +3 -0
- package/dist/storefront-routes/server/profile-orders.js.map +1 -0
- package/dist/storefront-routes/server/profile.d.ts +23 -0
- package/dist/storefront-routes/server/profile.js +3 -0
- package/dist/storefront-routes/server/profile.js.map +1 -0
- package/dist/storefront-routes/server/properties.d.ts +12 -0
- package/dist/storefront-routes/server/properties.js +3 -0
- package/dist/storefront-routes/server/properties.js.map +1 -0
- package/dist/storefront-routes/server/revalidate-theme.d.ts +13 -0
- package/dist/storefront-routes/server/revalidate-theme.js +15 -0
- package/dist/storefront-routes/server/revalidate-theme.js.map +1 -0
- package/dist/storefront-routes/server/theme-record.d.ts +32 -0
- package/dist/storefront-routes/server/theme-record.js +3 -0
- package/dist/storefront-routes/server/theme-record.js.map +1 -0
- package/dist/storefront-routes/server/themes.d.ts +9 -0
- package/dist/storefront-routes/server/themes.js +10 -0
- package/dist/storefront-routes/server/themes.js.map +1 -0
- package/dist/storefront-routes/shells/ProtectedShell.d.ts +10 -0
- package/dist/storefront-routes/shells/ProtectedShell.js +6 -0
- package/dist/storefront-routes/shells/ProtectedShell.js.map +1 -0
- package/dist/storefront-routes/shells/StorefrontShell.d.ts +10 -0
- package/dist/storefront-routes/shells/StorefrontShell.js +6 -0
- package/dist/storefront-routes/shells/StorefrontShell.js.map +1 -0
- package/dist/storefront-routes/shells/ThemeFonts.d.ts +18 -0
- package/dist/storefront-routes/shells/ThemeFonts.js +3 -0
- package/dist/storefront-routes/shells/ThemeFonts.js.map +1 -0
- package/dist/storefront-routes/shells/ThemeTokens.d.ts +12 -0
- package/dist/storefront-routes/shells/ThemeTokens.js +3 -0
- package/dist/storefront-routes/shells/ThemeTokens.js.map +1 -0
- package/dist/storefront-routes/shells/useActiveThemeModule.d.ts +9 -0
- package/dist/storefront-routes/shells/useActiveThemeModule.js +3 -0
- package/dist/storefront-routes/shells/useActiveThemeModule.js.map +1 -0
- package/dist/storefront-routes/views/CartView.d.ts +10 -0
- package/dist/storefront-routes/views/CartView.js +4 -0
- package/dist/storefront-routes/views/CartView.js.map +1 -0
- package/dist/storefront-routes/views/CatalogLayout.d.ts +16 -0
- package/dist/storefront-routes/views/CatalogLayout.js +4 -0
- package/dist/storefront-routes/views/CatalogLayout.js.map +1 -0
- package/dist/storefront-routes/views/CatalogSectionView.d.ts +7 -0
- package/dist/storefront-routes/views/CatalogSectionView.js +6 -0
- package/dist/storefront-routes/views/CatalogSectionView.js.map +1 -0
- package/dist/storefront-routes/views/CatalogToolbar.d.ts +9 -0
- package/dist/storefront-routes/views/CatalogToolbar.js +3 -0
- package/dist/storefront-routes/views/CatalogToolbar.js.map +1 -0
- package/dist/storefront-routes/views/CatalogView.d.ts +9 -0
- package/dist/storefront-routes/views/CatalogView.js +6 -0
- package/dist/storefront-routes/views/CatalogView.js.map +1 -0
- package/dist/storefront-routes/views/HomeView.d.ts +14 -0
- package/dist/storefront-routes/views/HomeView.js +6 -0
- package/dist/storefront-routes/views/HomeView.js.map +1 -0
- package/dist/storefront-routes/views/ProductDetailInfo.d.ts +9 -0
- package/dist/storefront-routes/views/ProductDetailInfo.js +3 -0
- package/dist/storefront-routes/views/ProductDetailInfo.js.map +1 -0
- package/dist/storefront-routes/views/ProductDetailSections.d.ts +10 -0
- package/dist/storefront-routes/views/ProductDetailSections.js +3 -0
- package/dist/storefront-routes/views/ProductDetailSections.js.map +1 -0
- package/dist/storefront-routes/views/ProductDetailView.d.ts +10 -0
- package/dist/storefront-routes/views/ProductDetailView.js +6 -0
- package/dist/storefront-routes/views/ProductDetailView.js.map +1 -0
- package/dist/storefront-routes/views/StorefrontBreadcrumbs.d.ts +9 -0
- package/dist/storefront-routes/views/StorefrontBreadcrumbs.js +3 -0
- package/dist/storefront-routes/views/StorefrontBreadcrumbs.js.map +1 -0
- package/dist/storefront-routes/views/slots/CartSlots.d.ts +15 -0
- package/dist/storefront-routes/views/slots/CartSlots.js +3 -0
- package/dist/storefront-routes/views/slots/CartSlots.js.map +1 -0
- package/dist/storefront-routes/views/slots/CartSummary.d.ts +11 -0
- package/dist/storefront-routes/views/slots/CartSummary.js +3 -0
- package/dist/storefront-routes/views/slots/CartSummary.js.map +1 -0
- package/dist/storefront-routes/views/slots/CatalogFilters.d.ts +11 -0
- package/dist/storefront-routes/views/slots/CatalogFilters.js +3 -0
- package/dist/storefront-routes/views/slots/CatalogFilters.js.map +1 -0
- package/dist/storefront-routes/views/slots/CatalogProductGrid.d.ts +26 -0
- package/dist/storefront-routes/views/slots/CatalogProductGrid.js +4 -0
- package/dist/storefront-routes/views/slots/CatalogProductGrid.js.map +1 -0
- package/dist/storefront-routes/views/slots/CatalogSectionChips.d.ts +24 -0
- package/dist/storefront-routes/views/slots/CatalogSectionChips.js +3 -0
- package/dist/storefront-routes/views/slots/CatalogSectionChips.js.map +1 -0
- package/dist/storefront-routes/views/slots/CatalogToolbarSlots.d.ts +32 -0
- package/dist/storefront-routes/views/slots/CatalogToolbarSlots.js +3 -0
- package/dist/storefront-routes/views/slots/CatalogToolbarSlots.js.map +1 -0
- package/dist/storefront-routes/views/slots/HomeSectionCarousel.d.ts +10 -0
- package/dist/storefront-routes/views/slots/HomeSectionCarousel.js +5 -0
- package/dist/storefront-routes/views/slots/HomeSectionCarousel.js.map +1 -0
- package/dist/storefront-routes/views/slots/ProductAddToCart.d.ts +16 -0
- package/dist/storefront-routes/views/slots/ProductAddToCart.js +3 -0
- package/dist/storefront-routes/views/slots/ProductAddToCart.js.map +1 -0
- package/dist/storefront-routes/views/slots/ProductContentSlots.d.ts +19 -0
- package/dist/storefront-routes/views/slots/ProductContentSlots.js +3 -0
- package/dist/storefront-routes/views/slots/ProductContentSlots.js.map +1 -0
- package/dist/storefront-routes/views/slots/ProductModificationPicker.d.ts +16 -0
- package/dist/storefront-routes/views/slots/ProductModificationPicker.js +3 -0
- package/dist/storefront-routes/views/slots/ProductModificationPicker.js.map +1 -0
- package/dist/storefront-routes/views/slots/ProductPluginSlots.d.ts +16 -0
- package/dist/storefront-routes/views/slots/ProductPluginSlots.js +3 -0
- package/dist/storefront-routes/views/slots/ProductPluginSlots.js.map +1 -0
- package/dist/storefront-routes/views/slots/ProductPriceBlock.d.ts +13 -0
- package/dist/storefront-routes/views/slots/ProductPriceBlock.js +3 -0
- package/dist/storefront-routes/views/slots/ProductPriceBlock.js.map +1 -0
- package/dist/storefront-routes/views/slots/ProductStockBadge.d.ts +14 -0
- package/dist/storefront-routes/views/slots/ProductStockBadge.js +3 -0
- package/dist/storefront-routes/views/slots/ProductStockBadge.js.map +1 -0
- package/dist/storefront-routes/views/useStorefrontViews.d.ts +17 -0
- package/dist/storefront-routes/views/useStorefrontViews.js +4 -0
- package/dist/storefront-routes/views/useStorefrontViews.js.map +1 -0
- package/dist/supabase/SupabaseProvider.d.ts +16 -0
- package/dist/supabase/SupabaseProvider.js +27 -0
- package/dist/supabase/SupabaseProvider.js.map +1 -0
- package/dist/supabase/anon-client.d.ts +73 -0
- package/dist/supabase/anon-client.js +12 -0
- package/dist/supabase/anon-client.js.map +1 -0
- package/dist/supabase/browser-client.d.ts +65 -0
- package/dist/supabase/browser-client.js +5 -0
- package/dist/supabase/browser-client.js.map +1 -0
- package/dist/supabase/database.d.ts +2121 -0
- package/dist/supabase/index.d.ts +4 -0
- package/dist/supabase/index.js +36 -0
- package/dist/supabase/index.js.map +1 -0
- package/dist/supabase/keys.d.ts +24 -0
- package/dist/supabase/keys.js +4 -0
- package/dist/supabase/keys.js.map +1 -0
- package/dist/supabase/server-client.d.ts +76 -0
- package/dist/supabase/server-client.js +28 -0
- package/dist/supabase/server-client.js.map +1 -0
- package/dist/themes/ThemeContext.d.ts +19 -0
- package/dist/themes/ThemeContext.js +7 -0
- package/dist/themes/ThemeContext.js.map +1 -0
- package/dist/themes/ThemeRegistry.d.ts +40 -0
- package/dist/themes/ThemeRegistry.js +5 -0
- package/dist/themes/ThemeRegistry.js.map +1 -0
- package/dist/themes/applyTokens.d.ts +9 -0
- package/dist/themes/applyTokens.js +4 -0
- package/dist/themes/applyTokens.js.map +1 -0
- package/dist/themes/bootstrapThemes.d.ts +23 -0
- package/dist/themes/bootstrapThemes.js +6 -0
- package/dist/themes/bootstrapThemes.js.map +1 -0
- package/dist/themes/conformance/assertThemeViewsConformance.d.ts +41 -0
- package/dist/themes/conformance/boundary.d.ts +24 -0
- package/dist/themes/conformance/cases.d.ts +15 -0
- package/dist/themes/conformance/index.d.ts +2 -0
- package/dist/themes/conformance/index.js +235 -0
- package/dist/themes/conformance/index.js.map +1 -0
- package/dist/themes/conformance/render.d.ts +21 -0
- package/dist/themes/conformance/stubs.d.ts +5 -0
- package/dist/themes/index.d.ts +7 -0
- package/dist/themes/index.js +11 -0
- package/dist/themes/index.js.map +1 -0
- package/dist/themes/safeFontStylesheets.d.ts +16 -0
- package/dist/themes/safeFontStylesheets.js +36 -0
- package/dist/themes/safeFontStylesheets.js.map +1 -0
- package/dist/themes/server/index.d.ts +19 -0
- package/dist/themes/server/index.js +62 -0
- package/dist/themes/server/index.js.map +1 -0
- package/dist/themes/server/registry-db.d.ts +25 -0
- package/dist/themes/theme-context.d.ts +13 -0
- package/dist/themes/theme-settings.d.ts +10 -0
- package/dist/themes/types.d.ts +203 -0
- package/dist/themes/types.js +3 -0
- package/dist/themes/types.js.map +1 -0
- package/dist/themes/useThemeT.d.ts +29 -0
- package/dist/themes/useThemeT.js +8 -0
- package/dist/themes/useThemeT.js.map +1 -0
- package/dist/themes/validateThemeModule.d.ts +10 -0
- package/dist/themes/validateThemeModule.js +4 -0
- package/dist/themes/validateThemeModule.js.map +1 -0
- package/dist/themes/validateThemeViews.d.ts +11 -0
- package/dist/ui/accordion.d.ts +7 -0
- package/dist/ui/accordion.js +4 -0
- package/dist/ui/accordion.js.map +1 -0
- package/dist/ui/alert-dialog.d.ts +20 -0
- package/dist/ui/alert-dialog.js +5 -0
- package/dist/ui/alert-dialog.js.map +1 -0
- package/dist/ui/alert.d.ts +8 -0
- package/dist/ui/alert.js +4 -0
- package/dist/ui/alert.js.map +1 -0
- package/dist/ui/aspect-ratio.d.ts +3 -0
- package/dist/ui/aspect-ratio.js +4 -0
- package/dist/ui/aspect-ratio.js.map +1 -0
- package/dist/ui/avatar.d.ts +6 -0
- package/dist/ui/avatar.js +4 -0
- package/dist/ui/avatar.js.map +1 -0
- package/dist/ui/badge.d.ts +9 -0
- package/dist/ui/badge.js +4 -0
- package/dist/ui/badge.js.map +1 -0
- package/dist/ui/breadcrumb.d.ts +19 -0
- package/dist/ui/breadcrumb.js +4 -0
- package/dist/ui/breadcrumb.js.map +1 -0
- package/dist/ui/button.d.ts +11 -0
- package/dist/ui/button.js +4 -0
- package/dist/ui/button.js.map +1 -0
- package/dist/ui/calendar.d.ts +8 -0
- package/dist/ui/calendar.js +5 -0
- package/dist/ui/calendar.js.map +1 -0
- package/dist/ui/card.d.ts +8 -0
- package/dist/ui/card.js +4 -0
- package/dist/ui/card.js.map +1 -0
- package/dist/ui/carousel.d.ts +18 -0
- package/dist/ui/carousel.js +5 -0
- package/dist/ui/carousel.js.map +1 -0
- package/dist/ui/chart.d.ts +59 -0
- package/dist/ui/chart.js +4 -0
- package/dist/ui/chart.js.map +1 -0
- package/dist/ui/checkbox.d.ts +4 -0
- package/dist/ui/checkbox.js +4 -0
- package/dist/ui/checkbox.js.map +1 -0
- package/dist/ui/collapsible.d.ts +5 -0
- package/dist/ui/collapsible.js +4 -0
- package/dist/ui/collapsible.js.map +1 -0
- package/dist/ui/command.d.ts +82 -0
- package/dist/ui/command.js +5 -0
- package/dist/ui/command.js.map +1 -0
- package/dist/ui/context-menu.d.ts +27 -0
- package/dist/ui/context-menu.js +4 -0
- package/dist/ui/context-menu.js.map +1 -0
- package/dist/ui/dialog.d.ts +19 -0
- package/dist/ui/dialog.js +4 -0
- package/dist/ui/dialog.js.map +1 -0
- package/dist/ui/drawer.d.ts +22 -0
- package/dist/ui/drawer.js +4 -0
- package/dist/ui/drawer.js.map +1 -0
- package/dist/ui/dropdown-menu.d.ts +27 -0
- package/dist/ui/dropdown-menu.js +4 -0
- package/dist/ui/dropdown-menu.js.map +1 -0
- package/dist/ui/form.d.ts +25 -0
- package/dist/ui/form.js +5 -0
- package/dist/ui/form.js.map +1 -0
- package/dist/ui/hover-card.d.ts +6 -0
- package/dist/ui/hover-card.js +4 -0
- package/dist/ui/hover-card.js.map +1 -0
- package/dist/ui/index.d.ts +52 -0
- package/dist/ui/index.js +54 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/input-otp.d.ts +34 -0
- package/dist/ui/input-otp.js +4 -0
- package/dist/ui/input-otp.js.map +1 -0
- package/dist/ui/input.d.ts +3 -0
- package/dist/ui/input.js +4 -0
- package/dist/ui/input.js.map +1 -0
- package/dist/ui/label.d.ts +5 -0
- package/dist/ui/label.js +4 -0
- package/dist/ui/label.js.map +1 -0
- package/dist/ui/menubar.d.ts +28 -0
- package/dist/ui/menubar.js +4 -0
- package/dist/ui/menubar.js.map +1 -0
- package/dist/ui/navigation-menu.d.ts +12 -0
- package/dist/ui/navigation-menu.js +4 -0
- package/dist/ui/navigation-menu.js.map +1 -0
- package/dist/ui/pagination.d.ts +28 -0
- package/dist/ui/pagination.js +5 -0
- package/dist/ui/pagination.js.map +1 -0
- package/dist/ui/popover.d.ts +6 -0
- package/dist/ui/popover.js +4 -0
- package/dist/ui/popover.js.map +1 -0
- package/dist/ui/progress.d.ts +4 -0
- package/dist/ui/progress.js +4 -0
- package/dist/ui/progress.js.map +1 -0
- package/dist/ui/radio-group.d.ts +5 -0
- package/dist/ui/radio-group.js +4 -0
- package/dist/ui/radio-group.js.map +1 -0
- package/dist/ui/resizable.d.ts +7 -0
- package/dist/ui/resizable.js +4 -0
- package/dist/ui/resizable.js.map +1 -0
- package/dist/ui/scroll-area.d.ts +5 -0
- package/dist/ui/scroll-area.js +4 -0
- package/dist/ui/scroll-area.js.map +1 -0
- package/dist/ui/select.d.ts +13 -0
- package/dist/ui/select.js +4 -0
- package/dist/ui/select.js.map +1 -0
- package/dist/ui/separator.d.ts +4 -0
- package/dist/ui/separator.js +4 -0
- package/dist/ui/separator.js.map +1 -0
- package/dist/ui/sheet.d.ts +25 -0
- package/dist/ui/sheet.js +4 -0
- package/dist/ui/sheet.js.map +1 -0
- package/dist/ui/sidebar.d.ts +66 -0
- package/dist/ui/sidebar.js +10 -0
- package/dist/ui/sidebar.js.map +1 -0
- package/dist/ui/skeleton.d.ts +2 -0
- package/dist/ui/skeleton.js +4 -0
- package/dist/ui/skeleton.js.map +1 -0
- package/dist/ui/slider.d.ts +4 -0
- package/dist/ui/slider.js +4 -0
- package/dist/ui/slider.js.map +1 -0
- package/dist/ui/sonner.d.ts +4 -0
- package/dist/ui/sonner.js +4 -0
- package/dist/ui/sonner.js.map +1 -0
- package/dist/ui/switch.d.ts +4 -0
- package/dist/ui/switch.js +4 -0
- package/dist/ui/switch.js.map +1 -0
- package/dist/ui/table.d.ts +10 -0
- package/dist/ui/table.js +4 -0
- package/dist/ui/table.js.map +1 -0
- package/dist/ui/tabs.d.ts +7 -0
- package/dist/ui/tabs.js +4 -0
- package/dist/ui/tabs.js.map +1 -0
- package/dist/ui/textarea.d.ts +5 -0
- package/dist/ui/textarea.js +4 -0
- package/dist/ui/textarea.js.map +1 -0
- package/dist/ui/toast.d.ts +15 -0
- package/dist/ui/toast.js +4 -0
- package/dist/ui/toast.js.map +1 -0
- package/dist/ui/toaster.d.ts +1 -0
- package/dist/ui/toaster.js +5 -0
- package/dist/ui/toaster.js.map +1 -0
- package/dist/ui/toggle-group.d.ts +12 -0
- package/dist/ui/toggle-group.js +5 -0
- package/dist/ui/toggle-group.js.map +1 -0
- package/dist/ui/toggle.d.ts +12 -0
- package/dist/ui/toggle.js +4 -0
- package/dist/ui/toggle.js.map +1 -0
- package/dist/ui/tooltip.d.ts +7 -0
- package/dist/ui/tooltip.js +4 -0
- package/dist/ui/tooltip.js.map +1 -0
- package/dist/ui/use-mobile.d.ts +1 -0
- package/dist/ui/use-mobile.js +4 -0
- package/dist/ui/use-mobile.js.map +1 -0
- package/dist/ui/use-toast.d.ts +49 -0
- package/dist/ui/use-toast.js +4 -0
- package/dist/ui/use-toast.js.map +1 -0
- package/dist/ui/utils.d.ts +2 -0
- package/dist/ui/utils.js +4 -0
- package/dist/ui/utils.js.map +1 -0
- package/migrations/0000_prelude.sql +100 -0
- package/migrations/0001_init.sql +790 -0
- package/migrations/0002_grants.sql +190 -0
- package/migrations/0003_seed.sql +74 -0
- package/migrations/README.md +71 -0
- package/migrations/demo/demo-seed.sql +240 -0
- package/package.json +551 -0
- package/routes/admin/.gitkeep +0 -0
- package/routes/admin/admin/banners/$bannerId.tsx +6 -0
- package/routes/admin/admin/banners/index.tsx +6 -0
- package/routes/admin/admin/discounts/$discountId.tsx +9 -0
- package/routes/admin/admin/discounts/groups/$groupId.tsx +9 -0
- package/routes/admin/admin/discounts/index.tsx +6 -0
- package/routes/admin/admin/index.tsx +6 -0
- package/routes/admin/admin/languages/index.tsx +6 -0
- package/routes/admin/admin/order-statuses/index.tsx +6 -0
- package/routes/admin/admin/orders/$orderId.tsx +6 -0
- package/routes/admin/admin/orders/index.tsx +6 -0
- package/routes/admin/admin/plugins/$pluginId/settings.tsx +6 -0
- package/routes/admin/admin/plugins/index.tsx +6 -0
- package/routes/admin/admin/price-types/$priceTypeId.tsx +6 -0
- package/routes/admin/admin/price-types/index.tsx +6 -0
- package/routes/admin/admin/price-validator/index.tsx +6 -0
- package/routes/admin/admin/products/$productId.tsx +6 -0
- package/routes/admin/admin/products/index.tsx +6 -0
- package/routes/admin/admin/properties/$propertyId/index.tsx +6 -0
- package/routes/admin/admin/properties/$propertyId/options/$optionId.tsx +8 -0
- package/routes/admin/admin/properties/index.tsx +6 -0
- package/routes/admin/admin/reviews/$reviewId.tsx +6 -0
- package/routes/admin/admin/reviews/index.tsx +6 -0
- package/routes/admin/admin/sections/$sectionId.tsx +6 -0
- package/routes/admin/admin/sections/index.tsx +6 -0
- package/routes/admin/admin/service-requests/index.tsx +6 -0
- package/routes/admin/admin/services/index.tsx +6 -0
- package/routes/admin/admin/settings/index.tsx +6 -0
- package/routes/admin/admin/shipping/index.tsx +6 -0
- package/routes/admin/admin/shipping/methods/$methodId.tsx +6 -0
- package/routes/admin/admin/shipping/methods/index.tsx +6 -0
- package/routes/admin/admin/shipping/pickup-points/$pointId.tsx +6 -0
- package/routes/admin/admin/shipping/pickup-points/index.tsx +6 -0
- package/routes/admin/admin/shipping/zones/$zoneId.tsx +6 -0
- package/routes/admin/admin/shipping/zones/index.tsx +6 -0
- package/routes/admin/admin/themes/$themeId/settings.tsx +6 -0
- package/routes/admin/admin/themes/index.tsx +6 -0
- package/routes/admin/admin/user-categories/$categoryId.tsx +6 -0
- package/routes/admin/admin/user-categories/index.tsx +6 -0
- package/routes/admin/admin/user-categories/rules/$ruleId.tsx +6 -0
- package/routes/admin/admin/user-categories/rules/index.tsx +6 -0
- package/routes/admin/admin/users/$userId.tsx +6 -0
- package/routes/admin/admin/users/index.tsx +6 -0
- package/routes/admin/admin.tsx +59 -0
- package/routes/storefront/_protected/profile/index.tsx +9 -0
- package/routes/storefront/_protected/profile/orders/$orderId.tsx +9 -0
- package/routes/storefront/_protected/profile/orders/index.tsx +9 -0
- package/routes/storefront/_protected/profile/settings.tsx +9 -0
- package/routes/storefront/_protected.tsx +45 -0
- package/routes/storefront/_storefront/cart.tsx +10 -0
- package/routes/storefront/_storefront/catalog/$sectionSlug/$productSlug.tsx +92 -0
- package/routes/storefront/_storefront/catalog/$sectionSlug/index.tsx +49 -0
- package/routes/storefront/_storefront/catalog/index.tsx +36 -0
- package/routes/storefront/_storefront/checkout.tsx +10 -0
- package/routes/storefront/_storefront/index.tsx +34 -0
- package/routes/storefront/_storefront/order-success/$orderId.tsx +13 -0
- package/routes/storefront/_storefront/properties/$propertySlug/$optionSlug.tsx +45 -0
- package/routes/storefront/_storefront/properties/$propertySlug/index.tsx +32 -0
- package/routes/storefront/_storefront/properties/index.tsx +27 -0
- package/routes/storefront/_storefront.tsx +32 -0
- package/routes/storefront/api/auth/$.tsx +28 -0
- package/routes/storefront/api/guest-order.tsx +102 -0
- package/routes/storefront/api/health.tsx +59 -0
- package/routes/storefront/api/revalidate-theme.tsx +20 -0
- package/routes/storefront/auth/index.tsx +30 -0
- package/routes/storefront/auth/invite.tsx +18 -0
- package/routes/storefront/auth/set-password.tsx +16 -0
- package/skills/redesign-from-reference/SKILL.md +648 -0
- package/skills/redesign-from-reference/scripts/discover.mjs +122 -0
- package/skills/redesign-from-reference/scripts/inspect.mjs +116 -0
- package/skills/redesign-from-reference/scripts/lib/browser-fonts.mjs +83 -0
- package/skills/redesign-from-reference/scripts/lib/browser-hover.mjs +68 -0
- package/skills/redesign-from-reference/scripts/lib/browser-keyframes.mjs +62 -0
- package/skills/redesign-from-reference/scripts/lib/browser-motion.mjs +104 -0
- package/skills/redesign-from-reference/scripts/lib/browser-reveal.mjs +78 -0
- package/skills/redesign-from-reference/scripts/lib/browser-sample.mjs +123 -0
- package/skills/redesign-from-reference/scripts/lib/browser.mjs +145 -0
- package/skills/redesign-from-reference/scripts/lib/classify-pairs.mjs +88 -0
- package/skills/redesign-from-reference/scripts/lib/classify-structure.mjs +109 -0
- package/skills/redesign-from-reference/scripts/lib/classify-terms.mjs +126 -0
- package/skills/redesign-from-reference/scripts/lib/classify.mjs +126 -0
- package/skills/redesign-from-reference/scripts/lib/cli-entry.mjs +22 -0
- package/skills/redesign-from-reference/scripts/lib/cluster.mjs +95 -0
- package/skills/redesign-from-reference/scripts/lib/collect-links.mjs +57 -0
- package/skills/redesign-from-reference/scripts/lib/color-tokens.mjs +135 -0
- package/skills/redesign-from-reference/scripts/lib/color.mjs +150 -0
- package/skills/redesign-from-reference/scripts/lib/contrast.mjs +57 -0
- package/skills/redesign-from-reference/scripts/lib/fonts.mjs +67 -0
- package/skills/redesign-from-reference/scripts/lib/hover-sweep.mjs +150 -0
- package/skills/redesign-from-reference/scripts/lib/inspect-page.mjs +110 -0
- package/skills/redesign-from-reference/scripts/lib/inspection-version.mjs +38 -0
- package/skills/redesign-from-reference/scripts/lib/map.mjs +69 -0
- package/skills/redesign-from-reference/scripts/lib/merge.mjs +150 -0
- package/skills/redesign-from-reference/scripts/lib/motion-detect.mjs +128 -0
- package/skills/redesign-from-reference/scripts/lib/motion.mjs +126 -0
- package/skills/redesign-from-reference/scripts/lib/sample.mjs +66 -0
- package/skills/redesign-from-reference/scripts/lib/sitemap-links.mjs +24 -0
- package/skills/redesign-from-reference/scripts/lib/sitemap.mjs +144 -0
- package/skills/redesign-from-reference/scripts/lib/unmapped.mjs +97 -0
- package/skills/redesign-from-reference/scripts/lib/visit-candidate.mjs +53 -0
- package/skills/redesign-from-reference/scripts/lib/visit-probe.mjs +159 -0
- package/skills/redesign-from-reference/scripts/map-tokens.mjs +142 -0
- package/src/admin/components/AddProductToOrder.tsx +314 -0
- package/src/admin/components/AllProductProperties.tsx +442 -0
- package/src/admin/components/ImageUpload.tsx +295 -0
- package/src/admin/components/ProductModifications.tsx +669 -0
- package/src/admin/components/ProductPricesEditor.tsx +232 -0
- package/src/admin/components/ProductPropertyValues.tsx +475 -0
- package/src/admin/components/RichTextEditor.tsx +326 -0
- package/src/admin/components/SectionPropertiesManager.tsx +380 -0
- package/src/admin/components/SectionPropertiesTable.tsx +312 -0
- package/src/admin/components/SimpleProductFields.tsx +57 -0
- package/src/admin/components/StockByPointManager.tsx +301 -0
- package/src/admin/components/StockStatusSelect.tsx +88 -0
- package/src/admin/components/ThemeActivateDialog.tsx +51 -0
- package/src/admin/components/ThemeCard.tsx +143 -0
- package/src/admin/hooks/usePluginToggle.ts +87 -0
- package/src/admin/hooks/useThemeActivate.ts +73 -0
- package/src/admin/index.ts +59 -0
- package/src/admin/layouts/AdminLayout.tsx +64 -0
- package/src/admin/layouts/AdminSidebar.tsx +356 -0
- package/src/admin/lib/adminLinks.ts +19 -0
- package/src/admin/lib/pluginSettingsFields.ts +40 -0
- package/src/admin/lib/revalidateTheme.ts +57 -0
- package/src/admin/pages/BannerEdit.tsx +664 -0
- package/src/admin/pages/Banners.tsx +201 -0
- package/src/admin/pages/Dashboard.tsx +234 -0
- package/src/admin/pages/DiscountEdit.tsx +872 -0
- package/src/admin/pages/DiscountGroupEdit.tsx +371 -0
- package/src/admin/pages/Discounts.tsx +423 -0
- package/src/admin/pages/OrderDetail.tsx +736 -0
- package/src/admin/pages/OrderStatuses.tsx +537 -0
- package/src/admin/pages/Orders.tsx +126 -0
- package/src/admin/pages/PickupPointEdit.tsx +407 -0
- package/src/admin/pages/PickupPoints.tsx +204 -0
- package/src/admin/pages/PlaceholderPage.tsx +50 -0
- package/src/admin/pages/PluginSettings.tsx +459 -0
- package/src/admin/pages/Plugins.tsx +263 -0
- package/src/admin/pages/PriceTypeEdit.tsx +301 -0
- package/src/admin/pages/PriceTypes.tsx +152 -0
- package/src/admin/pages/PriceValidator.tsx +549 -0
- package/src/admin/pages/ProductEdit.tsx +512 -0
- package/src/admin/pages/Products.tsx +202 -0
- package/src/admin/pages/Properties.tsx +347 -0
- package/src/admin/pages/PropertyEdit.tsx +433 -0
- package/src/admin/pages/PropertyOptionEdit.tsx +359 -0
- package/src/admin/pages/ReviewDetail.tsx +353 -0
- package/src/admin/pages/Reviews.tsx +226 -0
- package/src/admin/pages/SectionEdit.tsx +301 -0
- package/src/admin/pages/Sections.tsx +184 -0
- package/src/admin/pages/Settings.tsx +136 -0
- package/src/admin/pages/Shipping.tsx +209 -0
- package/src/admin/pages/ShippingMethodEdit.tsx +397 -0
- package/src/admin/pages/ShippingMethods.tsx +243 -0
- package/src/admin/pages/ShippingZoneEdit.tsx +579 -0
- package/src/admin/pages/ShippingZones.tsx +218 -0
- package/src/admin/pages/ThemeSettings.tsx +234 -0
- package/src/admin/pages/Themes.tsx +102 -0
- package/src/admin/pages/UserCategories.tsx +165 -0
- package/src/admin/pages/UserCategoryEdit.tsx +390 -0
- package/src/admin/pages/UserCategoryRuleEdit.tsx +665 -0
- package/src/admin/pages/UserCategoryRules.tsx +327 -0
- package/src/admin/pages/UserEdit.tsx +556 -0
- package/src/admin/pages/Users.tsx +322 -0
- package/src/auth/accept-invite.ts +81 -0
- package/src/auth/authz.ts +144 -0
- package/src/auth/drizzle-proxy.ts +71 -0
- package/src/auth/env.ts +48 -0
- package/src/auth/hooks.ts +94 -0
- package/src/auth/index.ts +75 -0
- package/src/auth/instance.ts +116 -0
- package/src/auth/invite-email.ts +84 -0
- package/src/auth/invite-store.ts +89 -0
- package/src/auth/invite.ts +144 -0
- package/src/auth/provision.ts +34 -0
- package/src/auth/send-email.ts +26 -0
- package/src/auth/session.ts +67 -0
- package/src/cart-ui/CartButton.tsx +23 -0
- package/src/cart-ui/CartDrawer.tsx +119 -0
- package/src/cart-ui/CartItem.tsx +21 -0
- package/src/cart-ui/CartItemView.tsx +109 -0
- package/src/cart-ui/index.ts +6 -0
- package/src/catalog-ui/ActiveFilters.tsx +123 -0
- package/src/catalog-ui/FilterSidebar.tsx +382 -0
- package/src/catalog-ui/ModificationSelector.tsx +171 -0
- package/src/catalog-ui/ProductCard.tsx +104 -0
- package/src/catalog-ui/ProductCharacteristics.tsx +82 -0
- package/src/catalog-ui/ProductGallery.tsx +95 -0
- package/src/catalog-ui/StockDisplay.tsx +146 -0
- package/src/catalog-ui/index.ts +8 -0
- package/src/checkout-ui/AddressCard.tsx +62 -0
- package/src/checkout-ui/AddressSaveDialog.tsx +96 -0
- package/src/checkout-ui/AddressSelectorPopup.tsx +177 -0
- package/src/checkout-ui/CheckoutAuthBlock.tsx +339 -0
- package/src/checkout-ui/CheckoutContactForm.tsx +85 -0
- package/src/checkout-ui/CheckoutDeliveryForm.tsx +399 -0
- package/src/checkout-ui/CheckoutOrderSummary.tsx +135 -0
- package/src/checkout-ui/CheckoutPaymentForm.tsx +76 -0
- package/src/checkout-ui/CheckoutRecipientForm.tsx +427 -0
- package/src/checkout-ui/RecipientCard.tsx +66 -0
- package/src/checkout-ui/RecipientSaveDialog.tsx +96 -0
- package/src/checkout-ui/RecipientSelectorPopup.tsx +187 -0
- package/src/checkout-ui/index.ts +13 -0
- package/src/contracts/README.md +60 -0
- package/src/contracts/index.ts +12 -0
- package/src/contracts/objects/banner.ts +34 -0
- package/src/contracts/objects/catalog.ts +76 -0
- package/src/contracts/objects/common.ts +27 -0
- package/src/contracts/objects/config.ts +17 -0
- package/src/contracts/objects/discount.ts +92 -0
- package/src/contracts/objects/identity.ts +10 -0
- package/src/contracts/objects/index.ts +12 -0
- package/src/contracts/objects/inventory.ts +38 -0
- package/src/contracts/objects/order.ts +55 -0
- package/src/contracts/objects/pricing.ts +22 -0
- package/src/contracts/objects/shipping.ts +127 -0
- package/src/contracts/ports/index.ts +95 -0
- package/src/contracts/semver/index.ts +62 -0
- package/src/contracts/semver/version.ts +15 -0
- package/src/contracts/views/cart.ts +24 -0
- package/src/contracts/views/catalog.ts +47 -0
- package/src/contracts/views/common.ts +39 -0
- package/src/contracts/views/fixtures/cart.ts +17 -0
- package/src/contracts/views/fixtures/catalog.ts +52 -0
- package/src/contracts/views/fixtures/home.ts +81 -0
- package/src/contracts/views/fixtures/index.ts +39 -0
- package/src/contracts/views/fixtures/product-detail.ts +60 -0
- package/src/contracts/views/home.ts +53 -0
- package/src/contracts/views/index.ts +11 -0
- package/src/contracts/views/product-detail.ts +78 -0
- package/src/contracts/views/requisites.ts +112 -0
- package/src/contracts/views/slots.ts +28 -0
- package/src/core/components/NavLink.tsx +37 -0
- package/src/core/components/ThemeToggle.tsx +42 -0
- package/src/core/components/cart/CartDrawer.tsx +2 -0
- package/src/core/components/cart/CartItem.tsx +2 -0
- package/src/core/components/catalog/ActiveFilters.tsx +6 -0
- package/src/core/components/catalog/FilterSidebar.tsx +6 -0
- package/src/core/components/catalog/ModificationSelector.tsx +6 -0
- package/src/core/components/catalog/ProductCard.tsx +5 -0
- package/src/core/components/catalog/ProductCharacteristics.tsx +5 -0
- package/src/core/components/catalog/ProductGallery.tsx +5 -0
- package/src/core/components/catalog/StockDisplay.tsx +5 -0
- package/src/core/components/checkout/CheckoutAuthBlock.tsx +5 -0
- package/src/core/components/checkout/CheckoutContactForm.tsx +5 -0
- package/src/core/components/checkout/CheckoutDeliveryForm.tsx +5 -0
- package/src/core/components/checkout/CheckoutOrderSummary.tsx +5 -0
- package/src/core/components/checkout/CheckoutPaymentForm.tsx +5 -0
- package/src/core/components/checkout/CheckoutRecipientForm.tsx +5 -0
- package/src/core/components/profile/AddressesList.tsx +5 -0
- package/src/core/components/profile/AvatarUpload.tsx +5 -0
- package/src/core/components/profile/RecipientsList.tsx +5 -0
- package/src/core/components/reviews/ProductReviews.tsx +2 -0
- package/src/core/components/reviews/StarRating.tsx +2 -0
- package/src/core/hooks/use-toast.ts +6 -0
- package/src/core/hooks/useAddressBook.ts +61 -0
- package/src/core/hooks/useAuth.tsx +75 -0
- package/src/core/hooks/useBanners.ts +27 -0
- package/src/core/hooks/useCart.tsx +3 -0
- package/src/core/hooks/useDiscountedPrice.ts +83 -0
- package/src/core/hooks/usePriceType.ts +25 -0
- package/src/core/hooks/useProductReviews.ts +141 -0
- package/src/core/hooks/useProductsWithStock.ts +11 -0
- package/src/core/hooks/useRecipientBook.ts +56 -0
- package/src/core/hooks/useShippingDirectory.ts +61 -0
- package/src/core/hooks/useStock.ts +102 -0
- package/src/core/index.ts +83 -0
- package/src/core/lib/auth-client.ts +22 -0
- package/src/core/lib/auth-session.ts +23 -0
- package/src/core/lib/banners.ts +28 -0
- package/src/core/lib/discounts.ts +78 -0
- package/src/core/lib/price-type.ts +48 -0
- package/src/core/lib/review-form.ts +68 -0
- package/src/core/lib/reviews.ts +64 -0
- package/src/core/lib/section-filters.ts +26 -0
- package/src/core/lib/shipping-directory.ts +34 -0
- package/src/core/lib/stock.ts +48 -0
- package/src/core/lib/user-addresses.ts +94 -0
- package/src/core/lib/user-recipients.ts +83 -0
- package/src/core/providers/CMSProvider.tsx +36 -0
- package/src/data-supabase/README.md +70 -0
- package/src/data-supabase/catalogRepository.ts +263 -0
- package/src/data-supabase/identityProvider.ts +73 -0
- package/src/data-supabase/index.ts +7 -0
- package/src/data-supabase/mappers.ts +229 -0
- package/src/data-supabase/orderRepository.ts +138 -0
- package/src/data-supabase/scope.ts +17 -0
- package/src/db/actor.ts +96 -0
- package/src/db/client.ts +85 -0
- package/src/db/index.ts +12 -0
- package/src/db/with-actor.ts +87 -0
- package/src/domain/README.md +57 -0
- package/src/domain/discounts.ts +435 -0
- package/src/domain/index.ts +10 -0
- package/src/domain/inventory.ts +54 -0
- package/src/domain/money.ts +80 -0
- package/src/domain/pricing.ts +40 -0
- package/src/domain/shipping.ts +218 -0
- package/src/domain/user-categories/conditions.ts +112 -0
- package/src/domain/user-categories/engine.ts +80 -0
- package/src/domain/user-categories/index.ts +11 -0
- package/src/domain/user-categories/types.ts +64 -0
- package/src/i18n/I18nProvider.tsx +60 -0
- package/src/i18n/README.md +63 -0
- package/src/i18n/catalogs/en/admin/banners.ts +66 -0
- package/src/i18n/catalogs/en/admin/common.ts +21 -0
- package/src/i18n/catalogs/en/admin/dashboard.ts +24 -0
- package/src/i18n/catalogs/en/admin/discounts.ts +74 -0
- package/src/i18n/catalogs/en/admin/index.ts +39 -0
- package/src/i18n/catalogs/en/admin/nav.ts +35 -0
- package/src/i18n/catalogs/en/admin/orders.ts +74 -0
- package/src/i18n/catalogs/en/admin/plugins.ts +64 -0
- package/src/i18n/catalogs/en/admin/prices.ts +19 -0
- package/src/i18n/catalogs/en/admin/products.ts +84 -0
- package/src/i18n/catalogs/en/admin/properties.ts +74 -0
- package/src/i18n/catalogs/en/admin/reviews.ts +29 -0
- package/src/i18n/catalogs/en/admin/sections.ts +21 -0
- package/src/i18n/catalogs/en/admin/settings.ts +17 -0
- package/src/i18n/catalogs/en/admin/shipping.ts +112 -0
- package/src/i18n/catalogs/en/admin/themes.ts +28 -0
- package/src/i18n/catalogs/en/admin/users.ts +104 -0
- package/src/i18n/catalogs/en/admin/validator.ts +35 -0
- package/src/i18n/catalogs/en/app.ts +14 -0
- package/src/i18n/catalogs/en/auth.ts +65 -0
- package/src/i18n/catalogs/en/breadcrumbs.ts +6 -0
- package/src/i18n/catalogs/en/cart.ts +25 -0
- package/src/i18n/catalogs/en/catalog.ts +26 -0
- package/src/i18n/catalogs/en/checkout.ts +126 -0
- package/src/i18n/catalogs/en/common.ts +94 -0
- package/src/i18n/catalogs/en/home.ts +7 -0
- package/src/i18n/catalogs/en/index.ts +44 -0
- package/src/i18n/catalogs/en/nav.ts +9 -0
- package/src/i18n/catalogs/en/product.ts +31 -0
- package/src/i18n/catalogs/en/profile.ts +109 -0
- package/src/i18n/catalogs/en/properties.ts +20 -0
- package/src/i18n/catalogs/en/reviews.ts +32 -0
- package/src/i18n/catalogs/en/validation.ts +33 -0
- package/src/i18n/catalogs/uk/admin/banners.ts +67 -0
- package/src/i18n/catalogs/uk/admin/common.ts +21 -0
- package/src/i18n/catalogs/uk/admin/dashboard.ts +22 -0
- package/src/i18n/catalogs/uk/admin/discounts.ts +73 -0
- package/src/i18n/catalogs/uk/admin/index.ts +45 -0
- package/src/i18n/catalogs/uk/admin/nav.ts +35 -0
- package/src/i18n/catalogs/uk/admin/orders.ts +76 -0
- package/src/i18n/catalogs/uk/admin/plugins.ts +68 -0
- package/src/i18n/catalogs/uk/admin/prices.ts +17 -0
- package/src/i18n/catalogs/uk/admin/products.ts +87 -0
- package/src/i18n/catalogs/uk/admin/properties.ts +77 -0
- package/src/i18n/catalogs/uk/admin/reviews.ts +27 -0
- package/src/i18n/catalogs/uk/admin/sections.ts +19 -0
- package/src/i18n/catalogs/uk/admin/settings.ts +17 -0
- package/src/i18n/catalogs/uk/admin/shipping.ts +119 -0
- package/src/i18n/catalogs/uk/admin/themes.ts +24 -0
- package/src/i18n/catalogs/uk/admin/users.ts +106 -0
- package/src/i18n/catalogs/uk/admin/validator.ts +34 -0
- package/src/i18n/catalogs/uk/app.ts +15 -0
- package/src/i18n/catalogs/uk/auth.ts +77 -0
- package/src/i18n/catalogs/uk/breadcrumbs.ts +4 -0
- package/src/i18n/catalogs/uk/cart.ts +24 -0
- package/src/i18n/catalogs/uk/catalog.ts +26 -0
- package/src/i18n/catalogs/uk/checkout.ts +137 -0
- package/src/i18n/catalogs/uk/common.ts +114 -0
- package/src/i18n/catalogs/uk/home.ts +5 -0
- package/src/i18n/catalogs/uk/index.ts +44 -0
- package/src/i18n/catalogs/uk/nav.ts +8 -0
- package/src/i18n/catalogs/uk/product.ts +36 -0
- package/src/i18n/catalogs/uk/profile.ts +117 -0
- package/src/i18n/catalogs/uk/properties.ts +18 -0
- package/src/i18n/catalogs/uk/reviews.ts +34 -0
- package/src/i18n/catalogs/uk/validation.ts +38 -0
- package/src/i18n/index.ts +14 -0
- package/src/i18n/translator.ts +53 -0
- package/src/i18n/types.ts +19 -0
- package/src/index.ts +12 -0
- package/src/plugin-sdk/definePlugin.ts +80 -0
- package/src/plugin-sdk/index.ts +22 -0
- package/src/plugin-sdk/server/config-db.ts +57 -0
- package/src/plugin-sdk/server/guard.ts +77 -0
- package/src/plugin-sdk/server/index.ts +118 -0
- package/src/plugin-sdk/server/table-db.ts +149 -0
- package/src/plugin-sdk/types.ts +70 -0
- package/src/plugin-sdk/usePluginConfig.ts +105 -0
- package/src/plugin-sdk/usePluginT.ts +33 -0
- package/src/plugin-sdk/usePluginTable.ts +90 -0
- package/src/plugins/HookRegistry.ts +125 -0
- package/src/plugins/PluginLoader.ts +69 -0
- package/src/plugins/PluginSlot.tsx +135 -0
- package/src/plugins/adminLifecycle.ts +83 -0
- package/src/plugins/bootstrap.ts +108 -0
- package/src/plugins/hooks.ts +155 -0
- package/src/plugins/index.ts +90 -0
- package/src/plugins/pluginRepository.ts +138 -0
- package/src/plugins/server/index.ts +53 -0
- package/src/plugins/server/registry-db.ts +105 -0
- package/src/plugins/types.ts +224 -0
- package/src/plugins/validatePluginModule.ts +114 -0
- package/src/profile-ui/AddressesList.tsx +358 -0
- package/src/profile-ui/AvatarUpload.tsx +215 -0
- package/src/profile-ui/RecipientsList.tsx +448 -0
- package/src/profile-ui/index.ts +4 -0
- package/src/react-query/EngineProvider.tsx +30 -0
- package/src/react-query/README.md +54 -0
- package/src/react-query/hooks.ts +49 -0
- package/src/react-query/index.ts +9 -0
- package/src/react-query/queries.ts +95 -0
- package/src/react-query/useCart.tsx +172 -0
- package/src/react-query/useFormatPrice.ts +39 -0
- package/src/reviews-ui/ProductReviews.tsx +172 -0
- package/src/reviews-ui/ReviewCard.tsx +165 -0
- package/src/reviews-ui/ReviewForm.tsx +136 -0
- package/src/reviews-ui/ReviewRichTextEditor.tsx +168 -0
- package/src/reviews-ui/StarRating.tsx +69 -0
- package/src/reviews-ui/index.ts +6 -0
- package/src/runtime/README.md +60 -0
- package/src/runtime/config.ts +45 -0
- package/src/runtime/index.ts +87 -0
- package/src/schema/README.md +114 -0
- package/src/schema/auth.ts +150 -0
- package/src/schema/index.ts +17 -0
- package/src/schema/media.ts +69 -0
- package/src/schema/relations.ts +449 -0
- package/src/schema/schema.ts +1049 -0
- package/src/schema/types.ts +164 -0
- package/src/storefront/README.md +68 -0
- package/src/storefront/client.ts +8 -0
- package/src/storefront/index.ts +6 -0
- package/src/storefront/loaders/addresses.ts +131 -0
- package/src/storefront/loaders/banners.ts +44 -0
- package/src/storefront/loaders/catalog-filters.ts +174 -0
- package/src/storefront/loaders/catalog-products.ts +145 -0
- package/src/storefront/loaders/categories.ts +44 -0
- package/src/storefront/loaders/db.ts +65 -0
- package/src/storefront/loaders/discounts.ts +110 -0
- package/src/storefront/loaders/entities/banner.ts +99 -0
- package/src/storefront/loaders/entities/catalog-product.ts +75 -0
- package/src/storefront/loaders/entities/discount.ts +81 -0
- package/src/storefront/loaders/entities/home-product.ts +49 -0
- package/src/storefront/loaders/entities/modification.ts +55 -0
- package/src/storefront/loaders/entities/order.ts +126 -0
- package/src/storefront/loaders/entities/price.ts +48 -0
- package/src/storefront/loaders/entities/product.ts +60 -0
- package/src/storefront/loaders/entities/property.ts +82 -0
- package/src/storefront/loaders/entities/section.ts +54 -0
- package/src/storefront/loaders/home-sections.ts +81 -0
- package/src/storefront/loaders/home.ts +81 -0
- package/src/storefront/loaders/index.ts +76 -0
- package/src/storefront/loaders/modification-values.ts +113 -0
- package/src/storefront/loaders/order-create.ts +134 -0
- package/src/storefront/loaders/order-statuses.ts +39 -0
- package/src/storefront/loaders/orders.ts +113 -0
- package/src/storefront/loaders/pickup-points.ts +36 -0
- package/src/storefront/loaders/pricing.ts +23 -0
- package/src/storefront/loaders/product-detail.ts +90 -0
- package/src/storefront/loaders/products.ts +106 -0
- package/src/storefront/loaders/profile.ts +96 -0
- package/src/storefront/loaders/properties.ts +91 -0
- package/src/storefront/loaders/property-option.ts +112 -0
- package/src/storefront/loaders/property-values.ts +101 -0
- package/src/storefront/loaders/recipients.ts +145 -0
- package/src/storefront/loaders/reviews-write.ts +58 -0
- package/src/storefront/loaders/reviews.ts +142 -0
- package/src/storefront/loaders/sections.ts +46 -0
- package/src/storefront/loaders/session.ts +53 -0
- package/src/storefront/loaders/shipping.ts +163 -0
- package/src/storefront/loaders/sitemap.ts +67 -0
- package/src/storefront/loaders/stock-info.ts +127 -0
- package/src/storefront/loaders/stock.ts +101 -0
- package/src/storefront/seo/index.ts +2 -0
- package/src/storefront/seo/robots.ts +16 -0
- package/src/storefront/seo/sitemap.ts +73 -0
- package/src/storefront-routes/active-theme.ts +23 -0
- package/src/storefront-routes/components/BannerSlider.tsx +196 -0
- package/src/storefront-routes/components/ProductCarousel.tsx +93 -0
- package/src/storefront-routes/components/SetPasswordForm.tsx +94 -0
- package/src/storefront-routes/components/SsrProductGrid.tsx +38 -0
- package/src/storefront-routes/index.ts +7 -0
- package/src/storefront-routes/pages/Auth.tsx +508 -0
- package/src/storefront-routes/pages/AuthInvite.tsx +101 -0
- package/src/storefront-routes/pages/AuthSetPassword.tsx +78 -0
- package/src/storefront-routes/pages/Cart.tsx +24 -0
- package/src/storefront-routes/pages/Catalog.tsx +41 -0
- package/src/storefront-routes/pages/CatalogSection.tsx +83 -0
- package/src/storefront-routes/pages/Checkout.tsx +353 -0
- package/src/storefront-routes/pages/Home.tsx +61 -0
- package/src/storefront-routes/pages/OrderSuccess.tsx +305 -0
- package/src/storefront-routes/pages/ProductDetail.tsx +135 -0
- package/src/storefront-routes/pages/Profile.tsx +195 -0
- package/src/storefront-routes/pages/ProfileOrderDetail.tsx +430 -0
- package/src/storefront-routes/pages/ProfileOrders.tsx +199 -0
- package/src/storefront-routes/pages/ProfileSettings.tsx +431 -0
- package/src/storefront-routes/pages/Properties.tsx +90 -0
- package/src/storefront-routes/pages/PropertyDetail.tsx +127 -0
- package/src/storefront-routes/pages/PropertyPage.tsx +203 -0
- package/src/storefront-routes/pages/cart/breadcrumbs.ts +12 -0
- package/src/storefront-routes/pages/cart/slots.ts +20 -0
- package/src/storefront-routes/pages/catalog/active-filter-chips.ts +103 -0
- package/src/storefront-routes/pages/catalog/breadcrumbs.ts +24 -0
- package/src/storefront-routes/pages/catalog/filter-predicates.ts +80 -0
- package/src/storefront-routes/pages/catalog/filtering.ts +118 -0
- package/src/storefront-routes/pages/catalog/slot-context.tsx +64 -0
- package/src/storefront-routes/pages/catalog/slots.tsx +80 -0
- package/src/storefront-routes/pages/catalog/types.ts +46 -0
- package/src/storefront-routes/pages/catalog/useActiveFilters.ts +69 -0
- package/src/storefront-routes/pages/catalog/useCatalogController.ts +149 -0
- package/src/storefront-routes/pages/catalog/useCatalogProductsQuery.ts +36 -0
- package/src/storefront-routes/pages/catalog/useCatalogQueries.ts +67 -0
- package/src/storefront-routes/pages/catalog/usePricedProducts.ts +87 -0
- package/src/storefront-routes/pages/home/SectionProductCarousel.tsx +30 -0
- package/src/storefront-routes/pages/home/queries.ts +72 -0
- package/src/storefront-routes/pages/home/slot-context.tsx +49 -0
- package/src/storefront-routes/pages/home/slots.tsx +30 -0
- package/src/storefront-routes/pages/home/toCardViewModel.ts +26 -0
- package/src/storefront-routes/pages/home/types.ts +17 -0
- package/src/storefront-routes/pages/product-detail/breadcrumbs.ts +29 -0
- package/src/storefront-routes/pages/product-detail/cart-item.ts +57 -0
- package/src/storefront-routes/pages/product-detail/pricing.ts +123 -0
- package/src/storefront-routes/pages/product-detail/slot-context.tsx +63 -0
- package/src/storefront-routes/pages/product-detail/slots.tsx +112 -0
- package/src/storefront-routes/pages/product-detail/types.ts +59 -0
- package/src/storefront-routes/pages/product-detail/useModificationData.ts +53 -0
- package/src/storefront-routes/pages/product-detail/useModificationSelection.ts +70 -0
- package/src/storefront-routes/pages/product-detail/useProductContent.ts +88 -0
- package/src/storefront-routes/pages/product-detail/useProductPricing.ts +88 -0
- package/src/storefront-routes/pages/product-detail/useProductQuery.ts +26 -0
- package/src/storefront-routes/seo/interceptor.ts +89 -0
- package/src/storefront-routes/seo/robots.ts +15 -0
- package/src/storefront-routes/seo/sitemap.ts +27 -0
- package/src/storefront-routes/server/auth.ts +45 -0
- package/src/storefront-routes/server/catalog.ts +120 -0
- package/src/storefront-routes/server/checkout-input.ts +67 -0
- package/src/storefront-routes/server/checkout.ts +133 -0
- package/src/storefront-routes/server/home.ts +49 -0
- package/src/storefront-routes/server/invite.ts +55 -0
- package/src/storefront-routes/server/is-admin.ts +27 -0
- package/src/storefront-routes/server/order-view.ts +41 -0
- package/src/storefront-routes/server/product-list-item.ts +87 -0
- package/src/storefront-routes/server/products.ts +47 -0
- package/src/storefront-routes/server/profile-orders.ts +91 -0
- package/src/storefront-routes/server/profile.ts +58 -0
- package/src/storefront-routes/server/properties.ts +39 -0
- package/src/storefront-routes/server/revalidate-theme.ts +27 -0
- package/src/storefront-routes/server/theme-record.ts +89 -0
- package/src/storefront-routes/server/themes.ts +14 -0
- package/src/storefront-routes/shells/ProtectedShell.tsx +83 -0
- package/src/storefront-routes/shells/StorefrontShell.tsx +25 -0
- package/src/storefront-routes/shells/ThemeFonts.tsx +31 -0
- package/src/storefront-routes/shells/ThemeTokens.tsx +17 -0
- package/src/storefront-routes/shells/useActiveThemeModule.ts +16 -0
- package/src/storefront-routes/views/CartView.tsx +86 -0
- package/src/storefront-routes/views/CatalogLayout.tsx +60 -0
- package/src/storefront-routes/views/CatalogSectionView.tsx +39 -0
- package/src/storefront-routes/views/CatalogToolbar.tsx +48 -0
- package/src/storefront-routes/views/CatalogView.tsx +30 -0
- package/src/storefront-routes/views/HomeView.tsx +62 -0
- package/src/storefront-routes/views/ProductDetailInfo.tsx +77 -0
- package/src/storefront-routes/views/ProductDetailSections.tsx +107 -0
- package/src/storefront-routes/views/ProductDetailView.tsx +47 -0
- package/src/storefront-routes/views/StorefrontBreadcrumbs.tsx +31 -0
- package/src/storefront-routes/views/slots/CartSlots.tsx +72 -0
- package/src/storefront-routes/views/slots/CartSummary.tsx +49 -0
- package/src/storefront-routes/views/slots/CatalogFilters.tsx +26 -0
- package/src/storefront-routes/views/slots/CatalogProductGrid.tsx +80 -0
- package/src/storefront-routes/views/slots/CatalogSectionChips.tsx +136 -0
- package/src/storefront-routes/views/slots/CatalogToolbarSlots.tsx +125 -0
- package/src/storefront-routes/views/slots/HomeSectionCarousel.tsx +29 -0
- package/src/storefront-routes/views/slots/ProductAddToCart.tsx +58 -0
- package/src/storefront-routes/views/slots/ProductContentSlots.tsx +52 -0
- package/src/storefront-routes/views/slots/ProductModificationPicker.tsx +44 -0
- package/src/storefront-routes/views/slots/ProductPluginSlots.tsx +63 -0
- package/src/storefront-routes/views/slots/ProductPriceBlock.tsx +42 -0
- package/src/storefront-routes/views/slots/ProductStockBadge.tsx +45 -0
- package/src/storefront-routes/views/useStorefrontViews.ts +34 -0
- package/src/storefront-routes/vite-env.d.ts +12 -0
- package/src/supabase/README.md +73 -0
- package/src/supabase/SupabaseProvider.tsx +53 -0
- package/src/supabase/anon-client.ts +27 -0
- package/src/supabase/browser-client.ts +33 -0
- package/src/supabase/database.ts +2204 -0
- package/src/supabase/index.ts +21 -0
- package/src/supabase/keys.ts +42 -0
- package/src/supabase/server-client.ts +49 -0
- package/src/supabase/vite-env.d.ts +16 -0
- package/src/themes/ThemeContext.tsx +109 -0
- package/src/themes/ThemeRegistry.ts +126 -0
- package/src/themes/applyTokens.ts +79 -0
- package/src/themes/bootstrapThemes.ts +117 -0
- package/src/themes/conformance/assertThemeViewsConformance.ts +123 -0
- package/src/themes/conformance/boundary.tsx +38 -0
- package/src/themes/conformance/cases.tsx +103 -0
- package/src/themes/conformance/index.ts +13 -0
- package/src/themes/conformance/render.tsx +97 -0
- package/src/themes/conformance/stubs.tsx +67 -0
- package/src/themes/index.ts +8 -0
- package/src/themes/safeFontStylesheets.ts +62 -0
- package/src/themes/server/index.ts +47 -0
- package/src/themes/server/registry-db.ts +67 -0
- package/src/themes/theme-context.ts +26 -0
- package/src/themes/theme-settings.ts +21 -0
- package/src/themes/types.ts +214 -0
- package/src/themes/useThemeT.ts +49 -0
- package/src/themes/validateThemeModule.ts +126 -0
- package/src/themes/validateThemeViews.ts +46 -0
- package/src/ui/accordion.tsx +56 -0
- package/src/ui/alert-dialog.tsx +139 -0
- package/src/ui/alert.tsx +59 -0
- package/src/ui/aspect-ratio.tsx +5 -0
- package/src/ui/avatar.tsx +48 -0
- package/src/ui/badge.tsx +37 -0
- package/src/ui/breadcrumb.tsx +115 -0
- package/src/ui/button.tsx +57 -0
- package/src/ui/calendar.tsx +67 -0
- package/src/ui/card.tsx +86 -0
- package/src/ui/carousel.tsx +260 -0
- package/src/ui/chart.tsx +390 -0
- package/src/ui/checkbox.tsx +28 -0
- package/src/ui/collapsible.tsx +9 -0
- package/src/ui/command.tsx +153 -0
- package/src/ui/context-menu.tsx +198 -0
- package/src/ui/dialog.tsx +120 -0
- package/src/ui/drawer.tsx +116 -0
- package/src/ui/dropdown-menu.tsx +198 -0
- package/src/ui/form.tsx +177 -0
- package/src/ui/hover-card.tsx +27 -0
- package/src/ui/index.ts +53 -0
- package/src/ui/input-otp.tsx +69 -0
- package/src/ui/input.tsx +22 -0
- package/src/ui/label.tsx +24 -0
- package/src/ui/menubar.tsx +237 -0
- package/src/ui/navigation-menu.tsx +128 -0
- package/src/ui/pagination.tsx +117 -0
- package/src/ui/popover.tsx +29 -0
- package/src/ui/progress.tsx +26 -0
- package/src/ui/radio-group.tsx +42 -0
- package/src/ui/resizable.tsx +43 -0
- package/src/ui/scroll-area.tsx +46 -0
- package/src/ui/select.tsx +158 -0
- package/src/ui/separator.tsx +29 -0
- package/src/ui/sheet.tsx +139 -0
- package/src/ui/sidebar.tsx +771 -0
- package/src/ui/skeleton.tsx +15 -0
- package/src/ui/slider.tsx +26 -0
- package/src/ui/sonner.tsx +29 -0
- package/src/ui/switch.tsx +27 -0
- package/src/ui/table.tsx +117 -0
- package/src/ui/tabs.tsx +53 -0
- package/src/ui/textarea.tsx +23 -0
- package/src/ui/toast.tsx +127 -0
- package/src/ui/toaster.tsx +33 -0
- package/src/ui/toggle-group.tsx +59 -0
- package/src/ui/toggle.tsx +43 -0
- package/src/ui/tooltip.tsx +28 -0
- package/src/ui/use-mobile.tsx +21 -0
- package/src/ui/use-toast.ts +191 -0
- package/src/ui/utils.ts +6 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/auth/drizzle-proxy.ts","../../src/auth/env.ts","../../src/auth/hooks.ts","../../src/auth/invite-email.ts","../../src/auth/provision.ts","../../src/auth/send-email.ts","../../src/auth/instance.ts","../../src/auth/invite.ts","../../src/auth/accept-invite.ts","../../src/auth/invite-store.ts","../../src/auth/session.ts","../../src/auth/authz.ts"],"names":["sql","result","withActor","randomBytes","users","verifications","userRoles","eq"],"mappings":"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","file":"index.js","sourcesContent":["import { drizzle } from 'drizzle-orm/pg-proxy';\nimport { withActor } from 'simplycms/db';\n\n/**\n * Міст «Better Auth → Postgres» через `withActor` (Task 7, В2-К1а).\n *\n * 🔴 Чому proxy-драйвер, а не звичайний `drizzle(pool)`. Контракт B5″ каже:\n * зʼєднання беруться ЛИШЕ через `withActor` (голий пул повертає обидва тихі\n * режими відмови, тому імпорт `simplycms/db/client` — помилка лінту). Але\n * `drizzleAdapter` хоче ОДИН довгоживучий db-обʼєкт, а `withActor` живе рівно\n * одну транзакцію. `drizzle-orm/pg-proxy` знімає протиріччя: він не тримає\n * зʼєднання взагалі, а віддає кожен згенерований SQL у колбек — тож кожен\n * запит адаптера стає власною короткою транзакцією під `app_admin`.\n *\n * Ціна відома й прийнята: одна транзакція на запит замість однієї на\n * операцію. Це auth-шлях (реєстрація, вхід, читання сесії), а не гаряча\n * траєкторія каталогу; вимірювана ціна тут дешевша за четверту роль БД або\n * за дірку в лінт-зоні.\n *\n * 🔴 Роль — `app_admin`, бо саме їй видані гранти на таблиці Better Auth\n * (0002_grants.sql, §6): контракт v2 знає рівно дві акторські ролі. Шлях\n * мусить лишатись ВУЗЬКИМ — це не привід відкривати `app_admin` запиту\n * загалом, і поза цим модулем `app_admin` вмикається лише після\n * `requireOperation` (див. `./authz`).\n */\n\n/** Роль, під якою виконуються ВСІ запити auth-контуру. */\nconst AUTH_ROLE = 'app_admin' as const;\n\n/**\n * Драйвер pg-proxy кличе колбек із `method`, і форма відповіді від нього\n * ЗАЛЕЖИТЬ: для `'execute'` рядки віддаються як обʼєкти, для решти (`'all'`,\n * `'values'`, `'get'`) drizzle сам мапить їх за ПОЗИЦІЄЮ колонки, тобто чекає\n * масиви. Помилка тут не падає — вона тихо дає `undefined` у кожному полі,\n * тому режим вибирається явно, а не «як вийде».\n */\nconst arrayMode = (method: string): boolean => method !== 'execute';\n\n/** Транзакції proxy-драйвер не підтримує — див. докблок нижче. */\nexport type AuthDb = ReturnType<typeof createAuthDb>;\n\n/**\n * Drizzle-інстанс для `drizzleAdapter`.\n *\n * 🔴 `drizzle-orm/pg-proxy` кидає на `db.transaction()`. Для нас це безпечно й\n * перевірено: у `@better-auth/drizzle-adapter@1.7.1` усі виклики\n * `db.transaction` стоять під `config.provider === 'mysql'`, а сам адаптер\n * конфігурується з `transaction: false` (дефолт). Якщо апстрім це змінить,\n * ми дізнаємось падінням тесту, а не тихою втратою атомарності — і це\n * рівно та поведінка, якої ми хочемо від піну версії (B3).\n */\nexport function createAuthDb() {\n return drizzle(async (sql, params, method) => {\n const rows = await withActor({ role: AUTH_ROLE }, async (_db, client) => {\n // 🔴 Дві гілки, а не один обʼєкт із `rowMode: undefined`: у типах `pg`\n // масивний режим — ОКРЕМИЙ перевантажений виклик (`QueryArrayConfig`),\n // і опційне поле в спільному літералі не типізується взагалі.\n if (arrayMode(method)) {\n const result = await client.query<unknown[]>({\n text: sql,\n values: params,\n rowMode: 'array',\n });\n return result.rows;\n }\n const result = await client.query({ text: sql, values: params });\n return result.rows as unknown[];\n });\n return { rows };\n });\n}\n","/**\n * Контракт серверного env для auth-контуру (спека CLI v1 §7, Task 7).\n *\n * 🔴 Ключі читаються ЛИШЕ з `process.env` і ЛИШЕ в рантаймі — усередині\n * фабрики інстансу, не на модуль-рівні. `VITE_`-префікса тут немає й бути не\n * може: секрет підпису сесій у клієнтському бандлі — це вже не секрет.\n * Наслідок той самий, що й у Supabase-фабрик: ротація секрету = перезапуск\n * процесу, без перезбірки.\n *\n * Функції винесено з `./instance` навмисно: так контракт env перевіряється\n * юнітом без інстансу Better Auth і без БД.\n */\n\n/** Джерело змінних оточення (та сама форма, що в `db/client` і `supabase/keys`). */\nexport interface AuthEnv {\n readonly BETTER_AUTH_SECRET?: string;\n readonly BETTER_AUTH_URL?: string;\n}\n\n/**\n * Секрет підпису сесій і токенів.\n *\n * @throws Error якщо ключ відсутній або порожній — тихий фолбек на\n * згенерований секрет зробив би всі сесії недійсними після кожного\n * перезапуску, і діагноз виглядав би як «випадкові розлогіни».\n */\nexport function resolveAuthSecret(env: AuthEnv): string {\n // `||`, а не `??`: оголошена-але-порожня змінна — це відсутній ключ.\n const secret = env.BETTER_AUTH_SECRET || undefined;\n\n if (!secret) {\n throw new Error(\n '[simplycms/auth] Відсутня змінна оточення BETTER_AUTH_SECRET — ' +\n 'нема чим підписувати сесії. Контракт серверного env — спека CLI v1 ' +\n '§7 (лише process.env, лише в рантаймі).',\n );\n }\n\n return secret;\n}\n\n/**\n * Публічна база URL застосунку (потрібна для колбеків OAuth і посилань у\n * листах). Опційна: без неї Better Auth виводить базу з самого запиту, чого\n * достатньо для email/password-флоу.\n */\nexport const resolveAuthBaseUrl = (env: AuthEnv): string | undefined =>\n env.BETTER_AUTH_URL || undefined;\n","import type { AppRole } from './authz';\n\n/**\n * Порт `handle_new_user` у TS (B3′, Task 7) — те, що робив SQL-тригер\n * `on_auth_user_created` на схемі GoTrue.\n *\n * 🔴 Інваріант `first_user_no_auto_admin` (аудит 2026-08-04) переїхав сюди\n * РАЗОМ із логікою і мусить лишитись: перший signup НЕ стає адміном. Стара\n * діра звалась «хто перший встиг» — реєстрація на свіжому магазині давала\n * повний доступ будь-кому, хто випередив власника. Роль `admin` тепер видає\n * ЛИШЕ invite власника (`./invite`) або наявний адмін. Тут ролі не\n * обчислюються взагалі — вона константа, і саме тому діру неможливо\n * відтворити «випадковою умовою».\n */\n\n/** Роль КОЖНОГО новоствореного користувача. Винятків немає — див. вище. */\nexport const SIGNUP_ROLE: AppRole = 'user';\n\n/** Мінімум, який Better Auth знає про щойно створеного користувача. */\nexport interface NewAuthUser {\n readonly id: string;\n readonly email: string;\n readonly name?: string | null;\n}\n\n/** Що саме треба записати в доменні таблиці магазину. */\nexport interface UserProvisionPlan {\n readonly userId: string;\n readonly email: string;\n readonly firstName: string | null;\n readonly lastName: string | null;\n readonly role: AppRole;\n}\n\n/** Запис плану в БД. Порт — щоб хук тестувався без Postgres. */\nexport type ProvisionUser = (plan: UserProvisionPlan) => Promise<void>;\n\n/**\n * Розбиває єдине `name` Better Auth на пару, яку чекає `profiles`.\n *\n * 🔴 Розрив моделей реальний: GoTrue тримав `first_name`/`last_name` у\n * `raw_user_meta_data`, а BA має одне поле `name`. Розбиття по ПЕРШОМУ\n * пробілу (решта — у прізвище) — свідомий компроміс: воно не «правильне» для\n * всіх культур, зате зворотне (склеювання) завжди дає вихідний рядок.\n */\nexport function splitName(name?: string | null): {\n firstName: string | null;\n lastName: string | null;\n} {\n const trimmed = (name ?? '').trim();\n if (!trimmed) return { firstName: null, lastName: null };\n\n const space = trimmed.indexOf(' ');\n if (space === -1) return { firstName: trimmed, lastName: null };\n return {\n firstName: trimmed.slice(0, space),\n lastName: trimmed.slice(space + 1).trim() || null,\n };\n}\n\n/**\n * ЧИСТА побудова плану провізії — рівно те, що можна довести юнітом без БД.\n *\n * Категорія покупця тут не обчислюється: у `profiles.category_id` їде\n * категорія за замовчуванням (`user_categories.is_default`, сід `0003_seed`),\n * і вибирає її сам INSERT підзапитом — інакше довелось би тягнути зайве\n * читання й вирішувати, що робити з гонкою.\n */\nexport function buildUserProvision(user: NewAuthUser): UserProvisionPlan {\n const { firstName, lastName } = splitName(user.name);\n return {\n userId: user.id,\n email: user.email,\n firstName,\n lastName,\n role: SIGNUP_ROLE,\n };\n}\n\n/**\n * `databaseHooks.user.create.after` для інстансу Better Auth.\n *\n * 🔴 Хук виконується ПІСЛЯ коміту створення користувача й окремою\n * транзакцією, тобто атомарності «user + profile» немає. Це властивість\n * `databaseHooks`, а не недогляд: єдиний спосіб дістати атомарність — вести\n * весь signUp однією транзакцією, чого адаптер BA не дає. Наслідок треба\n * знати: користувач без профілю можливий, якщо провізія впала, — і саме тому\n * помилка звідси НЕ ковтається, а летить наверх, роблячи signUp невдалим.\n */\nexport const createUserCreateHook =\n (provisionUser: ProvisionUser) =>\n async (user: NewAuthUser): Promise<void> => {\n await provisionUser(buildUserProvision(user));\n };\n","/**\n * Рендер листа-запрошення власника (Task 7, В2-К1а).\n *\n * 🔴 Виділено чистою функцією саме тому, що ДОСТАВКА недосяжна: SMTP у цьому\n * оточенні немає, лист шле колбек магазину. Рендер же — єдина частина, яку\n * можна довести машинно, і вона доводиться юнітом: посилання ціле, токен не\n * загубився, HTML-версія не ламається на лапках в імені магазину.\n */\n\n/** Готовий лист — те, що колбек магазину віддає своєму транспорту. */\nexport interface InviteEmail {\n readonly to: string;\n readonly subject: string;\n readonly text: string;\n readonly html: string;\n}\n\n/** Колбек доставки. Реалізує магазин; ядро транспорту не знає. */\nexport type SendInviteEmail = (message: InviteEmail) => Promise<void>;\n\n/** Мінімальне екранування — лист збирається конкатенацією, не шаблонізатором. */\nconst escapeHtml = (value: string): string =>\n value\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"');\n\n/** Скільки годин лишилось жити токену — для тексту листа. */\nconst hours = (ttlMs: number): number =>\n Math.max(1, Math.round(ttlMs / 3_600_000));\n\nexport interface InviteEmailInput {\n readonly to: string;\n readonly url: string;\n readonly storeName: string;\n readonly ttlMs: number;\n}\n\n/** Збирає лист. Мова — українська: це лист власнику магазину, не UI-рядок. */\nexport function renderInviteEmail(input: InviteEmailInput): InviteEmail {\n const ttl = hours(input.ttlMs);\n const subject = `Запрошення власника — ${input.storeName}`;\n const text =\n `Вас запрошено власником магазину «${input.storeName}».\\n\\n` +\n `Щоб задати пароль і увійти, відкрийте посилання:\\n${input.url}\\n\\n` +\n `Посилання одноразове й дійсне ${ttl} год. Якщо ви не чекали цього ` +\n `листа — просто проігноруйте його.`;\n const html =\n `<p>Вас запрошено власником магазину «${escapeHtml(input.storeName)}».</p>` +\n `<p><a href=\"${escapeHtml(input.url)}\">Задати пароль і увійти</a></p>` +\n `<p>Посилання одноразове й дійсне ${ttl} год.</p>`;\n\n return { to: input.to, subject, text, html };\n}\n\nexport interface ResetPasswordEmailInput {\n readonly to: string;\n readonly url: string;\n readonly storeName: string;\n}\n\n/**\n * Лист скидання пароля (К1′б).\n *\n * Живе поруч із запрошенням навмисно: обидва — листи auth-контуру з ОДНИМ\n * одноразовим посиланням, і спільне екранування тут дешевше за другий модуль\n * із власною копією тих самих чотирьох `replace`.\n */\nexport function renderResetPasswordEmail(\n input: ResetPasswordEmailInput,\n): InviteEmail {\n const subject = `Скидання пароля — ${input.storeName}`;\n const text =\n `Ви (або хтось інший) попросили скинути пароль у магазині ` +\n `«${input.storeName}».\\n\\nЩоб задати новий пароль, відкрийте ` +\n `посилання:\\n${input.url}\\n\\nЯкщо ви цього не робили — просто ` +\n `проігноруйте лист, пароль лишиться попереднім.`;\n const html =\n `<p>Запит на скидання пароля в магазині «${escapeHtml(input.storeName)}».</p>` +\n `<p><a href=\"${escapeHtml(input.url)}\">Задати новий пароль</a></p>`;\n\n return { to: input.to, subject, text, html };\n}\n","import { sql } from 'drizzle-orm';\nimport { withActor } from 'simplycms/db';\nimport { profiles, userRoles } from 'simplycms/schema';\nimport type { ProvisionUser } from './hooks';\n\n/**\n * Реалізація порту провізії на Postgres (Task 7, В2-К1а).\n *\n * Роль — `app_admin`: політики `profiles_admin_all` і `user_roles_admin_all`\n * дозволяють запис саме їй, а покупець свій профіль лише читає й редагує\n * (0002_grants.sql, §4). Це той самий вузький auth-шлях, що й у\n * `./drizzle-proxy`.\n */\nexport const provisionUserInDb: ProvisionUser = async (plan) => {\n await withActor({ role: 'app_admin' }, async (db) => {\n await db.insert(profiles).values({\n userId: plan.userId,\n email: plan.email,\n firstName: plan.firstName,\n lastName: plan.lastName,\n // 🔴 Підзапитом, а не окремим SELECT: категорія за замовчуванням\n // читається В ТІЙ САМІЙ транзакції, тож між читанням і записом ніхто\n // не встигне перемкнути прапорець `is_default`.\n categoryId: sql`(select id from public.user_categories where is_default limit 1)`,\n });\n\n // `onConflictDoNothing` — повторна провізія (ретрай хука після мережевого\n // збою) не має падати на унікальності `(user_id, role)`.\n await db\n .insert(userRoles)\n .values({ userId: plan.userId, role: plan.role })\n .onConflictDoNothing();\n });\n};\n","import type { InviteEmail } from './invite-email';\n\n/**\n * Канал доставки листів auth-контуру (К1′б).\n *\n * 🔴 SMTP тут НЕ реалізується — рішення власника: доставку він налаштовує й\n * перевіряє локально. Ядро зобовʼязане лише КЛИКАТИ канал у всіх точках, де\n * лист має піти, щоб магазину лишалося підставити одну функцію, а не шукати\n * місця виклику.\n */\nexport type SendAuthEmail = (message: InviteEmail) => Promise<void>;\n\n/**\n * Заглушка за замовчуванням: пише лист у лог замість відправки.\n *\n * 🔴 TODO(К6): підмінити реальним транспортом магазину. Мовчки ковтати лист\n * не можна — посилання для скидання пароля й запрошення власника тоді\n * зникали б безслідно, і діагноз виглядав би як «пошта не приходить».\n * Лог лишає їх видимими в консолі сервера.\n */\nexport const stubSendAuthEmail: SendAuthEmail = async (message) => {\n console.warn(\n '[simplycms/auth] Лист НЕ надіслано (транспорт не налаштовано). ' +\n `Кому: ${message.to}. Тема: ${message.subject}.\\n${message.text}`,\n );\n};\n","import { betterAuth } from 'better-auth';\nimport { drizzleAdapter } from 'better-auth/adapters/drizzle';\nimport { accounts, sessions, users, verifications } from 'simplycms/schema';\nimport { createAuthDb } from './drizzle-proxy';\nimport { resolveAuthBaseUrl, resolveAuthSecret } from './env';\nimport { createUserCreateHook, type ProvisionUser } from './hooks';\nimport { renderResetPasswordEmail } from './invite-email';\nimport { provisionUserInDb } from './provision';\nimport { stubSendAuthEmail, type SendAuthEmail } from './send-email';\n\n/**\n * Інстанс Better Auth серверного контуру v2 (B3′, Task 7).\n *\n * 🔴 Контур ще НЕ підключений до `start.ts`, роутів і клієнта — це К1′б.\n * Тут будується робочий серверний auth ПОРУЧ із чинним GoTrue-флоу, який\n * лишається недоторканим.\n *\n * 🔴 Плагінів — нуль (B3: CVE-поверхня). Кожен плагін BA додає роути й\n * таблиці; ставити їх «про запас» означає розширювати поверхню атаки на\n * функціональність, якою ніхто не користується.\n */\n\n/** Схема, яку бачить адаптер. Ключі — імена МОДЕЛЕЙ (див. `usePlural`). */\nconst authSchema = { users, sessions, accounts, verifications };\n\n/** Що можна підмінити ззовні — рівно стільки, скільки треба тестам. */\nexport interface AuthDeps {\n /**\n * DB-адаптер Better Auth. За замовчуванням — drizzle над pg-proxy через\n * `withActor`. Юніт-тести підставляють `better-auth/adapters/memory` — саме\n * цим DoD спеки «BA тестується без Docker» виконується фактом.\n */\n readonly database?: Parameters<typeof betterAuth>[0]['database'];\n /** Провізія `profiles`+`user_roles`. За замовчуванням — запис у Postgres. */\n readonly provisionUser?: ProvisionUser;\n readonly secret?: string;\n readonly baseURL?: string;\n /**\n * Канал доставки листів. За замовчуванням — заглушка з логом\n * (`./send-email`): SMTP лишається справою магазину, ядро лише КЛИЧЕ канал.\n */\n readonly sendEmail?: SendAuthEmail;\n /** Назва магазину в темі листа. */\n readonly storeName?: string;\n}\n\n/**\n * Створює інстанс. Env читається ТУТ, у рантаймі — не на модуль-рівні.\n */\nexport function createAuth(deps: AuthDeps = {}) {\n const sendEmail = deps.sendEmail ?? stubSendAuthEmail;\n const storeName = deps.storeName ?? 'SimplyCMS';\n\n return betterAuth({\n secret: deps.secret ?? resolveAuthSecret(process.env),\n baseURL: deps.baseURL ?? resolveAuthBaseUrl(process.env),\n database:\n deps.database ??\n drizzleAdapter(createAuthDb(), {\n provider: 'pg',\n schema: authSchema,\n // 🔴 Обовʼязково: наші таблиці названі в МНОЖИНІ (узгоджено з доменною\n // схемою), а BA за замовчуванням шукає `user`/`session` — без цього\n // прапорця адаптер падає на першому ж запиті.\n usePlural: true,\n }),\n emailAndPassword: {\n enabled: true,\n // 🔴 Колбек прибіндований ЗАВЖДИ, навіть коли транспорт — заглушка.\n // Інакше `requestPasswordReset` мовчки повертав би 200 без жодного\n // сліду, і «лист не прийшов» неможливо було б відрізнити від\n // «магазин не налаштував пошту».\n sendResetPassword: async ({ user, url }) => {\n await sendEmail(\n renderResetPasswordEmail({ to: user.email, url, storeName }),\n );\n },\n },\n advanced: {\n database: {\n // 🔴 `'uuid'` — єдине значення, коректне для ОБОХ адаптерів. Драйвер\n // drizzle-pg оголошує `supportsUUIDs`, тож id генерує сама БД\n // (`gen_random_uuid()` дефолтом колонки, як описано в `schema/auth`);\n // memory-адаптер UUID не підтримує, і BA згенерує його в JS. Значення\n // `false` зламало б саме memory-контур — користувач лишався б без id.\n generateId: 'uuid',\n },\n },\n databaseHooks: {\n user: {\n create: {\n after: createUserCreateHook(deps.provisionUser ?? provisionUserInDb),\n },\n },\n },\n });\n}\n\n/** Тип готового інстансу — для сигнатур споживачів К1′б. */\nexport type SimplyAuth = ReturnType<typeof createAuth>;\n\nlet instance: SimplyAuth | undefined;\n\n/**\n * Інстанс процесу (лінива синглтон-фабрика) — той самий контракт «рестарт\n * замість гарячої ротації», що й у пулу `simplycms/db`.\n */\nexport function getAuth(): SimplyAuth {\n instance ??= createAuth();\n return instance;\n}\n\n/** Скидає синглтон (teardown тестів, перемикання env). */\nexport function resetAuth(): void {\n instance = undefined;\n}\n","import { createHash, randomBytes, timingSafeEqual } from 'node:crypto';\nimport { renderInviteEmail, type SendInviteEmail } from './invite-email';\n\n/**\n * Invite власника — заміна механіки `inviteUserByEmail` (Task 7, В2-К1а).\n *\n * 🔴 Що змінилось по суті. У GoTrue лист будував сам Supabase за шаблоном\n * `supabase/templates/invite.html`, і перевірити рендер було нічим. Тепер\n * токен випускаємо МИ, лист рендеримо МИ (`./invite-email`), а шле його\n * колбек магазину — тож усе, крім SMTP-доставки, стає юніт-тестовним.\n * SMTP лишається боргом оточення (доводиться в власника).\n *\n * 🔴 У БД лягає лише SHA-256 токена. Дамп таблиці `verifications` не має\n * давати дійсного посилання: цим invite відрізняється від «просто рядка з\n * секретом».\n */\n\n/** Порт сховища. Реалізація на Postgres — `./invite-store`. */\nexport interface OwnerInviteStore {\n findUserIdByEmail(email: string): Promise<string | null>;\n createUser(input: { email: string; name: string }): Promise<string>;\n storeToken(input: {\n identifier: string;\n valueHash: string;\n expiresAt: Date;\n }): Promise<void>;\n consumeToken(\n identifier: string,\n ): Promise<{ valueHash: string; expiresAt: Date } | null>;\n grantAdminRole(userId: string): Promise<void>;\n}\n\nconst DEFAULT_TTL_MS = 24 * 3_600_000;\n\n/** Ключ запису у `verifications`. Пошта — у нижньому регістрі: вона й є ключ. */\nexport const inviteIdentifier = (email: string): string =>\n `owner-invite:${email.trim().toLowerCase()}`;\n\nconst hashToken = (token: string): string =>\n createHash('sha256').update(token).digest('hex');\n\nexport interface IssueOwnerInviteInput {\n readonly store: OwnerInviteStore;\n readonly sendEmail: SendInviteEmail;\n readonly email: string;\n readonly siteUrl: string;\n readonly storeName?: string;\n readonly ttlMs?: number;\n readonly now?: Date;\n /** Тільки для тестів: детермінований токен замість випадкового. */\n readonly token?: string;\n}\n\nexport interface OwnerInviteResult {\n readonly userId: string;\n /** `false` — користувач уже існував: повторний invite його не дублює. */\n readonly created: boolean;\n readonly url: string;\n}\n\n/**\n * Випускає запрошення. Ідемпотентно щодо КОРИСТУВАЧА: повторний виклик на ту\n * саму пошту не створює другого рядка `users` і не дублює роль — він лише\n * перевипускає токен. Саме так поводився старий `owner:invite` (гілка\n * `email_exists`), і саме цю поведінку власник очікує від «надішли ще раз».\n */\nexport async function issueOwnerInvite(\n input: IssueOwnerInviteInput,\n): Promise<OwnerInviteResult> {\n const email = input.email.trim().toLowerCase();\n const ttlMs = input.ttlMs ?? DEFAULT_TTL_MS;\n const now = input.now ?? new Date();\n\n const existing = await input.store.findUserIdByEmail(email);\n const userId =\n existing ?? (await input.store.createUser({ email, name: email }));\n\n const token = input.token ?? randomBytes(32).toString('base64url');\n await input.store.storeToken({\n identifier: inviteIdentifier(email),\n valueHash: hashToken(token),\n expiresAt: new Date(now.getTime() + ttlMs),\n });\n\n // Роль закріплюється НЕ хуком signUp (той дає рівно `user` — інваріант\n // `first_user_no_auto_admin`), а саме тут: invite власника і є єдиний\n // легальний шлях до `admin` на чистому магазині.\n await input.store.grantAdminRole(userId);\n\n const url =\n `${input.siteUrl.replace(/\\/$/, '')}/auth/invite` +\n `?email=${encodeURIComponent(email)}&token=${encodeURIComponent(token)}`;\n\n await input.sendEmail(\n renderInviteEmail({\n to: email,\n url,\n storeName: input.storeName ?? 'SimplyCMS',\n ttlMs,\n }),\n );\n\n return { userId, created: existing === null, url };\n}\n\n/** Чому запрошення не прийнято — рівно ті випадки, які має розрізняти UI. */\nexport type InviteRejection = 'not-found' | 'expired' | 'mismatch';\n\nexport type VerifyOwnerInviteResult =\n | { readonly ok: true; readonly userId: string }\n | { readonly ok: false; readonly reason: InviteRejection };\n\n/**\n * Перевіряє токен і СПОЖИВАЄ його (одноразовість).\n *\n * 🔴 Порівняння хешів — `timingSafeEqual`, а не `===`: обидва рядки однакової\n * довжини й повністю контрольовані зловмисником, тобто це класичний випадок,\n * де побайтове раннє повернення тече в тайминг.\n *\n * Прив'язку пароля робить К1′б: тут доводиться лише «токен дійсний і це той\n * самий користувач».\n */\nexport async function verifyOwnerInvite(input: {\n store: OwnerInviteStore;\n email: string;\n token: string;\n now?: Date;\n}): Promise<VerifyOwnerInviteResult> {\n const email = input.email.trim().toLowerCase();\n const now = input.now ?? new Date();\n\n const record = await input.store.consumeToken(inviteIdentifier(email));\n if (!record) return { ok: false, reason: 'not-found' };\n if (record.expiresAt.getTime() <= now.getTime())\n return { ok: false, reason: 'expired' };\n\n const actual = Buffer.from(hashToken(input.token), 'hex');\n const expected = Buffer.from(record.valueHash, 'hex');\n if (actual.length !== expected.length || !timingSafeEqual(actual, expected))\n return { ok: false, reason: 'mismatch' };\n\n const userId = await input.store.findUserIdByEmail(email);\n return userId ? { ok: true, userId } : { ok: false, reason: 'not-found' };\n}\n","import { randomBytes } from 'node:crypto';\nimport type { SimplyAuth } from './instance';\nimport {\n verifyOwnerInvite,\n type InviteRejection,\n type OwnerInviteStore,\n} from './invite';\n\n/**\n * Прийняття запрошення власника: токен із листа → пароль → робочий вхід.\n *\n * 🔴 Ланка, якої бракувало. `issueOwnerInvite` випускав посилання, а\n * `verifyOwnerInvite` умів лише сказати «токен дійсний»; пароля власник не\n * отримував ніде, тож перший адмін на чистому магазині був недосяжний.\n *\n * 🔴 Пароль пишеться НЕ вручну в `accounts`, а штатним `POST /reset-password`\n * самого Better Auth. Це свідомий обхід чужої внутрішньої кухні: саме той\n * ендпойнт уміє і створити credential-акаунт, коли його ще немає (наш\n * запрошений власник), і перезаписати наявний, і робить це тим самим\n * хешуванням, що й реєстрація. Копія цієї логіки в нас застаріла б мовчки —\n * і виявилось би це неможливістю ввійти.\n *\n * Ціна прийому — одноразовий внутрішній verification-рядок BA: наш токен уже\n * доведено спожитий, і ми обмінюємо його на токен, який розуміє BA. Він живе\n * хвилину й гаситься самим ендпойнтом.\n */\n\n/** Чому прийняття не відбулось — рівно ті випадки, які розрізняє UI. */\nexport type AcceptInviteRejection = InviteRejection | 'password-rejected';\n\nexport type AcceptOwnerInviteResult =\n | { readonly ok: true; readonly userId: string }\n | { readonly ok: false; readonly reason: AcceptInviteRejection };\n\nexport interface AcceptOwnerInviteInput {\n readonly auth: SimplyAuth;\n readonly store: OwnerInviteStore;\n readonly email: string;\n readonly token: string;\n readonly password: string;\n readonly now?: Date;\n}\n\n/** Скільки живе внутрішній обмінний токен BA. Хвилини вистачає з запасом. */\nconst EXCHANGE_TTL_MS = 60_000;\n\nexport async function acceptOwnerInvite(\n input: AcceptOwnerInviteInput,\n): Promise<AcceptOwnerInviteResult> {\n // 🔴 Спершу СПОЖИТИ наш токен і лише потім чіпати пароль: інакше невдала\n // спроба пароля лишала б запрошення живим, а це вже підбір за посиланням.\n const verified = await verifyOwnerInvite({\n store: input.store,\n email: input.email,\n token: input.token,\n now: input.now,\n });\n if (!verified.ok) return { ok: false, reason: verified.reason };\n\n const context = await input.auth.$context;\n const exchangeToken = randomBytes(32).toString('base64url');\n await context.internalAdapter.createVerificationValue({\n identifier: `reset-password:${exchangeToken}`,\n value: verified.userId,\n expiresAt: new Date((input.now ?? new Date()).getTime() + EXCHANGE_TTL_MS),\n });\n\n const response = await input.auth.api.resetPassword({\n body: { newPassword: input.password, token: exchangeToken },\n asResponse: true,\n });\n if (!response.ok) return { ok: false, reason: 'password-rejected' };\n\n // Перехід за одноразовим посиланням і є доказом володіння поштою — саме\n // тому `issueOwnerInvite` заводив користувача з `emailVerified: false`.\n await context.internalAdapter.updateUser(verified.userId, {\n emailVerified: true,\n });\n\n return { ok: true, userId: verified.userId };\n}\n","import { eq, sql } from 'drizzle-orm';\nimport { withActor } from 'simplycms/db';\nimport { userRoles, users, verifications } from 'simplycms/schema';\nimport type { OwnerInviteStore } from './invite';\n\n/**\n * Сховище invite власника на Postgres (Task 7, В2-К1а).\n *\n * Роль — `app_admin`: гранти на таблиці Better Auth і на `user_roles` видані\n * саме їй (0002_grants.sql, §5-§6). Той самий вузький auth-шлях, що й у\n * `./provision`.\n */\nexport const ownerInviteStore: OwnerInviteStore = {\n async findUserIdByEmail(email) {\n return withActor({ role: 'app_admin' }, async (db) => {\n const rows = await db\n .select({ id: users.id })\n .from(users)\n // Пошта в БД зберігається як введена, а порівнюємо ми регістро-\n // незалежно — інакше `Owner@site` і `owner@site` дали б двох власників.\n .where(eq(sql`lower(${users.email})`, email.trim().toLowerCase()))\n .limit(1);\n return rows[0]?.id ?? null;\n });\n },\n\n async createUser({ email, name }) {\n return withActor({ role: 'app_admin' }, async (db) => {\n const rows = await db\n .insert(users)\n // `emailVerified: false` — власник підтвердить пошту самим фактом\n // переходу за одноразовим посиланням із листа.\n .values({ email, name, emailVerified: false })\n .returning({ id: users.id });\n return rows[0].id;\n });\n },\n\n async storeToken({ identifier, valueHash, expiresAt }) {\n await withActor({ role: 'app_admin' }, async (db) => {\n // Старий токен тієї ж пошти знищується: «надішли ще раз» мусить робити\n // попереднє посилання недійсним, інакше в обігу живуть два ключі.\n await db\n .delete(verifications)\n .where(eq(verifications.identifier, identifier));\n await db\n .insert(verifications)\n .values({ identifier, value: valueHash, expiresAt });\n });\n },\n\n async consumeToken(identifier) {\n return withActor({ role: 'app_admin' }, async (db) => {\n // DELETE … RETURNING — атомарне «прочитати й погасити» в одному\n // стейтменті: два паралельні переходи за посиланням не можуть обидва\n // побачити токен дійсним.\n const rows = await db\n .delete(verifications)\n .where(eq(verifications.identifier, identifier))\n .returning({\n valueHash: verifications.value,\n expiresAt: verifications.expiresAt,\n });\n return rows[0] ?? null;\n });\n },\n\n async grantAdminRole(userId) {\n await withActor({ role: 'app_admin' }, async (db) => {\n await db\n .insert(userRoles)\n .values({ userId, role: 'admin' })\n .onConflictDoNothing({\n target: [userRoles.userId, userRoles.role],\n });\n });\n },\n};\n\n/** Чи є в магазині хоч один адмін — потрібно CLI, щоб не слати invite двічі. */\nexport const hasAnyAdmin = async (): Promise<boolean> =>\n withActor({ role: 'app_admin' }, async (db) => {\n const rows = await db\n .select({ id: userRoles.id })\n .from(userRoles)\n .where(eq(userRoles.role, 'admin'))\n .limit(1);\n return rows.length > 0;\n });\n","import { eq } from 'drizzle-orm';\nimport { withActor } from 'simplycms/db';\nimport { userRoles } from 'simplycms/schema';\nimport type { AppRole, AuthzSubject } from './authz';\nimport { getAuth } from './instance';\n\n/**\n * Ідентичність запиту для серверного контуру (К1′б).\n *\n * 🔴 Тут зшиваються дві половини, які до цього жили окремо: сесію дає Better\n * Auth, а доменні ролі — таблиця `user_roles`. Ролі НЕ кладуться в сесійний\n * токен свідомо: відкликана роль мусить діяти з наступного ж запиту, а не\n * після протермінування cookie.\n */\n\n/** Субʼєкт authz із даними, які потрібні UI (пошта, імʼя). */\nexport interface SessionSubject extends AuthzSubject {\n readonly userId: string;\n readonly email: string;\n readonly name: string | null;\n}\n\n/**\n * Ролі користувача з `user_roles`.\n *\n * 🔴 Актор — `app_user` із його ж `userId`, а не `app_admin`. Політика\n * `user_roles_select_own` віддає під нею рівно рядки цього користувача, тож\n * питання «які в мене ролі» не потребує підвищених прав: перевіряти невідоме\n * правами адміна означало б відповідати на нього ще до того, як він заданий.\n */\nexport async function readUserRoles(userId: string): Promise<AppRole[]> {\n return withActor({ role: 'app_user', userId }, async (db) => {\n const rows = await db\n .select({ role: userRoles.role })\n .from(userRoles)\n .where(eq(userRoles.userId, userId));\n\n return rows.map((row) => row.role);\n });\n}\n\n/**\n * Сесія Better Auth із заголовків запиту → субʼєкт authz.\n *\n * Без cookie або з протермінованою сесією повертає `null` — викликач сам\n * вирішує, що це означає (редірект, 401 чи анонімний перегляд).\n */\nexport async function readSessionSubject(\n headers: Headers,\n): Promise<SessionSubject | null> {\n const session = await getAuth().api.getSession({ headers });\n if (!session) return null;\n\n const { user } = session;\n return {\n userId: user.id,\n email: user.email,\n name: user.name || null,\n roles: await readUserRoles(user.id),\n };\n}\n\n/** Чи має власник цієї сесії роль `admin`. Без сесії — `false`. */\nexport async function isAdminRequest(headers: Headers): Promise<boolean> {\n const subject = await readSessionSubject(headers);\n return subject?.roles.includes('admin') ?? false;\n}\n","import type { ActorRole } from 'simplycms/db';\n\n/**\n * Перший рубіж моделі безпеки B5″ — типізований authz у TS (Task 7, В2-К1а).\n *\n * 🔴 Рубежів два, і плутати їх не можна. ТУТ вирішується, чи операція взагалі\n * дозволена цьому субʼєкту; РОЛЬ БД (`app_user`/`app_admin`, вмикається\n * `SET LOCAL ROLE` у `withActor`) — другий рубіж, страхувальна сітка проти\n * забутого `WHERE` у репозиторії. Другий рубіж не замінює першого: застосунок\n * сам виставляє собі claims, тож проти скомпрометованого процесу RLS не\n * захищає — це виміряно спайком B5.\n */\n\n/** Доменна роль із `user_roles.role` (енам `app_role`). */\nexport type AppRole = 'admin' | 'user';\n\n/**\n * Вимір ДІЇ над рядками — дизайн-насіння зі спеки §8.\n *\n * 🔴 Тут навмисно ЛИШЕ місце, а не реалізація: `own` не фільтрує нічого сам —\n * він каже викликачу, що запит зобовʼязаний звузитись до власних рядків\n * (а RLS це продублює). Ролі персоналу (менеджер замовлень, контент-редактор)\n * зʼявляться пізніше й розрізнятимуться саме цим виміром, а не набором\n * операцій, — тому вимір заведено ЗАРАЗ, поки матриця мала.\n */\nexport type AuthScope = 'own' | 'any';\n\n/** Операції, які знає ядро. Список росте разом із serverFn-шаром К2/К3. */\nexport type Operation =\n | 'catalog.read'\n | 'catalog.write'\n | 'order.read'\n | 'order.create'\n | 'profile.read'\n | 'profile.update'\n | 'review.create'\n | 'review.moderate'\n | 'user.role.assign'\n | 'admin.access';\n\n/** Хто робить операцію. `userId: null` — анонім (гість вітрини). */\nexport interface AuthzSubject {\n readonly userId: string | null;\n readonly roles: readonly AppRole[];\n}\n\ntype Grants = Readonly<Partial<Record<AppRole, AuthScope>>>;\n\n/**\n * Матриця «роль × операція → scope». Відсутній ключ ролі = заборонено.\n *\n * 🔴 Анонім у матриці НЕ фігурує окремим рядком: він не має жодної ролі, тож\n * усе, крім явно публічного, йому закрите за побудовою. Публічне читання\n * каталогу дає не ця матриця, а ГРАНТ на `app_user` (0002_grants.sql) —\n * тримати «дозволено всім» у двох місцях означало б колись розійтись.\n */\nexport const AUTHZ_MATRIX: Readonly<Record<Operation, Grants>> = {\n 'catalog.read': { user: 'any', admin: 'any' },\n 'catalog.write': { admin: 'any' },\n 'order.read': { user: 'own', admin: 'any' },\n 'order.create': { user: 'own', admin: 'any' },\n 'profile.read': { user: 'own', admin: 'any' },\n 'profile.update': { user: 'own', admin: 'any' },\n 'review.create': { user: 'own', admin: 'any' },\n 'review.moderate': { admin: 'any' },\n 'user.role.assign': { admin: 'any' },\n 'admin.access': { admin: 'any' },\n};\n\n/** Відмова authz. Окремий клас — щоб хендлер мапив її в 403, а не в 500. */\nexport class AuthzError extends Error {\n constructor(readonly operation: Operation | AppRole) {\n super(`[simplycms/auth] Операція заборонена: ${operation}.`);\n this.name = 'AuthzError';\n }\n}\n\n/** `any` перекриває `own`; порядок потрібен для субʼєкта з кількома ролями. */\nconst WIDER: Record<AuthScope, number> = { own: 0, any: 1 };\n\n/**\n * Найширший scope, який дають субʼєкту його ролі, або `null` — заборонено.\n */\nexport function resolveGrant(\n subject: AuthzSubject,\n operation: Operation,\n): AuthScope | null {\n const grants = AUTHZ_MATRIX[operation];\n let best: AuthScope | null = null;\n for (const role of subject.roles) {\n const scope = grants[role];\n if (scope && (best === null || WIDER[scope] > WIDER[best])) best = scope;\n }\n return best;\n}\n\n/** Чи дозволена операція (без деталей scope). */\nexport const can = (subject: AuthzSubject, operation: Operation): boolean =>\n resolveGrant(subject, operation) !== null;\n\n/**\n * Вимагає роль. Використовується там, де перевірка — саме про роль\n * (наприклад, вхід в адмінку), а не про конкретну операцію.\n *\n * @throws AuthzError\n */\nexport function requireRole(\n subject: AuthzSubject,\n role: AppRole,\n): asserts subject is AuthzSubject {\n if (!subject.roles.includes(role)) throw new AuthzError(role);\n}\n\n/**\n * Вимагає операцію й повертає scope, з яким її дозволено виконати.\n *\n * 🔴 Повертає саме scope, а не `void`: викликач мусить ПОБАЧИТИ, що йому\n * дозволено лише `own`, і звузити запит. Функція, що повертала б `void`,\n * зробила б різницю між `own` і `any` невидимою на місці виклику.\n *\n * @throws AuthzError\n */\nexport function requireOperation(\n subject: AuthzSubject,\n operation: Operation,\n): AuthScope {\n const scope = resolveGrant(subject, operation);\n if (!scope) throw new AuthzError(operation);\n return scope;\n}\n\n/**\n * Доменна роль → роль БД для `withActor` (другий рубіж).\n *\n * 🔴 Мапа однобічна й навмисно тупа: `app_admin` вмикається ЛИШЕ після того,\n * як перший рубіж уже сказав «так». Викликати `withActor` з `app_admin`,\n * оминувши `requireOperation`, — це і є той обхід, проти якого весь дизайн.\n */\nexport const dbRoleFor = (role: AppRole): ActorRole =>\n role === 'admin' ? 'app_admin' : 'app_user';\n\n/** Роль БД для субʼєкта: адмін — якщо він адмін, інакше звичайний покупець. */\nexport const dbRoleForSubject = (subject: AuthzSubject): ActorRole =>\n subject.roles.includes('admin') ? 'app_admin' : 'app_user';\n"]}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { betterAuth } from 'better-auth';
|
|
2
|
+
import { type ProvisionUser } from './hooks';
|
|
3
|
+
import { type SendAuthEmail } from './send-email';
|
|
4
|
+
/** Що можна підмінити ззовні — рівно стільки, скільки треба тестам. */
|
|
5
|
+
export interface AuthDeps {
|
|
6
|
+
/**
|
|
7
|
+
* DB-адаптер Better Auth. За замовчуванням — drizzle над pg-proxy через
|
|
8
|
+
* `withActor`. Юніт-тести підставляють `better-auth/adapters/memory` — саме
|
|
9
|
+
* цим DoD спеки «BA тестується без Docker» виконується фактом.
|
|
10
|
+
*/
|
|
11
|
+
readonly database?: Parameters<typeof betterAuth>[0]['database'];
|
|
12
|
+
/** Провізія `profiles`+`user_roles`. За замовчуванням — запис у Postgres. */
|
|
13
|
+
readonly provisionUser?: ProvisionUser;
|
|
14
|
+
readonly secret?: string;
|
|
15
|
+
readonly baseURL?: string;
|
|
16
|
+
/**
|
|
17
|
+
* Канал доставки листів. За замовчуванням — заглушка з логом
|
|
18
|
+
* (`./send-email`): SMTP лишається справою магазину, ядро лише КЛИЧЕ канал.
|
|
19
|
+
*/
|
|
20
|
+
readonly sendEmail?: SendAuthEmail;
|
|
21
|
+
/** Назва магазину в темі листа. */
|
|
22
|
+
readonly storeName?: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Створює інстанс. Env читається ТУТ, у рантаймі — не на модуль-рівні.
|
|
26
|
+
*/
|
|
27
|
+
export declare function createAuth(deps?: AuthDeps): import("better-auth").Auth<{
|
|
28
|
+
secret: string;
|
|
29
|
+
baseURL: string | undefined;
|
|
30
|
+
database: any;
|
|
31
|
+
emailAndPassword: {
|
|
32
|
+
enabled: true;
|
|
33
|
+
sendResetPassword: ({ user, url }: {
|
|
34
|
+
user: import("better-auth").User;
|
|
35
|
+
url: string;
|
|
36
|
+
token: string;
|
|
37
|
+
}) => Promise<void>;
|
|
38
|
+
};
|
|
39
|
+
advanced: {
|
|
40
|
+
database: {
|
|
41
|
+
generateId: "uuid";
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
databaseHooks: {
|
|
45
|
+
user: {
|
|
46
|
+
create: {
|
|
47
|
+
after: (user: import("./hooks").NewAuthUser) => Promise<void>;
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
}>;
|
|
52
|
+
/** Тип готового інстансу — для сигнатур споживачів К1′б. */
|
|
53
|
+
export type SimplyAuth = ReturnType<typeof createAuth>;
|
|
54
|
+
/**
|
|
55
|
+
* Інстанс процесу (лінива синглтон-фабрика) — той самий контракт «рестарт
|
|
56
|
+
* замість гарячої ротації», що й у пулу `simplycms/db`.
|
|
57
|
+
*/
|
|
58
|
+
export declare function getAuth(): SimplyAuth;
|
|
59
|
+
/** Скидає синглтон (teardown тестів, перемикання env). */
|
|
60
|
+
export declare function resetAuth(): void;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Рендер листа-запрошення власника (Task 7, В2-К1а).
|
|
3
|
+
*
|
|
4
|
+
* 🔴 Виділено чистою функцією саме тому, що ДОСТАВКА недосяжна: SMTP у цьому
|
|
5
|
+
* оточенні немає, лист шле колбек магазину. Рендер же — єдина частина, яку
|
|
6
|
+
* можна довести машинно, і вона доводиться юнітом: посилання ціле, токен не
|
|
7
|
+
* загубився, HTML-версія не ламається на лапках в імені магазину.
|
|
8
|
+
*/
|
|
9
|
+
/** Готовий лист — те, що колбек магазину віддає своєму транспорту. */
|
|
10
|
+
export interface InviteEmail {
|
|
11
|
+
readonly to: string;
|
|
12
|
+
readonly subject: string;
|
|
13
|
+
readonly text: string;
|
|
14
|
+
readonly html: string;
|
|
15
|
+
}
|
|
16
|
+
/** Колбек доставки. Реалізує магазин; ядро транспорту не знає. */
|
|
17
|
+
export type SendInviteEmail = (message: InviteEmail) => Promise<void>;
|
|
18
|
+
export interface InviteEmailInput {
|
|
19
|
+
readonly to: string;
|
|
20
|
+
readonly url: string;
|
|
21
|
+
readonly storeName: string;
|
|
22
|
+
readonly ttlMs: number;
|
|
23
|
+
}
|
|
24
|
+
/** Збирає лист. Мова — українська: це лист власнику магазину, не UI-рядок. */
|
|
25
|
+
export declare function renderInviteEmail(input: InviteEmailInput): InviteEmail;
|
|
26
|
+
export interface ResetPasswordEmailInput {
|
|
27
|
+
readonly to: string;
|
|
28
|
+
readonly url: string;
|
|
29
|
+
readonly storeName: string;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Лист скидання пароля (К1′б).
|
|
33
|
+
*
|
|
34
|
+
* Живе поруч із запрошенням навмисно: обидва — листи auth-контуру з ОДНИМ
|
|
35
|
+
* одноразовим посиланням, і спільне екранування тут дешевше за другий модуль
|
|
36
|
+
* із власною копією тих самих чотирьох `replace`.
|
|
37
|
+
*/
|
|
38
|
+
export declare function renderResetPasswordEmail(input: ResetPasswordEmailInput): InviteEmail;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { OwnerInviteStore } from './invite';
|
|
2
|
+
/**
|
|
3
|
+
* Сховище invite власника на Postgres (Task 7, В2-К1а).
|
|
4
|
+
*
|
|
5
|
+
* Роль — `app_admin`: гранти на таблиці Better Auth і на `user_roles` видані
|
|
6
|
+
* саме їй (0002_grants.sql, §5-§6). Той самий вузький auth-шлях, що й у
|
|
7
|
+
* `./provision`.
|
|
8
|
+
*/
|
|
9
|
+
export declare const ownerInviteStore: OwnerInviteStore;
|
|
10
|
+
/** Чи є в магазині хоч один адмін — потрібно CLI, щоб не слати invite двічі. */
|
|
11
|
+
export declare const hasAnyAdmin: () => Promise<boolean>;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { type SendInviteEmail } from './invite-email';
|
|
2
|
+
/**
|
|
3
|
+
* Invite власника — заміна механіки `inviteUserByEmail` (Task 7, В2-К1а).
|
|
4
|
+
*
|
|
5
|
+
* 🔴 Що змінилось по суті. У GoTrue лист будував сам Supabase за шаблоном
|
|
6
|
+
* `supabase/templates/invite.html`, і перевірити рендер було нічим. Тепер
|
|
7
|
+
* токен випускаємо МИ, лист рендеримо МИ (`./invite-email`), а шле його
|
|
8
|
+
* колбек магазину — тож усе, крім SMTP-доставки, стає юніт-тестовним.
|
|
9
|
+
* SMTP лишається боргом оточення (доводиться в власника).
|
|
10
|
+
*
|
|
11
|
+
* 🔴 У БД лягає лише SHA-256 токена. Дамп таблиці `verifications` не має
|
|
12
|
+
* давати дійсного посилання: цим invite відрізняється від «просто рядка з
|
|
13
|
+
* секретом».
|
|
14
|
+
*/
|
|
15
|
+
/** Порт сховища. Реалізація на Postgres — `./invite-store`. */
|
|
16
|
+
export interface OwnerInviteStore {
|
|
17
|
+
findUserIdByEmail(email: string): Promise<string | null>;
|
|
18
|
+
createUser(input: {
|
|
19
|
+
email: string;
|
|
20
|
+
name: string;
|
|
21
|
+
}): Promise<string>;
|
|
22
|
+
storeToken(input: {
|
|
23
|
+
identifier: string;
|
|
24
|
+
valueHash: string;
|
|
25
|
+
expiresAt: Date;
|
|
26
|
+
}): Promise<void>;
|
|
27
|
+
consumeToken(identifier: string): Promise<{
|
|
28
|
+
valueHash: string;
|
|
29
|
+
expiresAt: Date;
|
|
30
|
+
} | null>;
|
|
31
|
+
grantAdminRole(userId: string): Promise<void>;
|
|
32
|
+
}
|
|
33
|
+
/** Ключ запису у `verifications`. Пошта — у нижньому регістрі: вона й є ключ. */
|
|
34
|
+
export declare const inviteIdentifier: (email: string) => string;
|
|
35
|
+
export interface IssueOwnerInviteInput {
|
|
36
|
+
readonly store: OwnerInviteStore;
|
|
37
|
+
readonly sendEmail: SendInviteEmail;
|
|
38
|
+
readonly email: string;
|
|
39
|
+
readonly siteUrl: string;
|
|
40
|
+
readonly storeName?: string;
|
|
41
|
+
readonly ttlMs?: number;
|
|
42
|
+
readonly now?: Date;
|
|
43
|
+
/** Тільки для тестів: детермінований токен замість випадкового. */
|
|
44
|
+
readonly token?: string;
|
|
45
|
+
}
|
|
46
|
+
export interface OwnerInviteResult {
|
|
47
|
+
readonly userId: string;
|
|
48
|
+
/** `false` — користувач уже існував: повторний invite його не дублює. */
|
|
49
|
+
readonly created: boolean;
|
|
50
|
+
readonly url: string;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Випускає запрошення. Ідемпотентно щодо КОРИСТУВАЧА: повторний виклик на ту
|
|
54
|
+
* саму пошту не створює другого рядка `users` і не дублює роль — він лише
|
|
55
|
+
* перевипускає токен. Саме так поводився старий `owner:invite` (гілка
|
|
56
|
+
* `email_exists`), і саме цю поведінку власник очікує від «надішли ще раз».
|
|
57
|
+
*/
|
|
58
|
+
export declare function issueOwnerInvite(input: IssueOwnerInviteInput): Promise<OwnerInviteResult>;
|
|
59
|
+
/** Чому запрошення не прийнято — рівно ті випадки, які має розрізняти UI. */
|
|
60
|
+
export type InviteRejection = 'not-found' | 'expired' | 'mismatch';
|
|
61
|
+
export type VerifyOwnerInviteResult = {
|
|
62
|
+
readonly ok: true;
|
|
63
|
+
readonly userId: string;
|
|
64
|
+
} | {
|
|
65
|
+
readonly ok: false;
|
|
66
|
+
readonly reason: InviteRejection;
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Перевіряє токен і СПОЖИВАЄ його (одноразовість).
|
|
70
|
+
*
|
|
71
|
+
* 🔴 Порівняння хешів — `timingSafeEqual`, а не `===`: обидва рядки однакової
|
|
72
|
+
* довжини й повністю контрольовані зловмисником, тобто це класичний випадок,
|
|
73
|
+
* де побайтове раннє повернення тече в тайминг.
|
|
74
|
+
*
|
|
75
|
+
* Прив'язку пароля робить К1′б: тут доводиться лише «токен дійсний і це той
|
|
76
|
+
* самий користувач».
|
|
77
|
+
*/
|
|
78
|
+
export declare function verifyOwnerInvite(input: {
|
|
79
|
+
store: OwnerInviteStore;
|
|
80
|
+
email: string;
|
|
81
|
+
token: string;
|
|
82
|
+
now?: Date;
|
|
83
|
+
}): Promise<VerifyOwnerInviteResult>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ProvisionUser } from './hooks';
|
|
2
|
+
/**
|
|
3
|
+
* Реалізація порту провізії на Postgres (Task 7, В2-К1а).
|
|
4
|
+
*
|
|
5
|
+
* Роль — `app_admin`: політики `profiles_admin_all` і `user_roles_admin_all`
|
|
6
|
+
* дозволяють запис саме їй, а покупець свій профіль лише читає й редагує
|
|
7
|
+
* (0002_grants.sql, §4). Це той самий вузький auth-шлях, що й у
|
|
8
|
+
* `./drizzle-proxy`.
|
|
9
|
+
*/
|
|
10
|
+
export declare const provisionUserInDb: ProvisionUser;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { InviteEmail } from './invite-email';
|
|
2
|
+
/**
|
|
3
|
+
* Канал доставки листів auth-контуру (К1′б).
|
|
4
|
+
*
|
|
5
|
+
* 🔴 SMTP тут НЕ реалізується — рішення власника: доставку він налаштовує й
|
|
6
|
+
* перевіряє локально. Ядро зобовʼязане лише КЛИКАТИ канал у всіх точках, де
|
|
7
|
+
* лист має піти, щоб магазину лишалося підставити одну функцію, а не шукати
|
|
8
|
+
* місця виклику.
|
|
9
|
+
*/
|
|
10
|
+
export type SendAuthEmail = (message: InviteEmail) => Promise<void>;
|
|
11
|
+
/**
|
|
12
|
+
* Заглушка за замовчуванням: пише лист у лог замість відправки.
|
|
13
|
+
*
|
|
14
|
+
* 🔴 TODO(К6): підмінити реальним транспортом магазину. Мовчки ковтати лист
|
|
15
|
+
* не можна — посилання для скидання пароля й запрошення власника тоді
|
|
16
|
+
* зникали б безслідно, і діагноз виглядав би як «пошта не приходить».
|
|
17
|
+
* Лог лишає їх видимими в консолі сервера.
|
|
18
|
+
*/
|
|
19
|
+
export declare const stubSendAuthEmail: SendAuthEmail;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { AppRole, AuthzSubject } from './authz';
|
|
2
|
+
/**
|
|
3
|
+
* Ідентичність запиту для серверного контуру (К1′б).
|
|
4
|
+
*
|
|
5
|
+
* 🔴 Тут зшиваються дві половини, які до цього жили окремо: сесію дає Better
|
|
6
|
+
* Auth, а доменні ролі — таблиця `user_roles`. Ролі НЕ кладуться в сесійний
|
|
7
|
+
* токен свідомо: відкликана роль мусить діяти з наступного ж запиту, а не
|
|
8
|
+
* після протермінування cookie.
|
|
9
|
+
*/
|
|
10
|
+
/** Субʼєкт authz із даними, які потрібні UI (пошта, імʼя). */
|
|
11
|
+
export interface SessionSubject extends AuthzSubject {
|
|
12
|
+
readonly userId: string;
|
|
13
|
+
readonly email: string;
|
|
14
|
+
readonly name: string | null;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Ролі користувача з `user_roles`.
|
|
18
|
+
*
|
|
19
|
+
* 🔴 Актор — `app_user` із його ж `userId`, а не `app_admin`. Політика
|
|
20
|
+
* `user_roles_select_own` віддає під нею рівно рядки цього користувача, тож
|
|
21
|
+
* питання «які в мене ролі» не потребує підвищених прав: перевіряти невідоме
|
|
22
|
+
* правами адміна означало б відповідати на нього ще до того, як він заданий.
|
|
23
|
+
*/
|
|
24
|
+
export declare function readUserRoles(userId: string): Promise<AppRole[]>;
|
|
25
|
+
/**
|
|
26
|
+
* Сесія Better Auth із заголовків запиту → субʼєкт authz.
|
|
27
|
+
*
|
|
28
|
+
* Без cookie або з протермінованою сесією повертає `null` — викликач сам
|
|
29
|
+
* вирішує, що це означає (редірект, 401 чи анонімний перегляд).
|
|
30
|
+
*/
|
|
31
|
+
export declare function readSessionSubject(headers: Headers): Promise<SessionSubject | null>;
|
|
32
|
+
/** Чи має власник цієї сесії роль `admin`. Без сесії — `false`. */
|
|
33
|
+
export declare function isAdminRequest(headers: Headers): Promise<boolean>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function CartButton(): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"CartButton.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function CartDrawer(): import("react").JSX.Element | null;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"CartDrawer.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"CartItem.js"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type CartItem as CartItemType } from 'simplycms/react-query';
|
|
2
|
+
export interface CartItemViewProps {
|
|
3
|
+
item: CartItemType;
|
|
4
|
+
onChangeQuantity: (quantity: number) => void;
|
|
5
|
+
onRemove: () => void;
|
|
6
|
+
}
|
|
7
|
+
export declare function CartItemView({ item, onChangeQuantity, onRemove, }: CartItemViewProps): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"CartItemView.js"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { CartButton } from '../chunk-HW3CZJDX.js';
|
|
2
|
+
export { CartDrawer } from '../chunk-2ZOJ3BRO.js';
|
|
3
|
+
export { CartItem } from '../chunk-ZS26TLLE.js';
|
|
4
|
+
export { CartItemView } from '../chunk-3XVESNZC.js';
|
|
5
|
+
import '../chunk-PZ5AY32C.js';
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
interface ActiveFilter {
|
|
2
|
+
key: string;
|
|
3
|
+
label: string;
|
|
4
|
+
value: string;
|
|
5
|
+
type: 'option' | 'range' | 'price';
|
|
6
|
+
optionId?: string;
|
|
7
|
+
}
|
|
8
|
+
interface ActiveFiltersProps {
|
|
9
|
+
filters: ActiveFilter[];
|
|
10
|
+
onRemoveFilter: (filter: ActiveFilter) => void;
|
|
11
|
+
onClearAll: () => void;
|
|
12
|
+
/** Render a Badge component. Receives props: variant, className, children */
|
|
13
|
+
renderBadge?: (props: {
|
|
14
|
+
variant: string;
|
|
15
|
+
className?: string;
|
|
16
|
+
children: React.ReactNode;
|
|
17
|
+
}) => React.ReactNode;
|
|
18
|
+
/** Render a Button component. Receives props: variant, size, onClick, className, children */
|
|
19
|
+
renderButton?: (props: {
|
|
20
|
+
variant: string;
|
|
21
|
+
size: string;
|
|
22
|
+
onClick: () => void;
|
|
23
|
+
className?: string;
|
|
24
|
+
children: React.ReactNode;
|
|
25
|
+
}) => React.ReactNode;
|
|
26
|
+
}
|
|
27
|
+
export type { ActiveFilter };
|
|
28
|
+
export declare function ActiveFilters({ filters, onRemoveFilter, onClearAll, renderBadge, renderButton, }: ActiveFiltersProps): import("react").JSX.Element | null;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"ActiveFilters.js"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
interface ProductForCounting {
|
|
2
|
+
propertyValues: Array<{
|
|
3
|
+
property_id: string;
|
|
4
|
+
option_id?: string | null;
|
|
5
|
+
}>;
|
|
6
|
+
}
|
|
7
|
+
/** Тип значення фільтра */
|
|
8
|
+
export type FilterValue = boolean | number | string[] | undefined;
|
|
9
|
+
interface FilterSidebarProps {
|
|
10
|
+
sectionId?: string;
|
|
11
|
+
filters: Record<string, FilterValue>;
|
|
12
|
+
onFilterChange: (filters: Record<string, FilterValue>) => void;
|
|
13
|
+
priceRange?: {
|
|
14
|
+
min: number;
|
|
15
|
+
max: number;
|
|
16
|
+
};
|
|
17
|
+
numericPropertyRanges?: Record<string, {
|
|
18
|
+
min: number;
|
|
19
|
+
max: number;
|
|
20
|
+
}>;
|
|
21
|
+
products?: ProductForCounting[];
|
|
22
|
+
/** Render UI components - the host app should provide these */
|
|
23
|
+
renderButton?: (props: Record<string, unknown>) => React.ReactNode;
|
|
24
|
+
renderCheckbox?: (props: Record<string, unknown>) => React.ReactNode;
|
|
25
|
+
renderLabel?: (props: Record<string, unknown>) => React.ReactNode;
|
|
26
|
+
renderSlider?: (props: Record<string, unknown>) => React.ReactNode;
|
|
27
|
+
renderInput?: (props: Record<string, unknown>) => React.ReactNode;
|
|
28
|
+
renderAccordion?: (props: Record<string, unknown>) => React.ReactNode;
|
|
29
|
+
}
|
|
30
|
+
export declare function FilterSidebar({ sectionId, filters, onFilterChange, priceRange, numericPropertyRanges, products, }: FilterSidebarProps): import("react").JSX.Element | null;
|
|
31
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"FilterSidebar.js"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
type StockStatus = 'in_stock' | 'out_of_stock' | 'on_order';
|
|
2
|
+
export interface ModificationStockInfo {
|
|
3
|
+
totalQuantity: number;
|
|
4
|
+
isAvailable: boolean;
|
|
5
|
+
}
|
|
6
|
+
interface Modification {
|
|
7
|
+
id: string;
|
|
8
|
+
name: string;
|
|
9
|
+
slug: string;
|
|
10
|
+
stock_status?: StockStatus | null;
|
|
11
|
+
sku?: string | null;
|
|
12
|
+
}
|
|
13
|
+
interface ModificationSelectorProps {
|
|
14
|
+
modifications: Modification[];
|
|
15
|
+
selectedId: string;
|
|
16
|
+
onSelect: (id: string) => void;
|
|
17
|
+
formatPrice: (price: number) => string;
|
|
18
|
+
prices?: Record<string, {
|
|
19
|
+
price: number;
|
|
20
|
+
oldPrice: number | null;
|
|
21
|
+
}>;
|
|
22
|
+
stockByModification?: Record<string, ModificationStockInfo>;
|
|
23
|
+
}
|
|
24
|
+
export declare function ModificationSelector({ modifications, selectedId, onSelect, formatPrice, prices, stockByModification, }: ModificationSelectorProps): import("react").JSX.Element | null;
|
|
25
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"ModificationSelector.js"}
|