@redocly/asyncapi-docs
Version:
Async API docs for Redocly Realm
40 lines (37 loc) • 1.7 kB
JavaScript
import{jsx as o,Fragment as c,jsxs as a}from"react/jsx-runtime";import{memo as d,useCallback as m}from"react";import r from"styled-components";import{DownloadIcon as p,DocumentIcon as f,JsonIcon as w,Button as x,FileIcon as b}from"@redocly/theme";import{useDownloadInfo as u}from"@redocly/openapi-docs";import{useAtomValue as g}from"jotai";import{downloadUrlsAtom as h}from"../jotai/app";function v(){const s=g(h),n=u({downloadUrls:s}),i=m(e=>{switch(e){case"yaml":return o(f,{});case"json":return o(w,{});default:return o(b,{})}},[]);return n?o(k,{children:(n||[]).map(({title:e,url:t,iconType:l})=>a(y,{children:[a(j,{children:[i(l),o("a",{href:t,target:"_blank",download:!0,rel:"noreferrer",children:e})]}),o("a",{href:t,target:"_blank",download:!0,rel:"noreferrer",children:o(x,{variant:"text",size:"small",icon:o(p,{})})})]},e))}):o(c,{})}const S=d(v),y=r.div`
display: flex;
align-items: baseline;
justify-content: space-between;
width: 100%;
border-bottom: 1px solid var(--border-color-secondary);
padding-bottom: var(--spacing-sm);
:last-of-type {
padding-bottom: 0px;
border-bottom: none;
}
`,j=r.span`
display: flex;
width: calc(100% - 25px);
gap: var(--spacing-xs);
align-items: center;
svg {
flex-shrink: 0;
}
a {
width: 100%;
color: var(--text-color-primary);
word-break: break-word;
text-decoration: none;
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
}
`,k=r.div`
display: flex;
align-items: center;
align-self: flex-start;
justify-content: space-between;
flex-direction: column;
gap: var(--spacing-sm);
font-size: var(--font-size-base);
`;export{S as DownloadSpecification};