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.
| ID | Module | Tier | Targets |
|---|---|---|---|
sm-cart |
c-tech | 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
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
| Name | Type | Default | Description |
|---|---|---|---|
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)