@kanda-libs/ks-design-library-new 0.0.28 → 0.0.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -69,6 +69,11 @@ export interface SimpleCompanyCardProps {
69
69
  isLoading?: boolean;
70
70
  }
71
71
  export declare const SimpleCompanyCard: FunctionComponent<SimpleCompanyCardProps>;
72
+ export interface StageTimelineProps {
73
+ stages: (string | JSX.Element)[];
74
+ activeKey: number;
75
+ }
76
+ export declare const StageTimeline: FunctionComponent<StageTimelineProps>;
72
77
  export declare const NotFoundPage: FunctionComponent;
73
78
 
74
79
  export {};
@@ -1,2 +1,2 @@
1
- import{jsx as fe}from"react/jsx-runtime";var ce=function({children:e}){return fe("div",{className:"p-4 border bg-lavender-100 border-lavender-200 rounded-xl text-lavender-200",children:e})},ue=ce;import{Pagination as Xe}from"@kanda-libs/ks-design-library";import{SkeletonLoader as Ce}from"@kanda-libs/ks-design-library";import{Icon as ge}from"@kanda-libs/ks-design-library";var F="flex px-3 py-1.75 h-9 -ml-3 my-auto rounded-lg bg-transparent hover:bg-neutral-100 text-style-g-em text-neutral-500 whitespace-nowrap z-20",I={icon:"chevron-down",stroke:"neutral-500",size:12,className:"ml-2 my-auto"},_={width:"calc(100% + 16px)"},f={container:{base:"w-full h-full overflow-hidden",padding:"pl-4 -ml-4"},flex:{base:"w-full h-full flex px-4 px-0",padding:"pl-4"}};import{jsx as xe,jsxs as Pe}from"react/jsx-runtime";var be=function({label:e,...o}){return Pe("button",{className:F,...o,children:[e,xe(ge,{...I})]})},W=be;import G from"clsx";function w(e){let o=e===0?_:{};return{classNames:{container:G(f.container.base,e===0?f.container.padding:""),flex:G(f.flex.base,e===0?"":f.flex.padding)},containerStyle:o}}import{jsx as B}from"react/jsx-runtime";var Se=function({index:e,children:o}){let{classNames:t,containerStyle:r}=w(e);return B("div",{className:t.container,style:r,children:B("div",{className:t.flex,children:o})})},j=Se;var h={Button:W,Wrapper:j};import J from"clsx";var c={main:"flex h-14",loading:{base:"my-auto md:w-full mr-8",margin:"ml-4"},wrapper:{padding:"px-2 pt-2",popover:"pb-1"}};function y(e,o){return{classNames:{...c,loading:J(c.loading.base,e===0?"":c.loading.margin),wrapper:J(c.wrapper.padding,o?"":c.wrapper.popover)}}}import{jsx as P}from"react/jsx-runtime";var Te=function({index:e,isLoading:o=!1,popoverButtons:t=!1,label:r,...n}){let{classNames:a}=y(e,t);return P("div",{...n,className:a.main,children:P(Ce,{isLoading:o,wrapperClassName:a.loading,afterLoading:P(h.Wrapper,{index:e,children:P(h.Button,{label:r})})})})},X=Te;var z={base:"flex-row h-14 border-b border-neutral-200"};function N(e,o){let{headers:t,getHeaderGroupProps:r}=e,n=r({}),a=o.filter(s=>s.isVisible).length;return{headers:t,headerGroupProps:n,totalVisible:a}}import{jsx as D}from"react/jsx-runtime";function we({headerGroup:e,columns:o,isLoading:t}){let{headerGroupProps:r,headers:n}=N(e,o);return D("div",{...r,className:z.base,children:n.map((a,s)=>D(X,{index:s,label:a.render("Header"),isLoading:t,...a.getHeaderProps(a.getSortByToggleProps())}))})}var $=we;import{SkeletonLoader as Ne,Text as ve}from"@kanda-libs/ks-design-library";import he from"clsx";var d={container:"flex w-full h-full",render:"w-full my-auto text-style-g text-neutral-600 whitespace-nowrap overflow-hidden overflow-ellipsis",renderLoading:"w-full my-auto mr-8 text-style-g",mobileLabel:"block md:hidden text-16-24-em text-neutral-600 mr-2",cell:{base:"px-4 py-1 md:pt-0 md:pr-0 md:pb-0 md:h-16 flex",compact:"h-8 flex",padding:"md:pl-4"}};function v(e,o,t){return{cell:he(o?d.cell.compact:d.cell.base,e===0?"":d.cell.padding),container:d.container,render:t?d.renderLoading:d.render,mobileLabel:d.mobileLabel}}import{useIsDesktop as ye}from"@kanda-libs/ks-design-library";function E(e){if(!e)return{};let o=ye();return{...e,width:o?e==null?void 0:e.width:"100%"}}import{Fragment as Le,jsx as g,jsxs as Re}from"react/jsx-runtime";var Ee=function({render:e,index:o,compact:t=!1,isLoading:r=!1,label:n,...a}){let s=v(o,t,r),{style:i,...p}=a,l=E(i);return g("div",{...p,style:l,className:s.cell,children:g("div",{className:s.container,children:g("div",{className:s.render,children:g(Ne,{isLoading:r,afterLoading:Re(Le,{children:[g(ve,{text:`${n}:`,className:s.mobileLabel}),e()]})})})})})},V=Ee;import{useClasses as Ae}from"@kanda-libs/ks-design-library";var U={base:"relative md:h-16 flex-col py-2 md:py-0 md:flex-row",compact:"relative h-8",border:"border-b border-neutral-200",hover:"group hover:bg-neutral-50 cursor-pointer",button:"hidden group-hover:block"};function L(e,o){return Ae(U,{base:[".base",e===9?"":".border",o?".hover":""],button:[".button"]})}import{jsx as K}from"react/jsx-runtime";function He({cells:e,index:o,compact:t=!1,isLoading:r=!1,onRowClick:n,...a}){let s=L(o,!!n);return K("div",{...a,className:t?s.compact:s.base,onClick:()=>{n&&n(e[0].row.original)},children:e.map((i,p)=>K(V,{...i.getCellProps(),index:p,isLoading:r,render:()=>i.render("Cell"),label:i.column.Header}))})}var Y=He;import{Fragment as Oe,jsx as q}from"react/jsx-runtime";function ke({page:e,prepareRow:o,isLoading:t=!1,compact:r=!1,onRowClick:n}){return q(Oe,{children:e.map((a,s)=>(o(a),q(Y,{...a.getRowProps(),index:s,cells:a.cells,isLoading:t,compact:r,onRowClick:n})))})}var Q=ke;import{useTable as _e,useGlobalFilter as We,usePagination as Ge,useSortBy as Be,useFlexLayout as je}from"react-table";import Me from"fuse.js";var Fe=(e,o)=>e.filter(t=>Object.values(t.values).join(", ").toLowerCase().includes(o.toLowerCase())),Z=(e,o)=>e.filter(({id:t})=>o.filter(r=>r.id===t).length===0),Ie=(e,o,t,r,n)=>{let a=e.map(l=>l.values),p=new Me(a,{keys:t.map(l=>({name:l,getFn:m=>m[l]}))}).search(o).map(({item:l})=>l).slice(0,r).map(l=>e.find(m=>m.values.cid===l.cid)).filter(Boolean);return Z(p,n)},ee=(e,o,t,r=10)=>{if(t.length<1)return e;let n=Fe(e,t).slice(0,r),a=Z(e,n),s=Ie(a,t,o,r-n.length,n),i=[...n,...s];return e.map(({id:p})=>i.find(l=>l.id===p)).filter(Boolean)};import{useEffect as Je}from"react";function R({columns:e,data:o,pageSize:t=10,query:r=""}){let n=_e({columns:e,data:o,initialState:{pageSize:10,pageIndex:0},autoResetGlobalFilter:!1,globalFilter:(l,m,x)=>ee(l,m,x,t)},We,Be,Ge,je),{gotoPage:a,pageCount:s,state:{pageIndex:i}}=n,p={pageCount:s,pageIndex:i,setPage:l=>{a(l)}};return Je(()=>{n.setGlobalFilter(r)},[r]),{paginationProps:p,...n}}import{Fragment as $e,jsx as b,jsxs as oe}from"react/jsx-runtime";function ze({compact:e=!1,isLoading:o=!1,onRowClick:t,...r}){let{page:n,prepareRow:a,columns:s,getTableProps:i,headerGroups:p,paginationProps:l}=R(r);return oe($e,{children:[oe("div",{...i(),className:"w-full",children:[b("div",{children:p.map(m=>b($,{headerGroup:m,columns:s,isLoading:o}))}),b(Q,{page:n,prepareRow:a,isLoading:o,compact:e,onRowClick:t})]}),l.pageCount>1&&b("div",{className:"px-4 py-4",children:b(Xe,{...l})})]})}var De=ze;import{Icon as Ve,Logo as Ue}from"@kanda-libs/ks-design-library";import{jsx as u,jsxs as S}from"react/jsx-runtime";var te={80:"max-w-80",96:"max-w-96",120:"max-w-120",160:"max-w160"},re=({logo:e,icon:o,iconClassName:t,iconSize:r,title:n,subText:a,boldSubText:s,cta:i,append:p,width:l=80,contentWidth:m=80,content:x})=>S("div",{className:`flex flex-col m-auto w-full ${te[l]} text-center items-center justify-center`,children:[e&&u("div",{className:"mb-10",children:u(Ue,{height:32})}),!e&&u(Ve,{icon:o,size:r,className:`mx-auto mb-8 ${t}`}),u("h1",{className:"text-24-28-em mb-4",children:n}),S("div",{className:`flex flex-col w-full ${te[m]} mx-auto`,children:[x&&u("div",{className:"mt-4 mb-8",children:x}),S("span",{className:"text-16-24 text-neutral-600",children:[a,s&&S("b",{children:[" ",s]})]}),i&&u("div",{className:"mt-10",children:i}),p]})]});re.defaultProps={logo:!1,iconClassName:"",iconSize:104,cta:null,append:null,boldSubText:null,content:null,width:96,contentWidth:96};var Ke=re;import{useEffect as Ze}from"react";import{Document as eo,Page as oo,pdfjs as ne}from"react-pdf";import{useToast as Ye}from"@kanda-libs/ks-design-library";import{useCallback as A,useMemo as qe,useState as Qe}from"react";function H(e){let[o,t]=Qe(null),{showError:r}=Ye(),n=A(({numPages:l})=>{t([...Array(l).keys()].map(m=>({key:`page_${m+1}`,pageNumber:m+1,className:m!==0?"mt-4":""})))},[]),a=A(({message:l})=>r(`Error loading document. Please contact Kanda. Error message: ${l}`),[r]),s=A(({message:l})=>r(`Error retrieving document source. Please contact Kanda. Error message: ${l}`),[r]),i=qe(()=>e?{file:`data:application/pdf;base64,${e}`,error:"Failed to load the PDF file. The file can still be downloaded by clicking the button below",onLoadSuccess:n,onLoadError:a,onSourceError:s}:null,[e,n,a,s]);return{pdfProps:i,pages:o,showContent:!!(i&&!!e)}}import{Fragment as ae,jsx as C}from"react/jsx-runtime";var to=eo,ro=function({content:e}){let{pdfProps:o,pages:t,showContent:r}=H(e);return Ze(()=>{ne.GlobalWorkerOptions.workerSrc=`https://cdnjs.cloudflare.com/ajax/libs/pdf.js/${ne.version}/pdf.worker.js`},[]),r?C(to,{...o,children:t&&t.map(n=>C(ae,{children:C(oo,{...n})}))}):C(ae,{})},no=ro;var se={container:"grid grid-cols-7 justify-start items-start gap-x-2"};import{jsx as lo}from"react/jsx-runtime";var ao=function({children:e}){return lo("div",{className:se.container,children:e})},so=ao;import{Children as mo}from"react";import{Button as co}from"@kanda-libs/ks-design-library";var k={title:"text-18-22-em text-neutral-900 py-2 text-center h-14",items:"flex flex-col gap-y-2"};import{useCallback as io,useState as po}from"react";function O(e,o){let[t,r]=po(0),n=io(()=>{r(s=>s+1)},[r]),a=e.slice(0,(t+1)*o);return{items:a,showMore:n,canShowMore:e.length>a.length}}import{jsx as M,jsxs as le}from"react/jsx-runtime";var uo=function({title:e,children:o,perPage:t=5}){let{items:r,showMore:n,canShowMore:a}=O(mo.toArray(o),t);return le("div",{children:[M("div",{className:k.title,children:e}),le("div",{className:k.items,children:[r,a&&M("div",{className:"mt-2",children:M(co.Text,{id:"pipeline-column-show-more",variant:"outline",onClick:n,label:"Show more",className:"w-full"})})]})]})},fo=uo;import{Card as go,Text as ie,TimeAgo as bo}from"@kanda-libs/ks-design-library";import{jsx as T,jsxs as So}from"react/jsx-runtime";var xo=function({name:e,signedUpDate:o,reviewed:t=!1,isLoading:r=!1}){return T(go,{className:t?"bg-blue-100":"",children:So("div",{className:"flex flex-col gap-y-2",children:[T(ie,{text:e,className:"text-16-20-em",isLoading:r}),t&&T(ie,{text:"Reviewed",className:"text-12-18-em-up"}),T(bo,{timestamp:o.getTime()})]})})},Po=xo;import{Text as me}from"@kanda-libs/ks-design-library";var pe={container:"w-screen h-screen flex flex-col justify-center items-center"};import{jsx as de,jsxs as wo}from"react/jsx-runtime";var Co=function(){return wo("div",{className:pe.container,children:[de(me,{text:"404",className:"mb-4 text-28-32-em text-neutral-900"}),de(me,{text:"Page not found",className:"text-20-24 text-neutral-700"})]})},To=Co;export{ue as AlertBanner,To as NotFoundPage,no as Pdf,so as Pipeline,fo as PipelineColumn,Po as SimpleCompanyCard,Ke as SplashScreen,De as Table};
1
+ import{jsx as Te}from"react/jsx-runtime";var Ce=function({children:e}){return Te("div",{className:"p-4 border bg-lavender-100 border-lavender-200 rounded-xl text-lavender-200",children:e})},he=Ce;import{Pagination as qe}from"@kanda-libs/ks-design-library";import{SkeletonLoader as Le}from"@kanda-libs/ks-design-library";import{Icon as we}from"@kanda-libs/ks-design-library";var B="flex px-3 py-1.75 h-9 -ml-3 my-auto rounded-lg bg-transparent hover:bg-neutral-100 text-style-g-em text-neutral-500 whitespace-nowrap z-20",G={icon:"chevron-down",stroke:"neutral-500",size:12,className:"ml-2 my-auto"},J={width:"calc(100% + 16px)"},g={container:{base:"w-full h-full overflow-hidden",padding:"pl-4 -ml-4"},flex:{base:"w-full h-full flex px-4 px-0",padding:"pl-4"}};import{jsx as Ne,jsxs as ye}from"react/jsx-runtime";var ve=function({label:e,...o}){return ye("button",{className:B,...o,children:[e,Ne(we,{...G})]})},X=ve;import j from"clsx";function v(e){let o=e===0?J:{};return{classNames:{container:j(g.container.base,e===0?g.container.padding:""),flex:j(g.flex.base,e===0?"":g.flex.padding)},containerStyle:o}}import{jsx as z}from"react/jsx-runtime";var Ee=function({index:e,children:o}){let{classNames:t,containerStyle:r}=v(e);return z("div",{className:t.container,style:r,children:z("div",{className:t.flex,children:o})})},D=Ee;var N={Button:X,Wrapper:D};import $ from"clsx";var u={main:"flex h-14",loading:{base:"my-auto md:w-full mr-8",margin:"ml-4"},wrapper:{padding:"px-2 pt-2",popover:"pb-1"}};function y(e,o){return{classNames:{...u,loading:$(u.loading.base,e===0?"":u.loading.margin),wrapper:$(u.wrapper.padding,o?"":u.wrapper.popover)}}}import{jsx as S}from"react/jsx-runtime";var Re=function({index:e,isLoading:o=!1,popoverButtons:t=!1,label:r,...n}){let{classNames:a}=y(e,t);return S("div",{...n,className:a.main,children:S(Le,{isLoading:o,wrapperClassName:a.loading,afterLoading:S(N.Wrapper,{index:e,children:S(N.Button,{label:r})})})})},V=Re;var U={base:"flex-row h-14 border-b border-neutral-200"};function E(e,o){let{headers:t,getHeaderGroupProps:r}=e,n=r({}),a=o.filter(s=>s.isVisible).length;return{headers:t,headerGroupProps:n,totalVisible:a}}import{jsx as Y}from"react/jsx-runtime";function He({headerGroup:e,columns:o,isLoading:t}){let{headerGroupProps:r,headers:n}=E(e,o);return Y("div",{...r,className:U.base,children:n.map((a,s)=>Y(V,{index:s,label:a.render("Header"),isLoading:t,...a.getHeaderProps(a.getSortByToggleProps())}))})}var K=He;import{SkeletonLoader as Fe,Text as Oe}from"@kanda-libs/ks-design-library";import Ae from"clsx";var d={container:"flex w-full h-full",render:"w-full my-auto text-style-g text-neutral-600 whitespace-nowrap overflow-hidden overflow-ellipsis",renderLoading:"w-full my-auto mr-8 text-style-g",mobileLabel:"block md:hidden text-16-24-em text-neutral-600 mr-2",cell:{base:"px-4 py-1 md:pt-0 md:pr-0 md:pb-0 md:h-16 flex",compact:"h-8 flex",padding:"md:pl-4"}};function L(e,o,t){return{cell:Ae(o?d.cell.compact:d.cell.base,e===0?"":d.cell.padding),container:d.container,render:t?d.renderLoading:d.render,mobileLabel:d.mobileLabel}}import{useIsDesktop as ke}from"@kanda-libs/ks-design-library";function R(e){if(!e)return{};let o=ke();return{...e,width:o?e==null?void 0:e.width:"100%"}}import{Fragment as Ie,jsx as b,jsxs as _e}from"react/jsx-runtime";var Me=function({render:e,index:o,compact:t=!1,isLoading:r=!1,label:n,...a}){let s=L(o,t,r),{style:i,...p}=a,l=R(i);return b("div",{...p,style:l,className:s.cell,children:b("div",{className:s.container,children:b("div",{className:s.render,children:b(Fe,{isLoading:r,afterLoading:_e(Ie,{children:[b(Oe,{text:`${n}:`,className:s.mobileLabel}),e()]})})})})})},q=Me;import{useClasses as We}from"@kanda-libs/ks-design-library";var Q={base:"relative md:h-16 flex-col py-2 md:py-0 md:flex-row",compact:"relative h-8",border:"border-b border-neutral-200",hover:"group hover:bg-neutral-50 cursor-pointer",button:"hidden group-hover:block"};function H(e,o){return We(Q,{base:[".base",e===9?"":".border",o?".hover":""],button:[".button"]})}import{jsx as Z}from"react/jsx-runtime";function Be({cells:e,index:o,compact:t=!1,isLoading:r=!1,onRowClick:n,...a}){let s=H(o,!!n);return Z("div",{...a,className:t?s.compact:s.base,onClick:()=>{n&&n(e[0].row.original)},children:e.map((i,p)=>Z(q,{...i.getCellProps(),index:p,isLoading:r,render:()=>i.render("Cell"),label:i.column.Header}))})}var ee=Be;import{Fragment as Je,jsx as oe}from"react/jsx-runtime";function Ge({page:e,prepareRow:o,isLoading:t=!1,compact:r=!1,onRowClick:n}){return oe(Je,{children:e.map((a,s)=>(o(a),oe(ee,{...a.getRowProps(),index:s,cells:a.cells,isLoading:t,compact:r,onRowClick:n})))})}var te=Ge;import{useTable as De,useGlobalFilter as $e,usePagination as Ve,useSortBy as Ue,useFlexLayout as Ye}from"react-table";import Xe from"fuse.js";var je=(e,o)=>e.filter(t=>Object.values(t.values).join(", ").toLowerCase().includes(o.toLowerCase())),re=(e,o)=>e.filter(({id:t})=>o.filter(r=>r.id===t).length===0),ze=(e,o,t,r,n)=>{let a=e.map(l=>l.values),p=new Xe(a,{keys:t.map(l=>({name:l,getFn:m=>m[l]}))}).search(o).map(({item:l})=>l).slice(0,r).map(l=>e.find(m=>m.values.cid===l.cid)).filter(Boolean);return re(p,n)},ne=(e,o,t,r=10)=>{if(t.length<1)return e;let n=je(e,t).slice(0,r),a=re(e,n),s=ze(a,t,o,r-n.length,n),i=[...n,...s];return e.map(({id:p})=>i.find(l=>l.id===p)).filter(Boolean)};import{useEffect as Ke}from"react";function A({columns:e,data:o,pageSize:t=10,query:r=""}){let n=De({columns:e,data:o,initialState:{pageSize:10,pageIndex:0},autoResetGlobalFilter:!1,globalFilter:(l,m,P)=>ne(l,m,P,t)},$e,Ue,Ve,Ye),{gotoPage:a,pageCount:s,state:{pageIndex:i}}=n,p={pageCount:s,pageIndex:i,setPage:l=>{a(l)}};return Ke(()=>{n.setGlobalFilter(r)},[r]),{paginationProps:p,...n}}import{Fragment as eo,jsx as x,jsxs as ae}from"react/jsx-runtime";function Qe({compact:e=!1,isLoading:o=!1,onRowClick:t,...r}){let{page:n,prepareRow:a,columns:s,getTableProps:i,headerGroups:p,paginationProps:l}=A(r);return ae(eo,{children:[ae("div",{...i(),className:"w-full",children:[x("div",{children:p.map(m=>x(K,{headerGroup:m,columns:s,isLoading:o}))}),x(te,{page:n,prepareRow:a,isLoading:o,compact:e,onRowClick:t})]}),l.pageCount>1&&x("div",{className:"px-4 py-4",children:x(qe,{...l})})]})}var Ze=Qe;import{Icon as oo,Logo as to}from"@kanda-libs/ks-design-library";import{jsx as f,jsxs as C}from"react/jsx-runtime";var se={80:"max-w-80",96:"max-w-96",120:"max-w-120",160:"max-w160"},le=({logo:e,icon:o,iconClassName:t,iconSize:r,title:n,subText:a,boldSubText:s,cta:i,append:p,width:l=80,contentWidth:m=80,content:P})=>C("div",{className:`flex flex-col m-auto w-full ${se[l]} text-center items-center justify-center`,children:[e&&f("div",{className:"mb-10",children:f(to,{height:32})}),!e&&f(oo,{icon:o,size:r,className:`mx-auto mb-8 ${t}`}),f("h1",{className:"text-24-28-em mb-4",children:n}),C("div",{className:`flex flex-col w-full ${se[m]} mx-auto`,children:[P&&f("div",{className:"mt-4 mb-8",children:P}),C("span",{className:"text-16-24 text-neutral-600",children:[a,s&&C("b",{children:[" ",s]})]}),i&&f("div",{className:"mt-10",children:i}),p]})]});le.defaultProps={logo:!1,iconClassName:"",iconSize:104,cta:null,append:null,boldSubText:null,content:null,width:96,contentWidth:96};var ro=le;import{useEffect as lo}from"react";import{Document as io,Page as po,pdfjs as ie}from"react-pdf";import{useToast as no}from"@kanda-libs/ks-design-library";import{useCallback as k,useMemo as ao,useState as so}from"react";function F(e){let[o,t]=so(null),{showError:r}=no(),n=k(({numPages:l})=>{t([...Array(l).keys()].map(m=>({key:`page_${m+1}`,pageNumber:m+1,className:m!==0?"mt-4":""})))},[]),a=k(({message:l})=>r(`Error loading document. Please contact Kanda. Error message: ${l}`),[r]),s=k(({message:l})=>r(`Error retrieving document source. Please contact Kanda. Error message: ${l}`),[r]),i=ao(()=>e?{file:`data:application/pdf;base64,${e}`,error:"Failed to load the PDF file. The file can still be downloaded by clicking the button below",onLoadSuccess:n,onLoadError:a,onSourceError:s}:null,[e,n,a,s]);return{pdfProps:i,pages:o,showContent:!!(i&&!!e)}}import{Fragment as pe,jsx as h}from"react/jsx-runtime";var mo=io,co=function({content:e}){let{pdfProps:o,pages:t,showContent:r}=F(e);return lo(()=>{ie.GlobalWorkerOptions.workerSrc=`https://cdnjs.cloudflare.com/ajax/libs/pdf.js/${ie.version}/pdf.worker.js`},[]),r?h(mo,{...o,children:t&&t.map(n=>h(pe,{children:h(po,{...n})}))}):h(pe,{})},uo=co;var me={container:"grid grid-cols-7 justify-start items-start gap-x-2"};import{jsx as bo}from"react/jsx-runtime";var fo=function({children:e}){return bo("div",{className:me.container,children:e})},go=fo;import{Children as So}from"react";import{Button as Co}from"@kanda-libs/ks-design-library";var O={title:"text-18-22-em text-neutral-900 py-2 text-center h-14",items:"flex flex-col gap-y-2"};import{useCallback as xo,useState as Po}from"react";function M(e,o){let[t,r]=Po(0),n=xo(()=>{r(s=>s+1)},[r]),a=e.slice(0,(t+1)*o);return{items:a,showMore:n,canShowMore:e.length>a.length}}import{jsx as I,jsxs as de}from"react/jsx-runtime";var ho=function({title:e,children:o,perPage:t=5}){let{items:r,showMore:n,canShowMore:a}=M(So.toArray(o),t);return de("div",{children:[I("div",{className:O.title,children:e}),de("div",{className:O.items,children:[r,a&&I("div",{className:"mt-2",children:I(Co.Text,{id:"pipeline-column-show-more",variant:"outline",onClick:n,label:"More",className:"w-full"})})]})]})},To=ho;import{Card as wo,Text as ce,TimeAgo as vo}from"@kanda-libs/ks-design-library";import{jsx as T,jsxs as Eo}from"react/jsx-runtime";var No=function({name:e,signedUpDate:o,reviewed:t=!1,isLoading:r=!1}){return T(wo,{className:t?"bg-blue-100":"",children:Eo("div",{className:"flex flex-col gap-y-2",children:[T(ce,{text:e,className:"text-16-20-em",isLoading:r}),t&&T(ce,{text:"Reviewed",className:"text-12-18-em-up"}),T(vo,{timestamp:o.getTime()})]})})},yo=No;import{Icon as ue,Text as Lo}from"@kanda-libs/ks-design-library";import w from"clsx";function _(e,o,t,r){let n=e||o,a=w("w-7 h-7 rounded-2xl mb-2 relative z-10","text-center text-18-22-em flex items-center justify-center border border-solid border-2",!n&&"border-neutral-600 text-neutral-600 bg-neutral-000",n&&"bg-green-500 text-neutral-000 border-transparent"),s=w("absolute h-1 top-[31px] z-0",!n&&"bg-neutral-200",n&&"bg-green-500"),i=w(s,"w-1/2 left-0",t!==0&&"hidden md:block",t===0&&"hidden"),p=w(s,"w-1/2 right-0 hidden md:block",o&&"bg-neutral-200",!r&&"hidden md:block",r&&"hidden");return{iconClasses:a,leftBorderClasses:i,rightBorderClasses:p}}import{jsx as c,jsxs as fe}from"react/jsx-runtime";var Ro=function({index:e,active:o=!1,current:t=!1,last:r=!1,label:n}){let{iconClasses:a,leftBorderClasses:s,rightBorderClasses:i}=_(o,t,e,r);return fe("div",{className:"relative flex flex-col items-center w-full md:w-auto md:min-w-48",children:[t&&c(ue,{icon:"chevron-down",height:20}),!t&&c("div",{className:"h-5"}),c("div",{className:a,children:fe("div",{children:[!o&&e+1,o&&c(ue,{icon:"check",width:12})]})}),c("div",{className:s}),c("div",{className:i}),c(Lo,{text:n,className:"text-sm text-center text-neutral-700"})]})},ge=Ro;import Ho from"clsx";import{jsx as ko}from"react/jsx-runtime";var Ao=function({active:e=!1}){return ko("div",{className:Ho("flex-grow w-full h-1 -mt-[32px] hidden md:block",!e&&"bg-neutral-200",e&&"bg-green-500")})},be=Ao;import{Fragment as Mo,jsx as W,jsxs as Io}from"react/jsx-runtime";var Fo=function({stages:e,activeKey:o}){return W("div",{className:"flex flex-col items-center justify-between h-full md:flex-row",children:e.map((t,r)=>Io(Mo,{children:[W(ge,{index:r,active:r<o,current:r===o,last:r===e.length-1,label:t},`stage-${r}`),r!==e.length-1&&W(be,{active:r<o})]}))})},Oo=Fo;import{Text as Pe}from"@kanda-libs/ks-design-library";var xe={container:"w-screen h-screen flex flex-col justify-center items-center"};import{jsx as Se,jsxs as Bo}from"react/jsx-runtime";var _o=function(){return Bo("div",{className:xe.container,children:[Se(Pe,{text:"404",className:"mb-4 text-28-32-em text-neutral-900"}),Se(Pe,{text:"Page not found",className:"text-20-24 text-neutral-700"})]})},Wo=_o;export{he as AlertBanner,Wo as NotFoundPage,uo as Pdf,go as Pipeline,To as PipelineColumn,yo as SimpleCompanyCard,ro as SplashScreen,Oo as StageTimeline,Ze as Table};
2
2
  //# sourceMappingURL=index.esm.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/components/AlertBanner/index.tsx", "../src/components/Table/index.tsx", "../src/components/Table/components/HeaderColumn/index.tsx", "../src/components/Table/components/HeaderButton/Button.tsx", "../src/components/Table/components/HeaderButton/constants.ts", "../src/components/Table/components/HeaderButton/useWrapperProps.ts", "../src/components/Table/components/HeaderButton/Wrapper.tsx", "../src/components/Table/components/HeaderButton/index.tsx", "../src/components/Table/components/HeaderColumn/useHeaderColumnProps.ts", "../src/components/Table/components/HeaderColumn/constants.ts", "../src/components/Table/components/HeaderGroup/constants.ts", "../src/components/Table/components/HeaderGroup/useHeaderGroupProps.ts", "../src/components/Table/components/HeaderGroup/index.tsx", "../src/components/Table/components/Cell/index.tsx", "../src/components/Table/components/Cell/useCellClassNames.ts", "../src/components/Table/components/Cell/constants.ts", "../src/hooks/useMobileFullWidthCellStyle.ts", "../src/components/Table/components/Row/useRowClassNames.ts", "../src/components/Table/components/Row/constants.ts", "../src/components/Table/components/Row/index.tsx", "../src/components/Table/components/Pages/index.tsx", "../src/components/Table/useTableProps.ts", "../src/components/Table/helpers/search.ts", "../src/components/SplashScreen/index.tsx", "../src/components/Pdf/index.tsx", "../src/components/Pdf/usePdf.ts", "../src/components/Pipeline/constants.ts", "../src/components/Pipeline/index.tsx", "../src/components/Pipeline/PipelineColumn/index.tsx", "../src/components/Pipeline/PipelineColumn/constants.ts", "../src/components/Pipeline/PipelineColumn/usePipelineColumnPagination.ts", "../src/components/SimpleCompanyCard/index.tsx", "../src/components/NotFoundPage/index.tsx", "../src/components/NotFoundPage/constants.ts"],
4
- "sourcesContent": ["import type { FunctionComponent } from 'react';\n\nexport interface AlertBannerProps {\n children: string | JSX.Element | JSX.Element[];\n}\n\nconst AlertBanner: FunctionComponent<AlertBannerProps> = function ({\n children,\n}) {\n return (\n <div className=\"p-4 border bg-lavender-100 border-lavender-200 rounded-xl text-lavender-200\">\n {children}\n </div>\n );\n};\n\nexport default AlertBanner;\n", "import type { FunctionComponent, PropsWithChildren } from 'react';\nimport {\n Pagination,\n type StringIndexedObject,\n} from '@kanda-libs/ks-design-library';\nimport type { Column } from 'react-table';\nimport HeaderGroup from './components/HeaderGroup';\nimport Pages from './components/Pages';\nimport useTableProps from './useTableProps';\n\nexport interface TableProps<T extends StringIndexedObject<unknown>> {\n columns: Readonly<Column<T>[]>;\n data: T[];\n filter?: string;\n pageSize?: number;\n compact?: boolean;\n isLoading?: boolean;\n onRowClick?: (row: T) => void;\n query?: string;\n}\n\nexport type TableFunctionComponent<\n T extends StringIndexedObject<unknown> = any,\n> = FunctionComponent<TableProps<T>>;\n\nfunction Table<T extends StringIndexedObject<unknown>>({\n compact = false,\n isLoading = false,\n onRowClick,\n ...props\n}: PropsWithChildren<TableProps<T>>) {\n const {\n page,\n prepareRow,\n columns,\n getTableProps,\n headerGroups,\n paginationProps,\n } = useTableProps(props);\n\n return (\n <>\n <div {...getTableProps()} className=\"w-full\">\n <div>\n {headerGroups.map((headerGroup) => (\n <HeaderGroup\n headerGroup={headerGroup}\n columns={columns}\n isLoading={isLoading}\n />\n ))}\n </div>\n <Pages\n page={page}\n prepareRow={prepareRow}\n isLoading={isLoading}\n compact={compact}\n onRowClick={onRowClick}\n />\n </div>\n {paginationProps.pageCount > 1 && (\n <div className=\"px-4 py-4\">\n <Pagination {...paginationProps} />\n </div>\n )}\n </>\n );\n}\n\nexport default Table;\n", "import { SkeletonLoader } from '@kanda-libs/ks-design-library';\nimport type { FunctionComponent, ReactNode } from 'react';\nimport type { TableHeaderProps } from 'react-table';\nimport HeaderButton from '../HeaderButton';\nimport useHeaderColumnProps from './useHeaderColumnProps';\n\nexport interface HeaderColumnProps extends TableHeaderProps {\n index: number;\n isLoading?: boolean;\n popoverButtons?: boolean;\n label: ReactNode;\n}\n\nconst HeaderColumn: FunctionComponent<HeaderColumnProps> = function ({\n index,\n isLoading = false,\n popoverButtons = false,\n label,\n ...props\n}) {\n const { classNames } = useHeaderColumnProps(index, popoverButtons);\n\n return (\n <div {...props} className={classNames.main}>\n <SkeletonLoader\n isLoading={isLoading}\n wrapperClassName={classNames.loading}\n afterLoading={\n <HeaderButton.Wrapper index={index}>\n <HeaderButton.Button label={label} />\n </HeaderButton.Wrapper>\n }\n />\n </div>\n );\n};\n\nexport default HeaderColumn;\n", "import type { FunctionComponent, HTMLAttributes, ReactNode } from 'react';\nimport { Icon } from '@kanda-libs/ks-design-library';\nimport { BUTTON_CLASS_NAMES, ICON_PROPS } from './constants';\n\nexport interface ButtonProps extends HTMLAttributes<HTMLButtonElement> {\n label: ReactNode;\n}\n\nconst Button: FunctionComponent<ButtonProps> = function ({ label, ...props }) {\n return (\n <button className={BUTTON_CLASS_NAMES} {...props}>\n {label}\n <Icon {...ICON_PROPS} />\n </button>\n );\n};\n\nexport default Button;\n", "export const BUTTON_CLASS_NAMES =\n 'flex px-3 py-1.75 h-9 -ml-3 my-auto rounded-lg bg-transparent hover:bg-neutral-100 text-style-g-em text-neutral-500 whitespace-nowrap z-20';\n\nexport const ICON_PROPS = {\n icon: 'chevron-down',\n stroke: 'neutral-500',\n size: 12,\n className: 'ml-2 my-auto',\n};\n\nexport const WRAPPER_STYLE = {\n width: 'calc(100% + 16px)',\n};\n\nexport const WRAPPER_CLASS_NAMES = {\n container: {\n base: 'w-full h-full overflow-hidden',\n padding: 'pl-4 -ml-4',\n },\n flex: {\n base: 'w-full h-full flex px-4 px-0',\n padding: 'pl-4',\n },\n};\n", "import type { CSSProperties } from 'react';\nimport clsx from 'clsx';\nimport { WRAPPER_STYLE, WRAPPER_CLASS_NAMES } from './constants';\n\nexport interface WrapperPropsHook {\n classNames: {\n container: string;\n flex: string;\n };\n containerStyle: CSSProperties;\n}\n\nexport default function useWrapperProps(index: number): WrapperPropsHook {\n const containerStyle = index === 0 ? WRAPPER_STYLE : {};\n\n const classNames = {\n container: clsx(\n WRAPPER_CLASS_NAMES.container.base,\n index === 0 ? WRAPPER_CLASS_NAMES.container.padding : '',\n ),\n flex: clsx(\n WRAPPER_CLASS_NAMES.flex.base,\n index === 0 ? '' : WRAPPER_CLASS_NAMES.flex.padding,\n ),\n };\n\n return {\n classNames,\n containerStyle,\n };\n}\n", "import type { FunctionComponent } from 'react';\nimport useWrapperProps from './useWrapperProps';\n\nexport interface WrapperProps {\n index: number;\n children?: JSX.Element | JSX.Element[];\n}\n\nconst Wrapper: FunctionComponent<WrapperProps> = function ({\n index,\n children,\n}) {\n const { classNames, containerStyle } = useWrapperProps(index);\n\n return (\n <div className={classNames.container} style={containerStyle}>\n <div className={classNames.flex}>{children}</div>\n </div>\n );\n};\n\nexport default Wrapper;\n", "import Button from './Button';\nimport Wrapper from './Wrapper';\n\nexport default {\n Button,\n Wrapper,\n};\n", "import clsx from 'clsx';\nimport { CLASS_NAMES } from './constants';\n\nexport interface HeaderColumnPropsHook {\n classNames: {\n main: string;\n loading: string;\n wrapper: string;\n };\n}\n\nexport default function useHeaderColumnProps(\n index: number,\n popoverButtons: boolean,\n): HeaderColumnPropsHook {\n const classNames = {\n ...CLASS_NAMES,\n loading: clsx(\n CLASS_NAMES.loading.base,\n index === 0 ? '' : CLASS_NAMES.loading.margin,\n ),\n wrapper: clsx(\n CLASS_NAMES.wrapper.padding,\n popoverButtons ? '' : CLASS_NAMES.wrapper.popover,\n ),\n };\n\n return {\n classNames,\n };\n}\n", "export const CLASS_NAMES = {\n main: 'flex h-14',\n loading: {\n base: 'my-auto md:w-full mr-8',\n margin: 'ml-4',\n },\n wrapper: {\n padding: 'px-2 pt-2',\n popover: 'pb-1',\n },\n};\n\nexport const MOVE_LEFT_ITEM_PROPS = {\n name: 'Move column left',\n icon: 'arrow-left',\n};\n\nexport const MOVE_RIGHT_ITEM_PROPS = {\n name: 'Move column right',\n icon: 'arrow-right',\n};\n\nexport const HIDE_COLUMN_PROPS = {\n name: 'Hide column',\n icon: 'eye-off',\n};\n", "export const CLASS_NAMES = {\n base: 'flex-row h-14 border-b border-neutral-200',\n};\n", "import type {\n ColumnInstance,\n HeaderGroup,\n TableHeaderProps,\n} from 'react-table';\n\nexport interface HeaderGroupPropsHook<T extends Object> {\n headers: ColumnInstance<T>[];\n headerGroupProps: TableHeaderProps;\n totalVisible: number;\n}\n\nexport default function useHeaderGroupProps<T extends Object>(\n headerGroup: HeaderGroup<T>,\n columns: ColumnInstance<T>[],\n): HeaderGroupPropsHook<T> {\n const { headers, getHeaderGroupProps } = headerGroup;\n const headerGroupProps = getHeaderGroupProps({});\n\n const totalVisible = columns.filter((column) => column.isVisible).length;\n\n return {\n headers,\n headerGroupProps,\n totalVisible,\n };\n}\n", "import type { PropsWithChildren } from 'react';\nimport type {\n ColumnInstance,\n HeaderGroup as HeaderGroupType,\n} from 'react-table';\nimport HeaderColumn from '../HeaderColumn';\nimport { CLASS_NAMES } from './constants';\nimport useHeaderGroupProps from './useHeaderGroupProps';\n\nexport interface HeaderGroupProps<T extends Object> {\n headerGroup: HeaderGroupType<T>;\n columns: ColumnInstance<T>[];\n isLoading?: boolean;\n}\n\nfunction HeaderGroup<T extends Object>({\n headerGroup,\n columns,\n isLoading,\n}: PropsWithChildren<HeaderGroupProps<T>>) {\n const { headerGroupProps, headers } = useHeaderGroupProps(\n headerGroup,\n columns,\n );\n\n return (\n <div {...headerGroupProps} className={CLASS_NAMES.base}>\n {headers.map((column, index) => (\n <HeaderColumn\n index={index}\n label={column.render('Header')}\n isLoading={isLoading}\n {...column.getHeaderProps(column.getSortByToggleProps())}\n />\n ))}\n </div>\n );\n}\n\nexport default HeaderGroup;\n", "import type { FunctionComponent, ReactNode } from 'react';\nimport type { TableCellProps } from 'react-table';\nimport { SkeletonLoader, Text } from '@kanda-libs/ks-design-library';\nimport useCellClassNames from './useCellClassNames';\nimport useMobileFullWidthCellStyle from '~/hooks/useMobileFullWidthCellStyle';\n\nexport interface CellProps extends TableCellProps {\n index: number;\n render: () => ReactNode;\n compact?: boolean;\n isLoading?: boolean;\n label?: string;\n}\n\nconst Cell: FunctionComponent<CellProps> = function ({\n render,\n index,\n compact = false,\n isLoading = false,\n label,\n ...props\n}) {\n const classNames = useCellClassNames(index, compact, isLoading);\n\n const { style: unformattedStyle, ...formattedProps } = props;\n const style = useMobileFullWidthCellStyle(unformattedStyle);\n\n return (\n <div {...formattedProps} style={style} className={classNames.cell}>\n <div className={classNames.container}>\n <div className={classNames.render}>\n <SkeletonLoader\n isLoading={isLoading}\n afterLoading={\n <>\n <Text text={`${label}:`} className={classNames.mobileLabel} />\n {render()}\n </>\n }\n />\n </div>\n </div>\n </div>\n );\n};\n\nexport default Cell;\n", "import clsx from 'clsx';\nimport { CLASS_NAMES } from './constants';\n\nexport type CellClassNamesHook = {\n cell: string;\n container: string;\n render: string;\n mobileLabel: string;\n};\n\nexport default function useCellClassNames(\n index: number,\n compact: boolean,\n isLoading: boolean,\n): CellClassNamesHook {\n return {\n cell: clsx(\n compact ? CLASS_NAMES.cell.compact : CLASS_NAMES.cell.base,\n index === 0 ? '' : CLASS_NAMES.cell.padding,\n ),\n container: CLASS_NAMES.container,\n render: isLoading ? CLASS_NAMES.renderLoading : CLASS_NAMES.render,\n mobileLabel: CLASS_NAMES.mobileLabel,\n };\n}\n", "export const CLASS_NAMES = {\n container: 'flex w-full h-full',\n render:\n 'w-full my-auto text-style-g text-neutral-600 whitespace-nowrap overflow-hidden overflow-ellipsis',\n renderLoading: 'w-full my-auto mr-8 text-style-g',\n mobileLabel: 'block md:hidden text-16-24-em text-neutral-600 mr-2',\n cell: {\n base: 'px-4 py-1 md:pt-0 md:pr-0 md:pb-0 md:h-16 flex',\n compact: 'h-8 flex',\n padding: 'md:pl-4',\n },\n};\n", "import { useIsDesktop } from '@kanda-libs/ks-design-library';\nimport type { CSSProperties } from 'react';\n\nexport type MobileFullWidthCellStyleHook = CSSProperties;\n\nexport default function useMobileFullWidthCellStyle(\n style?: CSSProperties,\n): MobileFullWidthCellStyleHook {\n if (!style) return {};\n\n const isDesktop = useIsDesktop();\n\n // For mobile, we want to make sure that the cell is always 100% width\n const formattedStyle = {\n ...style,\n width: isDesktop ? style?.width : '100%',\n };\n\n return formattedStyle;\n}\n", "import { useClasses } from '@kanda-libs/ks-design-library';\nimport { CLASS_NAMES } from './constants';\n\nexport interface RowClassNamesHook {\n base: string;\n compact: string;\n border: string;\n hover: string;\n button: string;\n}\n\nexport default function useRowClassNames(\n index: number,\n canSelect: boolean,\n): RowClassNamesHook {\n const classNames = useClasses(CLASS_NAMES, {\n base: ['.base', index === 9 ? '' : '.border', canSelect ? '.hover' : ''],\n button: ['.button'],\n });\n\n return classNames as RowClassNamesHook;\n}\n", "export const CLASS_NAMES = {\n base: 'relative md:h-16 flex-col py-2 md:py-0 md:flex-row',\n compact: 'relative h-8',\n border: 'border-b border-neutral-200',\n hover: 'group hover:bg-neutral-50 cursor-pointer',\n button: 'hidden group-hover:block',\n};\n", "import type { PropsWithChildren } from 'react';\nimport type { Row as RowType, TableRowProps } from 'react-table';\nimport Cell from '../Cell';\nimport useRowClassNames from './useRowClassNames';\n\nexport interface RowProps<T extends Object> extends TableRowProps {\n cells: RowType<T>['cells'];\n index: number;\n compact?: boolean;\n isLoading?: boolean;\n onRowClick?: (row: T) => void;\n}\n\nfunction Row<T extends Object>({\n cells,\n index,\n compact = false,\n isLoading = false,\n onRowClick,\n ...props\n}: PropsWithChildren<RowProps<T>>) {\n const classNames = useRowClassNames(index, !!onRowClick);\n\n return (\n <div\n {...props}\n className={compact ? classNames.compact : classNames.base}\n onClick={() => {\n onRowClick && onRowClick(cells[0].row.original as T);\n }}\n >\n {cells.map((cell, cellIndex) => (\n <Cell\n {...cell.getCellProps()}\n index={cellIndex}\n isLoading={isLoading}\n render={() => cell.render('Cell')}\n label={cell.column.Header as string}\n />\n ))}\n </div>\n );\n}\n\nexport default Row;\n", "import type { StringIndexedObject } from '@kanda-libs/ks-design-library';\nimport type { PropsWithChildren } from 'react';\nimport type { Row as RowType } from 'react-table';\nimport Row from '../Row';\n\nexport interface PagesProps<T extends StringIndexedObject> {\n page: RowType<T>[];\n prepareRow: (row: RowType<T>) => void;\n isLoading?: boolean;\n compact?: boolean;\n onRowClick?: (row: T) => void;\n}\n\nfunction Pages<T extends StringIndexedObject>({\n page,\n prepareRow,\n isLoading = false,\n compact = false,\n onRowClick,\n}: PropsWithChildren<PagesProps<T>>) {\n return (\n <>\n {page.map((row, index) => {\n prepareRow(row);\n return (\n <Row\n {...row.getRowProps()}\n index={index}\n cells={row.cells}\n isLoading={isLoading}\n compact={compact}\n onRowClick={onRowClick}\n />\n );\n })}\n </>\n );\n}\nexport default Pages;\n", "import type { TableInstance, Row } from '../../@types/index';\nimport {\n useTable,\n useGlobalFilter,\n usePagination,\n useSortBy,\n useFlexLayout,\n type IdType,\n TableOptions,\n} from 'react-table';\nimport type { TableProps } from '.';\nimport { globalFilter } from './helpers/search';\nimport type {\n PaginationProps,\n StringIndexedObject,\n} from '@kanda-libs/ks-design-library';\nimport { useEffect } from 'react';\n\nexport interface TablePropsHook<T extends StringIndexedObject<unknown>>\n extends TableInstance<T> {\n paginationProps: PaginationProps;\n}\n\nexport default function useTableProps<T extends StringIndexedObject<unknown>>({\n columns,\n data,\n pageSize = 10,\n query = '',\n}: TableProps<T>): TablePropsHook<T> {\n const table = useTable<T>(\n {\n columns,\n data,\n initialState: {\n pageSize: 10,\n pageIndex: 0,\n },\n autoResetGlobalFilter: false,\n globalFilter: (\n rows: Row<T>[],\n searchKeys: IdType<T>[],\n filterValue: string,\n ) => globalFilter(rows, searchKeys, filterValue, pageSize),\n } as unknown as TableOptions<T>,\n useGlobalFilter,\n useSortBy,\n usePagination,\n useFlexLayout,\n );\n\n const {\n gotoPage,\n pageCount,\n state: { pageIndex },\n } = table;\n\n const paginationProps: PaginationProps = {\n pageCount,\n pageIndex,\n setPage: (nextPage: number) => {\n gotoPage(nextPage);\n },\n };\n\n useEffect(() => {\n table.setGlobalFilter(query);\n }, [query]);\n\n return {\n paginationProps,\n ...table,\n };\n}\n", "import type { IdType } from 'react-table';\nimport type { Row } from '../../../@types/index';\nimport Fuse from 'fuse.js';\nimport type { StringIndexedObject } from '~/types';\n\nconst exactMatchSearch = <T extends StringIndexedObject<unknown>>(\n rows: Row<T>[],\n filterValue: string,\n) => {\n return rows.filter((row) => {\n // Take all values from the row, and add them together in a string\n // for the purposes of searching\n const rowValues = Object.values(row.values).join(', ');\n\n return rowValues.toLowerCase().includes(filterValue.toLowerCase());\n });\n};\n\nconst excludeExactMatches = <T extends StringIndexedObject<unknown>>(\n rows: Row<T>[],\n exactMatchRows: Row<T>[],\n) =>\n rows.filter(\n ({ id }) => exactMatchRows.filter((p) => p.id === id).length === 0,\n );\n\nconst fuzzySearch = <T extends StringIndexedObject<unknown>>(\n rows: Row<T>[],\n filterValue: string,\n searchKeys: string[],\n numberOfRows: number,\n exactMatchRows: Row<T>[],\n): Row<T>[] => {\n const currentRows = rows.map((row) => {\n return row.values;\n });\n\n const fuse = new Fuse(currentRows, {\n keys: searchKeys.map((key) => ({\n name: key,\n // Because FuseJS allows for dot notation,\n // we need to use a function to get the value\n // as the object returned from the table is flat,\n // rather than nested\n getFn: (obj: StringIndexedObject) => obj[key],\n })),\n });\n\n const results = fuse\n .search(filterValue)\n .map(({ item }) => item)\n .slice(0, numberOfRows);\n\n const filteredResults = results\n .map((result) => rows.find((row) => row.values.cid === result.cid))\n .filter(Boolean) as Row<T>[];\n\n return excludeExactMatches(filteredResults, exactMatchRows);\n};\n\nexport const globalFilter = <T extends StringIndexedObject<unknown>>(\n rows: Row<T>[],\n searchKeys: IdType<T>[],\n filterValue: string,\n pageSize = 10,\n): Row<T>[] => {\n if (filterValue.length < 1) {\n return rows;\n }\n\n // Get the first 10 exact matches. The reason for this is that exact matching\n // should take presedence over fuzzy matching. An exact match is more useful\n // but also less expensive to compute. So there's no need to do a fuzzy search\n // if there are >= 10 exact matches.\n const exactMatches = exactMatchSearch(rows, filterValue).slice(0, pageSize);\n const currentRowsExcludingExactMatches = excludeExactMatches(\n rows,\n exactMatches,\n );\n\n const fuzzyMatches = fuzzySearch(\n currentRowsExcludingExactMatches,\n filterValue,\n searchKeys,\n pageSize - exactMatches.length,\n exactMatches,\n );\n\n const results = [...exactMatches, ...fuzzyMatches];\n\n // Return the rows in the same order as the original rows\n // to preserve sorting, which happens before fuzzy matching\n return rows\n .map(({ id }) => results.find((row) => row.id === id))\n .filter(Boolean) as Row<T>[];\n};\n", "import { Icon, Logo } from '@kanda-libs/ks-design-library';\n\ntype Widths = 80 | 96 | 120 | 160;\n\ninterface SplashScreenProps {\n logo?: boolean;\n icon: string;\n iconClassName?: string;\n iconSize?: number;\n title: string;\n subText: string | JSX.Element;\n boldSubText?: string;\n cta?: JSX.Element;\n append?: JSX.Element;\n width?: Widths;\n contentWidth?: Widths;\n content?: JSX.Element;\n}\n\nconst WIDTHS = {\n 80: 'max-w-80',\n 96: 'max-w-96',\n 120: 'max-w-120',\n 160: 'max-w160',\n};\n\nconst SplashScreen = ({\n logo,\n icon,\n iconClassName,\n iconSize,\n title,\n subText,\n boldSubText,\n cta,\n append,\n width = 80,\n contentWidth = 80,\n content,\n}: SplashScreenProps) => (\n <div\n className={`flex flex-col m-auto w-full ${WIDTHS[width]} text-center items-center justify-center`}\n >\n {logo && (\n <div className=\"mb-10\">\n <Logo height={32} />\n </div>\n )}\n {!logo && (\n <Icon\n icon={icon}\n size={iconSize}\n className={`mx-auto mb-8 ${iconClassName}`}\n />\n )}\n <h1 className=\"text-24-28-em mb-4\">{title}</h1>\n <div className={`flex flex-col w-full ${WIDTHS[contentWidth]} mx-auto`}>\n {content && <div className=\"mt-4 mb-8\">{content}</div>}\n <span className=\"text-16-24 text-neutral-600\">\n {subText}\n {boldSubText && <b> {boldSubText}</b>}\n </span>\n {cta && <div className=\"mt-10\">{cta}</div>}\n {append}\n </div>\n </div>\n);\n\nSplashScreen.defaultProps = {\n logo: false,\n iconClassName: '',\n iconSize: 104,\n cta: null,\n append: null,\n boldSubText: null,\n content: null,\n width: 96,\n contentWidth: 96,\n};\n\nexport default SplashScreen;\n", "import { FunctionComponent, useEffect } from 'react';\nimport { Document, Page, pdfjs } from 'react-pdf';\nimport usePdf from './usePdf';\n\n// This sucks, but so does react-pdf's typescript support\nconst DocumentTag = Document as unknown as FunctionComponent<any>;\n\nexport interface PdfProps {\n content?: string;\n}\n\nconst Pdf: FunctionComponent<PdfProps> = function ({ content }) {\n const { pdfProps, pages, showContent } = usePdf(content);\n\n useEffect(() => {\n pdfjs.GlobalWorkerOptions.workerSrc = `https://cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.js`;\n }, []);\n\n if (!showContent) {\n return <></>;\n }\n\n return (\n <DocumentTag {...pdfProps}>\n {pages &&\n pages.map((page) => (\n <>\n <Page {...page} />\n </>\n ))}\n </DocumentTag>\n );\n};\n\nexport default Pdf;\n", "import { useToast } from '@kanda-libs/ks-design-library';\nimport { useCallback, useMemo, useState } from 'react';\n\nexport interface PdfPage {\n key: string;\n pageNumber: number;\n className: string;\n}\n\nexport interface PdfOnLoadSuccessArgs {\n numPages: number;\n}\n\nexport interface PdfOnLoadErrorArgs {\n message: string;\n}\n\nexport interface PdfHook {\n pdfProps: {\n file: string;\n error: string;\n onLoadSuccess: (args: PdfOnLoadSuccessArgs) => void;\n onLoadError: (args: PdfOnLoadErrorArgs) => void;\n onSourceError: (args: PdfOnLoadErrorArgs) => void;\n } | null;\n pages: PdfPage[] | null;\n showContent: boolean;\n}\n\nexport default function usePdf(content?: string): PdfHook {\n const [pages, setPages] = useState<PdfPage[] | null>(null);\n\n const { showError } = useToast();\n\n const onLoadSuccess = useCallback(({ numPages }: PdfOnLoadSuccessArgs) => {\n setPages(\n [...Array(numPages).keys()].map((index) => ({\n key: `page_${index + 1}`,\n pageNumber: index + 1,\n className: index !== 0 ? 'mt-4' : '',\n })),\n );\n }, []);\n\n const onLoadError = useCallback(\n ({ message }: PdfOnLoadErrorArgs) =>\n showError(\n `Error loading document. Please contact Kanda. Error message: ${message}`,\n ),\n [showError],\n );\n\n const onSourceError = useCallback(\n ({ message }: PdfOnLoadErrorArgs) =>\n showError(\n `Error retrieving document source. Please contact Kanda. Error message: ${message}`,\n ),\n [showError],\n );\n\n const pdfProps = useMemo(() => {\n if (!content) return null;\n return {\n file: `data:application/pdf;base64,${content}`,\n error:\n 'Failed to load the PDF file. The file can still be downloaded by clicking the button below',\n onLoadSuccess,\n onLoadError,\n onSourceError,\n };\n }, [content, onLoadSuccess, onLoadError, onSourceError]);\n\n const showContent = !!(pdfProps && !!content);\n\n return {\n pdfProps,\n pages,\n showContent,\n };\n}\n", "export const CLASS_NAMES = {\n container: 'grid grid-cols-7 justify-start items-start gap-x-2',\n};\n", "import type { FunctionComponent } from 'react';\nimport { CLASS_NAMES } from './constants';\n\nexport interface PipelineProps {\n children: JSX.Element | JSX.Element[];\n}\n\nconst Pipeline: FunctionComponent<PipelineProps> = function ({ children }) {\n return <div className={CLASS_NAMES.container}>{children}</div>;\n};\n\nexport default Pipeline;\n", "import { Children, type FunctionComponent } from 'react';\nimport { Button } from '@kanda-libs/ks-design-library';\nimport { CLASS_NAMES } from './constants';\nimport usePipelineColumnPagination from './usePipelineColumnPagination';\n\nexport interface PipelineColumnProps {\n title: string;\n children: JSX.Element | JSX.Element[];\n perPage?: number;\n}\n\nconst PipelineColumn: FunctionComponent<PipelineColumnProps> = function ({\n title,\n children,\n perPage = 5,\n}) {\n const { items, showMore, canShowMore } = usePipelineColumnPagination(\n Children.toArray(children) as JSX.Element[],\n perPage,\n );\n\n return (\n <div>\n <div className={CLASS_NAMES.title}>{title}</div>\n <div className={CLASS_NAMES.items}>\n {items}\n {canShowMore && (\n <div className=\"mt-2\">\n <Button.Text\n id=\"pipeline-column-show-more\"\n variant=\"outline\"\n onClick={showMore}\n label=\"Show more\"\n className=\"w-full\"\n />\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport default PipelineColumn;\n", "export const CLASS_NAMES = {\n title: 'text-18-22-em text-neutral-900 py-2 text-center h-14',\n items: 'flex flex-col gap-y-2',\n};\n", "import { useCallback, useState } from 'react';\n\nexport interface PipelineColumnPaginationHook {\n items: JSX.Element[];\n showMore: () => void;\n canShowMore: boolean;\n}\n\nexport default function usePipelineColumnPagination(\n children: JSX.Element[],\n perPage: number,\n): PipelineColumnPaginationHook {\n const [page, setPage] = useState(0);\n\n const showMore = useCallback(() => {\n setPage((currentPage) => currentPage + 1);\n }, [setPage]);\n\n const items = children.slice(0, (page + 1) * perPage);\n\n return {\n items,\n showMore,\n canShowMore: children.length > items.length,\n };\n}\n", "import { Card, Text, TimeAgo } from '@kanda-libs/ks-design-library';\nimport type { FunctionComponent } from 'react';\n\nexport interface SimpleCompanyCardProps {\n name: string;\n signedUpDate: Date;\n reviewed?: boolean;\n isLoading?: boolean;\n}\n\nconst SimpleCompanyCard: FunctionComponent<SimpleCompanyCardProps> = function ({\n name,\n signedUpDate,\n reviewed = false,\n isLoading = false,\n}) {\n return (\n <Card className={reviewed ? 'bg-blue-100' : ''}>\n <div className=\"flex flex-col gap-y-2\">\n <Text text={name} className=\"text-16-20-em\" isLoading={isLoading} />\n {reviewed && <Text text=\"Reviewed\" className=\"text-12-18-em-up\" />}\n <TimeAgo timestamp={signedUpDate.getTime()} />\n </div>\n </Card>\n );\n};\n\nexport default SimpleCompanyCard;\n", "import { Text } from '@kanda-libs/ks-design-library';\nimport type { FunctionComponent } from 'react';\nimport { CLASS_NAMES } from './constants';\n\nconst NotFoundPage: FunctionComponent = function () {\n return (\n <div className={CLASS_NAMES.container}>\n <Text text=\"404\" className=\"mb-4 text-28-32-em text-neutral-900\" />\n <Text text=\"Page not found\" className=\"text-20-24 text-neutral-700\" />\n </div>\n );\n};\n\nexport default NotFoundPage;\n", "export const CLASS_NAMES = {\n container: 'w-screen h-screen flex flex-col justify-center items-center',\n};\n"],
5
- "mappings": "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",
6
- "names": ["jsx", "AlertBanner", "children", "AlertBanner_default", "Pagination", "SkeletonLoader", "Icon", "BUTTON_CLASS_NAMES", "ICON_PROPS", "WRAPPER_STYLE", "WRAPPER_CLASS_NAMES", "jsx", "jsxs", "Button", "label", "props", "BUTTON_CLASS_NAMES", "Icon", "ICON_PROPS", "Button_default", "clsx", "useWrapperProps", "index", "containerStyle", "WRAPPER_STYLE", "clsx", "WRAPPER_CLASS_NAMES", "jsx", "Wrapper", "index", "children", "classNames", "containerStyle", "useWrapperProps", "Wrapper_default", "HeaderButton_default", "Button_default", "Wrapper_default", "clsx", "CLASS_NAMES", "useHeaderColumnProps", "index", "popoverButtons", "CLASS_NAMES", "clsx", "jsx", "HeaderColumn", "index", "isLoading", "popoverButtons", "label", "props", "classNames", "useHeaderColumnProps", "SkeletonLoader", "HeaderButton_default", "HeaderColumn_default", "CLASS_NAMES", "useHeaderGroupProps", "headerGroup", "columns", "headers", "getHeaderGroupProps", "headerGroupProps", "totalVisible", "column", "jsx", "HeaderGroup", "headerGroup", "columns", "isLoading", "headerGroupProps", "headers", "useHeaderGroupProps", "CLASS_NAMES", "column", "index", "HeaderColumn_default", "HeaderGroup_default", "SkeletonLoader", "Text", "clsx", "CLASS_NAMES", "useCellClassNames", "index", "compact", "isLoading", "clsx", "CLASS_NAMES", "useIsDesktop", "useMobileFullWidthCellStyle", "style", "isDesktop", "Fragment", "jsx", "jsxs", "Cell", "render", "index", "compact", "isLoading", "label", "props", "classNames", "useCellClassNames", "unformattedStyle", "formattedProps", "style", "useMobileFullWidthCellStyle", "SkeletonLoader", "Text", "Cell_default", "useClasses", "CLASS_NAMES", "useRowClassNames", "index", "canSelect", "useClasses", "CLASS_NAMES", "jsx", "Row", "cells", "index", "compact", "isLoading", "onRowClick", "props", "classNames", "useRowClassNames", "cell", "cellIndex", "Cell_default", "Row_default", "Fragment", "jsx", "Pages", "page", "prepareRow", "isLoading", "compact", "onRowClick", "row", "index", "Row_default", "Pages_default", "useTable", "useGlobalFilter", "usePagination", "useSortBy", "useFlexLayout", "Fuse", "exactMatchSearch", "rows", "filterValue", "row", "excludeExactMatches", "exactMatchRows", "id", "p", "fuzzySearch", "searchKeys", "numberOfRows", "currentRows", "filteredResults", "key", "obj", "item", "result", "globalFilter", "pageSize", "exactMatches", "currentRowsExcludingExactMatches", "fuzzyMatches", "results", "useEffect", "useTableProps", "columns", "data", "pageSize", "query", "table", "useTable", "rows", "searchKeys", "filterValue", "globalFilter", "useGlobalFilter", "useSortBy", "usePagination", "useFlexLayout", "gotoPage", "pageCount", "pageIndex", "paginationProps", "nextPage", "Fragment", "jsx", "jsxs", "Table", "compact", "isLoading", "onRowClick", "props", "page", "prepareRow", "columns", "getTableProps", "headerGroups", "paginationProps", "useTableProps", "headerGroup", "HeaderGroup_default", "Pages_default", "Pagination", "Table_default", "Icon", "Logo", "jsx", "jsxs", "WIDTHS", "SplashScreen", "logo", "icon", "iconClassName", "iconSize", "title", "subText", "boldSubText", "cta", "append", "width", "contentWidth", "content", "SplashScreen_default", "useEffect", "Document", "Page", "pdfjs", "useToast", "useCallback", "useMemo", "useState", "usePdf", "content", "pages", "setPages", "showError", "onLoadSuccess", "numPages", "index", "onLoadError", "message", "onSourceError", "pdfProps", "Fragment", "jsx", "DocumentTag", "Document", "Pdf", "content", "pdfProps", "pages", "showContent", "usePdf", "useEffect", "pdfjs", "page", "Page", "Pdf_default", "CLASS_NAMES", "jsx", "Pipeline", "children", "CLASS_NAMES", "Pipeline_default", "Children", "Button", "CLASS_NAMES", "useCallback", "useState", "usePipelineColumnPagination", "children", "perPage", "page", "setPage", "showMore", "currentPage", "items", "jsx", "jsxs", "PipelineColumn", "title", "children", "perPage", "items", "showMore", "canShowMore", "usePipelineColumnPagination", "Children", "CLASS_NAMES", "Button", "PipelineColumn_default", "Card", "Text", "TimeAgo", "jsx", "jsxs", "SimpleCompanyCard", "name", "signedUpDate", "reviewed", "isLoading", "SimpleCompanyCard_default", "Text", "CLASS_NAMES", "jsx", "jsxs", "NotFoundPage", "CLASS_NAMES", "Text", "NotFoundPage_default"]
3
+ "sources": ["../src/components/AlertBanner/index.tsx", "../src/components/Table/index.tsx", "../src/components/Table/components/HeaderColumn/index.tsx", "../src/components/Table/components/HeaderButton/Button.tsx", "../src/components/Table/components/HeaderButton/constants.ts", "../src/components/Table/components/HeaderButton/useWrapperProps.ts", "../src/components/Table/components/HeaderButton/Wrapper.tsx", "../src/components/Table/components/HeaderButton/index.tsx", "../src/components/Table/components/HeaderColumn/useHeaderColumnProps.ts", "../src/components/Table/components/HeaderColumn/constants.ts", "../src/components/Table/components/HeaderGroup/constants.ts", "../src/components/Table/components/HeaderGroup/useHeaderGroupProps.ts", "../src/components/Table/components/HeaderGroup/index.tsx", "../src/components/Table/components/Cell/index.tsx", "../src/components/Table/components/Cell/useCellClassNames.ts", "../src/components/Table/components/Cell/constants.ts", "../src/hooks/useMobileFullWidthCellStyle.ts", "../src/components/Table/components/Row/useRowClassNames.ts", "../src/components/Table/components/Row/constants.ts", "../src/components/Table/components/Row/index.tsx", "../src/components/Table/components/Pages/index.tsx", "../src/components/Table/useTableProps.ts", "../src/components/Table/helpers/search.ts", "../src/components/SplashScreen/index.tsx", "../src/components/Pdf/index.tsx", "../src/components/Pdf/usePdf.ts", "../src/components/Pipeline/constants.ts", "../src/components/Pipeline/index.tsx", "../src/components/Pipeline/PipelineColumn/index.tsx", "../src/components/Pipeline/PipelineColumn/constants.ts", "../src/components/Pipeline/PipelineColumn/usePipelineColumnPagination.ts", "../src/components/SimpleCompanyCard/index.tsx", "../src/components/StageTimeline/Stage/index.tsx", "../src/components/StageTimeline/Stage/useStageProps.ts", "../src/components/StageTimeline/TimelineBorder.tsx", "../src/components/StageTimeline/index.tsx", "../src/components/NotFoundPage/index.tsx", "../src/components/NotFoundPage/constants.ts"],
4
+ "sourcesContent": ["import type { FunctionComponent } from 'react';\n\nexport interface AlertBannerProps {\n children: string | JSX.Element | JSX.Element[];\n}\n\nconst AlertBanner: FunctionComponent<AlertBannerProps> = function ({\n children,\n}) {\n return (\n <div className=\"p-4 border bg-lavender-100 border-lavender-200 rounded-xl text-lavender-200\">\n {children}\n </div>\n );\n};\n\nexport default AlertBanner;\n", "import type { FunctionComponent, PropsWithChildren } from 'react';\nimport {\n Pagination,\n type StringIndexedObject,\n} from '@kanda-libs/ks-design-library';\nimport type { Column } from 'react-table';\nimport HeaderGroup from './components/HeaderGroup';\nimport Pages from './components/Pages';\nimport useTableProps from './useTableProps';\n\nexport interface TableProps<T extends StringIndexedObject<unknown>> {\n columns: Readonly<Column<T>[]>;\n data: T[];\n filter?: string;\n pageSize?: number;\n compact?: boolean;\n isLoading?: boolean;\n onRowClick?: (row: T) => void;\n query?: string;\n}\n\nexport type TableFunctionComponent<\n T extends StringIndexedObject<unknown> = any,\n> = FunctionComponent<TableProps<T>>;\n\nfunction Table<T extends StringIndexedObject<unknown>>({\n compact = false,\n isLoading = false,\n onRowClick,\n ...props\n}: PropsWithChildren<TableProps<T>>) {\n const {\n page,\n prepareRow,\n columns,\n getTableProps,\n headerGroups,\n paginationProps,\n } = useTableProps(props);\n\n return (\n <>\n <div {...getTableProps()} className=\"w-full\">\n <div>\n {headerGroups.map((headerGroup) => (\n <HeaderGroup\n headerGroup={headerGroup}\n columns={columns}\n isLoading={isLoading}\n />\n ))}\n </div>\n <Pages\n page={page}\n prepareRow={prepareRow}\n isLoading={isLoading}\n compact={compact}\n onRowClick={onRowClick}\n />\n </div>\n {paginationProps.pageCount > 1 && (\n <div className=\"px-4 py-4\">\n <Pagination {...paginationProps} />\n </div>\n )}\n </>\n );\n}\n\nexport default Table;\n", "import { SkeletonLoader } from '@kanda-libs/ks-design-library';\nimport type { FunctionComponent, ReactNode } from 'react';\nimport type { TableHeaderProps } from 'react-table';\nimport HeaderButton from '../HeaderButton';\nimport useHeaderColumnProps from './useHeaderColumnProps';\n\nexport interface HeaderColumnProps extends TableHeaderProps {\n index: number;\n isLoading?: boolean;\n popoverButtons?: boolean;\n label: ReactNode;\n}\n\nconst HeaderColumn: FunctionComponent<HeaderColumnProps> = function ({\n index,\n isLoading = false,\n popoverButtons = false,\n label,\n ...props\n}) {\n const { classNames } = useHeaderColumnProps(index, popoverButtons);\n\n return (\n <div {...props} className={classNames.main}>\n <SkeletonLoader\n isLoading={isLoading}\n wrapperClassName={classNames.loading}\n afterLoading={\n <HeaderButton.Wrapper index={index}>\n <HeaderButton.Button label={label} />\n </HeaderButton.Wrapper>\n }\n />\n </div>\n );\n};\n\nexport default HeaderColumn;\n", "import type { FunctionComponent, HTMLAttributes, ReactNode } from 'react';\nimport { Icon } from '@kanda-libs/ks-design-library';\nimport { BUTTON_CLASS_NAMES, ICON_PROPS } from './constants';\n\nexport interface ButtonProps extends HTMLAttributes<HTMLButtonElement> {\n label: ReactNode;\n}\n\nconst Button: FunctionComponent<ButtonProps> = function ({ label, ...props }) {\n return (\n <button className={BUTTON_CLASS_NAMES} {...props}>\n {label}\n <Icon {...ICON_PROPS} />\n </button>\n );\n};\n\nexport default Button;\n", "export const BUTTON_CLASS_NAMES =\n 'flex px-3 py-1.75 h-9 -ml-3 my-auto rounded-lg bg-transparent hover:bg-neutral-100 text-style-g-em text-neutral-500 whitespace-nowrap z-20';\n\nexport const ICON_PROPS = {\n icon: 'chevron-down',\n stroke: 'neutral-500',\n size: 12,\n className: 'ml-2 my-auto',\n};\n\nexport const WRAPPER_STYLE = {\n width: 'calc(100% + 16px)',\n};\n\nexport const WRAPPER_CLASS_NAMES = {\n container: {\n base: 'w-full h-full overflow-hidden',\n padding: 'pl-4 -ml-4',\n },\n flex: {\n base: 'w-full h-full flex px-4 px-0',\n padding: 'pl-4',\n },\n};\n", "import type { CSSProperties } from 'react';\nimport clsx from 'clsx';\nimport { WRAPPER_STYLE, WRAPPER_CLASS_NAMES } from './constants';\n\nexport interface WrapperPropsHook {\n classNames: {\n container: string;\n flex: string;\n };\n containerStyle: CSSProperties;\n}\n\nexport default function useWrapperProps(index: number): WrapperPropsHook {\n const containerStyle = index === 0 ? WRAPPER_STYLE : {};\n\n const classNames = {\n container: clsx(\n WRAPPER_CLASS_NAMES.container.base,\n index === 0 ? WRAPPER_CLASS_NAMES.container.padding : '',\n ),\n flex: clsx(\n WRAPPER_CLASS_NAMES.flex.base,\n index === 0 ? '' : WRAPPER_CLASS_NAMES.flex.padding,\n ),\n };\n\n return {\n classNames,\n containerStyle,\n };\n}\n", "import type { FunctionComponent } from 'react';\nimport useWrapperProps from './useWrapperProps';\n\nexport interface WrapperProps {\n index: number;\n children?: JSX.Element | JSX.Element[];\n}\n\nconst Wrapper: FunctionComponent<WrapperProps> = function ({\n index,\n children,\n}) {\n const { classNames, containerStyle } = useWrapperProps(index);\n\n return (\n <div className={classNames.container} style={containerStyle}>\n <div className={classNames.flex}>{children}</div>\n </div>\n );\n};\n\nexport default Wrapper;\n", "import Button from './Button';\nimport Wrapper from './Wrapper';\n\nexport default {\n Button,\n Wrapper,\n};\n", "import clsx from 'clsx';\nimport { CLASS_NAMES } from './constants';\n\nexport interface HeaderColumnPropsHook {\n classNames: {\n main: string;\n loading: string;\n wrapper: string;\n };\n}\n\nexport default function useHeaderColumnProps(\n index: number,\n popoverButtons: boolean,\n): HeaderColumnPropsHook {\n const classNames = {\n ...CLASS_NAMES,\n loading: clsx(\n CLASS_NAMES.loading.base,\n index === 0 ? '' : CLASS_NAMES.loading.margin,\n ),\n wrapper: clsx(\n CLASS_NAMES.wrapper.padding,\n popoverButtons ? '' : CLASS_NAMES.wrapper.popover,\n ),\n };\n\n return {\n classNames,\n };\n}\n", "export const CLASS_NAMES = {\n main: 'flex h-14',\n loading: {\n base: 'my-auto md:w-full mr-8',\n margin: 'ml-4',\n },\n wrapper: {\n padding: 'px-2 pt-2',\n popover: 'pb-1',\n },\n};\n\nexport const MOVE_LEFT_ITEM_PROPS = {\n name: 'Move column left',\n icon: 'arrow-left',\n};\n\nexport const MOVE_RIGHT_ITEM_PROPS = {\n name: 'Move column right',\n icon: 'arrow-right',\n};\n\nexport const HIDE_COLUMN_PROPS = {\n name: 'Hide column',\n icon: 'eye-off',\n};\n", "export const CLASS_NAMES = {\n base: 'flex-row h-14 border-b border-neutral-200',\n};\n", "import type {\n ColumnInstance,\n HeaderGroup,\n TableHeaderProps,\n} from 'react-table';\n\nexport interface HeaderGroupPropsHook<T extends Object> {\n headers: ColumnInstance<T>[];\n headerGroupProps: TableHeaderProps;\n totalVisible: number;\n}\n\nexport default function useHeaderGroupProps<T extends Object>(\n headerGroup: HeaderGroup<T>,\n columns: ColumnInstance<T>[],\n): HeaderGroupPropsHook<T> {\n const { headers, getHeaderGroupProps } = headerGroup;\n const headerGroupProps = getHeaderGroupProps({});\n\n const totalVisible = columns.filter((column) => column.isVisible).length;\n\n return {\n headers,\n headerGroupProps,\n totalVisible,\n };\n}\n", "import type { PropsWithChildren } from 'react';\nimport type {\n ColumnInstance,\n HeaderGroup as HeaderGroupType,\n} from 'react-table';\nimport HeaderColumn from '../HeaderColumn';\nimport { CLASS_NAMES } from './constants';\nimport useHeaderGroupProps from './useHeaderGroupProps';\n\nexport interface HeaderGroupProps<T extends Object> {\n headerGroup: HeaderGroupType<T>;\n columns: ColumnInstance<T>[];\n isLoading?: boolean;\n}\n\nfunction HeaderGroup<T extends Object>({\n headerGroup,\n columns,\n isLoading,\n}: PropsWithChildren<HeaderGroupProps<T>>) {\n const { headerGroupProps, headers } = useHeaderGroupProps(\n headerGroup,\n columns,\n );\n\n return (\n <div {...headerGroupProps} className={CLASS_NAMES.base}>\n {headers.map((column, index) => (\n <HeaderColumn\n index={index}\n label={column.render('Header')}\n isLoading={isLoading}\n {...column.getHeaderProps(column.getSortByToggleProps())}\n />\n ))}\n </div>\n );\n}\n\nexport default HeaderGroup;\n", "import type { FunctionComponent, ReactNode } from 'react';\nimport type { TableCellProps } from 'react-table';\nimport { SkeletonLoader, Text } from '@kanda-libs/ks-design-library';\nimport useCellClassNames from './useCellClassNames';\nimport useMobileFullWidthCellStyle from '~/hooks/useMobileFullWidthCellStyle';\n\nexport interface CellProps extends TableCellProps {\n index: number;\n render: () => ReactNode;\n compact?: boolean;\n isLoading?: boolean;\n label?: string;\n}\n\nconst Cell: FunctionComponent<CellProps> = function ({\n render,\n index,\n compact = false,\n isLoading = false,\n label,\n ...props\n}) {\n const classNames = useCellClassNames(index, compact, isLoading);\n\n const { style: unformattedStyle, ...formattedProps } = props;\n const style = useMobileFullWidthCellStyle(unformattedStyle);\n\n return (\n <div {...formattedProps} style={style} className={classNames.cell}>\n <div className={classNames.container}>\n <div className={classNames.render}>\n <SkeletonLoader\n isLoading={isLoading}\n afterLoading={\n <>\n <Text text={`${label}:`} className={classNames.mobileLabel} />\n {render()}\n </>\n }\n />\n </div>\n </div>\n </div>\n );\n};\n\nexport default Cell;\n", "import clsx from 'clsx';\nimport { CLASS_NAMES } from './constants';\n\nexport type CellClassNamesHook = {\n cell: string;\n container: string;\n render: string;\n mobileLabel: string;\n};\n\nexport default function useCellClassNames(\n index: number,\n compact: boolean,\n isLoading: boolean,\n): CellClassNamesHook {\n return {\n cell: clsx(\n compact ? CLASS_NAMES.cell.compact : CLASS_NAMES.cell.base,\n index === 0 ? '' : CLASS_NAMES.cell.padding,\n ),\n container: CLASS_NAMES.container,\n render: isLoading ? CLASS_NAMES.renderLoading : CLASS_NAMES.render,\n mobileLabel: CLASS_NAMES.mobileLabel,\n };\n}\n", "export const CLASS_NAMES = {\n container: 'flex w-full h-full',\n render:\n 'w-full my-auto text-style-g text-neutral-600 whitespace-nowrap overflow-hidden overflow-ellipsis',\n renderLoading: 'w-full my-auto mr-8 text-style-g',\n mobileLabel: 'block md:hidden text-16-24-em text-neutral-600 mr-2',\n cell: {\n base: 'px-4 py-1 md:pt-0 md:pr-0 md:pb-0 md:h-16 flex',\n compact: 'h-8 flex',\n padding: 'md:pl-4',\n },\n};\n", "import { useIsDesktop } from '@kanda-libs/ks-design-library';\nimport type { CSSProperties } from 'react';\n\nexport type MobileFullWidthCellStyleHook = CSSProperties;\n\nexport default function useMobileFullWidthCellStyle(\n style?: CSSProperties,\n): MobileFullWidthCellStyleHook {\n if (!style) return {};\n\n const isDesktop = useIsDesktop();\n\n // For mobile, we want to make sure that the cell is always 100% width\n const formattedStyle = {\n ...style,\n width: isDesktop ? style?.width : '100%',\n };\n\n return formattedStyle;\n}\n", "import { useClasses } from '@kanda-libs/ks-design-library';\nimport { CLASS_NAMES } from './constants';\n\nexport interface RowClassNamesHook {\n base: string;\n compact: string;\n border: string;\n hover: string;\n button: string;\n}\n\nexport default function useRowClassNames(\n index: number,\n canSelect: boolean,\n): RowClassNamesHook {\n const classNames = useClasses(CLASS_NAMES, {\n base: ['.base', index === 9 ? '' : '.border', canSelect ? '.hover' : ''],\n button: ['.button'],\n });\n\n return classNames as RowClassNamesHook;\n}\n", "export const CLASS_NAMES = {\n base: 'relative md:h-16 flex-col py-2 md:py-0 md:flex-row',\n compact: 'relative h-8',\n border: 'border-b border-neutral-200',\n hover: 'group hover:bg-neutral-50 cursor-pointer',\n button: 'hidden group-hover:block',\n};\n", "import type { PropsWithChildren } from 'react';\nimport type { Row as RowType, TableRowProps } from 'react-table';\nimport Cell from '../Cell';\nimport useRowClassNames from './useRowClassNames';\n\nexport interface RowProps<T extends Object> extends TableRowProps {\n cells: RowType<T>['cells'];\n index: number;\n compact?: boolean;\n isLoading?: boolean;\n onRowClick?: (row: T) => void;\n}\n\nfunction Row<T extends Object>({\n cells,\n index,\n compact = false,\n isLoading = false,\n onRowClick,\n ...props\n}: PropsWithChildren<RowProps<T>>) {\n const classNames = useRowClassNames(index, !!onRowClick);\n\n return (\n <div\n {...props}\n className={compact ? classNames.compact : classNames.base}\n onClick={() => {\n onRowClick && onRowClick(cells[0].row.original as T);\n }}\n >\n {cells.map((cell, cellIndex) => (\n <Cell\n {...cell.getCellProps()}\n index={cellIndex}\n isLoading={isLoading}\n render={() => cell.render('Cell')}\n label={cell.column.Header as string}\n />\n ))}\n </div>\n );\n}\n\nexport default Row;\n", "import type { StringIndexedObject } from '@kanda-libs/ks-design-library';\nimport type { PropsWithChildren } from 'react';\nimport type { Row as RowType } from 'react-table';\nimport Row from '../Row';\n\nexport interface PagesProps<T extends StringIndexedObject> {\n page: RowType<T>[];\n prepareRow: (row: RowType<T>) => void;\n isLoading?: boolean;\n compact?: boolean;\n onRowClick?: (row: T) => void;\n}\n\nfunction Pages<T extends StringIndexedObject>({\n page,\n prepareRow,\n isLoading = false,\n compact = false,\n onRowClick,\n}: PropsWithChildren<PagesProps<T>>) {\n return (\n <>\n {page.map((row, index) => {\n prepareRow(row);\n return (\n <Row\n {...row.getRowProps()}\n index={index}\n cells={row.cells}\n isLoading={isLoading}\n compact={compact}\n onRowClick={onRowClick}\n />\n );\n })}\n </>\n );\n}\nexport default Pages;\n", "import type { TableInstance, Row } from '../../@types/index';\nimport {\n useTable,\n useGlobalFilter,\n usePagination,\n useSortBy,\n useFlexLayout,\n type IdType,\n TableOptions,\n} from 'react-table';\nimport type { TableProps } from '.';\nimport { globalFilter } from './helpers/search';\nimport type {\n PaginationProps,\n StringIndexedObject,\n} from '@kanda-libs/ks-design-library';\nimport { useEffect } from 'react';\n\nexport interface TablePropsHook<T extends StringIndexedObject<unknown>>\n extends TableInstance<T> {\n paginationProps: PaginationProps;\n}\n\nexport default function useTableProps<T extends StringIndexedObject<unknown>>({\n columns,\n data,\n pageSize = 10,\n query = '',\n}: TableProps<T>): TablePropsHook<T> {\n const table = useTable<T>(\n {\n columns,\n data,\n initialState: {\n pageSize: 10,\n pageIndex: 0,\n },\n autoResetGlobalFilter: false,\n globalFilter: (\n rows: Row<T>[],\n searchKeys: IdType<T>[],\n filterValue: string,\n ) => globalFilter(rows, searchKeys, filterValue, pageSize),\n } as unknown as TableOptions<T>,\n useGlobalFilter,\n useSortBy,\n usePagination,\n useFlexLayout,\n );\n\n const {\n gotoPage,\n pageCount,\n state: { pageIndex },\n } = table;\n\n const paginationProps: PaginationProps = {\n pageCount,\n pageIndex,\n setPage: (nextPage: number) => {\n gotoPage(nextPage);\n },\n };\n\n useEffect(() => {\n table.setGlobalFilter(query);\n }, [query]);\n\n return {\n paginationProps,\n ...table,\n };\n}\n", "import type { IdType } from 'react-table';\nimport type { Row } from '../../../@types/index';\nimport Fuse from 'fuse.js';\nimport type { StringIndexedObject } from '~/types';\n\nconst exactMatchSearch = <T extends StringIndexedObject<unknown>>(\n rows: Row<T>[],\n filterValue: string,\n) => {\n return rows.filter((row) => {\n // Take all values from the row, and add them together in a string\n // for the purposes of searching\n const rowValues = Object.values(row.values).join(', ');\n\n return rowValues.toLowerCase().includes(filterValue.toLowerCase());\n });\n};\n\nconst excludeExactMatches = <T extends StringIndexedObject<unknown>>(\n rows: Row<T>[],\n exactMatchRows: Row<T>[],\n) =>\n rows.filter(\n ({ id }) => exactMatchRows.filter((p) => p.id === id).length === 0,\n );\n\nconst fuzzySearch = <T extends StringIndexedObject<unknown>>(\n rows: Row<T>[],\n filterValue: string,\n searchKeys: string[],\n numberOfRows: number,\n exactMatchRows: Row<T>[],\n): Row<T>[] => {\n const currentRows = rows.map((row) => {\n return row.values;\n });\n\n const fuse = new Fuse(currentRows, {\n keys: searchKeys.map((key) => ({\n name: key,\n // Because FuseJS allows for dot notation,\n // we need to use a function to get the value\n // as the object returned from the table is flat,\n // rather than nested\n getFn: (obj: StringIndexedObject) => obj[key],\n })),\n });\n\n const results = fuse\n .search(filterValue)\n .map(({ item }) => item)\n .slice(0, numberOfRows);\n\n const filteredResults = results\n .map((result) => rows.find((row) => row.values.cid === result.cid))\n .filter(Boolean) as Row<T>[];\n\n return excludeExactMatches(filteredResults, exactMatchRows);\n};\n\nexport const globalFilter = <T extends StringIndexedObject<unknown>>(\n rows: Row<T>[],\n searchKeys: IdType<T>[],\n filterValue: string,\n pageSize = 10,\n): Row<T>[] => {\n if (filterValue.length < 1) {\n return rows;\n }\n\n // Get the first 10 exact matches. The reason for this is that exact matching\n // should take presedence over fuzzy matching. An exact match is more useful\n // but also less expensive to compute. So there's no need to do a fuzzy search\n // if there are >= 10 exact matches.\n const exactMatches = exactMatchSearch(rows, filterValue).slice(0, pageSize);\n const currentRowsExcludingExactMatches = excludeExactMatches(\n rows,\n exactMatches,\n );\n\n const fuzzyMatches = fuzzySearch(\n currentRowsExcludingExactMatches,\n filterValue,\n searchKeys,\n pageSize - exactMatches.length,\n exactMatches,\n );\n\n const results = [...exactMatches, ...fuzzyMatches];\n\n // Return the rows in the same order as the original rows\n // to preserve sorting, which happens before fuzzy matching\n return rows\n .map(({ id }) => results.find((row) => row.id === id))\n .filter(Boolean) as Row<T>[];\n};\n", "import { Icon, Logo } from '@kanda-libs/ks-design-library';\n\ntype Widths = 80 | 96 | 120 | 160;\n\ninterface SplashScreenProps {\n logo?: boolean;\n icon: string;\n iconClassName?: string;\n iconSize?: number;\n title: string;\n subText: string | JSX.Element;\n boldSubText?: string;\n cta?: JSX.Element;\n append?: JSX.Element;\n width?: Widths;\n contentWidth?: Widths;\n content?: JSX.Element;\n}\n\nconst WIDTHS = {\n 80: 'max-w-80',\n 96: 'max-w-96',\n 120: 'max-w-120',\n 160: 'max-w160',\n};\n\nconst SplashScreen = ({\n logo,\n icon,\n iconClassName,\n iconSize,\n title,\n subText,\n boldSubText,\n cta,\n append,\n width = 80,\n contentWidth = 80,\n content,\n}: SplashScreenProps) => (\n <div\n className={`flex flex-col m-auto w-full ${WIDTHS[width]} text-center items-center justify-center`}\n >\n {logo && (\n <div className=\"mb-10\">\n <Logo height={32} />\n </div>\n )}\n {!logo && (\n <Icon\n icon={icon}\n size={iconSize}\n className={`mx-auto mb-8 ${iconClassName}`}\n />\n )}\n <h1 className=\"text-24-28-em mb-4\">{title}</h1>\n <div className={`flex flex-col w-full ${WIDTHS[contentWidth]} mx-auto`}>\n {content && <div className=\"mt-4 mb-8\">{content}</div>}\n <span className=\"text-16-24 text-neutral-600\">\n {subText}\n {boldSubText && <b> {boldSubText}</b>}\n </span>\n {cta && <div className=\"mt-10\">{cta}</div>}\n {append}\n </div>\n </div>\n);\n\nSplashScreen.defaultProps = {\n logo: false,\n iconClassName: '',\n iconSize: 104,\n cta: null,\n append: null,\n boldSubText: null,\n content: null,\n width: 96,\n contentWidth: 96,\n};\n\nexport default SplashScreen;\n", "import { FunctionComponent, useEffect } from 'react';\nimport { Document, Page, pdfjs } from 'react-pdf';\nimport usePdf from './usePdf';\n\n// This sucks, but so does react-pdf's typescript support\nconst DocumentTag = Document as unknown as FunctionComponent<any>;\n\nexport interface PdfProps {\n content?: string;\n}\n\nconst Pdf: FunctionComponent<PdfProps> = function ({ content }) {\n const { pdfProps, pages, showContent } = usePdf(content);\n\n useEffect(() => {\n pdfjs.GlobalWorkerOptions.workerSrc = `https://cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.js`;\n }, []);\n\n if (!showContent) {\n return <></>;\n }\n\n return (\n <DocumentTag {...pdfProps}>\n {pages &&\n pages.map((page) => (\n <>\n <Page {...page} />\n </>\n ))}\n </DocumentTag>\n );\n};\n\nexport default Pdf;\n", "import { useToast } from '@kanda-libs/ks-design-library';\nimport { useCallback, useMemo, useState } from 'react';\n\nexport interface PdfPage {\n key: string;\n pageNumber: number;\n className: string;\n}\n\nexport interface PdfOnLoadSuccessArgs {\n numPages: number;\n}\n\nexport interface PdfOnLoadErrorArgs {\n message: string;\n}\n\nexport interface PdfHook {\n pdfProps: {\n file: string;\n error: string;\n onLoadSuccess: (args: PdfOnLoadSuccessArgs) => void;\n onLoadError: (args: PdfOnLoadErrorArgs) => void;\n onSourceError: (args: PdfOnLoadErrorArgs) => void;\n } | null;\n pages: PdfPage[] | null;\n showContent: boolean;\n}\n\nexport default function usePdf(content?: string): PdfHook {\n const [pages, setPages] = useState<PdfPage[] | null>(null);\n\n const { showError } = useToast();\n\n const onLoadSuccess = useCallback(({ numPages }: PdfOnLoadSuccessArgs) => {\n setPages(\n [...Array(numPages).keys()].map((index) => ({\n key: `page_${index + 1}`,\n pageNumber: index + 1,\n className: index !== 0 ? 'mt-4' : '',\n })),\n );\n }, []);\n\n const onLoadError = useCallback(\n ({ message }: PdfOnLoadErrorArgs) =>\n showError(\n `Error loading document. Please contact Kanda. Error message: ${message}`,\n ),\n [showError],\n );\n\n const onSourceError = useCallback(\n ({ message }: PdfOnLoadErrorArgs) =>\n showError(\n `Error retrieving document source. Please contact Kanda. Error message: ${message}`,\n ),\n [showError],\n );\n\n const pdfProps = useMemo(() => {\n if (!content) return null;\n return {\n file: `data:application/pdf;base64,${content}`,\n error:\n 'Failed to load the PDF file. The file can still be downloaded by clicking the button below',\n onLoadSuccess,\n onLoadError,\n onSourceError,\n };\n }, [content, onLoadSuccess, onLoadError, onSourceError]);\n\n const showContent = !!(pdfProps && !!content);\n\n return {\n pdfProps,\n pages,\n showContent,\n };\n}\n", "export const CLASS_NAMES = {\n container: 'grid grid-cols-7 justify-start items-start gap-x-2',\n};\n", "import type { FunctionComponent } from 'react';\nimport { CLASS_NAMES } from './constants';\n\nexport interface PipelineProps {\n children: JSX.Element | JSX.Element[];\n}\n\nconst Pipeline: FunctionComponent<PipelineProps> = function ({ children }) {\n return <div className={CLASS_NAMES.container}>{children}</div>;\n};\n\nexport default Pipeline;\n", "import { Children, type FunctionComponent } from 'react';\nimport { Button } from '@kanda-libs/ks-design-library';\nimport { CLASS_NAMES } from './constants';\nimport usePipelineColumnPagination from './usePipelineColumnPagination';\n\nexport interface PipelineColumnProps {\n title: string;\n children: JSX.Element | JSX.Element[];\n perPage?: number;\n}\n\nconst PipelineColumn: FunctionComponent<PipelineColumnProps> = function ({\n title,\n children,\n perPage = 5,\n}) {\n const { items, showMore, canShowMore } = usePipelineColumnPagination(\n Children.toArray(children) as JSX.Element[],\n perPage,\n );\n\n return (\n <div>\n <div className={CLASS_NAMES.title}>{title}</div>\n <div className={CLASS_NAMES.items}>\n {items}\n {canShowMore && (\n <div className=\"mt-2\">\n <Button.Text\n id=\"pipeline-column-show-more\"\n variant=\"outline\"\n onClick={showMore}\n label=\"More\"\n className=\"w-full\"\n />\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport default PipelineColumn;\n", "export const CLASS_NAMES = {\n title: 'text-18-22-em text-neutral-900 py-2 text-center h-14',\n items: 'flex flex-col gap-y-2',\n};\n", "import { useCallback, useState } from 'react';\n\nexport interface PipelineColumnPaginationHook {\n items: JSX.Element[];\n showMore: () => void;\n canShowMore: boolean;\n}\n\nexport default function usePipelineColumnPagination(\n children: JSX.Element[],\n perPage: number,\n): PipelineColumnPaginationHook {\n const [page, setPage] = useState(0);\n\n const showMore = useCallback(() => {\n setPage((currentPage) => currentPage + 1);\n }, [setPage]);\n\n const items = children.slice(0, (page + 1) * perPage);\n\n return {\n items,\n showMore,\n canShowMore: children.length > items.length,\n };\n}\n", "import { Card, Text, TimeAgo } from '@kanda-libs/ks-design-library';\nimport type { FunctionComponent } from 'react';\n\nexport interface SimpleCompanyCardProps {\n name: string;\n signedUpDate: Date;\n reviewed?: boolean;\n isLoading?: boolean;\n}\n\nconst SimpleCompanyCard: FunctionComponent<SimpleCompanyCardProps> = function ({\n name,\n signedUpDate,\n reviewed = false,\n isLoading = false,\n}) {\n return (\n <Card className={reviewed ? 'bg-blue-100' : ''}>\n <div className=\"flex flex-col gap-y-2\">\n <Text text={name} className=\"text-16-20-em\" isLoading={isLoading} />\n {reviewed && <Text text=\"Reviewed\" className=\"text-12-18-em-up\" />}\n <TimeAgo timestamp={signedUpDate.getTime()} />\n </div>\n </Card>\n );\n};\n\nexport default SimpleCompanyCard;\n", "import { Icon, Text } from '@kanda-libs/ks-design-library';\nimport type { FunctionComponent } from 'react';\nimport useStageProps from './useStageProps';\n\nexport interface StageProps {\n index: number;\n active?: boolean;\n current?: boolean;\n last?: boolean;\n label: string | JSX.Element;\n}\n\nconst Stage: FunctionComponent<StageProps> = function ({\n index,\n active = false,\n current = false,\n last = false,\n label,\n}) {\n const { iconClasses, leftBorderClasses, rightBorderClasses } = useStageProps(\n active,\n current,\n index,\n last,\n );\n\n return (\n <div className=\"relative flex flex-col items-center w-full md:w-auto md:min-w-48\">\n {current && <Icon icon=\"chevron-down\" height={20} />}\n {!current && <div className=\"h-5\" />}\n <div className={iconClasses}>\n <div>\n {!active && index + 1}\n {active && <Icon icon=\"check\" width={12} />}\n </div>\n </div>\n <div className={leftBorderClasses} />\n <div className={rightBorderClasses} />\n <Text text={label} className=\"text-sm text-center text-neutral-700\" />\n </div>\n );\n};\n\nexport default Stage;\n", "import clsx from 'clsx';\nimport type { StageProps } from '.';\n\nexport interface StagePropsHook {\n iconClasses: string;\n leftBorderClasses: string;\n rightBorderClasses: string;\n}\n\nexport default function useStageProps(\n active: StageProps['active'],\n current: StageProps['current'],\n index: StageProps['index'],\n last: StageProps['last'],\n): StagePropsHook {\n const currentlyActive = active || current;\n const iconClasses = clsx(\n 'w-7 h-7 rounded-2xl mb-2 relative z-10',\n 'text-center text-18-22-em flex items-center justify-center border border-solid border-2',\n !currentlyActive && 'border-neutral-600 text-neutral-600 bg-neutral-000',\n currentlyActive && 'bg-green-500 text-neutral-000 border-transparent',\n );\n\n const borderClasses = clsx(\n 'absolute h-1 top-[31px] z-0',\n !currentlyActive && 'bg-neutral-200',\n currentlyActive && 'bg-green-500',\n );\n\n const leftBorderClasses = clsx(\n borderClasses,\n 'w-1/2 left-0',\n index !== 0 && 'hidden md:block',\n index === 0 && 'hidden',\n );\n const rightBorderClasses = clsx(\n borderClasses,\n 'w-1/2 right-0 hidden md:block',\n current && 'bg-neutral-200',\n !last && 'hidden md:block',\n last && 'hidden',\n );\n\n return {\n iconClasses,\n leftBorderClasses,\n rightBorderClasses,\n };\n}\n", "import clsx from 'clsx';\nimport type { FunctionComponent } from 'react';\n\nexport interface TimelineBorderProps {\n active?: boolean;\n}\n\nconst TimelineBorder: FunctionComponent<TimelineBorderProps> = function ({\n active = false,\n}) {\n return (\n <div\n className={clsx(\n 'flex-grow w-full h-1 -mt-[32px] hidden md:block',\n !active && 'bg-neutral-200',\n active && 'bg-green-500',\n )}\n />\n );\n};\n\nexport default TimelineBorder;\n", "import type { FunctionComponent } from 'react';\nimport Stage from './Stage';\nimport TimelineBorder from './TimelineBorder';\n\nexport interface StageTimelineProps {\n stages: (string | JSX.Element)[];\n activeKey: number;\n}\n\nconst StageTimeline: FunctionComponent<StageTimelineProps> = function ({\n stages,\n activeKey,\n}) {\n return (\n <div className=\"flex flex-col items-center justify-between h-full md:flex-row\">\n {stages.map((stage, key) => (\n <>\n <Stage\n key={`stage-${key}`}\n index={key}\n active={key < activeKey}\n current={key === activeKey}\n last={key === stages.length - 1}\n label={stage}\n />\n {key !== stages.length - 1 && (\n <TimelineBorder active={key < activeKey} />\n )}\n </>\n ))}\n </div>\n );\n};\n\nexport default StageTimeline;\n", "import { Text } from '@kanda-libs/ks-design-library';\nimport type { FunctionComponent } from 'react';\nimport { CLASS_NAMES } from './constants';\n\nconst NotFoundPage: FunctionComponent = function () {\n return (\n <div className={CLASS_NAMES.container}>\n <Text text=\"404\" className=\"mb-4 text-28-32-em text-neutral-900\" />\n <Text text=\"Page not found\" className=\"text-20-24 text-neutral-700\" />\n </div>\n );\n};\n\nexport default NotFoundPage;\n", "export const CLASS_NAMES = {\n container: 'w-screen h-screen flex flex-col justify-center items-center',\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["jsx", "AlertBanner", "children", "AlertBanner_default", "Pagination", "SkeletonLoader", "Icon", "BUTTON_CLASS_NAMES", "ICON_PROPS", "WRAPPER_STYLE", "WRAPPER_CLASS_NAMES", "jsx", "jsxs", "Button", "label", "props", "BUTTON_CLASS_NAMES", "Icon", "ICON_PROPS", "Button_default", "clsx", "useWrapperProps", "index", "containerStyle", "WRAPPER_STYLE", "clsx", "WRAPPER_CLASS_NAMES", "jsx", "Wrapper", "index", "children", "classNames", "containerStyle", "useWrapperProps", "Wrapper_default", "HeaderButton_default", "Button_default", "Wrapper_default", "clsx", "CLASS_NAMES", "useHeaderColumnProps", "index", "popoverButtons", "CLASS_NAMES", "clsx", "jsx", "HeaderColumn", "index", "isLoading", "popoverButtons", "label", "props", "classNames", "useHeaderColumnProps", "SkeletonLoader", "HeaderButton_default", "HeaderColumn_default", "CLASS_NAMES", "useHeaderGroupProps", "headerGroup", "columns", "headers", "getHeaderGroupProps", "headerGroupProps", "totalVisible", "column", "jsx", "HeaderGroup", "headerGroup", "columns", "isLoading", "headerGroupProps", "headers", "useHeaderGroupProps", "CLASS_NAMES", "column", "index", "HeaderColumn_default", "HeaderGroup_default", "SkeletonLoader", "Text", "clsx", "CLASS_NAMES", "useCellClassNames", "index", "compact", "isLoading", "clsx", "CLASS_NAMES", "useIsDesktop", "useMobileFullWidthCellStyle", "style", "isDesktop", "Fragment", "jsx", "jsxs", "Cell", "render", "index", "compact", "isLoading", "label", "props", "classNames", "useCellClassNames", "unformattedStyle", "formattedProps", "style", "useMobileFullWidthCellStyle", "SkeletonLoader", "Text", "Cell_default", "useClasses", "CLASS_NAMES", "useRowClassNames", "index", "canSelect", "useClasses", "CLASS_NAMES", "jsx", "Row", "cells", "index", "compact", "isLoading", "onRowClick", "props", "classNames", "useRowClassNames", "cell", "cellIndex", "Cell_default", "Row_default", "Fragment", "jsx", "Pages", "page", "prepareRow", "isLoading", "compact", "onRowClick", "row", "index", "Row_default", "Pages_default", "useTable", "useGlobalFilter", "usePagination", "useSortBy", "useFlexLayout", "Fuse", "exactMatchSearch", "rows", "filterValue", "row", "excludeExactMatches", "exactMatchRows", "id", "p", "fuzzySearch", "searchKeys", "numberOfRows", "currentRows", "filteredResults", "key", "obj", "item", "result", "globalFilter", "pageSize", "exactMatches", "currentRowsExcludingExactMatches", "fuzzyMatches", "results", "useEffect", "useTableProps", "columns", "data", "pageSize", "query", "table", "useTable", "rows", "searchKeys", "filterValue", "globalFilter", "useGlobalFilter", "useSortBy", "usePagination", "useFlexLayout", "gotoPage", "pageCount", "pageIndex", "paginationProps", "nextPage", "Fragment", "jsx", "jsxs", "Table", "compact", "isLoading", "onRowClick", "props", "page", "prepareRow", "columns", "getTableProps", "headerGroups", "paginationProps", "useTableProps", "headerGroup", "HeaderGroup_default", "Pages_default", "Pagination", "Table_default", "Icon", "Logo", "jsx", "jsxs", "WIDTHS", "SplashScreen", "logo", "icon", "iconClassName", "iconSize", "title", "subText", "boldSubText", "cta", "append", "width", "contentWidth", "content", "SplashScreen_default", "useEffect", "Document", "Page", "pdfjs", "useToast", "useCallback", "useMemo", "useState", "usePdf", "content", "pages", "setPages", "showError", "onLoadSuccess", "numPages", "index", "onLoadError", "message", "onSourceError", "pdfProps", "Fragment", "jsx", "DocumentTag", "Document", "Pdf", "content", "pdfProps", "pages", "showContent", "usePdf", "useEffect", "pdfjs", "page", "Page", "Pdf_default", "CLASS_NAMES", "jsx", "Pipeline", "children", "CLASS_NAMES", "Pipeline_default", "Children", "Button", "CLASS_NAMES", "useCallback", "useState", "usePipelineColumnPagination", "children", "perPage", "page", "setPage", "showMore", "currentPage", "items", "jsx", "jsxs", "PipelineColumn", "title", "children", "perPage", "items", "showMore", "canShowMore", "usePipelineColumnPagination", "Children", "CLASS_NAMES", "Button", "PipelineColumn_default", "Card", "Text", "TimeAgo", "jsx", "jsxs", "SimpleCompanyCard", "name", "signedUpDate", "reviewed", "isLoading", "SimpleCompanyCard_default", "Icon", "Text", "clsx", "useStageProps", "active", "current", "index", "last", "currentlyActive", "iconClasses", "borderClasses", "leftBorderClasses", "rightBorderClasses", "jsx", "jsxs", "Stage", "index", "active", "current", "last", "label", "iconClasses", "leftBorderClasses", "rightBorderClasses", "useStageProps", "Icon", "Text", "Stage_default", "clsx", "jsx", "TimelineBorder", "active", "TimelineBorder_default", "Fragment", "jsx", "jsxs", "StageTimeline", "stages", "activeKey", "stage", "key", "Stage_default", "TimelineBorder_default", "StageTimeline_default", "Text", "CLASS_NAMES", "jsx", "jsxs", "NotFoundPage", "CLASS_NAMES", "Text", "NotFoundPage_default"]
7
7
  }
package/dist/library.css CHANGED
@@ -982,6 +982,10 @@ video {
982
982
  position: fixed;
983
983
  }
984
984
 
985
+ .absolute {
986
+ position: absolute;
987
+ }
988
+
985
989
  .relative {
986
990
  position: relative;
987
991
  }
@@ -990,6 +994,26 @@ video {
990
994
  right: 16px;
991
995
  }
992
996
 
997
+ .top-\[31px\] {
998
+ top: 31px;
999
+ }
1000
+
1001
+ .left-0 {
1002
+ left: 0;
1003
+ }
1004
+
1005
+ .right-0 {
1006
+ right: 0;
1007
+ }
1008
+
1009
+ .z-10 {
1010
+ z-index: 10;
1011
+ }
1012
+
1013
+ .z-0 {
1014
+ z-index: 0;
1015
+ }
1016
+
993
1017
  .z-20 {
994
1018
  z-index: 20;
995
1019
  }
@@ -1028,10 +1052,18 @@ video {
1028
1052
  margin-top: 40px;
1029
1053
  }
1030
1054
 
1055
+ .-mt-\[32px\] {
1056
+ margin-top: -32px;
1057
+ }
1058
+
1031
1059
  .mt-2 {
1032
1060
  margin-top: 8px;
1033
1061
  }
1034
1062
 
1063
+ .mb-2 {
1064
+ margin-bottom: 8px;
1065
+ }
1066
+
1035
1067
  .mr-8 {
1036
1068
  margin-right: 32px;
1037
1069
  }
@@ -1087,14 +1119,26 @@ video {
1087
1119
  }
1088
1120
  }
1089
1121
 
1090
- .h-14 {
1091
- height: 56px;
1122
+ .h-1 {
1123
+ height: 4px;
1092
1124
  }
1093
1125
 
1094
1126
  .h-full {
1095
1127
  height: 100%;
1096
1128
  }
1097
1129
 
1130
+ .h-14 {
1131
+ height: 56px;
1132
+ }
1133
+
1134
+ .h-5 {
1135
+ height: 20px;
1136
+ }
1137
+
1138
+ .h-7 {
1139
+ height: 28px;
1140
+ }
1141
+
1098
1142
  .h-8 {
1099
1143
  height: 32px;
1100
1144
  }
@@ -1111,6 +1155,14 @@ video {
1111
1155
  width: 100%;
1112
1156
  }
1113
1157
 
1158
+ .w-7 {
1159
+ width: 28px;
1160
+ }
1161
+
1162
+ .w-1\/2 {
1163
+ width: 50%;
1164
+ }
1165
+
1114
1166
  .max-w-80 {
1115
1167
  max-width: 320px;
1116
1168
  }
@@ -1123,6 +1175,10 @@ video {
1123
1175
  max-width: 480px;
1124
1176
  }
1125
1177
 
1178
+ .flex-grow {
1179
+ flex-grow: 1;
1180
+ }
1181
+
1126
1182
  .transform {
1127
1183
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
1128
1184
  }
@@ -1159,6 +1215,10 @@ video {
1159
1215
  justify-content: center;
1160
1216
  }
1161
1217
 
1218
+ .justify-between {
1219
+ justify-content: space-between;
1220
+ }
1221
+
1162
1222
  .gap-x-2 {
1163
1223
  -moz-column-gap: 8px;
1164
1224
  column-gap: 8px;
@@ -1184,6 +1244,10 @@ video {
1184
1244
  border-radius: 0.75rem;
1185
1245
  }
1186
1246
 
1247
+ .rounded-2xl {
1248
+ border-radius: 1rem;
1249
+ }
1250
+
1187
1251
  .rounded-lg {
1188
1252
  border-radius: 0.5rem;
1189
1253
  }
@@ -1192,15 +1256,32 @@ video {
1192
1256
  border-width: 1px;
1193
1257
  }
1194
1258
 
1259
+ .border-2 {
1260
+ border-width: 2px;
1261
+ }
1262
+
1195
1263
  .border-b {
1196
1264
  border-bottom-width: 1px;
1197
1265
  }
1198
1266
 
1267
+ .border-solid {
1268
+ border-style: solid;
1269
+ }
1270
+
1199
1271
  .border-lavender-200 {
1200
1272
  --tw-border-opacity: 1;
1201
1273
  border-color: rgb(127 131 255 / var(--tw-border-opacity));
1202
1274
  }
1203
1275
 
1276
+ .border-neutral-600 {
1277
+ --tw-border-opacity: 1;
1278
+ border-color: rgb(108 129 157 / var(--tw-border-opacity));
1279
+ }
1280
+
1281
+ .border-transparent {
1282
+ border-color: transparent;
1283
+ }
1284
+
1204
1285
  .border-neutral-200 {
1205
1286
  --tw-border-opacity: 1;
1206
1287
  border-color: rgb(237 241 247 / var(--tw-border-opacity));
@@ -1216,6 +1297,21 @@ video {
1216
1297
  background-color: rgb(229 245 255 / var(--tw-bg-opacity));
1217
1298
  }
1218
1299
 
1300
+ .bg-neutral-200 {
1301
+ --tw-bg-opacity: 1;
1302
+ background-color: rgb(237 241 247 / var(--tw-bg-opacity));
1303
+ }
1304
+
1305
+ .bg-green-500 {
1306
+ --tw-bg-opacity: 1;
1307
+ background-color: rgb(31 204 175 / var(--tw-bg-opacity));
1308
+ }
1309
+
1310
+ .bg-neutral-000 {
1311
+ --tw-bg-opacity: 1;
1312
+ background-color: rgb(255 255 255 / var(--tw-bg-opacity));
1313
+ }
1314
+
1219
1315
  .bg-transparent {
1220
1316
  background-color: transparent;
1221
1317
  }
@@ -1280,6 +1376,10 @@ video {
1280
1376
  text-align: center;
1281
1377
  }
1282
1378
 
1379
+ .text-sm {
1380
+ font-size: 14px;
1381
+ }
1382
+
1283
1383
  .uppercase {
1284
1384
  text-transform: uppercase;
1285
1385
  }
@@ -1308,6 +1408,11 @@ video {
1308
1408
  color: rgb(108 129 157 / var(--tw-text-opacity));
1309
1409
  }
1310
1410
 
1411
+ .text-neutral-000 {
1412
+ --tw-text-opacity: 1;
1413
+ color: rgb(255 255 255 / var(--tw-text-opacity));
1414
+ }
1415
+
1311
1416
  .text-neutral-500 {
1312
1417
  --tw-text-opacity: 1;
1313
1418
  color: rgb(156 173 196 / var(--tw-text-opacity));
@@ -2221,6 +2326,10 @@ Modified version of toast CSS to match designs
2221
2326
  }
2222
2327
 
2223
2328
  @media (min-width: 768px) {
2329
+ .md\:block {
2330
+ display: block;
2331
+ }
2332
+
2224
2333
  .md\:hidden {
2225
2334
  display: none;
2226
2335
  }
@@ -2229,10 +2338,18 @@ Modified version of toast CSS to match designs
2229
2338
  height: 64px;
2230
2339
  }
2231
2340
 
2341
+ .md\:w-auto {
2342
+ width: auto;
2343
+ }
2344
+
2232
2345
  .md\:w-full {
2233
2346
  width: 100%;
2234
2347
  }
2235
2348
 
2349
+ .md\:min-w-48 {
2350
+ min-width: 192px;
2351
+ }
2352
+
2236
2353
  .md\:flex-row {
2237
2354
  flex-direction: row;
2238
2355
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kanda-libs/ks-design-library-new",
3
- "version": "0.0.28",
3
+ "version": "0.0.30",
4
4
  "description": "Kanda design components library",
5
5
  "main": "dist/index.esm.mjs",
6
6
  "module": "dist/index.esm.mjs",
@@ -103,6 +103,7 @@
103
103
  "@kanda-libs/ks-design-library": "^0.2.60",
104
104
  "@types/react-pdf": "^6.2.0",
105
105
  "@types/react-table": "^7.7.14",
106
+ "crypto-js": "^4.1.1",
106
107
  "file-saver": "^2.0.5",
107
108
  "fuse.js": "^6.6.2",
108
109
  "lodash.get": "^4.4.2",
@@ -30,7 +30,7 @@ const PipelineColumn: FunctionComponent<PipelineColumnProps> = function ({
30
30
  id="pipeline-column-show-more"
31
31
  variant="outline"
32
32
  onClick={showMore}
33
- label="Show more"
33
+ label="More"
34
34
  className="w-full"
35
35
  />
36
36
  </div>
@@ -0,0 +1,44 @@
1
+ import { Icon, Text } from '@kanda-libs/ks-design-library';
2
+ import type { FunctionComponent } from 'react';
3
+ import useStageProps from './useStageProps';
4
+
5
+ export interface StageProps {
6
+ index: number;
7
+ active?: boolean;
8
+ current?: boolean;
9
+ last?: boolean;
10
+ label: string | JSX.Element;
11
+ }
12
+
13
+ const Stage: FunctionComponent<StageProps> = function ({
14
+ index,
15
+ active = false,
16
+ current = false,
17
+ last = false,
18
+ label,
19
+ }) {
20
+ const { iconClasses, leftBorderClasses, rightBorderClasses } = useStageProps(
21
+ active,
22
+ current,
23
+ index,
24
+ last,
25
+ );
26
+
27
+ return (
28
+ <div className="relative flex flex-col items-center w-full md:w-auto md:min-w-48">
29
+ {current && <Icon icon="chevron-down" height={20} />}
30
+ {!current && <div className="h-5" />}
31
+ <div className={iconClasses}>
32
+ <div>
33
+ {!active && index + 1}
34
+ {active && <Icon icon="check" width={12} />}
35
+ </div>
36
+ </div>
37
+ <div className={leftBorderClasses} />
38
+ <div className={rightBorderClasses} />
39
+ <Text text={label} className="text-sm text-center text-neutral-700" />
40
+ </div>
41
+ );
42
+ };
43
+
44
+ export default Stage;
@@ -0,0 +1,49 @@
1
+ import clsx from 'clsx';
2
+ import type { StageProps } from '.';
3
+
4
+ export interface StagePropsHook {
5
+ iconClasses: string;
6
+ leftBorderClasses: string;
7
+ rightBorderClasses: string;
8
+ }
9
+
10
+ export default function useStageProps(
11
+ active: StageProps['active'],
12
+ current: StageProps['current'],
13
+ index: StageProps['index'],
14
+ last: StageProps['last'],
15
+ ): StagePropsHook {
16
+ const currentlyActive = active || current;
17
+ const iconClasses = clsx(
18
+ 'w-7 h-7 rounded-2xl mb-2 relative z-10',
19
+ 'text-center text-18-22-em flex items-center justify-center border border-solid border-2',
20
+ !currentlyActive && 'border-neutral-600 text-neutral-600 bg-neutral-000',
21
+ currentlyActive && 'bg-green-500 text-neutral-000 border-transparent',
22
+ );
23
+
24
+ const borderClasses = clsx(
25
+ 'absolute h-1 top-[31px] z-0',
26
+ !currentlyActive && 'bg-neutral-200',
27
+ currentlyActive && 'bg-green-500',
28
+ );
29
+
30
+ const leftBorderClasses = clsx(
31
+ borderClasses,
32
+ 'w-1/2 left-0',
33
+ index !== 0 && 'hidden md:block',
34
+ index === 0 && 'hidden',
35
+ );
36
+ const rightBorderClasses = clsx(
37
+ borderClasses,
38
+ 'w-1/2 right-0 hidden md:block',
39
+ current && 'bg-neutral-200',
40
+ !last && 'hidden md:block',
41
+ last && 'hidden',
42
+ );
43
+
44
+ return {
45
+ iconClasses,
46
+ leftBorderClasses,
47
+ rightBorderClasses,
48
+ };
49
+ }
@@ -0,0 +1,22 @@
1
+ import clsx from 'clsx';
2
+ import type { FunctionComponent } from 'react';
3
+
4
+ export interface TimelineBorderProps {
5
+ active?: boolean;
6
+ }
7
+
8
+ const TimelineBorder: FunctionComponent<TimelineBorderProps> = function ({
9
+ active = false,
10
+ }) {
11
+ return (
12
+ <div
13
+ className={clsx(
14
+ 'flex-grow w-full h-1 -mt-[32px] hidden md:block',
15
+ !active && 'bg-neutral-200',
16
+ active && 'bg-green-500',
17
+ )}
18
+ />
19
+ );
20
+ };
21
+
22
+ export default TimelineBorder;
@@ -0,0 +1,35 @@
1
+ import type { FunctionComponent } from 'react';
2
+ import Stage from './Stage';
3
+ import TimelineBorder from './TimelineBorder';
4
+
5
+ export interface StageTimelineProps {
6
+ stages: (string | JSX.Element)[];
7
+ activeKey: number;
8
+ }
9
+
10
+ const StageTimeline: FunctionComponent<StageTimelineProps> = function ({
11
+ stages,
12
+ activeKey,
13
+ }) {
14
+ return (
15
+ <div className="flex flex-col items-center justify-between h-full md:flex-row">
16
+ {stages.map((stage, key) => (
17
+ <>
18
+ <Stage
19
+ key={`stage-${key}`}
20
+ index={key}
21
+ active={key < activeKey}
22
+ current={key === activeKey}
23
+ last={key === stages.length - 1}
24
+ label={stage}
25
+ />
26
+ {key !== stages.length - 1 && (
27
+ <TimelineBorder active={key < activeKey} />
28
+ )}
29
+ </>
30
+ ))}
31
+ </div>
32
+ );
33
+ };
34
+
35
+ export default StageTimeline;
@@ -5,4 +5,5 @@ export { default as Pdf } from './Pdf';
5
5
  export { default as Pipeline } from './Pipeline';
6
6
  export { default as PipelineColumn } from './Pipeline/PipelineColumn';
7
7
  export { default as SimpleCompanyCard } from './SimpleCompanyCard';
8
+ export { default as StageTimeline } from './StageTimeline';
8
9
  export { default as NotFoundPage } from './NotFoundPage';
@@ -982,6 +982,10 @@ video {
982
982
  position: fixed;
983
983
  }
984
984
 
985
+ .absolute {
986
+ position: absolute;
987
+ }
988
+
985
989
  .relative {
986
990
  position: relative;
987
991
  }
@@ -990,6 +994,26 @@ video {
990
994
  right: 16px;
991
995
  }
992
996
 
997
+ .top-\[31px\] {
998
+ top: 31px;
999
+ }
1000
+
1001
+ .left-0 {
1002
+ left: 0;
1003
+ }
1004
+
1005
+ .right-0 {
1006
+ right: 0;
1007
+ }
1008
+
1009
+ .z-10 {
1010
+ z-index: 10;
1011
+ }
1012
+
1013
+ .z-0 {
1014
+ z-index: 0;
1015
+ }
1016
+
993
1017
  .z-20 {
994
1018
  z-index: 20;
995
1019
  }
@@ -1028,10 +1052,18 @@ video {
1028
1052
  margin-top: 40px;
1029
1053
  }
1030
1054
 
1055
+ .-mt-\[32px\] {
1056
+ margin-top: -32px;
1057
+ }
1058
+
1031
1059
  .mt-2 {
1032
1060
  margin-top: 8px;
1033
1061
  }
1034
1062
 
1063
+ .mb-2 {
1064
+ margin-bottom: 8px;
1065
+ }
1066
+
1035
1067
  .mr-8 {
1036
1068
  margin-right: 32px;
1037
1069
  }
@@ -1087,14 +1119,26 @@ video {
1087
1119
  }
1088
1120
  }
1089
1121
 
1090
- .h-14 {
1091
- height: 56px;
1122
+ .h-1 {
1123
+ height: 4px;
1092
1124
  }
1093
1125
 
1094
1126
  .h-full {
1095
1127
  height: 100%;
1096
1128
  }
1097
1129
 
1130
+ .h-14 {
1131
+ height: 56px;
1132
+ }
1133
+
1134
+ .h-5 {
1135
+ height: 20px;
1136
+ }
1137
+
1138
+ .h-7 {
1139
+ height: 28px;
1140
+ }
1141
+
1098
1142
  .h-8 {
1099
1143
  height: 32px;
1100
1144
  }
@@ -1111,6 +1155,14 @@ video {
1111
1155
  width: 100%;
1112
1156
  }
1113
1157
 
1158
+ .w-7 {
1159
+ width: 28px;
1160
+ }
1161
+
1162
+ .w-1\/2 {
1163
+ width: 50%;
1164
+ }
1165
+
1114
1166
  .max-w-80 {
1115
1167
  max-width: 320px;
1116
1168
  }
@@ -1123,6 +1175,10 @@ video {
1123
1175
  max-width: 480px;
1124
1176
  }
1125
1177
 
1178
+ .flex-grow {
1179
+ flex-grow: 1;
1180
+ }
1181
+
1126
1182
  .transform {
1127
1183
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
1128
1184
  }
@@ -1159,6 +1215,10 @@ video {
1159
1215
  justify-content: center;
1160
1216
  }
1161
1217
 
1218
+ .justify-between {
1219
+ justify-content: space-between;
1220
+ }
1221
+
1162
1222
  .gap-x-2 {
1163
1223
  -moz-column-gap: 8px;
1164
1224
  column-gap: 8px;
@@ -1184,6 +1244,10 @@ video {
1184
1244
  border-radius: 0.75rem;
1185
1245
  }
1186
1246
 
1247
+ .rounded-2xl {
1248
+ border-radius: 1rem;
1249
+ }
1250
+
1187
1251
  .rounded-lg {
1188
1252
  border-radius: 0.5rem;
1189
1253
  }
@@ -1192,15 +1256,32 @@ video {
1192
1256
  border-width: 1px;
1193
1257
  }
1194
1258
 
1259
+ .border-2 {
1260
+ border-width: 2px;
1261
+ }
1262
+
1195
1263
  .border-b {
1196
1264
  border-bottom-width: 1px;
1197
1265
  }
1198
1266
 
1267
+ .border-solid {
1268
+ border-style: solid;
1269
+ }
1270
+
1199
1271
  .border-lavender-200 {
1200
1272
  --tw-border-opacity: 1;
1201
1273
  border-color: rgb(127 131 255 / var(--tw-border-opacity));
1202
1274
  }
1203
1275
 
1276
+ .border-neutral-600 {
1277
+ --tw-border-opacity: 1;
1278
+ border-color: rgb(108 129 157 / var(--tw-border-opacity));
1279
+ }
1280
+
1281
+ .border-transparent {
1282
+ border-color: transparent;
1283
+ }
1284
+
1204
1285
  .border-neutral-200 {
1205
1286
  --tw-border-opacity: 1;
1206
1287
  border-color: rgb(237 241 247 / var(--tw-border-opacity));
@@ -1216,6 +1297,21 @@ video {
1216
1297
  background-color: rgb(229 245 255 / var(--tw-bg-opacity));
1217
1298
  }
1218
1299
 
1300
+ .bg-neutral-200 {
1301
+ --tw-bg-opacity: 1;
1302
+ background-color: rgb(237 241 247 / var(--tw-bg-opacity));
1303
+ }
1304
+
1305
+ .bg-green-500 {
1306
+ --tw-bg-opacity: 1;
1307
+ background-color: rgb(31 204 175 / var(--tw-bg-opacity));
1308
+ }
1309
+
1310
+ .bg-neutral-000 {
1311
+ --tw-bg-opacity: 1;
1312
+ background-color: rgb(255 255 255 / var(--tw-bg-opacity));
1313
+ }
1314
+
1219
1315
  .bg-transparent {
1220
1316
  background-color: transparent;
1221
1317
  }
@@ -1280,6 +1376,10 @@ video {
1280
1376
  text-align: center;
1281
1377
  }
1282
1378
 
1379
+ .text-sm {
1380
+ font-size: 14px;
1381
+ }
1382
+
1283
1383
  .uppercase {
1284
1384
  text-transform: uppercase;
1285
1385
  }
@@ -1308,6 +1408,11 @@ video {
1308
1408
  color: rgb(108 129 157 / var(--tw-text-opacity));
1309
1409
  }
1310
1410
 
1411
+ .text-neutral-000 {
1412
+ --tw-text-opacity: 1;
1413
+ color: rgb(255 255 255 / var(--tw-text-opacity));
1414
+ }
1415
+
1311
1416
  .text-neutral-500 {
1312
1417
  --tw-text-opacity: 1;
1313
1418
  color: rgb(156 173 196 / var(--tw-text-opacity));
@@ -2221,6 +2326,10 @@ Modified version of toast CSS to match designs
2221
2326
  }
2222
2327
 
2223
2328
  @media (min-width: 768px) {
2329
+ .md\:block {
2330
+ display: block;
2331
+ }
2332
+
2224
2333
  .md\:hidden {
2225
2334
  display: none;
2226
2335
  }
@@ -2229,10 +2338,18 @@ Modified version of toast CSS to match designs
2229
2338
  height: 64px;
2230
2339
  }
2231
2340
 
2341
+ .md\:w-auto {
2342
+ width: auto;
2343
+ }
2344
+
2232
2345
  .md\:w-full {
2233
2346
  width: 100%;
2234
2347
  }
2235
2348
 
2349
+ .md\:min-w-48 {
2350
+ min-width: 192px;
2351
+ }
2352
+
2236
2353
  .md\:flex-row {
2237
2354
  flex-direction: row;
2238
2355
  }