@airporting/integrations-app 0.4.176 → 0.4.178

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.
@@ -0,0 +1,21 @@
1
+ import type { RecipeCustomer } from '@/src/api/synchro/types.ts';
2
+ export declare function isOverviewRecipe(r: RecipeCustomer): boolean;
3
+ export type Section = {
4
+ type: {
5
+ codename: string;
6
+ name: string;
7
+ };
8
+ recipes: RecipeCustomer[];
9
+ };
10
+ /**
11
+ * Regroupe les synchronisations par categorie de connecteur source.
12
+ *
13
+ * `label` traduit le nom de la categorie, qui vient de la base en francais. Il
14
+ * sert aussi a TRIER : trier sur le nom d'origine rendait un rail en anglais
15
+ * dans l'ordre alphabetique francais, « Banking » remontant devant
16
+ * « Accounting » parce que « Banque » precede « Comptabilite ».
17
+ */
18
+ export declare function buildSections(recipes: RecipeCustomer[], label: (name: string) => string): {
19
+ overview: RecipeCustomer | null;
20
+ sections: Section[];
21
+ };
@@ -1 +1 @@
1
- "use strict";(globalThis["chunk_integrations_app"]=globalThis["chunk_integrations_app"]||[]).push([["1153"],{9429:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){__webpack_require__.r(__webpack_exports__);__webpack_require__.d(__webpack_exports__,{default:()=>Connectors});var jsx_runtime=__webpack_require__(4848);var index_js_=__webpack_require__(8556);var index_mjs_=__webpack_require__(2773);var modern_index_js_=__webpack_require__(7714);var IntegrationsApi=__webpack_require__(6699);const AppConfigCtx=/*#__PURE__*/(0,index_js_.createContext)(null);const AppConfigProvider=AppConfigCtx.Provider;function useAppConfig(){const config=(0,index_js_.useContext)(AppConfigCtx);if(!config)throw new Error("Called `useAppConfig` outside a `<AppConfigProvider />`");return config}function useApi(){const config=useAppConfig();const client=new IntegrationsApi.Qq({baseUrl:config.api.replace(/\/$/,""),baseApiParams:{headers:{Authorization:config.token?`Bearer ${config.token}`:"",From:config.owner}}});return new IntegrationsApi.qx(client)}function useStatsQuery(){const api=useApi();const config=useAppConfig();const query=(0,modern_index_js_.useQuery)({queryKey:["connectors","stats",config.company],queryFn:async()=>await api.connectors.getStatsConnectorsV1({cid:config.company}).then(x=>x.data),staleTime:6e4,refetchIntervalInBackground:false,refetchOnWindowFocus:true,refetchOnReconnect:true});return query}function useConnectorsListQuery(){const api=useApi();const config=useAppConfig();const query=(0,modern_index_js_.useQuery)({queryKey:["connectors","list",config.company],queryFn:async()=>await api.connectors.getConnectorsV1({cid:config.company}).then(x=>x.data),staleTime:6e4,refetchIntervalInBackground:false,refetchOnWindowFocus:true,refetchOnReconnect:true});return query}var connector_bubble=__webpack_require__(4184);var tabler_icons_react_mjs_=__webpack_require__(5200);var esm_index_mjs_=__webpack_require__(4931);var es_index_js_=__webpack_require__(6155);function useConnectorDeleteMutation(){const{t}=(0,es_index_js_.useTranslation)();const api=useApi();const config=useAppConfig();const queryClient=(0,modern_index_js_.useQueryClient)();return(0,modern_index_js_.useMutation)({mutationFn:async connector=>{const res=await api.connectors.deleteConnectorV1({cid:config.company,connector});return res.data},onSuccess:()=>{queryClient.invalidateQueries({queryKey:["connectors","list",config.company]});queryClient.invalidateQueries({queryKey:["connectors","list","ill",config.company]});queryClient.invalidateQueries({queryKey:["connectors","catalog",config.company]});queryClient.invalidateQueries({queryKey:["connectors","stats",config.company]});queryClient.invalidateQueries({queryKey:["connectors","ok",config.company]});queryClient.invalidateQueries({queryKey:["connectors","ill",config.company]});esm_index_mjs_.notifications.show({color:"green",title:t("Connecteur supprim\xe9"),message:t("Vous pouvez le r\xe9ajouter depuis le catalogue.")})},onError:error=>{console.error(error);esm_index_mjs_.notifications.show({color:"red",title:t("Suppression \xe9chou\xe9e"),message:t("R\xe9essayez dans un instant.")})}})}var locales=__webpack_require__(108);var modals_esm_index_mjs_=__webpack_require__(4403);function isDeleteConfirmInput(input){return"DELETE"===input}function DeleteActiveBody({name,onConfirm}){const{t}=(0,es_index_js_.useTranslation)();const[input,setInput]=(0,index_js_.useState)("");const isMatch=isDeleteConfirmInput(input);const handleConfirm=()=>{if(!isMatch)return;onConfirm();modals_esm_index_mjs_.modals.closeAll()};return/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Stack,{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"sm",children:/*#__PURE__*/(0,jsx_runtime.jsx)(es_index_js_.Trans,{i18nKey:"Le connecteur <1>{{nom}}</1> est actuellement actif. Sa suppression arr\xeatera la synchronisation et le retirera de la liste. Vous pourrez le r\xe9ajouter depuis le catalogue plus tard.",values:{nom:name},components:{1:/*#__PURE__*/(0,jsx_runtime.jsx)("strong",{})}})}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"sm",children:/*#__PURE__*/(0,jsx_runtime.jsx)(es_index_js_.Trans,{i18nKey:"Pour confirmer, tapez <1>DELETE</1> ci-dessous.",components:{1:/*#__PURE__*/(0,jsx_runtime.jsx)("strong",{})}})}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.TextInput,{value:input,onChange:e=>setInput(e.currentTarget.value),placeholder:"DELETE",autoFocus:true,onKeyDown:e=>{if("Enter"===e.key)handleConfirm()}}),/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{justify:"flex-end",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Button,{variant:"default",onClick:()=>modals_esm_index_mjs_.modals.closeAll(),children:t("Annuler")}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Button,{color:"red",disabled:!isMatch,onClick:handleConfirm,children:t("Supprimer")})]})]})}function openDeleteActiveConnectorModal(name,onConfirm){modals_esm_index_mjs_.modals.open({title:(0,locales.tr)("Supprimer ce connecteur ?"),centered:true,children:/*#__PURE__*/(0,jsx_runtime.jsx)(DeleteActiveBody,{name:name,onConfirm:onConfirm})})}function ConnectorMenu({connectorId,connectorName,isActive}){const{t}=(0,es_index_js_.useTranslation)();const{mutate,isPending}=useConnectorDeleteMutation();const handleDelete=()=>{if(isActive)openDeleteActiveConnectorModal(connectorName,()=>mutate(connectorId));else mutate(connectorId)};const stopBubble=e=>{e.stopPropagation();e.preventDefault()};return/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Menu,{position:"bottom-end",withinPortal:true,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Menu.Target,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.ActionIcon,{variant:"subtle",color:"gray","aria-label":t("Actions du connecteur"),onClick:stopBubble,children:/*#__PURE__*/(0,jsx_runtime.jsx)(tabler_icons_react_mjs_.IconDots,{size:18})})}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Menu.Dropdown,{onClick:stopBubble,children:/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Menu.Item,{color:"red",leftSection:/*#__PURE__*/(0,jsx_runtime.jsx)(tabler_icons_react_mjs_.IconTrash,{size:16}),onClick:handleDelete,disabled:isPending,children:t("Supprimer")})})]})}function ListOkComponent(){const{t}=(0,es_index_js_.useTranslation)();const config=useAppConfig();const listResultRes=useConnectorsListQuery();const listResult=listResultRes.data;return/*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment,{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Title,{w:"fit-content",mb:0,order:2,children:t("Tous vos connecteurs en marche")}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.SimpleGrid,{cols:{base:1,xs:2,sm:3,md:4,lg:5,xl:6},spacing:"lg",verticalSpacing:"lg",style:{alignItems:"stretch"},children:listResult?.list?.map((connector,idx)=>connector?.main_connectorlist?/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Card,{pos:"relative",style:{height:"100%",display:"flex",flexDirection:"column",justifyContent:"space-between"},children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Anchor,{underline:"never",href:`/company/${config.company}/integrations/${connector.id}/connector`,children:/*#__PURE__*/(0,jsx_runtime.jsx)(connector_bubble.q,{connector:connector})}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Box,{pos:"absolute",top:8,right:8,children:/*#__PURE__*/(0,jsx_runtime.jsx)(ConnectorMenu,{connectorId:connector.id,connectorName:connector.name,isActive:true})})]},idx):/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Skeleton,{radius:"md",animate:true},idx))})]})}function useConnectorsIllListQuery(){const api=useApi();const config=useAppConfig();const query=(0,modern_index_js_.useQuery)({queryKey:["connectors","list","ill",config.company],queryFn:async()=>await api.connectors.getIllConnectorsV1({cid:config.company}).then(x=>x.data),staleTime:6e4,refetchIntervalInBackground:false,refetchOnWindowFocus:true,refetchOnReconnect:true});return query}function ListIllComponent(){const{t}=(0,es_index_js_.useTranslation)();const config=useAppConfig();const listResultRes=useConnectorsIllListQuery();const listResult=listResultRes.data;return/*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment,{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Title,{w:"fit-content",mb:0,order:2,children:t("Tous vos connecteurs \xe0 configurer")}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.SimpleGrid,{cols:{base:1,xs:2,sm:3,md:4,lg:5,xl:6},spacing:"lg",verticalSpacing:"lg",style:{alignItems:"stretch"},children:listResult?.list?.map((connector,idx)=>connector?.main_connectorlist?/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Card,{pos:"relative",style:{height:"100%",display:"flex",flexDirection:"column",justifyContent:"space-between"},children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Anchor,{underline:"never",href:`/company/${config.company}/integrations/${connector.id}/connector`,children:/*#__PURE__*/(0,jsx_runtime.jsx)(connector_bubble.q,{connector:connector})}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Box,{pos:"absolute",top:8,right:8,children:/*#__PURE__*/(0,jsx_runtime.jsx)(ConnectorMenu,{connectorId:connector.id,connectorName:connector.name,isActive:false})})]},idx):/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Skeleton,{radius:"md",animate:true},idx))})]})}function useConnectorAddMutation(){const api=useApi();const config=useAppConfig();const queryClient=(0,modern_index_js_.useQueryClient)();return(0,modern_index_js_.useMutation)({mutationFn:async connector_id=>{const res=await api.connectors.addConnectorV1({cid:config.company},{connector_id});return res.data},onSuccess:()=>{queryClient.invalidateQueries({queryKey:["connectors","catalog",config.company]});queryClient.invalidateQueries({queryKey:["connectors","list",config.company]});queryClient.invalidateQueries({queryKey:["connectors","list","ill",config.company]});queryClient.invalidateQueries({queryKey:["connectors","stats",config.company]});queryClient.invalidateQueries({queryKey:["connectors","ok",config.company]});queryClient.invalidateQueries({queryKey:["connectors","ill",config.company]})}})}function useConnectorCatalogQuery(){const api=useApi();const config=useAppConfig();const query=(0,modern_index_js_.useQuery)({queryKey:["connectors","catalog",config.company],queryFn:async()=>await api.connectors.getCatalogConnectorsV1({cid:config.company}).then(x=>x.data),refetchIntervalInBackground:false,refetchOnWindowFocus:true,refetchOnReconnect:true});return query}var connectorLogoUrl=__webpack_require__(1034);function CollapsibleGroup({title,count,collapsed,onToggle,children}){return/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.UnstyledButton,{onClick:onToggle,style:{width:"100%",padding:"8px 12px"},children:/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{gap:"xs",children:[collapsed?/*#__PURE__*/(0,jsx_runtime.jsx)(tabler_icons_react_mjs_.IconChevronRight,{size:16}):/*#__PURE__*/(0,jsx_runtime.jsx)(tabler_icons_react_mjs_.IconChevronDown,{size:16}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{fw:600,children:title}),/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Text,{c:"dimmed",children:["(",count,")"]})]})}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Collapse,{in:!collapsed,children:children})]})}const KEY=userId=>`connectors-expanded-groups:${userId}`;function useCollapsedGroups(userId,_allGroupKeys){const[expanded,setExpanded]=(0,index_js_.useState)(()=>{const raw=localStorage.getItem(KEY(userId));if(raw)try{return new Set(JSON.parse(raw))}catch{}return new Set});(0,index_js_.useEffect)(()=>{localStorage.setItem(KEY(userId),JSON.stringify([...expanded]))},[userId,expanded]);const toggle=(0,index_js_.useCallback)(key=>{setExpanded(prev=>{const next=new Set(prev);if(next.has(key))next.delete(key);else next.add(key);return next})},[]);const isCollapsed=(0,index_js_.useCallback)(key=>!expanded.has(key),[expanded]);return{isCollapsed,toggle}}function normalize(value){return(value??"").toLowerCase().normalize("NFD").replace(/[̀-ͯ]/g,"")}function getBaseName(name){return name.replace(/\s+via\s+.+$/i,"").trim()}function getMethodSuffix(name,baseName){return name.length>baseName.length?name.slice(baseName.length).trim():name}function GroupCard({group,pending}){const{t}=(0,es_index_js_.useTranslation)();const{colorScheme}=(0,index_mjs_.useMantineColorScheme)();const bg="dark"===colorScheme?"white":"dark";const first=group.items[0];const logoUrl=(0,connectorLogoUrl.U)({codename:group.codename,logo_key:group.logoKey});return/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Card,{children:/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Stack,{children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{justify:"space-between",align:"flex-start",children:[pending?/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Loader,{size:64}):/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Avatar,{src:logoUrl,size:64,radius:"md",bg:bg,color:"dark"===colorScheme?"black":"white",p:18}),group.items.length>1&&/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Badge,{variant:"light",color:"blue",children:t("{{count}} m\xe9thode",{count:group.items.length})})]}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Title,{w:"fit-content",order:3,children:group.baseName}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{c:"dimmed",size:"lg",lineClamp:3,children:first.description_fr})]})})}function MethodChoiceCard({item,baseName,pending,disabled,onClick}){const suffix=getMethodSuffix(item.name,baseName);return/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Card,{style:{cursor:disabled?"wait":"pointer",opacity:disabled&&!pending?.5:1},onClick:()=>{if(!disabled)onClick()},children:/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{justify:"space-between",align:"center",children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Stack,{gap:4,style:{flex:1},children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{gap:"xs",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{fw:600,children:suffix||item.name}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Badge,{variant:"light",color:"gray",children:item.sharing_method})]}),item.description_fr&&/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{c:"dimmed",size:"sm",lineClamp:2,children:item.description_fr})]}),pending&&/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Loader,{size:"sm"})]})})}function ListCatalogComponent(){const{t}=(0,es_index_js_.useTranslation)();const config=useAppConfig();const result=useConnectorCatalogQuery();const list=result.data?.list;const[searchValue,setSearchValue]=(0,index_js_.useState)("");const[pendingId,setPendingId]=(0,index_js_.useState)(null);const[selectedGroup,setSelectedGroup]=(0,index_js_.useState)(null);const[hoveredGroupKey,setHoveredGroupKey]=(0,index_js_.useState)(null);const mutation=useConnectorAddMutation();const filtered=(0,index_js_.useMemo)(()=>{if(!list)return;const q=normalize(searchValue);if(!q)return list;return list.filter(item=>normalize(`${item.name} ${item.description_fr??""}`).includes(q))},[list,searchValue]);const sections=(0,index_js_.useMemo)(()=>{if(!filtered)return;const groups=new Map;for(const item of filtered){const baseName=getBaseName(item.name);const groupKey=`${item.logo_key??item.codename}::${baseName}`;if(!groups.has(groupKey))groups.set(groupKey,{groupKey,baseName,type:item.type,codename:item.codename,logoKey:item.logo_key,items:[]});groups.get(groupKey).items.push(item)}const byCategory=new Map;for(const group of groups.values()){const k=group.type.codename;if(!byCategory.has(k))byCategory.set(k,{type:group.type,groups:[]});byCategory.get(k).groups.push(group)}return Array.from(byCategory.values())},[filtered]);const sectionKeys=(0,index_js_.useMemo)(()=>(sections??[]).map(s=>s.type.codename),[sections]);const{isCollapsed,toggle}=useCollapsedGroups(`catalog:${config.owner}`,sectionKeys);const triggerAdd=id=>{setPendingId(id);mutation.mutate(id,{onSuccess:data=>{window.location.href=`/company/${config.company}/integrations/${data.id}/connector`},onError:()=>{setPendingId(null)}})};const handleGroupClick=group=>{if(mutation.isPending)return;if(1===group.items.length)triggerAdd(group.items[0].id);else setSelectedGroup(group)};const handleCloseModal=()=>{if(mutation.isPending)return;setSelectedGroup(null);setPendingId(null)};return/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Stack,{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.TextInput,{placeholder:t("Rechercher un connecteur..."),leftSection:/*#__PURE__*/(0,jsx_runtime.jsx)(tabler_icons_react_mjs_.IconSearch,{size:16}),value:searchValue,onChange:e=>setSearchValue(e.currentTarget.value),size:"md"}),sections?sections.map(section=>/*#__PURE__*/(0,jsx_runtime.jsx)(CollapsibleGroup,{title:section.type.name,count:section.groups.length,collapsed:isCollapsed(section.type.codename),onToggle:()=>toggle(section.type.codename),children:/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.SimpleGrid,{cols:{base:1,xs:2,sm:3,md:4,lg:5,xl:6},spacing:"lg",verticalSpacing:"lg",style:{alignItems:"stretch"},children:section.groups.map(group=>{const isSinglePending=1===group.items.length&&pendingId===group.items[0].id;const isHovered=hoveredGroupKey===group.groupKey&&!mutation.isPending;return/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Card,{withBorder:true,style:{height:"100%",display:"flex",flexDirection:"column",justifyContent:"space-between",cursor:mutation.isPending?"wait":"pointer",opacity:mutation.isPending&&!isSinglePending?.5:1,borderColor:isHovered?"var(--mantine-color-green-5)":void 0,backgroundColor:isHovered?"var(--mantine-color-green-0)":void 0,transition:"border-color 120ms ease, background-color 120ms ease",position:"relative"},onMouseEnter:()=>setHoveredGroupKey(group.groupKey),onMouseLeave:()=>setHoveredGroupKey(null),onClick:()=>handleGroupClick(group),children:[isHovered&&/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Badge,{variant:"filled",color:"green",style:{position:"absolute",top:8,right:8,zIndex:1},children:t("Configurer →")}),/*#__PURE__*/(0,jsx_runtime.jsx)(GroupCard,{group:group,pending:isSinglePending})]},group.groupKey)})})},section.type.codename)):/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.SimpleGrid,{cols:{base:1,xs:2,sm:3,md:4,lg:5,xl:6},spacing:"lg",verticalSpacing:"lg",children:Array.from({length:8}).map((_,idx)=>/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Skeleton,{height:180,radius:"md",animate:true},idx))}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Modal,{opened:null!==selectedGroup,onClose:handleCloseModal,title:selectedGroup?.baseName??"",size:"lg",children:selectedGroup&&/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Stack,{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{c:"dimmed",children:t("Choisir une m\xe9thode de connexion :")}),selectedGroup.items.map(item=>/*#__PURE__*/(0,jsx_runtime.jsx)(MethodChoiceCard,{item:item,baseName:selectedGroup.baseName,pending:pendingId===item.id,disabled:mutation.isPending,onClick:()=>triggerAdd(item.id)},item.id))]})})]})}var dist_index_js_=__webpack_require__(4259);function ConnectorsApp(){const{t}=(0,es_index_js_.useTranslation)();const tab=(0,dist_index_js_.useRxState)(new URL(location.href).searchParams.get("tab")??"active");const statsResultRes=useStatsQuery();const statsResult=statsResultRes.data;const[tabValue,setTabValue]=(0,index_js_.useState)(tab.value??"active");(0,index_js_.useEffect)(()=>{tab.dispatch(tabValue)},[tabValue]);return/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Container,{size:"xl",px:0,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Group,{py:16,children:/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Stack,{gap:0,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Title,{w:"fit-content",mb:0,order:1,children:t("Nos connecteurs")}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{w:"fit-content",mb:0,c:"dimmed",fz:"h5",children:t("Synchronisez vos comptes bancaires et outils comptables facilement.")})]})}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Group,{py:16,children:/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.SegmentedControl,{value:tabValue,onChange:setTabValue,radius:"md",size:"lg",data:[{label:t("Connecteurs actifs ({{nombre}})",{nombre:statsResult?statsResult.ok??0:"…"}),value:"active"},{label:t("Connecteurs \xe0 configurer ({{nombre}})",{nombre:statsResult?statsResult.ill??0:"…"}),value:"ill"},{label:t("Les autres connecteurs"),value:"all"}]})}),"active"===tabValue&&/*#__PURE__*/(0,jsx_runtime.jsx)(ListOkComponent,{}),"ill"===tabValue&&/*#__PURE__*/(0,jsx_runtime.jsx)(ListIllComponent,{}),"all"===tabValue&&/*#__PURE__*/(0,jsx_runtime.jsx)(ListCatalogComponent,{})]})}var dist_esm_index_mjs_=__webpack_require__(4449);const theme=(0,index_mjs_.createTheme)((0,dist_esm_index_mjs_.assign)(dist_index_js_.theme,{components:{}}));const cssVarResolver=x=>(0,dist_esm_index_mjs_.assign)(dist_index_js_.cssVarResolver(x),{dark:{},light:{},variables:{}});function Providers(props){const{children,config,mantine,tanstack}=props;return/*#__PURE__*/(0,jsx_runtime.jsx)(AppConfigProvider,{value:config,children:/*#__PURE__*/(0,jsx_runtime.jsx)(modern_index_js_.QueryClientProvider,{client:tanstack?.queryClient??new modern_index_js_.QueryClient,children:/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.MantineProvider,{theme:theme,cssVariablesResolver:cssVarResolver,defaultColorScheme:mantine?.defaultColorScheme,forceColorScheme:mantine?.forceColorScheme,children:/*#__PURE__*/(0,jsx_runtime.jsxs)(modals_esm_index_mjs_.ModalsProvider,{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(esm_index_mjs_.Notifications,{}),/*#__PURE__*/(0,jsx_runtime.jsx)(dist_index_js_.RevealTokenProvider,{children:children})]})})})})}(0,locales.o)();function Connectors(props){return/*#__PURE__*/(0,jsx_runtime.jsx)(index_js_.StrictMode,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(Providers,{...props,children:/*#__PURE__*/(0,jsx_runtime.jsx)(ConnectorsApp,{})})})}}}]);
1
+ "use strict";(globalThis["chunk_integrations_app"]=globalThis["chunk_integrations_app"]||[]).push([["1153"],{9429:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){__webpack_require__.r(__webpack_exports__);__webpack_require__.d(__webpack_exports__,{default:()=>Connectors});var jsx_runtime=__webpack_require__(4848);var index_js_=__webpack_require__(8556);var index_mjs_=__webpack_require__(2773);var modern_index_js_=__webpack_require__(7714);var IntegrationsApi=__webpack_require__(6699);const AppConfigCtx=/*#__PURE__*/(0,index_js_.createContext)(null);const AppConfigProvider=AppConfigCtx.Provider;function useAppConfig(){const config=(0,index_js_.useContext)(AppConfigCtx);if(!config)throw new Error("Called `useAppConfig` outside a `<AppConfigProvider />`");return config}function useApi(){const config=useAppConfig();const client=new IntegrationsApi.Qq({baseUrl:config.api.replace(/\/$/,""),baseApiParams:{headers:{Authorization:config.token?`Bearer ${config.token}`:"",From:config.owner}}});return new IntegrationsApi.qx(client)}function useStatsQuery(){const api=useApi();const config=useAppConfig();const query=(0,modern_index_js_.useQuery)({queryKey:["connectors","stats",config.company],queryFn:async()=>await api.connectors.getStatsConnectorsV1({cid:config.company}).then(x=>x.data),staleTime:6e4,refetchIntervalInBackground:false,refetchOnWindowFocus:true,refetchOnReconnect:true});return query}function useConnectorsListQuery(){const api=useApi();const config=useAppConfig();const query=(0,modern_index_js_.useQuery)({queryKey:["connectors","list",config.company],queryFn:async()=>await api.connectors.getConnectorsV1({cid:config.company}).then(x=>x.data),staleTime:6e4,refetchIntervalInBackground:false,refetchOnWindowFocus:true,refetchOnReconnect:true});return query}var connector_bubble=__webpack_require__(4184);var tabler_icons_react_mjs_=__webpack_require__(5200);var esm_index_mjs_=__webpack_require__(4931);var es_index_js_=__webpack_require__(6155);function useConnectorDeleteMutation(){const{t}=(0,es_index_js_.useTranslation)();const api=useApi();const config=useAppConfig();const queryClient=(0,modern_index_js_.useQueryClient)();return(0,modern_index_js_.useMutation)({mutationFn:async connector=>{const res=await api.connectors.deleteConnectorV1({cid:config.company,connector});return res.data},onSuccess:()=>{queryClient.invalidateQueries({queryKey:["connectors","list",config.company]});queryClient.invalidateQueries({queryKey:["connectors","list","ill",config.company]});queryClient.invalidateQueries({queryKey:["connectors","catalog",config.company]});queryClient.invalidateQueries({queryKey:["connectors","stats",config.company]});queryClient.invalidateQueries({queryKey:["connectors","ok",config.company]});queryClient.invalidateQueries({queryKey:["connectors","ill",config.company]});esm_index_mjs_.notifications.show({color:"green",title:t("Connecteur supprim\xe9"),message:t("Vous pouvez le r\xe9ajouter depuis le catalogue.")})},onError:error=>{console.error(error);esm_index_mjs_.notifications.show({color:"red",title:t("Suppression \xe9chou\xe9e"),message:t("R\xe9essayez dans un instant.")})}})}var locales=__webpack_require__(108);var modals_esm_index_mjs_=__webpack_require__(4403);function isDeleteConfirmInput(input){return"DELETE"===input}function DeleteActiveBody({name,onConfirm}){const{t}=(0,es_index_js_.useTranslation)();const[input,setInput]=(0,index_js_.useState)("");const isMatch=isDeleteConfirmInput(input);const handleConfirm=()=>{if(!isMatch)return;onConfirm();modals_esm_index_mjs_.modals.closeAll()};return/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Stack,{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"sm",children:/*#__PURE__*/(0,jsx_runtime.jsx)(es_index_js_.Trans,{i18nKey:"Le connecteur <1>{{nom}}</1> est actuellement actif. Sa suppression arr\xeatera la synchronisation et le retirera de la liste. Vous pourrez le r\xe9ajouter depuis le catalogue plus tard.",values:{nom:name},components:{1:/*#__PURE__*/(0,jsx_runtime.jsx)("strong",{})}})}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"sm",children:/*#__PURE__*/(0,jsx_runtime.jsx)(es_index_js_.Trans,{i18nKey:"Pour confirmer, tapez <1>DELETE</1> ci-dessous.",components:{1:/*#__PURE__*/(0,jsx_runtime.jsx)("strong",{})}})}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.TextInput,{value:input,onChange:e=>setInput(e.currentTarget.value),placeholder:"DELETE",autoFocus:true,onKeyDown:e=>{if("Enter"===e.key)handleConfirm()}}),/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{justify:"flex-end",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Button,{variant:"default",onClick:()=>modals_esm_index_mjs_.modals.closeAll(),children:t("Annuler")}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Button,{color:"red",disabled:!isMatch,onClick:handleConfirm,children:t("Supprimer")})]})]})}function openDeleteActiveConnectorModal(name,onConfirm){modals_esm_index_mjs_.modals.open({title:(0,locales.tr)("Supprimer ce connecteur ?"),centered:true,children:/*#__PURE__*/(0,jsx_runtime.jsx)(DeleteActiveBody,{name:name,onConfirm:onConfirm})})}function ConnectorMenu({connectorId,connectorName,isActive}){const{t}=(0,es_index_js_.useTranslation)();const{mutate,isPending}=useConnectorDeleteMutation();const handleDelete=()=>{if(isActive)openDeleteActiveConnectorModal(connectorName,()=>mutate(connectorId));else mutate(connectorId)};const stopBubble=e=>{e.stopPropagation();e.preventDefault()};return/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Menu,{position:"bottom-end",withinPortal:true,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Menu.Target,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.ActionIcon,{variant:"subtle",color:"gray","aria-label":t("Actions du connecteur"),onClick:stopBubble,children:/*#__PURE__*/(0,jsx_runtime.jsx)(tabler_icons_react_mjs_.IconDots,{size:18})})}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Menu.Dropdown,{onClick:stopBubble,children:/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Menu.Item,{color:"red",leftSection:/*#__PURE__*/(0,jsx_runtime.jsx)(tabler_icons_react_mjs_.IconTrash,{size:16}),onClick:handleDelete,disabled:isPending,children:t("Supprimer")})})]})}function ListOkComponent(){const{t}=(0,es_index_js_.useTranslation)();const config=useAppConfig();const listResultRes=useConnectorsListQuery();const listResult=listResultRes.data;return/*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment,{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Title,{w:"fit-content",mb:0,order:2,children:t("Tous vos connecteurs en marche")}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.SimpleGrid,{cols:{base:1,xs:2,sm:3,md:4,lg:5,xl:6},spacing:"lg",verticalSpacing:"lg",style:{alignItems:"stretch"},children:listResult?.list?.map((connector,idx)=>connector?.main_connectorlist?/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Card,{pos:"relative",style:{height:"100%",display:"flex",flexDirection:"column",justifyContent:"space-between"},children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Anchor,{underline:"never",href:`/company/${config.company}/integrations/${connector.id}/connector`,children:/*#__PURE__*/(0,jsx_runtime.jsx)(connector_bubble.q,{connector:connector})}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Box,{pos:"absolute",top:8,right:8,children:/*#__PURE__*/(0,jsx_runtime.jsx)(ConnectorMenu,{connectorId:connector.id,connectorName:connector.name,isActive:true})})]},idx):/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Skeleton,{radius:"md",animate:true},idx))})]})}function useConnectorsIllListQuery(){const api=useApi();const config=useAppConfig();const query=(0,modern_index_js_.useQuery)({queryKey:["connectors","list","ill",config.company],queryFn:async()=>await api.connectors.getIllConnectorsV1({cid:config.company}).then(x=>x.data),staleTime:6e4,refetchIntervalInBackground:false,refetchOnWindowFocus:true,refetchOnReconnect:true});return query}function ListIllComponent(){const{t}=(0,es_index_js_.useTranslation)();const config=useAppConfig();const listResultRes=useConnectorsIllListQuery();const listResult=listResultRes.data;return/*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment,{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Title,{w:"fit-content",mb:0,order:2,children:t("Tous vos connecteurs \xe0 configurer")}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.SimpleGrid,{cols:{base:1,xs:2,sm:3,md:4,lg:5,xl:6},spacing:"lg",verticalSpacing:"lg",style:{alignItems:"stretch"},children:listResult?.list?.map((connector,idx)=>connector?.main_connectorlist?/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Card,{pos:"relative",style:{height:"100%",display:"flex",flexDirection:"column",justifyContent:"space-between"},children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Anchor,{underline:"never",href:`/company/${config.company}/integrations/${connector.id}/connector`,children:/*#__PURE__*/(0,jsx_runtime.jsx)(connector_bubble.q,{connector:connector})}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Box,{pos:"absolute",top:8,right:8,children:/*#__PURE__*/(0,jsx_runtime.jsx)(ConnectorMenu,{connectorId:connector.id,connectorName:connector.name,isActive:false})})]},idx):/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Skeleton,{radius:"md",animate:true},idx))})]})}function useConnectorAddMutation(){const api=useApi();const config=useAppConfig();const queryClient=(0,modern_index_js_.useQueryClient)();return(0,modern_index_js_.useMutation)({mutationFn:async connector_id=>{const res=await api.connectors.addConnectorV1({cid:config.company},{connector_id});return res.data},onSuccess:()=>{queryClient.invalidateQueries({queryKey:["connectors","catalog",config.company]});queryClient.invalidateQueries({queryKey:["connectors","list",config.company]});queryClient.invalidateQueries({queryKey:["connectors","list","ill",config.company]});queryClient.invalidateQueries({queryKey:["connectors","stats",config.company]});queryClient.invalidateQueries({queryKey:["connectors","ok",config.company]});queryClient.invalidateQueries({queryKey:["connectors","ill",config.company]})}})}function useConnectorCatalogQuery(){const api=useApi();const config=useAppConfig();const query=(0,modern_index_js_.useQuery)({queryKey:["connectors","catalog",config.company],queryFn:async()=>await api.connectors.getCatalogConnectorsV1({cid:config.company}).then(x=>x.data),refetchIntervalInBackground:false,refetchOnWindowFocus:true,refetchOnReconnect:true});return query}var connectorLogoUrl=__webpack_require__(1034);function CollapsibleGroup({title,count,collapsed,onToggle,children}){return/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.UnstyledButton,{onClick:onToggle,style:{width:"100%",padding:"8px 12px"},children:/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{gap:"xs",children:[collapsed?/*#__PURE__*/(0,jsx_runtime.jsx)(tabler_icons_react_mjs_.IconChevronRight,{size:16}):/*#__PURE__*/(0,jsx_runtime.jsx)(tabler_icons_react_mjs_.IconChevronDown,{size:16}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{fw:600,children:title}),/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Text,{c:"dimmed",children:["(",count,")"]})]})}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Collapse,{in:!collapsed,children:children})]})}const KEY=userId=>`connectors-expanded-groups:${userId}`;function useCollapsedGroups(userId,_allGroupKeys){const[expanded,setExpanded]=(0,index_js_.useState)(()=>{const raw=localStorage.getItem(KEY(userId));if(raw)try{return new Set(JSON.parse(raw))}catch{}return new Set});(0,index_js_.useEffect)(()=>{localStorage.setItem(KEY(userId),JSON.stringify([...expanded]))},[userId,expanded]);const toggle=(0,index_js_.useCallback)(key=>{setExpanded(prev=>{const next=new Set(prev);if(next.has(key))next.delete(key);else next.add(key);return next})},[]);const isCollapsed=(0,index_js_.useCallback)(key=>!expanded.has(key),[expanded]);return{isCollapsed,toggle}}function normalize(value){return(value??"").toLowerCase().normalize("NFD").replace(/[̀-ͯ]/g,"")}function getBaseName(name){return name.replace(/\s+via\s+.+$/i,"").trim()}function getMethodSuffix(name,baseName){return name.length>baseName.length?name.slice(baseName.length).trim():name}function GroupCard({group,pending}){const{t}=(0,es_index_js_.useTranslation)();const{colorScheme}=(0,index_mjs_.useMantineColorScheme)();const bg="dark"===colorScheme?"white":"dark";const first=group.items[0];const logoUrl=(0,connectorLogoUrl.U)({codename:group.codename,logo_key:group.logoKey});return/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Card,{children:/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Stack,{children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{justify:"space-between",align:"flex-start",children:[pending?/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Loader,{size:64}):/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Avatar,{src:logoUrl,size:64,radius:"md",bg:bg,color:"dark"===colorScheme?"black":"white",p:18}),group.items.length>1&&/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Badge,{variant:"light",color:"blue",children:t("{{count}} m\xe9thode",{count:group.items.length})})]}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Title,{w:"fit-content",order:3,children:group.baseName}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{c:"dimmed",size:"lg",lineClamp:3,children:first.description_fr?t(first.description_fr):null})]})})}function MethodChoiceCard({item,baseName,pending,disabled,onClick}){const{t}=(0,es_index_js_.useTranslation)();const suffix=getMethodSuffix(item.name,baseName);return/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Card,{style:{cursor:disabled?"wait":"pointer",opacity:disabled&&!pending?.5:1},onClick:()=>{if(!disabled)onClick()},children:/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{justify:"space-between",align:"center",children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Stack,{gap:4,style:{flex:1},children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{gap:"xs",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{fw:600,children:suffix||item.name}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Badge,{variant:"light",color:"gray",children:item.sharing_method})]}),item.description_fr&&/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{c:"dimmed",size:"sm",lineClamp:2,children:t(item.description_fr)})]}),pending&&/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Loader,{size:"sm"})]})})}function ListCatalogComponent(){const{t}=(0,es_index_js_.useTranslation)();const config=useAppConfig();const result=useConnectorCatalogQuery();const list=result.data?.list;const[searchValue,setSearchValue]=(0,index_js_.useState)("");const[pendingId,setPendingId]=(0,index_js_.useState)(null);const[selectedGroup,setSelectedGroup]=(0,index_js_.useState)(null);const[hoveredGroupKey,setHoveredGroupKey]=(0,index_js_.useState)(null);const mutation=useConnectorAddMutation();const filtered=(0,index_js_.useMemo)(()=>{if(!list)return;const q=normalize(searchValue);if(!q)return list;return list.filter(item=>{const source=item.description_fr??"";const traduite=source?t(source):"";return normalize(`${item.name} ${source} ${traduite}`).includes(q)})},[list,searchValue,t]);const sections=(0,index_js_.useMemo)(()=>{if(!filtered)return;const groups=new Map;for(const item of filtered){const baseName=getBaseName(item.name);const groupKey=`${item.logo_key??item.codename}::${baseName}`;if(!groups.has(groupKey))groups.set(groupKey,{groupKey,baseName,type:item.type,codename:item.codename,logoKey:item.logo_key,items:[]});groups.get(groupKey).items.push(item)}const byCategory=new Map;for(const group of groups.values()){const k=group.type.codename;if(!byCategory.has(k))byCategory.set(k,{type:group.type,groups:[]});byCategory.get(k).groups.push(group)}return Array.from(byCategory.values())},[filtered]);const sectionKeys=(0,index_js_.useMemo)(()=>(sections??[]).map(s=>s.type.codename),[sections]);const{isCollapsed,toggle}=useCollapsedGroups(`catalog:${config.owner}`,sectionKeys);const triggerAdd=id=>{setPendingId(id);mutation.mutate(id,{onSuccess:data=>{window.location.href=`/company/${config.company}/integrations/${data.id}/connector`},onError:()=>{setPendingId(null)}})};const handleGroupClick=group=>{if(mutation.isPending)return;if(1===group.items.length)triggerAdd(group.items[0].id);else setSelectedGroup(group)};const handleCloseModal=()=>{if(mutation.isPending)return;setSelectedGroup(null);setPendingId(null)};return/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Stack,{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.TextInput,{placeholder:t("Rechercher un connecteur..."),leftSection:/*#__PURE__*/(0,jsx_runtime.jsx)(tabler_icons_react_mjs_.IconSearch,{size:16}),value:searchValue,onChange:e=>setSearchValue(e.currentTarget.value),size:"md"}),sections?sections.map(section=>/*#__PURE__*/(0,jsx_runtime.jsx)(CollapsibleGroup,{title:t(section.type.name),count:section.groups.length,collapsed:isCollapsed(section.type.codename),onToggle:()=>toggle(section.type.codename),children:/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.SimpleGrid,{cols:{base:1,xs:2,sm:3,md:4,lg:5,xl:6},spacing:"lg",verticalSpacing:"lg",style:{alignItems:"stretch"},children:section.groups.map(group=>{const isSinglePending=1===group.items.length&&pendingId===group.items[0].id;const isHovered=hoveredGroupKey===group.groupKey&&!mutation.isPending;return/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Card,{withBorder:true,style:{height:"100%",display:"flex",flexDirection:"column",justifyContent:"space-between",cursor:mutation.isPending?"wait":"pointer",opacity:mutation.isPending&&!isSinglePending?.5:1,borderColor:isHovered?"var(--mantine-color-green-5)":void 0,backgroundColor:isHovered?"var(--mantine-color-green-0)":void 0,transition:"border-color 120ms ease, background-color 120ms ease",position:"relative"},onMouseEnter:()=>setHoveredGroupKey(group.groupKey),onMouseLeave:()=>setHoveredGroupKey(null),onClick:()=>handleGroupClick(group),children:[isHovered&&/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Badge,{variant:"filled",color:"green",style:{position:"absolute",top:8,right:8,zIndex:1},children:t("Configurer →")}),/*#__PURE__*/(0,jsx_runtime.jsx)(GroupCard,{group:group,pending:isSinglePending})]},group.groupKey)})})},section.type.codename)):/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.SimpleGrid,{cols:{base:1,xs:2,sm:3,md:4,lg:5,xl:6},spacing:"lg",verticalSpacing:"lg",children:Array.from({length:8}).map((_,idx)=>/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Skeleton,{height:180,radius:"md",animate:true},idx))}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Modal,{opened:null!==selectedGroup,onClose:handleCloseModal,title:selectedGroup?.baseName??"",size:"lg",children:selectedGroup&&/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Stack,{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{c:"dimmed",children:t("Choisir une m\xe9thode de connexion :")}),selectedGroup.items.map(item=>/*#__PURE__*/(0,jsx_runtime.jsx)(MethodChoiceCard,{item:item,baseName:selectedGroup.baseName,pending:pendingId===item.id,disabled:mutation.isPending,onClick:()=>triggerAdd(item.id)},item.id))]})})]})}var dist_index_js_=__webpack_require__(4259);function ConnectorsApp(){const{t}=(0,es_index_js_.useTranslation)();const tab=(0,dist_index_js_.useRxState)(new URL(location.href).searchParams.get("tab")??"active");const statsResultRes=useStatsQuery();const statsResult=statsResultRes.data;const[tabValue,setTabValue]=(0,index_js_.useState)(tab.value??"active");(0,index_js_.useEffect)(()=>{tab.dispatch(tabValue)},[tabValue]);return/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Container,{size:"xl",px:0,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Group,{py:16,children:/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Stack,{gap:0,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Title,{w:"fit-content",mb:0,order:1,children:t("Nos connecteurs")}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{w:"fit-content",mb:0,c:"dimmed",fz:"h5",children:t("Synchronisez vos comptes bancaires et outils comptables facilement.")})]})}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Group,{py:16,children:/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.SegmentedControl,{value:tabValue,onChange:setTabValue,radius:"md",size:"lg",data:[{label:t("Connecteurs actifs ({{nombre}})",{nombre:statsResult?statsResult.ok??0:"…"}),value:"active"},{label:t("Connecteurs \xe0 configurer ({{nombre}})",{nombre:statsResult?statsResult.ill??0:"…"}),value:"ill"},{label:t("Les autres connecteurs"),value:"all"}]})}),"active"===tabValue&&/*#__PURE__*/(0,jsx_runtime.jsx)(ListOkComponent,{}),"ill"===tabValue&&/*#__PURE__*/(0,jsx_runtime.jsx)(ListIllComponent,{}),"all"===tabValue&&/*#__PURE__*/(0,jsx_runtime.jsx)(ListCatalogComponent,{})]})}var dist_esm_index_mjs_=__webpack_require__(4449);const theme=(0,index_mjs_.createTheme)((0,dist_esm_index_mjs_.assign)(dist_index_js_.theme,{components:{}}));const cssVarResolver=x=>(0,dist_esm_index_mjs_.assign)(dist_index_js_.cssVarResolver(x),{dark:{},light:{},variables:{}});function Providers(props){const{children,config,mantine,tanstack}=props;return/*#__PURE__*/(0,jsx_runtime.jsx)(AppConfigProvider,{value:config,children:/*#__PURE__*/(0,jsx_runtime.jsx)(modern_index_js_.QueryClientProvider,{client:tanstack?.queryClient??new modern_index_js_.QueryClient,children:/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.MantineProvider,{theme:theme,cssVariablesResolver:cssVarResolver,defaultColorScheme:mantine?.defaultColorScheme,forceColorScheme:mantine?.forceColorScheme,children:/*#__PURE__*/(0,jsx_runtime.jsxs)(modals_esm_index_mjs_.ModalsProvider,{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(esm_index_mjs_.Notifications,{}),/*#__PURE__*/(0,jsx_runtime.jsx)(dist_index_js_.RevealTokenProvider,{children:children})]})})})})}(0,locales.o)();function Connectors(props){return/*#__PURE__*/(0,jsx_runtime.jsx)(index_js_.StrictMode,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(Providers,{...props,children:/*#__PURE__*/(0,jsx_runtime.jsx)(ConnectorsApp,{})})})}}}]);