@kanda-libs/ks-design-library-new 0.0.20 → 0.0.22

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
@@ -48,6 +48,10 @@ export declare const SplashScreen: {
48
48
  contentWidth: number;
49
49
  };
50
50
  };
51
+ export interface PdfProps {
52
+ content?: string;
53
+ }
54
+ export declare const Pdf: FunctionComponent<PdfProps>;
51
55
  export interface PipelineProps {
52
56
  children: JSX.Element | JSX.Element[];
53
57
  }
@@ -63,5 +67,6 @@ export interface SimpleCompanyCardProps {
63
67
  highlighted?: boolean;
64
68
  }
65
69
  export declare const SimpleCompanyCard: FunctionComponent<SimpleCompanyCardProps>;
70
+ export declare const NotFoundPage: FunctionComponent;
66
71
 
67
72
  export {};
@@ -1,2 +1,2 @@
1
- import{jsx as re}from"react/jsx-runtime";var oe=function({children:e}){return re("div",{className:"p-4 border bg-lavender-100 border-lavender-200 rounded-xl text-lavender-200",children:e})},te=oe;import{Pagination as ke}from"@kanda-libs/ks-design-library";import{SkeletonLoader as pe}from"@kanda-libs/ks-design-library";import{Icon as ne}from"@kanda-libs/ks-design-library";var E="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",A={icon:"chevron-down",stroke:"neutral-500",size:12,className:"ml-2 my-auto"},k={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 se,jsxs as le}from"react/jsx-runtime";var ae=function({label:e,...o}){return le("button",{className:E,...o,children:[e,se(ne,{...A})]})},I=ae;import O from"clsx";function C(e){let o=e===0?k:{};return{classNames:{container:O(f.container.base,e===0?f.container.padding:""),flex:O(f.flex.base,e===0?"":f.flex.padding)},containerStyle:o}}import{jsx as M}from"react/jsx-runtime";var ie=function({index:e,children:o}){let{classNames:t,containerStyle:r}=C(e);return M("div",{className:t.container,style:r,children:M("div",{className:t.flex,children:o})})},F=ie;var T={Button:I,Wrapper:F};import W 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 h(e,o){return{classNames:{...c,loading:W(c.loading.base,e===0?"":c.loading.margin),wrapper:W(c.wrapper.padding,o?"":c.wrapper.popover)}}}import{jsx as S}from"react/jsx-runtime";var me=function({index:e,isLoading:o=!1,popoverButtons:t=!1,label:r,...n}){let{classNames:a}=h(e,t);return S("div",{...n,className:a.main,children:S(pe,{isLoading:o,wrapperClassName:a.loading,afterLoading:S(T.Wrapper,{index:e,children:S(T.Button,{label:r})})})})},_=me;var G={base:"flex-row h-14 border-b border-neutral-200"};function w(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 B}from"react/jsx-runtime";function de({headerGroup:e,columns:o,isLoading:t}){let{headerGroupProps:r,headers:n}=w(e,o);return B("div",{...r,className:G.base,children:n.map((a,s)=>B(_,{index:s,label:a.render("Header"),isLoading:t,...a.getHeaderProps(a.getSortByToggleProps())}))})}var j=de;import{SkeletonLoader as fe,Text as be}from"@kanda-libs/ks-design-library";import ce 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 y(e,o,t){return{cell:ce(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 ue}from"@kanda-libs/ks-design-library";function N(e){if(!e)return{};let o=ue();return{...e,width:o?e==null?void 0:e.width:"100%"}}import{Fragment as ge,jsx as b,jsxs as Se}from"react/jsx-runtime";var xe=function({render:e,index:o,compact:t=!1,isLoading:r=!1,label:n,...a}){let s=y(o,t,r),{style:i,...p}=a,l=N(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:Se(ge,{children:[b(be,{text:`${n}:`,className:s.mobileLabel}),e()]})})})})})},J=xe;import{useClasses as Pe}from"@kanda-libs/ks-design-library";var X={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 v(e,o){return Pe(X,{base:[".base",e===9?"":".border",o?".hover":""],button:[".button"]})}import{jsx as z}from"react/jsx-runtime";function Ce({cells:e,index:o,compact:t=!1,isLoading:r=!1,onRowClick:n,...a}){let s=v(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(J,{...i.getCellProps(),index:p,isLoading:r,render:()=>i.render("Cell"),label:i.column.Header}))})}var D=Ce;import{Fragment as he,jsx as V}from"react/jsx-runtime";function Te({page:e,prepareRow:o,isLoading:t=!1,compact:r=!1,onRowClick:n}){return V(he,{children:e.map((a,s)=>(o(a),V(D,{...a.getRowProps(),index:s,cells:a.cells,isLoading:t,compact:r,onRowClick:n})))})}var U=Te;import{useTable as ve,useGlobalFilter as Re,usePagination as He,useSortBy as Le,useFlexLayout as Ee}from"react-table";import we from"fuse.js";var ye=(e,o)=>e.filter(t=>Object.values(t.values).join(", ").toLowerCase().includes(o.toLowerCase())),$=(e,o)=>e.filter(({id:t})=>o.filter(r=>r.id===t).length===0),Ne=(e,o,t,r,n)=>{let a=e.map(l=>l.values),p=new we(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 $(p,n)},Y=(e,o,t,r=10)=>{if(t.length<1)return e;let n=ye(e,t).slice(0,r),a=$(e,n),s=Ne(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 Ae}from"react";function R({columns:e,data:o,pageSize:t=10,query:r=""}){let n=ve({columns:e,data:o,initialState:{pageSize:10,pageIndex:0},autoResetGlobalFilter:!1,globalFilter:(l,m,g)=>Y(l,m,g,t)},Re,Le,He,Ee),{gotoPage:a,pageCount:s,state:{pageIndex:i}}=n,p={pageCount:s,pageIndex:i,setPage:l=>{a(l)}};return Ae(()=>{n.setGlobalFilter(r)},[r]),{paginationProps:p,...n}}import{Fragment as Me,jsx as x,jsxs as q}from"react/jsx-runtime";function Ie({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 q(Me,{children:[q("div",{...i(),className:"w-full",children:[x("div",{children:p.map(m=>x(j,{headerGroup:m,columns:s,isLoading:o}))}),x(U,{page:n,prepareRow:a,isLoading:o,compact:e,onRowClick:t})]}),l.pageCount>1&&x("div",{className:"px-4 py-4",children:x(ke,{...l})})]})}var Oe=Ie;import{Icon as Fe,Logo as We}from"@kanda-libs/ks-design-library";import{jsx as u,jsxs as P}from"react/jsx-runtime";var K={80:"max-w-80",96:"max-w-96",120:"max-w-120",160:"max-w160"},Q=({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:g})=>P("div",{className:`flex flex-col m-auto w-full ${K[l]} text-center items-center justify-center`,children:[e&&u("div",{className:"mb-10",children:u(We,{height:32})}),!e&&u(Fe,{icon:o,size:r,className:`mx-auto mb-8 ${t}`}),u("h1",{className:"text-24-28-em mb-4",children:n}),P("div",{className:`flex flex-col w-full ${K[m]} mx-auto`,children:[g&&u("div",{className:"mt-4 mb-8",children:g}),P("span",{className:"text-16-24 text-neutral-600",children:[a,s&&P("b",{children:[" ",s]})]}),i&&u("div",{className:"mt-10",children:i}),p]})]});Q.defaultProps={logo:!1,iconClassName:"",iconSize:104,cta:null,append:null,boldSubText:null,content:null,width:96,contentWidth:96};var _e=Q;var Z={container:"grid grid-cols-7 justify-start items-start gap-x-2"};import{jsx as je}from"react/jsx-runtime";var Ge=function({children:e}){return je("div",{className:Z.container,children:e})},Be=Ge;var H={title:"text-18-22-em text-neutral-900 py-2 text-center h-14",items:"flex flex-col gap-y-2"};import{jsx as ee,jsxs as ze}from"react/jsx-runtime";var Je=function({title:e,children:o}){return ze("div",{children:[ee("div",{className:H.title,children:e}),ee("div",{className:H.items,children:o})]})},Xe=Je;import{Card as De,Text as Ve,TimeAgo as Ue}from"@kanda-libs/ks-design-library";import{jsx as L,jsxs as qe}from"react/jsx-runtime";var $e=function({name:e,signedUpDate:o,highlighted:t=!1}){return L(De,{className:t?"bg-blue-100":"",children:qe("div",{className:"flex flex-col gap-y-2",children:[L(Ve,{text:e,className:"text-16-20-em"}),L(Ue,{timestamp:o.getTime()})]})})},Ye=$e;export{te as AlertBanner,Be as Pipeline,Xe as PipelineColumn,Ye as SimpleCompanyCard,_e as SplashScreen,Oe as Table};
1
+ import{jsx as me}from"react/jsx-runtime";var pe=function({children:e}){return me("div",{className:"p-4 border bg-lavender-100 border-lavender-200 rounded-xl text-lavender-200",children:e})},de=pe;import{Pagination as Be}from"@kanda-libs/ks-design-library";import{SkeletonLoader as xe}from"@kanda-libs/ks-design-library";import{Icon as ce}from"@kanda-libs/ks-design-library";var O="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",F={icon:"chevron-down",stroke:"neutral-500",size:12,className:"ml-2 my-auto"},I={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 fe,jsxs as be}from"react/jsx-runtime";var ue=function({label:e,...o}){return be("button",{className:O,...o,children:[e,fe(ce,{...F})]})},M=ue;import _ from"clsx";function T(e){let o=e===0?I:{};return{classNames:{container:_(f.container.base,e===0?f.container.padding:""),flex:_(f.flex.base,e===0?"":f.flex.padding)},containerStyle:o}}import{jsx as W}from"react/jsx-runtime";var ge=function({index:e,children:o}){let{classNames:t,containerStyle:r}=T(e);return W("div",{className:t.container,style:r,children:W("div",{className:t.flex,children:o})})},G=ge;var h={Button:M,Wrapper:G};import B 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 w(e,o){return{classNames:{...c,loading:B(c.loading.base,e===0?"":c.loading.margin),wrapper:B(c.wrapper.padding,o?"":c.wrapper.popover)}}}import{jsx as P}from"react/jsx-runtime";var Pe=function({index:e,isLoading:o=!1,popoverButtons:t=!1,label:r,...n}){let{classNames:a}=w(e,t);return P("div",{...n,className:a.main,children:P(xe,{isLoading:o,wrapperClassName:a.loading,afterLoading:P(h.Wrapper,{index:e,children:P(h.Button,{label:r})})})})},j=Pe;var J={base:"flex-row h-14 border-b border-neutral-200"};function y(e,o){let{headers:t,getHeaderGroupProps:r}=e,n=r({}),a=o.filter(l=>l.isVisible).length;return{headers:t,headerGroupProps:n,totalVisible:a}}import{jsx as X}from"react/jsx-runtime";function Se({headerGroup:e,columns:o,isLoading:t}){let{headerGroupProps:r,headers:n}=y(e,o);return X("div",{...r,className:J.base,children:n.map((a,l)=>X(j,{index:l,label:a.render("Header"),isLoading:t,...a.getHeaderProps(a.getSortByToggleProps())}))})}var z=Se;import{SkeletonLoader as he,Text as we}from"@kanda-libs/ks-design-library";import Ce from"clsx";var m={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 N(e,o,t){return{cell:Ce(o?m.cell.compact:m.cell.base,e===0?"":m.cell.padding),container:m.container,render:t?m.renderLoading:m.render,mobileLabel:m.mobileLabel}}import{useIsDesktop as Te}from"@kanda-libs/ks-design-library";function v(e){if(!e)return{};let o=Te();return{...e,width:o?e==null?void 0:e.width:"100%"}}import{Fragment as Ne,jsx as b,jsxs as ve}from"react/jsx-runtime";var ye=function({render:e,index:o,compact:t=!1,isLoading:r=!1,label:n,...a}){let l=N(o,t,r),{style:i,...p}=a,s=v(i);return b("div",{...p,style:s,className:l.cell,children:b("div",{className:l.container,children:b("div",{className:l.render,children:b(he,{isLoading:r,afterLoading:ve(Ne,{children:[b(we,{text:`${n}:`,className:l.mobileLabel}),e()]})})})})})},D=ye;import{useClasses as Le}from"@kanda-libs/ks-design-library";var $={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 Le($,{base:[".base",e===9?"":".border",o?".hover":""],button:[".button"]})}import{jsx as V}from"react/jsx-runtime";function Re({cells:e,index:o,compact:t=!1,isLoading:r=!1,onRowClick:n,...a}){let l=L(o,!!n);return V("div",{...a,className:t?l.compact:l.base,onClick:()=>{n&&n(e[0].row.original)},children:e.map((i,p)=>V(D,{...i.getCellProps(),index:p,isLoading:r,render:()=>i.render("Cell"),label:i.column.Header}))})}var U=Re;import{Fragment as Ae,jsx as K}from"react/jsx-runtime";function Ee({page:e,prepareRow:o,isLoading:t=!1,compact:r=!1,onRowClick:n}){return K(Ae,{children:e.map((a,l)=>(o(a),K(U,{...a.getRowProps(),index:l,cells:a.cells,isLoading:t,compact:r,onRowClick:n})))})}var Y=Ee;import{useTable as Fe,useGlobalFilter as Ie,usePagination as Me,useSortBy as _e,useFlexLayout as We}from"react-table";import He from"fuse.js";var ke=(e,o)=>e.filter(t=>Object.values(t.values).join(", ").toLowerCase().includes(o.toLowerCase())),q=(e,o)=>e.filter(({id:t})=>o.filter(r=>r.id===t).length===0),Oe=(e,o,t,r,n)=>{let a=e.map(s=>s.values),p=new He(a,{keys:t.map(s=>({name:s,getFn:d=>d[s]}))}).search(o).map(({item:s})=>s).slice(0,r).map(s=>e.find(d=>d.values.cid===s.cid)).filter(Boolean);return q(p,n)},Q=(e,o,t,r=10)=>{if(t.length<1)return e;let n=ke(e,t).slice(0,r),a=q(e,n),l=Oe(a,t,o,r-n.length,n),i=[...n,...l];return e.map(({id:p})=>i.find(s=>s.id===p)).filter(Boolean)};import{useEffect as Ge}from"react";function R({columns:e,data:o,pageSize:t=10,query:r=""}){let n=Fe({columns:e,data:o,initialState:{pageSize:10,pageIndex:0},autoResetGlobalFilter:!1,globalFilter:(s,d,x)=>Q(s,d,x,t)},Ie,_e,Me,We),{gotoPage:a,pageCount:l,state:{pageIndex:i}}=n,p={pageCount:l,pageIndex:i,setPage:s=>{a(s)}};return Ge(()=>{n.setGlobalFilter(r)},[r]),{paginationProps:p,...n}}import{Fragment as Xe,jsx as g,jsxs as Z}from"react/jsx-runtime";function je({compact:e=!1,isLoading:o=!1,onRowClick:t,...r}){let{page:n,prepareRow:a,columns:l,getTableProps:i,headerGroups:p,paginationProps:s}=R(r);return Z(Xe,{children:[Z("div",{...i(),className:"w-full",children:[g("div",{children:p.map(d=>g(z,{headerGroup:d,columns:l,isLoading:o}))}),g(Y,{page:n,prepareRow:a,isLoading:o,compact:e,onRowClick:t})]}),s.pageCount>1&&g("div",{className:"px-4 py-4",children:g(Be,{...s})})]})}var Je=je;import{Icon as ze,Logo as De}from"@kanda-libs/ks-design-library";import{jsx as u,jsxs as S}from"react/jsx-runtime";var ee={80:"max-w-80",96:"max-w-96",120:"max-w-120",160:"max-w160"},oe=({logo:e,icon:o,iconClassName:t,iconSize:r,title:n,subText:a,boldSubText:l,cta:i,append:p,width:s=80,contentWidth:d=80,content:x})=>S("div",{className:`flex flex-col m-auto w-full ${ee[s]} text-center items-center justify-center`,children:[e&&u("div",{className:"mb-10",children:u(De,{height:32})}),!e&&u(ze,{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 ${ee[d]} mx-auto`,children:[x&&u("div",{className:"mt-4 mb-8",children:x}),S("span",{className:"text-16-24 text-neutral-600",children:[a,l&&S("b",{children:[" ",l]})]}),i&&u("div",{className:"mt-10",children:i}),p]})]});oe.defaultProps={logo:!1,iconClassName:"",iconSize:104,cta:null,append:null,boldSubText:null,content:null,width:96,contentWidth:96};var $e=oe;import{useEffect as Ye}from"react";import{Document as qe,Page as Qe,pdfjs as te}from"react-pdf";import{useToast as Ve}from"@kanda-libs/ks-design-library";import{useCallback as E,useMemo as Ue,useState as Ke}from"react";function A(e){let[o,t]=Ke(null),{showError:r}=Ve(),n=E(({numPages:s})=>{t([...Array(s).keys()].map(d=>({key:`page_${d+1}`,pageNumber:d+1,className:d!==0?"mt-4":""})))},[]),a=E(({message:s})=>r(`Error loading document. Please contact Kanda. Error message: ${s}`),[r]),l=E(({message:s})=>r(`Error retrieving document source. Please contact Kanda. Error message: ${s}`),[r]),i=Ue(()=>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:l}:null,[e,n,a,l]);return{pdfProps:i,pages:o,showContent:!!(i&&!!e)}}import{Fragment as re,jsx as C}from"react/jsx-runtime";var Ze=qe,eo=function({content:e}){let{pdfProps:o,pages:t,showContent:r}=A(e);return Ye(()=>{te.GlobalWorkerOptions.workerSrc=`https://cdnjs.cloudflare.com/ajax/libs/pdf.js/${te.version}/pdf.worker.js`},[]),r?C(Ze,{...o,children:t&&t.map(n=>C(re,{children:C(Qe,{...n})}))}):C(re,{})},oo=eo;var ne={container:"grid grid-cols-7 justify-start items-start gap-x-2"};import{jsx as no}from"react/jsx-runtime";var to=function({children:e}){return no("div",{className:ne.container,children:e})},ro=to;var H={title:"text-18-22-em text-neutral-900 py-2 text-center h-14",items:"flex flex-col gap-y-2"};import{jsx as ae,jsxs as lo}from"react/jsx-runtime";var ao=function({title:e,children:o}){return lo("div",{children:[ae("div",{className:H.title,children:e}),ae("div",{className:H.items,children:o})]})},so=ao;import{Card as io,Text as po,TimeAgo as mo}from"@kanda-libs/ks-design-library";import{jsx as k,jsxs as fo}from"react/jsx-runtime";var co=function({name:e,signedUpDate:o,highlighted:t=!1}){return k(io,{className:t?"bg-blue-100":"",children:fo("div",{className:"flex flex-col gap-y-2",children:[k(po,{text:e,className:"text-16-20-em"}),k(mo,{timestamp:o.getTime()})]})})},uo=co;import{Text as le}from"@kanda-libs/ks-design-library";var se={container:"w-screen h-screen flex flex-col justify-center items-center"};import{jsx as ie,jsxs as xo}from"react/jsx-runtime";var bo=function(){return xo("div",{className:se.container,children:[ie(le,{text:"404",className:"mb-4 text-28-32-em text-neutral-900"}),ie(le,{text:"Page not found",className:"text-20-24 text-neutral-700"})]})},go=bo;export{de as AlertBanner,go as NotFoundPage,oo as Pdf,ro as Pipeline,so as PipelineColumn,uo as SimpleCompanyCard,$e as SplashScreen,Je 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/Pipeline/constants.ts", "../src/components/Pipeline/index.tsx", "../src/components/Pipeline/PipelineColumn/constants.ts", "../src/components/Pipeline/PipelineColumn/index.tsx", "../src/components/SimpleCompanyCard/index.tsx"],
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", "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", "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 type { FunctionComponent } from 'react';\nimport { CLASS_NAMES } from './constants';\n\nexport interface PipelineColumnProps {\n title: string;\n children?: JSX.Element | JSX.Element[];\n}\n\nconst PipelineColumn: FunctionComponent<PipelineColumnProps> = function ({\n title,\n children,\n}) {\n return (\n <div>\n <div className={CLASS_NAMES.title}>{title}</div>\n <div className={CLASS_NAMES.items}>{children}</div>\n </div>\n );\n};\n\nexport default PipelineColumn;\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 highlighted?: boolean;\n}\n\nconst SimpleCompanyCard: FunctionComponent<SimpleCompanyCardProps> = function ({\n name,\n signedUpDate,\n highlighted = false,\n}) {\n return (\n <Card className={highlighted ? 'bg-blue-100' : ''}>\n <div className=\"flex flex-col gap-y-2\">\n <Text text={name} className=\"text-16-20-em\" />\n <TimeAgo timestamp={signedUpDate.getTime()} />\n </div>\n </Card>\n );\n};\n\nexport default SimpleCompanyCard;\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", "CLASS_NAMES", "jsx", "Pipeline", "children", "CLASS_NAMES", "Pipeline_default", "CLASS_NAMES", "jsx", "jsxs", "PipelineColumn", "title", "children", "CLASS_NAMES", "PipelineColumn_default", "Card", "Text", "TimeAgo", "jsx", "jsxs", "SimpleCompanyCard", "name", "signedUpDate", "highlighted", "SimpleCompanyCard_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/constants.ts", "../src/components/Pipeline/PipelineColumn/index.tsx", "../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", "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 type { FunctionComponent } from 'react';\nimport { CLASS_NAMES } from './constants';\n\nexport interface PipelineColumnProps {\n title: string;\n children?: JSX.Element | JSX.Element[];\n}\n\nconst PipelineColumn: FunctionComponent<PipelineColumnProps> = function ({\n title,\n children,\n}) {\n return (\n <div>\n <div className={CLASS_NAMES.title}>{title}</div>\n <div className={CLASS_NAMES.items}>{children}</div>\n </div>\n );\n};\n\nexport default PipelineColumn;\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 highlighted?: boolean;\n}\n\nconst SimpleCompanyCard: FunctionComponent<SimpleCompanyCardProps> = function ({\n name,\n signedUpDate,\n highlighted = false,\n}) {\n return (\n <Card className={highlighted ? 'bg-blue-100' : ''}>\n <div className=\"flex flex-col gap-y-2\">\n <Text text={name} className=\"text-16-20-em\" />\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", "CLASS_NAMES", "jsx", "jsxs", "PipelineColumn", "title", "children", "CLASS_NAMES", "PipelineColumn_default", "Card", "Text", "TimeAgo", "jsx", "jsxs", "SimpleCompanyCard", "name", "signedUpDate", "highlighted", "SimpleCompanyCard_default", "Text", "CLASS_NAMES", "jsx", "jsxs", "NotFoundPage", "CLASS_NAMES", "Text", "NotFoundPage_default"]
7
7
  }
package/dist/library.css CHANGED
@@ -1008,14 +1008,6 @@ video {
1008
1008
  margin-bottom: auto;
1009
1009
  }
1010
1010
 
1011
- .mb-10 {
1012
- margin-bottom: 40px;
1013
- }
1014
-
1015
- .mb-8 {
1016
- margin-bottom: 32px;
1017
- }
1018
-
1019
1011
  .mb-4 {
1020
1012
  margin-bottom: 16px;
1021
1013
  }
@@ -1024,6 +1016,14 @@ video {
1024
1016
  margin-top: 16px;
1025
1017
  }
1026
1018
 
1019
+ .mb-10 {
1020
+ margin-bottom: 40px;
1021
+ }
1022
+
1023
+ .mb-8 {
1024
+ margin-bottom: 32px;
1025
+ }
1026
+
1027
1027
  .mt-10 {
1028
1028
  margin-top: 40px;
1029
1029
  }
@@ -1072,6 +1072,17 @@ video {
1072
1072
  display: none;
1073
1073
  }
1074
1074
 
1075
+ .h-screen {
1076
+ height: 100vh;
1077
+ }
1078
+
1079
+ @supports (-webkit-touch-callout: none) {
1080
+
1081
+ .h-screen {
1082
+ height: -webkit-fill-available;
1083
+ }
1084
+ }
1085
+
1075
1086
  .h-14 {
1076
1087
  height: 56px;
1077
1088
  }
@@ -1088,6 +1099,10 @@ video {
1088
1099
  height: 36px;
1089
1100
  }
1090
1101
 
1102
+ .w-screen {
1103
+ width: 100vw;
1104
+ }
1105
+
1091
1106
  .w-full {
1092
1107
  width: 100%;
1093
1108
  }
@@ -1274,14 +1289,19 @@ video {
1274
1289
  color: rgb(127 131 255 / var(--tw-text-opacity));
1275
1290
  }
1276
1291
 
1277
- .text-neutral-600 {
1292
+ .text-neutral-900 {
1278
1293
  --tw-text-opacity: 1;
1279
- color: rgb(108 129 157 / var(--tw-text-opacity));
1294
+ color: rgb(13 27 46 / var(--tw-text-opacity));
1280
1295
  }
1281
1296
 
1282
- .text-neutral-900 {
1297
+ .text-neutral-700 {
1283
1298
  --tw-text-opacity: 1;
1284
- color: rgb(13 27 46 / var(--tw-text-opacity));
1299
+ color: rgb(71 90 118 / var(--tw-text-opacity));
1300
+ }
1301
+
1302
+ .text-neutral-600 {
1303
+ --tw-text-opacity: 1;
1304
+ color: rgb(108 129 157 / var(--tw-text-opacity));
1285
1305
  }
1286
1306
 
1287
1307
  .text-neutral-500 {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kanda-libs/ks-design-library-new",
3
- "version": "0.0.20",
3
+ "version": "0.0.22",
4
4
  "description": "Kanda design components library",
5
5
  "main": "dist/index.esm.mjs",
6
6
  "module": "dist/index.esm.mjs",
@@ -101,6 +101,7 @@
101
101
  "dependencies": {
102
102
  "@kanda-libs/ks-amplitude-provider": "^0.0.7",
103
103
  "@kanda-libs/ks-design-library": "^0.2.60",
104
+ "@types/react-pdf": "^6.2.0",
104
105
  "@types/react-table": "^7.7.14",
105
106
  "file-saver": "^2.0.5",
106
107
  "fuse.js": "^6.6.2",
@@ -109,6 +110,7 @@
109
110
  "react-image": "^4.0.3",
110
111
  "react-loading-skeleton": "^3.1.0",
111
112
  "react-number-format": "^4.6.4",
113
+ "react-pdf": "^5.7.2",
112
114
  "react-table": "^7.7.14",
113
115
  "react-teleporter": "^3.0.2",
114
116
  "react-toastify": "^9.0.8",
@@ -0,0 +1,3 @@
1
+ export const CLASS_NAMES = {
2
+ container: 'w-screen h-screen flex flex-col justify-center items-center',
3
+ };
@@ -0,0 +1,14 @@
1
+ import { Text } from '@kanda-libs/ks-design-library';
2
+ import type { FunctionComponent } from 'react';
3
+ import { CLASS_NAMES } from './constants';
4
+
5
+ const NotFoundPage: FunctionComponent = function () {
6
+ return (
7
+ <div className={CLASS_NAMES.container}>
8
+ <Text text="404" className="mb-4 text-28-32-em text-neutral-900" />
9
+ <Text text="Page not found" className="text-20-24 text-neutral-700" />
10
+ </div>
11
+ );
12
+ };
13
+
14
+ export default NotFoundPage;
@@ -0,0 +1,35 @@
1
+ import { FunctionComponent, useEffect } from 'react';
2
+ import { Document, Page, pdfjs } from 'react-pdf';
3
+ import usePdf from './usePdf';
4
+
5
+ // This sucks, but so does react-pdf's typescript support
6
+ const DocumentTag = Document as unknown as FunctionComponent<any>;
7
+
8
+ export interface PdfProps {
9
+ content?: string;
10
+ }
11
+
12
+ const Pdf: FunctionComponent<PdfProps> = function ({ content }) {
13
+ const { pdfProps, pages, showContent } = usePdf(content);
14
+
15
+ useEffect(() => {
16
+ pdfjs.GlobalWorkerOptions.workerSrc = `https://cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.js`;
17
+ }, []);
18
+
19
+ if (!showContent) {
20
+ return <></>;
21
+ }
22
+
23
+ return (
24
+ <DocumentTag {...pdfProps}>
25
+ {pages &&
26
+ pages.map((page) => (
27
+ <>
28
+ <Page {...page} />
29
+ </>
30
+ ))}
31
+ </DocumentTag>
32
+ );
33
+ };
34
+
35
+ export default Pdf;
@@ -0,0 +1,80 @@
1
+ import { useToast } from '@kanda-libs/ks-design-library';
2
+ import { useCallback, useMemo, useState } from 'react';
3
+
4
+ export interface PdfPage {
5
+ key: string;
6
+ pageNumber: number;
7
+ className: string;
8
+ }
9
+
10
+ export interface PdfOnLoadSuccessArgs {
11
+ numPages: number;
12
+ }
13
+
14
+ export interface PdfOnLoadErrorArgs {
15
+ message: string;
16
+ }
17
+
18
+ export interface PdfHook {
19
+ pdfProps: {
20
+ file: string;
21
+ error: string;
22
+ onLoadSuccess: (args: PdfOnLoadSuccessArgs) => void;
23
+ onLoadError: (args: PdfOnLoadErrorArgs) => void;
24
+ onSourceError: (args: PdfOnLoadErrorArgs) => void;
25
+ } | null;
26
+ pages: PdfPage[] | null;
27
+ showContent: boolean;
28
+ }
29
+
30
+ export default function usePdf(content?: string): PdfHook {
31
+ const [pages, setPages] = useState<PdfPage[] | null>(null);
32
+
33
+ const { showError } = useToast();
34
+
35
+ const onLoadSuccess = useCallback(({ numPages }: PdfOnLoadSuccessArgs) => {
36
+ setPages(
37
+ [...Array(numPages).keys()].map((index) => ({
38
+ key: `page_${index + 1}`,
39
+ pageNumber: index + 1,
40
+ className: index !== 0 ? 'mt-4' : '',
41
+ })),
42
+ );
43
+ }, []);
44
+
45
+ const onLoadError = useCallback(
46
+ ({ message }: PdfOnLoadErrorArgs) =>
47
+ showError(
48
+ `Error loading document. Please contact Kanda. Error message: ${message}`,
49
+ ),
50
+ [showError],
51
+ );
52
+
53
+ const onSourceError = useCallback(
54
+ ({ message }: PdfOnLoadErrorArgs) =>
55
+ showError(
56
+ `Error retrieving document source. Please contact Kanda. Error message: ${message}`,
57
+ ),
58
+ [showError],
59
+ );
60
+
61
+ const pdfProps = useMemo(() => {
62
+ if (!content) return null;
63
+ return {
64
+ file: `data:application/pdf;base64,${content}`,
65
+ error:
66
+ 'Failed to load the PDF file. The file can still be downloaded by clicking the button below',
67
+ onLoadSuccess,
68
+ onLoadError,
69
+ onSourceError,
70
+ };
71
+ }, [content, onLoadSuccess, onLoadError, onSourceError]);
72
+
73
+ const showContent = !!(pdfProps && !!content);
74
+
75
+ return {
76
+ pdfProps,
77
+ pages,
78
+ showContent,
79
+ };
80
+ }
@@ -1,6 +1,8 @@
1
1
  export { default as AlertBanner } from './AlertBanner';
2
2
  export { default as Table } from './Table';
3
3
  export { default as SplashScreen } from './SplashScreen';
4
+ export { default as Pdf } from './Pdf';
4
5
  export { default as Pipeline } from './Pipeline';
5
6
  export { default as PipelineColumn } from './Pipeline/PipelineColumn';
6
7
  export { default as SimpleCompanyCard } from './SimpleCompanyCard';
8
+ export { default as NotFoundPage } from './NotFoundPage';
@@ -1008,14 +1008,6 @@ video {
1008
1008
  margin-bottom: auto;
1009
1009
  }
1010
1010
 
1011
- .mb-10 {
1012
- margin-bottom: 40px;
1013
- }
1014
-
1015
- .mb-8 {
1016
- margin-bottom: 32px;
1017
- }
1018
-
1019
1011
  .mb-4 {
1020
1012
  margin-bottom: 16px;
1021
1013
  }
@@ -1024,6 +1016,14 @@ video {
1024
1016
  margin-top: 16px;
1025
1017
  }
1026
1018
 
1019
+ .mb-10 {
1020
+ margin-bottom: 40px;
1021
+ }
1022
+
1023
+ .mb-8 {
1024
+ margin-bottom: 32px;
1025
+ }
1026
+
1027
1027
  .mt-10 {
1028
1028
  margin-top: 40px;
1029
1029
  }
@@ -1072,6 +1072,17 @@ video {
1072
1072
  display: none;
1073
1073
  }
1074
1074
 
1075
+ .h-screen {
1076
+ height: 100vh;
1077
+ }
1078
+
1079
+ @supports (-webkit-touch-callout: none) {
1080
+
1081
+ .h-screen {
1082
+ height: -webkit-fill-available;
1083
+ }
1084
+ }
1085
+
1075
1086
  .h-14 {
1076
1087
  height: 56px;
1077
1088
  }
@@ -1088,6 +1099,10 @@ video {
1088
1099
  height: 36px;
1089
1100
  }
1090
1101
 
1102
+ .w-screen {
1103
+ width: 100vw;
1104
+ }
1105
+
1091
1106
  .w-full {
1092
1107
  width: 100%;
1093
1108
  }
@@ -1274,14 +1289,19 @@ video {
1274
1289
  color: rgb(127 131 255 / var(--tw-text-opacity));
1275
1290
  }
1276
1291
 
1277
- .text-neutral-600 {
1292
+ .text-neutral-900 {
1278
1293
  --tw-text-opacity: 1;
1279
- color: rgb(108 129 157 / var(--tw-text-opacity));
1294
+ color: rgb(13 27 46 / var(--tw-text-opacity));
1280
1295
  }
1281
1296
 
1282
- .text-neutral-900 {
1297
+ .text-neutral-700 {
1283
1298
  --tw-text-opacity: 1;
1284
- color: rgb(13 27 46 / var(--tw-text-opacity));
1299
+ color: rgb(71 90 118 / var(--tw-text-opacity));
1300
+ }
1301
+
1302
+ .text-neutral-600 {
1303
+ --tw-text-opacity: 1;
1304
+ color: rgb(108 129 157 / var(--tw-text-opacity));
1285
1305
  }
1286
1306
 
1287
1307
  .text-neutral-500 {