Skip to content

1 ‐ About the architecture

Pierre-Yves Lapersonne edited this page Oct 17, 2024 · 2 revisions

The Swift Package

The OUDS iOS library provides a library as a Swift Package so as to let users (i.e. developers) to integrate the library inside Xcode. It is not planned (yet) to expose the library as XCFramework or Pod.

This package contains several modules with their own responsabilities and hierarchy.

OUDS

The OUDS library contains high level utilities and objects. It contains also the OUDSTheme, which can be seen as an abstract theme, a contract, to implement for white label themes for example.

OUDSModules

This library will contain in the futur the modules exposed by the library, i.e. packs of components and features.

OUDSComponents

This library contains the components exposed by the OUDS package, i.e. buttons, etc.

OUDSTokensComponent

This library may contain tokens of components, nothing yet.

OUDSThemesInverse

This library contains the inverse theme, i.e. a kind of dark mdoe theme for specific use cases and apps.

OUDSThemesOrange

This library exposes the Orange brand theme, as a default theme for subtheme.

OUDSTokensSemantic

This library contains all the semantic tokens, used by components pointing to raw tokens.

OUDSTokensRaw

This library contains all the raw tokens, i.e raw values to apply on components through semantic tokens.

OUDSFoundations

This library contains the foundations objects and utils

Dependency chart

flowchart TD
    A(OUDS) --> B(OUDS Tokens Component)
    A(OUDS) --> C(OUDS Tokens Semantic)
    A(OUDS) --> D(OUDS Tokens Raw)
    E(OUDS Modules) --> F(OUDS Components)
    F --> B
    F --> A
    G(OUDS Themes Inverse) --> H(OUDS Themes Orange)
    H --> A
    B --> C
    C --> D
    D --> I(OUDS Foundations)
Loading

The showcase app

Today the project contains a demo application exposing the features provided by the library. In the future this project will be move elsewhere, inside an internal forge so as to be able to build the application with open source public content (this library) and also private assets which should not be exposed (fonts, resources, brands to not subclass, etc.).