> ## Documentation Index
> Fetch the complete documentation index at: https://docs.megaport.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Sending Feedback

> This help topic describes how to provide feedback.

export const Video = ({url, text, duration, description}) => {
  const errorPrefix = '\x1b[31;1;4mERROR\x1b[0m: Video -';
  if (typeof url !== 'string') {
    url = String(url);
  }
  if (typeof text !== 'string') {
    text = String(text);
  }
  if (!url || url === 'undefined') {
    console.error(`${errorPrefix} the \`url\` property is required — rendering an empty string instead`);
    return <></>;
  }
  if (!text || text === 'undefined') {
    console.error(`${errorPrefix} the \`text\` property is required — rendering an empty string instead`);
    return <></>;
  }
  const youtubeIconMask = "url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 576 512'%3E%3Cpath d='M549.7 124.1c-6.3-23.7-24.8-42.3-48.3-48.6C458.8 64 288 64 288 64S117.2 64 74.6 75.5c-23.5 6.3-42 24.9-48.3 48.6-11.4 42.9-11.4 132.3-11.4 132.3s0 89.4 11.4 132.3c6.3 23.7 24.8 41.5 48.3 47.8C117.2 448 288 448 288 448s170.8 0 213.4-11.5c23.5-6.3 42-24.2 48.3-47.8 11.4-42.9 11.4-132.3 11.4-132.3s0-89.4-11.4-132.3zM232 336V176l142.7 80z'/%3E%3C/svg%3E\")";
  return <div className="video-callout">
      <div className="callout my-4 flex gap-3 overflow-hidden rounded-2xl border px-5 py-4">
        <div className="mt-0.5 w-4 shrink-0" data-component-part="callout-icon">
          <svg aria-hidden="true" className="size-4 shrink-0" style={{
    WebkitMaskImage: youtubeIconMask,
    maskImage: youtubeIconMask,
    WebkitMaskRepeat: 'no-repeat',
    maskRepeat: 'no-repeat',
    WebkitMaskPosition: 'center',
    maskPosition: 'center',
    backgroundColor: '#0284c7'
  }} />
        </div>
        <div className="min-w-0 w-full text-sm" data-component-part="callout-content">
          <strong>
            Video:{' '}
            <a href={url} target="_blank" rel="noopener noreferrer">
              {text}
              <span className="sr-only"> (opens in a new tab)</span>
            </a>
          </strong>
          {}
          {duration && <> ({duration})</>}
          {}
          {description && <p className="mt-1 mb-0 text-xs text-gray-500 dark:text-gray-400">
              {description}
            </p>}
        </div>
      </div>
    </div>;
};

export const InlineImage = ({src, alt, height = 16, shadow, width}) => {
  const errorPrefix = '\x1b[31;1;4mERROR\x1b[0m: InlineImage -';
  if (typeof src !== 'string') {
    src = String(src);
  }
  if (!src || src === 'undefined') {
    console.error(`${errorPrefix} \`src\` is required — rendering an empty string instead`);
    return <></>;
  }
  if (typeof alt !== 'string') {
    alt = String(alt);
  }
  if (alt === 'undefined') {
    console.error(`${errorPrefix} \`alt\` is required (use "" for decorative images) — rendering an empty string instead`);
    return <></>;
  }
  if (height) {
    height = height.toString().replaceAll(/\D/g, '');
  }
  if (width) {
    width = width.toString().replaceAll(/\D/g, '');
  }
  return <img className={['inline-icon', shadow ? 'shadow' : null, 'm-0'].filter(Boolean).join(' ')} src={src} alt={alt} height={height} width={width} style={{
    display: 'inline',
    verticalAlign: 'middle',
    maxHeight: height ? `${height}px` : undefined,
    maxWidth: width ? `${width}px` : undefined,
    height: height ? `${height}px` : undefined,
    width: width ? `${width}px` : undefined
  }} />;
};

export const Link = ({href, children}) => {
  const errorPrefix = '\x1b[31;1;4mERROR\x1b[0m: Link -';
  if (typeof href !== 'string') {
    href = String(href);
  }
  if (!href || href === 'undefined') {
    console.error(`${errorPrefix} the \`href\` property is required — rendering an empty string instead`);
    return <></>;
  }
  if (href.includes('{') || href.toUpperCase().includes('%7B')) {
    console.error(`${errorPrefix} could not resolve a variable in href "${href}" — rendering an empty string instead`);
    return <></>;
  }
  const isExternal = (/^https?:\/\//).test(href);
  return <a href={href} className="link" target={isExternal ? '_blank' : undefined} rel={isExternal ? 'noreferrer' : undefined}>
      {children ?? href}
      {isExternal && <span className="sr-only"> (opens in a new tab)</span>}
    </a>;
};

At Megaport, we value your feedback. Your insights and suggestions help us continually improve our services and better meet your needs. Every feedback item is carefully reviewed and considered by our team, ensuring that your voice directly influences our decisions and actions.

Whether it's a suggestion for a new feature, a comment on our current services, or a report of an issue, we want to hear from you. We are open to all feedback and are committed to responding to your needs effectively.

Follow these steps to provide feedback or click below to watch a quick demo.

<Video url="https://youtu.be/B9EIiErl4QI" text="Sending Feedback" duration="0:26" description="This video shows how to send feedback to Megaport directly from the Megaport Portal." />

**To send feedback**

1. Log in to the <Link href="https://portal.megaport.com">Megaport Portal</Link>.
2. Choose <InlineImage src="/images/support/help-icon.png" alt="Help & Support icon" height={24} /> (Help & Support) > Send Feedback.
3. Submit your feedback.
   * Fill out the **Send Feedback** form with your comments, suggestions, or concerns.
   * Click **Submit** to send your feedback directly to the Megaport leadership team.

Your feedback is invaluable to us, and we appreciate you taking the time to share your thoughts.
