///|
/// Public façade: every component is re-exported here so callers use a
/// single import (`@sumi.button`, `@sumi.select`, …) while the
/// implementation stays organized in category packages. When adding a
/// component, add it to the matching `pub using` block — the committed
/// `pkg.generated.mbti` snapshot will flag a missing entry.

///|
pub using @primitives {
  add_tile,
  avatar,
  badge,
  button,
  credits,
  favorite_toggle,
  icon,
  icon_adjust,
  icon_adjust_fill,
  icon_align_left,
  icon_at,
  icon_caret_down,
  icon_arrow_down,
  icon_arrow_up,
  icon_arrow_up_fill,
  icon_button,
  icon_chat_history,
  icon_check,
  icon_check_fill,
  icon_check_fill_large,
  icon_chevron_down,
  icon_chevron_down_fill,
  icon_chevron_left,
  icon_chevron_right,
  icon_chevron_right_fill,
  icon_chevron_up,
  icon_chevron_up_fill,
  icon_clock,
  icon_close_circle,
  icon_copy,
  icon_crop,
  icon_delete,
  icon_download,
  icon_draw,
  icon_edit,
  icon_element,
  icon_expand,
  icon_folder,
  icon_fullscreen_alt,
  icon_grid,
  icon_group,
  icon_image,
  icon_image_fill,
  icon_important,
  icon_info_circle_fill,
  icon_layers,
  icon_minus,
  icon_more,
  icon_new_conversation,
  icon_play,
  icon_plus,
  icon_plus_fill,
  icon_ratio,
  icon_reset,
  icon_scissors,
  icon_search,
  icon_skill,
  icon_slash,
  icon_sparkle_fill,
  icon_sound,
  icon_sparkle,
  icon_star,
  icon_star_fill,
  icon_stop_fill,
  icon_target,
  icon_text,
  icon_tick_circle_fill,
  icon_timeline,
  icon_upload,
  icon_upload_fill,
  icon_video,
  icon_x,
  icon_x_fill,
  kbd,
  media_tag,
  result_chip,
  spinner,
  tag,
  type ButtonSize,
  type ButtonVariant,
  type MediaTagKind,
  type MediaTagState,
  type MediaTagVariant,
  type ResultChipSize,
  type TagVariant,
}

///|
pub using @feedback {
  alert,
  empty_state,
  progress,
  shimmer_text,
  skeleton,
  skeleton_lines,
  skeleton_tile,
  status_badge,
  tool_call_row,
  type AlertVariant,
  type StatusBadgeState,
  type ToolCallState,
}

///|
pub using @layout {
  card,
  chat_bubble,
  card_section,
  divider,
  pagination,
  session_divider,
  session_header,
  session_item,
  session_list,
  session_status,
  session_title,
  md_text,
  generation_meta,
  shortcuts_panel,
  tabs,
  task_card,
  task_list,
  toolbar,
  toolbar_divider,
  type SessionStatus,
  type MdTextKind,
  type ShortcutItem,
  type ShortcutSection,
  type TabEntry,
}

///|
pub using @forms {
  agent_input,
  agent_tool_button,
  attachment_strip,
  hitl_card,
  editable_text,
  action_chip,
  checkbox,
  chip,
  chip_panel,
  input,
  prompt_box,
  segmented,
  select,
  send_button,
  skill_chip,
  slider,
  slider_field,
  stepper,
  switch,
  textarea,
  type AttachmentItem,
  type AttachmentKind,
  type HitlItem,
  type SegmentedItem,
  type SelectVariant,
  type SkillMark,
}

///|
pub using @overlays {
  checkbox_menu,
  context_menu,
  dialog,
  dropdown_menu,
  menu_chevron,
  popover,
  toast,
  tooltip,
  type CheckboxMenuGroup,
  type CheckboxMenuItem,
  type MenuAlign,
  type MenuEntry,
  type MenuItem,
  type MenuSide,
  type ToastVariant,
  type TooltipSide,
}