# Integrations

Configure Iconify preloading, Expressive Code, and package manager tabs.

import { Card, CardGrid } from '@prosefly/astro-components';

Lotus includes integrations for icons, syntax highlighting, image galleries,
and package-manager command tabs.

<CardGrid>
  <Card icon="lucide:sparkles" title="Iconify" href="#iconify">
    Preload icon data used by the theme, MDX components, theme config, and
    static `Icon` usage.
  </Card>
  <Card icon="lucide:code-2" title="Expressive Code" href="#expressive-code">
    Render syntax-highlighted code blocks with frames, copy buttons, markers,
    and theme-aware styling.
  </Card>
  <Card icon="lucide:terminal" title="Package Manager Tabs" href="#package-manager-tabs">
    Turn recognized npm and Python install commands into synchronized tabbed
    command blocks.
  </Card>
  <Card icon="lucide:images" title="Image Galleries" href="#image-galleries">
    Transform Markdown image-only paragraphs into responsive gallery figures.
  </Card>
</CardGrid>

## Iconify

Lotus installs the `@prosefly/astro-components/icon` integration internally.
It preloads icons used by Lotus, icons used by Prosefly components, theme config
icons, and static `<Icon name="...">` usage in Astro and MDX files.

```ts
iconify: {
  apiBase: 'https://api.iconify.design',
  preload: ['lucide:sparkles'],
  scan: true,
}
```

Use `preload` for icons that cannot be detected statically.

Set `scan: false` when a project wants only explicit preload names.

## Expressive Code

Expressive Code is enabled by default.

```ts
expressiveCode: {
  defaultProps: {
    showLineNumbers: false,
  },
}
```

Lotus configures light and dark Shiki themes, line numbers, copy button styling,
and code frame styling to match the theme tokens.

Disable Expressive Code when a project should use Astro's built-in Shiki
renderer.

```ts
expressiveCode: false
```

## Package Manager Tabs

Lotus enables the Prosefly package-manager tabs remark plugin by default. It
turns recognized install commands into tabbed command blocks.

```ts
packageManagerTabs: false
```

Set `packageManagerTabs` to `false` to keep package-manager commands as normal
code blocks.

## Image Galleries

Lotus also installs the Prosefly image gallery rehype plugin. Paragraphs that
contain only Markdown images are transformed into responsive gallery figures.

See [Images](/docs/essentials/images/) for authoring details.

## Component Overrides

Use `components` to replace selected Lotus theme components. See
[Overriding Components](/docs/customization/overriding-components/) for the
complete override surface and examples.
