proto-badges for type flags

This commit is contained in:
Xanazf 2024-10-18 00:52:02 +03:00
parent eeb2b46f76
commit 87955bdda3
Signed by: Xanazf
GPG key ID: 4E4A5AD1FB748427
4 changed files with 88 additions and 67 deletions

View file

@ -47,10 +47,11 @@ const NavComponent: Component<NavProps> = props => {
} }
}; };
onMount(() => {}); onMount(() => {
onCleanup(() => { onCleanup(() => {
window.removeEventListener("click", handleClickOutside); window.removeEventListener("click", handleClickOutside);
}); });
});
createEffect(() => { createEffect(() => {
if (open()) { if (open()) {

View file

@ -40,10 +40,11 @@ const TableOfContents: Component<TOCProps> = props => {
} }
}; };
onMount(() => {}); onMount(() => {
onCleanup(() => { onCleanup(() => {
window.removeEventListener("click", handleClickOutside); window.removeEventListener("click", handleClickOutside);
}); });
});
createEffect(() => { createEffect(() => {
if (open()) { if (open()) {

View file

@ -37,7 +37,8 @@ const { propsKeys, propsData } = Astro.props;
} }
return ( return (
<li id={ item } class="typedata-root typeprop-root"> <li id={ item } class="typedata-root typeprop-root">
<p class="typedata-name typeprop-name"> <div class="typedata-title typeprop-title">
<section class="typedata-name typeprop-name">
<Tag client:idle/> <Tag client:idle/>
{ item }<span class="type-datatype">:&nbsp;<a { item }<span class="type-datatype">:&nbsp;<a
href={typeLink} href={typeLink}
@ -46,7 +47,7 @@ const { propsKeys, propsData } = Astro.props;
href={genericTypeLink}>{genericType}</a href={genericTypeLink}>{genericType}</a
><span class="type-datatype">&gt;</span> ><span class="type-datatype">&gt;</span>
)}</span> )}</span>
</p> </section>
{ {
propData.flags && propData.flags.length > 0 ? ( propData.flags && propData.flags.length > 0 ? (
<p class="type-flags"> <p class="type-flags">
@ -63,6 +64,7 @@ const { propsKeys, propsData } = Astro.props;
</p> </p>
) : null ) : null
} }
</div>
{ {
gadget ? ( gadget ? (
<p class="typedata-params typefunc-params"> <p class="typedata-params typefunc-params">

View file

@ -31,12 +31,10 @@
left: 0; left: 0;
width: 100%; width: 100%;
height: 1px; height: 1px;
background: linear-gradient( background: linear-gradient(90deg,
90deg,
transparent 25%, transparent 25%,
hsla(var(--accent-500) / 0.88) 50%, hsla(var(--accent-500) / 0.88) 50%,
transparent 75% transparent 75%);
);
} }
} }
} }
@ -102,10 +100,13 @@
padding: 0.8rem; padding: 0.8rem;
transition: border 0.3s; transition: border 0.3s;
& > .typedata-name { & .typedata-title {
margin-bottom: 1.618rem;
& .typedata-name {
font-size: 1.272rem;
display: flex; display: flex;
align-items: center; align-items: center;
font-size: 1.272rem;
margin: 0; margin: 0;
& svg { & svg {
@ -114,6 +115,26 @@
margin-right: 0.3em; margin-right: 0.3em;
} }
} }
& .type-flags {
display: flex;
flex-flow: row nowrap;
gap: 0.517rem;
font-size: 0.815rem;
margin: 0;
& .type-flag {
padding-inline: 6px;
padding-block: 3px;
display: flex;
align-items: center;
gap: 0.117rem;
color: hsl(var(--inner-param-color));
border: 1px solid hsl(var(--inner-param-color));
border-radius: 5px;
}
}
}
} }
& .typedata-details { & .typedata-details {
@ -206,17 +227,6 @@
} }
} }
.type-flags {
& .type-flag {
margin: 0;
margin-top: 0.272rem;
display: flex;
align-items: center;
gap: 0.117rem;
color: hsl(var(--inner-param-color));
}
}
.typeprops { .typeprops {
& .typeprop-root { & .typeprop-root {
border: 1px solid hsla(var(--prop-color) / 0.6); border: 1px solid hsla(var(--prop-color) / 0.6);
@ -239,7 +249,8 @@ html.dark .typeprops {
& .typeprop-root { & .typeprop-root {
border: 1px solid hsla(var(--prop-color) / 0.3); border: 1px solid hsla(var(--prop-color) / 0.3);
&:hover, &:target { &:hover,
&:target {
border: 1px solid hsla(var(--prop-color) / 0.6); border: 1px solid hsla(var(--prop-color) / 0.6);
} }
} }
@ -281,7 +292,8 @@ html.dark .typefuncs {
& .typefunc-root { & .typefunc-root {
border: 1px solid hsla(var(--func-color) / 0.3); border: 1px solid hsla(var(--func-color) / 0.3);
&:hover, &:target { &:hover,
&:target {
border: 1px solid hsla(var(--func-color) / 0.6); border: 1px solid hsla(var(--func-color) / 0.6);
} }
} }
@ -333,7 +345,8 @@ html.dark .typesignals {
& .typesignal-root { & .typesignal-root {
border: 1px solid hsla(var(--signal-color) / 0.3); border: 1px solid hsla(var(--signal-color) / 0.3);
&:hover, &:target { &:hover,
&:target {
border: 1px solid hsla(var(--signal-color) / 0.6); border: 1px solid hsla(var(--signal-color) / 0.6);
} }
} }
@ -371,7 +384,8 @@ html.dark .typevariants {
& .typevariant-root { & .typevariant-root {
border: 1px solid hsla(var(--var-color) / 0.3); border: 1px solid hsla(var(--var-color) / 0.3);
&:hover, &:target { &:hover,
&:target {
border: 1px solid hsla(var(--var-color) / 0.6); border: 1px solid hsla(var(--var-color) / 0.6);
} }
} }
@ -389,11 +403,9 @@ html.dark .typevariants {
&::before { &::before {
width: 0; width: 0;
background: linear-gradient( background: linear-gradient(to right,
to right,
hsla(var(--accent-400) / 0.5) var(--percent), hsla(var(--accent-400) / 0.5) var(--percent),
hsla(var(--accent-400) / 0) 100% hsla(var(--accent-400) / 0) 100%);
);
animation: percentToZero 250ms ease-in-out forwards; animation: percentToZero 250ms ease-in-out forwards;
transition: width 0.25s ease-in-out; transition: width 0.25s ease-in-out;
} }
@ -414,6 +426,11 @@ html.dark .typevariants {
.typedocs-content { .typedocs-content {
margin-inline: 1.272rem; margin-inline: 1.272rem;
& .typedata-title {
display: flex;
justify-content: space-between;
}
& section { & section {
min-width: 30svw; min-width: 30svw;
} }