{"version":3,"sources":["../src/client.ts","../src/context.tsx","../src/hooks/useProducts.ts","../src/hooks/useProduct.ts","../src/hooks/useCollections.ts","../src/hooks/useCart.ts","../src/hooks/useCheckout.ts","../src/hooks/useAgencyComponent.ts","../src/hooks/useCmsContent.ts"],"names":["useQuery","useMutation","useCallback","useState"],"mappings":";;;;;;;AAYO,IAAM,cAAN,MAAkB;AAAA,EAGvB,YAA6B,MAAA,EAA2B;AAA3B,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAC3B,IAAA,IAAA,CAAK,WAAW,MAAA,CAAO,OAAA,IAAW,yBAAA,EAA2B,OAAA,CAAQ,OAAO,EAAE,CAAA;AAAA,EAChF;AAAA,EAF6B,MAAA;AAAA,EAFZ,OAAA;AAAA,EAMjB,MAAM,OAAA,CAAW,IAAA,EAAc,OAAA,GAA0B,EAAC,EAAe;AACvE,IAAA,MAAM,GAAA,GAAM,IAAI,GAAA,CAAI,CAAA,EAAG,KAAK,OAAO,CAAA,EAAG,IAAI,CAAA,CAAE,CAAA;AAE5C,IAAA,IAAI,QAAQ,MAAA,EAAQ;AAClB,MAAA,KAAA,MAAW,CAAC,KAAK,KAAK,CAAA,IAAK,OAAO,OAAA,CAAQ,OAAA,CAAQ,MAAM,CAAA,EAAG;AACzD,QAAA,IAAI,KAAA,KAAU,QAAW,GAAA,CAAI,YAAA,CAAa,IAAI,GAAA,EAAK,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,MAClE;AAAA,IACF;AAEA,IAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,GAAA,CAAI,UAAS,EAAG;AAAA,MAC3C,MAAA,EAAQ,QAAQ,MAAA,IAAU,KAAA;AAAA,MAC1B,OAAA,EAAS;AAAA,QACP,WAAA,EAAa,KAAK,MAAA,CAAO,MAAA;AAAA,QACzB,cAAA,EAAgB,kBAAA;AAAA,QAChB,cAAA,EAAgB,KAAK,MAAA,CAAO;AAAA,OAC9B;AAAA,MACA,GAAI,OAAA,CAAQ,IAAA,IAAQ,IAAA,GAAO,EAAE,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,OAAA,CAAQ,IAAI,CAAA,EAAE,GAAI;AAAC,KACtE,CAAA;AAED,IAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,MAAA,MAAM,KAAA,GAAQ,MAAM,QAAA,CAAS,IAAA,EAAK,CAAE,KAAA,CAAM,OAAO,EAAE,KAAA,EAAO,EAAE,OAAA,EAAS,eAAA,IAAkB,CAAE,CAAA;AACzF,MAAA,MAAM,IAAI,MAAM,KAAA,CAAM,KAAA,EAAO,WAAW,CAAA,KAAA,EAAQ,QAAA,CAAS,MAAM,CAAA,CAAE,CAAA;AAAA,IACnE;AAEA,IAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAS,IAAA,EAAK;AACjC,IAAA,OAAO,IAAA,CAAK,IAAA;AAAA,EACd;AAAA,EAGA,MAAM,aAAa,WAAA,EAST;AACR,IAAA,IAAI;AACF,MAAA,OAAO,MAAM,IAAA,CAAK,OAAA,CAAQ,wBAAA,EAA0B;AAAA,QAClD,MAAA,EAAQ,MAAA;AAAA,QACR,MAAM,EAAE,SAAA,EAAW,IAAA,CAAK,MAAA,CAAO,WAAW,WAAA;AAAY,OACvD,CAAA;AAAA,IACH,SAAS,GAAA,EAAK;AACZ,MAAA,IAAI,eAAe,KAAA,IAAS,qBAAA,CAAsB,KAAK,GAAA,CAAI,OAAO,GAAG,OAAO,IAAA;AAC5E,MAAA,MAAM,GAAA;AAAA,IACR;AAAA,EACF;AAAA,EAGA,MAAM,iBAAA,GAAuF;AAC3F,IAAA,OAAO,IAAA,CAAK,QAAQ,yBAAA,EAA2B;AAAA,MAC7C,MAAA,EAAQ,EAAE,SAAA,EAAW,IAAA,CAAK,OAAO,SAAA;AAAU,KAC5C,CAAA;AAAA,EACH;AACF;AClEA,IAAM,YAAA,GAAe,cAAwC,IAAI,CAAA;AAEjE,IAAM,kBAAA,GAAqB,IAAI,WAAA,CAAY;AAAA,EACzC,cAAA,EAAgB;AAAA,IACd,OAAA,EAAS;AAAA,MACP,SAAA,EAAW,IAAI,EAAA,GAAK,GAAA;AAAA,MACpB,MAAA,EAAQ,KAAK,EAAA,GAAK,GAAA;AAAA,MAClB,oBAAA,EAAsB,KAAA;AAAA,MACtB,KAAA,EAAO;AAAA;AACT;AAEJ,CAAC,CAAA;AAUM,SAAS,aAAA,CAAc;AAAA,EAC5B,MAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,WAAA,GAAc,kBAAA;AAAA,EACd;AACF,CAAA,EAA2C;AACzC,EAAA,MAAM,MAAA,GAAS,OAAA;AAAA,IACb,MAAM,IAAI,WAAA,CAAY,EAAE,QAAQ,SAAA,EAAW,GAAI,OAAA,IAAW,IAAA,GAAO,EAAE,OAAA,EAAQ,GAAI,IAAK,CAAA;AAAA,IACpF,CAAC,MAAA,EAAQ,SAAA,EAAW,OAAO;AAAA,GAC7B;AAEA,EAAA,uBACE,GAAA,CAAC,YAAA,CAAa,QAAA,EAAb,EAAsB,KAAA,EAAO,EAAE,MAAA,EAAO,EACrC,QAAA,kBAAA,GAAA,CAAC,mBAAA,EAAA,EAAoB,MAAA,EAAQ,WAAA,EAC1B,UACH,CAAA,EACF,CAAA;AAEJ;AAEO,SAAS,cAAA,GAA8B;AAC5C,EAAA,MAAM,GAAA,GAAM,WAAW,YAAY,CAAA;AACnC,EAAA,IAAI,CAAC,GAAA,EAAK,MAAM,IAAI,MAAM,oDAAoD,CAAA;AAC9E,EAAA,OAAO,GAAA,CAAI,MAAA;AACb;AClDO,SAAS,YAAY,OAAA,EAAgC;AAC1D,EAAA,MAAM,SAAS,cAAA,EAAe;AAE9B,EAAA,OAAO,QAAA,CAAS;AAAA,IACd,QAAA,EAAU,CAAC,UAAA,EAAY,OAAO,CAAA;AAAA,IAC9B,OAAA,EAAS,MACP,MAAA,CAAO,OAAA,CAAwB,kBAAA,EAAoB;AAAA,MACjD,MAAA,EAAQ;AAAA,QACN,cAAc,OAAA,EAAS,YAAA;AAAA,QACvB,OAAO,OAAA,EAAS,KAAA;AAAA,QAChB,MAAM,OAAA,EAAS,IAAA;AAAA,QACf,QAAQ,OAAA,EAAS;AAAA;AACnB,KACD;AAAA,GACJ,CAAA;AACH;AAEO,SAAS,oBAAoB,OAAA,EAA8C;AAChF,EAAA,MAAM,SAAS,cAAA,EAAe;AAE9B,EAAA,OAAO,gBAAA,CAAiB;AAAA,IACtB,QAAA,EAAU,CAAC,UAAA,EAAY,UAAA,EAAY,OAAO,CAAA;AAAA,IAC1C,OAAA,EAAS,CAAC,EAAE,SAAA,GAAY,GAAE,KACxB,MAAA,CAAO,QAAwB,kBAAA,EAAoB;AAAA,MACjD,MAAA,EAAQ;AAAA,QACN,cAAc,OAAA,EAAS,YAAA;AAAA,QACvB,KAAA,EAAO,SAAS,KAAA,IAAS,EAAA;AAAA,QACzB,IAAA,EAAM,SAAA;AAAA,QACN,QAAQ,OAAA,EAAS;AAAA;AACnB,KACD,CAAA;AAAA,IACH,gBAAA,EAAkB,CAAA;AAAA,IAClB,gBAAA,EAAkB,CAAC,QAAA,EAAU,QAAA,KAC1B,QAAA,CAA4B,MAAA,MAAY,OAAA,EAAS,KAAA,IAAS,EAAA,CAAA,GAAM,QAAA,CAAS,MAAA,GAAS,CAAA,GAAI;AAAA,GAC1F,CAAA;AACH;ACpCO,SAAS,WAAW,EAAA,EAAmB;AAC5C,EAAA,MAAM,SAAS,cAAA,EAAe;AAE9B,EAAA,OAAOA,QAAAA,CAAS;AAAA,IACd,QAAA,EAAU,CAAC,SAAA,EAAW,EAAE,CAAA;AAAA,IACxB,SAAS,MAAM,MAAA,CAAO,OAAA,CAAsB,CAAA,iBAAA,EAAoB,EAAE,CAAA,CAAE,CAAA;AAAA,IACpE,OAAA,EAAS,QAAQ,EAAE;AAAA,GACpB,CAAA;AACH;ACRO,SAAS,cAAA,GAAiB;AAC/B,EAAA,MAAM,SAAS,cAAA,EAAe;AAE9B,EAAA,OAAOA,QAAAA,CAAS;AAAA,IACd,QAAA,EAAU,CAAC,aAAa,CAAA;AAAA,IACxB,OAAA,EAAS,MAAM,MAAA,CAAO,OAAA,CAA2B,qBAAqB;AAAA,GACvE,CAAA;AACH;ACNA,IAAM,QAAA,GAAW,CAAC,MAAM,CAAA;AAEjB,SAAS,OAAA,GAAU;AACxB,EAAA,MAAM,SAAS,cAAA,EAAe;AAC9B,EAAA,MAAM,cAAc,cAAA,EAAe;AACnC,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAI,SAAwB,MAAM;AACxD,IAAA,IAAI,OAAO,MAAA,KAAW,WAAA,EAAa,OAAO,IAAA;AAC1C,IAAA,OAAO,MAAA,CAAO,cAAA,CAAe,OAAA,CAAQ,YAAY,CAAA;AAAA,EACnD,CAAC,CAAA;AAED,EAAA,MAAM,EAAE,IAAA,EAAM,IAAA,EAAM,SAAA,EAAW,KAAA,KAAUA,QAAAA,CAAS;AAAA,IAChD,QAAA,EAAU,CAAC,GAAG,QAAA,EAAU,MAAM,CAAA;AAAA,IAC9B,OAAA,EAAS,MACP,MAAA,GACI,MAAA,CAAO,OAAA,CAA0B,cAAA,EAAgB,EAAE,MAAA,EAAQ,EAAE,MAAA,EAAO,EAAG,CAAA,GACvE,IAAA;AAAA,IACN,OAAA,EAAS,QAAQ,MAAM;AAAA,GACxB,CAAA;AAED,EAAA,MAAM,aAAA,GAAgB,WAAA,CAAY,CAAC,EAAA,KAAe;AAChD,IAAA,SAAA,CAAU,EAAE,CAAA;AACZ,IAAA,IAAI,OAAO,WAAW,WAAA,EAAa;AACjC,MAAA,MAAA,CAAO,cAAA,CAAe,OAAA,CAAQ,YAAA,EAAc,EAAE,CAAA;AAAA,IAChD;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,UAAU,WAAA,CAAY;AAAA,IAC1B,UAAA,EAAY,OAAO,MAAA,KAAyE;AAC1F,MAAA,MAAM,MAAA,GAAS,MAAM,MAAA,CAAO,OAAA,CAAmB,oBAAA,EAAsB;AAAA,QACnE,MAAA,EAAQ,MAAA;AAAA,QACR,IAAA,EAAM,EAAE,SAAA,EAAW,MAAA,CAAO,SAAA,EAAW,SAAA,EAAW,MAAA,CAAO,SAAA,EAAW,QAAA,EAAU,MAAA,CAAO,QAAA,IAAY,CAAA;AAAE,OAClG,CAAA;AACD,MAAA,IAAI,CAAC,MAAA,EAAQ,aAAA,CAAc,MAAA,CAAO,cAAc,CAAA;AAChD,MAAA,OAAO,MAAA;AAAA,IACT,CAAA;AAAA,IACA,SAAA,EAAW,CAAC,IAAA,KAAS;AACnB,MAAA,WAAA,CAAY,YAAA,CAAa,CAAC,GAAG,QAAA,EAAU,UAAU,IAAA,CAAK,cAAc,GAAG,IAAI,CAAA;AAAA,IAC7E;AAAA,GACD,CAAA;AAED,EAAA,MAAM,aAAa,WAAA,CAAY;AAAA,IAC7B,UAAA,EAAY,OAAO,UAAA,KAAuB;AACxC,MAAA,IAAI,CAAC,MAAA,EAAQ,MAAM,IAAI,MAAM,gBAAgB,CAAA;AAC7C,MAAA,OAAO,MAAA,CAAO,OAAA,CAAmB,CAAA,aAAA,EAAgB,MAAM,CAAA,OAAA,EAAU,UAAU,CAAA,CAAA,EAAI,EAAE,MAAA,EAAQ,QAAA,EAAU,CAAA;AAAA,IACrG,CAAA;AAAA,IACA,SAAA,EAAW,CAAC,IAAA,KAAS;AACnB,MAAA,WAAA,CAAY,aAAa,CAAC,GAAG,QAAA,EAAU,MAAM,GAAG,IAAI,CAAA;AAAA,IACtD;AAAA,GACD,CAAA;AAED,EAAA,MAAM,iBAAiB,WAAA,CAAY;AAAA,IACjC,UAAA,EAAY,OAAO,MAAA,KAAqD;AACtE,MAAA,IAAI,CAAC,MAAA,EAAQ,MAAM,IAAI,MAAM,gBAAgB,CAAA;AAC7C,MAAA,OAAO,OAAO,OAAA,CAAmB,CAAA,aAAA,EAAgB,MAAM,CAAA,OAAA,EAAU,MAAA,CAAO,UAAU,CAAA,CAAA,EAAI;AAAA,QACpF,MAAA,EAAQ,OAAA;AAAA,QACR,IAAA,EAAM,EAAE,QAAA,EAAU,MAAA,CAAO,QAAA;AAAS,OACnC,CAAA;AAAA,IACH,CAAA;AAAA,IACA,SAAA,EAAW,CAAC,IAAA,KAAS;AACnB,MAAA,WAAA,CAAY,aAAa,CAAC,GAAG,QAAA,EAAU,MAAM,GAAG,IAAI,CAAA;AAAA,IACtD;AAAA,GACD,CAAA;AAED,EAAA,MAAM,YAAA,GAAe,YAAY,YAAY;AAC3C,IAAA,IAAI,CAAC,MAAA,EAAQ;AACb,IAAA,IAAI;AACF,MAAA,MAAM,MAAA,GAAS,MAAM,MAAA,CAAO,OAAA,CAAiC,kBAAA,EAAoB;AAAA,QAC/E,MAAA,EAAQ,MAAA;AAAA,QACR,IAAA,EAAM,EAAE,MAAA;AAAO,OAChB,CAAA;AACD,MAAA,MAAA,CAAO,QAAA,CAAS,OAAO,MAAA,CAAO,WAAA;AAAA,IAChC,SAAS,GAAA,EAAK;AACZ,MAAA,OAAA,CAAQ,KAAA,CAAM,mBAAmB,GAAG,CAAA;AAAA,IACtC;AAAA,EACF,CAAA,EAAG,CAAC,MAAA,EAAQ,MAAM,CAAC,CAAA;AAEnB,EAAA,MAAM,SAAA,GAAY,YAAY,MAAM;AAClC,IAAA,SAAA,CAAU,IAAI,CAAA;AACd,IAAA,IAAI,OAAO,MAAA,KAAW,WAAA,EAAa,MAAA,CAAO,cAAA,CAAe,WAAW,YAAY,CAAA;AAChF,IAAA,WAAA,CAAY,aAAA,CAAc,EAAE,QAAA,EAAU,QAAA,EAAU,CAAA;AAAA,EAClD,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA;AAEhB,EAAA,OAAO;AAAA,IACL,MAAM,IAAA,IAAQ,IAAA;AAAA,IACd,SAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA,EAAS,CAAC,SAAA,EAAmB,SAAA,EAAoB,QAAA,KAC/C,QAAQ,WAAA,CAAY,EAAE,SAAA,EAAW,GAAI,SAAA,IAAa,IAAA,GAAO,EAAE,SAAA,EAAU,GAAI,EAAC,EAAI,GAAI,QAAA,IAAY,IAAA,GAAO,EAAE,QAAA,EAAS,GAAI,EAAC,EAAI,CAAA;AAAA,IAC3H,UAAA,EAAY,CAAC,UAAA,KAAuB,UAAA,CAAW,YAAY,UAAU,CAAA;AAAA,IACrE,cAAA,EAAgB,CAAC,UAAA,EAAoB,QAAA,KACnC,eAAe,WAAA,CAAY,EAAE,UAAA,EAAY,QAAA,EAAU,CAAA;AAAA,IACrD,YAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,GACF;AACF;ACrFO,SAAS,WAAA,GAAiC;AAC/C,EAAA,MAAM,SAAS,cAAA,EAAe;AAE9B,EAAA,MAAM,WAAWC,WAAAA,CAAY;AAAA,IAC3B,UAAA,EAAY,CAAC,MAAA,KACX,MAAA,CAAO,QAA0B,kBAAA,EAAoB;AAAA,MACnD,MAAA,EAAQ,MAAA;AAAA,MACR,IAAA,EAAM,EAAE,MAAA;AAAO,KAChB;AAAA,GACJ,CAAA;AAED,EAAA,MAAM,cAAA,GAAiBC,WAAAA;AAAA,IACrB,OAAO,MAAA,KAAmB;AACxB,MAAA,MAAM,MAAA,GAAS,MAAM,QAAA,CAAS,WAAA,CAAY,MAAM,CAAA;AAChD,MAAA,OAAO,MAAA,CAAO,WAAA;AAAA,IAChB,CAAA;AAAA,IACA,CAAC,QAAQ;AAAA,GACX;AAEA,EAAA,MAAM,kBAAA,GAAqBA,WAAAA;AAAA,IACzB,OAAO,MAAA,KAAmB;AACxB,MAAA,MAAM,GAAA,GAAM,MAAM,cAAA,CAAe,MAAM,CAAA;AACvC,MAAA,IAAI,OAAO,MAAA,KAAW,WAAA,EAAa,MAAA,CAAO,SAAS,IAAA,GAAO,GAAA;AAAA,IAC5D,CAAA;AAAA,IACA,CAAC,cAAc;AAAA,GACjB;AAEA,EAAA,OAAO;AAAA,IACL,cAAA;AAAA,IACA,kBAAA;AAAA,IACA,WAAW,QAAA,CAAS,SAAA;AAAA,IACpB,OAAO,QAAA,CAAS;AAAA,GAClB;AACF;AC7BA,IAAM,MAAA,uBAAa,GAAA,EAA8B;AAEjD,SAAS,eAAe,KAAA,EAAiD;AACvE,EAAA,MAAM,QAAA,GAAW,GAAG,KAAA,CAAM,IAAI,IAAI,KAAA,CAAM,OAAO,CAAA,CAAA,EAAI,KAAA,CAAM,UAAU,CAAA,CAAA;AACnE,EAAA,MAAM,QAAA,GAAW,MAAA,CAAO,GAAA,CAAI,QAAQ,CAAA;AACpC,EAAA,IAAI,UAAU,OAAO,QAAA;AAErB,EAAA,MAAM,OAAA,GAAU,IAAI,OAAA,CAAiB,CAAC,SAAS,MAAA,KAAW;AACxD,IAAA,IAAI,OAAO,aAAa,WAAA,EAAa;AACnC,MAAA,MAAA,CAAO,IAAI,KAAA,CAAM,kDAAkD,CAAC,CAAA;AACpE,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,iBAAA,GAAoB,UAAA,CAAW,eAAA,GAAkB,KAAA,CAAM,IAAI,CAAA;AACjE,IAAA,IAAI,iBAAA,EAAmB;AACrB,MAAA,OAAA,CAAQ,iBAAiB,CAAA;AACzB,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,MAAA,GAAS,QAAA,CAAS,aAAA,CAAc,QAAQ,CAAA;AAC9C,IAAA,MAAA,CAAO,MAAM,KAAA,CAAM,SAAA;AACnB,IAAA,MAAA,CAAO,KAAA,GAAQ,IAAA;AACf,IAAA,MAAA,CAAO,WAAA,GAAc,WAAA;AAErB,IAAA,MAAA,CAAO,SAAS,MAAM;AACpB,MAAA,MAAM,SAAA,GAAY,UAAA,CAAW,eAAA,GAAkB,KAAA,CAAM,IAAI,CAAA;AACzD,MAAA,IAAI,SAAA,UAAmB,SAAS,CAAA;AAAA,kBACpB,IAAI,KAAA,CAAM,iDAAiD,KAAA,CAAM,IAAI,EAAE,CAAC,CAAA;AAAA,IACtF,CAAA;AAEA,IAAA,MAAA,CAAO,OAAA,GAAU,MAAM,MAAA,CAAO,IAAI,MAAM,CAAA,iCAAA,EAAoC,KAAA,CAAM,SAAS,CAAA,CAAE,CAAC,CAAA;AAC9F,IAAA,QAAA,CAAS,IAAA,CAAK,YAAY,MAAM,CAAA;AAAA,EAClC,CAAC,CAAA;AAED,EAAA,MAAA,CAAO,GAAA,CAAI,UAAU,OAAO,CAAA;AAC5B,EAAA,OAAO,OAAA;AACT;AAQO,SAAS,mBAAgD,IAAA,EAA2C;AACzG,EAAA,MAAM,SAAS,cAAA,EAAe;AAE9B,EAAA,MAAM,EAAE,IAAA,EAAM,QAAA,EAAU,KAAA,EAAO,aAAA,KAAkBF,QAAAA,CAAS;AAAA,IACxD,QAAA,EAAU,CAAC,oBAAoB,CAAA;AAAA,IAC/B,OAAA,EAAS,MAAM,MAAA,CAAO,OAAA,CAA0B,6BAA6B,CAAA;AAAA,IAC7E,WAAW,EAAA,GAAK;AAAA,GACjB,CAAA;AAED,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIG,SAAwC,IAAI,CAAA;AAC9E,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,SAAuB,IAAI,CAAA;AAErD,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,QAAA,EAAU;AACf,IAAA,MAAM,KAAA,GAAQ,SAAS,UAAA,CAAW,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,SAAS,IAAI,CAAA;AAC7D,IAAA,IAAI,CAAC,KAAA,EAAO;AACV,MAAA,QAAA,CAAS,IAAI,KAAA,CAAM,CAAA,WAAA,EAAc,IAAI,mCAAmC,CAAC,CAAA;AACzE,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,SAAA,GAAY,KAAA;AAChB,IAAA,cAAA,CAAe,KAAK,CAAA,CACjB,IAAA,CAAK,CAAC,CAAA,KAAM;AACX,MAAA,IAAI,CAAC,SAAA,EAAW,YAAA,CAAa,MAAM,CAA2B,CAAA;AAAA,IAChE,CAAC,CAAA,CACA,KAAA,CAAM,CAAC,GAAA,KAAe;AACrB,MAAA,IAAI,CAAC,SAAA,EAAW,QAAA,CAAS,GAAG,CAAA;AAAA,IAC9B,CAAC,CAAA;AAEH,IAAA,OAAO,MAAM;AACX,MAAA,SAAA,GAAY,IAAA;AAAA,IACd,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,QAAA,EAAU,IAAI,CAAC,CAAA;AAEnB,EAAA,OAAO;AAAA,IACL,SAAA;AAAA,IACA,SAAA,EAAW,CAAC,QAAA,IAAY,CAAC,aAAA;AAAA,IACzB,OAAO,KAAA,IAAU;AAAA,GACnB;AACF;ACnGO,SAAS,YAAY,YAAA,EAA6B;AACvD,EAAA,MAAM,SAAS,cAAA,EAAe;AAE9B,EAAA,OAAOH,QAAAA,CAAS;AAAA,IACd,QAAA,EAAU,CAAC,KAAA,EAAO,YAAY,CAAA;AAAA,IAC9B,SAAS,MAAM,MAAA,CAAO,OAAA,CAAmB,CAAA,wBAAA,EAA2B,YAAY,CAAA,MAAA,CAAQ,CAAA;AAAA,IACxF,OAAA,EAAS,QAAQ,YAAY,CAAA;AAAA,IAC7B,SAAA,EAAW,IAAI,EAAA,GAAK;AAAA,GACrB,CAAA;AACH","file":"index.mjs","sourcesContent":["export interface TramaClientConfig {\r\n  apiKey: string;\r\n  projectId: string;\r\n  baseUrl?: string;\r\n}\r\n\r\ninterface RequestOptions {\r\n  method?: string;\r\n  body?: unknown;\r\n  params?: Record<string, string | number | boolean | undefined>;\r\n}\r\n\r\nexport class TramaClient {\r\n  private readonly baseUrl: string;\r\n\r\n  constructor(private readonly config: TramaClientConfig) {\r\n    this.baseUrl = (config.baseUrl ?? 'https://api.gotrama.com').replace(/\\/$/, '');\r\n  }\r\n\r\n  async request<T>(path: string, options: RequestOptions = {}): Promise<T> {\r\n    const url = new URL(`${this.baseUrl}${path}`);\r\n\r\n    if (options.params) {\r\n      for (const [key, value] of Object.entries(options.params)) {\r\n        if (value !== undefined) url.searchParams.set(key, String(value));\r\n      }\r\n    }\r\n\r\n    const response = await fetch(url.toString(), {\r\n      method: options.method ?? 'GET',\r\n      headers: {\r\n        'x-api-key': this.config.apiKey,\r\n        'Content-Type': 'application/json',\r\n        'x-project-id': this.config.projectId,\r\n      },\r\n      ...(options.body != null ? { body: JSON.stringify(options.body) } : {}),\r\n    });\r\n\r\n    if (!response.ok) {\r\n      const error = await response.json().catch(() => ({ error: { message: 'Unknown error' } })) as { error?: { message?: string; code?: string } };\r\n      throw new Error(error.error?.message ?? `HTTP ${response.status}`);\r\n    }\r\n\r\n    const data = await response.json() as { success: boolean; data: T };\r\n    return data.data;\r\n  }\r\n\r\n  \r\n  async verifyMember(memberToken: string): Promise<{\r\n    platformId: string;\r\n    platform: 'wix' | 'shopify' | 'webflow';\r\n    email: string | null;\r\n    firstName: string | null;\r\n    lastName: string | null;\r\n    tags: string[];\r\n    verifiedAt: string;\r\n    metadata: Record<string, unknown>;\r\n  } | null> {\r\n    try {\r\n      return await this.request('/api/v1/members/verify', {\r\n        method: 'POST',\r\n        body: { projectId: this.config.projectId, memberToken },\r\n      });\r\n    } catch (err) {\r\n      if (err instanceof Error && /invalid or expired/i.test(err.message)) return null;\r\n      throw err;\r\n    }\r\n  }\r\n\r\n  \r\n  async getCmsCollections(): Promise<Array<{ id: string; name: string; slug: string | null }>> {\r\n    return this.request('/api/v1/cms/collections', {\r\n      params: { projectId: this.config.projectId },\r\n    });\r\n  }\r\n}\r\n","// context.tsx — TramaProvider and useTramaClient hook; wraps TanStack QueryClientProvider\nimport React, { createContext, useContext, useMemo } from 'react';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport { TramaClient } from './client.js';\n\ninterface TramaContextValue {\n  client: TramaClient;\n}\n\nconst TramaContext = createContext<TramaContextValue | null>(null);\n\nconst defaultQueryClient = new QueryClient({\n  defaultOptions: {\n    queries: {\n      staleTime: 3 * 60 * 1000,\n      gcTime: 10 * 60 * 1000,\n      refetchOnWindowFocus: false,\n      retry: 2,\n    },\n  },\n});\n\nexport interface TramaProviderProps {\n  apiKey: string;\n  projectId: string;\n  baseUrl?: string;\n  queryClient?: QueryClient;\n  children: React.ReactNode;\n}\n\nexport function TramaProvider({\n  apiKey,\n  projectId,\n  baseUrl,\n  queryClient = defaultQueryClient,\n  children,\n}: TramaProviderProps): React.ReactElement {\n  const client = useMemo(\n    () => new TramaClient({ apiKey, projectId, ...(baseUrl != null ? { baseUrl } : {}) }),\n    [apiKey, projectId, baseUrl],\n  );\n\n  return (\n    <TramaContext.Provider value={{ client }}>\n      <QueryClientProvider client={queryClient}>\n        {children}\n      </QueryClientProvider>\n    </TramaContext.Provider>\n  );\n}\n\nexport function useTramaClient(): TramaClient {\n  const ctx = useContext(TramaContext);\n  if (!ctx) throw new Error('useTramaClient must be used inside <TramaProvider>');\n  return ctx.client;\n}\n","import { useQuery, useInfiniteQuery } from '@tanstack/react-query';\r\nimport { useTramaClient } from '../context.js';\r\nimport type { TramaProduct } from 'trama-types';\r\nimport type { FetchProductsOptions } from 'trama-types';\r\n\r\nexport function useProducts(options?: FetchProductsOptions) {\r\n  const client = useTramaClient();\r\n\r\n  return useQuery({\r\n    queryKey: ['products', options],\r\n    queryFn: () =>\r\n      client.request<TramaProduct[]>('/api/v1/products', {\r\n        params: {\r\n          collectionId: options?.collectionId,\r\n          limit: options?.limit,\r\n          page: options?.page,\r\n          sortBy: options?.sortBy,\r\n        },\r\n      }),\r\n  });\r\n}\r\n\r\nexport function useInfiniteProducts(options?: Omit<FetchProductsOptions, 'page'>) {\r\n  const client = useTramaClient();\r\n\r\n  return useInfiniteQuery({\r\n    queryKey: ['products', 'infinite', options],\r\n    queryFn: ({ pageParam = 1 }) =>\r\n      client.request<TramaProduct[]>('/api/v1/products', {\r\n        params: {\r\n          collectionId: options?.collectionId,\r\n          limit: options?.limit ?? 20,\r\n          page: pageParam as number,\r\n          sortBy: options?.sortBy,\r\n        },\r\n      }),\r\n    initialPageParam: 1,\r\n    getNextPageParam: (lastPage, allPages) =>\r\n      (lastPage as TramaProduct[]).length === (options?.limit ?? 20) ? allPages.length + 1 : undefined,\r\n  });\r\n}\r\n","import { useQuery } from '@tanstack/react-query';\r\nimport { useTramaClient } from '../context.js';\r\nimport type { TramaProduct } from 'trama-types';\r\n\r\nexport function useProduct(id: string | null) {\r\n  const client = useTramaClient();\r\n\r\n  return useQuery({\r\n    queryKey: ['product', id],\r\n    queryFn: () => client.request<TramaProduct>(`/api/v1/products/${id}`),\r\n    enabled: Boolean(id),\r\n  });\r\n}\r\n","import { useQuery } from '@tanstack/react-query';\r\nimport { useTramaClient } from '../context.js';\r\nimport type { TramaCollection } from 'trama-types';\r\n\r\nexport function useCollections() {\r\n  const client = useTramaClient();\r\n\r\n  return useQuery({\r\n    queryKey: ['collections'],\r\n    queryFn: () => client.request<TramaCollection[]>('/api/v1/collections'),\r\n  });\r\n}\r\n","import { useState, useCallback } from 'react';\r\nimport { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\r\nimport { useTramaClient } from '../context.js';\r\nimport type { TramaCart } from 'trama-types';\r\n\r\nconst CART_KEY = ['cart'];\r\n\r\nexport function useCart() {\r\n  const client = useTramaClient();\r\n  const queryClient = useQueryClient();\r\n  const [cartId, setCartId] = useState<string | null>(() => {\r\n    if (typeof window === 'undefined') return null;\r\n    return window.sessionStorage.getItem('wb_cart_id');\r\n  });\r\n\r\n  const { data: cart, isLoading, error } = useQuery({\r\n    queryKey: [...CART_KEY, cartId],\r\n    queryFn: () =>\r\n      cartId\r\n        ? client.request<TramaCart | null>('/api/v1/cart', { params: { cartId } })\r\n        : null,\r\n    enabled: Boolean(cartId),\r\n  });\r\n\r\n  const persistCartId = useCallback((id: string) => {\r\n    setCartId(id);\r\n    if (typeof window !== 'undefined') {\r\n      window.sessionStorage.setItem('wb_cart_id', id);\r\n    }\r\n  }, []);\r\n\r\n  const addItem = useMutation({\r\n    mutationFn: async (params: { productId: string; variantId?: string; quantity?: number }) => {\r\n      const result = await client.request<TramaCart>('/api/v1/cart/items', {\r\n        method: 'POST',\r\n        body: { productId: params.productId, variantId: params.variantId, quantity: params.quantity ?? 1 },\r\n      });\r\n      if (!cartId) persistCartId(result.platformCartId);\r\n      return result;\r\n    },\r\n    onSuccess: (data) => {\r\n      queryClient.setQueryData([...CART_KEY, cartId ?? data.platformCartId], data);\r\n    },\r\n  });\r\n\r\n  const removeItem = useMutation({\r\n    mutationFn: async (lineItemId: string) => {\r\n      if (!cartId) throw new Error('No active cart');\r\n      return client.request<TramaCart>(`/api/v1/cart/${cartId}/items/${lineItemId}`, { method: 'DELETE' });\r\n    },\r\n    onSuccess: (data) => {\r\n      queryClient.setQueryData([...CART_KEY, cartId], data);\r\n    },\r\n  });\r\n\r\n  const updateQuantity = useMutation({\r\n    mutationFn: async (params: { lineItemId: string; quantity: number }) => {\r\n      if (!cartId) throw new Error('No active cart');\r\n      return client.request<TramaCart>(`/api/v1/cart/${cartId}/items/${params.lineItemId}`, {\r\n        method: 'PATCH',\r\n        body: { quantity: params.quantity },\r\n      });\r\n    },\r\n    onSuccess: (data) => {\r\n      queryClient.setQueryData([...CART_KEY, cartId], data);\r\n    },\r\n  });\r\n\r\n  const goToCheckout = useCallback(async () => {\r\n    if (!cartId) return;\r\n    try {\r\n      const result = await client.request<{ checkoutUrl: string }>('/api/v1/checkout', {\r\n        method: 'POST',\r\n        body: { cartId },\r\n      });\r\n      window.location.href = result.checkoutUrl;\r\n    } catch (err) {\r\n      console.error('Checkout failed', err);\r\n    }\r\n  }, [cartId, client]);\r\n\r\n  const clearCart = useCallback(() => {\r\n    setCartId(null);\r\n    if (typeof window !== 'undefined') window.sessionStorage.removeItem('wb_cart_id');\r\n    queryClient.removeQueries({ queryKey: CART_KEY });\r\n  }, [queryClient]);\r\n\r\n  return {\r\n    cart: cart ?? null,\r\n    isLoading,\r\n    error: error as Error | null,\r\n    addItem: (productId: string, variantId?: string, quantity?: number) =>\r\n      addItem.mutateAsync({ productId, ...(variantId != null ? { variantId } : {}), ...(quantity != null ? { quantity } : {}) }),\r\n    removeItem: (lineItemId: string) => removeItem.mutateAsync(lineItemId),\r\n    updateQuantity: (lineItemId: string, quantity: number) =>\r\n      updateQuantity.mutateAsync({ lineItemId, quantity }),\r\n    goToCheckout,\r\n    clearCart,\r\n    cartId,\r\n  };\r\n}\r\n","import { useMutation } from '@tanstack/react-query';\r\nimport { useCallback } from 'react';\r\nimport { useTramaClient } from '../context.js';\r\n\r\ninterface CheckoutResponse {\r\n  checkoutUrl: string;\r\n}\r\n\r\nexport interface UseCheckoutReturn {\r\n  createCheckout: (cartId: string) => Promise<string>;\r\n  redirectToCheckout: (cartId: string) => Promise<void>;\r\n  isLoading: boolean;\r\n  error: Error | null;\r\n}\r\n\r\nexport function useCheckout(): UseCheckoutReturn {\r\n  const client = useTramaClient();\r\n\r\n  const mutation = useMutation({\r\n    mutationFn: (cartId: string) =>\r\n      client.request<CheckoutResponse>('/api/v1/checkout', {\r\n        method: 'POST',\r\n        body: { cartId },\r\n      }),\r\n  });\r\n\r\n  const createCheckout = useCallback(\r\n    async (cartId: string) => {\r\n      const result = await mutation.mutateAsync(cartId);\r\n      return result.checkoutUrl;\r\n    },\r\n    [mutation],\r\n  );\r\n\r\n  const redirectToCheckout = useCallback(\r\n    async (cartId: string) => {\r\n      const url = await createCheckout(cartId);\r\n      if (typeof window !== 'undefined') window.location.href = url;\r\n    },\r\n    [createCheckout],\r\n  );\r\n\r\n  return {\r\n    createCheckout,\r\n    redirectToCheckout,\r\n    isLoading: mutation.isPending,\r\n    error: mutation.error as Error | null,\r\n  };\r\n}\r\n","import { useEffect, useState } from 'react';\r\nimport { useQuery } from '@tanstack/react-query';\r\nimport { useTramaClient } from '../context.js';\r\n\r\ninterface ComponentManifestEntry {\r\n  name: string;\r\n  version: string;\r\n  bundleUrl: string;\r\n  bundleHash: string;\r\n}\r\n\r\ninterface ManifestResponse {\r\n  components: ComponentManifestEntry[];\r\n}\r\n\r\ndeclare global {\r\n  var TramaComponents: Record<string, React.ComponentType<unknown>> | undefined;\r\n}\r\n\r\nconst loaded = new Map<string, Promise<unknown>>();\r\n\r\nfunction loadBundleOnce(entry: ComponentManifestEntry): Promise<unknown> {\r\n  const cacheKey = `${entry.name}@${entry.version}#${entry.bundleHash}`;\r\n  const existing = loaded.get(cacheKey);\r\n  if (existing) return existing;\r\n\r\n  const promise = new Promise<unknown>((resolve, reject) => {\r\n    if (typeof document === 'undefined') {\r\n      reject(new Error('useAgencyComponent: not in a browser environment'));\r\n      return;\r\n    }\r\n\r\n    const existingComponent = globalThis.TramaComponents?.[entry.name];\r\n    if (existingComponent) {\r\n      resolve(existingComponent);\r\n      return;\r\n    }\r\n\r\n    const script = document.createElement('script');\r\n    script.src = entry.bundleUrl;\r\n    script.async = true;\r\n    script.crossOrigin = 'anonymous';\r\n\r\n    script.onload = () => {\r\n      const component = globalThis.TramaComponents?.[entry.name];\r\n      if (component) resolve(component);\r\n      else reject(new Error(`Bundle loaded but did not register component: ${entry.name}`));\r\n    };\r\n\r\n    script.onerror = () => reject(new Error(`Failed to load component bundle: ${entry.bundleUrl}`));\r\n    document.head.appendChild(script);\r\n  });\r\n\r\n  loaded.set(cacheKey, promise);\r\n  return promise;\r\n}\r\n\r\nexport interface UseAgencyComponentReturn<P = Record<string, unknown>> {\r\n  Component: React.ComponentType<P> | null;\r\n  isLoading: boolean;\r\n  error: Error | null;\r\n}\r\n\r\nexport function useAgencyComponent<P = Record<string, unknown>>(name: string): UseAgencyComponentReturn<P> {\r\n  const client = useTramaClient();\r\n\r\n  const { data: manifest, error: manifestError } = useQuery({\r\n    queryKey: ['component-manifest'],\r\n    queryFn: () => client.request<ManifestResponse>('/api/v1/components/manifest'),\r\n    staleTime: 60 * 1000,\r\n  });\r\n\r\n  const [Component, setComponent] = useState<React.ComponentType<P> | null>(null);\r\n  const [error, setError] = useState<Error | null>(null);\r\n\r\n  useEffect(() => {\r\n    if (!manifest) return;\r\n    const entry = manifest.components.find((c) => c.name === name);\r\n    if (!entry) {\r\n      setError(new Error(`Component \"${name}\" is not deployed to this project`));\r\n      return;\r\n    }\r\n\r\n    let cancelled = false;\r\n    loadBundleOnce(entry)\r\n      .then((c) => {\r\n        if (!cancelled) setComponent(() => c as React.ComponentType<P>);\r\n      })\r\n      .catch((err: Error) => {\r\n        if (!cancelled) setError(err);\r\n      });\r\n\r\n    return () => {\r\n      cancelled = true;\r\n    };\r\n  }, [manifest, name]);\r\n\r\n  return {\r\n    Component,\r\n    isLoading: !manifest && !manifestError,\r\n    error: error ?? (manifestError as Error | null),\r\n  };\r\n}\r\n","import { useQuery } from '@tanstack/react-query';\r\nimport { useTramaClient } from '../context.js';\r\n\r\nexport function useCmsItems(collectionId: string | null) {\r\n  const client = useTramaClient();\r\n\r\n  return useQuery({\r\n    queryKey: ['cms', collectionId],\r\n    queryFn: () => client.request<unknown[]>(`/api/v1/cms/collections/${collectionId}/items`),\r\n    enabled: Boolean(collectionId),\r\n    staleTime: 5 * 60 * 1000,\r\n  });\r\n}\r\n"]}