cosmemilton-ui/clientFeedback & overlays

CmPortal / CmPortalPanel

Use para superficies flutuantes customizadas quando os componentes prontos nao cobrem o caso.

Import

tsx
import { CmPortal } from "cosmemilton-ui/client";

Painel em portal

tsx
"use client";

import { useState } from "react";
import { CmButton, CmPortal, CmPortalPanel } from "cosmemilton-ui/client";
import { CmStack, CmText } from "cosmemilton-ui/server";

export default function Example() {
  const [open, setOpen] = useState(false);

  return (
    <>
      <CmButton variant="outline" onClick={() => setOpen((value) => !value)}>
        Alternar painel
      </CmButton>
      {open ? (
        <CmPortal>
          <CmPortalPanel placement="bottom-end" width={280}>
            <CmStack gap="xs">
              <CmText weight="semibold">Painel em portal</CmText>
              <CmText tone="muted">Renderizado fora da hierarquia local.</CmText>
            </CmStack>
          </CmPortalPanel>
        </CmPortal>
      ) : null}
    </>
  );
}

API rapida

CmPortal

children

CmPortalPanel

placementoffsetwidthmaxWidthzIndex