PageSourceSearch

https://fairdataihub.org/_next/static/immutable/chunks/1e1vhb4mc9mne.js

js fairdataihub.org collected 2026-09-25 18:51:43 UTC 20,238 bytes, 9 lines download raw bytes

1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,43202,e=>{"use strict";var t=e.i(18008),r=e.i(87652),o=e.i(81955),a=e.i(92017),n=e.i(13317),i=e.i(72231),s=e.i(7059),l=r,c=e.i(51274);function u(e,t){if("function"==typeof e)return e(t);null!=e&&(e.current=t)}class d extends l.Component{getSnapshotBeforeUpdate(e){let t=this.props.childRef.current;if((0,s.isHTMLElement)(t)&&e.isPresent&&!this.props.isPresent&&!1!==this.props.pop){let e=t.offsetParent,r=(0,s.isHTMLElement)(e)&&e.offsetWidth||0,o=(0,s.isHTMLElement)(e)&&e.offsetHeight||0,a=getComputedStyle(t),n=this.props.sizeRef.current;n.height=parseFloat(a.height),n.width=parseFloat(a.width),n.top=t.offsetTop,n.left=t.offsetLeft,n.right=r-n.width-n.left,n.bottom=o-n.height-n.top}return null}componentDidUpdate(){}render(){return this.props.children}}function p({children:e,isPresent:o,anchorX:a,anchorY:n,root:i,pop:s}){let f=(0,l.useId)(),m=(0,l.useRef)(null),h=(0,l.useRef)({width:0,height:0,top:0,left:0,right:0,bottom:0}),{nonce:g}=(0,l.useContext)(c.MotionConfigContext),x=function(...e){return r.useCallback(function(...e){return t=>{let r=!1,o=e.map(e=>{let o=u(e,t);return r||"function"!=typeof o||(r=!0),o});if(r)return()=>{for(let t=0;t<o.length;t++){let r=o[t];"function"==typeof r?r():u(e[t],null)}}}}(...e),e)}(m,e.props?.ref??e?.ref);return(0,l.useInsertionEffect)(()=>{let{width:e,height:t,top:r,left:l,right:c,bottom:u}=h.current;if(o||!1===s||!m.current||!e||!t)return;let d="left"===a?`left: ${l}`:`right: ${c}`,p="bottom"===n?`bottom: ${u}`:`top: ${r}`;m.current.dataset.motionPopId=f;let x=document.createElement("style");g&&(x.nonce=g);let b=i??document.head;return b.appendChild(x),x.sheet&&x.sheet.insertRule(`
2          [data-motion-pop-id="${f}"] {
3            position: absolute !important;
4            width: ${e}px !important;
5            height: ${t}px !important;
6            ${d}px !important;
7            ${p}px !important;
8          }
9        `),()=>{m.current?.removeAttribute("data-motion-pop-id"),b.contains(x)&&b.removeChild(x)}},[o]),(0,t.jsx)(d,{isPresent:o,childRef:m,sizeRef:h,pop:s,children:!1===s?e:l.cloneElement(e,{ref:x})})}let f=({children:e,initial:o,isPresent:n,onExitComplete:s,custom:l,presenceAffectsLayout:c,mode:u,anchorX:d,anchorY:f,root:h})=>{let g=(0,a.useConstant)(m),x=(0,r.useId)(),b=!0,y=(0,r.useMemo)(()=>(b=!1,{id:x,initial:o,isPresent:n,custom:l,onExitComplete:e=>{for(let t of(g.set(e,!0),g.values()))if(!t)return;s&&s()},register:e=>(g.set(e,!1),()=>g.delete(e))}),[n,g,s]);return c&&b&&(y={...y}),(0,r.useMemo)(()=>{g.forEach((e,t)=>g.set(t,!1))},[n]),r.useEffect(()=>{n||g.size||!s||s()},[n]),e=(0,t.jsx)(p,{pop:"popLayout"===u,isPresent:n,anchorX:d,anchorY:f,root:h,children:e}),(0,t.jsx)(i.PresenceContext.Provider,{value:y,children:e})};function m(){return new Map}var h=e.i(31798);let g=e=>e.key||"";function x(e){let t=[];return r.Children.forEach(e,e=>{(0,r.isValidElement)(e)&&t.push(e)}),t}e.s(["AnimatePresence",0,({children:e,custom:i,initial:s=!0,onExitComplete:l,presenceAffectsLayout:c=!0,mode:u="sync",propagate:d=!1,anchorX:p="left",anchorY:m="top",root:b})=>{let[y,v]=(0,h.usePresence)(d),R=(0,r.useMemo)(()=>x(e),[e]),P=d&&!y?[]:R.map(g),w=(0,r.useRef)(!0),j=(0,r.useRef)(R),A=(0,a.useConstant)(()=>new Map),C=(0,r.useRef)(new Set),[_,S]=(0,r.useState)(R),[E,O]=(0,r.useState)(R);(0,n.useIsomorphicLayoutEffect)(()=>{w.current=!1,j.current=R;for(let e=0;e<E.length;e++){let t=g(E[e]);P.includes(t)?(A.delete(t),C.current.delete(t)):!0!==A.get(t)&&A.set(t,!1)}},[E,P.length,P.join("-")]);let k=[];if(R!==_){let e=[...R];for(let t=0;t<E.length;t++){let r=E[t],o=g(r);P.includes(o)||(e.splice(t,0,r),k.push(r))}return"wait"===u&&k.length&&(e=k),O(x(e)),S(R),null}let{forceRender:N}=(0,r.useContext)(o.LayoutGroupContext);return(0,t.jsx)(t.Fragment,{children:E.map(e=>{let r=g(e),o=(!d||!!y)&&(R===E||P.includes(r));return(0,t.jsx)(f,{isPresent:o,initial:(!w.current||!!s)&&void 0,custom:i,presenceAffectsLayout:c,mode:u,root:b,onExitComplete:o?void 0:()=>{if(C.current.has(r)||!A.has(r))return;C.current.add(r),A.set(r,!0);let e=!0;A.forEach(t=>{t||(e=!1)}),e&&(N?.(),O(j.current),d&&v?.(),l&&l())},anchorX:p,anchorY:m,children:e},r)})})}],43202)},28175,(e,t,r)=>{"use strict";
9Object.defineProperty(r,"__esModule",{value:!0});var o={HTTPAccessErrorStatus:function(){return n},HTTP_ERROR_FALLBACK_ERROR_CODE:function(){return s},getAccessFallbackErrorTypeByStatus:function(){return u},getAccessFallbackHTTPStatus:function(){return c},isHTTPAccessFallbackError:function(){return l}};for(var a in o)Object.defineProperty(r,a,{enumerable:!0,get:o[a]});let n={NOT_FOUND:404,FORBIDDEN:403,UNAUTHORIZED:401},i=new Set(Object.values(n)),s="NEXT_HTTP_ERROR_FALLBACK";function l(e){if("object"!=typeof e||null===e||!("digest"in e)||"string"!=typeof e.digest)return!1;let[t,r]=e.digest.split(";");return t===s&&i.has(Number(r))}function c(e){return Number(e.digest.split(";")[1])}function u(e){switch(e){case 401:return"unauthorized";case 403:return"forbidden";case 404:return"not-found";default:return}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},72359,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"isNextRouterError",{enumerable:!0,get:function(){return n}});let o=e.r(28175),a=e.r(65999);function n(e){return(0,a.isRedirectError)(e)||(0,o.isHTTPAccessFallbackError)(e)}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},44829,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ReadonlyURLSearchParams",{enumerable:!0,get:function(){return a}});class o extends Error{constructor(){super("Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams"),Object.defineProperty(this,"__NEXT_ERROR_CODE",{value:"E1174",enumerable:!1,configurable:!0})}}class a extends URLSearchParams{append(){throw new o}delete(){throw new o}set(){throw new o}sort(){throw new o}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},65999,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var o={REDIRECT_ERROR_CODE:function(){return i},isRedirectError:function(){return s}};for(var a in o)Object.defineProperty(r,a,{enumerable:!0,get:o[a]});let n=e.r(78),i="NEXT_REDIRECT";function s(e){if("object"!=typeof e||null===e||!("digest"in e)||"string"!=typeof e.digest)return!1;let t=e.digest.split(";"),[r,o]=t,a=t.slice(2,-2).join(";"),s=Number(t.at(-2));return r===i&&("replace"===o||"push"===o)&&"string"==typeof a&&!isNaN(s)&&s in n.RedirectStatusCode}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},78,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"RedirectStatusCode",{enumerable:!0,get:function(){return a}});var o,a=((o={})[o.SeeOther=303]="SeeOther",o[o.TemporaryRedirect=307]="TemporaryRedirect",o[o.PermanentRedirect=308]="PermanentRedirect",o);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},90958,e=>{e.v(t=>Promise.all(["static/immutable/chunks/0m_gh_bxj4scs.js"].map(t=>e.l(t))).then(()=>t(24997)))},78608,e=>{e.v(t=>Promise.all(["static/immutable/chunks/16xh73m3bisox.js"].map(t=>e.l(t))).then(()=>t(58982)))},12463,(e,t,r)=>{"use strict";e.i(89488),Object.defineProperty(r,"__esModule",{value:!0});var o={AppRouterContext:function(){return i},GlobalLayoutRouterContext:function(){return l},LayoutRouterContext:function(){return s},MissingSlotContext:function(){return u},TemplateContext:function(){return c}};for(var a in o)Object.defineProperty(r,a,{enumerable:!0,get:o[a]});let n=e.r(80763)._(e.r(87652)),i=n.default.createContext(null),s=n.default.createContext(null),l=n.default.createContext(null),c=n.default.createContext(null),u=n.default.createContext(new Set)},50678,(e,t,r)=>{"use strict";
9e.i(89488),Object.defineProperty(r,"__esModule",{value:!0});var o={NavigationPromisesContext:function(){return u},PathParamsContext:function(){return c},PathnameContext:function(){return l},ReadonlyURLSearchParams:function(){return i.ReadonlyURLSearchParams},SearchParamsContext:function(){return s},createDevToolsInstrumentedPromise:function(){return d}};for(var a in o)Object.defineProperty(r,a,{enumerable:!0,get:o[a]});let n=e.r(87652),i=e.r(44829),s=(0,n.createContext)(null),l=(0,n.createContext)(null),c=(0,n.createContext)(null),u=(0,n.createContext)(null);function d(e,t){let r=Promise.resolve(t);return r.status="fulfilled",r.value=t,r.displayName=`${e} (SSR)`,r}},16051,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var o={BailoutToCSRError:function(){return i},isBailoutToCSRError:function(){return s}};for(var a in o)Object.defineProperty(r,a,{enumerable:!0,get:o[a]});let n="BAILOUT_TO_CLIENT_SIDE_RENDERING";class i extends Error{constructor(e){super(`Bail out to client-side rendering: ${e}`),this.reason=e,this.digest=n}}function s(e){return"object"==typeof e&&null!==e&&"digest"in e&&e.digest===n}},10897,(e,t,r)=>{t.exports=[{slug:"/sodaforsparc",title:"SODA",subtitle:"Streamlined Organization of Data for the SPARC Portal",description:"SODA is a cross-platform desktop app that helps researchers prepare and share peripheral nervous system data and research in line with the SPARC Data Structure (SDS).",completed:!1,image:{src:"/images/hero/soda-app-macos.png",alt:"Screenshot of SODA for SPARC",contain:!0},badges:["Desktop","SPARC","Data Curation"]},{slug:"/aireadi",title:"AI-READI",subtitle:"AI-Ready and Exploratory Atlas for Diabetes Insights",description:"A Bridge2AI initiative where we lead the Tools module, developing FAIR-forward infrastructure across Data, Ethics, Standards, Teaming, Tools, and Skills.",completed:!1,image:{src:"/images/hero/aireadi-logo.png",alt:"AI-READI Logo",contain:!0},badges:["Platform","Standards","Guidelines"]},{slug:"/eyeact",title:"Eye ACT",description:"A study leveraging the Envision Portal to explore links between glaucoma, diabetic retinopathy, and early indicators of Alzheimer's by advancing FAIR data sharing and AI-driven research.",completed:!1,image:{src:"/images/hero/eye-act-logo.png",alt:"Eye ACT Logo",contain:!0},badges:["Platform","Standards","Guidelines"]},{slug:"/dmp-bridge",title:"DMP Bridge",description:"An open-source, AI-powered tool to convert PDF Data Management Plans (DMPs) into machine actionable ones.",completed:!1,image:{src:"/images/hero/dmp-bridge.png",alt:"DMP Bridge image",width:220,height:220,contain:!0},badges:["Tool","AI-Assisted","Workflows"]},{slug:"/posters-science",title:"Posters.science",completed:!1,description:"A free, open-source platform that turns conference posters into enduring, findable research assets. Transform fleeting conference moments into a searchable, citable knowledge base that amplifies research impact and accelerates scientific discovery.",image:{src:"/images/hero/posters-science-process.png",alt:"Posters.science process",contain:!0},badges:["Platform","Open Science","Discovery"]},{slug:"/fair-biors",title:"FAIR-BioRS Guidelines",description:"Minimal, actionable steps to make biomedical research software reusable, aligned with FAIR4RS principles. Reduce compliance overhead while maximizing software citations and fostering collaboration across research institutions.",completed:!0,image:{src:"https://fair-biors.org/img/logo.svg",alt:"FAIR-BioRS Logo",width:220,height:220,contain:!0},badges:["FAIR4RS","Guidelines","Publication"]},{slug:"/codefair",title:"Codefair",description:"An free automated GitHub App that helps make research software reusable and FAIR-aligned by surfacing license, metadata, documentation, and archival through Zenodo.",completed:!1,image:{src:"/images/hero/codefair-logo.png",alt:"Codefair Logo",contain:!0},badges:["FAIR","Automation","Zenodo"]},{slug:"/dmp-chef",title:"DMP Chef",description:"An open-source, AI-powered platform to draft funder-compliant Data Management Plans through guided, researcher-friendly workflows. With a few clicks, generate comprehensive DMPs that meet funding requirements and support FAIR data practices.",completed:!1,image:{src:"/images/dmp/dmp-chef-logo-transparent.svg",alt:"DMP Chef Logo",width:220,height:220,contain:!0},badges:["Platform","AI-Assisted","Workflows"]},{slug:"/fairshare",title:"FAIRshare",description:"A cross-platform desktop software that empowers researchers to effortlessly organize and share biomedical data and software according to applicable FAIR guidelines.",completed:!0,image:{src:"/images/hero/fairshare-macos.png",alt:"FAIRshare macOS screenshot",contain:!0},badges:["Desktop","FAIR","Biomedical"]},{slug:"/knowmore",title:"KnowMore",description:"An integrable tool for the SPARC Portal that reveals relationships, differences, and similarities between datasets to guide discovery.",completed:!0,image:{src:"https://github.com/SPARC-FAIR-Codeathon/KnowMore/raw/main/docs/kmlogo-with-text3.png",alt:"KnowMore Logo",width:280,height:120,contain:!0}
9,badges:["SPARC","Comparison","Insights"]},{slug:"/sparclink",title:"SPARClink",description:"Open tools to visualize how SPARC outputs influence the wider research community through linked publications and networks.",completed:!0,image:{src:"https://github.com/SPARC-FAIR-Codeathon/SPARClink/raw/main/docs/images/logo.svg",alt:"SPARClink Logo",width:220,height:220,contain:!0},badges:["Software","Visualization","SPARC"]},{slug:"/aqua",title:"AQUA",subtitle:"Advanced Query Architecture for the SPARC Portal",description:"Improving discovery on the SPARC Portal with richer, faster, more precise search capabilities.",completed:!0,image:{src:"/images/hero/aqua-logo-full.png",alt:"AQUA logo",contain:!0},badges:["Software","Search","SPARC"]}]},1678,e=>{"use strict";var t=e.i(18008),r=e.i(43202),o=e.i(85088),a=e.i(98981),n=e.i(2485),i=e.i(30679);function s({project:e}){let{slug:r,title:o,subtitle:l,description:c,image:u,badges:d}=e;return(0,t.jsx)(i.default,{href:r,className:"group block touch-manipulation focus:outline-none","aria-label":`${o} - open project`,children:(0,t.jsxs)("article",{className:"relative grid h-full min-h-112 overflow-hidden rounded-xl border border-stone-200 bg-white/90 shadow-sm transition-all duration-300 hover:border-pink-300",style:{gridTemplateRows:"auto 1fr"},children:[(0,t.jsxs)("div",{className:"relative h-44 w-full overflow-hidden bg-linear-to-b from-stone-50 to-white dark:from-stone-900 dark:to-stone-900",children:[(0,t.jsx)("div",{"aria-hidden":!0,className:"pointer-events-none absolute inset-0 opacity-0 transition-opacity duration-300 group-hover:opacity-100",children:(0,t.jsx)("div",{className:"absolute inset-0 bg-[radial-gradient(ellipse_at_center,rgba(0,0,0,0.08)_0%,rgba(0,0,0,0)_60%)]"})}),(0,t.jsx)("div",{className:"relative h-full w-full p-3",children:(0,t.jsx)(n.default,{src:u.src,alt:u.alt,fill:!0,sizes:"(min-width: 768px) 33vw, 100vw",className:"h-full w-full object-contain pt-4 scale-[.95] transform-gpu transition-transform duration-300 group-hover:scale-100 group-focus:scale-100",draggable:!1,priority:!1})})]}),(0,t.jsxs)("div",{className:"flex flex-1 flex-col gap-2 p-4",children:[(0,t.jsx)("h3",{className:"group-active:text-primary text-lg font-semibold text-stone-900 transition-colors group-hover:text-stone-950 dark:text-stone-100 dark:group-hover:text-white dark:group-active:text-white",children:o}),l&&(0,t.jsx)("p",{className:"text-sm font-medium text-stone-600 dar
9k:text-stone-300",children:l}),(0,t.jsx)("p",{className:"font-asap text-sm leading-6 text-stone-700 dark:text-stone-300",children:c}),!!d?.length&&(0,t.jsx)("div",{className:"mt-1 flex flex-wrap gap-1.5",children:d.map(e=>(0,t.jsx)("span",{className:"rounded border border-pink-300/70 bg-pink-50 px-2 py-0.5 text-[11px] text-pink-700 transition-colors group-hover:border-pink-400 group-active:border-pink-400 dark:border-stone-700 dark:text-stone-300",children:e},e))}),(0,t.jsx)("div",{className:"mt-auto flex pt-2",children:(0,t.jsxs)("div",{className:"relative ml-auto inline-flex items-center gap-2 pl-1",children:[(0,t.jsx)("span",{className:"group-hover:text-primary group-active:text-primary text-xs text-stone-500 transition-colors dark:text-stone-400",children:"Learn more"}),(0,t.jsx)(a.Icon,{icon:"solar:arrow-right-broken",className:"group-hover:text-primary group-active:text-primary h-4 w-4 transition-colors","aria-hidden":"true"}),(0,t.jsx)("span",{className:"bg-primary absolute -bottom-1 left-1/2 h-0.5 w-0 transition-all duration-300 group-hover:left-0 group-hover:w-full group-active:left-0 group-active:w-full"})]})})]})]})})}var l=e.i(16117),c=e.i(10897);e.s(["default",0,function(){let e=c.default,a=e.filter(e=>!e.completed),n=e.filter(e=>e.completed);return(0,t.jsxs)("div",{className:"relative pt-26",children:[(0,t.jsx)(l.default,{templateDescription:"Explore the projects we build at the FAIR Data Innovations Hub-modern, open-source tools and platforms that help researchers follow FAIR principles.",templateImage:"https://fairdataihub.org/thumbnails/index.png"}),(0,t.jsx)("div",{"aria-hidden":!0,className:"pointer-events-none fixed inset-0 -z-10",children:(0,t.jsx)("div",{className:"absolute top-0 left-1/2 h-[720px] w-[1000px] -translate-x-1/2 bg-[radial-gradient(ellipse_at_center,rgba(211,75,171,0.30),rgba(211,75,171,0.12)_40%,transparent_75%)] blur-3xl"})}),(0,t.jsxs)("section",{className:"container mx-auto max-w-screen-xl px-4 pt-8 pb-16",children:[(0,t.jsxs)(o.motion.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},transition:{duration:.4},className:"mb-8 flex flex-col items-start gap-2 sm:mb-10 sm:justify-between",children:[(0,t.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,t.jsx)("h1",{className:"text-4xl font-black tracking-tight text-pretty text-stone-900 sm:text-5xl dark:text-stone-100",children:"Our Projects"}),(0,t.jsx)("p",{className:"font-asap max-w-2xl text-lg text-stone-700 dark:text-stone-300",children:"Open-source tools and platforms that make FAIR a habit."})]}),(0,t.jsx)("div",{className:"via-primary/60 h-px w-full bg-gradient-to-r from-transparent to-transparent"})]}),(0,t.jsxs)(r.AnimatePresence,{mode:"popLayout",children:[(0,t.jsx)("h2",{className:"my-4 text-lg font-bold tracking-wider text-stone-600 uppercase underline underline-offset-5",children:"Ongoing"}),(0,t.jsx)(o.motion.ul,{layout:!0,className:"grid auto-rows-[1fr] grid-cols-1 content-start items-stretch gap-4 sm:grid-cols-2 lg:grid-cols-3",initial:!1,children:a.map((e,r)=>(0,t.jsx)(o.motion.li,{layout:!0,className:"h-full",initial:{opacity:0,y:10,scale:.98},animate:{opacity:1,y:0,scale:1},exit:{opacity:0,y:10,scale:.98},transition:{duration:.25,delay:.02*r},children:(0,t.jsx)(s,{project:e})},e.slug))}),(0,t.jsx)("h2",{className:"my-4 mt-24 text-lg font-bold tracking-wider text-stone-600 uppercase underline underline-offset-5",children:"Completed"}),(0,t.jsx)(o.motion.ul,{layout:!0,className:"grid auto-rows-[1fr] grid-cols-1 content-start items-stretch gap-4 sm:grid-cols-2 lg:grid-cols-3",initial:!1,children:n.map((e,r)=>(0,t.jsx)(o.motion.li,{layout:!0,className:"h-full",initial:{opacity:0,y:10,scale:.98},animate:{opacity:1,y:0,scale:1},exit:{opacity:0,y:10,scale:.98},transition:{duration:.25,delay:.02*r},children:(0,t.jsx)(s,{project:e})},e.slug))})]})]})]})}],1678)},91652,(e,t,r)=>{let o="/projects";(window.__NEXT_P=window.__NEXT_P||[]).push([o,()=>e.r(1678)]),t.hot&&t.hot.dispose(function(){window.__NEXT_P.push([o])})}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.