@crayonscodetech/cms-sdk 1.0.11 → 1.0.12

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/README.md CHANGED
@@ -1491,8 +1491,10 @@ import type {
1491
1491
  > ```
1492
1492
  >
1493
1493
  > `ProductExtraData` is a flexible `Record<string, unknown>` for custom data.
1494
+ >
1495
+ > `Product` and `ProductListItem` also carry `tags?: ProductTag[]` (`{ id, name, slug }`) — the store tags assigned in the CMS, not the SEO keywords in `seo.tags`.
1494
1496
 
1495
- > `Product.description` is HTML — render with `dangerouslySetInnerHTML`. Public product variants expose `inventory` as a boolean plus `low_stock`. Collection detail responses normalize both manual and smart collections into `collection.items`.
1497
+ > `Product.description` is HTML — render with `dangerouslySetInnerHTML`. Public product variants expose `inventory` as a boolean plus `low_stock`, never include `cost_price`, and omit `price`/`sale_price` when the site's `price_visibility` is false (so `price` is optional). `attributes`, `features`, `specifications` and `included_items` are `null` when unset. Collection detail responses normalize both manual and smart collections into `collection.items`.
1496
1498
 
1497
1499
  ---
1498
1500
 
@@ -1701,7 +1703,7 @@ export default function ProductDetailClient({ product }: { product: Product }) {
1701
1703
  aria-pressed={selectedVariant?.id === v.id}
1702
1704
  >
1703
1705
  {v.name ?? v.sku} — ${v.sale_price ?? v.price}
1704
- {v.inventory === 0 && " (Out of stock)"}
1706
+ {!v.inventory && " (Out of stock)"}
1705
1707
  </button>
1706
1708
  ))}
1707
1709
  </div>
@@ -1717,7 +1719,7 @@ export default function ProductDetailClient({ product }: { product: Product }) {
1717
1719
  </div>
1718
1720
  <button
1719
1721
  onClick={handleAddToCart}
1720
- disabled={!selectedVariant || selectedVariant.inventory === 0}
1722
+ disabled={!selectedVariant || !selectedVariant.inventory}
1721
1723
  >
1722
1724
  Add to Cart
1723
1725
  </button>
@@ -1967,11 +1969,14 @@ export default async function CollectionDetailPage({
1967
1969
  )}
1968
1970
  <h2>{item.product.name}</h2>
1969
1971
  {/* Show lowest variant price */}
1970
- {item.product.variants.length > 0 && (
1972
+ {/* price is absent when the site hides prices */}
1973
+ {item.product.variants.some((v) => v.price != null) && (
1971
1974
  <p>
1972
1975
  From $
1973
1976
  {Math.min(
1974
- ...item.product.variants.map((v) => v.sale_price ?? v.price),
1977
+ ...item.product.variants.map(
1978
+ (v) => v.sale_price ?? v.price ?? Infinity,
1979
+ ),
1975
1980
  )}
1976
1981
  </p>
1977
1982
  )}
@@ -2073,7 +2078,7 @@ export function CartProvider({ children }: { children: React.ReactNode }) {
2073
2078
 
2074
2079
  const totalItems = items.reduce((sum, i) => sum + i.quantity, 0);
2075
2080
  const subtotal = items.reduce(
2076
- (sum, i) => sum + (i.variant.sale_price ?? i.variant.price) * i.quantity,
2081
+ (sum, i) => sum + (i.variant.sale_price ?? i.variant.price ?? 0) * i.quantity,
2077
2082
  0,
2078
2083
  );
2079
2084
 
@@ -2733,7 +2738,7 @@ export interface FetchOptions extends RequestInit {
2733
2738
 
2734
2739
  > All store methods use the `/api/public/store/` API prefix, not `/api/public/cms/`.
2735
2740
 
2736
- - `fetchStoreSettings(siteId, options?)`: Returns `{ currency, price_visibility, is_store_enabled }`. Fetch this first — when `price_visibility` is false the API strips `price`, `sale_price` and `cost_price` from every variant, so the storefront must render an inquiry flow rather than prices.
2741
+ - `fetchStoreSettings(siteId, options?)`: Returns `{ currency, price_visibility, is_store_enabled }`. Fetch this first — public endpoints never return `cost_price`, and when `price_visibility` is false the API also strips `price` and `sale_price` from every variant, so the storefront must render an inquiry flow rather than prices.
2737
2742
  - `fetchProductCategories(siteId, params?, options?)`: Returns paginated product categories. Params: `{ page, limit, search, ordering, parent_id }`.
2738
2743
  - `fetchProductBrands(siteId, params?, options?)`: Returns paginated product brands. Params: `{ page, limit, search, ordering }`.
2739
2744
  - `fetchProducts(siteId, params?, options?)`: Returns paginated products. Params: `{ page, limit, search, category_id, tag_id, brand_id, is_featured }`.
package/dist/index.d.cts CHANGED
@@ -779,25 +779,28 @@ interface ProductVariant {
779
779
  name: string | null;
780
780
  model_number: string | null;
781
781
  order: number;
782
- price: number;
782
+ price?: number;
783
783
  sale_price?: number | null;
784
- cost_price?: number | null;
785
- inventory: number;
784
+ inventory: boolean;
785
+ low_stock: boolean;
786
786
  weight: number | null;
787
- attributes?: Record<string, string>;
788
- features?: string[];
789
- specifications?: Record<string, Record<string, string>>;
790
- included_items?: string[];
787
+ attributes: Record<string, string> | null;
788
+ features: string[] | null;
789
+ specifications: Record<string, Record<string, string>> | null;
790
+ included_items: string[] | null;
791
791
  created_at: string;
792
792
  updated_at: string;
793
793
  deleted_at?: string | null;
794
794
  images: ProductImage[];
795
795
  }
796
- type PublicProductVariant = Omit<ProductVariant, "inventory"> & {
797
- inventory: boolean;
798
- low_stock: boolean;
799
- };
800
- type ProductVariantListItem = Pick<PublicProductVariant, "id" | "sku" | "name" | "price" | "sale_price" | "inventory" | "low_stock" | "order">;
796
+ /** @deprecated Same as `ProductVariant`, which now describes the public shape. */
797
+ type PublicProductVariant = ProductVariant;
798
+ type ProductVariantListItem = Pick<ProductVariant, "id" | "sku" | "name" | "price" | "sale_price" | "inventory" | "low_stock" | "order">;
799
+ interface ProductTag {
800
+ id: string;
801
+ name: string;
802
+ slug: string;
803
+ }
801
804
  interface ProductListItem {
802
805
  id: string;
803
806
  site_id: string;
@@ -811,6 +814,7 @@ interface ProductListItem {
811
814
  thumbnail_url: string | null;
812
815
  seo: ProductSEO | null;
813
816
  extra: ProductExtraData | null;
817
+ tags?: ProductTag[];
814
818
  created_at: string;
815
819
  variants?: ProductVariantListItem[];
816
820
  }
@@ -820,7 +824,7 @@ interface Product extends Omit<ProductListItem, "variants"> {
820
824
  metadata: unknown;
821
825
  deleted_at: string | null;
822
826
  updated_at: string;
823
- variants?: PublicProductVariant[];
827
+ variants?: ProductVariant[];
824
828
  }
825
829
  //#endregion
826
830
  //#region src/types/product-category.d.ts
@@ -1320,5 +1324,5 @@ interface UpdateSitePayload {
1320
1324
  declare const ICON_NAMES: readonly ["Home", "User", "Settings", "Mail", "Bell", "Calendar", "Star", "Heart", "Bookmark", "Search", "Filter", "Download", "Upload", "Trash", "Edit", "Plus", "Minus", "Check", "X", "ChevronRight", "ChevronLeft", "ChevronUp", "ChevronDown", "ChevronsUpDown", "ArrowRight", "ArrowLeft", "ArrowUp", "ArrowDown", "File", "Folder", "Image", "Video", "Music", "Lock", "Unlock", "Eye", "EyeOff", "Sun", "Moon", "Cloud", "Zap", "Activity", "TrendingUp", "TrendingDown", "BarChart", "PieChart", "Database", "Server", "Wifi", "Battery", "Camera", "Mic", "Phone", "MessageSquare", "Send", "Share", "Link", "ExternalLink", "Globe", "MapPin", "Users", "ShoppingCart", "CreditCard", "Package", "Briefcase", "Target", "Flag", "Clipboard", "List", "Grid", "Layout", "Layers", "Copy", "Save", "RefreshCw", "Maximize", "Code", "AlertCircle", "Info", "HelpCircle", "CheckCircle", "XCircle", "Menu", "MoreVertical", "MoreHorizontal", "PlayCircle", "PauseCircle", "LogIn", "LogOut", "UserPlus", "UserMinus", "Tag", "Award", "Gift", "Truck", "Clock", "Handshake", "Stethoscope", "Microscope", "GraduationCap", "BookOpen", "Building2", "Trees", "HeartHandshake", "Brain", "Lightbulb"];
1321
1325
  type IconName = (typeof ICON_NAMES)[number];
1322
1326
  //#endregion
1323
- export { ANIMATION, APIResponse, AboutSection, AboutStat, AboutUsData, AboutValue, Album, AlbumGroupSection, AlbumItem, Blog, BlogSection, Brand, BrandGroup, Branding, CACHE, CONTACT_ATTACHMENT_MIME_ALLOWLIST, CONTACT_SUBJECTS, CTA, CTAContent, CartItem, Category, ClientsSection, CmsClientConfig, CmsError, Collection, CollectionDetail, CollectionGroupSection, CollectionItem, CollectionListItem, CompanyInfo, Contact, ContactConfig, ContactPayload, CreateSitePayload, Cta, CustomContent, Event, Faq, FaqGroup, FaqSection, FetchOptions, Footer, FooterNavChild, FooterNavGroup, FooterNavGroupLink, GallerySection, GenericSection, HTTP_STATUS, Header, HeroContent, HistoryItem, HistorySection, ICON_NAMES, IconName, Image, LocationConfig, MAX_CONTACT_ATTACHMENTS, MAX_CONTACT_ATTACHMENTS_TOTAL_BYTES, MEDIA, MarqueeItem, MarqueeSection, MultiValueItem, MultiValueSection, NavChild, NavGrandChild, NavLink, Order, OrderItem, OrderStatus, PAGINATION, Page, PageListItem, PageType, PaginatedResponse, PaginationInfo, PaginationMeta, PlaceOrderPayload, Product, ProductBrand, ProductCategory, ProductExtraData, ProductImage, ProductListItem, ProductSEO, ProductSectionFilter, ProductStatus, ProductVariant, ProductVariantListItem, ProductsSection, PublicContactConfig, PublicProductVariant, Redirect, Redirect404Log, RedirectStatusCode, ResolvedRedirect, RichContentSection, SEARCH, SEO, Section, Service, ServicesSection, ShippingAddress, SingleDataAPIResponse, Site, SiteConfig, SitemapAlbumItem, SitemapBlogItem, SitemapBrandGroupItem, SitemapCollectionItem, SitemapEventItem, SitemapItem, SitemapPageItem, SitemapProductBrandItem, SitemapProductCategoryItem, SitemapProductItem, SitemapResource, SitemapResourceMap, SitemapServiceItem, SitemapTeamCategoryItem, SitemapTeamMemberItem, Social, SocialLink, StoreSettings, TeamMember, TeamSection, Testimonial, TestimonialsSection, UpdateSitePayload, UserSiteRole, WorkingHours, allPageTypes, createCmsClient, pageTypes };
1327
+ export { ANIMATION, APIResponse, AboutSection, AboutStat, AboutUsData, AboutValue, Album, AlbumGroupSection, AlbumItem, Blog, BlogSection, Brand, BrandGroup, Branding, CACHE, CONTACT_ATTACHMENT_MIME_ALLOWLIST, CONTACT_SUBJECTS, CTA, CTAContent, CartItem, Category, ClientsSection, CmsClientConfig, CmsError, Collection, CollectionDetail, CollectionGroupSection, CollectionItem, CollectionListItem, CompanyInfo, Contact, ContactConfig, ContactPayload, CreateSitePayload, Cta, CustomContent, Event, Faq, FaqGroup, FaqSection, FetchOptions, Footer, FooterNavChild, FooterNavGroup, FooterNavGroupLink, GallerySection, GenericSection, HTTP_STATUS, Header, HeroContent, HistoryItem, HistorySection, ICON_NAMES, IconName, Image, LocationConfig, MAX_CONTACT_ATTACHMENTS, MAX_CONTACT_ATTACHMENTS_TOTAL_BYTES, MEDIA, MarqueeItem, MarqueeSection, MultiValueItem, MultiValueSection, NavChild, NavGrandChild, NavLink, Order, OrderItem, OrderStatus, PAGINATION, Page, PageListItem, PageType, PaginatedResponse, PaginationInfo, PaginationMeta, PlaceOrderPayload, Product, ProductBrand, ProductCategory, ProductExtraData, ProductImage, ProductListItem, ProductSEO, ProductSectionFilter, ProductStatus, ProductTag, ProductVariant, ProductVariantListItem, ProductsSection, PublicContactConfig, PublicProductVariant, Redirect, Redirect404Log, RedirectStatusCode, ResolvedRedirect, RichContentSection, SEARCH, SEO, Section, Service, ServicesSection, ShippingAddress, SingleDataAPIResponse, Site, SiteConfig, SitemapAlbumItem, SitemapBlogItem, SitemapBrandGroupItem, SitemapCollectionItem, SitemapEventItem, SitemapItem, SitemapPageItem, SitemapProductBrandItem, SitemapProductCategoryItem, SitemapProductItem, SitemapResource, SitemapResourceMap, SitemapServiceItem, SitemapTeamCategoryItem, SitemapTeamMemberItem, Social, SocialLink, StoreSettings, TeamMember, TeamSection, Testimonial, TestimonialsSection, UpdateSitePayload, UserSiteRole, WorkingHours, allPageTypes, createCmsClient, pageTypes };
1324
1328
  //# sourceMappingURL=index.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../src/types/pagination.ts","../src/types/header.ts","../src/types/footer.ts","../src/types/site-config.ts","../src/constants/pageTypes.ts","../src/types/cms-page.ts","../src/types/about.ts","../src/types/seo.ts","../src/types/service.ts","../src/types/blog.ts","../src/types/category.ts","../src/types/team-member.ts","../src/types/album.ts","../src/types/brand.ts","../src/types/testimonials.ts","../src/types/event.ts","../src/types/faq.ts","../src/types/faq-group.ts","../src/types/redirect.ts","../src/types/contact.ts","../src/types/product.ts","../src/types/product-category.ts","../src/types/product-brand.ts","../src/types/collection.ts","../src/types/order.ts","../src/types/store-setting.ts","../src/types/sitemap.ts","../src/core/client.ts","../src/constants/index.ts","../src/types/api-response.ts","../src/types/company-info.ts","../src/types/site.ts","../src/types/icon.ts"],"mappings":";UAAiB;EACf;EACA;EACA;;KAIU,iBAAiB;UAEZ,kBAAkB;EACjC,MAAM;EACN,YAAY;;;;UCXG;EACf;EACA;;UAGe;EACf;EACA;EACA,WAAW;;UAGI;EACf;EACA;EACA,WAAW;;UAGI;EACf;EACA;;UAGe;EACf;EACA;EACA,WAAW;EACX,MAAM;EACN,OAAO;;;;UC3BQ;EACf;EACA;;UAGe;EACf;EACA;EACA,UAAU;;UAGK;EACf;EACA,OAAO;;UAGQ;EACf;EACA;EACA,YAAY;EACZ,OAAO;;;;UCpBQ;EACf;EACA;EACA;EACA;;UAGe;EACf;EACA;;UAGe;EACf;EACA;EACA;;UAGe;EACf;EACA;EACA;;UAWe;EACf;EACA;EACA,SAAS;EACT,WAAW;EACX,gBAAgB;;UAGD;EACf;EACA;EACA;EACA;EACA,MAAM;EACN,SAAS;;;;;;;;;;;;cCtCE;;cAeA;KAED,mBAAmB;;;UCvBd;EACf;EACA;EACA;;UAGe;EACf;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA,KAAK;EACL;EACA;IACE;IACA;;;UAIa;EACf;EACA;EACA;EACA;EACA;EACA;EACA,MAAM;EACN;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,QAAQ;IACN;IACA;IACA;IACA;IACA;;;UAIa;EACf;EACA;EACA;EACA;EACA,KAAK;EACL,OAAO;EACP;;UAGe;EACf;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;;UAGe;EACf;EACA;EACA;;UAGe,oBAAoB;EACnC;EACA;;UAGe,uBAAuB;EACtC;;UAGe,mBAAmB;EAClC;;UAGe,oBAAoB;EACnC;;UAGe,uBAAuB;EACtC;;UAGe;EACf;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA,KAAK;;UAGU;EACf;EACA;EACA,OAAO;EACP,MAAM,QAAQ;EACd;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA,QAAQ;EACR,QAAQ;;UAGO;EACf;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA,OAAO;;UAGQ;EACf;EACA;EACA;EACA;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA,OAAO;;KAGG;UAEK;EACf;EACA;EACA;EACA,SAAS;EACT;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;;KAGU;EACN;EAAY;EAAyB;EAAc,SAAS;;EAC5D;EAAY;EAAyB;EAAgB,SAAS;;EAC9D;EAAY;EAAyB;EAAa,SAAS;;EAC3D;EAAY;EAAyB;EAAqB,SAAS;;EACnE;EAAY;EAAyB;EAAiB,SAAS;;EAC/D;EAAY;EAAyB;EAAqB,SAAS;;EACnE;EAAY;EAAyB;EAAc,SAAS;;EAC5D;EAAY;EAAyB;EAAiB,SAAS;;EAC/D;EAAY;EAAyB;EAAiB,SAAS;;EAC/D;EAAY;EAAyB;EAAe,SAAS;;EAC7D;EAAY;EAAyB;EAAc,SAAS;;EAC5D;EAAY;EAAyB;EAAsB,SAAS;;EACpE;EAAY;EAAyB;EAAe,SAAS;;EAC7D;EAAY;EAAyB;EAAa,SAAS;;EAC3D;EAAY;EAAyB;EAAiB,SAAS;;EAC/D;EAAY;EAAyB;EAAiB,SAAS;;EAC/D;EAAY;EAAyB;EAAkB,SAAS;;EAEhE;EACA;EACA;EACA,SAAS;;EAGT;EACA;EACA;EACA,SAAS;;UAGE;EACf;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;EACA,UAAU;EACV,WAAW;EACX;EACA,KAAK;EACL,UAAU;EACV,QAAQ;EACR;EACA;;KAIU,eAAe,KAAK;;;UCrPf;EACf;IAAU;IAAc;;EACxB;EACA;EACA;;UAGe;EACf;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,QAAQ;EACR,QAAQ;EACR,QAAQ;;;;UCzBO;EACf;EACA;EACA;EACA;;UAGe,yBAAyB;;;UCJzB;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,KAAK;EACL;IACE,UAAU;;;;;UCrBG;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;IACE,UAAU;IACV;MACE;MACA;MACA;;;;;;UCzBW;EACf;EACA;EACA;EACA;EACA;EACA;EACA,MAAM;EACN,SAAS;IAA4B,WAAW;;EAChD;EACA;;;;UCbe;EACf;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,UAAU;EACV;EACA;EACA,QAAQ;EACR;EACA;;;;UCnBe;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,QAAQ;EACR,SAAS;IAA4B,WAAW;;;UAGjC;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;;UC3Be;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,MAAM;EACN,SAAS;IAA4B,WAAW;;EAChD,SAAS;;UAGM;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;;UC5Be;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,OAAO;;;;UCdQ;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;IACE,UAAU;;;;;UCjCG;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;;UCJe;EACf;EACA;EACA;EACA;EACA;EACA,MAAM;EACN,MAAM;EACN;IACE,UAAU;;EAEZ;EACA;;;;KChBU;UAEK;EACf;EACA;EACA;EACA;EACA,aAAa;EACb;EACA;EACA;EACA;;UAGe;EACf,UAAU;EACV;EACA,QAAQ;EACR;;UAGe;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;;UC7Be;EACf;EACA;EACA;EACA;EACA;;;;;;;;;EASA;;UAGe,gBAAgB;EAC/B;EACA;EACA;EACA;EACA;;;;;;;;;;;;;UAce;EACf;IACE;IACA;;;;cAKS;;;;;;;;;;cAUA;cACA;;;KCrDD;UAEK;EACf;EACA;EACA;EACA;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,aAAa;EACb;EACA,iBAAiB,eAAe;EAChC;EACA;EACA;EACA;EACA,QAAQ;;KAIE,uBAAuB,KAAK;EACtC;EACA;;KAIU,yBAAyB,KACnC;UAIe;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA,QAAQ;EACR;EACA;EACA,KAAK;EACL,OAAO;EACP;EACA,WAAW;;UAGI,gBAAgB,KAAK;EACpC;EACA;EACA;EACA;EACA;EACA,WAAW;;;;UCtEI;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA,KAAK;EACL,OAAO;EACP;EACA;EACA;;;;UCZe;EACf;EACA;EACA;EACA;EACA;EACA;EACA,KAAK;EACL,OAAO;EACP;EACA;;;;UCRe;EACf;EACA;EACA;EACA;EACA,SAAS;;UAGM;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,KAAK;EACL,OAAO;EACP;EACA;EACA;EACA;IAAW;;;UAGI,yBAAyB,KAAK;EAC7C,OAAO;EACP,aAAa;;KAGH,aAAa;;;KChCb;UAQK;EACf;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;EACA,kBAAkB;EAClB,QAAQ;EACR;EACA;EACA;EACA;;EAEA;EACA;EACA;EACA;EACA,OAAO;;UAGQ;EACf;EACA;EACA,kBAAkB;EAClB,OAAO;IACL;IACA;;EAEF;EACA;EACA;;;EAGA,WAAW;;UAGI;EACf,SAAS;EACT,SAAS;EACT;;;;UCvEe;EACf;EACA;EACA;;;;UCHQ;EACR;;UAGe,wBAAwB;EACvC;EACA;EACA;;UAGe,wBAAwB;EACvC;EACA;;UAKe,2BAA2B;EAC1C;EACA;EACA;;UA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"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/types/pagination.ts","../src/types/header.ts","../src/types/footer.ts","../src/types/site-config.ts","../src/constants/pageTypes.ts","../src/types/cms-page.ts","../src/types/about.ts","../src/types/seo.ts","../src/types/service.ts","../src/types/blog.ts","../src/types/category.ts","../src/types/team-member.ts","../src/types/album.ts","../src/types/brand.ts","../src/types/testimonials.ts","../src/types/event.ts","../src/types/faq.ts","../src/types/faq-group.ts","../src/types/redirect.ts","../src/types/contact.ts","../src/types/product.ts","../src/types/product-category.ts","../src/types/product-brand.ts","../src/types/collection.ts","../src/types/order.ts","../src/types/store-setting.ts","../src/types/sitemap.ts","../src/core/client.ts","../src/constants/index.ts","../src/types/api-response.ts","../src/types/company-info.ts","../src/types/site.ts","../src/types/icon.ts"],"mappings":";UAAiB;EACf;EACA;EACA;;KAIU,iBAAiB;UAEZ,kBAAkB;EACjC,MAAM;EACN,YAAY;;;;UCXG;EACf;EACA;;UAGe;EACf;EACA;EACA,WAAW;;UAGI;EACf;EACA;EACA,WAAW;;UAGI;EACf;EACA;;UAGe;EACf;EACA;EACA,WAAW;EACX,MAAM;EACN,OAAO;;;;UC3BQ;EACf;EACA;;UAGe;EACf;EACA;EACA,UAAU;;UAGK;EACf;EACA,OAAO;;UAGQ;EACf;EACA;EACA,YAAY;EACZ,OAAO;;;;UCpBQ;EACf;EACA;EACA;EACA;;UAGe;EACf;EACA;;UAGe;EACf;EACA;EACA;;UAGe;EACf;EACA;EACA;;UAWe;EACf;EACA;EACA,SAAS;EACT,WAAW;EACX,gBAAgB;;UAGD;EACf;EACA;EACA;EACA;EACA,MAAM;EACN,SAAS;;;;;;;;;;;;cCtCE;;cAeA;KAED,mBAAmB;;;UCvBd;EACf;EACA;EACA;;UAGe;EACf;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA,KAAK;EACL;EACA;IACE;IACA;;;UAIa;EACf;EACA;EACA;EACA;EACA;EACA;EACA,MAAM;EACN;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,QAAQ;IACN;IACA;IACA;IACA;IACA;;;UAIa;EACf;EACA;EACA;EACA;EACA,KAAK;EACL,OAAO;EACP;;UAGe;EACf;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;;UAGe;EACf;EACA;EACA;;UAGe,oBAAoB;EACnC;EACA;;UAGe,uBAAuB;EACtC;;UAGe,mBAAmB;EAClC;;UAGe,oBAAoB;EACnC;;UAGe,uBAAuB;EACtC;;UAGe;EACf;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA,KAAK;;UAGU;EACf;EACA;EACA,OAAO;EACP,MAAM,QAAQ;EACd;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA,QAAQ;EACR,QAAQ;;UAGO;EACf;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA,OAAO;;UAGQ;EACf;EACA;EACA;EACA;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA,OAAO;;KAGG;UAEK;EACf;EACA;EACA;EACA,SAAS;EACT;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;;KAGU;EACN;EAAY;EAAyB;EAAc,SAAS;;EAC5D;EAAY;EAAyB;EAAgB,SAAS;;EAC9D;EAAY;EAAyB;EAAa,SAAS;;EAC3D;EAAY;EAAyB;EAAqB,SAAS;;EACnE;EAAY;EAAyB;EAAiB,SAAS;;EAC/D;EAAY;EAAyB;EAAqB,SAAS;;EACnE;EAAY;EAAyB;EAAc,SAAS;;EAC5D;EAAY;EAAyB;EAAiB,SAAS;;EAC/D;EAAY;EAAyB;EAAiB,SAAS;;EAC/D;EAAY;EAAyB;EAAe,SAAS;;EAC7D;EAAY;EAAyB;EAAc,SAAS;;EAC5D;EAAY;EAAyB;EAAsB,SAAS;;EACpE;EAAY;EAAyB;EAAe,SAAS;;EAC7D;EAAY;EAAyB;EAAa,SAAS;;EAC3D;EAAY;EAAyB;EAAiB,SAAS;;EAC/D;EAAY;EAAyB;EAAiB,SAAS;;EAC/D;EAAY;EAAyB;EAAkB,SAAS;;EAEhE;EACA;EACA;EACA,SAAS;;EAGT;EACA;EACA;EACA,SAAS;;UAGE;EACf;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;EACA,UAAU;EACV,WAAW;EACX;EACA,KAAK;EACL,UAAU;EACV,QAAQ;EACR;EACA;;KAIU,eAAe,KAAK;;;UCrPf;EACf;IAAU;IAAc;;EACxB;EACA;EACA;;UAGe;EACf;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,QAAQ;EACR,QAAQ;EACR,QAAQ;;;;UCzBO;EACf;EACA;EACA;EACA;;UAGe,yBAAyB;;;UCJzB;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,KAAK;EACL;IACE,UAAU;;;;;UCrBG;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;IACE,UAAU;IACV;MACE;MACA;MACA;;;;;;UCzBW;EACf;EACA;EACA;EACA;EACA;EACA;EACA,MAAM;EACN,SAAS;IAA4B,WAAW;;EAChD;EACA;;;;UCbe;EACf;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,UAAU;EACV;EACA;EACA,QAAQ;EACR;EACA;;;;UCnBe;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,QAAQ;EACR,SAAS;IAA4B,WAAW;;;UAGjC;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;;UC3Be;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,MAAM;EACN,SAAS;IAA4B,WAAW;;EAChD,SAAS;;UAGM;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;;UC5Be;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,OAAO;;;;UCdQ;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;IACE,UAAU;;;;;UCjCG;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;;UCJe;EACf;EACA;EACA;EACA;EACA;EACA,MAAM;EACN,MAAM;EACN;IACE,UAAU;;EAEZ;EACA;;;;KChBU;UAEK;EACf;EACA;EACA;EACA;EACA,aAAa;EACb;EACA;EACA;EACA;;UAGe;EACf,UAAU;EACV;EACA,QAAQ;EACR;;UAGe;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;;UC7Be;EACf;EACA;EACA;EACA;EACA;;;;;;;;;EASA;;UAGe,gBAAgB;EAC/B;EACA;EACA;EACA;EACA;;;;;;;;;;;;;UAce;EACf;IACE;IACA;;;;cAKS;;;;;;;;;;cAUA;cACA;;;KCrDD;UAEK;EACf;EACA;EACA;EACA;EACA;EACA;EACA;;UAMe;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EAEA,YAAY;EACZ;EACA,gBAAgB,eAAe;EAC/B;EACA;EACA;EACA;EACA,QAAQ;;;KAIE,uBAAuB;KAGvB,yBAAyB,KACnC;UAIe;EACf;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA,QAAQ;EACR;EACA;EACA,KAAK;EACL,OAAO;EAEP,OAAO;EACP;EACA,WAAW;;UAGI,gBAAgB,KAAK;EACpC;EACA;EACA;EACA;EACA;EACA,WAAW;;;;UChFI;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA,KAAK;EACL,OAAO;EACP;EACA;EACA;;;;UCZe;EACf;EACA;EACA;EACA;EACA;EACA;EACA,KAAK;EACL,OAAO;EACP;EACA;;;;UCRe;EACf;EACA;EACA;EACA;EACA,SAAS;;UAGM;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,KAAK;EACL,OAAO;EACP;EACA;EACA;EACA;IAAW;;;UAGI,yBAAyB,KAAK;EAC7C,OAAO;EACP,aAAa;;KAGH,aAAa;;;KChCb;UAQK;EACf;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;EACA,kBAAkB;EAClB,QAAQ;EACR;EACA;EACA;EACA;;EAEA;EACA;EACA;EACA;EACA,OAAO;;UAGQ;EACf;EACA;EACA,kBAAkB;EAClB,OAAO;IACL;IACA;;EAEF;EACA;EACA;;;EAGA,WAAW;;UAGI;EACf,SAAS;EACT,SAAS;EACT;;;;UCvEe;EACf;EACA;EACA;;;;UCHQ;EACR;;UAGe,wBAAwB;EACvC;EACA;EACA;;UAGe,wBAAwB;EACvC;EACA;;UAKe,2BAA2B;EAC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"}
package/dist/index.d.mts CHANGED
@@ -779,25 +779,28 @@ interface ProductVariant {
779
779
  name: string | null;
780
780
  model_number: string | null;
781
781
  order: number;
782
- price: number;
782
+ price?: number;
783
783
  sale_price?: number | null;
784
- cost_price?: number | null;
785
- inventory: number;
784
+ inventory: boolean;
785
+ low_stock: boolean;
786
786
  weight: number | null;
787
- attributes?: Record<string, string>;
788
- features?: string[];
789
- specifications?: Record<string, Record<string, string>>;
790
- included_items?: string[];
787
+ attributes: Record<string, string> | null;
788
+ features: string[] | null;
789
+ specifications: Record<string, Record<string, string>> | null;
790
+ included_items: string[] | null;
791
791
  created_at: string;
792
792
  updated_at: string;
793
793
  deleted_at?: string | null;
794
794
  images: ProductImage[];
795
795
  }
796
- type PublicProductVariant = Omit<ProductVariant, "inventory"> & {
797
- inventory: boolean;
798
- low_stock: boolean;
799
- };
800
- type ProductVariantListItem = Pick<PublicProductVariant, "id" | "sku" | "name" | "price" | "sale_price" | "inventory" | "low_stock" | "order">;
796
+ /** @deprecated Same as `ProductVariant`, which now describes the public shape. */
797
+ type PublicProductVariant = ProductVariant;
798
+ type ProductVariantListItem = Pick<ProductVariant, "id" | "sku" | "name" | "price" | "sale_price" | "inventory" | "low_stock" | "order">;
799
+ interface ProductTag {
800
+ id: string;
801
+ name: string;
802
+ slug: string;
803
+ }
801
804
  interface ProductListItem {
802
805
  id: string;
803
806
  site_id: string;
@@ -811,6 +814,7 @@ interface ProductListItem {
811
814
  thumbnail_url: string | null;
812
815
  seo: ProductSEO | null;
813
816
  extra: ProductExtraData | null;
817
+ tags?: ProductTag[];
814
818
  created_at: string;
815
819
  variants?: ProductVariantListItem[];
816
820
  }
@@ -820,7 +824,7 @@ interface Product extends Omit<ProductListItem, "variants"> {
820
824
  metadata: unknown;
821
825
  deleted_at: string | null;
822
826
  updated_at: string;
823
- variants?: PublicProductVariant[];
827
+ variants?: ProductVariant[];
824
828
  }
825
829
  //#endregion
826
830
  //#region src/types/product-category.d.ts
@@ -1320,5 +1324,5 @@ interface UpdateSitePayload {
1320
1324
  declare const ICON_NAMES: readonly ["Home", "User", "Settings", "Mail", "Bell", "Calendar", "Star", "Heart", "Bookmark", "Search", "Filter", "Download", "Upload", "Trash", "Edit", "Plus", "Minus", "Check", "X", "ChevronRight", "ChevronLeft", "ChevronUp", "ChevronDown", "ChevronsUpDown", "ArrowRight", "ArrowLeft", "ArrowUp", "ArrowDown", "File", "Folder", "Image", "Video", "Music", "Lock", "Unlock", "Eye", "EyeOff", "Sun", "Moon", "Cloud", "Zap", "Activity", "TrendingUp", "TrendingDown", "BarChart", "PieChart", "Database", "Server", "Wifi", "Battery", "Camera", "Mic", "Phone", "MessageSquare", "Send", "Share", "Link", "ExternalLink", "Globe", "MapPin", "Users", "ShoppingCart", "CreditCard", "Package", "Briefcase", "Target", "Flag", "Clipboard", "List", "Grid", "Layout", "Layers", "Copy", "Save", "RefreshCw", "Maximize", "Code", "AlertCircle", "Info", "HelpCircle", "CheckCircle", "XCircle", "Menu", "MoreVertical", "MoreHorizontal", "PlayCircle", "PauseCircle", "LogIn", "LogOut", "UserPlus", "UserMinus", "Tag", "Award", "Gift", "Truck", "Clock", "Handshake", "Stethoscope", "Microscope", "GraduationCap", "BookOpen", "Building2", "Trees", "HeartHandshake", "Brain", "Lightbulb"];
1321
1325
  type IconName = (typeof ICON_NAMES)[number];
1322
1326
  //#endregion
1323
- export { ANIMATION, APIResponse, AboutSection, AboutStat, AboutUsData, AboutValue, Album, AlbumGroupSection, AlbumItem, Blog, BlogSection, Brand, BrandGroup, Branding, CACHE, CONTACT_ATTACHMENT_MIME_ALLOWLIST, CONTACT_SUBJECTS, CTA, CTAContent, CartItem, Category, ClientsSection, CmsClientConfig, CmsError, Collection, CollectionDetail, CollectionGroupSection, CollectionItem, CollectionListItem, CompanyInfo, Contact, ContactConfig, ContactPayload, CreateSitePayload, Cta, CustomContent, Event, Faq, FaqGroup, FaqSection, FetchOptions, Footer, FooterNavChild, FooterNavGroup, FooterNavGroupLink, GallerySection, GenericSection, HTTP_STATUS, Header, HeroContent, HistoryItem, HistorySection, ICON_NAMES, IconName, Image, LocationConfig, MAX_CONTACT_ATTACHMENTS, MAX_CONTACT_ATTACHMENTS_TOTAL_BYTES, MEDIA, MarqueeItem, MarqueeSection, MultiValueItem, MultiValueSection, NavChild, NavGrandChild, NavLink, Order, OrderItem, OrderStatus, PAGINATION, Page, PageListItem, PageType, PaginatedResponse, PaginationInfo, PaginationMeta, PlaceOrderPayload, Product, ProductBrand, ProductCategory, ProductExtraData, ProductImage, ProductListItem, ProductSEO, ProductSectionFilter, ProductStatus, ProductVariant, ProductVariantListItem, ProductsSection, PublicContactConfig, PublicProductVariant, Redirect, Redirect404Log, RedirectStatusCode, ResolvedRedirect, RichContentSection, SEARCH, SEO, Section, Service, ServicesSection, ShippingAddress, SingleDataAPIResponse, Site, SiteConfig, SitemapAlbumItem, SitemapBlogItem, SitemapBrandGroupItem, SitemapCollectionItem, SitemapEventItem, SitemapItem, SitemapPageItem, SitemapProductBrandItem, SitemapProductCategoryItem, SitemapProductItem, SitemapResource, SitemapResourceMap, SitemapServiceItem, SitemapTeamCategoryItem, SitemapTeamMemberItem, Social, SocialLink, StoreSettings, TeamMember, TeamSection, Testimonial, TestimonialsSection, UpdateSitePayload, UserSiteRole, WorkingHours, allPageTypes, createCmsClient, pageTypes };
1327
+ export { ANIMATION, APIResponse, AboutSection, AboutStat, AboutUsData, AboutValue, Album, AlbumGroupSection, AlbumItem, Blog, BlogSection, Brand, BrandGroup, Branding, CACHE, CONTACT_ATTACHMENT_MIME_ALLOWLIST, CONTACT_SUBJECTS, CTA, CTAContent, CartItem, Category, ClientsSection, CmsClientConfig, CmsError, Collection, CollectionDetail, CollectionGroupSection, CollectionItem, CollectionListItem, CompanyInfo, Contact, ContactConfig, ContactPayload, CreateSitePayload, Cta, CustomContent, Event, Faq, FaqGroup, FaqSection, FetchOptions, Footer, FooterNavChild, FooterNavGroup, FooterNavGroupLink, GallerySection, GenericSection, HTTP_STATUS, Header, HeroContent, HistoryItem, HistorySection, ICON_NAMES, IconName, Image, LocationConfig, MAX_CONTACT_ATTACHMENTS, MAX_CONTACT_ATTACHMENTS_TOTAL_BYTES, MEDIA, MarqueeItem, MarqueeSection, MultiValueItem, MultiValueSection, NavChild, NavGrandChild, NavLink, Order, OrderItem, OrderStatus, PAGINATION, Page, PageListItem, PageType, PaginatedResponse, PaginationInfo, PaginationMeta, PlaceOrderPayload, Product, ProductBrand, ProductCategory, ProductExtraData, ProductImage, ProductListItem, ProductSEO, ProductSectionFilter, ProductStatus, ProductTag, ProductVariant, ProductVariantListItem, ProductsSection, PublicContactConfig, PublicProductVariant, Redirect, Redirect404Log, RedirectStatusCode, ResolvedRedirect, RichContentSection, SEARCH, SEO, Section, Service, ServicesSection, ShippingAddress, SingleDataAPIResponse, Site, SiteConfig, SitemapAlbumItem, SitemapBlogItem, SitemapBrandGroupItem, SitemapCollectionItem, SitemapEventItem, SitemapItem, SitemapPageItem, SitemapProductBrandItem, SitemapProductCategoryItem, SitemapProductItem, SitemapResource, SitemapResourceMap, SitemapServiceItem, SitemapTeamCategoryItem, SitemapTeamMemberItem, Social, SocialLink, StoreSettings, TeamMember, TeamSection, Testimonial, TestimonialsSection, UpdateSitePayload, UserSiteRole, WorkingHours, allPageTypes, createCmsClient, pageTypes };
1324
1328
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/types/pagination.ts","../src/types/header.ts","../src/types/footer.ts","../src/types/site-config.ts","../src/constants/pageTypes.ts","../src/types/cms-page.ts","../src/types/about.ts","../src/types/seo.ts","../src/types/service.ts","../src/types/blog.ts","../src/types/category.ts","../src/types/team-member.ts","../src/types/album.ts","../src/types/brand.ts","../src/types/testimonials.ts","../src/types/event.ts","../src/types/faq.ts","../src/types/faq-group.ts","../src/types/redirect.ts","../src/types/contact.ts","../src/types/product.ts","../src/types/product-category.ts","../src/types/product-brand.ts","../src/types/collection.ts","../src/types/order.ts","../src/types/store-setting.ts","../src/types/sitemap.ts","../src/core/client.ts","../src/constants/index.ts","../src/types/api-response.ts","../src/types/company-info.ts","../src/types/site.ts","../src/types/icon.ts"],"mappings":";UAAiB;EACf;EACA;EACA;;KAIU,iBAAiB;UAEZ,kBAAkB;EACjC,MAAM;EACN,YAAY;;;;UCXG;EACf;EACA;;UAGe;EACf;EACA;EACA,WAAW;;UAGI;EACf;EACA;EACA,WAAW;;UAGI;EACf;EACA;;UAGe;EACf;EACA;EACA,WAAW;EACX,MAAM;EACN,OAAO;;;;UC3BQ;EACf;EACA;;UAGe;EACf;EACA;EACA,UAAU;;UAGK;EACf;EACA,OAAO;;UAGQ;EACf;EACA;EACA,YAAY;EACZ,OAAO;;;;UCpBQ;EACf;EACA;EACA;EACA;;UAGe;EACf;EACA;;UAGe;EACf;EACA;EACA;;UAGe;EACf;EACA;EACA;;UAWe;EACf;EACA;EACA,SAAS;EACT,WAAW;EACX,gBAAgB;;UAGD;EACf;EACA;EACA;EACA;EACA,MAAM;EACN,SAAS;;;;;;;;;;;;cCtCE;;cAeA;KAED,mBAAmB;;;UCvBd;EACf;EACA;EACA;;UAGe;EACf;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA,KAAK;EACL;EACA;IACE;IACA;;;UAIa;EACf;EACA;EACA;EACA;EACA;EACA;EACA,MAAM;EACN;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,QAAQ;IACN;IACA;IACA;IACA;IACA;;;UAIa;EACf;EACA;EACA;EACA;EACA,KAAK;EACL,OAAO;EACP;;UAGe;EACf;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;;UAGe;EACf;EACA;EACA;;UAGe,oBAAoB;EACnC;EACA;;UAGe,uBAAuB;EACtC;;UAGe,mBAAmB;EAClC;;UAGe,oBAAoB;EACnC;;UAGe,uBAAuB;EACtC;;UAGe;EACf;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA,KAAK;;UAGU;EACf;EACA;EACA,OAAO;EACP,MAAM,QAAQ;EACd;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA,QAAQ;EACR,QAAQ;;UAGO;EACf;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA,OAAO;;UAGQ;EACf;EACA;EACA;EACA;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA,OAAO;;KAGG;UAEK;EACf;EACA;EACA;EACA,SAAS;EACT;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;;KAGU;EACN;EAAY;EAAyB;EAAc,SAAS;;EAC5D;EAAY;EAAyB;EAAgB,SAAS;;EAC9D;EAAY;EAAyB;EAAa,SAAS;;EAC3D;EAAY;EAAyB;EAAqB,SAAS;;EACnE;EAAY;EAAyB;EAAiB,SAAS;;EAC/D;EAAY;EAAyB;EAAqB,SAAS;;EACnE;EAAY;EAAyB;EAAc,SAAS;;EAC5D;EAAY;EAAyB;EAAiB,SAAS;;EAC/D;EAAY;EAAyB;EAAiB,SAAS;;EAC/D;EAAY;EAAyB;EAAe,SAAS;;EAC7D;EAAY;EAAyB;EAAc,SAAS;;EAC5D;EAAY;EAAyB;EAAsB,SAAS;;EACpE;EAAY;EAAyB;EAAe,SAAS;;EAC7D;EAAY;EAAyB;EAAa,SAAS;;EAC3D;EAAY;EAAyB;EAAiB,SAAS;;EAC/D;EAAY;EAAyB;EAAiB,SAAS;;EAC/D;EAAY;EAAyB;EAAkB,SAAS;;EAEhE;EACA;EACA;EACA,SAAS;;EAGT;EACA;EACA;EACA,SAAS;;UAGE;EACf;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;EACA,UAAU;EACV,WAAW;EACX;EACA,KAAK;EACL,UAAU;EACV,QAAQ;EACR;EACA;;KAIU,eAAe,KAAK;;;UCrPf;EACf;IAAU;IAAc;;EACxB;EACA;EACA;;UAGe;EACf;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,QAAQ;EACR,QAAQ;EACR,QAAQ;;;;UCzBO;EACf;EACA;EACA;EACA;;UAGe,yBAAyB;;;UCJzB;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,KAAK;EACL;IACE,UAAU;;;;;UCrBG;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;IACE,UAAU;IACV;MACE;MACA;MACA;;;;;;UCzBW;EACf;EACA;EACA;EACA;EACA;EACA;EACA,MAAM;EACN,SAAS;IAA4B,WAAW;;EAChD;EACA;;;;UCbe;EACf;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,UAAU;EACV;EACA;EACA,QAAQ;EACR;EACA;;;;UCnBe;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,QAAQ;EACR,SAAS;IAA4B,WAAW;;;UAGjC;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;;UC3Be;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,MAAM;EACN,SAAS;IAA4B,WAAW;;EAChD,SAAS;;UAGM;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;;UC5Be;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,OAAO;;;;UCdQ;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;IACE,UAAU;;;;;UCjCG;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;;UCJe;EACf;EACA;EACA;EACA;EACA;EACA,MAAM;EACN,MAAM;EACN;IACE,UAAU;;EAEZ;EACA;;;;KChBU;UAEK;EACf;EACA;EACA;EACA;EACA,aAAa;EACb;EACA;EACA;EACA;;UAGe;EACf,UAAU;EACV;EACA,QAAQ;EACR;;UAGe;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;;UC7Be;EACf;EACA;EACA;EACA;EACA;;;;;;;;;EASA;;UAGe,gBAAgB;EAC/B;EACA;EACA;EACA;EACA;;;;;;;;;;;;;UAce;EACf;IACE;IACA;;;;cAKS;;;;;;;;;;cAUA;cACA;;;KCrDD;UAEK;EACf;EACA;EACA;EACA;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,aAAa;EACb;EACA,iBAAiB,eAAe;EAChC;EACA;EACA;EACA;EACA,QAAQ;;KAIE,uBAAuB,KAAK;EACtC;EACA;;KAIU,yBAAyB,KACnC;UAIe;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA,QAAQ;EACR;EACA;EACA,KAAK;EACL,OAAO;EACP;EACA,WAAW;;UAGI,gBAAgB,KAAK;EACpC;EACA;EACA;EACA;EACA;EACA,WAAW;;;;UCtEI;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA,KAAK;EACL,OAAO;EACP;EACA;EACA;;;;UCZe;EACf;EACA;EACA;EACA;EACA;EACA;EACA,KAAK;EACL,OAAO;EACP;EACA;;;;UCRe;EACf;EACA;EACA;EACA;EACA,SAAS;;UAGM;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,KAAK;EACL,OAAO;EACP;EACA;EACA;EACA;IAAW;;;UAGI,yBAAyB,KAAK;EAC7C,OAAO;EACP,aAAa;;KAGH,aAAa;;;KChCb;UAQK;EACf;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;EACA,kBAAkB;EAClB,QAAQ;EACR;EACA;EACA;EACA;;EAEA;EACA;EACA;EACA;EACA,OAAO;;UAGQ;EACf;EACA;EACA,kBAAkB;EAClB,OAAO;IACL;IACA;;EAEF;EACA;EACA;;;EAGA,WAAW;;UAGI;EACf,SAAS;EACT,SAAS;EACT;;;;UCvEe;EACf;EACA;EACA;;;;UCHQ;EACR;;UAGe,wBAAwB;EACvC;EACA;EACA;;UAGe,wBAAwB;EACvC;EACA;;UAKe,2BAA2B;EAC1C;EACA;EACA;;UA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"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/types/pagination.ts","../src/types/header.ts","../src/types/footer.ts","../src/types/site-config.ts","../src/constants/pageTypes.ts","../src/types/cms-page.ts","../src/types/about.ts","../src/types/seo.ts","../src/types/service.ts","../src/types/blog.ts","../src/types/category.ts","../src/types/team-member.ts","../src/types/album.ts","../src/types/brand.ts","../src/types/testimonials.ts","../src/types/event.ts","../src/types/faq.ts","../src/types/faq-group.ts","../src/types/redirect.ts","../src/types/contact.ts","../src/types/product.ts","../src/types/product-category.ts","../src/types/product-brand.ts","../src/types/collection.ts","../src/types/order.ts","../src/types/store-setting.ts","../src/types/sitemap.ts","../src/core/client.ts","../src/constants/index.ts","../src/types/api-response.ts","../src/types/company-info.ts","../src/types/site.ts","../src/types/icon.ts"],"mappings":";UAAiB;EACf;EACA;EACA;;KAIU,iBAAiB;UAEZ,kBAAkB;EACjC,MAAM;EACN,YAAY;;;;UCXG;EACf;EACA;;UAGe;EACf;EACA;EACA,WAAW;;UAGI;EACf;EACA;EACA,WAAW;;UAGI;EACf;EACA;;UAGe;EACf;EACA;EACA,WAAW;EACX,MAAM;EACN,OAAO;;;;UC3BQ;EACf;EACA;;UAGe;EACf;EACA;EACA,UAAU;;UAGK;EACf;EACA,OAAO;;UAGQ;EACf;EACA;EACA,YAAY;EACZ,OAAO;;;;UCpBQ;EACf;EACA;EACA;EACA;;UAGe;EACf;EACA;;UAGe;EACf;EACA;EACA;;UAGe;EACf;EACA;EACA;;UAWe;EACf;EACA;EACA,SAAS;EACT,WAAW;EACX,gBAAgB;;UAGD;EACf;EACA;EACA;EACA;EACA,MAAM;EACN,SAAS;;;;;;;;;;;;cCtCE;;cAeA;KAED,mBAAmB;;;UCvBd;EACf;EACA;EACA;;UAGe;EACf;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA,KAAK;EACL;EACA;IACE;IACA;;;UAIa;EACf;EACA;EACA;EACA;EACA;EACA;EACA,MAAM;EACN;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,QAAQ;IACN;IACA;IACA;IACA;IACA;;;UAIa;EACf;EACA;EACA;EACA;EACA,KAAK;EACL,OAAO;EACP;;UAGe;EACf;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;;UAGe;EACf;EACA;EACA;;UAGe,oBAAoB;EACnC;EACA;;UAGe,uBAAuB;EACtC;;UAGe,mBAAmB;EAClC;;UAGe,oBAAoB;EACnC;;UAGe,uBAAuB;EACtC;;UAGe;EACf;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA,KAAK;;UAGU;EACf;EACA;EACA,OAAO;EACP,MAAM,QAAQ;EACd;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA,QAAQ;EACR,QAAQ;;UAGO;EACf;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA,OAAO;;UAGQ;EACf;EACA;EACA;EACA;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA,OAAO;;KAGG;UAEK;EACf;EACA;EACA;EACA,SAAS;EACT;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;;KAGU;EACN;EAAY;EAAyB;EAAc,SAAS;;EAC5D;EAAY;EAAyB;EAAgB,SAAS;;EAC9D;EAAY;EAAyB;EAAa,SAAS;;EAC3D;EAAY;EAAyB;EAAqB,SAAS;;EACnE;EAAY;EAAyB;EAAiB,SAAS;;EAC/D;EAAY;EAAyB;EAAqB,SAAS;;EACnE;EAAY;EAAyB;EAAc,SAAS;;EAC5D;EAAY;EAAyB;EAAiB,SAAS;;EAC/D;EAAY;EAAyB;EAAiB,SAAS;;EAC/D;EAAY;EAAyB;EAAe,SAAS;;EAC7D;EAAY;EAAyB;EAAc,SAAS;;EAC5D;EAAY;EAAyB;EAAsB,SAAS;;EACpE;EAAY;EAAyB;EAAe,SAAS;;EAC7D;EAAY;EAAyB;EAAa,SAAS;;EAC3D;EAAY;EAAyB;EAAiB,SAAS;;EAC/D;EAAY;EAAyB;EAAiB,SAAS;;EAC/D;EAAY;EAAyB;EAAkB,SAAS;;EAEhE;EACA;EACA;EACA,SAAS;;EAGT;EACA;EACA;EACA,SAAS;;UAGE;EACf;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;EACA,UAAU;EACV,WAAW;EACX;EACA,KAAK;EACL,UAAU;EACV,QAAQ;EACR;EACA;;KAIU,eAAe,KAAK;;;UCrPf;EACf;IAAU;IAAc;;EACxB;EACA;EACA;;UAGe;EACf;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,QAAQ;EACR,QAAQ;EACR,QAAQ;;;;UCzBO;EACf;EACA;EACA;EACA;;UAGe,yBAAyB;;;UCJzB;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,KAAK;EACL;IACE,UAAU;;;;;UCrBG;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;IACE,UAAU;IACV;MACE;MACA;MACA;;;;;;UCzBW;EACf;EACA;EACA;EACA;EACA;EACA;EACA,MAAM;EACN,SAAS;IAA4B,WAAW;;EAChD;EACA;;;;UCbe;EACf;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,UAAU;EACV;EACA;EACA,QAAQ;EACR;EACA;;;;UCnBe;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,QAAQ;EACR,SAAS;IAA4B,WAAW;;;UAGjC;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;;UC3Be;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,MAAM;EACN,SAAS;IAA4B,WAAW;;EAChD,SAAS;;UAGM;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;;UC5Be;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,OAAO;;;;UCdQ;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;IACE,UAAU;;;;;UCjCG;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;;UCJe;EACf;EACA;EACA;EACA;EACA;EACA,MAAM;EACN,MAAM;EACN;IACE,UAAU;;EAEZ;EACA;;;;KChBU;UAEK;EACf;EACA;EACA;EACA;EACA,aAAa;EACb;EACA;EACA;EACA;;UAGe;EACf,UAAU;EACV;EACA,QAAQ;EACR;;UAGe;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;;UC7Be;EACf;EACA;EACA;EACA;EACA;;;;;;;;;EASA;;UAGe,gBAAgB;EAC/B;EACA;EACA;EACA;EACA;;;;;;;;;;;;;UAce;EACf;IACE;IACA;;;;cAKS;;;;;;;;;;cAUA;cACA;;;KCrDD;UAEK;EACf;EACA;EACA;EACA;EACA;EACA;EACA;;UAMe;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EAEA,YAAY;EACZ;EACA,gBAAgB,eAAe;EAC/B;EACA;EACA;EACA;EACA,QAAQ;;;KAIE,uBAAuB;KAGvB,yBAAyB,KACnC;UAIe;EACf;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA,QAAQ;EACR;EACA;EACA,KAAK;EACL,OAAO;EAEP,OAAO;EACP;EACA,WAAW;;UAGI,gBAAgB,KAAK;EACpC;EACA;EACA;EACA;EACA;EACA,WAAW;;;;UChFI;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA,KAAK;EACL,OAAO;EACP;EACA;EACA;;;;UCZe;EACf;EACA;EACA;EACA;EACA;EACA;EACA,KAAK;EACL,OAAO;EACP;EACA;;;;UCRe;EACf;EACA;EACA;EACA;EACA,SAAS;;UAGM;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,KAAK;EACL,OAAO;EACP;EACA;EACA;EACA;IAAW;;;UAGI,yBAAyB,KAAK;EAC7C,OAAO;EACP,aAAa;;KAGH,aAAa;;;KChCb;UAQK;EACf;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;EACA,kBAAkB;EAClB,QAAQ;EACR;EACA;EACA;EACA;;EAEA;EACA;EACA;EACA;EACA,OAAO;;UAGQ;EACf;EACA;EACA,kBAAkB;EAClB,OAAO;IACL;IACA;;EAEF;EACA;EACA;;;EAGA,WAAW;;UAGI;EACf,SAAS;EACT,SAAS;EACT;;;;UCvEe;EACf;EACA;EACA;;;;UCHQ;EACR;;UAGe,wBAAwB;EACvC;EACA;EACA;;UAGe,wBAAwB;EACvC;EACA;;UAKe,2BAA2B;EAC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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../src/constants/pageTypes.ts","../src/constants/index.ts","../src/types/contact.ts","../src/core/client.ts","../src/types/icon.ts"],"sourcesContent":["/**\n * Page type identifiers. Mirrors cms-backend/src/constants/pageTypes.ts.\n *\n * `pageTypes` are the singleton types — a site may have at most one page of\n * each, enforced on create by the backend (cms/page/page.routes.ts). Attempting\n * a second one is rejected with \"A page with type \"<type>\" already exists for\n * this site\". `custom` is the only repeatable type.\n */\nexport const pageTypes = [\n \"home\",\n \"about\",\n \"contact\",\n \"services\",\n \"blog\",\n \"team\",\n \"gallery\",\n \"events\",\n \"clients-partners\",\n \"testimonial\",\n \"faq\",\n] as const;\n\n/** The full set accepted by the backend's page validator. */\nexport const allPageTypes = [...pageTypes, \"custom\"] as const;\n\nexport type PageType = (typeof allPageTypes)[number];\n","export * from \"./pageTypes\";\n\nexport const PAGINATION = {\n DEFAULT_PAGE: 1,\n DEFAULT_LIMIT: 10,\n LIST_DEFAULT_LIMIT: 20,\n BLOGS_PER_PAGE: 9,\n EVENTS_PER_PAGE: 9,\n ALBUMS_PER_PAGE: 9,\n MAX_ITEMS_FOR_SSG: 200,\n} as const;\n\nexport const SEARCH = {\n DEBOUNCE_MS: 500,\n MIN_QUERY_LENGTH: 2,\n} as const;\n\nexport const CACHE = {\n NO_CACHE: 0,\n SHORT: 60, // 1 minute\n MEDIUM: 300, // 5 minutes\n LONG: 3600, // 1 hour\n STATIC: 86400, // 24 hours\n} as const;\n\nexport const ANIMATION = {\n FAST: 0.2,\n NORMAL: 0.3,\n SLOW: 0.6,\n} as const;\n\nexport const CONTACT_SUBJECTS = [\n \"General Inquiry\",\n \"Project Proposal\",\n \"Careers\",\n \"Other\",\n] as const;\n\nexport const HTTP_STATUS = {\n OK: 200,\n CREATED: 201,\n BAD_REQUEST: 400,\n UNAUTHORIZED: 401,\n FORBIDDEN: 403,\n NOT_FOUND: 404,\n INTERNAL_ERROR: 500,\n} as const;\n\nexport const MEDIA = {\n IMAGE_EXTENSIONS: [\".jpg\", \".jpeg\", \".png\", \".gif\", \".webp\", \".svg\"],\n VIDEO_EXTENSIONS: [\".mp4\", \".webm\", \".ogg\"],\n MAX_IMAGE_SIZE: 5 * 1024 * 1024,\n} as const;\n","export interface ContactPayload {\n name: string;\n email?: string | null;\n subject?: string | null;\n message: string;\n type?: string;\n /**\n * Cloudflare Turnstile token from the widget on your form.\n *\n * Required whenever the site has Turnstile enabled — check with\n * `fetchContactConfig(siteId)`. Submitting without one is rejected with 403\n * (`CmsError`), and the token is single-use: on a failed submit, reset the\n * widget before retrying rather than resending the same value.\n */\n turnstile_token?: string;\n}\n\nexport interface Contact extends ContactPayload {\n id: string;\n site_id: string;\n is_read: boolean;\n created_at: string;\n updated_at: string;\n}\n\n/**\n * Public Turnstile settings for a site's contact form, from\n * GET /:site_id/contact-config/.\n *\n * Named to avoid colliding with `ContactConfig` in ./site-config, which is the\n * site's displayed contact details (phone, email, socials) and unrelated.\n *\n * `enabled` with a null `site_key` means the site is misconfigured: the widget\n * cannot render and submissions will be rejected. Treat it as \"do not show the\n * form\" rather than \"no captcha needed\".\n */\nexport interface PublicContactConfig {\n turnstile: {\n enabled: boolean;\n site_key: string | null;\n };\n}\n\n/** Attachment caps enforced by the API; mirrored here to fail fast client-side. */\nexport const MAX_CONTACT_ATTACHMENTS = 3;\n/**\n * Total attachment budget, measured on RAW bytes.\n *\n * Attachments are forwarded onto the notification email, so the ceiling is\n * Cloudflare Email's 5 MiB message limit — but the wire format is base64, 4/3\n * the size. 3 MiB raw leaves headroom; 4 MiB encoded to ~5.33 MiB and was\n * already over. Keep in step with MAX_CONTACT_ATTACHMENTS_TOTAL_BYTES in\n * cms-backend/src/constants/limits.ts.\n */\nexport const MAX_CONTACT_ATTACHMENTS_TOTAL_BYTES = 3 * 1024 * 1024;\nexport const CONTACT_ATTACHMENT_MIME_ALLOWLIST: readonly string[] = [\n \"application/pdf\",\n \"image/png\",\n \"image/jpeg\",\n \"image/webp\",\n \"image/gif\",\n \"text/plain\",\n \"application/msword\",\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n];\n","import { CACHE, PAGINATION } from \"../constants\";\nimport type { PaginatedResponse } from \"../types/pagination\";\nimport type { Header } from \"../types/header\";\nimport type { Footer } from \"../types/footer\";\nimport type { SiteConfig } from \"../types/site-config\";\nimport type { Page, PageListItem } from \"../types/cms-page\";\nimport type { PageType } from \"../constants/pageTypes\";\nimport type { AboutUsData } from \"../types/about\";\nimport type { Service } from \"../types/service\";\nimport type { Blog } from \"../types/blog\";\nimport type { Category } from \"../types/category\";\nimport type { TeamMember } from \"../types/team-member\";\nimport type { Album, AlbumItem } from \"../types/album\";\nimport type { BrandGroup, Brand } from \"../types/brand\";\nimport type { Testimonial } from \"../types/testimonials\";\nimport type { Event } from \"../types/event\";\nimport type { Faq } from \"../types/faq\";\nimport type { FaqGroup } from \"../types/faq-group\";\nimport type { Redirect, Redirect404Log, ResolvedRedirect } from \"../types/redirect\";\nimport type {\n ContactPayload,\n Contact,\n PublicContactConfig,\n} from \"../types/contact\";\nimport {\n MAX_CONTACT_ATTACHMENTS,\n MAX_CONTACT_ATTACHMENTS_TOTAL_BYTES,\n CONTACT_ATTACHMENT_MIME_ALLOWLIST,\n} from \"../types/contact\";\nimport type { Product, ProductListItem, ProductVariant } from \"../types/product\";\nimport type { ProductCategory } from \"../types/product-category\";\nimport type { ProductBrand } from \"../types/product-brand\";\nimport type { Collection, CollectionDetail } from \"../types/collection\";\nimport type { Order, PlaceOrderPayload } from \"../types/order\";\nimport type { StoreSettings } from \"../types/store-setting\";\nimport type {\n SitemapBlogItem,\n SitemapPageItem,\n SitemapProductItem,\n SitemapCollectionItem,\n SitemapResource,\n SitemapResourceMap,\n} from \"../types/sitemap\";\n\nexport interface FetchOptions extends RequestInit {\n revalidate?: number;\n tags?: string[];\n retries?: number;\n}\n\nexport interface CmsClientConfig {\n baseUrl: string;\n defaultOptions?: FetchOptions;\n}\n\nexport class CmsError extends Error {\n constructor(\n public message: string,\n public status?: number,\n public url?: string,\n ) {\n super(message);\n this.name = \"CmsError\";\n }\n}\n\nconst sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));\n\nexport function createCmsClient(config: CmsClientConfig) {\n const { baseUrl, defaultOptions = {} } = config;\n\n async function cmsFetch<T>(\n endpoint: string,\n options: FetchOptions = {},\n ): Promise<T | null> {\n const url = `${baseUrl}${endpoint}`;\n const {\n revalidate = CACHE.NO_CACHE,\n tags,\n retries = 1,\n ...rest\n } = { ...defaultOptions, ...options };\n\n const fetchConfig: RequestInit & {\n next?: { revalidate?: number; tags?: string[] };\n } = {\n ...rest,\n next: {\n revalidate,\n ...(tags && { tags }),\n },\n };\n\n for (let attempt = 0; attempt <= retries; attempt++) {\n try {\n const response = await fetch(url, fetchConfig);\n\n if (!response.ok) {\n // Retry on transient server errors (502, 503, 504)\n if (attempt < retries && [502, 503, 504].includes(response.status)) {\n await sleep(Math.pow(2, attempt) * 1000);\n continue;\n }\n\n let errorMsg = `API request failed: ${response.status} ${url}`;\n try {\n const body = await response.json();\n if (body?.message) errorMsg = body.message;\n } catch {\n // body not JSON, keep fallback\n }\n throw new CmsError(errorMsg, response.status, url);\n }\n\n // 204 / empty body — nothing to parse\n if (response.status === 204) {\n return null;\n }\n\n const result = await response.json();\n return result.data ?? result;\n } catch (error) {\n if (error instanceof CmsError) throw error;\n\n if (attempt < retries) {\n await sleep(Math.pow(2, attempt) * 1000);\n continue;\n }\n\n const msg =\n error instanceof Error ? error.message : String(error);\n throw new CmsError(`Request failed: ${msg}`, undefined, url);\n }\n }\n\n throw new CmsError(`Request failed after ${retries + 1} attempts`, undefined, url);\n }\n\n async function cmsFetchPaginated<T>(\n endpoint: string,\n options: FetchOptions = {},\n ): Promise<PaginatedResponse<T>> {\n const url = `${baseUrl}${endpoint}`;\n const {\n revalidate = CACHE.NO_CACHE,\n tags,\n retries = 1,\n ...rest\n } = { ...defaultOptions, ...options };\n\n const fetchConfig: RequestInit & {\n next?: { revalidate?: number; tags?: string[] };\n } = {\n ...rest,\n next: {\n revalidate,\n ...(tags && { tags }),\n },\n };\n\n for (let attempt = 0; attempt <= retries; attempt++) {\n try {\n const response = await fetch(url, fetchConfig);\n\n if (!response.ok) {\n if (attempt < retries && [502, 503, 504].includes(response.status)) {\n await sleep(Math.pow(2, attempt) * 1000);\n continue;\n }\n\n let errorMsg = `API request failed: ${response.status} ${url}`;\n try {\n const body = await response.json();\n if (body?.message) errorMsg = body.message;\n } catch {\n // body not JSON, keep fallback\n }\n throw new CmsError(errorMsg, response.status, url);\n }\n\n return await response.json();\n } catch (error) {\n if (error instanceof CmsError) throw error;\n\n if (attempt < retries) {\n await sleep(Math.pow(2, attempt) * 1000);\n continue;\n }\n\n const msg =\n error instanceof Error ? error.message : String(error);\n throw new CmsError(`Request failed: ${msg}`, undefined, url);\n }\n }\n\n throw new CmsError(`Request failed after ${retries + 1} attempts`, undefined, url);\n }\n\n function buildQueryString(\n params: Record<string, string | number | string[] | number[] | undefined | null>,\n ): string {\n const query = new URLSearchParams();\n Object.entries(params).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n if (Array.isArray(value)) {\n value.forEach((v) => query.append(key, String(v)));\n } else {\n query.append(key, String(value));\n }\n }\n });\n return query.toString();\n }\n\n // Default page size for list endpoints (categories, team, brands, testimonials,\n // faq-groups, faqs). Matches the backend's getPaginationParamsWithoutLimit(c, 20).\n // Album-items is NOT one of these: it uses getPaginationParams(c, 100), so its\n // server-side default is 10 and callers should pass an explicit `limit`.\n const LIST_DEFAULT_LIMIT = PAGINATION.LIST_DEFAULT_LIMIT;\n\n // ============================================================================\n // Header, Footer, Site Config\n // ============================================================================\n\n function fetchHeader(\n siteId: string,\n options?: FetchOptions,\n ): Promise<Header | null> {\n return cmsFetch<Header>(`/api/public/cms/${siteId}/header/`, {\n revalidate: CACHE.MEDIUM,\n tags: [\"header\"],\n ...options,\n });\n }\n\n function fetchFooter(\n siteId: string,\n options?: FetchOptions,\n ): Promise<Footer | null> {\n return cmsFetch<Footer>(`/api/public/cms/${siteId}/footer/`, {\n revalidate: CACHE.MEDIUM,\n tags: [\"footer\"],\n ...options,\n });\n }\n\n function fetchSiteConfig(\n siteId: string,\n options?: FetchOptions,\n ): Promise<SiteConfig | null> {\n return cmsFetch<SiteConfig>(`/api/public/cms/${siteId}/site-config/`, {\n revalidate: CACHE.MEDIUM,\n tags: [\"site-config\"],\n ...options,\n });\n }\n\n // ============================================================================\n // Pages\n // ============================================================================\n\n function fetchPages(\n siteId: string,\n params: { page?: number } = {},\n options?: FetchOptions,\n ): Promise<PaginatedResponse<PageListItem>> {\n const query = buildQueryString(params);\n return cmsFetchPaginated<PageListItem>(\n `/api/public/cms/${siteId}/page/?${query}`,\n {\n revalidate: CACHE.SHORT,\n tags: [\"pages\"],\n ...options,\n },\n );\n }\n\n async function fetchPageByUrl(\n siteId: string,\n urlPath: string,\n options?: FetchOptions,\n ): Promise<Page | null> {\n const targetUrl =\n urlPath === \"/\" || urlPath === \"\"\n ? \"/\"\n : `/${urlPath.replace(/^\\/|\\/$/g, \"\")}`;\n\n return cmsFetch<Page>(\n `/api/public/cms/${siteId}/page/by-url/?url=${encodeURIComponent(targetUrl)}`,\n {\n revalidate: CACHE.SHORT,\n tags: [\"pages\", `page-${targetUrl || \"root\"}`],\n ...options,\n },\n );\n }\n\n /**\n * The site's single published page of a given type, with its sections — the\n * same payload as `fetchPageByUrl`. Prefer this when you know which kind of\n * page you want but not its url, since an editor can rename the url at any\n * time. Returns null when the site has no published page of that type.\n */\n async function fetchPageByType(\n siteId: string,\n pageType: PageType,\n options?: FetchOptions,\n ): Promise<Page | null> {\n return cmsFetch<Page>(\n `/api/public/cms/${siteId}/page/by-type/${encodeURIComponent(pageType)}/`,\n {\n revalidate: CACHE.SHORT,\n tags: [\"pages\", `page-type-${pageType}`],\n ...options,\n },\n );\n }\n\n // ============================================================================\n // About Us\n // ============================================================================\n\n function fetchAboutUs(\n siteId: string,\n options?: FetchOptions,\n ): Promise<AboutUsData | null> {\n return cmsFetch<AboutUsData>(`/api/public/cms/${siteId}/about-us/`, {\n revalidate: CACHE.MEDIUM,\n tags: [\"about\"],\n ...options,\n });\n }\n\n // ============================================================================\n // Services\n // ============================================================================\n\n async function fetchServices(\n siteId: string,\n params: { page?: number; limit?: number } = {},\n options?: FetchOptions,\n ): Promise<PaginatedResponse<Service>> {\n const query = buildQueryString(params);\n return cmsFetchPaginated<Service>(\n `/api/public/cms/${siteId}/services/${query ? `?${query}` : \"\"}`,\n {\n revalidate: CACHE.SHORT,\n tags: [\"services\"],\n ...options,\n },\n );\n }\n\n function fetchServiceBySlug(\n siteId: string,\n slug: string,\n options?: FetchOptions,\n ): Promise<Service | null> {\n return cmsFetch<Service>(`/api/public/cms/${siteId}/services/${slug}`, {\n revalidate: CACHE.SHORT,\n tags: [\"services\", `service-${slug}`],\n ...options,\n });\n }\n\n // ============================================================================\n // Blogs\n // ============================================================================\n\n function fetchBlogs(\n siteId: string,\n params: { page?: number; limit?: number; search?: string } = {},\n options?: FetchOptions,\n ): Promise<PaginatedResponse<Blog>> {\n const query = buildQueryString(params);\n return cmsFetchPaginated<Blog>(`/api/public/cms/${siteId}/blog/?${query}`, {\n revalidate: CACHE.SHORT,\n tags: [\"blogs\"],\n ...options,\n });\n }\n\n function fetchBlogBySlug(\n siteId: string,\n slug: string,\n options?: FetchOptions,\n ): Promise<Blog | null> {\n return cmsFetch<Blog>(`/api/public/cms/${siteId}/blog/${slug}`, {\n revalidate: CACHE.SHORT,\n tags: [\"blogs\", `blog-${slug}`],\n ...options,\n });\n }\n\n // Backwards-compatible alias. Backend route resolves by slug.\n function fetchBlogById(\n siteId: string,\n idOrSlug: number | string,\n options?: FetchOptions,\n ): Promise<Blog | null> {\n return fetchBlogBySlug(siteId, String(idOrSlug), options);\n }\n\n // ============================================================================\n // Categories\n // ============================================================================\n\n function fetchCategories(\n siteId: string,\n params: { page?: number; limit?: number } = {},\n options?: FetchOptions,\n ): Promise<PaginatedResponse<Category>> {\n const query = buildQueryString(params);\n return cmsFetchPaginated<Category>(\n `/api/public/cms/${siteId}/categories/?${query}`,\n {\n revalidate: CACHE.MEDIUM,\n tags: [\"categories\"],\n ...options,\n },\n );\n }\n\n // ============================================================================\n // Team Members\n // ============================================================================\n\n function fetchTeamMembers(\n siteId: string,\n params: { page?: number; limit?: number } = {},\n options?: FetchOptions,\n ): Promise<PaginatedResponse<TeamMember>> {\n const query = buildQueryString(params);\n return cmsFetchPaginated<TeamMember>(\n `/api/public/cms/${siteId}/team-members/?${query}`,\n {\n revalidate: CACHE.MEDIUM,\n tags: [\"team\"],\n ...options,\n },\n );\n }\n\n function fetchTeamMembersByCategory(\n siteId: string,\n params: { categoryId: string; page?: number; limit?: number },\n options?: FetchOptions,\n ): Promise<PaginatedResponse<TeamMember>> {\n const query = buildQueryString({\n category_id: params.categoryId,\n page: params.page,\n limit: params.limit,\n });\n return cmsFetchPaginated<TeamMember>(\n `/api/public/cms/${siteId}/team-members/?${query}`,\n {\n revalidate: CACHE.MEDIUM,\n tags: [\"team\", `team-category-${params.categoryId}`],\n ...options,\n },\n );\n }\n\n // ============================================================================\n // Albums\n // ============================================================================\n\n function fetchAlbums(\n siteId: string,\n params: { page?: number; limit?: number; search?: string } = {},\n options?: FetchOptions,\n ): Promise<PaginatedResponse<Album>> {\n const query = buildQueryString(params);\n return cmsFetchPaginated<Album>(\n `/api/public/cms/${siteId}/albums/?${query}`,\n {\n revalidate: CACHE.SHORT,\n tags: [\"albums\"],\n ...options,\n },\n );\n }\n\n function fetchAlbumItems(\n siteId: string,\n params: {\n /** Album slug. */\n album?: string;\n /** Comma-separated list of album IDs (e.g., \"id1,id2\") */\n album_id?: string;\n page?: number;\n /**\n * Defaults to 10 server-side (max 100) — pass an explicit value to get a\n * whole album, or several albums' worth for an album-group section.\n */\n limit?: number;\n },\n options?: FetchOptions,\n ): Promise<PaginatedResponse<AlbumItem>> {\n const query = buildQueryString(params);\n return cmsFetchPaginated<AlbumItem>(\n `/api/public/cms/${siteId}/albums/album-items/?${query}`,\n {\n revalidate: CACHE.SHORT,\n tags: [\"album-items\"],\n ...options,\n },\n );\n }\n\n // ============================================================================\n // Brands\n // ============================================================================\n\n function fetchBrandGroups(\n siteId: string,\n params: { page?: number; limit?: number } = {},\n options?: FetchOptions,\n ): Promise<PaginatedResponse<BrandGroup>> {\n const query = buildQueryString(params);\n return cmsFetchPaginated<BrandGroup>(\n `/api/public/cms/${siteId}/brand-groups/?${query}`,\n {\n revalidate: CACHE.MEDIUM,\n tags: [\"brand-groups\"],\n ...options,\n },\n );\n }\n\n function fetchBrands(\n siteId: string,\n params: { group?: string; group_id?: string; page?: number; limit?: number },\n options?: FetchOptions,\n ): Promise<PaginatedResponse<Brand>> {\n const query = buildQueryString(params);\n return cmsFetchPaginated<Brand>(\n `/api/public/cms/${siteId}/brand-groups/brands/?${query}`,\n {\n revalidate: CACHE.MEDIUM,\n tags: [\"brands\"],\n ...options,\n },\n );\n }\n\n // ============================================================================\n // Testimonials\n // ============================================================================\n\n function fetchTestimonials(\n siteId: string,\n params?: { type?: \"testimonial\" | \"review\" | string; page?: number; limit?: number },\n options?: FetchOptions,\n ): Promise<PaginatedResponse<Testimonial>> {\n const query = buildQueryString({\n type: params?.type,\n page: params?.page,\n limit: params?.limit,\n });\n return cmsFetchPaginated<Testimonial>(\n `/api/public/cms/${siteId}/testimonials/?${query}`,\n {\n revalidate: CACHE.MEDIUM,\n tags: [\"testimonials\"],\n ...options,\n },\n );\n }\n\n // ============================================================================\n // Events\n // ============================================================================\n\n function fetchEvents(\n siteId: string,\n params: { page?: number; limit?: number; search?: string } = {},\n options?: FetchOptions,\n ): Promise<PaginatedResponse<Event>> {\n const query = buildQueryString(params);\n return cmsFetchPaginated<Event>(\n `/api/public/cms/${siteId}/events/?${query}`,\n {\n revalidate: CACHE.SHORT,\n tags: [\"events\"],\n ...options,\n },\n );\n }\n\n function fetchEventBySlug(\n siteId: string,\n slug: string,\n options?: FetchOptions,\n ): Promise<Event | null> {\n return cmsFetch<Event>(`/api/public/cms/${siteId}/events/${slug}`, {\n revalidate: CACHE.SHORT,\n tags: [\"events\", `event-${slug}`],\n ...options,\n });\n }\n\n // ============================================================================\n // FAQ Groups\n // ============================================================================\n\n function fetchFaqGroups(\n siteId: string,\n params: { page?: number; limit?: number } = {},\n options?: FetchOptions,\n ): Promise<PaginatedResponse<FaqGroup>> {\n const query = buildQueryString(params);\n return cmsFetchPaginated<FaqGroup>(\n `/api/public/cms/${siteId}/faq-groups/?${query}`,\n {\n revalidate: CACHE.MEDIUM,\n tags: [\"faq-groups\"],\n ...options,\n },\n );\n }\n\n /**\n * Public Turnstile settings for the site's contact form.\n *\n * Call this before rendering the form: when `turnstile.enabled` is true the\n * widget must be rendered with `turnstile.site_key` and its token passed to\n * `submitContactForm`, or every submission is rejected.\n */\n function fetchContactConfig(\n siteId: string,\n options?: FetchOptions,\n ): Promise<PublicContactConfig | null> {\n return cmsFetch<PublicContactConfig>(\n `/api/public/cms/${siteId}/contact-config/`,\n {\n revalidate: CACHE.SHORT,\n tags: [\"contact-config\"],\n ...options,\n },\n );\n }\n\n /**\n * Submit the contact form.\n *\n * Unlike the read methods, this THROWS `CmsError` on a rejection rather than\n * returning null — a form needs to tell \"captcha failed, reset the widget\"\n * (403) apart from \"rate limited\" (429) and a network blip, and a single\n * `null` cannot carry that. `error.status` holds the HTTP status.\n *\n * Pass `attachments` to send files; the request then goes out as multipart\n * instead of JSON. Caps are enforced server-side and pre-checked here.\n */\n async function submitContactForm(\n siteId: string,\n payload: ContactPayload,\n attachments?: File[],\n options?: FetchOptions,\n ): Promise<Contact> {\n const url = `${baseUrl}/api/public/cms/${siteId}/contact/`;\n\n if (attachments?.length) {\n if (attachments.length > MAX_CONTACT_ATTACHMENTS) {\n throw new CmsError(\n `At most ${MAX_CONTACT_ATTACHMENTS} attachments are allowed`,\n 400,\n url,\n );\n }\n const totalBytes = attachments.reduce((sum, f) => sum + f.size, 0);\n if (totalBytes > MAX_CONTACT_ATTACHMENTS_TOTAL_BYTES) {\n throw new CmsError(\n `Attachments exceed the ${\n MAX_CONTACT_ATTACHMENTS_TOTAL_BYTES / (1024 * 1024)\n } MiB total size limit`,\n 400,\n url,\n );\n }\n for (const f of attachments) {\n if (!CONTACT_ATTACHMENT_MIME_ALLOWLIST.includes(f.type)) {\n throw new CmsError(\n `Attachment type not allowed: ${f.type || \"unknown\"}`,\n 400,\n url,\n );\n }\n }\n }\n\n let body: BodyInit;\n const headers: Record<string, string> = {};\n if (attachments?.length) {\n // multipart — the runtime must set Content-Type so the boundary is right,\n // so no Content-Type header is set here.\n const form = new FormData();\n for (const [key, value] of Object.entries(payload)) {\n if (value !== undefined && value !== null) form.append(key, String(value));\n }\n for (const file of attachments) form.append(\"attachments\", file, file.name);\n body = form;\n } else {\n headers[\"Content-Type\"] = \"application/json\";\n body = JSON.stringify(payload);\n }\n\n // No retries: the body may be a consumed stream, a resend would duplicate\n // the submission, and the one retryable-looking status here (503, a\n // misconfigured Turnstile) is a deployment fault that will not self-heal —\n // retrying it just burns the 1-per-60s write budget.\n let response: Response;\n try {\n response = await fetch(url, {\n ...options,\n method: \"POST\",\n headers: { ...headers, ...(options?.headers as Record<string, string>) },\n body,\n });\n } catch (error) {\n throw new CmsError(\n error instanceof Error ? error.message : \"Network request failed\",\n undefined,\n url,\n );\n }\n\n if (!response.ok) {\n // The API answers errors as { message }; fall back to the status text\n // when the body is not JSON (a proxy error page, say).\n let message = `Request failed with status ${response.status}`;\n try {\n const parsed = (await response.json()) as { message?: string };\n if (parsed?.message) message = parsed.message;\n } catch {\n // keep the fallback\n }\n throw new CmsError(message, response.status, url);\n }\n\n const result = await response.json();\n return (result.data ?? result) as Contact;\n }\n\n function fetchFaqs(\n siteId: string,\n params?: { group_id?: string; page?: number; limit?: number },\n options?: FetchOptions,\n ): Promise<PaginatedResponse<Faq>> {\n const query = buildQueryString({\n group_id: params?.group_id,\n page: params?.page,\n limit: params?.limit,\n });\n return cmsFetchPaginated<Faq>(\n `/api/public/cms/${siteId}/faqs/?${query}`,\n {\n revalidate: CACHE.MEDIUM,\n tags: [\"faqs\"],\n ...options,\n },\n );\n }\n\n // ============================================================================\n // Redirects\n // ============================================================================\n\n async function fetchRedirects(\n siteId: string,\n options?: FetchOptions,\n ): Promise<Redirect[]> {\n const result = await cmsFetch<Redirect[]>(\n `/api/public/cms/${siteId}/redirects/`,\n {\n revalidate: CACHE.SHORT,\n tags: [\"redirects\"],\n ...options,\n },\n );\n return result ?? [];\n }\n\n function resolveRedirect(\n siteId: string,\n sourcePath: string,\n options?: FetchOptions,\n ): Promise<ResolvedRedirect | null> {\n return cmsFetch<ResolvedRedirect>(\n `/api/public/cms/${siteId}/redirects/resolve/?sourcePath=${encodeURIComponent(sourcePath)}`,\n {\n revalidate: CACHE.NO_CACHE,\n tags: [\"redirects\", `redirect-${sourcePath}`],\n ...options,\n },\n );\n }\n\n function reportRedirect404(\n siteId: string,\n sourcePath: string,\n referrer?: string,\n options?: FetchOptions,\n ): Promise<Redirect404Log | null> {\n const headers = {\n \"Content-Type\": \"application/json\",\n ...(options?.headers ?? {}),\n };\n\n return cmsFetch<Redirect404Log>(\n `/api/public/cms/${siteId}/redirects/404-logs/`,\n {\n method: \"POST\",\n ...options,\n headers,\n body: JSON.stringify({\n source_path: sourcePath,\n referrer,\n }),\n revalidate: CACHE.NO_CACHE,\n tags: [\"redirects\", \"redirect-404-logs\"],\n retries: 0,\n },\n );\n }\n\n // ============================================================================\n // Store — Products, Categories, Brands, Collections, Orders\n // Note: Uses /api/public/store/ prefix (NOT /api/public/cms/)\n // ============================================================================\n\n function fetchStoreSettings(\n siteId: string,\n options?: FetchOptions,\n ): Promise<StoreSettings | null> {\n return cmsFetch<StoreSettings>(`/api/public/store/${siteId}/settings/`, {\n revalidate: CACHE.MEDIUM,\n tags: [\"store-settings\"],\n ...options,\n });\n }\n\n function fetchProductCategories(\n siteId: string,\n params: {\n page?: number;\n limit?: number;\n search?: string;\n ordering?: string;\n parent_id?: string | null;\n } = {},\n options?: FetchOptions,\n ): Promise<PaginatedResponse<ProductCategory>> {\n const query = buildQueryString(params);\n return cmsFetchPaginated<ProductCategory>(\n `/api/public/store/${siteId}/categories/${query ? `?${query}` : \"\"}`,\n {\n revalidate: CACHE.SHORT,\n tags: [\"product-categories\"],\n ...options,\n },\n );\n }\n\n function fetchProductBrands(\n siteId: string,\n params: {\n page?: number;\n limit?: number;\n search?: string;\n ordering?: string;\n } = {},\n options?: FetchOptions,\n ): Promise<PaginatedResponse<ProductBrand>> {\n const query = buildQueryString(params);\n return cmsFetchPaginated<ProductBrand>(\n `/api/public/store/${siteId}/brands/${query ? `?${query}` : \"\"}`,\n {\n revalidate: CACHE.SHORT,\n tags: [\"product-brands\"],\n ...options,\n },\n );\n }\n\n function fetchProducts(\n siteId: string,\n params: {\n page?: number;\n limit?: number;\n search?: string;\n category_id?: string;\n tag_id?: string;\n brand_id?: string;\n is_featured?: \"true\" | \"false\";\n sort?: \"price_asc\" | \"price_desc\";\n min_price?: number;\n max_price?: number;\n availability?: \"in_stock\" | \"out_of_stock\";\n } = {},\n options?: FetchOptions,\n ): Promise<PaginatedResponse<ProductListItem>> {\n const query = buildQueryString(params);\n return cmsFetchPaginated<ProductListItem>(\n `/api/public/store/${siteId}/products/?${query}`,\n {\n revalidate: CACHE.SHORT,\n tags: [\"products\"],\n ...options,\n },\n );\n }\n\n function fetchProductDetail(\n siteId: string,\n slug: string,\n options?: FetchOptions,\n ): Promise<Product | null> {\n return cmsFetch<Product>(`/api/public/store/${siteId}/products/${slug}/`, {\n revalidate: CACHE.SHORT,\n tags: [\"products\", `product-${slug}`],\n ...options,\n });\n }\n\n function fetchProductsByTag(\n siteId: string,\n tag: string,\n params: { page?: number; limit?: number } = {},\n options?: FetchOptions,\n ): Promise<PaginatedResponse<{ item: unknown; product: Product }> | null> {\n const query = buildQueryString({ tag, ...params });\n return cmsFetch<PaginatedResponse<{ item: unknown; product: Product }>>(\n `/api/public/store/${siteId}/products/by-tag/${query ? `?${query}` : \"\"}`,\n {\n revalidate: CACHE.SHORT,\n tags: [\"products\", `products-tag-${tag}`],\n ...options,\n },\n );\n }\n\n function fetchCollections(\n siteId: string,\n params: {\n page?: number;\n limit?: number;\n search?: string;\n /** Comma-separated list of collection IDs (e.g., \"id1,id2\") */\n id?: string;\n } = {},\n options?: FetchOptions,\n ): Promise<PaginatedResponse<Collection>> {\n const query = buildQueryString(params);\n return cmsFetchPaginated<Collection>(\n `/api/public/store/${siteId}/collections/${query ? `?${query}` : \"\"}`,\n {\n revalidate: CACHE.SHORT,\n tags: [\"collections\"],\n ...options,\n },\n );\n }\n\n function fetchCollectionDetail(\n siteId: string,\n slug: string,\n params: {\n page?: number;\n limit?: number;\n category_id?: string;\n sort?: \"name_asc\" | \"name_desc\";\n availability?: \"in_stock\" | \"out_of_stock\";\n } = {},\n options?: FetchOptions,\n ): Promise<CollectionDetail | null> {\n const query = buildQueryString(params);\n return cmsFetch<CollectionDetail>(\n `/api/public/store/${siteId}/collections/${slug}/${\n query ? `?${query}` : \"\"\n }`,\n {\n revalidate: CACHE.SHORT,\n tags: [\"collections\", `collection-${slug}`],\n ...options,\n },\n );\n }\n\n function fetchCollectionDetailById(\n siteId: string,\n id: string,\n params: {\n page?: number;\n limit?: number;\n category_id?: string;\n sort?: \"name_asc\" | \"name_desc\";\n availability?: \"in_stock\" | \"out_of_stock\";\n } = {},\n options?: FetchOptions,\n ): Promise<CollectionDetail | null> {\n const query = buildQueryString(params);\n return cmsFetch<CollectionDetail>(\n `/api/public/store/${siteId}/collections/id/${id}/${\n query ? `?${query}` : \"\"\n }`,\n {\n revalidate: CACHE.SHORT,\n tags: [\"collections\", `collection-${id}`],\n ...options,\n },\n );\n }\n\n function placeOrder(\n siteId: string,\n payload: PlaceOrderPayload,\n options?: FetchOptions,\n ): Promise<Order | null> {\n return cmsFetch<Order>(`/api/public/store/${siteId}/orders/`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(payload),\n revalidate: CACHE.NO_CACHE,\n retries: 0,\n ...options,\n });\n }\n\n // ============================================================================\n // Sitemap — public endpoints for XML sitemap generation (fetch once per day)\n // ============================================================================\n\n function fetchSitemapBlogs(\n siteId: string,\n params: { page?: number; limit?: number } = {},\n options?: FetchOptions,\n ): Promise<PaginatedResponse<SitemapBlogItem>> {\n const query = buildQueryString(params);\n return cmsFetchPaginated<SitemapBlogItem>(\n `/api/public/cms/${siteId}/sitemap/blogs/${query ? `?${query}` : \"\"}`,\n {\n revalidate: CACHE.STATIC,\n tags: [\"sitemap\", \"sitemap-blogs\"],\n ...options,\n },\n );\n }\n\n function fetchSitemapPages(\n siteId: string,\n params: { page?: number; limit?: number } = {},\n options?: FetchOptions,\n ): Promise<PaginatedResponse<SitemapPageItem>> {\n const query = buildQueryString(params);\n return cmsFetchPaginated<SitemapPageItem>(\n `/api/public/cms/${siteId}/sitemap/pages/${query ? `?${query}` : \"\"}`,\n {\n revalidate: CACHE.STATIC,\n tags: [\"sitemap\", \"sitemap-pages\"],\n ...options,\n },\n );\n }\n\n function fetchSitemapProducts(\n siteId: string,\n params: { page?: number; limit?: number } = {},\n options?: FetchOptions,\n ): Promise<PaginatedResponse<SitemapProductItem>> {\n const query = buildQueryString(params);\n return cmsFetchPaginated<SitemapProductItem>(\n `/api/public/store/${siteId}/sitemap/products/${query ? `?${query}` : \"\"}`,\n {\n revalidate: CACHE.STATIC,\n tags: [\"sitemap\", \"sitemap-products\"],\n ...options,\n },\n );\n }\n\n function fetchSitemapCollections(\n siteId: string,\n params: { page?: number; limit?: number } = {},\n options?: FetchOptions,\n ): Promise<PaginatedResponse<SitemapCollectionItem>> {\n const query = buildQueryString(params);\n return cmsFetchPaginated<SitemapCollectionItem>(\n `/api/public/store/${siteId}/sitemap/collections/${query ? `?${query}` : \"\"}`,\n {\n revalidate: CACHE.STATIC,\n tags: [\"sitemap\", \"sitemap-collections\"],\n ...options,\n },\n );\n }\n\n // Resource key -> backend path. Store resources are namespaced under\n // /store/ and their keys are prefixed to avoid colliding with the CMS\n // `categories` route, which is a different resource entirely.\n const SITEMAP_ROUTES: Record<\n SitemapResource,\n { segment: string; store: boolean }\n > = {\n blogs: { segment: \"blogs\", store: false },\n pages: { segment: \"pages\", store: false },\n services: { segment: \"services\", store: false },\n events: { segment: \"events\", store: false },\n albums: { segment: \"albums\", store: false },\n \"team-members\": { segment: \"team-members\", store: false },\n \"team-categories\": { segment: \"team-categories\", store: false },\n \"brand-groups\": { segment: \"brand-groups\", store: false },\n products: { segment: \"products\", store: true },\n collections: { segment: \"collections\", store: true },\n \"product-categories\": { segment: \"categories\", store: true },\n \"product-brands\": { segment: \"brands\", store: true },\n };\n\n /**\n * Fetch any sitemap resource. Returns slug/url, title/name, image (where\n * the content type has one) and `updatedAt` for `lastModified`.\n */\n function fetchSitemap<R extends SitemapResource>(\n siteId: string,\n resource: R,\n params: { page?: number; limit?: number } = {},\n options?: FetchOptions,\n ): Promise<PaginatedResponse<SitemapResourceMap[R]>> {\n const { segment, store } = SITEMAP_ROUTES[resource];\n const namespace = store ? \"store\" : \"cms\";\n const query = buildQueryString(params);\n return cmsFetchPaginated<SitemapResourceMap[R]>(\n `/api/public/${namespace}/${siteId}/sitemap/${segment}/${query ? `?${query}` : \"\"}`,\n {\n revalidate: CACHE.STATIC,\n tags: [\"sitemap\", `sitemap-${resource}`],\n ...options,\n },\n );\n }\n\n return {\n // Default page size for list endpoints (categories, team, brands, testimonials, etc.)\n LIST_DEFAULT_LIMIT,\n // Header, Footer, Site Config\n fetchHeader,\n fetchFooter,\n fetchSiteConfig,\n // Pages\n fetchPages,\n fetchPageByUrl,\n fetchPageByType,\n // About\n fetchAboutUs,\n // Services\n fetchServices,\n fetchServiceBySlug,\n // Blogs\n fetchBlogs,\n fetchBlogBySlug,\n fetchBlogById,\n // Categories\n fetchCategories,\n // Team Members\n fetchTeamMembers,\n fetchTeamMembersByCategory,\n // Albums\n fetchAlbums,\n fetchAlbumItems,\n // Brands\n fetchBrandGroups,\n fetchBrands,\n // Testimonials\n fetchTestimonials,\n // Events\n fetchEvents,\n fetchEventBySlug,\n // FAQ Groups\n fetchFaqGroups,\n fetchFaqs,\n // Redirects\n fetchRedirects,\n resolveRedirect,\n reportRedirect404,\n // Contact\n submitContactForm,\n fetchContactConfig,\n // Store\n fetchStoreSettings,\n fetchProductCategories,\n fetchProductBrands,\n fetchProducts,\n fetchProductDetail,\n fetchProductsByTag,\n fetchCollections,\n fetchCollectionDetail,\n fetchCollectionDetailById,\n placeOrder,\n // Sitemap\n fetchSitemap,\n fetchSitemapBlogs,\n fetchSitemapPages,\n fetchSitemapProducts,\n fetchSitemapCollections,\n // Generic fetch utilities\n fetch: cmsFetch,\n fetchPaginated: cmsFetchPaginated,\n utils: {\n buildQueryString,\n },\n };\n}\n","export const ICON_NAMES = [\n \"Home\",\n \"User\",\n \"Settings\",\n \"Mail\",\n \"Bell\",\n \"Calendar\",\n \"Star\",\n \"Heart\",\n \"Bookmark\",\n \"Search\",\n \"Filter\",\n \"Download\",\n \"Upload\",\n \"Trash\",\n \"Edit\",\n \"Plus\",\n \"Minus\",\n \"Check\",\n \"X\",\n \"ChevronRight\",\n \"ChevronLeft\",\n \"ChevronUp\",\n \"ChevronDown\",\n \"ChevronsUpDown\",\n \"ArrowRight\",\n \"ArrowLeft\",\n \"ArrowUp\",\n \"ArrowDown\",\n \"File\",\n \"Folder\",\n \"Image\",\n \"Video\",\n \"Music\",\n \"Lock\",\n \"Unlock\",\n \"Eye\",\n \"EyeOff\",\n \"Sun\",\n \"Moon\",\n \"Cloud\",\n \"Zap\",\n \"Activity\",\n \"TrendingUp\",\n \"TrendingDown\",\n \"BarChart\",\n \"PieChart\",\n \"Database\",\n \"Server\",\n \"Wifi\",\n \"Battery\",\n \"Camera\",\n \"Mic\",\n \"Phone\",\n \"MessageSquare\",\n \"Send\",\n \"Share\",\n \"Link\",\n \"ExternalLink\",\n \"Globe\",\n \"MapPin\",\n \"Users\",\n \"ShoppingCart\",\n \"CreditCard\",\n \"Package\",\n \"Briefcase\",\n \"Target\",\n \"Flag\",\n \"Clipboard\",\n \"List\",\n \"Grid\",\n \"Layout\",\n \"Layers\",\n \"Copy\",\n \"Save\",\n \"RefreshCw\",\n \"Maximize\",\n \"Code\",\n \"AlertCircle\",\n \"Info\",\n \"HelpCircle\",\n \"CheckCircle\",\n \"XCircle\",\n \"Menu\",\n \"MoreVertical\",\n \"MoreHorizontal\",\n \"PlayCircle\",\n \"PauseCircle\",\n \"LogIn\",\n \"LogOut\",\n \"UserPlus\",\n \"UserMinus\",\n \"Tag\",\n \"Award\",\n \"Gift\",\n \"Truck\",\n \"Clock\",\n \"Handshake\",\n \"Stethoscope\",\n \"Microscope\",\n \"GraduationCap\",\n \"BookOpen\",\n \"Building2\",\n \"Trees\",\n \"HeartHandshake\",\n \"Brain\",\n \"Lightbulb\",\n] as const;\n\nexport type IconName = (typeof ICON_NAMES)[number];\n"],"mappings":"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GAC7C,SACmD;EACnD,MAAM,EAAE,SAAS,UAAU,eAAe;EAC1C,MAAM,YAAY,QAAQ,UAAU;EACpC,MAAM,QAAQ,iBAAiB,MAAM;EACrC,OAAO,kBACL,eAAe,UAAU,GAAG,OAAO,WAAW,QAAQ,GAAG,QAAQ,IAAI,UAAU,MAC/E;GACE,YAAY,MAAM;GAClB,MAAM,CAAC,WAAW,WAAW,UAAU;GACvC,GAAG;EACL,CACF;CACF;CAEA,OAAO;EAEL;EAEA;EACA;EACA;EAEA;EACA;EACA;EAEA;EAEA;EACA;EAEA;EACA;EACA;EAEA;EAEA;EACA;EAEA;EACA;EAEA;EACA;EAEA;EAEA;EACA;EAEA;EACA;EAEA;EACA;EACA;EAEA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EAEA,OAAO;EACP,gBAAgB;EAChB,OAAO,EACL,iBACF;CACF;AACF;;;AC3rCA,MAAa,aAAa;CACxB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../src/constants/pageTypes.ts","../src/constants/index.ts","../src/types/contact.ts","../src/core/client.ts","../src/types/icon.ts"],"sourcesContent":["/**\n * Page type identifiers. Mirrors cms-backend/src/constants/pageTypes.ts.\n *\n * `pageTypes` are the singleton types — a site may have at most one page of\n * each, enforced on create by the backend (cms/page/page.routes.ts). Attempting\n * a second one is rejected with \"A page with type \"<type>\" already exists for\n * this site\". `custom` is the only repeatable type.\n */\nexport const pageTypes = [\n \"home\",\n \"about\",\n \"contact\",\n \"services\",\n \"blog\",\n \"team\",\n \"gallery\",\n \"events\",\n \"clients-partners\",\n \"testimonial\",\n \"faq\",\n] as const;\n\n/** The full set accepted by the backend's page validator. */\nexport const allPageTypes = [...pageTypes, \"custom\"] as const;\n\nexport type PageType = (typeof allPageTypes)[number];\n","export * from \"./pageTypes\";\n\nexport const PAGINATION = {\n DEFAULT_PAGE: 1,\n DEFAULT_LIMIT: 10,\n LIST_DEFAULT_LIMIT: 20,\n BLOGS_PER_PAGE: 9,\n EVENTS_PER_PAGE: 9,\n ALBUMS_PER_PAGE: 9,\n MAX_ITEMS_FOR_SSG: 200,\n} as const;\n\nexport const SEARCH = {\n DEBOUNCE_MS: 500,\n MIN_QUERY_LENGTH: 2,\n} as const;\n\nexport const CACHE = {\n NO_CACHE: 0,\n SHORT: 60, // 1 minute\n MEDIUM: 300, // 5 minutes\n LONG: 3600, // 1 hour\n STATIC: 86400, // 24 hours\n} as const;\n\nexport const ANIMATION = {\n FAST: 0.2,\n NORMAL: 0.3,\n SLOW: 0.6,\n} as const;\n\nexport const CONTACT_SUBJECTS = [\n \"General Inquiry\",\n \"Project Proposal\",\n \"Careers\",\n \"Other\",\n] as const;\n\nexport const HTTP_STATUS = {\n OK: 200,\n CREATED: 201,\n BAD_REQUEST: 400,\n UNAUTHORIZED: 401,\n FORBIDDEN: 403,\n NOT_FOUND: 404,\n INTERNAL_ERROR: 500,\n} as const;\n\nexport const MEDIA = {\n IMAGE_EXTENSIONS: [\".jpg\", \".jpeg\", \".png\", \".gif\", \".webp\", \".svg\"],\n VIDEO_EXTENSIONS: [\".mp4\", \".webm\", \".ogg\"],\n MAX_IMAGE_SIZE: 5 * 1024 * 1024,\n} as const;\n","export interface ContactPayload {\n name: string;\n email?: string | null;\n subject?: string | null;\n message: string;\n type?: string;\n /**\n * Cloudflare Turnstile token from the widget on your form.\n *\n * Required whenever the site has Turnstile enabled — check with\n * `fetchContactConfig(siteId)`. Submitting without one is rejected with 403\n * (`CmsError`), and the token is single-use: on a failed submit, reset the\n * widget before retrying rather than resending the same value.\n */\n turnstile_token?: string;\n}\n\nexport interface Contact extends ContactPayload {\n id: string;\n site_id: string;\n is_read: boolean;\n created_at: string;\n updated_at: string;\n}\n\n/**\n * Public Turnstile settings for a site's contact form, from\n * GET /:site_id/contact-config/.\n *\n * Named to avoid colliding with `ContactConfig` in ./site-config, which is the\n * site's displayed contact details (phone, email, socials) and unrelated.\n *\n * `enabled` with a null `site_key` means the site is misconfigured: the widget\n * cannot render and submissions will be rejected. Treat it as \"do not show the\n * form\" rather than \"no captcha needed\".\n */\nexport interface PublicContactConfig {\n turnstile: {\n enabled: boolean;\n site_key: string | null;\n };\n}\n\n/** Attachment caps enforced by the API; mirrored here to fail fast client-side. */\nexport const MAX_CONTACT_ATTACHMENTS = 3;\n/**\n * Total attachment budget, measured on RAW bytes.\n *\n * Attachments are forwarded onto the notification email, so the ceiling is\n * Cloudflare Email's 5 MiB message limit — but the wire format is base64, 4/3\n * the size. 3 MiB raw leaves headroom; 4 MiB encoded to ~5.33 MiB and was\n * already over. Keep in step with MAX_CONTACT_ATTACHMENTS_TOTAL_BYTES in\n * cms-backend/src/constants/limits.ts.\n */\nexport const MAX_CONTACT_ATTACHMENTS_TOTAL_BYTES = 3 * 1024 * 1024;\nexport const CONTACT_ATTACHMENT_MIME_ALLOWLIST: readonly string[] = [\n \"application/pdf\",\n \"image/png\",\n \"image/jpeg\",\n \"image/webp\",\n \"image/gif\",\n \"text/plain\",\n \"application/msword\",\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n];\n","import { CACHE, PAGINATION } from \"../constants\";\nimport type { PaginatedResponse } from \"../types/pagination\";\nimport type { Header } from \"../types/header\";\nimport type { Footer } from \"../types/footer\";\nimport type { SiteConfig } from \"../types/site-config\";\nimport type { Page, PageListItem } from \"../types/cms-page\";\nimport type { PageType } from \"../constants/pageTypes\";\nimport type { AboutUsData } from \"../types/about\";\nimport type { Service } from \"../types/service\";\nimport type { Blog } from \"../types/blog\";\nimport type { Category } from \"../types/category\";\nimport type { TeamMember } from \"../types/team-member\";\nimport type { Album, AlbumItem } from \"../types/album\";\nimport type { BrandGroup, Brand } from \"../types/brand\";\nimport type { Testimonial } from \"../types/testimonials\";\nimport type { Event } from \"../types/event\";\nimport type { Faq } from \"../types/faq\";\nimport type { FaqGroup } from \"../types/faq-group\";\nimport type { Redirect, Redirect404Log, ResolvedRedirect } from \"../types/redirect\";\nimport type {\n ContactPayload,\n Contact,\n PublicContactConfig,\n} from \"../types/contact\";\nimport {\n MAX_CONTACT_ATTACHMENTS,\n MAX_CONTACT_ATTACHMENTS_TOTAL_BYTES,\n CONTACT_ATTACHMENT_MIME_ALLOWLIST,\n} from \"../types/contact\";\nimport type { Product, ProductListItem } from \"../types/product\";\nimport type { ProductCategory } from \"../types/product-category\";\nimport type { ProductBrand } from \"../types/product-brand\";\nimport type { Collection, CollectionDetail } from \"../types/collection\";\nimport type { Order, PlaceOrderPayload } from \"../types/order\";\nimport type { StoreSettings } from \"../types/store-setting\";\nimport type {\n SitemapBlogItem,\n SitemapPageItem,\n SitemapProductItem,\n SitemapCollectionItem,\n SitemapResource,\n SitemapResourceMap,\n} from \"../types/sitemap\";\n\nexport interface FetchOptions extends RequestInit {\n revalidate?: number;\n tags?: string[];\n retries?: number;\n}\n\nexport interface CmsClientConfig {\n baseUrl: string;\n defaultOptions?: FetchOptions;\n}\n\nexport class CmsError extends Error {\n constructor(\n public message: string,\n public status?: number,\n public url?: string,\n ) {\n super(message);\n this.name = \"CmsError\";\n }\n}\n\nconst sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));\n\nexport function createCmsClient(config: CmsClientConfig) {\n const { baseUrl, defaultOptions = {} } = config;\n\n async function cmsFetch<T>(\n endpoint: string,\n options: FetchOptions = {},\n ): Promise<T | null> {\n const url = `${baseUrl}${endpoint}`;\n const {\n revalidate = CACHE.NO_CACHE,\n tags,\n retries = 1,\n ...rest\n } = { ...defaultOptions, ...options };\n\n const fetchConfig: RequestInit & {\n next?: { revalidate?: number; tags?: string[] };\n } = {\n ...rest,\n next: {\n revalidate,\n ...(tags && { tags }),\n },\n };\n\n for (let attempt = 0; attempt <= retries; attempt++) {\n try {\n const response = await fetch(url, fetchConfig);\n\n if (!response.ok) {\n // Retry on transient server errors (502, 503, 504)\n if (attempt < retries && [502, 503, 504].includes(response.status)) {\n await sleep(Math.pow(2, attempt) * 1000);\n continue;\n }\n\n let errorMsg = `API request failed: ${response.status} ${url}`;\n try {\n const body = await response.json();\n if (body?.message) errorMsg = body.message;\n } catch {\n // body not JSON, keep fallback\n }\n throw new CmsError(errorMsg, response.status, url);\n }\n\n // 204 / empty body — nothing to parse\n if (response.status === 204) {\n return null;\n }\n\n const result = await response.json();\n return result.data ?? result;\n } catch (error) {\n if (error instanceof CmsError) throw error;\n\n if (attempt < retries) {\n await sleep(Math.pow(2, attempt) * 1000);\n continue;\n }\n\n const msg =\n error instanceof Error ? error.message : String(error);\n throw new CmsError(`Request failed: ${msg}`, undefined, url);\n }\n }\n\n throw new CmsError(`Request failed after ${retries + 1} attempts`, undefined, url);\n }\n\n async function cmsFetchPaginated<T>(\n endpoint: string,\n options: FetchOptions = {},\n ): Promise<PaginatedResponse<T>> {\n const url = `${baseUrl}${endpoint}`;\n const {\n revalidate = CACHE.NO_CACHE,\n tags,\n retries = 1,\n ...rest\n } = { ...defaultOptions, ...options };\n\n const fetchConfig: RequestInit & {\n next?: { revalidate?: number; tags?: string[] };\n } = {\n ...rest,\n next: {\n revalidate,\n ...(tags && { tags }),\n },\n };\n\n for (let attempt = 0; attempt <= retries; attempt++) {\n try {\n const response = await fetch(url, fetchConfig);\n\n if (!response.ok) {\n if (attempt < retries && [502, 503, 504].includes(response.status)) {\n await sleep(Math.pow(2, attempt) * 1000);\n continue;\n }\n\n let errorMsg = `API request failed: ${response.status} ${url}`;\n try {\n const body = await response.json();\n if (body?.message) errorMsg = body.message;\n } catch {\n // body not JSON, keep fallback\n }\n throw new CmsError(errorMsg, response.status, url);\n }\n\n return await response.json();\n } catch (error) {\n if (error instanceof CmsError) throw error;\n\n if (attempt < retries) {\n await sleep(Math.pow(2, attempt) * 1000);\n continue;\n }\n\n const msg =\n error instanceof Error ? error.message : String(error);\n throw new CmsError(`Request failed: ${msg}`, undefined, url);\n }\n }\n\n throw new CmsError(`Request failed after ${retries + 1} attempts`, undefined, url);\n }\n\n function buildQueryString(\n params: Record<string, string | number | string[] | number[] | undefined | null>,\n ): string {\n const query = new URLSearchParams();\n Object.entries(params).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n if (Array.isArray(value)) {\n value.forEach((v) => query.append(key, String(v)));\n } else {\n query.append(key, String(value));\n }\n }\n });\n return query.toString();\n }\n\n // Default page size for list endpoints (categories, team, brands, testimonials,\n // faq-groups, faqs). Matches the backend's getPaginationParamsWithoutLimit(c, 20).\n // Album-items is NOT one of these: it uses getPaginationParams(c, 100), so its\n // server-side default is 10 and callers should pass an explicit `limit`.\n const LIST_DEFAULT_LIMIT = PAGINATION.LIST_DEFAULT_LIMIT;\n\n // ============================================================================\n // Header, Footer, Site Config\n // ============================================================================\n\n function fetchHeader(\n siteId: string,\n options?: FetchOptions,\n ): Promise<Header | null> {\n return cmsFetch<Header>(`/api/public/cms/${siteId}/header/`, {\n revalidate: CACHE.MEDIUM,\n tags: [\"header\"],\n ...options,\n });\n }\n\n function fetchFooter(\n siteId: string,\n options?: FetchOptions,\n ): Promise<Footer | null> {\n return cmsFetch<Footer>(`/api/public/cms/${siteId}/footer/`, {\n revalidate: CACHE.MEDIUM,\n tags: [\"footer\"],\n ...options,\n });\n }\n\n function fetchSiteConfig(\n siteId: string,\n options?: FetchOptions,\n ): Promise<SiteConfig | null> {\n return cmsFetch<SiteConfig>(`/api/public/cms/${siteId}/site-config/`, {\n revalidate: CACHE.MEDIUM,\n tags: [\"site-config\"],\n ...options,\n });\n }\n\n // ============================================================================\n // Pages\n // ============================================================================\n\n function fetchPages(\n siteId: string,\n params: { page?: number } = {},\n options?: FetchOptions,\n ): Promise<PaginatedResponse<PageListItem>> {\n const query = buildQueryString(params);\n return cmsFetchPaginated<PageListItem>(\n `/api/public/cms/${siteId}/page/?${query}`,\n {\n revalidate: CACHE.SHORT,\n tags: [\"pages\"],\n ...options,\n },\n );\n }\n\n async function fetchPageByUrl(\n siteId: string,\n urlPath: string,\n options?: FetchOptions,\n ): Promise<Page | null> {\n const targetUrl =\n urlPath === \"/\" || urlPath === \"\"\n ? \"/\"\n : `/${urlPath.replace(/^\\/|\\/$/g, \"\")}`;\n\n return cmsFetch<Page>(\n `/api/public/cms/${siteId}/page/by-url/?url=${encodeURIComponent(targetUrl)}`,\n {\n revalidate: CACHE.SHORT,\n tags: [\"pages\", `page-${targetUrl || \"root\"}`],\n ...options,\n },\n );\n }\n\n /**\n * The site's single published page of a given type, with its sections — the\n * same payload as `fetchPageByUrl`. Prefer this when you know which kind of\n * page you want but not its url, since an editor can rename the url at any\n * time. Returns null when the site has no published page of that type.\n */\n async function fetchPageByType(\n siteId: string,\n pageType: PageType,\n options?: FetchOptions,\n ): Promise<Page | null> {\n return cmsFetch<Page>(\n `/api/public/cms/${siteId}/page/by-type/${encodeURIComponent(pageType)}/`,\n {\n revalidate: CACHE.SHORT,\n tags: [\"pages\", `page-type-${pageType}`],\n ...options,\n },\n );\n }\n\n // ============================================================================\n // About Us\n // ============================================================================\n\n function fetchAboutUs(\n siteId: string,\n options?: FetchOptions,\n ): Promise<AboutUsData | null> {\n return cmsFetch<AboutUsData>(`/api/public/cms/${siteId}/about-us/`, {\n revalidate: CACHE.MEDIUM,\n tags: [\"about\"],\n ...options,\n });\n }\n\n // ============================================================================\n // Services\n // ============================================================================\n\n async function fetchServices(\n siteId: string,\n params: { page?: number; limit?: number } = {},\n options?: FetchOptions,\n ): Promise<PaginatedResponse<Service>> {\n const query = buildQueryString(params);\n return cmsFetchPaginated<Service>(\n `/api/public/cms/${siteId}/services/${query ? `?${query}` : \"\"}`,\n {\n revalidate: CACHE.SHORT,\n tags: [\"services\"],\n ...options,\n },\n );\n }\n\n function fetchServiceBySlug(\n siteId: string,\n slug: string,\n options?: FetchOptions,\n ): Promise<Service | null> {\n return cmsFetch<Service>(`/api/public/cms/${siteId}/services/${slug}`, {\n revalidate: CACHE.SHORT,\n tags: [\"services\", `service-${slug}`],\n ...options,\n });\n }\n\n // ============================================================================\n // Blogs\n // ============================================================================\n\n function fetchBlogs(\n siteId: string,\n params: { page?: number; limit?: number; search?: string } = {},\n options?: FetchOptions,\n ): Promise<PaginatedResponse<Blog>> {\n const query = buildQueryString(params);\n return cmsFetchPaginated<Blog>(`/api/public/cms/${siteId}/blog/?${query}`, {\n revalidate: CACHE.SHORT,\n tags: [\"blogs\"],\n ...options,\n });\n }\n\n function fetchBlogBySlug(\n siteId: string,\n slug: string,\n options?: FetchOptions,\n ): Promise<Blog | null> {\n return cmsFetch<Blog>(`/api/public/cms/${siteId}/blog/${slug}`, {\n revalidate: CACHE.SHORT,\n tags: [\"blogs\", `blog-${slug}`],\n ...options,\n });\n }\n\n // Backwards-compatible alias. Backend route resolves by slug.\n function fetchBlogById(\n siteId: string,\n idOrSlug: number | string,\n options?: FetchOptions,\n ): Promise<Blog | null> {\n return fetchBlogBySlug(siteId, String(idOrSlug), options);\n }\n\n // ============================================================================\n // Categories\n // ============================================================================\n\n function fetchCategories(\n siteId: string,\n params: { page?: number; limit?: number } = {},\n options?: FetchOptions,\n ): Promise<PaginatedResponse<Category>> {\n const query = buildQueryString(params);\n return cmsFetchPaginated<Category>(\n `/api/public/cms/${siteId}/categories/?${query}`,\n {\n revalidate: CACHE.MEDIUM,\n tags: [\"categories\"],\n ...options,\n },\n );\n }\n\n // ============================================================================\n // Team Members\n // ============================================================================\n\n function fetchTeamMembers(\n siteId: string,\n params: { page?: number; limit?: number } = {},\n options?: FetchOptions,\n ): Promise<PaginatedResponse<TeamMember>> {\n const query = buildQueryString(params);\n return cmsFetchPaginated<TeamMember>(\n `/api/public/cms/${siteId}/team-members/?${query}`,\n {\n revalidate: CACHE.MEDIUM,\n tags: [\"team\"],\n ...options,\n },\n );\n }\n\n function fetchTeamMembersByCategory(\n siteId: string,\n params: { categoryId: string; page?: number; limit?: number },\n options?: FetchOptions,\n ): Promise<PaginatedResponse<TeamMember>> {\n const query = buildQueryString({\n category_id: params.categoryId,\n page: params.page,\n limit: params.limit,\n });\n return cmsFetchPaginated<TeamMember>(\n `/api/public/cms/${siteId}/team-members/?${query}`,\n {\n revalidate: CACHE.MEDIUM,\n tags: [\"team\", `team-category-${params.categoryId}`],\n ...options,\n },\n );\n }\n\n // ============================================================================\n // Albums\n // ============================================================================\n\n function fetchAlbums(\n siteId: string,\n params: { page?: number; limit?: number; search?: string } = {},\n options?: FetchOptions,\n ): Promise<PaginatedResponse<Album>> {\n const query = buildQueryString(params);\n return cmsFetchPaginated<Album>(\n `/api/public/cms/${siteId}/albums/?${query}`,\n {\n revalidate: CACHE.SHORT,\n tags: [\"albums\"],\n ...options,\n },\n );\n }\n\n function fetchAlbumItems(\n siteId: string,\n params: {\n /** Album slug. */\n album?: string;\n /** Comma-separated list of album IDs (e.g., \"id1,id2\") */\n album_id?: string;\n page?: number;\n /**\n * Defaults to 10 server-side (max 100) — pass an explicit value to get a\n * whole album, or several albums' worth for an album-group section.\n */\n limit?: number;\n },\n options?: FetchOptions,\n ): Promise<PaginatedResponse<AlbumItem>> {\n const query = buildQueryString(params);\n return cmsFetchPaginated<AlbumItem>(\n `/api/public/cms/${siteId}/albums/album-items/?${query}`,\n {\n revalidate: CACHE.SHORT,\n tags: [\"album-items\"],\n ...options,\n },\n );\n }\n\n // ============================================================================\n // Brands\n // ============================================================================\n\n function fetchBrandGroups(\n siteId: string,\n params: { page?: number; limit?: number } = {},\n options?: FetchOptions,\n ): Promise<PaginatedResponse<BrandGroup>> {\n const query = buildQueryString(params);\n return cmsFetchPaginated<BrandGroup>(\n `/api/public/cms/${siteId}/brand-groups/?${query}`,\n {\n revalidate: CACHE.MEDIUM,\n tags: [\"brand-groups\"],\n ...options,\n },\n );\n }\n\n function fetchBrands(\n siteId: string,\n params: { group?: string; group_id?: string; page?: number; limit?: number },\n options?: FetchOptions,\n ): Promise<PaginatedResponse<Brand>> {\n const query = buildQueryString(params);\n return cmsFetchPaginated<Brand>(\n `/api/public/cms/${siteId}/brand-groups/brands/?${query}`,\n {\n revalidate: CACHE.MEDIUM,\n tags: [\"brands\"],\n ...options,\n },\n );\n }\n\n // ============================================================================\n // Testimonials\n // ============================================================================\n\n function fetchTestimonials(\n siteId: string,\n params?: { type?: \"testimonial\" | \"review\" | string; page?: number; limit?: number },\n options?: FetchOptions,\n ): Promise<PaginatedResponse<Testimonial>> {\n const query = buildQueryString({\n type: params?.type,\n page: params?.page,\n limit: params?.limit,\n });\n return cmsFetchPaginated<Testimonial>(\n `/api/public/cms/${siteId}/testimonials/?${query}`,\n {\n revalidate: CACHE.MEDIUM,\n tags: [\"testimonials\"],\n ...options,\n },\n );\n }\n\n // ============================================================================\n // Events\n // ============================================================================\n\n function fetchEvents(\n siteId: string,\n params: { page?: number; limit?: number; search?: string } = {},\n options?: FetchOptions,\n ): Promise<PaginatedResponse<Event>> {\n const query = buildQueryString(params);\n return cmsFetchPaginated<Event>(\n `/api/public/cms/${siteId}/events/?${query}`,\n {\n revalidate: CACHE.SHORT,\n tags: [\"events\"],\n ...options,\n },\n );\n }\n\n function fetchEventBySlug(\n siteId: string,\n slug: string,\n options?: FetchOptions,\n ): Promise<Event | null> {\n return cmsFetch<Event>(`/api/public/cms/${siteId}/events/${slug}`, {\n revalidate: CACHE.SHORT,\n tags: [\"events\", `event-${slug}`],\n ...options,\n });\n }\n\n // ============================================================================\n // FAQ Groups\n // ============================================================================\n\n function fetchFaqGroups(\n siteId: string,\n params: { page?: number; limit?: number } = {},\n options?: FetchOptions,\n ): Promise<PaginatedResponse<FaqGroup>> {\n const query = buildQueryString(params);\n return cmsFetchPaginated<FaqGroup>(\n `/api/public/cms/${siteId}/faq-groups/?${query}`,\n {\n revalidate: CACHE.MEDIUM,\n tags: [\"faq-groups\"],\n ...options,\n },\n );\n }\n\n /**\n * Public Turnstile settings for the site's contact form.\n *\n * Call this before rendering the form: when `turnstile.enabled` is true the\n * widget must be rendered with `turnstile.site_key` and its token passed to\n * `submitContactForm`, or every submission is rejected.\n */\n function fetchContactConfig(\n siteId: string,\n options?: FetchOptions,\n ): Promise<PublicContactConfig | null> {\n return cmsFetch<PublicContactConfig>(\n `/api/public/cms/${siteId}/contact-config/`,\n {\n revalidate: CACHE.SHORT,\n tags: [\"contact-config\"],\n ...options,\n },\n );\n }\n\n /**\n * Submit the contact form.\n *\n * Unlike the read methods, this THROWS `CmsError` on a rejection rather than\n * returning null — a form needs to tell \"captcha failed, reset the widget\"\n * (403) apart from \"rate limited\" (429) and a network blip, and a single\n * `null` cannot carry that. `error.status` holds the HTTP status.\n *\n * Pass `attachments` to send files; the request then goes out as multipart\n * instead of JSON. Caps are enforced server-side and pre-checked here.\n */\n async function submitContactForm(\n siteId: string,\n payload: ContactPayload,\n attachments?: File[],\n options?: FetchOptions,\n ): Promise<Contact> {\n const url = `${baseUrl}/api/public/cms/${siteId}/contact/`;\n\n if (attachments?.length) {\n if (attachments.length > MAX_CONTACT_ATTACHMENTS) {\n throw new CmsError(\n `At most ${MAX_CONTACT_ATTACHMENTS} attachments are allowed`,\n 400,\n url,\n );\n }\n const totalBytes = attachments.reduce((sum, f) => sum + f.size, 0);\n if (totalBytes > MAX_CONTACT_ATTACHMENTS_TOTAL_BYTES) {\n throw new CmsError(\n `Attachments exceed the ${\n MAX_CONTACT_ATTACHMENTS_TOTAL_BYTES / (1024 * 1024)\n } MiB total size limit`,\n 400,\n url,\n );\n }\n for (const f of attachments) {\n if (!CONTACT_ATTACHMENT_MIME_ALLOWLIST.includes(f.type)) {\n throw new CmsError(\n `Attachment type not allowed: ${f.type || \"unknown\"}`,\n 400,\n url,\n );\n }\n }\n }\n\n let body: BodyInit;\n const headers: Record<string, string> = {};\n if (attachments?.length) {\n // multipart — the runtime must set Content-Type so the boundary is right,\n // so no Content-Type header is set here.\n const form = new FormData();\n for (const [key, value] of Object.entries(payload)) {\n if (value !== undefined && value !== null) form.append(key, String(value));\n }\n for (const file of attachments) form.append(\"attachments\", file, file.name);\n body = form;\n } else {\n headers[\"Content-Type\"] = \"application/json\";\n body = JSON.stringify(payload);\n }\n\n // No retries: the body may be a consumed stream, a resend would duplicate\n // the submission, and the one retryable-looking status here (503, a\n // misconfigured Turnstile) is a deployment fault that will not self-heal —\n // retrying it just burns the 1-per-60s write budget.\n let response: Response;\n try {\n response = await fetch(url, {\n ...options,\n method: \"POST\",\n headers: { ...headers, ...(options?.headers as Record<string, string>) },\n body,\n });\n } catch (error) {\n throw new CmsError(\n error instanceof Error ? error.message : \"Network request failed\",\n undefined,\n url,\n );\n }\n\n if (!response.ok) {\n // The API answers errors as { message }; fall back to the status text\n // when the body is not JSON (a proxy error page, say).\n let message = `Request failed with status ${response.status}`;\n try {\n const parsed = (await response.json()) as { message?: string };\n if (parsed?.message) message = parsed.message;\n } catch {\n // keep the fallback\n }\n throw new CmsError(message, response.status, url);\n }\n\n const result = await response.json();\n return (result.data ?? result) as Contact;\n }\n\n function fetchFaqs(\n siteId: string,\n params?: { group_id?: string; page?: number; limit?: number },\n options?: FetchOptions,\n ): Promise<PaginatedResponse<Faq>> {\n const query = buildQueryString({\n group_id: params?.group_id,\n page: params?.page,\n limit: params?.limit,\n });\n return cmsFetchPaginated<Faq>(\n `/api/public/cms/${siteId}/faqs/?${query}`,\n {\n revalidate: CACHE.MEDIUM,\n tags: [\"faqs\"],\n ...options,\n },\n );\n }\n\n // ============================================================================\n // Redirects\n // ============================================================================\n\n async function fetchRedirects(\n siteId: string,\n options?: FetchOptions,\n ): Promise<Redirect[]> {\n const result = await cmsFetch<Redirect[]>(\n `/api/public/cms/${siteId}/redirects/`,\n {\n revalidate: CACHE.SHORT,\n tags: [\"redirects\"],\n ...options,\n },\n );\n return result ?? [];\n }\n\n function resolveRedirect(\n siteId: string,\n sourcePath: string,\n options?: FetchOptions,\n ): Promise<ResolvedRedirect | null> {\n return cmsFetch<ResolvedRedirect>(\n `/api/public/cms/${siteId}/redirects/resolve/?sourcePath=${encodeURIComponent(sourcePath)}`,\n {\n revalidate: CACHE.NO_CACHE,\n tags: [\"redirects\", `redirect-${sourcePath}`],\n ...options,\n },\n );\n }\n\n function reportRedirect404(\n siteId: string,\n sourcePath: string,\n referrer?: string,\n options?: FetchOptions,\n ): Promise<Redirect404Log | null> {\n const headers = {\n \"Content-Type\": \"application/json\",\n ...(options?.headers ?? {}),\n };\n\n return cmsFetch<Redirect404Log>(\n `/api/public/cms/${siteId}/redirects/404-logs/`,\n {\n method: \"POST\",\n ...options,\n headers,\n body: JSON.stringify({\n source_path: sourcePath,\n referrer,\n }),\n revalidate: CACHE.NO_CACHE,\n tags: [\"redirects\", \"redirect-404-logs\"],\n retries: 0,\n },\n );\n }\n\n // ============================================================================\n // Store — Products, Categories, Brands, Collections, Orders\n // Note: Uses /api/public/store/ prefix (NOT /api/public/cms/)\n // ============================================================================\n\n function fetchStoreSettings(\n siteId: string,\n options?: FetchOptions,\n ): Promise<StoreSettings | null> {\n return cmsFetch<StoreSettings>(`/api/public/store/${siteId}/settings/`, {\n revalidate: CACHE.MEDIUM,\n tags: [\"store-settings\"],\n ...options,\n });\n }\n\n function fetchProductCategories(\n siteId: string,\n params: {\n page?: number;\n limit?: number;\n search?: string;\n ordering?: string;\n parent_id?: string | null;\n } = {},\n options?: FetchOptions,\n ): Promise<PaginatedResponse<ProductCategory>> {\n const query = buildQueryString(params);\n return cmsFetchPaginated<ProductCategory>(\n `/api/public/store/${siteId}/categories/${query ? `?${query}` : \"\"}`,\n {\n revalidate: CACHE.SHORT,\n tags: [\"product-categories\"],\n ...options,\n },\n );\n }\n\n function fetchProductBrands(\n siteId: string,\n params: {\n page?: number;\n limit?: number;\n search?: string;\n ordering?: string;\n } = {},\n options?: FetchOptions,\n ): Promise<PaginatedResponse<ProductBrand>> {\n const query = buildQueryString(params);\n return cmsFetchPaginated<ProductBrand>(\n `/api/public/store/${siteId}/brands/${query ? `?${query}` : \"\"}`,\n {\n revalidate: CACHE.SHORT,\n tags: [\"product-brands\"],\n ...options,\n },\n );\n }\n\n function fetchProducts(\n siteId: string,\n params: {\n page?: number;\n limit?: number;\n search?: string;\n category_id?: string;\n tag_id?: string;\n brand_id?: string;\n is_featured?: \"true\" | \"false\";\n sort?: \"price_asc\" | \"price_desc\";\n min_price?: number;\n max_price?: number;\n availability?: \"in_stock\" | \"out_of_stock\";\n } = {},\n options?: FetchOptions,\n ): Promise<PaginatedResponse<ProductListItem>> {\n const query = buildQueryString(params);\n return cmsFetchPaginated<ProductListItem>(\n `/api/public/store/${siteId}/products/?${query}`,\n {\n revalidate: CACHE.SHORT,\n tags: [\"products\"],\n ...options,\n },\n );\n }\n\n function fetchProductDetail(\n siteId: string,\n slug: string,\n options?: FetchOptions,\n ): Promise<Product | null> {\n return cmsFetch<Product>(`/api/public/store/${siteId}/products/${slug}/`, {\n revalidate: CACHE.SHORT,\n tags: [\"products\", `product-${slug}`],\n ...options,\n });\n }\n\n function fetchProductsByTag(\n siteId: string,\n tag: string,\n params: { page?: number; limit?: number } = {},\n options?: FetchOptions,\n ): Promise<PaginatedResponse<{ item: unknown; product: Product }> | null> {\n const query = buildQueryString({ tag, ...params });\n return cmsFetch<PaginatedResponse<{ item: unknown; product: Product }>>(\n `/api/public/store/${siteId}/products/by-tag/${query ? `?${query}` : \"\"}`,\n {\n revalidate: CACHE.SHORT,\n tags: [\"products\", `products-tag-${tag}`],\n ...options,\n },\n );\n }\n\n function fetchCollections(\n siteId: string,\n params: {\n page?: number;\n limit?: number;\n search?: string;\n /** Comma-separated list of collection IDs (e.g., \"id1,id2\") */\n id?: string;\n } = {},\n options?: FetchOptions,\n ): Promise<PaginatedResponse<Collection>> {\n const query = buildQueryString(params);\n return cmsFetchPaginated<Collection>(\n `/api/public/store/${siteId}/collections/${query ? `?${query}` : \"\"}`,\n {\n revalidate: CACHE.SHORT,\n tags: [\"collections\"],\n ...options,\n },\n );\n }\n\n function fetchCollectionDetail(\n siteId: string,\n slug: string,\n params: {\n page?: number;\n limit?: number;\n category_id?: string;\n sort?: \"name_asc\" | \"name_desc\";\n availability?: \"in_stock\" | \"out_of_stock\";\n } = {},\n options?: FetchOptions,\n ): Promise<CollectionDetail | null> {\n const query = buildQueryString(params);\n return cmsFetch<CollectionDetail>(\n `/api/public/store/${siteId}/collections/${slug}/${\n query ? `?${query}` : \"\"\n }`,\n {\n revalidate: CACHE.SHORT,\n tags: [\"collections\", `collection-${slug}`],\n ...options,\n },\n );\n }\n\n function fetchCollectionDetailById(\n siteId: string,\n id: string,\n params: {\n page?: number;\n limit?: number;\n category_id?: string;\n sort?: \"name_asc\" | \"name_desc\";\n availability?: \"in_stock\" | \"out_of_stock\";\n } = {},\n options?: FetchOptions,\n ): Promise<CollectionDetail | null> {\n const query = buildQueryString(params);\n return cmsFetch<CollectionDetail>(\n `/api/public/store/${siteId}/collections/id/${id}/${\n query ? `?${query}` : \"\"\n }`,\n {\n revalidate: CACHE.SHORT,\n tags: [\"collections\", `collection-${id}`],\n ...options,\n },\n );\n }\n\n function placeOrder(\n siteId: string,\n payload: PlaceOrderPayload,\n options?: FetchOptions,\n ): Promise<Order | null> {\n return cmsFetch<Order>(`/api/public/store/${siteId}/orders/`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(payload),\n revalidate: CACHE.NO_CACHE,\n retries: 0,\n ...options,\n });\n }\n\n // ============================================================================\n // Sitemap — public endpoints for XML sitemap generation (fetch once per day)\n // ============================================================================\n\n function fetchSitemapBlogs(\n siteId: string,\n params: { page?: number; limit?: number } = {},\n options?: FetchOptions,\n ): Promise<PaginatedResponse<SitemapBlogItem>> {\n const query = buildQueryString(params);\n return cmsFetchPaginated<SitemapBlogItem>(\n `/api/public/cms/${siteId}/sitemap/blogs/${query ? `?${query}` : \"\"}`,\n {\n revalidate: CACHE.STATIC,\n tags: [\"sitemap\", \"sitemap-blogs\"],\n ...options,\n },\n );\n }\n\n function fetchSitemapPages(\n siteId: string,\n params: { page?: number; limit?: number } = {},\n options?: FetchOptions,\n ): Promise<PaginatedResponse<SitemapPageItem>> {\n const query = buildQueryString(params);\n return cmsFetchPaginated<SitemapPageItem>(\n `/api/public/cms/${siteId}/sitemap/pages/${query ? `?${query}` : \"\"}`,\n {\n revalidate: CACHE.STATIC,\n tags: [\"sitemap\", \"sitemap-pages\"],\n ...options,\n },\n );\n }\n\n function fetchSitemapProducts(\n siteId: string,\n params: { page?: number; limit?: number } = {},\n options?: FetchOptions,\n ): Promise<PaginatedResponse<SitemapProductItem>> {\n const query = buildQueryString(params);\n return cmsFetchPaginated<SitemapProductItem>(\n `/api/public/store/${siteId}/sitemap/products/${query ? `?${query}` : \"\"}`,\n {\n revalidate: CACHE.STATIC,\n tags: [\"sitemap\", \"sitemap-products\"],\n ...options,\n },\n );\n }\n\n function fetchSitemapCollections(\n siteId: string,\n params: { page?: number; limit?: number } = {},\n options?: FetchOptions,\n ): Promise<PaginatedResponse<SitemapCollectionItem>> {\n const query = buildQueryString(params);\n return cmsFetchPaginated<SitemapCollectionItem>(\n `/api/public/store/${siteId}/sitemap/collections/${query ? `?${query}` : \"\"}`,\n {\n revalidate: CACHE.STATIC,\n tags: [\"sitemap\", \"sitemap-collections\"],\n ...options,\n },\n );\n }\n\n // Resource key -> backend path. Store resources are namespaced under\n // /store/ and their keys are prefixed to avoid colliding with the CMS\n // `categories` route, which is a different resource entirely.\n const SITEMAP_ROUTES: Record<\n SitemapResource,\n { segment: string; store: boolean }\n > = {\n blogs: { segment: \"blogs\", store: false },\n pages: { segment: \"pages\", store: false },\n services: { segment: \"services\", store: false },\n events: { segment: \"events\", store: false },\n albums: { segment: \"albums\", store: false },\n \"team-members\": { segment: \"team-members\", store: false },\n \"team-categories\": { segment: \"team-categories\", store: false },\n \"brand-groups\": { segment: \"brand-groups\", store: false },\n products: { segment: \"products\", store: true },\n collections: { segment: \"collections\", store: true },\n \"product-categories\": { segment: \"categories\", store: true },\n \"product-brands\": { segment: \"brands\", store: true },\n };\n\n /**\n * Fetch any sitemap resource. Returns slug/url, title/name, image (where\n * the content type has one) and `updatedAt` for `lastModified`.\n */\n function fetchSitemap<R extends SitemapResource>(\n siteId: string,\n resource: R,\n params: { page?: number; limit?: number } = {},\n options?: FetchOptions,\n ): Promise<PaginatedResponse<SitemapResourceMap[R]>> {\n const { segment, store } = SITEMAP_ROUTES[resource];\n const namespace = store ? \"store\" : \"cms\";\n const query = buildQueryString(params);\n return cmsFetchPaginated<SitemapResourceMap[R]>(\n `/api/public/${namespace}/${siteId}/sitemap/${segment}/${query ? `?${query}` : \"\"}`,\n {\n revalidate: CACHE.STATIC,\n tags: [\"sitemap\", `sitemap-${resource}`],\n ...options,\n },\n );\n }\n\n return {\n // Default page size for list endpoints (categories, team, brands, testimonials, etc.)\n LIST_DEFAULT_LIMIT,\n // Header, Footer, Site Config\n fetchHeader,\n fetchFooter,\n fetchSiteConfig,\n // Pages\n fetchPages,\n fetchPageByUrl,\n fetchPageByType,\n // About\n fetchAboutUs,\n // Services\n fetchServices,\n fetchServiceBySlug,\n // Blogs\n fetchBlogs,\n fetchBlogBySlug,\n fetchBlogById,\n // Categories\n fetchCategories,\n // Team Members\n fetchTeamMembers,\n fetchTeamMembersByCategory,\n // Albums\n fetchAlbums,\n fetchAlbumItems,\n // Brands\n fetchBrandGroups,\n fetchBrands,\n // Testimonials\n fetchTestimonials,\n // Events\n fetchEvents,\n fetchEventBySlug,\n // FAQ Groups\n fetchFaqGroups,\n fetchFaqs,\n // Redirects\n fetchRedirects,\n resolveRedirect,\n reportRedirect404,\n // Contact\n submitContactForm,\n fetchContactConfig,\n // Store\n fetchStoreSettings,\n fetchProductCategories,\n fetchProductBrands,\n fetchProducts,\n fetchProductDetail,\n fetchProductsByTag,\n fetchCollections,\n fetchCollectionDetail,\n fetchCollectionDetailById,\n placeOrder,\n // Sitemap\n fetchSitemap,\n fetchSitemapBlogs,\n fetchSitemapPages,\n fetchSitemapProducts,\n fetchSitemapCollections,\n // Generic fetch utilities\n fetch: cmsFetch,\n fetchPaginated: cmsFetchPaginated,\n utils: {\n buildQueryString,\n },\n };\n}\n","export const ICON_NAMES = [\n \"Home\",\n \"User\",\n \"Settings\",\n \"Mail\",\n \"Bell\",\n \"Calendar\",\n \"Star\",\n \"Heart\",\n \"Bookmark\",\n \"Search\",\n \"Filter\",\n \"Download\",\n \"Upload\",\n \"Trash\",\n \"Edit\",\n \"Plus\",\n \"Minus\",\n \"Check\",\n \"X\",\n \"ChevronRight\",\n \"ChevronLeft\",\n \"ChevronUp\",\n \"ChevronDown\",\n \"ChevronsUpDown\",\n \"ArrowRight\",\n \"ArrowLeft\",\n \"ArrowUp\",\n \"ArrowDown\",\n \"File\",\n \"Folder\",\n \"Image\",\n \"Video\",\n \"Music\",\n \"Lock\",\n \"Unlock\",\n \"Eye\",\n \"EyeOff\",\n \"Sun\",\n \"Moon\",\n \"Cloud\",\n \"Zap\",\n \"Activity\",\n \"TrendingUp\",\n \"TrendingDown\",\n \"BarChart\",\n \"PieChart\",\n \"Database\",\n \"Server\",\n \"Wifi\",\n \"Battery\",\n \"Camera\",\n \"Mic\",\n \"Phone\",\n \"MessageSquare\",\n \"Send\",\n \"Share\",\n \"Link\",\n \"ExternalLink\",\n \"Globe\",\n \"MapPin\",\n \"Users\",\n \"ShoppingCart\",\n \"CreditCard\",\n \"Package\",\n \"Briefcase\",\n \"Target\",\n \"Flag\",\n \"Clipboard\",\n \"List\",\n \"Grid\",\n \"Layout\",\n \"Layers\",\n \"Copy\",\n \"Save\",\n \"RefreshCw\",\n \"Maximize\",\n \"Code\",\n \"AlertCircle\",\n \"Info\",\n \"HelpCircle\",\n \"CheckCircle\",\n \"XCircle\",\n \"Menu\",\n \"MoreVertical\",\n \"MoreHorizontal\",\n \"PlayCircle\",\n \"PauseCircle\",\n \"LogIn\",\n \"LogOut\",\n \"UserPlus\",\n \"UserMinus\",\n \"Tag\",\n \"Award\",\n \"Gift\",\n \"Truck\",\n \"Clock\",\n \"Handshake\",\n \"Stethoscope\",\n \"Microscope\",\n \"GraduationCap\",\n \"BookOpen\",\n \"Building2\",\n \"Trees\",\n \"HeartHandshake\",\n \"Brain\",\n \"Lightbulb\",\n] as const;\n\nexport type IconName = (typeof ICON_NAMES)[number];\n"],"mappings":"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GAC7C,SACmD;EACnD,MAAM,EAAE,SAAS,UAAU,eAAe;EAC1C,MAAM,YAAY,QAAQ,UAAU;EACpC,MAAM,QAAQ,iBAAiB,MAAM;EACrC,OAAO,kBACL,eAAe,UAAU,GAAG,OAAO,WAAW,QAAQ,GAAG,QAAQ,IAAI,UAAU,MAC/E;GACE,YAAY,MAAM;GAClB,MAAM,CAAC,WAAW,WAAW,UAAU;GACvC,GAAG;EACL,CACF;CACF;CAEA,OAAO;EAEL;EAEA;EACA;EACA;EAEA;EACA;EACA;EAEA;EAEA;EACA;EAEA;EACA;EACA;EAEA;EAEA;EACA;EAEA;EACA;EAEA;EACA;EAEA;EAEA;EACA;EAEA;EACA;EAEA;EACA;EACA;EAEA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EAEA,OAAO;EACP,gBAAgB;EAChB,OAAO,EACL,iBACF;CACF;AACF;;;AC3rCA,MAAa,aAAa;CACxB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crayonscodetech/cms-sdk",
3
- "version": "1.0.11",
3
+ "version": "1.0.12",
4
4
  "description": "CMS SDK for fetching data and shared types",
5
5
  "keywords": [
6
6
  "cms",