# ProfileCard

> A person's account card (avatar, name, role, presence, local time, team, quick actions) that opens from any avatar, name or mention on hover, focus or tap, plus the mention chip and presence dot it is built from.

Source: https://docs.nasaqui.com/components/profile-card

## Install

```bash
npx shadcn@latest add https://docs.nasaqui.com/r/profile-card.json
```

One card for a person, used everywhere a person shows up. `ProfileCard` is the card itself. `ProfileHoverCard` wraps any
avatar, name or `@mention` so the card opens from it. `MentionChip` and `MentionText` render `@name` in saved text. `UserMenu`
and `MembersManager` reuse the same card, so a person looks the same in the menu, in lists and in comments.

## When to use

- A person's name or avatar appears in a list, comment, activity feed or table and you want a peek without leaving.
- Showing saved text that contains mentions.
- A presence indicator next to an avatar.

## When not to use

- A full profile page: link to it with `onViewProfile`.
- A team or group: `MentionChip` shows them with an icon and no card.

## Import

```tsx
import { MentionChip, MentionText, PresenceAvatar, ProfileCard, ProfileHoverCard } from "@fadymondy/nasaq/web";
// inside this monorepo: "@nasaq/web"
```

## Quick start

```tsx
import { Avatar, ProfileHoverCard, type PersonProfile } from "@fadymondy/nasaq/web";

const sara: PersonProfile = { id: "u1", name: "Sara Nasser", handle: "sara", role: "Design lead", presence: "online", timeZone: "Asia/Riyadh", teams: ["Design"] };

export function Author() {
  return (
    <ProfileHoverCard person={sara} onMessage={(p) => openChat(p.id)} onViewProfile={(p) => go(`/people/${p.id}`)}>
      <a href="/people/u1">Sara Nasser</a>
    </ProfileHoverCard>
  );
}

declare function openChat(id: string): void;
declare function go(path: string): void;
```

## Anatomy

```
ProfileHoverCard                      trigger + card
└─ ProfileCard        data-slot="profile-card"
   ├─ PresenceAvatar  avatar with a PresenceDot
   ├─ name, @handle, role, status text
   ├─ local time and how far apart you are
   ├─ team badges
   └─ Message · Mention · View profile   (only the ones you pass)
MentionChip / MentionText             inline @name
```

## API

**PersonProfile**: `{ id, name, handle?, email?, avatar?, role?, presence?, statusText?, timeZone?, teams?, location? }`.
`presence` is `online`, `away`, `busy` or `offline`.

**ProfileCard**: `div` props plus `person`, `viewerTimeZone` (default the browser's), `now` (freeze the clock), `onMessage`,
`onMention`, `onViewProfile` (each adds its button), `children` (extra content) and `labels`.

**ProfileHoverCard**: everything above plus `children` (the trigger), `delay` (300), `closeDelay` (150), `side`, `align`, `className`.

**PresenceDot / PresenceAvatar**: `presence`, `decorative`, `labels`. An avatar plus a dot, sized with `size`.

**MentionChip**: `name`, `kind` (`person`, `team`, `group`), `person` (opens the card), the action callbacks.

**MentionText**: `text`, `mentions` (from `MentionTextarea`), `resolve(id)` giving `{ person?, kind? }`, the action callbacks.

Pure helpers (`isTimeZone`, `offsetFrom`, `localTimeLabel`, `isNightIn`, `describeOffset`, `presenceRank`) are exported too.

## Examples

**Saved comment with mention chips**

```tsx
import { MentionText, type PersonProfile } from "@fadymondy/nasaq/web";

declare const people: Record<string, PersonProfile>;

export const Comment = () => (
  <MentionText
    text="Thanks @Sara, looping in @Design"
    mentions={[
      { id: "u1", name: "Sara", start: 7, end: 12 },
      { id: "t1", name: "Design", start: 25, end: 32 },
    ]}
    resolve={(id) => (id === "t1" ? { kind: "team" } : { person: people[id] })}
  />
);
```

## Accessibility

- Opens on hover, keyboard focus and tap. Escape closes it. The trigger stays a real link or button.
- Presence is never colour alone: each state has a different shape (offline is a hollow ring) and text for screen readers.
- Local time uses Latin digits so it reads the same in every locale.

## RTL & i18n

- English and Arabic are built in and follow the Nasaq locale; pass `labels` to override.
- The card mirrors with logical spacing. Emails and handles stay left to right inside `<bdi>`.

## Styling & tokens

- Tokens only. Built from `HoverCard`, `Avatar`, `Badge` and `Button`.

## Do / Don't

- Do pass the viewer's time zone when you know it, for an accurate "3 h ahead".
- Do give the trigger a real link when the person has a profile page.
- Don't show a card for a team: use the chip's icon.
- Don't rely on presence colour alone in your own UI.

## Related

- [`hover-card`](https://docs.nasaqui.com/components/hover-card)
- [`mention-textarea`](https://docs.nasaqui.com/components/mention-textarea)
- [`user-menu`](https://docs.nasaqui.com/components/user-menu)
- [`members-manager`](https://docs.nasaqui.com/components/members-manager)

## Lab

https://docs.nasaqui.com/?path=/docs/components-account-profile-card--docs

## Code

### React

```tsx
import { Avatar, ProfileHoverCard, type PersonProfile } from "@fadymondy/nasaq/web";

const sara: PersonProfile = { id: "u1", name: "Sara Nasser", handle: "sara", role: "Design lead", presence: "online", timeZone: "Asia/Riyadh", teams: ["Design"] };

export function Author() {
  return (
    <ProfileHoverCard person={sara} onMessage={(p) => openChat(p.id)} onViewProfile={(p) => go(`/people/${p.id}`)}>
      <a href="/people/u1">Sara Nasser</a>
    </ProfileHoverCard>
  );
}

declare function openChat(id: string): void;
declare function go(path: string): void;
```

### shadcn

```tsx
import { Avatar } from "@/components/ui/avatar";
import { ProfileHoverCard, type PersonProfile } from "@/components/ui/profile-card";

const sara: PersonProfile = { id: "u1", name: "Sara Nasser", handle: "sara", role: "Design lead", presence: "online", timeZone: "Asia/Riyadh", teams: ["Design"] };

export function Author() {
  return (
    <ProfileHoverCard person={sara} onMessage={(p) => openChat(p.id)} onViewProfile={(p) => go(`/people/${p.id}`)}>
      <a href="/people/u1">Sara Nasser</a>
    </ProfileHoverCard>
  );
}

declare function openChat(id: string): void;
declare function go(path: string): void;
```

### Vue

```vue
<script setup lang="ts">
import { NqProfileHoverCard, type PersonProfile } from "@fadymondy/nasaq/vue";

const sara: PersonProfile = { id: "u1", name: "Sara Nasser", handle: "sara", role: "Design lead", presence: "online", timeZone: "Asia/Riyadh", teams: ["Design"] };
const openChat = (id: string) => console.log("message", id);
const go = (path: string) => console.log("go", path);
</script>

<template>
  <NqProfileHoverCard :person="sara" @message="(p) => openChat(p.id)" @view-profile="(p) => go(`/people/${p.id}`)">
    <a href="/people/u1">Sara Nasser</a>
  </NqProfileHoverCard>
</template>
```

### Blade

```blade
@php
    $sara = ['id' => 'u1', 'name' => 'Sara Nasser', 'handle' => 'sara', 'role' => 'Design lead', 'presence' => 'online', 'statusText' => 'In a meeting until 3', 'timeZone' => 'Asia/Riyadh', 'teams' => ['Design', 'Brand']];
    $omar = ['id' => 'u2', 'name' => 'Omar Haddad', 'role' => 'Engineer', 'presence' => 'away', 'timeZone' => 'America/New_York', 'email' => 'omar@example.com'];
    $now = '2026-01-15 12:00:00 UTC';
@endphp
<div class="flex flex-col gap-6">
    <x-nq::profile-card.hover-card :person="$sara" :now="$now" viewer-time-zone="UTC" message view-profile>Sara Nasser</x-nq::profile-card.hover-card>

    <div class="w-80 rounded-floating border border-border bg-popover p-4">
        <x-nq::profile-card :person="$omar" :now="$now" viewer-time-zone="UTC" message mention view-profile />
    </div>

    <x-nq::profile-card.mention-text
        text="Thanks @Sara Nasser, and cc @Design"
        :mentions="[['id' => 'u1', 'name' => 'Sara Nasser', 'start' => 7, 'end' => 19], ['id' => 'design', 'name' => 'Design', 'start' => 28, 'end' => 35]]"
        :resolve="['u1' => $sara, 'design' => ['kind' => 'team']]"
        :now="$now"
        viewer-time-zone="UTC"
    />
</div>
```

### HTML + Alpine

```html
<div class="flex flex-col gap-6">
    <div data-slot="profile-hover-card" x-data="nqProfileHoverCard(300, 150, false)" class="contents">
    <button x-ref="trigger" x-bind="trigger"
         type="button"         data-slot="profile-hover-card-trigger">Sara Nasser</button>
    <template x-teleport="body">
        <div data-slot="profile-hover-card-content" role="dialog" aria-label="Profile of Sara Nasser"
            x-bind="popup" x-nq-presence="open" x-anchor.bottom-start.offset.6="$refs.trigger"
            class="z-50 w-80 max-w-[var(--available-width)] rounded-floating border border-border bg-popover p-4 text-body-sm text-popover-foreground shadow-floating outline-none transition-opacity duration-150 ease-nq data-starting-style:opacity-0 data-ending-style:opacity-0">
            <div data-slot="profile-card"  data-presence="online"  class="flex min-w-0 flex-col gap-3 text-start">
    <div class="flex items-start gap-3">
        <span data-slot="presence-avatar" class="relative inline-flex shrink-0">
    <span data-slot="avatar" x-data="nqAvatar(0)"
    class="inline-flex shrink-0 select-none items-center justify-center overflow-hidden bg-secondary align-middle font-medium text-secondary-foreground size-10 text-label rounded-full">
                    <span data-slot="avatar-fallback" class="flex size-full items-center justify-center" x-bind="fallback"
             role="img" aria-label="Sara Nasser" >SN</span>
    </span>
            <span data-slot="presence-dot" data-presence="online"
     role="img" aria-label="Online"     class="inline-block size-2.5 shrink-0 rounded-full bg-nq-success absolute -end-0.5 -bottom-0.5 border-2 border-popover"></span>
    </span>
        <div class="flex min-w-0 flex-1 flex-col">
            <p class="truncate text-label text-foreground">Sara Nasser</p>
            <bdi dir="ltr" class="truncate text-caption text-muted-foreground">@sara</bdi>            <p class="truncate text-caption text-muted-foreground">Design lead</p>        </div>
    </div>
    <dl class="m-0 flex flex-col gap-1.5 text-caption text-muted-foreground">
                    <div class="flex items-center gap-2">
                <dt class="sr-only">Online</dt>
                <dd class="m-0 flex min-w-0 items-center gap-2">
                    <span data-slot="presence-dot" data-presence="online"
     aria-hidden="true"     class="inline-block size-2.5 shrink-0 rounded-full bg-nq-success"></span>
                    <span class="truncate text-foreground">In a meeting until 3</span>
                </dd>
            </div>
                            <div class="flex items-baseline gap-2">
                <dt class="sr-only">Local time</dt>
                <dd class="m-0 flex min-w-0 flex-wrap items-baseline gap-x-2">
                    <span dir="ltr" class="text-foreground tabular-nums">3:00 PM</span>
                    <span>3h ahead of you</span>
                </dd>
            </div>
                            <div class="flex items-center gap-2">
                <dt class="sr-only">Teams</dt>
                <dd class="m-0 flex min-w-0 items-center gap-2">
                    <svg aria-hidden="true" class="size-3.5 shrink-0" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  <path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"/>
  <path d="M16 3.128a4 4 0 0 1 0 7.744"/>
  <path d="M22 21v-2a4 4 0 0 0-3-3.87"/>
  <circle cx="9" cy="7" r="4"/>
</svg>                    <span class="truncate">Design · Brand</span>
                </dd>
            </div>
                    </dl>
            <div data-slot="profile-card-actions" class="flex flex-wrap gap-2">
                            <button data-slot="button"
     type="button"                         data-id="u1" x-on:click="$dispatch(`nq-message`, { id: $el.dataset.id })" class="inline-flex shrink-0 select-none items-center justify-center gap-2 whitespace-nowrap rounded-control border border-transparent font-sans text-label transition-colors duration-150 ease-nq min-h-[var(--nq-touch-min,0px)] outline-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-nq-focus disabled:pointer-events-none disabled:opacity-50 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 bg-primary text-primary-foreground hover:bg-[color-mix(in_oklab,var(--nq-action)_88%,var(--nq-fg))] h-control-sm px-2.5">
        <svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  <path d="M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z"/>
</svg>                    Message</button>
                                                    <button data-slot="button"
     type="button"                         data-id="u1" x-on:click="$dispatch(`nq-view-profile`, { id: $el.dataset.id })" class="inline-flex shrink-0 select-none items-center justify-center gap-2 whitespace-nowrap rounded-control border border-transparent font-sans text-label transition-colors duration-150 ease-nq min-h-[var(--nq-touch-min,0px)] outline-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-nq-focus disabled:pointer-events-none disabled:opacity-50 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 text-foreground hover:bg-nq-hover h-control-sm px-2.5">
        <svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  <circle cx="12" cy="8" r="5"/>
  <path d="M20 21a8 8 0 0 0-16 0"/>
</svg>                    View profile</button>
                    </div>
    </div>
        </div>
    </template>
</div>
    <div class="w-80 rounded-floating border border-border bg-popover p-4">
        <div data-slot="profile-card"  data-presence="away"  class="flex min-w-0 flex-col gap-3 text-start">
    <div class="flex items-start gap-3">
        <span data-slot="presence-avatar" class="relative inline-flex shrink-0">
    <span data-slot="avatar" x-data="nqAvatar(0)"
    class="inline-flex shrink-0 select-none items-center justify-center overflow-hidden bg-secondary align-middle font-medium text-secondary-foreground size-10 text-label rounded-full">
                    <span data-slot="avatar-fallback" class="flex size-full items-center justify-center" x-bind="fallback"
             role="img" aria-label="Omar Haddad" >OH</span>
    </span>
            <span data-slot="presence-dot" data-presence="away"
     role="img" aria-label="Away"     class="inline-block size-2.5 shrink-0 rounded-full bg-nq-warning absolute -end-0.5 -bottom-0.5 border-2 border-popover"></span>
    </span>
        <div class="flex min-w-0 flex-1 flex-col">
            <p class="truncate text-label text-foreground">Omar Haddad</p>
                        <p class="truncate text-caption text-muted-foreground">Engineer</p>        </div>
    </div>
    <dl class="m-0 flex flex-col gap-1.5 text-caption text-muted-foreground">
                    <div class="flex items-center gap-2">
                <dt class="sr-only">Away</dt>
                <dd class="m-0 flex min-w-0 items-center gap-2">
                    <span data-slot="presence-dot" data-presence="away"
     aria-hidden="true"     class="inline-block size-2.5 shrink-0 rounded-full bg-nq-warning"></span>
                    <span class="truncate text-foreground">Away</span>
                </dd>
            </div>
                            <div class="flex items-baseline gap-2">
                <dt class="sr-only">Local time</dt>
                <dd class="m-0 flex min-w-0 flex-wrap items-baseline gap-x-2">
                    <span dir="ltr" class="text-foreground tabular-nums">7:00 AM</span>
                    <span>5h behind you</span>
                </dd>
            </div>
                                    <div>
                <dt class="sr-only">Email</dt>
                <dd class="m-0 truncate"><bdi dir="ltr">omar@example.com</bdi></dd>
            </div>
            </dl>
            <div data-slot="profile-card-actions" class="flex flex-wrap gap-2">
                            <button data-slot="button"
     type="button"                         data-id="u2" x-on:click="$dispatch(`nq-message`, { id: $el.dataset.id })" class="inline-flex shrink-0 select-none items-center justify-center gap-2 whitespace-nowrap rounded-control border border-transparent font-sans text-label transition-colors duration-150 ease-nq min-h-[var(--nq-touch-min,0px)] outline-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-nq-focus disabled:pointer-events-none disabled:opacity-50 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 bg-primary text-primary-foreground hover:bg-[color-mix(in_oklab,var(--nq-action)_88%,var(--nq-fg))] h-control-sm px-2.5">
        <svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  <path d="M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z"/>
</svg>                    Message</button>
                                        <button data-slot="button"
     type="button"                         data-id="u2" x-on:click="$dispatch(`nq-mention`, { id: $el.dataset.id })" class="inline-flex shrink-0 select-none items-center justify-center gap-2 whitespace-nowrap rounded-control border font-sans text-label transition-colors duration-150 ease-nq min-h-[var(--nq-touch-min,0px)] outline-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-nq-focus disabled:pointer-events-none disabled:opacity-50 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 border-border bg-card text-foreground hover:bg-nq-hover h-control-sm px-2.5">
        <svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  <circle cx="12" cy="12" r="4"/>
  <path d="M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-4 8"/>
</svg>                    Mention</button>
                                        <button data-slot="button"
     type="button"                         data-id="u2" x-on:click="$dispatch(`nq-view-profile`, { id: $el.dataset.id })" class="inline-flex shrink-0 select-none items-center justify-center gap-2 whitespace-nowrap rounded-control border border-transparent font-sans text-label transition-colors duration-150 ease-nq min-h-[var(--nq-touch-min,0px)] outline-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-nq-focus disabled:pointer-events-none disabled:opacity-50 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 text-foreground hover:bg-nq-hover h-control-sm px-2.5">
        <svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  <circle cx="12" cy="8" r="5"/>
  <path d="M20 21a8 8 0 0 0-16 0"/>
</svg>                    View profile</button>
                    </div>
    </div>
    </div>
    <p data-slot="mention-text" class="whitespace-pre-wrap text-body text-foreground">
            <span>Thanks </span>                                    <div data-slot="profile-hover-card" x-data="nqProfileHoverCard(300, 150, false)" class="contents">
    <span x-ref="trigger" x-bind="trigger"
         tabindex="0" role="button"         data-slot="mention-chip" class="inline-flex max-w-full items-center gap-1 rounded-control bg-nq-selected px-1.5 py-px align-baseline text-body-sm font-medium text-foreground outline-none [&amp;_svg]:size-3.5 [&amp;_svg]:shrink-0 cursor-pointer hover:bg-nq-hover focus-visible:outline-2 focus-visible:outline-nq-focus" data-kind="person"><span class="truncate">@Sara Nasser</span></span>
    <template x-teleport="body">
        <div data-slot="profile-hover-card-content" role="dialog" aria-label="Profile of Sara Nasser"
            x-bind="popup" x-nq-presence="open" x-anchor.bottom-start.offset.6="$refs.trigger"
            class="z-50 w-80 max-w-[var(--available-width)] rounded-floating border border-border bg-popover p-4 text-body-sm text-popover-foreground shadow-floating outline-none transition-opacity duration-150 ease-nq data-starting-style:opacity-0 data-ending-style:opacity-0">
            <div data-slot="profile-card"  data-presence="online"  class="flex min-w-0 flex-col gap-3 text-start">
    <div class="flex items-start gap-3">
        <span data-slot="presence-avatar" class="relative inline-flex shrink-0">
    <span data-slot="avatar" x-data="nqAvatar(0)"
    class="inline-flex shrink-0 select-none items-center justify-center overflow-hidden bg-secondary align-middle font-medium text-secondary-foreground size-10 text-label rounded-full">
                    <span data-slot="avatar-fallback" class="flex size-full items-center justify-center" x-bind="fallback"
             role="img" aria-label="Sara Nasser" >SN</span>
    </span>
            <span data-slot="presence-dot" data-presence="online"
     role="img" aria-label="Online"     class="inline-block size-2.5 shrink-0 rounded-full bg-nq-success absolute -end-0.5 -bottom-0.5 border-2 border-popover"></span>
    </span>
        <div class="flex min-w-0 flex-1 flex-col">
            <p class="truncate text-label text-foreground">Sara Nasser</p>
            <bdi dir="ltr" class="truncate text-caption text-muted-foreground">@sara</bdi>            <p class="truncate text-caption text-muted-foreground">Design lead</p>        </div>
    </div>
    <dl class="m-0 flex flex-col gap-1.5 text-caption text-muted-foreground">
                    <div class="flex items-center gap-2">
                <dt class="sr-only">Online</dt>
                <dd class="m-0 flex min-w-0 items-center gap-2">
                    <span data-slot="presence-dot" data-presence="online"
     aria-hidden="true"     class="inline-block size-2.5 shrink-0 rounded-full bg-nq-success"></span>
                    <span class="truncate text-foreground">In a meeting until 3</span>
                </dd>
            </div>
                            <div class="flex items-baseline gap-2">
                <dt class="sr-only">Local time</dt>
                <dd class="m-0 flex min-w-0 flex-wrap items-baseline gap-x-2">
                    <span dir="ltr" class="text-foreground tabular-nums">3:00 PM</span>
                    <span>3h ahead of you</span>
                </dd>
            </div>
                            <div class="flex items-center gap-2">
                <dt class="sr-only">Teams</dt>
                <dd class="m-0 flex min-w-0 items-center gap-2">
                    <svg aria-hidden="true" class="size-3.5 shrink-0" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  <path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"/>
  <path d="M16 3.128a4 4 0 0 1 0 7.744"/>
  <path d="M22 21v-2a4 4 0 0 0-3-3.87"/>
  <circle cx="9" cy="7" r="4"/>
</svg>                    <span class="truncate">Design · Brand</span>
                </dd>
            </div>
                    </dl>
    </div>
        </div>
    </template>
</div>
                    <span>, and cc </span>                                    <span data-slot="mention-chip" data-kind="team" class="inline-flex max-w-full items-center gap-1 rounded-control bg-nq-selected px-1.5 py-px align-baseline text-body-sm font-medium text-foreground outline-none [&_svg]:size-3.5 [&_svg]:shrink-0">
        <svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  <path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"/>
  <path d="M16 3.128a4 4 0 0 1 0 7.744"/>
  <path d="M22 21v-2a4 4 0 0 0-3-3.87"/>
  <circle cx="9" cy="7" r="4"/>
</svg>        <span class="truncate">@Design</span>
    </span>
            </p>
</div>
```
