// These exports are folds `IconSrc` callbacks — `(filled?: boolean) => // JSX.Element` — that the folds `` component invokes as `src(filled)` // to populate the inner SVG content. They are NOT React components (they // are never mounted via JSX as ``), so the // `react/function-component-definition` rule's "use a function // declaration" guidance is misapplied here. /* eslint-disable react/function-component-definition */ // Custom call-control icon set, drawn to match the design-system style // captured in `docs/design/new-direct-messages-design/project/shared.jsx` // (lines 4-19): 24×24 viewBox, stroke-only (no fill), 1.6px stroke weight // for handset/mic/video glyphs, round line joins/caps, currentColor — so // the same icons read consistently across the green/red/neutral variant // flips of the IncomingCallStrip / CallControl buttons. // // Folds' `Icon` component owns the outer `` (viewBox=0 0 24 24, // fill=none, sizing class via the `size` prop). An `IconSrc` therefore // returns only the inner shapes — same convention as the stock // `Icons.*` table (see folds/dist/index.js Icons block). // // `filled` is intentionally ignored: this is an outline icon family, // the muted/active distinction is carried by the diagonal slash plus // the button's variant color, not by an alternate filled shape. import React from 'react'; import { IconSrc } from 'folds'; const STROKE = { stroke: 'currentColor', strokeWidth: 1.6, strokeLinecap: 'round' as const, strokeLinejoin: 'round' as const, fill: 'none', }; // Slightly heavier than the body strokes so the «muted» indicator // reads as a deliberate cancellation rather than ornamentation. const SLASH = { ...STROKE, strokeWidth: 2, }; export const CallMicIcon: IconSrc = () => ( <> ); export const CallMicMuteIcon: IconSrc = () => ( <> ); export const CallHeadphoneIcon: IconSrc = () => ( <> ); export const CallHeadphoneMuteIcon: IconSrc = () => ( <> ); export const CallVideoIcon: IconSrc = () => ( <> ); export const CallVideoMuteIcon: IconSrc = () => ( <> ); export const CallScreenShareIcon: IconSrc = () => ( <> ); // Screenshare-off carries the same slash convention as the other muted // glyphs so the on/off state has both a shape cue and a variant cue — // matters for high-contrast / monochrome modes where the // Success-vs-Surface variant flip alone is too subtle. export const CallScreenShareMuteIcon: IconSrc = () => ( <> ); // Classic «pick up» handset, used on the IncomingCallStrip Answer // button. Kept upright (no rotation) so it reads as «receive call». export const CallPhoneIcon: IconSrc = () => ( ); // Same handset rotated 135° — universal «hang up / decline» glyph // (handset tilted off the cradle). Reused for Decline (IncomingCallStrip) // and Hangup (CallControl). export const CallPhoneDownIcon: IconSrc = () => ( );