Skip to main content
Slatico logo
Monorepo Release Notice (v0.1.0 · Workspace Monorepo Release): Packages are verified in the open-source Slatico monorepo CI pipeline and prepared for upcoming public registry publishing (npm, pub.dev, Maven Central, and Swift Package Index). Clone github.com/infitusofficial/slatico to consume packages via workspace or local path today.
Developer Documentation

Slatico Multi-Platform Architecture & SDK Overview

Slatico is a deterministic, open-source icon system created by Infitus Creative Studio. From a single canonical set of 189 hand-crafted 24×24 SVG master files (27 families across 7 architectural styles), our automated compiler pipeline generates type-safe, zero-bloat packages for Web, Cross-Platform Mobile, Android Native, and Apple Native applications.

1. Getting Started & Installation

Install the official scoped package for your target framework using npm, pnpm, or yarn, or add the native mobile package for Flutter, Android, or Apple Swift:

Web & React Native (npm / pnpm / yarn)
# React & Next.js
npm install @slatico/react
pnpm add @slatico/react
yarn add @slatico/react

# Vue 3 & Nuxt
npm install @slatico/vue
pnpm add @slatico/vue
yarn add @slatico/vue

# Vanilla HTML, Custom Elements (<slatico-icon>) & Icon Font
npm install @slatico/svg @slatico/web @slatico/font
pnpm add @slatico/svg @slatico/web @slatico/font
yarn add @slatico/svg @slatico/web @slatico/font

# React Native & Expo
npm install @slatico/react-native react-native-svg
pnpm add @slatico/react-native react-native-svg
yarn add @slatico/react-native react-native-svg
Flutter, Android Gradle & Apple SwiftPM
# Flutter (pubspec.yaml / CLI)
flutter pub add slatico_icons

# Android (build.gradle.kts)
implementation("com.infitus.slatico:slatico-android:0.1.0")

# Apple Swift Package Manager (Package.swift local monorepo path or Git release)
.package(path: "../slatico/packages/swift")

2. Seven Official Architectural Styles

Every Slatico icon family ships with all seven styles guaranteed on a unified 24×24 optical grid:

Style IDStroke / GeometryColor ModelIcon FontEngineering Purpose
thin1pxMonochrome (currentColor / tint)Yes (TTF / WOFF2)1px precision hairline stroke for large display and high-DPI interfaces.
light1.5pxMonochrome (currentColor / tint)Yes (TTF / WOFF2)1.5px refined stroke balanced for modern dense application layouts.
regular2pxMonochrome (currentColor / tint)Yes (TTF / WOFF2)2px primary default stroke engineered for universal UI legibility.
bold3pxMonochrome (currentColor / tint)Yes (TTF / WOFF2)3px heavy stroke for high-contrast emphasis and compact sizes.
fillSolid / LayeredMonochrome (currentColor / tint)Yes (TTF / WOFF2)Solid silhouette paths ideal for active states and primary indicators.
duotone1.75pxPrimary + Secondary Tone/AlphaSVG / Vector OnlyTwo-tone layered depth combining primary strokes with distinct secondary tone or opacity fills.
colorSolid / LayeredPrimary (#FF6040) + Secondary (#000000) CustomizableSVG / Vector OnlyMulticolor vector artwork preserving rich gradients and distinct semantic hues.

3. Icon Customization: Sizing, Primary & Secondary Colors

Slatico supports three distinct color models across all 8 platform SDKs:

Monochrome (thin–fill)

Inherits currentColor on the web or the ambient theme tint on mobile. Pass color to override.

Duotone (duotone)

Combines a primary foreground layer (color) with an independent secondary depth layer (secondaryColor and secondaryOpacity, default 0.2).

Dual-Color (color)

Authored with Slatico Primary (#FF6040) and dark structural accents (#000000). Pass color and/or secondaryColor in any SDK to customize either layer dynamically.

Customizing Monochrome, Duotone & Color Icons (@slatico/react)
import { BellIcon, ShieldCheckDuotoneIcon, WalletColorIcon } from "@slatico/react";

export function CustomizationDemo() {
  return (
    <div className="flex items-center gap-4">
      {/* 1. Monochrome: custom size + primary color */}
      <BellIcon variant="regular" size={24} color="#010520" />

      {/* 2. Duotone: independent primary color, secondaryColor & secondaryOpacity */}
      <ShieldCheckDuotoneIcon
        size={28}
        color="#010520"
        secondaryColor="#FF6040"
        secondaryOpacity={0.25}
      />

      {/* 3. Color: default palette (#FF6040 primary + #000000 secondary) */}
      <WalletColorIcon size={28} />

      {/* 4. Color: customized primary + secondary colors */}
      <WalletColorIcon
        size={28}
        color="#FF6040"
        secondaryColor="#010520"
      />
    </div>
  );
}

4. Accessibility Best Practices

Every Slatico SDK is engineered to be accessible by default and prevent noisy screen reader announcements:

  • Decorative Icons (Default): When an icon sits beside visible text (such as a button label), omit the label prop. Web packages automatically set aria-hidden="true" and focusable="false"; Flutter sets excludeFromSemantics: true; Jetpack Compose passes contentDescription = null; and SwiftUI applies .accessibilityHidden(true).
  • Semantic / Standalone Icons: When an icon conveys meaning without adjacent text, pass title="Notifications" (React, Vue, SVG, React Native), label="Notifications" (Web Components), semanticLabel: 'Notifications' (Flutter), contentDescription = "Notifications" (Android), or accessibilityLabel: "Notifications" (SwiftUI).

5. Import Optimization & Tree Shaking

All JavaScript/TypeScript packages (@slatico/core, @slatico/svg, @slatico/react, @slatico/vue, @slatico/web, and @slatico/react-native) declare "sideEffects": false and expose dedicated per-icon subpath exports so bundlers like Vite, Next.js (Turbopack / Webpack), Rollup, and Metro only include the exact icons your app renders:

Subpath Imports for Maximum Tree Shaking
// Named barrel import (tree-shaken by ESM bundlers)
import { BellIcon, ShieldCheckDuotoneIcon } from "@slatico/react";

// Direct per-icon subpath import (zero barrel evaluation in dev & prod)
import { BellIcon } from "@slatico/react/icons/bell";
import { ArrowUpRightBoldIcon } from "@slatico/vue/icons/arrow-up-right";
import { bellIconDef } from "@slatico/web/icons/bell";
import { WalletColorIcon } from "@slatico/react-native/icons/wallet";

6. Monorepo Workspace Quickstart

Clone the repository to develop locally or consume packages directly from source before public registry publication:

Terminal (pnpm workspace)
git clone https://github.com/infitusofficial/slatico.git
cd slatico
pnpm install

# Validate 189 master SVGs, generate all platform packages, and build:
pnpm icons:validate
pnpm icons:generate
pnpm build:packages

7. Troubleshooting & FAQ

Why aren't Duotone or Color icons included in @slatico/font or Flutter IconData?

Standard TrueType/WOFF2 glyph tables only support a single monochrome outline per glyph. Because duotone requires independent dual-layer opacity and color requires multi-tone fills, use @slatico/svg, @slatico/react, @slatico/vue, @slatico/web, or Flutter's SlaticoIcon widget for Duotone and Color styles.

My Color icon on Android XML turns solid black or white when placed in an ImageView.

Remove app:tint from the ImageView when rendering @drawable/slatico_*_color resources so Android preserves the authored #FF6040 and #000000 vector path fills. To customize both colors dynamically on Android, use the Jetpack Compose SlaticoIcon composable with color and secondaryColor.

How do I prevent Dark Mode from hiding the dark secondary paths of a color icon?

In Dark Mode, pass a light secondary color (such as secondaryColor="#FFFFFF") or set --slatico-secondary-color: #FFFFFF; inside your .dark CSS scope so the secondary layer contrasts cleanly against dark surfaces while preserving the #FF6040 brand primary fill.

8. Open-Source License (MIT)

All 189 Slatico icons and all 8 platform SDKs are released under the permissive MIT License by Infitus Creative Studio. You may use, customize, and bundle Slatico in personal and commercial projects without attribution requirements.

9. Choose Your Platform Integration Guide