@helioviewer/event-tree
Version:
A react component for grouping and listing and selecting solar events.
128 lines (120 loc) • 3.97 kB
JSX
import React from "react";
/**
* Minimal SVG caret pointing down.
*/
export function CaretDown(props) {
return (
<svg viewBox="0 0 16 16" width="16" height="16" fill="currentColor" xmlns="http://www.w3.org/2000/svg" {...props}>
<path d="M4 6l4 4 4-4H4z" />
</svg>
);
}
/**
* Minimal SVG caret pointing right.
*/
export function CaretRight(props) {
return (
<svg viewBox="0 0 16 16" width="16" height="16" fill="currentColor" xmlns="http://www.w3.org/2000/svg" {...props}>
<path d="M6 4l4 4-4 4V4z" />
</svg>
);
}
/**
* Locate/Crosshair icon (similar to Material "gps_fixed").
*/
export function HideEmptyResourcesIcon(props) {
return (
<svg viewBox="0 0 24 24" width="24" height="24" fill="currentColor" xmlns="http://www.w3.org/2000/svg" {...props}>
<path
d="M12 8c-2.21 0-4 1.79-4 4s1.79
4 4 4 4-1.79 4-4-1.79-4
-4-4zm8 4c0-3.86-3.14-7-7-7V2h-2v3c-3.86
0-7 3.14-7 7s3.14 7 7 7v3h2v-3c3.86
0 7-3.14 7-7z"
/>
</svg>
);
}
/**
* Eye (visibility) icon (typical "eye" shape).
*/
export function ShowMarkersIcon(props) {
return (
<svg viewBox="0 0 24 24" width="24" height="24" fill="currentColor" xmlns="http://www.w3.org/2000/svg" {...props}>
<path
d="M12 4.5C7 4.5 2.73 7.61 1
12c1.73 4.39 6 7.5 11 7.5s9.27-3.11
11-7.5c-1.73-4.39-6-7.5-11-7.5zm0
12.5c-2.48 0-4.5-2.02-4.5-4.5S9.52
8 12 8s4.5 2.02 4.5 4.5S14.48 17
12 17zm0-7c-1.38 0-2.5 1.12-2.5
2.5S10.62 15 12 15s2.5-1.12
2.5-2.5S13.38 10 12 10z"
/>
</svg>
);
}
/**
* Tag (label/price tag) icon (similar to Material "local_offer").
*/
export function ShowLabelsIcon(props) {
return (
<svg viewBox="0 0 24 24" width="24" height="24" fill="currentColor" xmlns="http://www.w3.org/2000/svg" {...props}>
<path
d="M21.41 11.58l-9-9C12.23
2.21 11.62 2 11 2H4c-1.1
0-2 .9-2 2v7c0 .62.21 1.23.59
1.7l9 9c.78.78 2.05.78 2.83
0l6.99-6.99c.79-.78.79-2.05.01
-2.83zM6.5 7C5.67 7 5 6.33 5
5.5S5.67 4 6.5 4 8 4.67 8
5.5 7.33 7 6.5 7z"
/>
</svg>
);
}
// White, narrow right-facing triangle icon component
export const EnabledTriangle = ({ width = "11", height = "11", fill = "white", viewBox = "0 0 16 16", ...props }) => {
return (
<svg xmlns="http://www.w3.org/2000/svg" width={width} height={height} viewBox={viewBox} {...props}>
<polygon points="4,4 12,10 4,16" fill={fill} />
</svg>
);
};
// Gray right-angled triangle icon component
export const DisabledTriangle = ({ width = "6", height = "6", fill = "#999", viewBox = "0 0 16 16", ...props }) => {
return (
<svg xmlns="http://www.w3.org/2000/svg" width={width} height={height} viewBox={viewBox} {...props}>
<polygon points="0,16 16,16 16,0" fill={fill} />
</svg>
);
};
export const LoadingIcon = ({ size = 13, strokeWidth = 2, color = "#666", className = "", ...props }) => {
// The radius of the circle: (size - strokeWidth) / 2
const radius = (size - strokeWidth) / 2;
const center = size / 2;
return (
<svg width={size} height={size} viewBox={`0 0 ${size} ${size}`} className={className} {...props}>
<circle
cx={center}
cy={center}
r={radius}
fill="none"
stroke={color}
strokeWidth={strokeWidth}
strokeLinecap="round"
strokeDasharray={`${Math.PI * 2 * radius * 0.75} ${Math.PI * 2 * radius}`}
transform={`rotate(-90 ${center} ${center})`}
>
<animateTransform
attributeName="transform"
type="rotate"
from={`0 ${center} ${center}`}
to={`360 ${center} ${center}`}
dur="1s"
repeatCount="indefinite"
/>
</circle>
</svg>
);
};