@sentecacommerce-theme/lib 0.12.77 → 0.12.78

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/dist/cjs/listing/hooks/useListingFilters.js +2 -2
  2. package/dist/cjs/listing/hooks/useListingFilters.js.map +1 -1
  3. package/dist/cjs/ui/hooks/index.js +12 -0
  4. package/dist/cjs/ui/hooks/index.js.map +1 -0
  5. package/dist/cjs/ui/hooks/useToasts.js +96 -0
  6. package/dist/cjs/ui/hooks/useToasts.js.map +1 -0
  7. package/dist/cjs/ui/index.js +8 -0
  8. package/dist/cjs/ui/index.js.map +1 -1
  9. package/dist/cjs/ui/toastUtils/ErrorIcon.js +26 -0
  10. package/dist/cjs/ui/toastUtils/ErrorIcon.js.map +1 -0
  11. package/dist/cjs/ui/toastUtils/InfoIcon.js +26 -0
  12. package/dist/cjs/ui/toastUtils/InfoIcon.js.map +1 -0
  13. package/dist/cjs/ui/toastUtils/SuccessIcon.js +26 -0
  14. package/dist/cjs/ui/toastUtils/SuccessIcon.js.map +1 -0
  15. package/dist/cjs/ui/toastUtils/WarningIcon.js +26 -0
  16. package/dist/cjs/ui/toastUtils/WarningIcon.js.map +1 -0
  17. package/dist/cjs/ui/toastUtils/index.js +44 -0
  18. package/dist/cjs/ui/toastUtils/index.js.map +1 -0
  19. package/dist/cjs/ui/toastUtils/utils.js +107 -0
  20. package/dist/cjs/ui/toastUtils/utils.js.map +1 -0
  21. package/dist/esm/listing/hooks/useListingFilters.js +2 -2
  22. package/dist/esm/listing/hooks/useListingFilters.js.map +1 -1
  23. package/dist/esm/ui/hooks/index.js +2 -0
  24. package/dist/esm/ui/hooks/index.js.map +1 -0
  25. package/dist/esm/ui/hooks/useToasts.js +74 -0
  26. package/dist/esm/ui/hooks/useToasts.js.map +1 -0
  27. package/dist/esm/ui/index.js +1 -0
  28. package/dist/esm/ui/index.js.map +1 -1
  29. package/dist/esm/ui/toastUtils/ErrorIcon.js +16 -0
  30. package/dist/esm/ui/toastUtils/ErrorIcon.js.map +1 -0
  31. package/dist/esm/ui/toastUtils/InfoIcon.js +16 -0
  32. package/dist/esm/ui/toastUtils/InfoIcon.js.map +1 -0
  33. package/dist/esm/ui/toastUtils/SuccessIcon.js +16 -0
  34. package/dist/esm/ui/toastUtils/SuccessIcon.js.map +1 -0
  35. package/dist/esm/ui/toastUtils/WarningIcon.js +16 -0
  36. package/dist/esm/ui/toastUtils/WarningIcon.js.map +1 -0
  37. package/dist/esm/ui/toastUtils/index.js +6 -0
  38. package/dist/esm/ui/toastUtils/index.js.map +1 -0
  39. package/dist/esm/ui/toastUtils/utils.js +82 -0
  40. package/dist/esm/ui/toastUtils/utils.js.map +1 -0
  41. package/dist/types/ui/hooks/index.d.ts +1 -0
  42. package/dist/types/ui/hooks/useToasts.d.ts +20 -0
  43. package/dist/types/ui/index.d.ts +1 -0
  44. package/dist/types/ui/toastUtils/ErrorIcon.d.ts +1 -0
  45. package/dist/types/ui/toastUtils/InfoIcon.d.ts +1 -0
  46. package/dist/types/ui/toastUtils/SuccessIcon.d.ts +1 -0
  47. package/dist/types/ui/toastUtils/WarningIcon.d.ts +1 -0
  48. package/dist/types/ui/toastUtils/index.d.ts +5 -0
  49. package/dist/types/ui/toastUtils/utils.d.ts +11 -0
  50. package/package.json +3 -3
@@ -53,7 +53,7 @@ function ListingFiltersProvider(_ref) {
53
53
  var result = aggregates == null ? void 0 : aggregates.sort(function (a, b) {
54
54
  return a.order - b.order;
55
55
  }).map(function (currentAggregate) {
56
- var _listing$slugAliases$;
56
+ var _listing$slugAliases$, _listing$slugAliases;
57
57
 
58
58
  var type = currentAggregate.aggregationType.toString();
59
59
  var term = currentAggregate.aggregationDefinition.split(':')[0];
@@ -66,7 +66,7 @@ function ListingFiltersProvider(_ref) {
66
66
  filter: filter,
67
67
  router: router,
68
68
  type: type,
69
- slug: (_listing$slugAliases$ = config.listing.slugAliases[slug]) != null ? _listing$slugAliases$ : slug,
69
+ slug: (_listing$slugAliases$ = (_listing$slugAliases = config.listing.slugAliases) == null ? void 0 : _listing$slugAliases[slug]) != null ? _listing$slugAliases$ : slug,
70
70
  pageType: pageType
71
71
  });
72
72
  var selectedCount = generatedFilters == null ? void 0 : generatedFilters.reduce(function (count, res) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/listing/hooks/useListingFilters.tsx"],"names":["ListingFiltersStateContext","React","createContext","undefined","ListingFiltersProvider","children","aggregates","pageType","type","attributeSortType","AggregateRequestEnum","Filters","aggData","data","isLoading","isFetching","config","router","slug","useMemo","result","sort","a","b","order","map","currentAggregate","aggregationType","toString","term","aggregationDefinition","split","filter","filterDefinition","current","find","agg","name","generatedFilters","generateFilters","rawFilters","listing","slugAliases","selectedCount","reduce","count","res","selected","attributeResult","label","component","items","raw","clearAll","push","pathname","query","filterByType","clearAllFilters","selectedFilters","useListingFilters","context","useContext","Error","results","currentTerm","filterKey","mapKey","isFilterSelected","filtersOperatorsMap","meta","onClick","createAggregateQuery","aggType","aggKey","aggOperator","Boolean","areFiltersArray","Array","isArray","sel","includes","ranges","stats","terms","r","keysMap","key","from","to","manageFilter","pair","remove","stripped","generateQueryString","activeFilters","extractFilter","str","aggPair","operator","val","filterType","filterVal","filterOperator","Object","keys","forEach","el","applied","remaining","x","length","join","idx","ListingTypesEnum","Search","q","search","cat","typeToSuffix","filters","filterName"],"mappings":"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","sourcesContent":["import React from 'react'\nimport { useRouter } from 'next/router'\nimport { NextRouter } from 'next/router'\nimport { useListingConfig } from './useListingConfig'\nimport {\n useAggregateQuery,\n AggregateRequestEnum,\n AggregateType,\n AggregationResultType,\n} from '../api'\n\nimport { Aggregate, ListingTypesEnum } from '../types'\nimport { useListingSlug } from './useListingSlug'\n\nimport { stripQueryProps } from '../../utils/generateQueryFromRouter'\nimport { typeToSuffix } from '../../utils/typeToSuffix'\nimport { generateQueryStringFromQuery } from '../../utils/generateQueryStringFromQuery'\nimport {\n RangeAggregation,\n StatAggregation,\n TermAggregation,\n} from '@sentecacommerce/sdk'\nimport { getSelectedFilters } from '../../utils'\nimport { useConfigState } from '../../index'\nimport { FiltersQuery } from '../index'\n\nexport type {\n RangeAggregation,\n StatAggregation,\n TermAggregation,\n} from '@sentecacommerce/sdk'\n\ntype AggPair = {\n aggType: string\n aggKey: string\n aggOperator: string\n}\n\nexport type ListingAggregationResultType = {\n selected: boolean\n data: AggregationResultType\n meta: any\n aggregationType?: string\n onClick: () => void\n}\n\nexport type ListingAggregateType = {\n name: string\n component: string\n type: string\n selectedCount: number\n items: ListingAggregationResultType[]\n clearAll: () => void\n raw: StatAggregation | RangeAggregation | TermAggregation\n}\n\nexport type UseListingFiltersResult = {\n data?: ListingAggregateType[]\n clearAllFilters: () => void\n selectedFilters: ListingAggregationResultType[]\n isLoading: boolean\n isFetching: boolean\n}\n\nconst ListingFiltersStateContext = React.createContext<\n UseListingFiltersResult | undefined\n>(undefined)\n\nexport function ListingFiltersProvider({\n children,\n}: {\n children: React.ReactNode\n}) {\n const { aggregates, type: pageType, attributeSortType } = useListingConfig()\n\n const { data: aggData, isLoading, isFetching } = useAggregateQuery(\n aggregates as Aggregate[],\n AggregateRequestEnum.Filters,\n attributeSortType\n )\n\n const config = useConfigState()\n const router = useRouter()\n const slug = useListingSlug()\n\n const data = React.useMemo(() => {\n if (!isLoading && aggData) {\n const result = aggregates\n ?.sort((a, b) => a.order - b.order)\n .map((currentAggregate) => {\n const type = currentAggregate.aggregationType.toString()\n const term = currentAggregate.aggregationDefinition.split(':')[0]\n const filter = currentAggregate.filterDefinition\n const current: AggregateType = aggData[type].find(\n (agg: AggregateType) => agg.name === term\n )\n\n const generatedFilters = generateFilters({\n rawFilters: current,\n filter,\n router,\n type,\n slug: (config as any).listing.slugAliases[slug] ?? slug,\n pageType,\n })\n\n const selectedCount = generatedFilters?.reduce((count, res) => {\n if (res.selected) count++\n return count\n }, 0)\n\n const attributeResult = ({\n name: currentAggregate.label,\n component: currentAggregate.component,\n items: generatedFilters,\n selectedCount,\n raw: current,\n clearAll: () =>\n router.push({\n pathname: router.pathname,\n query: {\n ...router.query,\n filter: filterByType(router.query.filter, filter),\n },\n }),\n type: type,\n } as unknown) as ListingAggregateType\n\n return attributeResult\n })\n\n return result\n }\n return undefined\n }, [aggData, router])\n\n const clearAllFilters = () => {\n const query = { ...router.query }\n delete query.filter\n\n router.push({\n pathname: router.pathname,\n query,\n })\n }\n\n const selectedFilters = React.useMemo(() => {\n return getSelectedFilters(router, slug, data as any, config) as any\n }, [router, data])\n\n return (\n <ListingFiltersStateContext.Provider\n value={{ data, clearAllFilters, selectedFilters, isLoading, isFetching }}\n >\n {children}\n </ListingFiltersStateContext.Provider>\n )\n}\n\nexport function useListingFilters() {\n const context = React.useContext(ListingFiltersStateContext)\n if (context === undefined) {\n throw new Error(\n 'useListingFilters must be used within a ListingFiltersProvider'\n )\n }\n return context\n}\n\nfunction generateFilters({\n rawFilters,\n type,\n filter,\n slug,\n router,\n pageType,\n}: {\n rawFilters: AggregateType\n type: string\n filter: string\n slug: string\n router: NextRouter\n pageType: ListingTypesEnum\n}) {\n return rawFilters.results\n ?.filter((res) => res.count > 0)\n ?.map((currentTerm) => {\n const filterKey = mapKey(currentTerm, type)\n\n const selected = isFilterSelected(\n router,\n filter,\n filterKey,\n filtersOperatorsMap[type]\n )\n\n return {\n data: currentTerm,\n selected,\n meta: currentTerm.meta,\n onClick: () => {\n router.push(\n createAggregateQuery(\n pageType,\n slug,\n {\n aggType: filter,\n aggKey: filterKey,\n aggOperator: filtersOperatorsMap[type],\n },\n Boolean(selected),\n router\n )\n )\n },\n }\n })\n}\n\nconst isFilterSelected = (\n router: NextRouter,\n filter: string,\n filterKey: any,\n type: string\n) => {\n const areFiltersArray = Array.isArray(router.query?.filter)\n\n return areFiltersArray\n ? !!(router.query.filter as string[])\n ?.find((sel: string) => sel.includes(`${filter};${type}`))\n ?.includes(filterKey)\n : router.query.filter?.includes(`${filter};${type}`) &&\n router.query.filter?.includes(filterKey)\n}\n\nexport const filtersOperatorsMap = {\n ranges: 'range',\n stats: 'range',\n terms: 'in',\n}\n\nfunction mapKey(r: any, type: any) {\n const keysMap = {\n terms: `\"${r.key}\"`,\n ranges: `${r.from},${r.to}`,\n }\n if (!keysMap[type]) return r.key\n\n return keysMap[type]\n}\n\nfunction manageFilter(pair: AggPair, query: any, remove: boolean) {\n const stripped = stripQueryProps(query, ['page']) // reset pagination on filter\n\n const result = generateQueryString(stripped, pair, remove)\n return result\n}\n\nconst generateQueryString = (\n query: FiltersQuery,\n pair: AggPair,\n remove?: boolean\n) => {\n const activeFilters = {}\n\n const extractFilter = ({\n str = '',\n aggPair,\n }: {\n str: string\n aggPair?: AggPair\n }) => {\n const [type, operator, val] = str.split(';')\n\n const filterType = aggPair?.aggType ?? type\n const filterVal = aggPair?.aggKey ?? val\n const filterOperator = aggPair?.aggOperator ?? operator\n\n if (activeFilters[filterType]) {\n activeFilters[filterType] += `,${filterVal}`\n } else {\n activeFilters[\n filterType\n ] = `filter=${filterType};${filterOperator};${filterVal}`\n }\n }\n\n Object.keys(query).forEach((el) => {\n if (Array.isArray(query[el])) {\n query[el].forEach((filter: string) => {\n extractFilter({ str: filter })\n })\n } else {\n if (el === 'sort') {\n activeFilters[el] = `sort=${query[el]}`\n } else {\n extractFilter({ str: query[el] })\n }\n }\n })\n\n if (remove) {\n const applied = activeFilters[pair.aggType].split(';')[2].split(',')\n\n const remaining = applied.filter((x: string) => !pair.aggKey.includes(x))\n\n if (remaining.length === 0) {\n activeFilters[pair.aggType] = ``\n } else {\n activeFilters[pair.aggType] = `filter=${pair.aggType};${\n pair.aggOperator\n };${remaining.join(',')}`\n }\n } else {\n extractFilter({ str: '', aggPair: pair })\n }\n\n if (Object.keys(activeFilters).length === 0) return ``\n\n return Object.keys(activeFilters).reduce((res, val, idx) => {\n res += `${idx > 0 ? '&' : ''}${activeFilters[val]}`\n return res\n }, ``)\n}\n\nfunction createAggregateQuery(\n type: ListingTypesEnum,\n slug: string,\n aggPair: AggPair,\n remove: boolean,\n router: NextRouter\n) {\n if (type === ListingTypesEnum.Search) {\n return router.query.q\n ? `/search?q=${router.query.q}&${manageFilter(\n aggPair,\n router.query,\n remove\n )}`\n : `/${slug}/c?search=${router.query.search}&${manageFilter(\n aggPair,\n router.query,\n remove\n )}`\n }\n\n if (router.query.cat) {\n return `/${router.query.slug}/${router.query.cat}/${\n typeToSuffix[type]\n }?${manageFilter(aggPair, router.query, remove)}`\n }\n\n return `/${slug}/${typeToSuffix[type]}?${manageFilter(\n aggPair,\n router.query,\n remove\n )}`\n}\n\nfunction filterByType(\n filters: string | string[] | undefined,\n filterName: string\n) {\n if (!filters) return\n\n if (typeof filters === 'string') {\n if (filters.includes(filterName)) return\n\n return filters\n }\n\n return filters.filter((filter) => !filter.includes(filterName))\n}\n"],"file":"useListingFilters.js"}
1
+ {"version":3,"sources":["../../../../src/listing/hooks/useListingFilters.tsx"],"names":["ListingFiltersStateContext","React","createContext","undefined","ListingFiltersProvider","children","aggregates","pageType","type","attributeSortType","AggregateRequestEnum","Filters","aggData","data","isLoading","isFetching","config","router","slug","useMemo","result","sort","a","b","order","map","currentAggregate","aggregationType","toString","term","aggregationDefinition","split","filter","filterDefinition","current","find","agg","name","generatedFilters","generateFilters","rawFilters","listing","slugAliases","selectedCount","reduce","count","res","selected","attributeResult","label","component","items","raw","clearAll","push","pathname","query","filterByType","clearAllFilters","selectedFilters","useListingFilters","context","useContext","Error","results","currentTerm","filterKey","mapKey","isFilterSelected","filtersOperatorsMap","meta","onClick","createAggregateQuery","aggType","aggKey","aggOperator","Boolean","areFiltersArray","Array","isArray","sel","includes","ranges","stats","terms","r","keysMap","key","from","to","manageFilter","pair","remove","stripped","generateQueryString","activeFilters","extractFilter","str","aggPair","operator","val","filterType","filterVal","filterOperator","Object","keys","forEach","el","applied","remaining","x","length","join","idx","ListingTypesEnum","Search","q","search","cat","typeToSuffix","filters","filterName"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AAEA;;AACA;;AAOA;;AACA;;AAEA;;AACA;;AAOA;;AACA;;AAyCA,IAAMA,0BAA0B,gBAAGC,kBAAMC,aAAN,CAEjCC,SAFiC,CAAnC;;AAIO,SAASC,sBAAT,OAIJ;AAAA,MAHDC,QAGC,QAHDA,QAGC;;AAAA,0BACyD,0CADzD;AAAA,MACOC,UADP,qBACOA,UADP;AAAA,MACyBC,QADzB,qBACmBC,IADnB;AAAA,MACmCC,iBADnC,qBACmCA,iBADnC;;AAAA,2BAGgD,4BAC/CH,UAD+C,EAE/CI,0BAAqBC,OAF0B,EAG/CF,iBAH+C,CAHhD;AAAA,MAGaG,OAHb,sBAGOC,IAHP;AAAA,MAGsBC,SAHtB,sBAGsBA,SAHtB;AAAA,MAGiCC,UAHjC,sBAGiCA,UAHjC;;AASD,MAAMC,MAAM,GAAG,4BAAf;AACA,MAAMC,MAAM,GAAG,wBAAf;AACA,MAAMC,IAAI,GAAG,qCAAb;;AAEA,MAAML,IAAI,GAAGZ,kBAAMkB,OAAN,CAAc,YAAM;AAC/B,QAAI,CAACL,SAAD,IAAcF,OAAlB,EAA2B;AACzB,UAAMQ,MAAM,GAAGd,UAAH,oBAAGA,UAAU,CACrBe,IADW,CACN,UAACC,CAAD,EAAIC,CAAJ;AAAA,eAAUD,CAAC,CAACE,KAAF,GAAUD,CAAC,CAACC,KAAtB;AAAA,OADM,EAEZC,GAFY,CAER,UAACC,gBAAD,EAAsB;AAAA;;AACzB,YAAMlB,IAAI,GAAGkB,gBAAgB,CAACC,eAAjB,CAAiCC,QAAjC,EAAb;AACA,YAAMC,IAAI,GAAGH,gBAAgB,CAACI,qBAAjB,CAAuCC,KAAvC,CAA6C,GAA7C,EAAkD,CAAlD,CAAb;AACA,YAAMC,MAAM,GAAGN,gBAAgB,CAACO,gBAAhC;AACA,YAAMC,OAAsB,GAAGtB,OAAO,CAACJ,IAAD,CAAP,CAAc2B,IAAd,CAC7B,UAACC,GAAD;AAAA,iBAAwBA,GAAG,CAACC,IAAJ,KAAaR,IAArC;AAAA,SAD6B,CAA/B;AAIA,YAAMS,gBAAgB,GAAGC,eAAe,CAAC;AACvCC,UAAAA,UAAU,EAAEN,OAD2B;AAEvCF,UAAAA,MAAM,EAANA,MAFuC;AAGvCf,UAAAA,MAAM,EAANA,MAHuC;AAIvCT,UAAAA,IAAI,EAAJA,IAJuC;AAKvCU,UAAAA,IAAI,mDAAGF,MAAD,CAAgByB,OAAhB,CAAwBC,WAA1B,qBAAE,qBAAsCxB,IAAtC,CAAF,oCAAiDA,IALd;AAMvCX,UAAAA,QAAQ,EAARA;AANuC,SAAD,CAAxC;AASA,YAAMoC,aAAa,GAAGL,gBAAH,oBAAGA,gBAAgB,CAAEM,MAAlB,CAAyB,UAACC,KAAD,EAAQC,GAAR,EAAgB;AAC7D,cAAIA,GAAG,CAACC,QAAR,EAAkBF,KAAK;AACvB,iBAAOA,KAAP;AACD,SAHqB,EAGnB,CAHmB,CAAtB;AAKA,YAAMG,eAAe,GAAI;AACvBX,UAAAA,IAAI,EAAEX,gBAAgB,CAACuB,KADA;AAEvBC,UAAAA,SAAS,EAAExB,gBAAgB,CAACwB,SAFL;AAGvBC,UAAAA,KAAK,EAAEb,gBAHgB;AAIvBK,UAAAA,aAAa,EAAbA,aAJuB;AAKvBS,UAAAA,GAAG,EAAElB,OALkB;AAMvBmB,UAAAA,QAAQ,EAAE;AAAA,mBACRpC,MAAM,CAACqC,IAAP,CAAY;AACVC,cAAAA,QAAQ,EAAEtC,MAAM,CAACsC,QADP;AAEVC,cAAAA,KAAK,gCACAvC,MAAM,CAACuC,KADP;AAEHxB,gBAAAA,MAAM,EAAEyB,YAAY,CAACxC,MAAM,CAACuC,KAAP,CAAaxB,MAAd,EAAsBA,MAAtB;AAFjB;AAFK,aAAZ,CADQ;AAAA,WANa;AAcvBxB,UAAAA,IAAI,EAAEA;AAdiB,SAAzB;AAiBA,eAAOwC,eAAP;AACD,OA1CY,CAAf;AA4CA,aAAO5B,MAAP;AACD;;AACD,WAAOjB,SAAP;AACD,GAjDY,EAiDV,CAACS,OAAD,EAAUK,MAAV,CAjDU,CAAb;;AAmDA,MAAMyC,eAAe,GAAG,SAAlBA,eAAkB,GAAM;AAC5B,QAAMF,KAAK,iCAAQvC,MAAM,CAACuC,KAAf,CAAX;AACA,WAAOA,KAAK,CAACxB,MAAb;AAEAf,IAAAA,MAAM,CAACqC,IAAP,CAAY;AACVC,MAAAA,QAAQ,EAAEtC,MAAM,CAACsC,QADP;AAEVC,MAAAA,KAAK,EAALA;AAFU,KAAZ;AAID,GARD;;AAUA,MAAMG,eAAe,GAAG1D,kBAAMkB,OAAN,CAAc,YAAM;AAC1C,WAAO,+BAAmBF,MAAnB,EAA2BC,IAA3B,EAAiCL,IAAjC,EAA8CG,MAA9C,CAAP;AACD,GAFuB,EAErB,CAACC,MAAD,EAASJ,IAAT,CAFqB,CAAxB;;AAIA,sBACE,gCAAC,0BAAD,CAA4B,QAA5B;AACE,IAAA,KAAK,EAAE;AAAEA,MAAAA,IAAI,EAAJA,IAAF;AAAQ6C,MAAAA,eAAe,EAAfA,eAAR;AAAyBC,MAAAA,eAAe,EAAfA,eAAzB;AAA0C7C,MAAAA,SAAS,EAATA,SAA1C;AAAqDC,MAAAA,UAAU,EAAVA;AAArD;AADT,KAGGV,QAHH,CADF;AAOD;;AAEM,SAASuD,iBAAT,GAA6B;AAClC,MAAMC,OAAO,GAAG5D,kBAAM6D,UAAN,CAAiB9D,0BAAjB,CAAhB;;AACA,MAAI6D,OAAO,KAAK1D,SAAhB,EAA2B;AACzB,UAAM,IAAI4D,KAAJ,CACJ,gEADI,CAAN;AAGD;;AACD,SAAOF,OAAP;AACD;;AAED,SAAStB,eAAT,QAcG;AAAA;;AAAA,MAbDC,UAaC,SAbDA,UAaC;AAAA,MAZDhC,IAYC,SAZDA,IAYC;AAAA,MAXDwB,MAWC,SAXDA,MAWC;AAAA,MAVDd,IAUC,SAVDA,IAUC;AAAA,MATDD,MASC,SATDA,MASC;AAAA,MARDV,QAQC,SARDA,QAQC;AACD,gCAAOiC,UAAU,CAACwB,OAAlB,8CAAO,oBACHhC,MADG,CACI,UAACc,GAAD;AAAA,WAASA,GAAG,CAACD,KAAJ,GAAY,CAArB;AAAA,GADJ,CAAP,qBAAO,sBAEHpB,GAFG,CAEC,UAACwC,WAAD,EAAiB;AACrB,QAAMC,SAAS,GAAGC,MAAM,CAACF,WAAD,EAAczD,IAAd,CAAxB;AAEA,QAAMuC,QAAQ,GAAGqB,gBAAgB,CAC/BnD,MAD+B,EAE/Be,MAF+B,EAG/BkC,SAH+B,EAI/BG,mBAAmB,CAAC7D,IAAD,CAJY,CAAjC;AAOA,WAAO;AACLK,MAAAA,IAAI,EAAEoD,WADD;AAELlB,MAAAA,QAAQ,EAARA,QAFK;AAGLuB,MAAAA,IAAI,EAAEL,WAAW,CAACK,IAHb;AAILC,MAAAA,OAAO,EAAE,mBAAM;AACbtD,QAAAA,MAAM,CAACqC,IAAP,CACEkB,oBAAoB,CAClBjE,QADkB,EAElBW,IAFkB,EAGlB;AACEuD,UAAAA,OAAO,EAAEzC,MADX;AAEE0C,UAAAA,MAAM,EAAER,SAFV;AAGES,UAAAA,WAAW,EAAEN,mBAAmB,CAAC7D,IAAD;AAHlC,SAHkB,EAQlBoE,OAAO,CAAC7B,QAAD,CARW,EASlB9B,MATkB,CADtB;AAaD;AAlBI,KAAP;AAoBD,GAhCI,CAAP;AAiCD;;AAED,IAAMmD,gBAAgB,GAAG,SAAnBA,gBAAmB,CACvBnD,MADuB,EAEvBe,MAFuB,EAGvBkC,SAHuB,EAIvB1D,IAJuB,EAKpB;AAAA;;AACH,MAAMqE,eAAe,GAAGC,KAAK,CAACC,OAAN,kBAAc9D,MAAM,CAACuC,KAArB,qBAAc,cAAcxB,MAA5B,CAAxB;AAEA,SAAO6C,eAAe,GAClB,CAAC,0BAAE5D,MAAM,CAACuC,KAAP,CAAaxB,MAAf,sCAAC,qBACEG,IADF,CACO,UAAC6C,GAAD;AAAA,WAAiBA,GAAG,CAACC,QAAJ,CAAgBjD,MAAhB,SAA0BxB,IAA1B,CAAjB;AAAA,GADP,CAAD,aAAC,sBAEEyE,QAFF,CAEWf,SAFX,CAAD,CADiB,GAIlB,0BAAAjD,MAAM,CAACuC,KAAP,CAAaxB,MAAb,2CAAqBiD,QAArB,CAAiCjD,MAAjC,SAA2CxB,IAA3C,gCACES,MAAM,CAACuC,KAAP,CAAaxB,MADf,qBACE,sBAAqBiD,QAArB,CAA8Bf,SAA9B,CADF,CAJJ;AAMD,CAdD;;AAgBO,IAAMG,mBAAmB,GAAG;AACjCa,EAAAA,MAAM,EAAE,OADyB;AAEjCC,EAAAA,KAAK,EAAE,OAF0B;AAGjCC,EAAAA,KAAK,EAAE;AAH0B,CAA5B;;;AAMP,SAASjB,MAAT,CAAgBkB,CAAhB,EAAwB7E,IAAxB,EAAmC;AACjC,MAAM8E,OAAO,GAAG;AACdF,IAAAA,KAAK,SAAMC,CAAC,CAACE,GAAR,OADS;AAEdL,IAAAA,MAAM,EAAKG,CAAC,CAACG,IAAP,SAAeH,CAAC,CAACI;AAFT,GAAhB;AAIA,MAAI,CAACH,OAAO,CAAC9E,IAAD,CAAZ,EAAoB,OAAO6E,CAAC,CAACE,GAAT;AAEpB,SAAOD,OAAO,CAAC9E,IAAD,CAAd;AACD;;AAED,SAASkF,YAAT,CAAsBC,IAAtB,EAAqCnC,KAArC,EAAiDoC,MAAjD,EAAkE;AAChE,MAAMC,QAAQ,GAAG,8CAAgBrC,KAAhB,EAAuB,CAAC,MAAD,CAAvB,CAAjB,CADgE,CACd;;AAElD,MAAMpC,MAAM,GAAG0E,mBAAmB,CAACD,QAAD,EAAWF,IAAX,EAAiBC,MAAjB,CAAlC;AACA,SAAOxE,MAAP;AACD;;AAED,IAAM0E,mBAAmB,GAAG,SAAtBA,mBAAsB,CAC1BtC,KAD0B,EAE1BmC,IAF0B,EAG1BC,MAH0B,EAIvB;AACH,MAAMG,aAAa,GAAG,EAAtB;;AAEA,MAAMC,aAAa,GAAG,SAAhBA,aAAgB,QAMhB;AAAA;;AAAA,0BALJC,GAKI;AAAA,QALJA,GAKI,0BALE,EAKF;AAAA,QAJJC,OAII,SAJJA,OAII;;AAAA,qBAC0BD,GAAG,CAAClE,KAAJ,CAAU,GAAV,CAD1B;AAAA,QACGvB,IADH;AAAA,QACS2F,QADT;AAAA,QACmBC,GADnB;;AAGJ,QAAMC,UAAU,uBAAGH,OAAH,oBAAGA,OAAO,CAAEzB,OAAZ,+BAAuBjE,IAAvC;AACA,QAAM8F,SAAS,sBAAGJ,OAAH,oBAAGA,OAAO,CAAExB,MAAZ,8BAAsB0B,GAArC;AACA,QAAMG,cAAc,2BAAGL,OAAH,oBAAGA,OAAO,CAAEvB,WAAZ,mCAA2BwB,QAA/C;;AAEA,QAAIJ,aAAa,CAACM,UAAD,CAAjB,EAA+B;AAC7BN,MAAAA,aAAa,CAACM,UAAD,CAAb,UAAiCC,SAAjC;AACD,KAFD,MAEO;AACLP,MAAAA,aAAa,CACXM,UADW,CAAb,eAEcA,UAFd,SAE4BE,cAF5B,SAE8CD,SAF9C;AAGD;AACF,GApBD;;AAsBAE,EAAAA,MAAM,CAACC,IAAP,CAAYjD,KAAZ,EAAmBkD,OAAnB,CAA2B,UAACC,EAAD,EAAQ;AACjC,QAAI7B,KAAK,CAACC,OAAN,CAAcvB,KAAK,CAACmD,EAAD,CAAnB,CAAJ,EAA8B;AAC5BnD,MAAAA,KAAK,CAACmD,EAAD,CAAL,CAAUD,OAAV,CAAkB,UAAC1E,MAAD,EAAoB;AACpCgE,QAAAA,aAAa,CAAC;AAAEC,UAAAA,GAAG,EAAEjE;AAAP,SAAD,CAAb;AACD,OAFD;AAGD,KAJD,MAIO;AACL,UAAI2E,EAAE,KAAK,MAAX,EAAmB;AACjBZ,QAAAA,aAAa,CAACY,EAAD,CAAb,aAA4BnD,KAAK,CAACmD,EAAD,CAAjC;AACD,OAFD,MAEO;AACLX,QAAAA,aAAa,CAAC;AAAEC,UAAAA,GAAG,EAAEzC,KAAK,CAACmD,EAAD;AAAZ,SAAD,CAAb;AACD;AACF;AACF,GAZD;;AAcA,MAAIf,MAAJ,EAAY;AACV,QAAMgB,OAAO,GAAGb,aAAa,CAACJ,IAAI,CAAClB,OAAN,CAAb,CAA4B1C,KAA5B,CAAkC,GAAlC,EAAuC,CAAvC,EAA0CA,KAA1C,CAAgD,GAAhD,CAAhB;AAEA,QAAM8E,SAAS,GAAGD,OAAO,CAAC5E,MAAR,CAAe,UAAC8E,CAAD;AAAA,aAAe,CAACnB,IAAI,CAACjB,MAAL,CAAYO,QAAZ,CAAqB6B,CAArB,CAAhB;AAAA,KAAf,CAAlB;;AAEA,QAAID,SAAS,CAACE,MAAV,KAAqB,CAAzB,EAA4B;AAC1BhB,MAAAA,aAAa,CAACJ,IAAI,CAAClB,OAAN,CAAb;AACD,KAFD,MAEO;AACLsB,MAAAA,aAAa,CAACJ,IAAI,CAAClB,OAAN,CAAb,eAAwCkB,IAAI,CAAClB,OAA7C,SACEkB,IAAI,CAAChB,WADP,SAEIkC,SAAS,CAACG,IAAV,CAAe,GAAf,CAFJ;AAGD;AACF,GAZD,MAYO;AACLhB,IAAAA,aAAa,CAAC;AAAEC,MAAAA,GAAG,EAAE,EAAP;AAAWC,MAAAA,OAAO,EAAEP;AAApB,KAAD,CAAb;AACD;;AAED,MAAIa,MAAM,CAACC,IAAP,CAAYV,aAAZ,EAA2BgB,MAA3B,KAAsC,CAA1C,EAA6C;AAE7C,SAAOP,MAAM,CAACC,IAAP,CAAYV,aAAZ,EAA2BnD,MAA3B,CAAkC,UAACE,GAAD,EAAMsD,GAAN,EAAWa,GAAX,EAAmB;AAC1DnE,IAAAA,GAAG,UAAOmE,GAAG,GAAG,CAAN,GAAU,GAAV,GAAgB,EAAvB,IAA4BlB,aAAa,CAACK,GAAD,CAA5C;AACA,WAAOtD,GAAP;AACD,GAHM,KAAP;AAID,CAjED;;AAmEA,SAAS0B,oBAAT,CACEhE,IADF,EAEEU,IAFF,EAGEgF,OAHF,EAIEN,MAJF,EAKE3E,MALF,EAME;AACA,MAAIT,IAAI,KAAK0G,wBAAiBC,MAA9B,EAAsC;AACpC,WAAOlG,MAAM,CAACuC,KAAP,CAAa4D,CAAb,kBACUnG,MAAM,CAACuC,KAAP,CAAa4D,CADvB,SAC4B1B,YAAY,CACzCQ,OADyC,EAEzCjF,MAAM,CAACuC,KAFkC,EAGzCoC,MAHyC,CADxC,SAMC1E,IAND,kBAMkBD,MAAM,CAACuC,KAAP,CAAa6D,MAN/B,SAMyC3B,YAAY,CACtDQ,OADsD,EAEtDjF,MAAM,CAACuC,KAF+C,EAGtDoC,MAHsD,CAN5D;AAWD;;AAED,MAAI3E,MAAM,CAACuC,KAAP,CAAa8D,GAAjB,EAAsB;AACpB,iBAAWrG,MAAM,CAACuC,KAAP,CAAatC,IAAxB,SAAgCD,MAAM,CAACuC,KAAP,CAAa8D,GAA7C,SACEC,2BAAa/G,IAAb,CADF,SAEIkF,YAAY,CAACQ,OAAD,EAAUjF,MAAM,CAACuC,KAAjB,EAAwBoC,MAAxB,CAFhB;AAGD;;AAED,eAAW1E,IAAX,SAAmBqG,2BAAa/G,IAAb,CAAnB,SAAyCkF,YAAY,CACnDQ,OADmD,EAEnDjF,MAAM,CAACuC,KAF4C,EAGnDoC,MAHmD,CAArD;AAKD;;AAED,SAASnC,YAAT,CACE+D,OADF,EAEEC,UAFF,EAGE;AACA,MAAI,CAACD,OAAL,EAAc;;AAEd,MAAI,OAAOA,OAAP,KAAmB,QAAvB,EAAiC;AAC/B,QAAIA,OAAO,CAACvC,QAAR,CAAiBwC,UAAjB,CAAJ,EAAkC;AAElC,WAAOD,OAAP;AACD;;AAED,SAAOA,OAAO,CAACxF,MAAR,CAAe,UAACA,MAAD;AAAA,WAAY,CAACA,MAAM,CAACiD,QAAP,CAAgBwC,UAAhB,CAAb;AAAA,GAAf,CAAP;AACD","sourcesContent":["import React from 'react'\nimport { useRouter } from 'next/router'\nimport { NextRouter } from 'next/router'\nimport { useListingConfig } from './useListingConfig'\nimport {\n useAggregateQuery,\n AggregateRequestEnum,\n AggregateType,\n AggregationResultType,\n} from '../api'\n\nimport { Aggregate, ListingTypesEnum } from '../types'\nimport { useListingSlug } from './useListingSlug'\n\nimport { stripQueryProps } from '../../utils/generateQueryFromRouter'\nimport { typeToSuffix } from '../../utils/typeToSuffix'\nimport { generateQueryStringFromQuery } from '../../utils/generateQueryStringFromQuery'\nimport {\n RangeAggregation,\n StatAggregation,\n TermAggregation,\n} from '@sentecacommerce/sdk'\nimport { getSelectedFilters } from '../../utils'\nimport { useConfigState } from '../../index'\nimport { FiltersQuery } from '../index'\n\nexport type {\n RangeAggregation,\n StatAggregation,\n TermAggregation,\n} from '@sentecacommerce/sdk'\n\ntype AggPair = {\n aggType: string\n aggKey: string\n aggOperator: string\n}\n\nexport type ListingAggregationResultType = {\n selected: boolean\n data: AggregationResultType\n meta: any\n aggregationType?: string\n onClick: () => void\n}\n\nexport type ListingAggregateType = {\n name: string\n component: string\n type: string\n selectedCount: number\n items: ListingAggregationResultType[]\n clearAll: () => void\n raw: StatAggregation | RangeAggregation | TermAggregation\n}\n\nexport type UseListingFiltersResult = {\n data?: ListingAggregateType[]\n clearAllFilters: () => void\n selectedFilters: ListingAggregationResultType[]\n isLoading: boolean\n isFetching: boolean\n}\n\nconst ListingFiltersStateContext = React.createContext<\n UseListingFiltersResult | undefined\n>(undefined)\n\nexport function ListingFiltersProvider({\n children,\n}: {\n children: React.ReactNode\n}) {\n const { aggregates, type: pageType, attributeSortType } = useListingConfig()\n\n const { data: aggData, isLoading, isFetching } = useAggregateQuery(\n aggregates as Aggregate[],\n AggregateRequestEnum.Filters,\n attributeSortType\n )\n\n const config = useConfigState()\n const router = useRouter()\n const slug = useListingSlug()\n\n const data = React.useMemo(() => {\n if (!isLoading && aggData) {\n const result = aggregates\n ?.sort((a, b) => a.order - b.order)\n .map((currentAggregate) => {\n const type = currentAggregate.aggregationType.toString()\n const term = currentAggregate.aggregationDefinition.split(':')[0]\n const filter = currentAggregate.filterDefinition\n const current: AggregateType = aggData[type].find(\n (agg: AggregateType) => agg.name === term\n )\n\n const generatedFilters = generateFilters({\n rawFilters: current,\n filter,\n router,\n type,\n slug: (config as any).listing.slugAliases?.[slug] ?? slug,\n pageType,\n })\n\n const selectedCount = generatedFilters?.reduce((count, res) => {\n if (res.selected) count++\n return count\n }, 0)\n\n const attributeResult = ({\n name: currentAggregate.label,\n component: currentAggregate.component,\n items: generatedFilters,\n selectedCount,\n raw: current,\n clearAll: () =>\n router.push({\n pathname: router.pathname,\n query: {\n ...router.query,\n filter: filterByType(router.query.filter, filter),\n },\n }),\n type: type,\n } as unknown) as ListingAggregateType\n\n return attributeResult\n })\n\n return result\n }\n return undefined\n }, [aggData, router])\n\n const clearAllFilters = () => {\n const query = { ...router.query }\n delete query.filter\n\n router.push({\n pathname: router.pathname,\n query,\n })\n }\n\n const selectedFilters = React.useMemo(() => {\n return getSelectedFilters(router, slug, data as any, config) as any\n }, [router, data])\n\n return (\n <ListingFiltersStateContext.Provider\n value={{ data, clearAllFilters, selectedFilters, isLoading, isFetching }}\n >\n {children}\n </ListingFiltersStateContext.Provider>\n )\n}\n\nexport function useListingFilters() {\n const context = React.useContext(ListingFiltersStateContext)\n if (context === undefined) {\n throw new Error(\n 'useListingFilters must be used within a ListingFiltersProvider'\n )\n }\n return context\n}\n\nfunction generateFilters({\n rawFilters,\n type,\n filter,\n slug,\n router,\n pageType,\n}: {\n rawFilters: AggregateType\n type: string\n filter: string\n slug: string\n router: NextRouter\n pageType: ListingTypesEnum\n}) {\n return rawFilters.results\n ?.filter((res) => res.count > 0)\n ?.map((currentTerm) => {\n const filterKey = mapKey(currentTerm, type)\n\n const selected = isFilterSelected(\n router,\n filter,\n filterKey,\n filtersOperatorsMap[type]\n )\n\n return {\n data: currentTerm,\n selected,\n meta: currentTerm.meta,\n onClick: () => {\n router.push(\n createAggregateQuery(\n pageType,\n slug,\n {\n aggType: filter,\n aggKey: filterKey,\n aggOperator: filtersOperatorsMap[type],\n },\n Boolean(selected),\n router\n )\n )\n },\n }\n })\n}\n\nconst isFilterSelected = (\n router: NextRouter,\n filter: string,\n filterKey: any,\n type: string\n) => {\n const areFiltersArray = Array.isArray(router.query?.filter)\n\n return areFiltersArray\n ? !!(router.query.filter as string[])\n ?.find((sel: string) => sel.includes(`${filter};${type}`))\n ?.includes(filterKey)\n : router.query.filter?.includes(`${filter};${type}`) &&\n router.query.filter?.includes(filterKey)\n}\n\nexport const filtersOperatorsMap = {\n ranges: 'range',\n stats: 'range',\n terms: 'in',\n}\n\nfunction mapKey(r: any, type: any) {\n const keysMap = {\n terms: `\"${r.key}\"`,\n ranges: `${r.from},${r.to}`,\n }\n if (!keysMap[type]) return r.key\n\n return keysMap[type]\n}\n\nfunction manageFilter(pair: AggPair, query: any, remove: boolean) {\n const stripped = stripQueryProps(query, ['page']) // reset pagination on filter\n\n const result = generateQueryString(stripped, pair, remove)\n return result\n}\n\nconst generateQueryString = (\n query: FiltersQuery,\n pair: AggPair,\n remove?: boolean\n) => {\n const activeFilters = {}\n\n const extractFilter = ({\n str = '',\n aggPair,\n }: {\n str: string\n aggPair?: AggPair\n }) => {\n const [type, operator, val] = str.split(';')\n\n const filterType = aggPair?.aggType ?? type\n const filterVal = aggPair?.aggKey ?? val\n const filterOperator = aggPair?.aggOperator ?? operator\n\n if (activeFilters[filterType]) {\n activeFilters[filterType] += `,${filterVal}`\n } else {\n activeFilters[\n filterType\n ] = `filter=${filterType};${filterOperator};${filterVal}`\n }\n }\n\n Object.keys(query).forEach((el) => {\n if (Array.isArray(query[el])) {\n query[el].forEach((filter: string) => {\n extractFilter({ str: filter })\n })\n } else {\n if (el === 'sort') {\n activeFilters[el] = `sort=${query[el]}`\n } else {\n extractFilter({ str: query[el] })\n }\n }\n })\n\n if (remove) {\n const applied = activeFilters[pair.aggType].split(';')[2].split(',')\n\n const remaining = applied.filter((x: string) => !pair.aggKey.includes(x))\n\n if (remaining.length === 0) {\n activeFilters[pair.aggType] = ``\n } else {\n activeFilters[pair.aggType] = `filter=${pair.aggType};${\n pair.aggOperator\n };${remaining.join(',')}`\n }\n } else {\n extractFilter({ str: '', aggPair: pair })\n }\n\n if (Object.keys(activeFilters).length === 0) return ``\n\n return Object.keys(activeFilters).reduce((res, val, idx) => {\n res += `${idx > 0 ? '&' : ''}${activeFilters[val]}`\n return res\n }, ``)\n}\n\nfunction createAggregateQuery(\n type: ListingTypesEnum,\n slug: string,\n aggPair: AggPair,\n remove: boolean,\n router: NextRouter\n) {\n if (type === ListingTypesEnum.Search) {\n return router.query.q\n ? `/search?q=${router.query.q}&${manageFilter(\n aggPair,\n router.query,\n remove\n )}`\n : `/${slug}/c?search=${router.query.search}&${manageFilter(\n aggPair,\n router.query,\n remove\n )}`\n }\n\n if (router.query.cat) {\n return `/${router.query.slug}/${router.query.cat}/${\n typeToSuffix[type]\n }?${manageFilter(aggPair, router.query, remove)}`\n }\n\n return `/${slug}/${typeToSuffix[type]}?${manageFilter(\n aggPair,\n router.query,\n remove\n )}`\n}\n\nfunction filterByType(\n filters: string | string[] | undefined,\n filterName: string\n) {\n if (!filters) return\n\n if (typeof filters === 'string') {\n if (filters.includes(filterName)) return\n\n return filters\n }\n\n return filters.filter((filter) => !filter.includes(filterName))\n}\n"],"file":"useListingFilters.js"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+
5
+ var _useToasts = require("./useToasts");
6
+
7
+ Object.keys(_useToasts).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _useToasts[key]) return;
10
+ exports[key] = _useToasts[key];
11
+ });
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/ui/hooks/index.ts"],"names":[],"mappings":";;;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA","sourcesContent":["export * from './useToasts'\n"],"file":"index.js"}
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ exports.__esModule = true;
6
+ exports.useToasts = useToasts;
7
+ exports.ToastProvider = void 0;
8
+
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
+
11
+ var _react = _interopRequireDefault(require("react"));
12
+
13
+ var _router = require("next/router");
14
+
15
+ var _uuid = require("uuid");
16
+
17
+ var _toastUtils = require("../toastUtils");
18
+
19
+ var ToastContext = /*#__PURE__*/_react["default"].createContext(undefined);
20
+
21
+ var ToastProvider = function ToastProvider(_ref) {
22
+ var children = _ref.children,
23
+ _ref$duration = _ref.duration,
24
+ duration = _ref$duration === void 0 ? 5000 : _ref$duration,
25
+ style = _ref.style;
26
+
27
+ var _React$useState = _react["default"].useState([]),
28
+ toasts = _React$useState[0],
29
+ setToasts = _React$useState[1];
30
+
31
+ var addToast = function addToast(content, options) {
32
+ setToasts([{
33
+ content: content,
34
+ options: options,
35
+ id: (0, _uuid.v4)()
36
+ }].concat(toasts));
37
+ };
38
+
39
+ var deleteToasts = _react["default"].useCallback(function () {
40
+ setToasts([]);
41
+ }, []);
42
+
43
+ var values = {
44
+ addToast: addToast
45
+ };
46
+ var router = (0, _router.useRouter)();
47
+
48
+ _react["default"].useEffect(function () {
49
+ deleteToasts();
50
+ }, [deleteToasts, router.asPath]);
51
+
52
+ return /*#__PURE__*/_react["default"].createElement(ToastContext.Provider, {
53
+ value: values
54
+ }, children, /*#__PURE__*/_react["default"].createElement("style", {
55
+ dangerouslySetInnerHTML: {
56
+ __html: "\n .Toasts--container {\n position: fixed;\n right: 0;\n transform: translateX(100%);\n top: 0;\n width: 25rem;\n display: flex;\n align-items: stretch;\n flex-direction: column;\n z-index: 99999;\n gap: 0.5rem;\n font-size: 0.8rem;\n padding: 1rem;\n }\n .Toast--left {\n width: 2rem;\n border-radius: 0.3rem 0 0 0.3rem;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n @keyframes showToast {\n 0% { opacity: 0; transform: translateX(0%);}\n 10% {opacity: 1; transform: translateX(-105%)}\n 90% {opacity: 1; transform: translateX(-105%)}\n 100% {opacity: 0; transform: translateX(0%);}\n }\n "
57
+ }
58
+ }), /*#__PURE__*/_react["default"].createElement("div", {
59
+ className: "Toasts--container"
60
+ }, toasts.map(function (toast) {
61
+ var _toast$options, _toast$options2, _toast$options3, _toast$options4, _toast$options5;
62
+
63
+ return /*#__PURE__*/_react["default"].createElement("div", {
64
+ key: toast.id,
65
+ className: "Toast",
66
+ style: (0, _extends2["default"])({}, (0, _toastUtils.defaultStyle)(duration))
67
+ }, /*#__PURE__*/_react["default"].createElement("div", {
68
+ className: "Toast--left",
69
+ style: {
70
+ color: (0, _toastUtils.getBackground)((_toast$options = toast.options) == null ? void 0 : _toast$options.appearance),
71
+ background: (0, _toastUtils.getMainColor)((_toast$options2 = toast.options) == null ? void 0 : _toast$options2.appearance)
72
+ }
73
+ }, (0, _toastUtils.getIcon)((_toast$options3 = toast.options) == null ? void 0 : _toast$options3.appearance)), /*#__PURE__*/_react["default"].createElement("div", {
74
+ className: "Toast--content",
75
+ style: (0, _extends2["default"])({
76
+ padding: '8px 12px',
77
+ width: '100%',
78
+ background: (0, _toastUtils.getBackground)((_toast$options4 = toast.options) == null ? void 0 : _toast$options4.appearance),
79
+ color: (0, _toastUtils.getTextColor)((_toast$options5 = toast.options) == null ? void 0 : _toast$options5.appearance)
80
+ }, style)
81
+ }, toast.content));
82
+ })));
83
+ };
84
+
85
+ exports.ToastProvider = ToastProvider;
86
+
87
+ function useToasts() {
88
+ var context = _react["default"].useContext(ToastContext);
89
+
90
+ if (context === undefined) {
91
+ throw new Error('useToasts must be used within ToastProvider');
92
+ }
93
+
94
+ return context;
95
+ }
96
+ //# sourceMappingURL=useToasts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/ui/hooks/useToasts.tsx"],"names":["ToastContext","React","createContext","undefined","ToastProvider","children","duration","style","useState","toasts","setToasts","addToast","content","options","id","deleteToasts","useCallback","values","router","useEffect","asPath","__html","map","toast","color","appearance","background","padding","width","useToasts","context","useContext","Error"],"mappings":";;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAuBA,IAAMA,YAAY,gBAAGC,kBAAMC,aAAN,CAA6CC,SAA7C,CAArB;;AAEO,IAAMC,aAAa,GAAG,SAAhBA,aAAgB,OAQvB;AAAA,MAPJC,QAOI,QAPJA,QAOI;AAAA,2BANJC,QAMI;AAAA,MANJA,QAMI,8BANO,IAMP;AAAA,MALJC,KAKI,QALJA,KAKI;;AAAA,wBACwBN,kBAAMO,QAAN,CAAwB,EAAxB,CADxB;AAAA,MACGC,MADH;AAAA,MACWC,SADX;;AAGJ,MAAMC,QAAQ,GAAG,SAAXA,QAAW,CAACC,OAAD,EAAkBC,OAAlB,EAA6C;AAC5DH,IAAAA,SAAS,EAAE;AAAEE,MAAAA,OAAO,EAAPA,OAAF;AAAWC,MAAAA,OAAO,EAAPA,OAAX;AAAoBC,MAAAA,EAAE,EAAE;AAAxB,KAAF,SAAuCL,MAAvC,EAAT;AACD,GAFD;;AAIA,MAAMM,YAAY,GAAGd,kBAAMe,WAAN,CAAkB,YAAM;AAC3CN,IAAAA,SAAS,CAAC,EAAD,CAAT;AACD,GAFoB,EAElB,EAFkB,CAArB;;AAIA,MAAMO,MAAM,GAAG;AACbN,IAAAA,QAAQ,EAARA;AADa,GAAf;AAIA,MAAMO,MAAM,GAAG,wBAAf;;AAEAjB,oBAAMkB,SAAN,CAAgB,YAAM;AACpBJ,IAAAA,YAAY;AACb,GAFD,EAEG,CAACA,YAAD,EAAeG,MAAM,CAACE,MAAtB,CAFH;;AAIA,sBACE,gCAAC,YAAD,CAAc,QAAd;AAAuB,IAAA,KAAK,EAAEH;AAA9B,KACGZ,QADH,eAEE;AACE,IAAA,uBAAuB,EAAE;AACvBgB,MAAAA,MAAM;AADiB;AAD3B,IAFF,eAoCE;AAAK,IAAA,SAAS,EAAC;AAAf,KACGZ,MAAM,CAACa,GAAP,CAAW,UAACC,KAAD,EAAW;AAAA;;AACrB,wBACE;AACE,MAAA,GAAG,EAAEA,KAAK,CAACT,EADb;AAEE,MAAA,SAAS,EAAC,OAFZ;AAGE,MAAA,KAAK,gCACA,8BAAaR,QAAb,CADA;AAHP,oBAOE;AACE,MAAA,SAAS,EAAC,aADZ;AAEE,MAAA,KAAK,EAAE;AACLkB,QAAAA,KAAK,EAAE,iDAAcD,KAAK,CAACV,OAApB,qBAAc,eAAeY,UAA7B,CADF;AAELC,QAAAA,UAAU,EAAE,iDAAaH,KAAK,CAACV,OAAnB,qBAAa,gBAAeY,UAA5B;AAFP;AAFT,OAOG,4CAAQF,KAAK,CAACV,OAAd,qBAAQ,gBAAeY,UAAvB,CAPH,CAPF,eAgBE;AACE,MAAA,SAAS,EAAC,gBADZ;AAEE,MAAA,KAAK;AACHE,QAAAA,OAAO,EAAE,UADN;AAEHC,QAAAA,KAAK,EAAE,MAFJ;AAGHF,QAAAA,UAAU,EAAE,kDAAcH,KAAK,CAACV,OAApB,qBAAc,gBAAeY,UAA7B,CAHT;AAIHD,QAAAA,KAAK,EAAE,iDAAaD,KAAK,CAACV,OAAnB,qBAAa,gBAAeY,UAA5B;AAJJ,SAKAlB,KALA;AAFP,OAUGgB,KAAK,CAACX,OAVT,CAhBF,CADF;AA+BD,GAhCA,CADH,CApCF,CADF;AA0ED,CAvGM;;;;AAyGA,SAASiB,SAAT,GAAqB;AAC1B,MAAMC,OAAO,GAAG7B,kBAAM8B,UAAN,CAAiB/B,YAAjB,CAAhB;;AAEA,MAAI8B,OAAO,KAAK3B,SAAhB,EAA2B;AACzB,UAAM,IAAI6B,KAAJ,CAAU,6CAAV,CAAN;AACD;;AAED,SAAOF,OAAP;AACD","sourcesContent":["import React from 'react'\nimport { useRouter } from 'next/router'\nimport { v4 as uuid } from 'uuid'\nimport {\n getMainColor,\n getIcon,\n getBackground,\n defaultStyle,\n getTextColor,\n} from '../toastUtils'\n\nexport interface ToastOptions {\n appearance?: 'error' | 'info' | 'success' | 'warning'\n autoDismiss?: boolean\n}\n\nexport interface Toast {\n content: string\n options?: ToastOptions\n id: string\n}\n\ntype ToastValues = {\n addToast: (content: string, options?: ToastOptions) => void\n}\n\nconst ToastContext = React.createContext<ToastValues | undefined>(undefined)\n\nexport const ToastProvider = ({\n children,\n duration = 5000,\n style,\n}: {\n children: React.ReactNode\n duration?: number\n style?: object\n}) => {\n const [toasts, setToasts] = React.useState<Toast[]>([])\n\n const addToast = (content: string, options?: ToastOptions) => {\n setToasts([{ content, options, id: uuid() }, ...toasts])\n }\n\n const deleteToasts = React.useCallback(() => {\n setToasts([])\n }, [])\n\n const values = {\n addToast,\n }\n\n const router = useRouter()\n\n React.useEffect(() => {\n deleteToasts()\n }, [deleteToasts, router.asPath])\n\n return (\n <ToastContext.Provider value={values}>\n {children}\n <style\n dangerouslySetInnerHTML={{\n __html: `\n .Toasts--container {\n position: fixed;\n right: 0;\n transform: translateX(100%);\n top: 0;\n width: 25rem;\n display: flex;\n align-items: stretch;\n flex-direction: column;\n z-index: 99999;\n gap: 0.5rem;\n font-size: 0.8rem;\n padding: 1rem;\n }\n .Toast--left {\n width: 2rem;\n border-radius: 0.3rem 0 0 0.3rem;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n @keyframes showToast {\n 0% { opacity: 0; transform: translateX(0%);}\n 10% {opacity: 1; transform: translateX(-105%)}\n 90% {opacity: 1; transform: translateX(-105%)}\n 100% {opacity: 0; transform: translateX(0%);}\n }\n `,\n }}\n />\n <div className=\"Toasts--container\">\n {toasts.map((toast) => {\n return (\n <div\n key={toast.id}\n className=\"Toast\"\n style={{\n ...defaultStyle(duration),\n }}\n >\n <div\n className=\"Toast--left\"\n style={{\n color: getBackground(toast.options?.appearance),\n background: getMainColor(toast.options?.appearance),\n }}\n >\n {getIcon(toast.options?.appearance)}\n </div>\n <div\n className=\"Toast--content\"\n style={{\n padding: '8px 12px',\n width: '100%',\n background: getBackground(toast.options?.appearance),\n color: getTextColor(toast.options?.appearance),\n ...style,\n }}\n >\n {toast.content}\n </div>\n </div>\n )\n })}\n </div>\n </ToastContext.Provider>\n )\n}\n\nexport function useToasts() {\n const context = React.useContext(ToastContext)\n\n if (context === undefined) {\n throw new Error('useToasts must be used within ToastProvider')\n }\n\n return context\n}\n"],"file":"useToasts.js"}
@@ -9,4 +9,12 @@ Object.keys(_components).forEach(function (key) {
9
9
  if (key in exports && exports[key] === _components[key]) return;
10
10
  exports[key] = _components[key];
11
11
  });
12
+
13
+ var _hooks = require("./hooks");
14
+
15
+ Object.keys(_hooks).forEach(function (key) {
16
+ if (key === "default" || key === "__esModule") return;
17
+ if (key in exports && exports[key] === _hooks[key]) return;
18
+ exports[key] = _hooks[key];
19
+ });
12
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/ui/index.ts"],"names":[],"mappings":";;;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA","sourcesContent":["export * from './components'"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../src/ui/index.ts"],"names":[],"mappings":";;;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA","sourcesContent":["export * from './components'\nexport * from './hooks'\n"],"file":"index.js"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ exports.__esModule = true;
6
+ exports.ErrorIcon = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var ErrorIcon = function ErrorIcon() {
11
+ return /*#__PURE__*/_react["default"].createElement("svg", {
12
+ "aria-hidden": "true",
13
+ height: "16",
14
+ width: "12",
15
+ viewBox: "0 0 12 16",
16
+ style: {
17
+ fill: 'currentcolor'
18
+ }
19
+ }, /*#__PURE__*/_react["default"].createElement("path", {
20
+ "fill-rule": "evenodd",
21
+ d: "M5.05.01c.81 2.17.41 3.38-.52 4.31C3.55 5.37 1.98 6.15.9 7.68c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.01 8.68 2.15 5.05.02L5.03 0l.02.01z"
22
+ }));
23
+ };
24
+
25
+ exports.ErrorIcon = ErrorIcon;
26
+ //# sourceMappingURL=ErrorIcon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/ui/toastUtils/ErrorIcon.tsx"],"names":["ErrorIcon","fill"],"mappings":";;;;;;;AAAA;;AACO,IAAMA,SAAS,GAAG,SAAZA,SAAY,GAAM;AAC7B,sBACE;AACE,mBAAY,MADd;AAEE,IAAA,MAAM,EAAC,IAFT;AAGE,IAAA,KAAK,EAAC,IAHR;AAIE,IAAA,OAAO,EAAC,WAJV;AAKE,IAAA,KAAK,EAAE;AACLC,MAAAA,IAAI,EAAE;AADD;AALT,kBASE;AACE,iBAAU,SADZ;AAEE,IAAA,CAAC,EAAC;AAFJ,IATF,CADF;AAgBD,CAjBM","sourcesContent":["import React from 'react'\nexport const ErrorIcon = () => {\n return (\n <svg\n aria-hidden=\"true\"\n height=\"16\"\n width=\"12\"\n viewBox=\"0 0 12 16\"\n style={{\n fill: 'currentcolor',\n }}\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M5.05.01c.81 2.17.41 3.38-.52 4.31C3.55 5.37 1.98 6.15.9 7.68c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.01 8.68 2.15 5.05.02L5.03 0l.02.01z\"\n ></path>\n </svg>\n )\n}\n"],"file":"ErrorIcon.js"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ exports.__esModule = true;
6
+ exports.InfoIcon = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var InfoIcon = function InfoIcon() {
11
+ return /*#__PURE__*/_react["default"].createElement("svg", {
12
+ "aria-hidden": "true",
13
+ height: "16",
14
+ width: "14",
15
+ viewBox: "0 0 14 16",
16
+ style: {
17
+ fill: 'currentcolor'
18
+ }
19
+ }, /*#__PURE__*/_react["default"].createElement("path", {
20
+ "fill-rule": "evenodd",
21
+ d: "M6.3 5.71a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 8.01c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V8v.01zM7 2.32C3.86 2.32 1.3 4.86 1.3 8c0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 1c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"
22
+ }));
23
+ };
24
+
25
+ exports.InfoIcon = InfoIcon;
26
+ //# sourceMappingURL=InfoIcon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/ui/toastUtils/InfoIcon.tsx"],"names":["InfoIcon","fill"],"mappings":";;;;;;;AAAA;;AAEO,IAAMA,QAAQ,GAAG,SAAXA,QAAW,GAAM;AAC5B,sBACE;AACE,mBAAY,MADd;AAEE,IAAA,MAAM,EAAC,IAFT;AAGE,IAAA,KAAK,EAAC,IAHR;AAIE,IAAA,OAAO,EAAC,WAJV;AAKE,IAAA,KAAK,EAAE;AAAEC,MAAAA,IAAI,EAAE;AAAR;AALT,kBAOE;AACE,iBAAU,SADZ;AAEE,IAAA,CAAC,EAAC;AAFJ,IAPF,CADF;AAcD,CAfM","sourcesContent":["import React from 'react'\n\nexport const InfoIcon = () => {\n return (\n <svg\n aria-hidden=\"true\"\n height=\"16\"\n width=\"14\"\n viewBox=\"0 0 14 16\"\n style={{ fill: 'currentcolor' }}\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M6.3 5.71a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 8.01c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V8v.01zM7 2.32C3.86 2.32 1.3 4.86 1.3 8c0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 1c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z\"\n ></path>\n </svg>\n )\n}\n"],"file":"InfoIcon.js"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ exports.__esModule = true;
6
+ exports.SuccessIcon = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var SuccessIcon = function SuccessIcon() {
11
+ return /*#__PURE__*/_react["default"].createElement("svg", {
12
+ "aria-hidden": "true",
13
+ height: "16",
14
+ width: "12",
15
+ viewBox: "0 0 12 16",
16
+ style: {
17
+ fill: 'currentcolor'
18
+ }
19
+ }, /*#__PURE__*/_react["default"].createElement("path", {
20
+ "fill-rule": "evenodd",
21
+ d: "M12 5.5l-8 8-4-4L1.5 8 4 10.5 10.5 4 12 5.5z"
22
+ }));
23
+ };
24
+
25
+ exports.SuccessIcon = SuccessIcon;
26
+ //# sourceMappingURL=SuccessIcon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/ui/toastUtils/SuccessIcon.tsx"],"names":["SuccessIcon","fill"],"mappings":";;;;;;;AAAA;;AAEO,IAAMA,WAAW,GAAG,SAAdA,WAAc,GAAM;AAC/B,sBACE;AACE,mBAAY,MADd;AAEE,IAAA,MAAM,EAAC,IAFT;AAGE,IAAA,KAAK,EAAC,IAHR;AAIE,IAAA,OAAO,EAAC,WAJV;AAKE,IAAA,KAAK,EAAE;AAAEC,MAAAA,IAAI,EAAE;AAAR;AALT,kBAOE;AACE,iBAAU,SADZ;AAEE,IAAA,CAAC,EAAC;AAFJ,IAPF,CADF;AAcD,CAfM","sourcesContent":["import React from 'react'\n\nexport const SuccessIcon = () => {\n return (\n <svg\n aria-hidden=\"true\"\n height=\"16\"\n width=\"12\"\n viewBox=\"0 0 12 16\"\n style={{ fill: 'currentcolor' }}\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M12 5.5l-8 8-4-4L1.5 8 4 10.5 10.5 4 12 5.5z\"\n ></path>\n </svg>\n )\n}\n"],"file":"SuccessIcon.js"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ exports.__esModule = true;
6
+ exports.WarningIcon = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var WarningIcon = function WarningIcon() {
11
+ return /*#__PURE__*/_react["default"].createElement("svg", {
12
+ "aria-hidden": "true",
13
+ height: "16",
14
+ width: "16",
15
+ viewBox: "0 0 16 16",
16
+ style: {
17
+ fill: 'currentcolor'
18
+ }
19
+ }, /*#__PURE__*/_react["default"].createElement("path", {
20
+ "fill-rule": "evenodd",
21
+ d: "M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"
22
+ }));
23
+ };
24
+
25
+ exports.WarningIcon = WarningIcon;
26
+ //# sourceMappingURL=WarningIcon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/ui/toastUtils/WarningIcon.tsx"],"names":["WarningIcon","fill"],"mappings":";;;;;;;AAAA;;AAEO,IAAMA,WAAW,GAAG,SAAdA,WAAc,GAAM;AAC/B,sBACE;AACE,mBAAY,MADd;AAEE,IAAA,MAAM,EAAC,IAFT;AAGE,IAAA,KAAK,EAAC,IAHR;AAIE,IAAA,OAAO,EAAC,WAJV;AAKE,IAAA,KAAK,EAAE;AAAEC,MAAAA,IAAI,EAAE;AAAR;AALT,kBAOE;AACE,iBAAU,SADZ;AAEE,IAAA,CAAC,EAAC;AAFJ,IAPF,CADF;AAcD,CAfM","sourcesContent":["import React from 'react'\n\nexport const WarningIcon = () => {\n return (\n <svg\n aria-hidden=\"true\"\n height=\"16\"\n width=\"16\"\n viewBox=\"0 0 16 16\"\n style={{ fill: 'currentcolor' }}\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z\"\n ></path>\n </svg>\n )\n}\n"],"file":"WarningIcon.js"}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+
5
+ var _ErrorIcon = require("./ErrorIcon");
6
+
7
+ Object.keys(_ErrorIcon).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _ErrorIcon[key]) return;
10
+ exports[key] = _ErrorIcon[key];
11
+ });
12
+
13
+ var _SuccessIcon = require("./SuccessIcon");
14
+
15
+ Object.keys(_SuccessIcon).forEach(function (key) {
16
+ if (key === "default" || key === "__esModule") return;
17
+ if (key in exports && exports[key] === _SuccessIcon[key]) return;
18
+ exports[key] = _SuccessIcon[key];
19
+ });
20
+
21
+ var _utils = require("./utils");
22
+
23
+ Object.keys(_utils).forEach(function (key) {
24
+ if (key === "default" || key === "__esModule") return;
25
+ if (key in exports && exports[key] === _utils[key]) return;
26
+ exports[key] = _utils[key];
27
+ });
28
+
29
+ var _InfoIcon = require("./InfoIcon");
30
+
31
+ Object.keys(_InfoIcon).forEach(function (key) {
32
+ if (key === "default" || key === "__esModule") return;
33
+ if (key in exports && exports[key] === _InfoIcon[key]) return;
34
+ exports[key] = _InfoIcon[key];
35
+ });
36
+
37
+ var _WarningIcon = require("./WarningIcon");
38
+
39
+ Object.keys(_WarningIcon).forEach(function (key) {
40
+ if (key === "default" || key === "__esModule") return;
41
+ if (key in exports && exports[key] === _WarningIcon[key]) return;
42
+ exports[key] = _WarningIcon[key];
43
+ });
44
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/ui/toastUtils/index.ts"],"names":[],"mappings":";;;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA","sourcesContent":["export * from './ErrorIcon'\nexport * from './SuccessIcon'\nexport * from './utils'\nexport * from './InfoIcon'\nexport * from './WarningIcon'\n"],"file":"index.js"}
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ exports.__esModule = true;
6
+ exports.defaultStyle = exports.getBackground = exports.getIcon = exports.getTextColor = exports.getMainColor = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _index = require("./index");
11
+
12
+ var getMainColor = function getMainColor(mode) {
13
+ switch (mode) {
14
+ case 'error':
15
+ return "#FF5630";
16
+
17
+ case 'success':
18
+ return "#36B37E";
19
+
20
+ case 'info':
21
+ return "#2684FF";
22
+
23
+ case 'warning':
24
+ return "#FFAB00";
25
+
26
+ default:
27
+ return "#2684FF";
28
+ }
29
+ };
30
+
31
+ exports.getMainColor = getMainColor;
32
+
33
+ var getTextColor = function getTextColor(mode) {
34
+ switch (mode) {
35
+ case 'error':
36
+ return "#BF2600";
37
+
38
+ case 'success':
39
+ return "#006644";
40
+
41
+ case 'info':
42
+ return "#505F79";
43
+
44
+ case 'warning':
45
+ return "#FF8B00";
46
+
47
+ default:
48
+ return "#505F79";
49
+ }
50
+ };
51
+
52
+ exports.getTextColor = getTextColor;
53
+
54
+ var getIcon = function getIcon(mode) {
55
+ switch (mode) {
56
+ case 'error':
57
+ return /*#__PURE__*/_react["default"].createElement(_index.ErrorIcon, null);
58
+
59
+ case 'success':
60
+ return /*#__PURE__*/_react["default"].createElement(_index.SuccessIcon, null);
61
+
62
+ case 'info':
63
+ return /*#__PURE__*/_react["default"].createElement(_index.InfoIcon, null);
64
+
65
+ case 'warning':
66
+ return /*#__PURE__*/_react["default"].createElement(_index.WarningIcon, null);
67
+
68
+ default:
69
+ return /*#__PURE__*/_react["default"].createElement(_index.InfoIcon, null);
70
+ }
71
+ };
72
+
73
+ exports.getIcon = getIcon;
74
+
75
+ var getBackground = function getBackground(mode) {
76
+ switch (mode) {
77
+ case 'error':
78
+ return "#FFEBE6";
79
+
80
+ case 'success':
81
+ return "#E3FCEF";
82
+
83
+ case 'info':
84
+ return "#fff";
85
+
86
+ case 'warning':
87
+ return "#FFFAE6";
88
+
89
+ default:
90
+ return "#fff";
91
+ }
92
+ };
93
+
94
+ exports.getBackground = getBackground;
95
+
96
+ var defaultStyle = function defaultStyle(duration) {
97
+ return {
98
+ height: 'fit-content',
99
+ borderRadius: '0.3rem',
100
+ display: 'flex',
101
+ opacity: '0',
102
+ animation: duration + "ms cubic-bezier(0.4, 0, 0.2, 1) 0s 1 normal forwards running showToast"
103
+ };
104
+ };
105
+
106
+ exports.defaultStyle = defaultStyle;
107
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/ui/toastUtils/utils.tsx"],"names":["getMainColor","mode","getTextColor","getIcon","getBackground","defaultStyle","duration","height","borderRadius","display","opacity","animation"],"mappings":";;;;;;;AAAA;;AACA;;AAEO,IAAMA,YAAY,GAAG,SAAfA,YAAe,CAACC,IAAD,EAAmB;AAC7C,UAAQA,IAAR;AACE,SAAK,OAAL;AACE;;AACF,SAAK,SAAL;AACE;;AACF,SAAK,MAAL;AACE;;AACF,SAAK,SAAL;AACE;;AACF;AACE;AAVJ;AAYD,CAbM;;;;AAcA,IAAMC,YAAY,GAAG,SAAfA,YAAe,CAACD,IAAD,EAAmB;AAC7C,UAAQA,IAAR;AACE,SAAK,OAAL;AACE;;AACF,SAAK,SAAL;AACE;;AACF,SAAK,MAAL;AACE;;AACF,SAAK,SAAL;AACE;;AACF;AACE;AAVJ;AAYD,CAbM;;;;AAeA,IAAME,OAAO,GAAG,SAAVA,OAAU,CAACF,IAAD,EAAmB;AACxC,UAAQA,IAAR;AACE,SAAK,OAAL;AACE,0BAAO,gCAAC,gBAAD,OAAP;;AACF,SAAK,SAAL;AACE,0BAAO,gCAAC,kBAAD,OAAP;;AACF,SAAK,MAAL;AACE,0BAAO,gCAAC,eAAD,OAAP;;AACF,SAAK,SAAL;AACE,0BAAO,gCAAC,kBAAD,OAAP;;AACF;AACE,0BAAO,gCAAC,eAAD,OAAP;AAVJ;AAYD,CAbM;;;;AAeA,IAAMG,aAAa,GAAG,SAAhBA,aAAgB,CAACH,IAAD,EAAmB;AAC9C,UAAQA,IAAR;AACE,SAAK,OAAL;AACE;;AACF,SAAK,SAAL;AACE;;AACF,SAAK,MAAL;AACE;;AACF,SAAK,SAAL;AACE;;AACF;AACE;AAVJ;AAYD,CAbM;;;;AAeA,IAAMI,YAAY,GAAG,SAAfA,YAAe,CAACC,QAAD;AAAA,SAAuB;AACjDC,IAAAA,MAAM,EAAE,aADyC;AAEjDC,IAAAA,YAAY,EAAE,QAFmC;AAGjDC,IAAAA,OAAO,EAAE,MAHwC;AAIjDC,IAAAA,OAAO,EAAE,GAJwC;AAKjDC,IAAAA,SAAS,EAAKL,QAAL;AALwC,GAAvB;AAAA,CAArB","sourcesContent":["import React from 'react'\nimport { ErrorIcon, SuccessIcon, InfoIcon, WarningIcon } from './index'\n\nexport const getMainColor = (mode?: string) => {\n switch (mode) {\n case 'error':\n return `#FF5630`\n case 'success':\n return `#36B37E`\n case 'info':\n return `#2684FF`\n case 'warning':\n return `#FFAB00`\n default:\n return `#2684FF`\n }\n}\nexport const getTextColor = (mode?: string) => {\n switch (mode) {\n case 'error':\n return `#BF2600`\n case 'success':\n return `#006644`\n case 'info':\n return `#505F79`\n case 'warning':\n return `#FF8B00`\n default:\n return `#505F79`\n }\n}\n\nexport const getIcon = (mode?: string) => {\n switch (mode) {\n case 'error':\n return <ErrorIcon />\n case 'success':\n return <SuccessIcon />\n case 'info':\n return <InfoIcon />\n case 'warning':\n return <WarningIcon />\n default:\n return <InfoIcon />\n }\n}\n\nexport const getBackground = (mode?: string) => {\n switch (mode) {\n case 'error':\n return `#FFEBE6`\n case 'success':\n return `#E3FCEF`\n case 'info':\n return `#fff`\n case 'warning':\n return `#FFFAE6`\n default:\n return `#fff`\n }\n}\n\nexport const defaultStyle = (duration: number) => ({\n height: 'fit-content',\n borderRadius: '0.3rem',\n display: 'flex',\n opacity: '0',\n animation: `${duration}ms cubic-bezier(0.4, 0, 0.2, 1) 0s 1 normal forwards running showToast`,\n})\n"],"file":"utils.js"}
@@ -30,7 +30,7 @@ export function ListingFiltersProvider(_ref) {
30
30
  var data = React.useMemo(() => {
31
31
  if (!isLoading && aggData) {
32
32
  var result = aggregates == null ? void 0 : aggregates.sort((a, b) => a.order - b.order).map(currentAggregate => {
33
- var _listing$slugAliases$;
33
+ var _listing$slugAliases$, _listing$slugAliases;
34
34
 
35
35
  var type = currentAggregate.aggregationType.toString();
36
36
  var term = currentAggregate.aggregationDefinition.split(':')[0];
@@ -41,7 +41,7 @@ export function ListingFiltersProvider(_ref) {
41
41
  filter,
42
42
  router,
43
43
  type,
44
- slug: (_listing$slugAliases$ = config.listing.slugAliases[slug]) != null ? _listing$slugAliases$ : slug,
44
+ slug: (_listing$slugAliases$ = (_listing$slugAliases = config.listing.slugAliases) == null ? void 0 : _listing$slugAliases[slug]) != null ? _listing$slugAliases$ : slug,
45
45
  pageType
46
46
  });
47
47
  var selectedCount = generatedFilters == null ? void 0 : generatedFilters.reduce((count, res) => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/listing/hooks/useListingFilters.tsx"],"names":["React","useRouter","useListingConfig","useAggregateQuery","AggregateRequestEnum","ListingTypesEnum","useListingSlug","stripQueryProps","typeToSuffix","getSelectedFilters","useConfigState","ListingFiltersStateContext","createContext","undefined","ListingFiltersProvider","children","aggregates","type","pageType","attributeSortType","data","aggData","isLoading","isFetching","Filters","config","router","slug","useMemo","result","sort","a","b","order","map","currentAggregate","aggregationType","toString","term","aggregationDefinition","split","filter","filterDefinition","current","find","agg","name","generatedFilters","generateFilters","rawFilters","listing","slugAliases","selectedCount","reduce","count","res","selected","attributeResult","label","component","items","raw","clearAll","push","pathname","query","filterByType","clearAllFilters","selectedFilters","useListingFilters","context","useContext","Error","results","currentTerm","filterKey","mapKey","isFilterSelected","filtersOperatorsMap","meta","onClick","createAggregateQuery","aggType","aggKey","aggOperator","Boolean","areFiltersArray","Array","isArray","sel","includes","ranges","stats","terms","r","keysMap","key","from","to","manageFilter","pair","remove","stripped","generateQueryString","activeFilters","extractFilter","str","aggPair","operator","val","filterType","filterVal","filterOperator","Object","keys","forEach","el","applied","remaining","x","length","join","idx","Search","q","search","cat","filters","filterName"],"mappings":"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","sourcesContent":["import React from 'react'\nimport { useRouter } from 'next/router'\nimport { NextRouter } from 'next/router'\nimport { useListingConfig } from './useListingConfig'\nimport {\n useAggregateQuery,\n AggregateRequestEnum,\n AggregateType,\n AggregationResultType,\n} from '../api'\n\nimport { Aggregate, ListingTypesEnum } from '../types'\nimport { useListingSlug } from './useListingSlug'\n\nimport { stripQueryProps } from '../../utils/generateQueryFromRouter'\nimport { typeToSuffix } from '../../utils/typeToSuffix'\nimport { generateQueryStringFromQuery } from '../../utils/generateQueryStringFromQuery'\nimport {\n RangeAggregation,\n StatAggregation,\n TermAggregation,\n} from '@sentecacommerce/sdk'\nimport { getSelectedFilters } from '../../utils'\nimport { useConfigState } from '../../index'\nimport { FiltersQuery } from '../index'\n\nexport type {\n RangeAggregation,\n StatAggregation,\n TermAggregation,\n} from '@sentecacommerce/sdk'\n\ntype AggPair = {\n aggType: string\n aggKey: string\n aggOperator: string\n}\n\nexport type ListingAggregationResultType = {\n selected: boolean\n data: AggregationResultType\n meta: any\n aggregationType?: string\n onClick: () => void\n}\n\nexport type ListingAggregateType = {\n name: string\n component: string\n type: string\n selectedCount: number\n items: ListingAggregationResultType[]\n clearAll: () => void\n raw: StatAggregation | RangeAggregation | TermAggregation\n}\n\nexport type UseListingFiltersResult = {\n data?: ListingAggregateType[]\n clearAllFilters: () => void\n selectedFilters: ListingAggregationResultType[]\n isLoading: boolean\n isFetching: boolean\n}\n\nconst ListingFiltersStateContext = React.createContext<\n UseListingFiltersResult | undefined\n>(undefined)\n\nexport function ListingFiltersProvider({\n children,\n}: {\n children: React.ReactNode\n}) {\n const { aggregates, type: pageType, attributeSortType } = useListingConfig()\n\n const { data: aggData, isLoading, isFetching } = useAggregateQuery(\n aggregates as Aggregate[],\n AggregateRequestEnum.Filters,\n attributeSortType\n )\n\n const config = useConfigState()\n const router = useRouter()\n const slug = useListingSlug()\n\n const data = React.useMemo(() => {\n if (!isLoading && aggData) {\n const result = aggregates\n ?.sort((a, b) => a.order - b.order)\n .map((currentAggregate) => {\n const type = currentAggregate.aggregationType.toString()\n const term = currentAggregate.aggregationDefinition.split(':')[0]\n const filter = currentAggregate.filterDefinition\n const current: AggregateType = aggData[type].find(\n (agg: AggregateType) => agg.name === term\n )\n\n const generatedFilters = generateFilters({\n rawFilters: current,\n filter,\n router,\n type,\n slug: (config as any).listing.slugAliases[slug] ?? slug,\n pageType,\n })\n\n const selectedCount = generatedFilters?.reduce((count, res) => {\n if (res.selected) count++\n return count\n }, 0)\n\n const attributeResult = ({\n name: currentAggregate.label,\n component: currentAggregate.component,\n items: generatedFilters,\n selectedCount,\n raw: current,\n clearAll: () =>\n router.push({\n pathname: router.pathname,\n query: {\n ...router.query,\n filter: filterByType(router.query.filter, filter),\n },\n }),\n type: type,\n } as unknown) as ListingAggregateType\n\n return attributeResult\n })\n\n return result\n }\n return undefined\n }, [aggData, router])\n\n const clearAllFilters = () => {\n const query = { ...router.query }\n delete query.filter\n\n router.push({\n pathname: router.pathname,\n query,\n })\n }\n\n const selectedFilters = React.useMemo(() => {\n return getSelectedFilters(router, slug, data as any, config) as any\n }, [router, data])\n\n return (\n <ListingFiltersStateContext.Provider\n value={{ data, clearAllFilters, selectedFilters, isLoading, isFetching }}\n >\n {children}\n </ListingFiltersStateContext.Provider>\n )\n}\n\nexport function useListingFilters() {\n const context = React.useContext(ListingFiltersStateContext)\n if (context === undefined) {\n throw new Error(\n 'useListingFilters must be used within a ListingFiltersProvider'\n )\n }\n return context\n}\n\nfunction generateFilters({\n rawFilters,\n type,\n filter,\n slug,\n router,\n pageType,\n}: {\n rawFilters: AggregateType\n type: string\n filter: string\n slug: string\n router: NextRouter\n pageType: ListingTypesEnum\n}) {\n return rawFilters.results\n ?.filter((res) => res.count > 0)\n ?.map((currentTerm) => {\n const filterKey = mapKey(currentTerm, type)\n\n const selected = isFilterSelected(\n router,\n filter,\n filterKey,\n filtersOperatorsMap[type]\n )\n\n return {\n data: currentTerm,\n selected,\n meta: currentTerm.meta,\n onClick: () => {\n router.push(\n createAggregateQuery(\n pageType,\n slug,\n {\n aggType: filter,\n aggKey: filterKey,\n aggOperator: filtersOperatorsMap[type],\n },\n Boolean(selected),\n router\n )\n )\n },\n }\n })\n}\n\nconst isFilterSelected = (\n router: NextRouter,\n filter: string,\n filterKey: any,\n type: string\n) => {\n const areFiltersArray = Array.isArray(router.query?.filter)\n\n return areFiltersArray\n ? !!(router.query.filter as string[])\n ?.find((sel: string) => sel.includes(`${filter};${type}`))\n ?.includes(filterKey)\n : router.query.filter?.includes(`${filter};${type}`) &&\n router.query.filter?.includes(filterKey)\n}\n\nexport const filtersOperatorsMap = {\n ranges: 'range',\n stats: 'range',\n terms: 'in',\n}\n\nfunction mapKey(r: any, type: any) {\n const keysMap = {\n terms: `\"${r.key}\"`,\n ranges: `${r.from},${r.to}`,\n }\n if (!keysMap[type]) return r.key\n\n return keysMap[type]\n}\n\nfunction manageFilter(pair: AggPair, query: any, remove: boolean) {\n const stripped = stripQueryProps(query, ['page']) // reset pagination on filter\n\n const result = generateQueryString(stripped, pair, remove)\n return result\n}\n\nconst generateQueryString = (\n query: FiltersQuery,\n pair: AggPair,\n remove?: boolean\n) => {\n const activeFilters = {}\n\n const extractFilter = ({\n str = '',\n aggPair,\n }: {\n str: string\n aggPair?: AggPair\n }) => {\n const [type, operator, val] = str.split(';')\n\n const filterType = aggPair?.aggType ?? type\n const filterVal = aggPair?.aggKey ?? val\n const filterOperator = aggPair?.aggOperator ?? operator\n\n if (activeFilters[filterType]) {\n activeFilters[filterType] += `,${filterVal}`\n } else {\n activeFilters[\n filterType\n ] = `filter=${filterType};${filterOperator};${filterVal}`\n }\n }\n\n Object.keys(query).forEach((el) => {\n if (Array.isArray(query[el])) {\n query[el].forEach((filter: string) => {\n extractFilter({ str: filter })\n })\n } else {\n if (el === 'sort') {\n activeFilters[el] = `sort=${query[el]}`\n } else {\n extractFilter({ str: query[el] })\n }\n }\n })\n\n if (remove) {\n const applied = activeFilters[pair.aggType].split(';')[2].split(',')\n\n const remaining = applied.filter((x: string) => !pair.aggKey.includes(x))\n\n if (remaining.length === 0) {\n activeFilters[pair.aggType] = ``\n } else {\n activeFilters[pair.aggType] = `filter=${pair.aggType};${\n pair.aggOperator\n };${remaining.join(',')}`\n }\n } else {\n extractFilter({ str: '', aggPair: pair })\n }\n\n if (Object.keys(activeFilters).length === 0) return ``\n\n return Object.keys(activeFilters).reduce((res, val, idx) => {\n res += `${idx > 0 ? '&' : ''}${activeFilters[val]}`\n return res\n }, ``)\n}\n\nfunction createAggregateQuery(\n type: ListingTypesEnum,\n slug: string,\n aggPair: AggPair,\n remove: boolean,\n router: NextRouter\n) {\n if (type === ListingTypesEnum.Search) {\n return router.query.q\n ? `/search?q=${router.query.q}&${manageFilter(\n aggPair,\n router.query,\n remove\n )}`\n : `/${slug}/c?search=${router.query.search}&${manageFilter(\n aggPair,\n router.query,\n remove\n )}`\n }\n\n if (router.query.cat) {\n return `/${router.query.slug}/${router.query.cat}/${\n typeToSuffix[type]\n }?${manageFilter(aggPair, router.query, remove)}`\n }\n\n return `/${slug}/${typeToSuffix[type]}?${manageFilter(\n aggPair,\n router.query,\n remove\n )}`\n}\n\nfunction filterByType(\n filters: string | string[] | undefined,\n filterName: string\n) {\n if (!filters) return\n\n if (typeof filters === 'string') {\n if (filters.includes(filterName)) return\n\n return filters\n }\n\n return filters.filter((filter) => !filter.includes(filterName))\n}\n"],"file":"useListingFilters.js"}
1
+ {"version":3,"sources":["../../../../src/listing/hooks/useListingFilters.tsx"],"names":["React","useRouter","useListingConfig","useAggregateQuery","AggregateRequestEnum","ListingTypesEnum","useListingSlug","stripQueryProps","typeToSuffix","getSelectedFilters","useConfigState","ListingFiltersStateContext","createContext","undefined","ListingFiltersProvider","children","aggregates","type","pageType","attributeSortType","data","aggData","isLoading","isFetching","Filters","config","router","slug","useMemo","result","sort","a","b","order","map","currentAggregate","aggregationType","toString","term","aggregationDefinition","split","filter","filterDefinition","current","find","agg","name","generatedFilters","generateFilters","rawFilters","listing","slugAliases","selectedCount","reduce","count","res","selected","attributeResult","label","component","items","raw","clearAll","push","pathname","query","filterByType","clearAllFilters","selectedFilters","useListingFilters","context","useContext","Error","results","currentTerm","filterKey","mapKey","isFilterSelected","filtersOperatorsMap","meta","onClick","createAggregateQuery","aggType","aggKey","aggOperator","Boolean","areFiltersArray","Array","isArray","sel","includes","ranges","stats","terms","r","keysMap","key","from","to","manageFilter","pair","remove","stripped","generateQueryString","activeFilters","extractFilter","str","aggPair","operator","val","filterType","filterVal","filterOperator","Object","keys","forEach","el","applied","remaining","x","length","join","idx","Search","q","search","cat","filters","filterName"],"mappings":"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","sourcesContent":["import React from 'react'\nimport { useRouter } from 'next/router'\nimport { NextRouter } from 'next/router'\nimport { useListingConfig } from './useListingConfig'\nimport {\n useAggregateQuery,\n AggregateRequestEnum,\n AggregateType,\n AggregationResultType,\n} from '../api'\n\nimport { Aggregate, ListingTypesEnum } from '../types'\nimport { useListingSlug } from './useListingSlug'\n\nimport { stripQueryProps } from '../../utils/generateQueryFromRouter'\nimport { typeToSuffix } from '../../utils/typeToSuffix'\nimport { generateQueryStringFromQuery } from '../../utils/generateQueryStringFromQuery'\nimport {\n RangeAggregation,\n StatAggregation,\n TermAggregation,\n} from '@sentecacommerce/sdk'\nimport { getSelectedFilters } from '../../utils'\nimport { useConfigState } from '../../index'\nimport { FiltersQuery } from '../index'\n\nexport type {\n RangeAggregation,\n StatAggregation,\n TermAggregation,\n} from '@sentecacommerce/sdk'\n\ntype AggPair = {\n aggType: string\n aggKey: string\n aggOperator: string\n}\n\nexport type ListingAggregationResultType = {\n selected: boolean\n data: AggregationResultType\n meta: any\n aggregationType?: string\n onClick: () => void\n}\n\nexport type ListingAggregateType = {\n name: string\n component: string\n type: string\n selectedCount: number\n items: ListingAggregationResultType[]\n clearAll: () => void\n raw: StatAggregation | RangeAggregation | TermAggregation\n}\n\nexport type UseListingFiltersResult = {\n data?: ListingAggregateType[]\n clearAllFilters: () => void\n selectedFilters: ListingAggregationResultType[]\n isLoading: boolean\n isFetching: boolean\n}\n\nconst ListingFiltersStateContext = React.createContext<\n UseListingFiltersResult | undefined\n>(undefined)\n\nexport function ListingFiltersProvider({\n children,\n}: {\n children: React.ReactNode\n}) {\n const { aggregates, type: pageType, attributeSortType } = useListingConfig()\n\n const { data: aggData, isLoading, isFetching } = useAggregateQuery(\n aggregates as Aggregate[],\n AggregateRequestEnum.Filters,\n attributeSortType\n )\n\n const config = useConfigState()\n const router = useRouter()\n const slug = useListingSlug()\n\n const data = React.useMemo(() => {\n if (!isLoading && aggData) {\n const result = aggregates\n ?.sort((a, b) => a.order - b.order)\n .map((currentAggregate) => {\n const type = currentAggregate.aggregationType.toString()\n const term = currentAggregate.aggregationDefinition.split(':')[0]\n const filter = currentAggregate.filterDefinition\n const current: AggregateType = aggData[type].find(\n (agg: AggregateType) => agg.name === term\n )\n\n const generatedFilters = generateFilters({\n rawFilters: current,\n filter,\n router,\n type,\n slug: (config as any).listing.slugAliases?.[slug] ?? slug,\n pageType,\n })\n\n const selectedCount = generatedFilters?.reduce((count, res) => {\n if (res.selected) count++\n return count\n }, 0)\n\n const attributeResult = ({\n name: currentAggregate.label,\n component: currentAggregate.component,\n items: generatedFilters,\n selectedCount,\n raw: current,\n clearAll: () =>\n router.push({\n pathname: router.pathname,\n query: {\n ...router.query,\n filter: filterByType(router.query.filter, filter),\n },\n }),\n type: type,\n } as unknown) as ListingAggregateType\n\n return attributeResult\n })\n\n return result\n }\n return undefined\n }, [aggData, router])\n\n const clearAllFilters = () => {\n const query = { ...router.query }\n delete query.filter\n\n router.push({\n pathname: router.pathname,\n query,\n })\n }\n\n const selectedFilters = React.useMemo(() => {\n return getSelectedFilters(router, slug, data as any, config) as any\n }, [router, data])\n\n return (\n <ListingFiltersStateContext.Provider\n value={{ data, clearAllFilters, selectedFilters, isLoading, isFetching }}\n >\n {children}\n </ListingFiltersStateContext.Provider>\n )\n}\n\nexport function useListingFilters() {\n const context = React.useContext(ListingFiltersStateContext)\n if (context === undefined) {\n throw new Error(\n 'useListingFilters must be used within a ListingFiltersProvider'\n )\n }\n return context\n}\n\nfunction generateFilters({\n rawFilters,\n type,\n filter,\n slug,\n router,\n pageType,\n}: {\n rawFilters: AggregateType\n type: string\n filter: string\n slug: string\n router: NextRouter\n pageType: ListingTypesEnum\n}) {\n return rawFilters.results\n ?.filter((res) => res.count > 0)\n ?.map((currentTerm) => {\n const filterKey = mapKey(currentTerm, type)\n\n const selected = isFilterSelected(\n router,\n filter,\n filterKey,\n filtersOperatorsMap[type]\n )\n\n return {\n data: currentTerm,\n selected,\n meta: currentTerm.meta,\n onClick: () => {\n router.push(\n createAggregateQuery(\n pageType,\n slug,\n {\n aggType: filter,\n aggKey: filterKey,\n aggOperator: filtersOperatorsMap[type],\n },\n Boolean(selected),\n router\n )\n )\n },\n }\n })\n}\n\nconst isFilterSelected = (\n router: NextRouter,\n filter: string,\n filterKey: any,\n type: string\n) => {\n const areFiltersArray = Array.isArray(router.query?.filter)\n\n return areFiltersArray\n ? !!(router.query.filter as string[])\n ?.find((sel: string) => sel.includes(`${filter};${type}`))\n ?.includes(filterKey)\n : router.query.filter?.includes(`${filter};${type}`) &&\n router.query.filter?.includes(filterKey)\n}\n\nexport const filtersOperatorsMap = {\n ranges: 'range',\n stats: 'range',\n terms: 'in',\n}\n\nfunction mapKey(r: any, type: any) {\n const keysMap = {\n terms: `\"${r.key}\"`,\n ranges: `${r.from},${r.to}`,\n }\n if (!keysMap[type]) return r.key\n\n return keysMap[type]\n}\n\nfunction manageFilter(pair: AggPair, query: any, remove: boolean) {\n const stripped = stripQueryProps(query, ['page']) // reset pagination on filter\n\n const result = generateQueryString(stripped, pair, remove)\n return result\n}\n\nconst generateQueryString = (\n query: FiltersQuery,\n pair: AggPair,\n remove?: boolean\n) => {\n const activeFilters = {}\n\n const extractFilter = ({\n str = '',\n aggPair,\n }: {\n str: string\n aggPair?: AggPair\n }) => {\n const [type, operator, val] = str.split(';')\n\n const filterType = aggPair?.aggType ?? type\n const filterVal = aggPair?.aggKey ?? val\n const filterOperator = aggPair?.aggOperator ?? operator\n\n if (activeFilters[filterType]) {\n activeFilters[filterType] += `,${filterVal}`\n } else {\n activeFilters[\n filterType\n ] = `filter=${filterType};${filterOperator};${filterVal}`\n }\n }\n\n Object.keys(query).forEach((el) => {\n if (Array.isArray(query[el])) {\n query[el].forEach((filter: string) => {\n extractFilter({ str: filter })\n })\n } else {\n if (el === 'sort') {\n activeFilters[el] = `sort=${query[el]}`\n } else {\n extractFilter({ str: query[el] })\n }\n }\n })\n\n if (remove) {\n const applied = activeFilters[pair.aggType].split(';')[2].split(',')\n\n const remaining = applied.filter((x: string) => !pair.aggKey.includes(x))\n\n if (remaining.length === 0) {\n activeFilters[pair.aggType] = ``\n } else {\n activeFilters[pair.aggType] = `filter=${pair.aggType};${\n pair.aggOperator\n };${remaining.join(',')}`\n }\n } else {\n extractFilter({ str: '', aggPair: pair })\n }\n\n if (Object.keys(activeFilters).length === 0) return ``\n\n return Object.keys(activeFilters).reduce((res, val, idx) => {\n res += `${idx > 0 ? '&' : ''}${activeFilters[val]}`\n return res\n }, ``)\n}\n\nfunction createAggregateQuery(\n type: ListingTypesEnum,\n slug: string,\n aggPair: AggPair,\n remove: boolean,\n router: NextRouter\n) {\n if (type === ListingTypesEnum.Search) {\n return router.query.q\n ? `/search?q=${router.query.q}&${manageFilter(\n aggPair,\n router.query,\n remove\n )}`\n : `/${slug}/c?search=${router.query.search}&${manageFilter(\n aggPair,\n router.query,\n remove\n )}`\n }\n\n if (router.query.cat) {\n return `/${router.query.slug}/${router.query.cat}/${\n typeToSuffix[type]\n }?${manageFilter(aggPair, router.query, remove)}`\n }\n\n return `/${slug}/${typeToSuffix[type]}?${manageFilter(\n aggPair,\n router.query,\n remove\n )}`\n}\n\nfunction filterByType(\n filters: string | string[] | undefined,\n filterName: string\n) {\n if (!filters) return\n\n if (typeof filters === 'string') {\n if (filters.includes(filterName)) return\n\n return filters\n }\n\n return filters.filter((filter) => !filter.includes(filterName))\n}\n"],"file":"useListingFilters.js"}
@@ -0,0 +1,2 @@
1
+ export * from './useToasts';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/ui/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAd","sourcesContent":["export * from './useToasts'\n"],"file":"index.js"}
@@ -0,0 +1,74 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import React from 'react';
3
+ import { useRouter } from 'next/router';
4
+ import { v4 as uuid } from 'uuid';
5
+ import { getMainColor, getIcon, getBackground, defaultStyle, getTextColor } from '../toastUtils';
6
+ var ToastContext = /*#__PURE__*/React.createContext(undefined);
7
+ export var ToastProvider = (_ref) => {
8
+ var {
9
+ children,
10
+ duration = 5000,
11
+ style
12
+ } = _ref;
13
+ var [toasts, setToasts] = React.useState([]);
14
+
15
+ var addToast = (content, options) => {
16
+ setToasts([{
17
+ content,
18
+ options,
19
+ id: uuid()
20
+ }, ...toasts]);
21
+ };
22
+
23
+ var deleteToasts = React.useCallback(() => {
24
+ setToasts([]);
25
+ }, []);
26
+ var values = {
27
+ addToast
28
+ };
29
+ var router = useRouter();
30
+ React.useEffect(() => {
31
+ deleteToasts();
32
+ }, [deleteToasts, router.asPath]);
33
+ return /*#__PURE__*/React.createElement(ToastContext.Provider, {
34
+ value: values
35
+ }, children, /*#__PURE__*/React.createElement("style", {
36
+ dangerouslySetInnerHTML: {
37
+ __html: "\n .Toasts--container {\n position: fixed;\n right: 0;\n transform: translateX(100%);\n top: 0;\n width: 25rem;\n display: flex;\n align-items: stretch;\n flex-direction: column;\n z-index: 99999;\n gap: 0.5rem;\n font-size: 0.8rem;\n padding: 1rem;\n }\n .Toast--left {\n width: 2rem;\n border-radius: 0.3rem 0 0 0.3rem;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n @keyframes showToast {\n 0% { opacity: 0; transform: translateX(0%);}\n 10% {opacity: 1; transform: translateX(-105%)}\n 90% {opacity: 1; transform: translateX(-105%)}\n 100% {opacity: 0; transform: translateX(0%);}\n }\n "
38
+ }
39
+ }), /*#__PURE__*/React.createElement("div", {
40
+ className: "Toasts--container"
41
+ }, toasts.map(toast => {
42
+ var _toast$options, _toast$options2, _toast$options3, _toast$options4, _toast$options5;
43
+
44
+ return /*#__PURE__*/React.createElement("div", {
45
+ key: toast.id,
46
+ className: "Toast",
47
+ style: _extends({}, defaultStyle(duration))
48
+ }, /*#__PURE__*/React.createElement("div", {
49
+ className: "Toast--left",
50
+ style: {
51
+ color: getBackground((_toast$options = toast.options) == null ? void 0 : _toast$options.appearance),
52
+ background: getMainColor((_toast$options2 = toast.options) == null ? void 0 : _toast$options2.appearance)
53
+ }
54
+ }, getIcon((_toast$options3 = toast.options) == null ? void 0 : _toast$options3.appearance)), /*#__PURE__*/React.createElement("div", {
55
+ className: "Toast--content",
56
+ style: _extends({
57
+ padding: '8px 12px',
58
+ width: '100%',
59
+ background: getBackground((_toast$options4 = toast.options) == null ? void 0 : _toast$options4.appearance),
60
+ color: getTextColor((_toast$options5 = toast.options) == null ? void 0 : _toast$options5.appearance)
61
+ }, style)
62
+ }, toast.content));
63
+ })));
64
+ };
65
+ export function useToasts() {
66
+ var context = React.useContext(ToastContext);
67
+
68
+ if (context === undefined) {
69
+ throw new Error('useToasts must be used within ToastProvider');
70
+ }
71
+
72
+ return context;
73
+ }
74
+ //# sourceMappingURL=useToasts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/ui/hooks/useToasts.tsx"],"names":["React","useRouter","v4","uuid","getMainColor","getIcon","getBackground","defaultStyle","getTextColor","ToastContext","createContext","undefined","ToastProvider","children","duration","style","toasts","setToasts","useState","addToast","content","options","id","deleteToasts","useCallback","values","router","useEffect","asPath","__html","map","toast","color","appearance","background","padding","width","useToasts","context","useContext","Error"],"mappings":"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","sourcesContent":["import React from 'react'\nimport { useRouter } from 'next/router'\nimport { v4 as uuid } from 'uuid'\nimport {\n getMainColor,\n getIcon,\n getBackground,\n defaultStyle,\n getTextColor,\n} from '../toastUtils'\n\nexport interface ToastOptions {\n appearance?: 'error' | 'info' | 'success' | 'warning'\n autoDismiss?: boolean\n}\n\nexport interface Toast {\n content: string\n options?: ToastOptions\n id: string\n}\n\ntype ToastValues = {\n addToast: (content: string, options?: ToastOptions) => void\n}\n\nconst ToastContext = React.createContext<ToastValues | undefined>(undefined)\n\nexport const ToastProvider = ({\n children,\n duration = 5000,\n style,\n}: {\n children: React.ReactNode\n duration?: number\n style?: object\n}) => {\n const [toasts, setToasts] = React.useState<Toast[]>([])\n\n const addToast = (content: string, options?: ToastOptions) => {\n setToasts([{ content, options, id: uuid() }, ...toasts])\n }\n\n const deleteToasts = React.useCallback(() => {\n setToasts([])\n }, [])\n\n const values = {\n addToast,\n }\n\n const router = useRouter()\n\n React.useEffect(() => {\n deleteToasts()\n }, [deleteToasts, router.asPath])\n\n return (\n <ToastContext.Provider value={values}>\n {children}\n <style\n dangerouslySetInnerHTML={{\n __html: `\n .Toasts--container {\n position: fixed;\n right: 0;\n transform: translateX(100%);\n top: 0;\n width: 25rem;\n display: flex;\n align-items: stretch;\n flex-direction: column;\n z-index: 99999;\n gap: 0.5rem;\n font-size: 0.8rem;\n padding: 1rem;\n }\n .Toast--left {\n width: 2rem;\n border-radius: 0.3rem 0 0 0.3rem;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n @keyframes showToast {\n 0% { opacity: 0; transform: translateX(0%);}\n 10% {opacity: 1; transform: translateX(-105%)}\n 90% {opacity: 1; transform: translateX(-105%)}\n 100% {opacity: 0; transform: translateX(0%);}\n }\n `,\n }}\n />\n <div className=\"Toasts--container\">\n {toasts.map((toast) => {\n return (\n <div\n key={toast.id}\n className=\"Toast\"\n style={{\n ...defaultStyle(duration),\n }}\n >\n <div\n className=\"Toast--left\"\n style={{\n color: getBackground(toast.options?.appearance),\n background: getMainColor(toast.options?.appearance),\n }}\n >\n {getIcon(toast.options?.appearance)}\n </div>\n <div\n className=\"Toast--content\"\n style={{\n padding: '8px 12px',\n width: '100%',\n background: getBackground(toast.options?.appearance),\n color: getTextColor(toast.options?.appearance),\n ...style,\n }}\n >\n {toast.content}\n </div>\n </div>\n )\n })}\n </div>\n </ToastContext.Provider>\n )\n}\n\nexport function useToasts() {\n const context = React.useContext(ToastContext)\n\n if (context === undefined) {\n throw new Error('useToasts must be used within ToastProvider')\n }\n\n return context\n}\n"],"file":"useToasts.js"}
@@ -1,2 +1,3 @@
1
1
  export * from './components';
2
+ export * from './hooks';
2
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/ui/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAd","sourcesContent":["export * from './components'"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../src/ui/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAd;AACA,cAAc,SAAd","sourcesContent":["export * from './components'\nexport * from './hooks'\n"],"file":"index.js"}
@@ -0,0 +1,16 @@
1
+ import React from 'react';
2
+ export var ErrorIcon = () => {
3
+ return /*#__PURE__*/React.createElement("svg", {
4
+ "aria-hidden": "true",
5
+ height: "16",
6
+ width: "12",
7
+ viewBox: "0 0 12 16",
8
+ style: {
9
+ fill: 'currentcolor'
10
+ }
11
+ }, /*#__PURE__*/React.createElement("path", {
12
+ "fill-rule": "evenodd",
13
+ d: "M5.05.01c.81 2.17.41 3.38-.52 4.31C3.55 5.37 1.98 6.15.9 7.68c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.01 8.68 2.15 5.05.02L5.03 0l.02.01z"
14
+ }));
15
+ };
16
+ //# sourceMappingURL=ErrorIcon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/ui/toastUtils/ErrorIcon.tsx"],"names":["React","ErrorIcon","fill"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAO,IAAMC,SAAS,GAAG,MAAM;AAC7B,sBACE;AACE,mBAAY,MADd;AAEE,IAAA,MAAM,EAAC,IAFT;AAGE,IAAA,KAAK,EAAC,IAHR;AAIE,IAAA,OAAO,EAAC,WAJV;AAKE,IAAA,KAAK,EAAE;AACLC,MAAAA,IAAI,EAAE;AADD;AALT,kBASE;AACE,iBAAU,SADZ;AAEE,IAAA,CAAC,EAAC;AAFJ,IATF,CADF;AAgBD,CAjBM","sourcesContent":["import React from 'react'\nexport const ErrorIcon = () => {\n return (\n <svg\n aria-hidden=\"true\"\n height=\"16\"\n width=\"12\"\n viewBox=\"0 0 12 16\"\n style={{\n fill: 'currentcolor',\n }}\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M5.05.01c.81 2.17.41 3.38-.52 4.31C3.55 5.37 1.98 6.15.9 7.68c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.01 8.68 2.15 5.05.02L5.03 0l.02.01z\"\n ></path>\n </svg>\n )\n}\n"],"file":"ErrorIcon.js"}
@@ -0,0 +1,16 @@
1
+ import React from 'react';
2
+ export var InfoIcon = () => {
3
+ return /*#__PURE__*/React.createElement("svg", {
4
+ "aria-hidden": "true",
5
+ height: "16",
6
+ width: "14",
7
+ viewBox: "0 0 14 16",
8
+ style: {
9
+ fill: 'currentcolor'
10
+ }
11
+ }, /*#__PURE__*/React.createElement("path", {
12
+ "fill-rule": "evenodd",
13
+ d: "M6.3 5.71a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 8.01c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V8v.01zM7 2.32C3.86 2.32 1.3 4.86 1.3 8c0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 1c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"
14
+ }));
15
+ };
16
+ //# sourceMappingURL=InfoIcon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/ui/toastUtils/InfoIcon.tsx"],"names":["React","InfoIcon","fill"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AAEA,OAAO,IAAMC,QAAQ,GAAG,MAAM;AAC5B,sBACE;AACE,mBAAY,MADd;AAEE,IAAA,MAAM,EAAC,IAFT;AAGE,IAAA,KAAK,EAAC,IAHR;AAIE,IAAA,OAAO,EAAC,WAJV;AAKE,IAAA,KAAK,EAAE;AAAEC,MAAAA,IAAI,EAAE;AAAR;AALT,kBAOE;AACE,iBAAU,SADZ;AAEE,IAAA,CAAC,EAAC;AAFJ,IAPF,CADF;AAcD,CAfM","sourcesContent":["import React from 'react'\n\nexport const InfoIcon = () => {\n return (\n <svg\n aria-hidden=\"true\"\n height=\"16\"\n width=\"14\"\n viewBox=\"0 0 14 16\"\n style={{ fill: 'currentcolor' }}\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M6.3 5.71a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 8.01c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V8v.01zM7 2.32C3.86 2.32 1.3 4.86 1.3 8c0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 1c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z\"\n ></path>\n </svg>\n )\n}\n"],"file":"InfoIcon.js"}
@@ -0,0 +1,16 @@
1
+ import React from 'react';
2
+ export var SuccessIcon = () => {
3
+ return /*#__PURE__*/React.createElement("svg", {
4
+ "aria-hidden": "true",
5
+ height: "16",
6
+ width: "12",
7
+ viewBox: "0 0 12 16",
8
+ style: {
9
+ fill: 'currentcolor'
10
+ }
11
+ }, /*#__PURE__*/React.createElement("path", {
12
+ "fill-rule": "evenodd",
13
+ d: "M12 5.5l-8 8-4-4L1.5 8 4 10.5 10.5 4 12 5.5z"
14
+ }));
15
+ };
16
+ //# sourceMappingURL=SuccessIcon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/ui/toastUtils/SuccessIcon.tsx"],"names":["React","SuccessIcon","fill"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AAEA,OAAO,IAAMC,WAAW,GAAG,MAAM;AAC/B,sBACE;AACE,mBAAY,MADd;AAEE,IAAA,MAAM,EAAC,IAFT;AAGE,IAAA,KAAK,EAAC,IAHR;AAIE,IAAA,OAAO,EAAC,WAJV;AAKE,IAAA,KAAK,EAAE;AAAEC,MAAAA,IAAI,EAAE;AAAR;AALT,kBAOE;AACE,iBAAU,SADZ;AAEE,IAAA,CAAC,EAAC;AAFJ,IAPF,CADF;AAcD,CAfM","sourcesContent":["import React from 'react'\n\nexport const SuccessIcon = () => {\n return (\n <svg\n aria-hidden=\"true\"\n height=\"16\"\n width=\"12\"\n viewBox=\"0 0 12 16\"\n style={{ fill: 'currentcolor' }}\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M12 5.5l-8 8-4-4L1.5 8 4 10.5 10.5 4 12 5.5z\"\n ></path>\n </svg>\n )\n}\n"],"file":"SuccessIcon.js"}
@@ -0,0 +1,16 @@
1
+ import React from 'react';
2
+ export var WarningIcon = () => {
3
+ return /*#__PURE__*/React.createElement("svg", {
4
+ "aria-hidden": "true",
5
+ height: "16",
6
+ width: "16",
7
+ viewBox: "0 0 16 16",
8
+ style: {
9
+ fill: 'currentcolor'
10
+ }
11
+ }, /*#__PURE__*/React.createElement("path", {
12
+ "fill-rule": "evenodd",
13
+ d: "M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"
14
+ }));
15
+ };
16
+ //# sourceMappingURL=WarningIcon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/ui/toastUtils/WarningIcon.tsx"],"names":["React","WarningIcon","fill"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AAEA,OAAO,IAAMC,WAAW,GAAG,MAAM;AAC/B,sBACE;AACE,mBAAY,MADd;AAEE,IAAA,MAAM,EAAC,IAFT;AAGE,IAAA,KAAK,EAAC,IAHR;AAIE,IAAA,OAAO,EAAC,WAJV;AAKE,IAAA,KAAK,EAAE;AAAEC,MAAAA,IAAI,EAAE;AAAR;AALT,kBAOE;AACE,iBAAU,SADZ;AAEE,IAAA,CAAC,EAAC;AAFJ,IAPF,CADF;AAcD,CAfM","sourcesContent":["import React from 'react'\n\nexport const WarningIcon = () => {\n return (\n <svg\n aria-hidden=\"true\"\n height=\"16\"\n width=\"16\"\n viewBox=\"0 0 16 16\"\n style={{ fill: 'currentcolor' }}\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z\"\n ></path>\n </svg>\n )\n}\n"],"file":"WarningIcon.js"}
@@ -0,0 +1,6 @@
1
+ export * from './ErrorIcon';
2
+ export * from './SuccessIcon';
3
+ export * from './utils';
4
+ export * from './InfoIcon';
5
+ export * from './WarningIcon';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/ui/toastUtils/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAd;AACA,cAAc,eAAd;AACA,cAAc,SAAd;AACA,cAAc,YAAd;AACA,cAAc,eAAd","sourcesContent":["export * from './ErrorIcon'\nexport * from './SuccessIcon'\nexport * from './utils'\nexport * from './InfoIcon'\nexport * from './WarningIcon'\n"],"file":"index.js"}
@@ -0,0 +1,82 @@
1
+ import React from 'react';
2
+ import { ErrorIcon, SuccessIcon, InfoIcon, WarningIcon } from './index';
3
+ export var getMainColor = mode => {
4
+ switch (mode) {
5
+ case 'error':
6
+ return "#FF5630";
7
+
8
+ case 'success':
9
+ return "#36B37E";
10
+
11
+ case 'info':
12
+ return "#2684FF";
13
+
14
+ case 'warning':
15
+ return "#FFAB00";
16
+
17
+ default:
18
+ return "#2684FF";
19
+ }
20
+ };
21
+ export var getTextColor = mode => {
22
+ switch (mode) {
23
+ case 'error':
24
+ return "#BF2600";
25
+
26
+ case 'success':
27
+ return "#006644";
28
+
29
+ case 'info':
30
+ return "#505F79";
31
+
32
+ case 'warning':
33
+ return "#FF8B00";
34
+
35
+ default:
36
+ return "#505F79";
37
+ }
38
+ };
39
+ export var getIcon = mode => {
40
+ switch (mode) {
41
+ case 'error':
42
+ return /*#__PURE__*/React.createElement(ErrorIcon, null);
43
+
44
+ case 'success':
45
+ return /*#__PURE__*/React.createElement(SuccessIcon, null);
46
+
47
+ case 'info':
48
+ return /*#__PURE__*/React.createElement(InfoIcon, null);
49
+
50
+ case 'warning':
51
+ return /*#__PURE__*/React.createElement(WarningIcon, null);
52
+
53
+ default:
54
+ return /*#__PURE__*/React.createElement(InfoIcon, null);
55
+ }
56
+ };
57
+ export var getBackground = mode => {
58
+ switch (mode) {
59
+ case 'error':
60
+ return "#FFEBE6";
61
+
62
+ case 'success':
63
+ return "#E3FCEF";
64
+
65
+ case 'info':
66
+ return "#fff";
67
+
68
+ case 'warning':
69
+ return "#FFFAE6";
70
+
71
+ default:
72
+ return "#fff";
73
+ }
74
+ };
75
+ export var defaultStyle = duration => ({
76
+ height: 'fit-content',
77
+ borderRadius: '0.3rem',
78
+ display: 'flex',
79
+ opacity: '0',
80
+ animation: duration + "ms cubic-bezier(0.4, 0, 0.2, 1) 0s 1 normal forwards running showToast"
81
+ });
82
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/ui/toastUtils/utils.tsx"],"names":["React","ErrorIcon","SuccessIcon","InfoIcon","WarningIcon","getMainColor","mode","getTextColor","getIcon","getBackground","defaultStyle","duration","height","borderRadius","display","opacity","animation"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,SAAT,EAAoBC,WAApB,EAAiCC,QAAjC,EAA2CC,WAA3C,QAA8D,SAA9D;AAEA,OAAO,IAAMC,YAAY,GAAIC,IAAD,IAAmB;AAC7C,UAAQA,IAAR;AACE,SAAK,OAAL;AACE;;AACF,SAAK,SAAL;AACE;;AACF,SAAK,MAAL;AACE;;AACF,SAAK,SAAL;AACE;;AACF;AACE;AAVJ;AAYD,CAbM;AAcP,OAAO,IAAMC,YAAY,GAAID,IAAD,IAAmB;AAC7C,UAAQA,IAAR;AACE,SAAK,OAAL;AACE;;AACF,SAAK,SAAL;AACE;;AACF,SAAK,MAAL;AACE;;AACF,SAAK,SAAL;AACE;;AACF;AACE;AAVJ;AAYD,CAbM;AAeP,OAAO,IAAME,OAAO,GAAIF,IAAD,IAAmB;AACxC,UAAQA,IAAR;AACE,SAAK,OAAL;AACE,0BAAO,oBAAC,SAAD,OAAP;;AACF,SAAK,SAAL;AACE,0BAAO,oBAAC,WAAD,OAAP;;AACF,SAAK,MAAL;AACE,0BAAO,oBAAC,QAAD,OAAP;;AACF,SAAK,SAAL;AACE,0BAAO,oBAAC,WAAD,OAAP;;AACF;AACE,0BAAO,oBAAC,QAAD,OAAP;AAVJ;AAYD,CAbM;AAeP,OAAO,IAAMG,aAAa,GAAIH,IAAD,IAAmB;AAC9C,UAAQA,IAAR;AACE,SAAK,OAAL;AACE;;AACF,SAAK,SAAL;AACE;;AACF,SAAK,MAAL;AACE;;AACF,SAAK,SAAL;AACE;;AACF;AACE;AAVJ;AAYD,CAbM;AAeP,OAAO,IAAMI,YAAY,GAAIC,QAAD,KAAuB;AACjDC,EAAAA,MAAM,EAAE,aADyC;AAEjDC,EAAAA,YAAY,EAAE,QAFmC;AAGjDC,EAAAA,OAAO,EAAE,MAHwC;AAIjDC,EAAAA,OAAO,EAAE,GAJwC;AAKjDC,EAAAA,SAAS,EAAKL,QAAL;AALwC,CAAvB,CAArB","sourcesContent":["import React from 'react'\nimport { ErrorIcon, SuccessIcon, InfoIcon, WarningIcon } from './index'\n\nexport const getMainColor = (mode?: string) => {\n switch (mode) {\n case 'error':\n return `#FF5630`\n case 'success':\n return `#36B37E`\n case 'info':\n return `#2684FF`\n case 'warning':\n return `#FFAB00`\n default:\n return `#2684FF`\n }\n}\nexport const getTextColor = (mode?: string) => {\n switch (mode) {\n case 'error':\n return `#BF2600`\n case 'success':\n return `#006644`\n case 'info':\n return `#505F79`\n case 'warning':\n return `#FF8B00`\n default:\n return `#505F79`\n }\n}\n\nexport const getIcon = (mode?: string) => {\n switch (mode) {\n case 'error':\n return <ErrorIcon />\n case 'success':\n return <SuccessIcon />\n case 'info':\n return <InfoIcon />\n case 'warning':\n return <WarningIcon />\n default:\n return <InfoIcon />\n }\n}\n\nexport const getBackground = (mode?: string) => {\n switch (mode) {\n case 'error':\n return `#FFEBE6`\n case 'success':\n return `#E3FCEF`\n case 'info':\n return `#fff`\n case 'warning':\n return `#FFFAE6`\n default:\n return `#fff`\n }\n}\n\nexport const defaultStyle = (duration: number) => ({\n height: 'fit-content',\n borderRadius: '0.3rem',\n display: 'flex',\n opacity: '0',\n animation: `${duration}ms cubic-bezier(0.4, 0, 0.2, 1) 0s 1 normal forwards running showToast`,\n})\n"],"file":"utils.js"}
@@ -0,0 +1 @@
1
+ export * from './useToasts';
@@ -0,0 +1,20 @@
1
+ import React from 'react';
2
+ export interface ToastOptions {
3
+ appearance?: 'error' | 'info' | 'success' | 'warning';
4
+ autoDismiss?: boolean;
5
+ }
6
+ export interface Toast {
7
+ content: string;
8
+ options?: ToastOptions;
9
+ id: string;
10
+ }
11
+ declare type ToastValues = {
12
+ addToast: (content: string, options?: ToastOptions) => void;
13
+ };
14
+ export declare const ToastProvider: ({ children, duration, style, }: {
15
+ children: React.ReactNode;
16
+ duration?: number | undefined;
17
+ style?: object | undefined;
18
+ }) => JSX.Element;
19
+ export declare function useToasts(): ToastValues;
20
+ export {};
@@ -1 +1,2 @@
1
1
  export * from './components';
2
+ export * from './hooks';
@@ -0,0 +1 @@
1
+ export declare const ErrorIcon: () => JSX.Element;
@@ -0,0 +1 @@
1
+ export declare const InfoIcon: () => JSX.Element;
@@ -0,0 +1 @@
1
+ export declare const SuccessIcon: () => JSX.Element;
@@ -0,0 +1 @@
1
+ export declare const WarningIcon: () => JSX.Element;
@@ -0,0 +1,5 @@
1
+ export * from './ErrorIcon';
2
+ export * from './SuccessIcon';
3
+ export * from './utils';
4
+ export * from './InfoIcon';
5
+ export * from './WarningIcon';
@@ -0,0 +1,11 @@
1
+ export declare const getMainColor: (mode?: string | undefined) => "#FF5630" | "#36B37E" | "#2684FF" | "#FFAB00";
2
+ export declare const getTextColor: (mode?: string | undefined) => "#BF2600" | "#006644" | "#505F79" | "#FF8B00";
3
+ export declare const getIcon: (mode?: string | undefined) => JSX.Element;
4
+ export declare const getBackground: (mode?: string | undefined) => "#fff" | "#FFEBE6" | "#E3FCEF" | "#FFFAE6";
5
+ export declare const defaultStyle: (duration: number) => {
6
+ height: string;
7
+ borderRadius: string;
8
+ display: string;
9
+ opacity: string;
10
+ animation: string;
11
+ };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@sentecacommerce-theme/lib",
3
3
  "sideEffects": false,
4
- "version": "0.12.77",
4
+ "version": "0.12.78",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",
7
7
  "types": "dist/types/index.d.ts",
@@ -28,9 +28,9 @@
28
28
  "build:types": "tsc --emitDeclarationOnly --declaration --declarationDir dist/types",
29
29
  "dev": "yarn build:esm --watch"
30
30
  },
31
- "gitHead": "d151f312ffc14ade655ec64953f26ffcf8f2bcd3",
31
+ "gitHead": "c4d40dd917bb576634fb34185877057142155b2b",
32
32
  "dependencies": {
33
- "@sentecacommerce-theme/base": "^0.12.77",
33
+ "@sentecacommerce-theme/base": "^0.12.78",
34
34
  "@sentecacommerce/sdk": "2.0.157",
35
35
  "body-scroll-lock": "^3.1.5",
36
36
  "copy-to-clipboard": "^3.3.1",