Primitive

Widget Registry

Auto-emitted from DSKintsugiCatalog.widgetregistry. Tier atom.

Live Preview
SMWidget + WidgetRegistry — l'identity layer partagée. Promu depuis c-tech, consommé par wabisabi, sigma, et tous les futurs white-label decks.
IDModuleTierTargets
sm-cart c-tech Atelier web · iOS · Android
sm-program-guide c-tech Starter web · iOS · Android
sigma-kpi sigma Maison web · iOS
wabi-feature-tile wabisabi Starter iOS
Each widget = ComponentEntry + tier-gated rendering. WidgetRegistry.resolve(id:) returns the SMWidget instance + GateState resolved against the active subscription.
Native · macOS
macOS SwiftUI render of Widget Registry
DSL usage
public protocol SMWidget: Sendable {
    var id: String { get }
    var billingTier: Tier? { get }
    var content: ShikkiView { get }
}

public actor WidgetRegistry {
    public func register(_ widget: any SMWidget)
    public func resolve(id: String) -> any SMWidget?

    // W3 — wired to shi-billing.StripeProvider
    public func gateState(
        for id: String,
        subscription: SubscriptionStatus
    ) -> GateState
}
Attributes
NameTypeDefaultDescription
id String Stable widget identifier (kebab-case). Unique within the registry.
billingTier Tier? nil Required subscription tier. nil = free / always unlocked.
content ShikkiView Cross-target body. Composes ViewNode primitives + DS components.
Used in
c-tech (SMWidgets — origin) sigma-analytics (enterprise modules) wabisabi (feature tiles) shi-billing (tier resolution)