Skip to content

feat: add Apertis icon#269

Merged
canisminor1990 merged 2 commits into
lobehub:devfrom
theQuert:feat/add-apertis-icon
Mar 26, 2026
Merged

feat: add Apertis icon#269
canisminor1990 merged 2 commits into
lobehub:devfrom
theQuert:feat/add-apertis-icon

Conversation

@theQuert

@theQuert theQuert commented Mar 18, 2026

Copy link
Copy Markdown
Contributor

💻 变更类型 | Change Type

  • ✨ feat

🔀 变更说明 | Description of Change

Add icon package for Apertis (apertis.ai) — a unified API platform for 500+ AI models across 30+ providers.

Components:

  • Mono: Geometric "Stacked A" mark with crossbar cutout and depth-hinting back plane
  • Text: "Apertis" wordmark as SVG path
  • Avatar: Mono icon on Apertis Teal (#0d9488) background
  • Combine: Mono + Text horizontal lockup

Style:

  • COLOR_PRIMARY: #0d9488 (Apertis Teal)
  • AVATAR_BACKGROUND: #0d9488
  • AVATAR_COLOR: #fff

📝 补充信息 | Additional Information

The Stacked A logo represents multiple AI providers unified behind a single API — the layered depth effect is achieved with a separated back plane visible as a right-side sliver.

Follows the standard icon package structure (Mono, Text, Avatar, Combine, style.ts, index.ts, index.md).

Add Apertis (apertis.ai) — a unified API platform for 500+ AI models
across 30+ providers. Includes Mono, Text, Avatar, and Combine
components following the standard icon package structure.

Primary color: #0d9488 (Apertis Teal)
@sourcery-ai

sourcery-ai Bot commented Mar 18, 2026

Copy link
Copy Markdown
Contributor

Reviewer's Guide

Adds a new Apertis icon package that follows the existing icon architecture (Mono, Text, Avatar, Combine, style, index, docs) and wires it into the shared icon composition utilities with Apertis-specific sizing and color tokens.

Class diagram for the new Apertis icon package

classDiagram
  direction LR

  class IconType {
  }

  class IconCombineProps {
  }

  class IconAvatarProps {
  }

  class Mono {
    +Mono(props) JSXElement
  }

  class Text {
    +Text(props) JSXElement
  }

  class Avatar {
    +Avatar(props) JSXElement
  }

  class Combine {
    +Combine(props) JSXElement
  }

  class CompoundedIcon {
    +Avatar : typeof Avatar
    +Combine : typeof Combine
    +Text : typeof Text
    +colorPrimary : string
    +title : string
  }

  class Icons {
    +Text : typeof Text
    +Combine : typeof Combine
    +Avatar : typeof Avatar
    +colorPrimary : string
    +title : string
  }

  class IconCombine {
    +IconCombine(props) JSXElement
  }

  class IconAvatar {
    +IconAvatar(props) JSXElement
  }

  class StyleConstants {
    +TITLE : string
    +COMBINE_TEXT_MULTIPLE : number
    +COMBINE_SPACE_MULTIPLE : number
    +COLOR_PRIMARY : string
    +AVATAR_BACKGROUND : string
    +AVATAR_COLOR : string
    +AVATAR_ICON_MULTIPLE : number
  }

  Mono ..|> IconType
  Text ..|> IconType

  Combine --> Mono : uses as Icon
  Combine --> Text : uses as Text
  Combine --> IconCombine : wraps
  Combine --> StyleConstants : COMBINE_TEXT_MULTIPLE, COMBINE_SPACE_MULTIPLE, TITLE

  Avatar --> Mono : uses as Icon
  Avatar --> IconAvatar : wraps
  Avatar --> StyleConstants : AVATAR_BACKGROUND, AVATAR_COLOR, AVATAR_ICON_MULTIPLE, TITLE

  Mono --> StyleConstants : TITLE
  Text --> StyleConstants : TITLE

  CompoundedIcon <|-- Icons
  Icons .. Mono
  Icons --> Avatar
  Icons --> Combine
  Icons --> Text
  Icons --> StyleConstants : COLOR_PRIMARY, TITLE
Loading

Flow diagram for Apertis icon composition and usage

flowchart LR
  direction LR

  Consumer[Consumer code
  import Apertis]

  Consumer -->|default export| Icons[Apertis Icons
  Mono component]

  Icons -->|Apertis| Mono[Mono
  SVG icon]
  Icons -->|Apertis.Text| Text[Text
  wordmark SVG]
  Icons -->|Apertis.Avatar| Avatar[Avatar
  Mono on teal bg]
  Icons -->|Apertis.Combine| Combine[Combine
  Mono + Text lockup]

  subgraph Composition_Utilities
    IconAvatar[IconAvatar
    shared utility]
    IconCombine[IconCombine
    shared utility]
  end

  Avatar -->|wraps| IconAvatar
  Combine -->|wraps| IconCombine

  subgraph Style_Tokens
    TITLE[TITLE
    Apertis]
    COLOR_PRIMARY[COLOR_PRIMARY
    #0d9488]
    AVATAR_BACKGROUND[AVATAR_BACKGROUND
    #0d9488]
    AVATAR_COLOR[AVATAR_COLOR
    #fff]
    AVATAR_ICON_MULTIPLE[AVATAR_ICON_MULTIPLE
    0.75]
    COMBINE_SPACE_MULTIPLE[COMBINE_SPACE_MULTIPLE
    0.1]
    COMBINE_TEXT_MULTIPLE[COMBINE_TEXT_MULTIPLE
    0.75]
  end

  Mono --> TITLE
  Text --> TITLE
  Avatar --> TITLE
  Combine --> TITLE

  Avatar --> AVATAR_BACKGROUND
  Avatar --> AVATAR_COLOR
  Avatar --> AVATAR_ICON_MULTIPLE

  Combine --> COMBINE_SPACE_MULTIPLE
  Combine --> COMBINE_TEXT_MULTIPLE

  Icons --> COLOR_PRIMARY
Loading

File-Level Changes

Change Details Files
Introduce Apertis mono glyph and wordmark as reusable SVG icon components.
  • Create Mono icon component rendering the stacked A mark as a 24x24 SVG using shared IconType props and TITLE-based accessibility title.
  • Create Text icon component rendering the Apertis wordmark as a 79x24 SVG using shared IconType props and TITLE-based accessibility title.
  • Ensure both components are memoized React client components with size, style, and passthrough props consistent with existing icons.
src/Apertis/components/Mono.tsx
src/Apertis/components/Text.tsx
Add composed Apertis icon variants (Avatar and Combine) using shared composition primitives and Apertis-specific layout constants.
  • Create Avatar component that wraps IconAvatar with the Mono icon, Apertis teal background, white foreground, and a tuned iconMultiple scale.
  • Create Combine component that wraps IconCombine with Mono + Text lockup, applying Apertis-specific spacing and text scaling multiples and aria-label from TITLE.
  • Use React.memo and client component directives to match performance and runtime behavior of existing icon packages.
src/Apertis/components/Avatar.tsx
src/Apertis/components/Combine.tsx
Define Apertis icon metadata, styling tokens, and top-level export surface.
  • Add style constants for TITLE, primary color, combine spacing/text multiples, and avatar background/foreground/icon scale.
  • Create compounded icon export that attaches Avatar, Combine, Text, colorPrimary, and title onto the Mono component for a single default export API.
  • Document the Apertis icon in the component docs with navigation metadata and a short provider description.
src/Apertis/style.ts
src/Apertis/index.ts
src/Apertis/index.md

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@lobehubbot

Copy link
Copy Markdown
Member

👍 @theQuert


Thank you for raising your pull request and contributing to our Community
Please make sure you have followed our contributing guidelines. We will review it as soon as possible.
If you encounter any problems, please feel free to connect with us.
非常感谢您提出拉取请求并为我们的社区做出贡献,请确保您已经遵循了我们的贡献指南,我们会尽快审查它。
如果您遇到任何问题,请随时与我们联系。

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - I've reviewed your changes and they look great!


Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 011984c58c

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread src/Apertis/index.ts
@@ -0,0 +1,22 @@
import Avatar from './components/Avatar';

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Export Apertis from the public icon entrypoint

Adding src/Apertis/index.ts alone does not make the new icon usable to package consumers. The published root only re-exports ./icons from src/index.ts, and src/icons.ts still has no Apertis export, so import { Apertis } from '@lobehub/icons' will fail after this lands. Because scripts/tocWorkflow/index.ts also builds the docs TOC from ../../src/icons, the generated toc/docs will miss this icon as well.

Useful? React with 👍 / 👎.

Comment thread src/Apertis/index.ts
@@ -0,0 +1,22 @@
import Avatar from './components/Avatar';

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Add the matching React Native icon package

This repo ships a checked-in React Native workspace in parallel with the web icons, but this commit only adds src/Apertis. packages/react-native/package.json builds whatever is already under packages/react-native/src, and there is currently no packages/react-native/src/icons/Apertis folder or export in packages/react-native/src/index.ts, so @lobehub/icons-rn will remain missing Apertis even though the web package gained it.

Useful? React with 👍 / 👎.

Add Apertis to src/icons.ts barrel export and create the full
react-native icon set (Mono, Text, Avatar, Combine) under
packages/react-native/src/icons/Apertis.
@canisminor1990 canisminor1990 changed the base branch from master to dev March 26, 2026 07:41
@canisminor1990 canisminor1990 merged commit 34647da into lobehub:dev Mar 26, 2026
2 of 3 checks passed
@lobehubbot

Copy link
Copy Markdown
Member

❤️ Great PR @theQuert ❤️


The growth of project is inseparable from user feedback and contribution, thanks for your contribution!
项目的成长离不开用户反馈和贡献,感谢您的贡献!

canisminor1990 added a commit that referenced this pull request Mar 26, 2026
* ✨ feat(icons): add Qoder brand icon (#270)

* ✨ feat(icons): add Qoder brand icon

- Add Qoder icon components (Avatar, Color, Mono, Text)
- Add Qoder icon documentation
- Export Qoder icon in icons.ts
- Add Qoder entry in table of contents

	new file:   src/Qoder/components/Avatar.tsx
	new file:   src/Qoder/components/Color.tsx
	new file:   src/Qoder/components/Mono.tsx
	new file:   src/Qoder/components/Text.tsx
	new file:   src/Qoder/index.md
	new file:   src/Qoder/index.ts
	new file:   src/Qoder/style.ts
	modified:   src/icons.ts
	modified:   src/toc.ts

* ✨ feat: add Qoder icon

- Add Qoder icon with Avatar, Color, Mono, and Text variants
- Export Qoder icon from react-native package

* ✨ feat: add Coding Plan provider icons support (#272)

* ✨ feat: add Coding Plan provider support

* ✨ feat: add Coding Plan provider support for React Native

* feat: add Apertis icon (#269)

* feat: add Apertis icon

Add Apertis (apertis.ai) — a unified API platform for 500+ AI models
across 30+ providers. Includes Mono, Text, Avatar, and Combine
components following the standard icon package structure.

Primary color: #0d9488 (Apertis Teal)

* feat: export Apertis icon and add react-native support

Add Apertis to src/icons.ts barrel export and create the full
react-native icon set (Mono, Text, Avatar, Combine) under
packages/react-native/src/icons/Apertis.

* Update Together AI logo (#268)

* wip

* wip

* Revert "wip"

This reverts commit 76dfa33.

* wip

* feat: add AskVerdict AI brand icons (#265)

Add AskVerdict AI (askverdict.ai) — multi-agent AI debate engine.

Components: Mono, Color (gold gradient), Text, Combine, Avatar
Shared SVG paths extracted to paths.ts to prevent divergence.

Brand color: #E8A317 (gold)
Website: https://askverdict.ai

* ✨ feat: add AgentVoice icon (#257)

Co-authored-by: RRyanHoward <ryan@websitellm.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* feat: merge PR #259 (LLM API) and PR #262 (Xpay) into dev (#276)

* ✨ feat: Add LLM API logo

* ✨ feat: add xpay icon

* fix: set hasBrandColor to true in toc entry

---------

Co-authored-by: Markos Basilio <markosbasilio@MacBook-Pro-Markos.local>
Co-authored-by: xPay <xpaysh@gmail.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>

* 💄 style: Fix some icon style

* ✨ feat: Update rn

---------

Co-authored-by: zhi <yantze@126.com>
Co-authored-by: Hardy <yimingmail@yandex.com>
Co-authored-by: Quert <a97041304@gmail.com>
Co-authored-by: Hassan El Mghari <hassan4709@gmail.com>
Co-authored-by: GDS K S <39922405+thegdsks@users.noreply.github.com>
Co-authored-by: Ryan Howard <ryan@agentvoice.com>
Co-authored-by: RRyanHoward <ryan@websitellm.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Markos Basilio <markosbasilio@MacBook-Pro-Markos.local>
Co-authored-by: xPay <xpaysh@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants