1"use strict";(self.webpackChunkfrontend=self.webpackChunkfrontend||[]).push([[8039],{26885:(e,t,n)=>{n.d(t,{A:()=>o});n(65043);const o=n.p+"static/media/round-check.e46f0eecac8de49a7d87218742f4b15f.svg"},46820:(e,t,n)=>{n.r(t),n.d(t,{default:()=>W});var o=n(65043),r=n(83003),a=n(35475),s=n(64736),l=n(75717),u=n(26885),i=n(72372);const c="base";function d(e,t){const n=i.li[t];return n?`${c}--${n}`:function(e,t){return`${c}-${e}-${t}`}(e,t)}const p="NumberInput";function m(e){return d(p,e)}!function(e,t){const n={};t.forEach((t=>{n[t]=d(e,t)}))}(p,["root","formControl","focused","disabled","readOnly","error","input","incrementButton","decrementButton","adornedStart","adornedEnd"]);var f=n(17868),h=n(63462),b=n(5844),g=n(76114);function y(e,t){return e===t}const w={},v=()=>{};function x(e,t){const n={...e};return Object.keys(t).forEach((e=>{void 0!==t[e]&&(n[e]=t[e])})),n}function S(e){const t=o.useRef(null),{reducer:n,initialState:r,controlledProps:a=w,stateComparers:s=w,onStateChange:l=v,actionContext:u,componentName:i=""}=e;o.useRef(a);const c=o.useCallback(((e,o)=>{t.current=o;const r=x(e,a);return n(r,o)}),[a,n]),[d,p]=o.useReducer(c,r),m=o.useCallback((e=>{p({...e,context:u})}),[u]);return function(e){const{nextState:t,initialState:n,stateComparers:r,onStateChange:a,controlledProps:s,lastActionRef:l}=e,u=o.useRef(n);o.useEffect((()=>{if(null===l.current)return;const e=x(u.current,s);Object.keys(t).forEach((n=>{const o=r[n]??y,s=t[n],u=e[n];(null==u&&null!=s||null!=u&&null==s||null!=u&&null!=s&&!o(s,u))&&a?.(l.current.event??null,n,s,l.current.type??"",t)})),u.current=t,l.current=null}),[u,t,l,a,r,s])}({nextState:d,initialState:r,stateComparers:s??w,onStateChange:l??v,controlledProps:a,lastActionRef:t}),[x(d,a),m]}const C=o.createContext(void 0);const j="numberInput:clamp",P="numberInput:inputChange",N="numberInput:increment",I="numberInput:decrement",A="numberInput:decrementToMin",M="numberInput:incrementToMax",k="numberInput:resetInputValue";var D=n(11188);function E(e){return"number"===typeof e&&!Number.isNaN(e)&&Number.isFinite(e)}function B(e,t){const{min:n,max:o,step:r}=t,a=null===e?null:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Number.MIN_SAFE_INTEGER,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Number.MAX_SAFE_INTEGER,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:NaN;if(Number.isNaN(o))return(0,D.A)(e,t,n);const r=o||1,a=e%r,s=Math.sign(a);return Math.abs(a)>r/2?(0,D.A)(e+s*(r-Math.abs(a)),t,n):(0,D.A)(e-s*Math.abs(a),t,n)}(e,n,o,r);return{value:a,inputValue:null===a?"":String(a)}}function R(e,t,n,o){const r=function(e,t,n,o){const{value:r}=e,{step:a=1,min:s,max:l}=t;return E(r)?{up:r+(a??1)*o,down:r-(a??1)*o}[n]:{up:s??1,down:l??-1}[n]}(e,t,o,n?t.shiftMultiplier:1),a=B(r,t);return{...e,...a}}function T(e,t,n){const o=t[n];return E(o)?{...e,value:o,inputValue:String(o)}:e}function O(e,t){const{type:n,context:o}=t;switch(n){case j:return function(e,t,n){const{getInputValueAsString:o}=t,r=o(n);return{...e,...B(""===r||"-"===r?null:parseInt(r,10),t)}}(e,o,t.inputValue);case P:return function(e,t,n){const{getInputValueAsString:o}=t,r=o(n);return r.match(/^-?\d+?$/)||""===r||"-"===r?{...e,inputValue:r}:e}(e,o,t.inputValue);case N:return R(e,o,t.applyMultiplier,"up");case I:return R(e,o,t.applyMultiplier,"down");case M:return T(e,o,"max");case A:return T(e,o,"min");case k:return{...e,inputValue:String(e.value)};default:return e}}const L=["ArrowUp","ArrowDown","PageUp","PageDown","Home","End"];function V(e){return String(e?e.trim():e)}function _(e){const{min:t,max:n,step:r,shiftMultiplier:a=10,defaultValue:s,disabled:l=!1,error:u=!1,onBlur:i,onInputChange:c,onFocus:d,onChange:p,required:m=!1,readOnly:y=!1,value:w,inputRef:v,inputId:x,componentName:D="useNumberInput"}=e,B=o.useContext(C),{current:R}=o.useRef(null!=w),T=o.useCallback((e=>{0}),[]),_=o.useRef(null),U=(0,h.A)(_,v,T),F=(0,b.A)(x),[q,H]=o.useState(!1),$=o.useCallback(((e,t,n,o)=>{if("value"===t&&"string"!==typeof n)switch(o){case"numberInput:clamp":case"numberInput:increment":case"numberInput:decrement":case"numberInput:incrementToMax":case"numberInput:decrementToMin":p?.(e,n)}}),[p]),G=o.useMemo((()=>({min:t,max:n,step:r,shiftMultiplier:a,getInputValueAsString:V})),[t,n,r,a]),K=w??s??null,Q={value:K,inputValue:K?String(K):""},X=o.useMemo((()=>({value:w})),[w]),[W,z]=S({reducer:O,controlledProps:X,initialState:Q,onStateChange:$,actionContext:o.useMemo((()=>G),[G]),componentName:D}),{value:J,inputValue:Y}=W;o.useEffect((()=>{!B&&l&&q&&(H(!1),i?.())}),[B,l,q,i]),o.useEffect((()=>{R&&E(J)&&z({type:k})}),[J,z,R]);const Z=e=>t=>{if(!R&&null===t.target)throw new Error((0,f.A)(17));B?.onChange?.(t),e.onInputChange?.(t),t.defaultMuiPrevented||t.defaultPrevented||z({type:P,event:t,inputValue:t.currentTarget.value})},ee=e=>t=>{B?.onBlur(),e.onBlur?.(t),t.defaultMuiPrevented||t.defaultPrevented||(z({type:j,event:t,inputValue:t.currentTarget.value}),H(!1))},te=e=>t=>{const n=Boolean(t.shiftKey);z({type:{up:N,down:I}[e],event:t,applyMultiplier:n})},ne=e=>t=>{if(e.onKeyDown?.(t),!t.defaultMuiPrevented&&!t.defaultPrevented)switch(L.includes(t.key)&&t.preventDefault(),t.key){case"ArrowUp":z({type:N,event:t,applyMultiplier:!!t.shiftKey});break;case"ArrowDown":z({type:I,event:t,applyMultiplier:!!t.shiftKey});break;case"PageUp":z({type:N,event:t,applyMultiplier:!0});break;case"PageDown":z({type:I,event:t,applyMultiplier:!0});break;case"Home":z({type:M,event:t});break;case"End":z({type:A,event:t})}},oe=e=>{e.preventDefault(),_.current&&_.current.focus()},re={"aria-controls":F,tabIndex:-1},ae=l||!!E(J)&&J>=(n??Number.MAX_SAFE_INTEGER),se=l||!!E(J)&&J<=(t??Number.MIN_SAFE_INTEGER);return{disabled:l,error:u,focused:q,formControlContext:B,getInputProps:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const o={...{onBlur:i,onFocus:d,onChange:c},...(0,g.A)(e,["onClick"])},r={...o,onFocus:(a=o,e=>{a.onFocus?.(e),e.defaultMuiPrevented||e.defaultPrevented||(B&&B.onFocus&&B?.onFocus?.(),H(!0))}),onChange:Z({...o,onInputChange:o.onChange}),onBlur:ee(o),onKeyDown:ne(o)};var a;const s=(q?Y:J)??"";return delete e.onInputChange,{type:"text",id:F,"aria-invalid":u||void 0,defaultValue:void 0,value:s,"aria-valuenow":s,"aria-valuetext":String(s),"aria-valuemin":t,"aria-valuemax":n,autoComplete:"off",autoCorrect:"off",spellCheck:"false",required:m,readOnly:y,"aria-disabled":l,disabled:l,...e,ref:U,...r}},getIncrementButtonProps:function(){return{...arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},...re,disabled:ae,"aria-disabled":ae,onMouseDown:oe,onClick:te("up")}},getDecrementButtonProps:function(){return{...arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},...re,disabled:se,"aria-disabled":se,onMouseDown:oe,onClick:te("down")}},getRootProps:function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const n={...(0,g.A)(e,["onBlur","onInputChange","onFocus","onChange"]),...(0,g.A)(t)};return{...t,...n,onClick:(o=n,e=>{o.onClick?.(e),e.defaultMuiPrevented||e.defaultPrevented||_.current&&e.currentTarget===e.target&&_.current.focus()})};var o},required:m,value:J,inputValue:Y,isIncrementDisabled:ae,isDecrementDisabled:se}}var U=n(98610),F=n(88092),q=n(70579);const H={disableDefaultClasses:!1},$=o.createContext(H);const G=e=>{const{disabled:t,error:n,focused:r,readOnly:a,formControlContext:s,isIncrementDisabled:l,isDecrementDisabled:u,startAdornment:i,endAdornment:c}=e,d={root:["root",t&&"disabled",n&&"error",r&&"focused",a&&"readOnly",Boolean(s)&&"formControl",Boolean(i)&&"adornedStart",Boolean(c)&&"adornedEnd"],input:["input",t&&"disabled",a&&"readOnly"],incrementButton:["incrementButton",l&&"disabled"],decrementButton:["decrementButton",u&&"disabled"]};return(0,U.A)(d,function(e){const{disableDefaultClasses:t}=o.useContext($);return n=>t?"":e(n)}(m))},K=o.forwardRef((function(e,t){const{className:n,defaultValue:o,disabled:r,endAdornment:a,error:s,id:l,max:u,min:i,onBlur:c,onInputChange:d,onFocus:p,onChange:m,placeholder:f,required:h,readOnly:b=!1,shiftMultiplier:g,startAdornment:y,step:w,value:v,slotProps:x={},slots:S={},...C}=e,{getRootProps:j,getInputProps:P,getIncrementButtonProps:N,getDecrementButtonProps:I,focused:A,error:M,disabled:k,formControlContext:D,isIncrementDisabled:E,isDecrementDisabled:B}=_({min:i,max:u,step:w,shiftMultiplier:g,defaultValue:o,disabled:r,error:s,onFocus:p,onInputChange:d,onBlur:c,onChange:m,required:h,readOnly:b,value:v,inputId:l,componentName:"NumberInput"}),R={...e,disabled:k,error:M,focused:A,readOnly:b,formControlContext:D,isIncrementDisabled:E,isDecrementDisabled:B},T=G(R),O={placeholder:f},L=S.root??"div",V=(0,F.A)({elementType:L,getSlotProps:j,externalSlotProps:x.root,externalForwardedProps:C,additionalProps:{ref:t},ownerState:R,className:[T.root,n]}),U=S.input??"input",H=(0,F.A)({elementType:U,getSlotProps:e=>P({...O,...e}),externalSlotProps:x.input,ownerState:R,className:T.input}),$=S.incrementButton??"button",K=(0,F.A)({elementType:$,getSlotProps:N,externalSlotProps:x.incrementButton,ownerState:R,className:T.incrementButton}),Q=S.decrementButton??"button",X=(0,F.A)({elementType:Q,getSlotProps:I,externalSlotProps:x.decrementButton,ownerState:R,className:T.decrementButton});return(0,q.jsxs)(L,{...V,children:[(0,q.jsx)(Q,{...X}),(0,q.jsx)($,{...K}),y,(0,q.jsx)(U,{...H}),a]})}));var Q=n(26747),X=n(97140);n(46733);function W(){const e=(0,r.wA)(),[t,n]=(0,o.useState)("HR"),[i,c]=(0,o.useState)([]),[d,p]=(0,o.useState)({}),{data:m,error:f,isError:h,refetch:b}=(0,s.V$)();(0,o.useEffect)((()=>{h&&403===(null===f||void 0===f?void 0:f.status)&&e((0,l.h9)())}),[h,null===f||void 0===f?void 0:f.status,e]),(0,o.useEffect)((()=>(document.body.classList.add("softwaretools-body"),()=>
1{document.body.classList.remove("softwaretools-body")})),[]),(0,o.useEffect)((()=>{var e;null!==m&&void 0!==m&&m.data&&(window.scrollTo({top:0,behavior:"smooth"}),c(m.data),n((null===(e=m.data[0])||void 0===e?void 0:e.category)||"HR"))}),[m,b]);const g=i.reduce(((e,t)=>(e[t.category]||(e[t.category]=[]),e[t.category].push(t),e)),{}),y=e=>g[e].reduce(((e,t)=>e+(d[t.id]||0)*t.price),0),w={seo_title:"Software Tools - StartMyBusiness",seo_description:"Explore our curated selection of software tools tailored for all business needs, including HR, marketing, and more, to enhance your business efficiency.",seo_keywords:"software tools, business software, HR tools, marketing tools, StartMyBusiness software",page_url:"/tools/software-tools",og_image:"https://cdn.startmybusiness.com/product/og_homepage_image.png",schema_data:{"@context":"https://schema.org","@graph":[{"@type":"WebPage",url:"https://www.startmybusiness.com/tools/software-tools",name:"Software Tools - StartMyBusiness",description:"Explore our curated selection of software tools tailored for all business needs, including HR, marketing, and more, to enhance your business efficiency.",publisher:{"@type":"Organization",name:"StartMyBusiness",logo:{"@type":"ImageObject",url:"https://www.startmybusiness.com/images/logo.webp"}}},{"@type":"BreadcrumbList",itemListElement:[{"@type":"ListItem",position:1,name:"Home",item:"https://www.startmybusiness.com/"},{"@type":"ListItem",position:2,name:"Tools",item:"https://www.startmybusiness.com/tools"},{"@type":"ListItem",position:3,name:"Software Tools",item:"https://www.startmybusiness.com/tools/software-tools"}]}]}};return(0,q.jsxs)("div",{className:"marketplace softwaretools padding",children:[(0,q.jsx)(Q.A,{schemaData:w.schema_data,seoDataDefault:w}),i.length>0&&(0,q.jsxs)("div",{className:"container",children:[(0,q.jsx)("h1",{className:"center",children:"Software Tools"}),(0,q.jsx)("p",{className:"center sub-title",children:"Our recommended tools suit all business needs. (Pricing is approximate, verify with the provider)."}),(0,q.jsx)("div",{className:"btn-main-wrap",children:(0,q.jsx)(X.A,{autoHide:!1,children:(0,q.jsx)("div",{className:"btn-wrap",children:Object.keys(g).map((e=>(0,q.jsx)(a.N_,{to:"#",className:t===e?"active":"",onClick:()=>{n(e)},children:e},e)))})})}),(0,q.jsxs)("div",{className:"software-tables",children:[Object.keys(g).map((e=>(0,q.jsxs)("div",{className:"category-content "+(t===e?"active-category":""),children:[(0,q.jsx)("div",{className:"table-responsive",children:(0,q.jsxs)("table",{children:[(0,q.jsx)("thead",{children:(0,q.jsxs)("tr",{children:[(0,q.jsx)("th",{children:"Software"}),(0,q.jsx)("th",{children:"Integrations"}),(0,q.jsx)("th",{children:"Approx Costs"}),(0,q.jsx)("th",{}),(0,q.jsx)("th",{children:"User(s)"}),(0,q.jsx)("th",{children:"Total"})]})}),(0,q.jsx)("tbody",{children:g[e].map((e=>(0,q.jsxs)("tr",{children:[(0,q.jsx)("td",{children:(0,q.jsx)(a.N_,{target:"_blank",to:e.url,children:e.name})}),(0,q.jsx)("td",{children:(0,q.jsx)("img",{src:u.A,alt:"Checkmark for integration"})}),(0,q.jsxs)("td",{children:["\xa3",e.price]}),(0,q.jsx)("td",{children:"X"}),(0,q.jsx)("td",{children:(0,q.jsx)(K,{min:0,placeholder:"0",value:d[e.id]||0,onChange:(t,n)=>((e,t)=>{p((n=>({...n,[e]:t?Number(t):0})))})(e.id,n)})}),(0,q.jsxs)("td",{children:["\xa3",(d[e.id]||0)*e.price]})]},e.id)))})]})}),(0,q.jsxs)("p",{className:"subtotal right",children:[(0,q.jsx)("span",{children:"Subtotal:"}),(0,q.jsxs)("span",{children:["\xa3",y(e)]})]})]},e))),(0,q.jsxs)("p",{className:"total right",children:[(0,q.jsx)("span",{children:"Total:"}),(0,q.jsxs)("span",{children:["\xa3",Object.keys(g).reduce(((e,t)=>e+y(t)),0)]})]})]})]})]})}},64736:(e,t,n)=>{n.d(t,{Gr:()=>l,Lx:()=>u,NM:()=>r,V$:()=>i,Vm:()=>c,W3:()=>d,mH:()=>s,oS:()=>a});const o=n(40708).l.injectEndpoints({endpoints:e=>({businessNameSuggestions:e.mutation({query:e=>({url:"/api/tools/generatebusinessnames",method:"POST",body:e})}),getAllSoftwareTools:e.query({query:e=>({url:"/api/tools/softwaretool/all",method:"POST",body:e})}),downloadLegalDoc:e.mutation({query:e=>({url:"/api/tools/legaldocument/download",method:"POST",body:e,responseHandler:async e=>e.blob(),cache:"no-store"}),async onQueryStarted(e,t){let{queryFulfilled:n}=t;try{const{data:e}=await n,t=window.URL.createObjectURL(e),o=document.createElement("a");o.href=t;const r=(new Date).toISOString().replace(/[:.]/g,"-");o.download=`legaldoc-${r}.pdf`,document.body.appendChild(o),o.click(),document.body.removeChild(o),window.URL.revokeObjectURL(t)}catch(o){console.error("Error downloading invoice:",o)}}}),downloadNonDisDoc:e.mutation({query:e=>({url:"/api/tools/legaldocument/download2",method:"POST",body:e,responseHandler:async e=>e.blob(),cache:"no-store"}),async onQueryStarted(e,t){let{queryFulfilled:n}=t;try{const{data:e}=await n,t=window.URL.createObjectURL(e),o=document.createElement("a");o.href=t;const r=(new Date).toISOString().replace(/[:.]/g,"-");o.download=`nondisc-${r}.pdf`,document.body.appendChild(o),o.click(),document.body.removeChild(o),window.URL.revokeObjectURL(t)}catch(o){console.error("Error downloading invoice:",o)}}}),downloadBusinessPlan:e.mutation({query:e=>({url:"/api/tools/businessplan/download",method:"POST",body:e,responseHandler:async e=>e.blob(),cache:"no-store"}),async onQueryStarted(e,t){let{queryFulfilled:n}=t;try{const{data:e}=await n,t=window.URL.createObjectURL(e),o=document.createElement("a");o.href=t,o.download="businessPlan.pdf",document.body.appendChild(o),o.click(),document.body.removeChild(o),window.URL.revokeObjectURL(t)}catch(o){console.error("Error downloading invoice:",o)}}}),downloadEbook:e.mutation({query:e=>({url:"/api/lead/add",method:"POST",body:e})}),getSsoLoginUrl:e.mutation({query:e=>({url:"/api/tools/sso-login",method:"POST",body:e})}),toolsCountEntries:e.mutation({query:e=>{let{toolName:t,response:n}=e;return{url:"/api/tools/count",method:"POST",body:{toolName:t,response:n}}}})})}),{useBusinessNameSuggestionsMutation:r,useDownloadLegalDocMutation:a,useDownloadNonDisDocMutation:s,useDownloadBusinessPlanMutation:l,useDownloadEbookMutation:u,useGetAllSoftw
1areToolsQuery:i,useToolsCountEntriesMutation:c,useGetSsoLoginUrlMutation:d}=o},88092:(e,t,n)=>{n.d(t,{A:()=>l});var o=n(63462),r=n(69388),a=n(9523),s=n(46004);const l=function(e){const{elementType:t,externalSlotProps:n,ownerState:l,skipResolvingSlotProps:u=!1,...i}=e,c=u?{}:(0,s.A)(n,l),{props:d,internalRef:p}=(0,a.A)({...i,externalSlotProps:c}),m=(0,o.A)(p,c?.ref,e.additionalProps?.ref);return(0,r.A)(t,{...d,ref:m},l)}}}]); 2//# sourceMappingURL=8039.72481f77.chunk.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.