@santi020k/lumen 1.6.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,861 @@
1
+ {
2
+ "schemaVersion": 5,
3
+ "adapters": {
4
+ "reactNative": {
5
+ "package": "@santi020k/lumen-react-native",
6
+ "sourceDirectory": "packages/react-native/src",
7
+ "publicEntrypoints": [
8
+ "index.ts",
9
+ "datetime.ts"
10
+ ]
11
+ },
12
+ "swiftUI": {
13
+ "package": "LumenUI",
14
+ "sourceDirectory": "packages/swift/Sources/LumenUI",
15
+ "additionalSourceDirectories": [
16
+ "packages/swift-widget/Sources/LumenWidgetUI"
17
+ ]
18
+ },
19
+ "compose": {
20
+ "package": "com.santi020k:lumen-compose",
21
+ "sourceDirectory": "packages/compose/src/main/kotlin/com/santi020k/lumen",
22
+ "additionalSourceDirectories": [
23
+ "packages/compose/wear/src/main/kotlin/com/santi020k/lumen/wear"
24
+ ],
25
+ "toolchain": {
26
+ "androidGradlePlugin": "9.3.1",
27
+ "compileSdk": 37,
28
+ "gradle": "9.7.1",
29
+ "instrumentationApi": 35,
30
+ "jdk": 21,
31
+ "kotlin": "2.4.10",
32
+ "minSdk": 23
33
+ }
34
+ }
35
+ },
36
+ "components": [
37
+ {
38
+ "id": "theme",
39
+ "tier": "universal",
40
+ "contract": "Light and dark semantic foundations",
41
+ "accessibility": "Preserves platform environment preferences",
42
+ "symbols": {
43
+ "reactNative": "LumenProvider",
44
+ "swiftUI": "LumenTheme",
45
+ "compose": "LumenTheme"
46
+ }
47
+ },
48
+ {
49
+ "id": "text",
50
+ "tier": "universal",
51
+ "contract": "Body, caption, label, and title roles",
52
+ "accessibility": "Preserves native text scaling",
53
+ "symbols": {
54
+ "reactNative": "LumenText",
55
+ "swiftUI": "LumenText",
56
+ "compose": "LumenText"
57
+ }
58
+ },
59
+ {
60
+ "id": "icon",
61
+ "tier": "universal",
62
+ "contract": "Complete shared Lucide and namespaced brand artwork with native escape hatches at small, medium, and large sizes",
63
+ "accessibility": "Decorative unless explicitly labeled",
64
+ "symbols": {
65
+ "reactNative": "LumenIcon",
66
+ "swiftUI": "LumenIcon",
67
+ "compose": "LumenIcon"
68
+ }
69
+ },
70
+ {
71
+ "id": "icon-button",
72
+ "tier": "universal",
73
+ "contract": "Shared intent and native touch target",
74
+ "accessibility": "Requires an action label",
75
+ "symbols": {
76
+ "reactNative": "LumenIconButton",
77
+ "swiftUI": "LumenIconButton",
78
+ "compose": "LumenIconButton"
79
+ }
80
+ },
81
+ {
82
+ "id": "surface",
83
+ "tier": "universal",
84
+ "contract": "Semantic tone, padding, and radius",
85
+ "accessibility": "Does not add redundant semantics",
86
+ "symbols": {
87
+ "reactNative": "LumenSurface",
88
+ "swiftUI": "LumenSurface",
89
+ "compose": "LumenSurface"
90
+ }
91
+ },
92
+ {
93
+ "id": "button",
94
+ "tier": "universal",
95
+ "contract": "Intent, size, loading, and disabled states",
96
+ "accessibility": "Exposes native button and state semantics",
97
+ "symbols": {
98
+ "reactNative": "LumenButton",
99
+ "swiftUI": "LumenButton",
100
+ "compose": "LumenButton"
101
+ }
102
+ },
103
+ {
104
+ "id": "text-field",
105
+ "tier": "universal",
106
+ "contract": "Native text entry with error and disabled states",
107
+ "accessibility": "Exposes invalid and supporting error state",
108
+ "symbols": {
109
+ "reactNative": "LumenTextField",
110
+ "swiftUI": "LumenTextField",
111
+ "compose": "LumenTextField"
112
+ }
113
+ },
114
+ {
115
+ "id": "textarea",
116
+ "tier": "shared",
117
+ "contract": "Multiline native text entry with supporting and error states",
118
+ "accessibility": "Preserves native multiline editing and exposes its visible label and error context",
119
+ "symbols": {
120
+ "reactNative": "LumenTextarea",
121
+ "swiftUI": "LumenTextarea",
122
+ "compose": "LumenTextarea"
123
+ }
124
+ },
125
+ {
126
+ "id": "field-group",
127
+ "tier": "shared",
128
+ "contract": "Label, description, required state, control content, and validation message",
129
+ "accessibility": "Keeps child control semantics independent while presenting readable field context",
130
+ "symbols": {
131
+ "reactNative": "LumenFieldGroup",
132
+ "swiftUI": "LumenFieldGroup",
133
+ "compose": "LumenFieldGroup"
134
+ }
135
+ },
136
+ {
137
+ "id": "toggle",
138
+ "tier": "shared",
139
+ "contract": "Native switch behavior with visible label and disabled state",
140
+ "accessibility": "Exposes native switch state and a readable label",
141
+ "symbols": {
142
+ "reactNative": "LumenToggle",
143
+ "swiftUI": "LumenToggle",
144
+ "compose": "LumenToggle"
145
+ }
146
+ },
147
+ {
148
+ "id": "settings-row",
149
+ "tier": "shared",
150
+ "contract": "Title, supporting text, optional graphic, and trailing control",
151
+ "accessibility": "Contains the native control without merging its interaction",
152
+ "symbols": {
153
+ "reactNative": "LumenSettingsRow",
154
+ "swiftUI": "LumenSettingsRow",
155
+ "compose": "LumenSettingsRow"
156
+ }
157
+ },
158
+ {
159
+ "id": "search-field",
160
+ "tier": "shared",
161
+ "contract": "Native search input with semantic surface and clear action",
162
+ "accessibility": "Labels the input and clear action while preserving native editing",
163
+ "symbols": {
164
+ "reactNative": "LumenSearchField",
165
+ "swiftUI": "LumenSearchField",
166
+ "compose": "LumenSearchField"
167
+ }
168
+ },
169
+ {
170
+ "id": "date-field",
171
+ "tier": "shared",
172
+ "contract": "Native date selection with controlled values, bounds, supporting text, and validation messaging",
173
+ "accessibility": "Keeps validation context on the actionable control and dismisses adapter-owned selection UI when disabled",
174
+ "symbols": {
175
+ "reactNative": "LumenDateField",
176
+ "swiftUI": "LumenDateField",
177
+ "compose": "LumenDateField"
178
+ }
179
+ },
180
+ {
181
+ "id": "date-range-field",
182
+ "tier": "shared",
183
+ "contract": "Inclusive native start and end date selection with bounds and coordinated range validation",
184
+ "accessibility": "Labels the range and native date controls while preventing an end date before the start date",
185
+ "symbols": {
186
+ "reactNative": "LumenDateRangeField",
187
+ "swiftUI": "LumenDateRangeField",
188
+ "compose": "LumenDateRangeField"
189
+ }
190
+ },
191
+ {
192
+ "id": "phone-input",
193
+ "tier": "shared",
194
+ "contract": "Searchable localized country selection with calling codes, as-you-type formatting, metadata-backed validation, and E.164 output",
195
+ "accessibility": "Names the country selector and phone editor, exposes validation on the editor, and dismisses country selection when disabled",
196
+ "symbols": {
197
+ "reactNative": "LumenPhoneInput",
198
+ "swiftUI": "LumenPhoneInput",
199
+ "compose": "LumenPhoneInput"
200
+ }
201
+ },
202
+ {
203
+ "id": "checkbox",
204
+ "tier": "shared",
205
+ "contract": "Controlled Boolean selection with visible label and optional supporting text",
206
+ "accessibility": "Exposes native checkbox state, disabled state, and a readable label",
207
+ "symbols": {
208
+ "reactNative": "LumenCheckbox",
209
+ "swiftUI": "LumenCheckbox",
210
+ "compose": "LumenCheckbox"
211
+ }
212
+ },
213
+ {
214
+ "id": "radio-group",
215
+ "tier": "shared",
216
+ "contract": "Single selection from labeled options with optional supporting text",
217
+ "accessibility": "Exposes a named native radio group and selected or disabled option states",
218
+ "symbols": {
219
+ "reactNative": "LumenRadioGroup",
220
+ "swiftUI": "LumenRadioGroup",
221
+ "compose": "LumenRadioGroup"
222
+ }
223
+ },
224
+ {
225
+ "id": "segmented-control",
226
+ "tier": "shared",
227
+ "contract": "Compact single selection from a small set of peer options",
228
+ "accessibility": "Exposes a named single-selection group and selected or disabled segment states",
229
+ "symbols": {
230
+ "reactNative": "LumenSegmentedControl",
231
+ "swiftUI": "LumenSegmentedControl",
232
+ "compose": "LumenSegmentedControl"
233
+ }
234
+ },
235
+ {
236
+ "id": "tabs",
237
+ "tier": "shared",
238
+ "contract": "Controlled tab selection with a named tab list and active native content panel",
239
+ "accessibility": "Exposes selected and disabled tab states and names the active panel",
240
+ "symbols": {
241
+ "reactNative": "LumenTabs",
242
+ "swiftUI": "LumenTabs",
243
+ "compose": "LumenTabs"
244
+ }
245
+ },
246
+ {
247
+ "id": "chip",
248
+ "tier": "shared",
249
+ "contract": "Compact display, selection, and removal with semantic selected and disabled states",
250
+ "accessibility": "Separates selection and removal actions while exposing selected and disabled state",
251
+ "symbols": {
252
+ "reactNative": "LumenChip",
253
+ "swiftUI": "LumenChip",
254
+ "compose": "LumenChip"
255
+ }
256
+ },
257
+ {
258
+ "id": "button-group",
259
+ "tier": "shared",
260
+ "contract": "Horizontal or vertical layout for a small set of related actions",
261
+ "accessibility": "Contains native buttons without merging their independent action names",
262
+ "symbols": {
263
+ "reactNative": "LumenButtonGroup",
264
+ "swiftUI": "LumenButtonGroup",
265
+ "compose": "LumenButtonGroup"
266
+ }
267
+ },
268
+ {
269
+ "id": "badge",
270
+ "tier": "universal",
271
+ "contract": "Neutral and semantic status tones",
272
+ "accessibility": "Retains its text content",
273
+ "symbols": {
274
+ "reactNative": "LumenBadge",
275
+ "swiftUI": "LumenBadge",
276
+ "compose": "LumenBadge"
277
+ }
278
+ },
279
+ {
280
+ "id": "divider",
281
+ "tier": "universal",
282
+ "contract": "One-unit semantic separator",
283
+ "accessibility": "Hidden as decorative structure",
284
+ "symbols": {
285
+ "reactNative": "LumenDivider",
286
+ "swiftUI": "LumenDivider",
287
+ "compose": "LumenDivider"
288
+ }
289
+ },
290
+ {
291
+ "id": "spinner",
292
+ "tier": "universal",
293
+ "contract": "Brand-colored indeterminate activity",
294
+ "accessibility": "Exposes a loading label",
295
+ "symbols": {
296
+ "reactNative": "LumenSpinner",
297
+ "swiftUI": "LumenSpinner",
298
+ "compose": "LumenSpinner"
299
+ }
300
+ },
301
+ {
302
+ "id": "card",
303
+ "tier": "shared",
304
+ "contract": "Neutral or semantic container with optional native action",
305
+ "accessibility": "Interactive form exposes native button semantics",
306
+ "symbols": {
307
+ "reactNative": "LumenCard",
308
+ "swiftUI": "LumenCard",
309
+ "compose": "LumenCard"
310
+ }
311
+ },
312
+ {
313
+ "id": "alert",
314
+ "tier": "shared",
315
+ "contract": "Default, destructive, success, and warning variants",
316
+ "accessibility": "Does not announce automatically",
317
+ "symbols": {
318
+ "reactNative": "LumenAlert",
319
+ "swiftUI": "LumenAlert",
320
+ "compose": "LumenAlert"
321
+ }
322
+ },
323
+ {
324
+ "id": "toast",
325
+ "tier": "shared",
326
+ "contract": "App-controlled transient feedback with semantic tone, optional action, and dismissal",
327
+ "accessibility": "Announces concise status while preserving independent action and dismissal controls",
328
+ "symbols": {
329
+ "reactNative": "LumenToast",
330
+ "swiftUI": "LumenToast",
331
+ "compose": "LumenToast"
332
+ }
333
+ },
334
+ {
335
+ "id": "progress",
336
+ "tier": "shared",
337
+ "contract": "Determinate normalized value and maximum",
338
+ "accessibility": "Exposes native progress range semantics",
339
+ "symbols": {
340
+ "reactNative": "LumenProgress",
341
+ "swiftUI": "LumenProgress",
342
+ "compose": "LumenProgress"
343
+ }
344
+ },
345
+ {
346
+ "id": "skeleton",
347
+ "tier": "shared",
348
+ "contract": "Text, rectangle, and circle loading placeholders with normalized dimensions",
349
+ "accessibility": "Decorative by default or exposes a labeled indeterminate loading state",
350
+ "symbols": {
351
+ "reactNative": "LumenSkeleton",
352
+ "swiftUI": "LumenSkeleton",
353
+ "compose": "LumenSkeleton"
354
+ }
355
+ },
356
+ {
357
+ "id": "graphic",
358
+ "tier": "shared",
359
+ "contract": "Token-aware glow, grid, and orbit presets around application-provided artwork",
360
+ "accessibility": "Decorative by default or exposed as one labeled image",
361
+ "symbols": {
362
+ "reactNative": "LumenGraphic",
363
+ "swiftUI": "LumenGraphic",
364
+ "compose": "LumenGraphic"
365
+ }
366
+ },
367
+ {
368
+ "id": "backdrop",
369
+ "tier": "shared",
370
+ "contract": "Ambient aurora, dots, grid, and rays behind application content with semantic tones and intensity",
371
+ "accessibility": "The decorative layer stays hidden while child content preserves its native semantics",
372
+ "symbols": {
373
+ "reactNative": "LumenBackdrop",
374
+ "swiftUI": "LumenBackdrop",
375
+ "compose": "LumenBackdrop"
376
+ }
377
+ },
378
+ {
379
+ "id": "illustration",
380
+ "tier": "shared",
381
+ "contract": "Built-in empty, success, error, and offline scenes with shared semantic colors and sizes",
382
+ "accessibility": "Decorative by default or exposed as one labeled image",
383
+ "symbols": {
384
+ "reactNative": "LumenIllustration",
385
+ "swiftUI": "LumenIllustration",
386
+ "compose": "LumenIllustration"
387
+ }
388
+ },
389
+ {
390
+ "id": "image",
391
+ "tier": "shared",
392
+ "contract": "Native image source or content with shared contain and cover fitting, aspect ratio, radius, and labeling",
393
+ "accessibility": "Decorative by default or exposed as one labeled image",
394
+ "symbols": {
395
+ "reactNative": "LumenImage",
396
+ "swiftUI": "LumenImage",
397
+ "compose": "LumenImage"
398
+ }
399
+ },
400
+ {
401
+ "id": "sparkline",
402
+ "tier": "shared",
403
+ "contract": "Compact tokenized trend line with optional area fill",
404
+ "accessibility": "Presents one concise image label without exposing decorative marks",
405
+ "symbols": {
406
+ "reactNative": "LumenSparkline",
407
+ "swiftUI": "LumenSparkline",
408
+ "compose": "LumenSparkline"
409
+ }
410
+ },
411
+ {
412
+ "id": "line-chart",
413
+ "tier": "shared",
414
+ "contract": "Multi-series categorical, numeric, or temporal line and area visualization",
415
+ "accessibility": "Provides a factual summary and navigable fallback data while decorative marks remain hidden",
416
+ "symbols": {
417
+ "reactNative": "LumenLineChart",
418
+ "swiftUI": "LumenLineChart",
419
+ "compose": "LumenLineChart"
420
+ }
421
+ },
422
+ {
423
+ "id": "bar-chart",
424
+ "tier": "shared",
425
+ "contract": "Grouped or stacked categorical magnitude comparison",
426
+ "accessibility": "Provides a factual summary and navigable fallback data while decorative marks remain hidden",
427
+ "symbols": {
428
+ "reactNative": "LumenBarChart",
429
+ "swiftUI": "LumenBarChart",
430
+ "compose": "LumenBarChart"
431
+ }
432
+ },
433
+ {
434
+ "id": "pie-chart",
435
+ "tier": "shared",
436
+ "contract": "Small positive part-to-whole breakdown as a pie or donut",
437
+ "accessibility": "Provides a factual summary and navigable fallback data while decorative marks remain hidden",
438
+ "symbols": {
439
+ "reactNative": "LumenPieChart",
440
+ "swiftUI": "LumenPieChart",
441
+ "compose": "LumenPieChart"
442
+ }
443
+ },
444
+ {
445
+ "id": "scatter-chart",
446
+ "tier": "shared",
447
+ "contract": "Numeric scatter and bubble relationships with tokenized series tones",
448
+ "accessibility": "Provides a factual summary and readable fallback data while decorative marks remain hidden",
449
+ "symbols": {
450
+ "reactNative": "LumenScatterChart",
451
+ "swiftUI": "LumenScatterChart",
452
+ "compose": "LumenScatterChart"
453
+ }
454
+ },
455
+ {
456
+ "id": "heatmap",
457
+ "tier": "shared",
458
+ "contract": "Two-dimensional matrix encoded with a canonical sequential color scale",
459
+ "accessibility": "Presents a concise summary while applications retain labels for every cell",
460
+ "symbols": {
461
+ "reactNative": "LumenHeatmap",
462
+ "swiftUI": "LumenHeatmap",
463
+ "compose": "LumenHeatmap"
464
+ }
465
+ },
466
+ {
467
+ "id": "range-chart",
468
+ "tier": "shared",
469
+ "contract": "Ordered low-to-high intervals rendered as a tokenized range band",
470
+ "accessibility": "Presents a concise summary while applications retain low and high values",
471
+ "symbols": {
472
+ "reactNative": "LumenRangeChart",
473
+ "swiftUI": "LumenRangeChart",
474
+ "compose": "LumenRangeChart"
475
+ }
476
+ },
477
+ {
478
+ "id": "combo-chart",
479
+ "tier": "shared",
480
+ "contract": "Mixed bar, line, and area series on one shared value domain",
481
+ "accessibility": "Provides a factual summary and readable fallback data while decorative marks remain hidden",
482
+ "symbols": {
483
+ "reactNative": "LumenComboChart",
484
+ "swiftUI": "LumenComboChart",
485
+ "compose": "LumenComboChart"
486
+ }
487
+ },
488
+ {
489
+ "id": "disclosure",
490
+ "tier": "shared",
491
+ "contract": "Controlled progressive disclosure with title, supporting text, and native content",
492
+ "accessibility": "The trigger exposes expanded and disabled state while collapsed content leaves the tree",
493
+ "symbols": {
494
+ "reactNative": "LumenDisclosure",
495
+ "swiftUI": "LumenDisclosure",
496
+ "compose": "LumenDisclosure"
497
+ }
498
+ },
499
+ {
500
+ "id": "avatar",
501
+ "tier": "shared",
502
+ "contract": "Native image, fallback, label, and shared sizes",
503
+ "accessibility": "Decorative unless identity is labeled",
504
+ "symbols": {
505
+ "reactNative": "LumenAvatar",
506
+ "swiftUI": "LumenAvatar",
507
+ "compose": "LumenAvatar"
508
+ }
509
+ },
510
+ {
511
+ "id": "empty-state",
512
+ "tier": "shared",
513
+ "contract": "Title, supporting copy, optional graphic, and recovery actions",
514
+ "accessibility": "Retains readable content and native action order",
515
+ "symbols": {
516
+ "reactNative": "LumenEmptyState",
517
+ "swiftUI": "LumenEmptyState",
518
+ "compose": "LumenEmptyState"
519
+ }
520
+ },
521
+ {
522
+ "id": "error-state",
523
+ "tier": "shared",
524
+ "contract": "Error or offline context with layouts, safe reference, and recovery actions",
525
+ "accessibility": "Preserves heading and action order with platform-native announcement ownership",
526
+ "symbols": {
527
+ "reactNative": "LumenErrorState",
528
+ "swiftUI": "LumenErrorState",
529
+ "compose": "LumenErrorState"
530
+ }
531
+ },
532
+ {
533
+ "id": "list-row",
534
+ "tier": "shared",
535
+ "contract": "Leading identity, flexible content, and trailing actions",
536
+ "accessibility": "Contains child controls without collapsing their semantics",
537
+ "symbols": {
538
+ "reactNative": "LumenListRow",
539
+ "swiftUI": "LumenListRow",
540
+ "compose": "LumenListRow"
541
+ }
542
+ },
543
+ {
544
+ "id": "banner",
545
+ "tier": "shared",
546
+ "contract": "Semantic notice with optional actions and dismissal",
547
+ "accessibility": "Does not announce automatically and labels dismissal",
548
+ "symbols": {
549
+ "reactNative": "LumenBanner",
550
+ "swiftUI": "LumenBanner",
551
+ "compose": "LumenBanner"
552
+ }
553
+ },
554
+ {
555
+ "id": "stat",
556
+ "tier": "shared",
557
+ "contract": "Compact semantic metric with label, value, and detail",
558
+ "accessibility": "Combines the metric into one readable element",
559
+ "symbols": {
560
+ "reactNative": "LumenStat",
561
+ "swiftUI": "LumenStat",
562
+ "compose": "LumenStat"
563
+ }
564
+ },
565
+ {
566
+ "id": "section-header",
567
+ "tier": "shared",
568
+ "contract": "Section identity, optional count, and trailing actions",
569
+ "accessibility": "Preserves action semantics and readable heading content",
570
+ "symbols": {
571
+ "reactNative": "LumenSectionHeader",
572
+ "swiftUI": "LumenSectionHeader",
573
+ "compose": "LumenSectionHeader"
574
+ }
575
+ },
576
+ {
577
+ "id": "status-bar",
578
+ "tier": "shared",
579
+ "contract": "Compact semantic status with optional trailing content",
580
+ "accessibility": "Status meaning remains present in text, not color alone",
581
+ "symbols": {
582
+ "reactNative": "LumenStatusBar",
583
+ "swiftUI": "LumenStatusBar",
584
+ "compose": "LumenStatusBar"
585
+ }
586
+ },
587
+ {
588
+ "id": "picker",
589
+ "tier": "shared",
590
+ "contract": "Native single-value selection using platform-appropriate menu or picker presentation, disabled when no options are available",
591
+ "accessibility": "Preserves native selection behavior, reports the selected value, and dismisses adapter-owned selection UI when disabled",
592
+ "symbols": {
593
+ "reactNative": "LumenPicker",
594
+ "swiftUI": "LumenPicker",
595
+ "compose": "LumenPicker"
596
+ }
597
+ },
598
+ {
599
+ "id": "slider",
600
+ "tier": "shared",
601
+ "contract": "Continuous or stepped range input with visible formatted value context",
602
+ "accessibility": "Preserves native adjustable semantics and reports the formatted current value",
603
+ "symbols": {
604
+ "reactNative": "LumenSlider",
605
+ "swiftUI": "LumenSlider",
606
+ "compose": "LumenSlider"
607
+ }
608
+ },
609
+ {
610
+ "id": "gauge",
611
+ "tier": "shared",
612
+ "contract": "Clamped circular metric with a formatted accessible value",
613
+ "accessibility": "Exposes a label, normalized range, and formatted current value",
614
+ "symbols": {
615
+ "reactNative": "LumenGauge",
616
+ "swiftUI": "LumenGauge",
617
+ "compose": "LumenGauge"
618
+ }
619
+ },
620
+ {
621
+ "id": "alert-dialog",
622
+ "tier": "shared",
623
+ "contract": "Controlled confirmation with cancel, confirm, destructive, disabled, and loading states",
624
+ "accessibility": "Uses native modal focus, alert semantics, and independently named actions",
625
+ "symbols": {
626
+ "reactNative": "LumenAlertDialog",
627
+ "swiftUI": "lumenAlertDialog",
628
+ "compose": "LumenAlertDialog"
629
+ }
630
+ },
631
+ {
632
+ "id": "sheet",
633
+ "tier": "shared",
634
+ "contract": "Controlled supplemental surface with optional heading, description, actions, and native dismissal",
635
+ "accessibility": "Uses native modal focus containment and preserves application content semantics",
636
+ "symbols": {
637
+ "reactNative": "LumenSheet",
638
+ "swiftUI": "lumenSheet",
639
+ "compose": "LumenSheet"
640
+ }
641
+ },
642
+ {
643
+ "id": "menu",
644
+ "tier": "shared",
645
+ "contract": "Anchored action menu with labeled disabled and destructive item states",
646
+ "accessibility": "Exposes native menu roles, expanded state, and independently named actions",
647
+ "symbols": {
648
+ "reactNative": "LumenMenu",
649
+ "swiftUI": "LumenMenu",
650
+ "compose": "LumenMenu"
651
+ }
652
+ },
653
+ {
654
+ "id": "share-button",
655
+ "tier": "shared",
656
+ "contract": "Token-aware button that presents the operating system share surface for application-owned content",
657
+ "accessibility": "Retains native button semantics and delegates destination selection to the operating system",
658
+ "symbols": {
659
+ "reactNative": "LumenShareButton",
660
+ "swiftUI": "LumenShareButton",
661
+ "compose": "LumenShareButton"
662
+ }
663
+ },
664
+ {
665
+ "id": "navigation-bar",
666
+ "tier": "shared",
667
+ "contract": "Controlled selection from peer app destinations with re-selection callbacks and optional dot, text, or count badges",
668
+ "accessibility": "Names the destination group and exposes selected, disabled, and badge status without relying on color alone",
669
+ "symbols": {
670
+ "reactNative": "LumenNavigationBar",
671
+ "swiftUI": "LumenNavigationBar",
672
+ "compose": "LumenNavigationBar"
673
+ }
674
+ },
675
+ {
676
+ "id": "wearable-action",
677
+ "tier": "shared",
678
+ "formFactor": "wearable",
679
+ "contract": "At-a-glance round primary action with semantic intent, disabled state, and wearable sizing",
680
+ "accessibility": "Requires a concise action label and preserves native button semantics",
681
+ "symbols": {
682
+ "swiftUI": "LumenWatchActionButton",
683
+ "compose": "LumenWearActionButton"
684
+ }
685
+ },
686
+ {
687
+ "id": "wearable-progress",
688
+ "tier": "shared",
689
+ "formFactor": "wearable",
690
+ "contract": "Clamped circular progress surrounding app-owned wearable content",
691
+ "accessibility": "Exposes a normalized progress range without duplicating inner content",
692
+ "symbols": {
693
+ "swiftUI": "LumenWatchProgressRing",
694
+ "compose": "LumenWearProgressRing"
695
+ }
696
+ },
697
+ {
698
+ "id": "wearable-status",
699
+ "tier": "shared",
700
+ "formFactor": "wearable",
701
+ "contract": "Compact text-first wearable status using semantic tone",
702
+ "accessibility": "Keeps status meaning in text rather than color alone",
703
+ "symbols": {
704
+ "swiftUI": "LumenWatchStatus",
705
+ "compose": "LumenWearStatus"
706
+ }
707
+ },
708
+ {
709
+ "id": "wearable-metric",
710
+ "tier": "shared",
711
+ "formFactor": "wearable",
712
+ "contract": "At-a-glance wearable label, value, and optional detail",
713
+ "accessibility": "Presents the metric as one concise readable unit",
714
+ "symbols": {
715
+ "swiftUI": "LumenWatchMetric",
716
+ "compose": "LumenWearMetric"
717
+ }
718
+ },
719
+ {
720
+ "id": "wearable-list-row",
721
+ "tier": "shared",
722
+ "formFactor": "wearable",
723
+ "contract": "Compact wearable row with flexible leading, content, and trailing slots",
724
+ "accessibility": "Preserves child action semantics and readable traversal order",
725
+ "symbols": {
726
+ "swiftUI": "LumenWatchListRow",
727
+ "compose": "LumenWearListRow"
728
+ }
729
+ }
730
+ ],
731
+ "platformComponents": [
732
+ {
733
+ "id": "shortcut-recorder",
734
+ "adapter": "swiftUI",
735
+ "platforms": ["macOS"],
736
+ "contract": "Keyboard shortcut capture, validation, clear, and cancel states",
737
+ "accessibility": "Displays the current shortcut and exposes labeled controls",
738
+ "symbol": "LumenShortcutRecorder"
739
+ },
740
+ {
741
+ "id": "symbol-picker",
742
+ "adapter": "swiftUI",
743
+ "platforms": ["macOS"],
744
+ "contract": "Searchable and categorized SF Symbols selection",
745
+ "accessibility": "Labels every symbol and exposes selected state",
746
+ "symbol": "LumenSymbolPicker"
747
+ },
748
+ {
749
+ "id": "link",
750
+ "adapter": "swiftUI",
751
+ "platforms": ["iOS", "macOS", "visionOS"],
752
+ "contract": "Token-aware URL action backed by SwiftUI native link opening",
753
+ "accessibility": "Preserves the native link role, visible label, focus behavior, and disabled state",
754
+ "symbol": "LumenLink"
755
+ },
756
+ {
757
+ "id": "tab-bar-minimization",
758
+ "adapter": "swiftUI",
759
+ "platforms": ["iOS"],
760
+ "contract": "Availability-safe native tab-bar minimization with automatic, never, and scroll-direction policies",
761
+ "accessibility": "Delegates motion, safe-area, focus, and reduced-motion behavior to the native SwiftUI tab bar",
762
+ "symbol": "lumenTabBarMinimizeBehavior"
763
+ },
764
+ {
765
+ "id": "tab-accessory",
766
+ "adapter": "swiftUI",
767
+ "platforms": ["iOS"],
768
+ "contract": "Adaptive expanded and compact content above or inline with a native tab bar",
769
+ "accessibility": "Preserves the semantics of application-owned accessory content across native placements",
770
+ "symbol": "LumenTabAccessory"
771
+ },
772
+ {
773
+ "id": "refresh-control",
774
+ "adapter": "reactNative",
775
+ "platforms": ["iOS", "Android"],
776
+ "contract": "Native pull-to-refresh state with semantic indicator colors",
777
+ "accessibility": "Preserves native refresh gestures and exposes the application-provided loading label",
778
+ "symbol": "LumenRefreshControl"
779
+ },
780
+ {
781
+ "id": "collapsible-navigation-bar",
782
+ "adapter": "reactNative",
783
+ "platforms": ["iOS", "Android"],
784
+ "contract": "Animated bottom navigation that hides after forward scroll travel and reveals on reverse travel or at the top",
785
+ "accessibility": "Removes hidden destinations from interaction and the accessibility tree while preserving native list ownership",
786
+ "symbol": "LumenCollapsibleNavigationBar"
787
+ },
788
+ {
789
+ "id": "navigation-accessory",
790
+ "adapter": "reactNative",
791
+ "platforms": ["iOS", "Android"],
792
+ "contract": "Compact status or action content above a React Native bottom navigation bar",
793
+ "accessibility": "Preserves the semantics of application-owned accessory content and collapses with hidden navigation",
794
+ "symbol": "LumenNavigationAccessory"
795
+ },
796
+ {
797
+ "id": "navigation-bar-scroll-behavior",
798
+ "adapter": "compose",
799
+ "platforms": ["Android"],
800
+ "contract": "Threshold-based nested-scroll visibility state for a Material navigation bar",
801
+ "accessibility": "Stops exposing the navigation bar after its exit transition without consuming descendant scroll input",
802
+ "symbol": "LumenNavigationBarScrollState"
803
+ },
804
+ {
805
+ "id": "navigation-bar-accessory",
806
+ "adapter": "compose",
807
+ "platforms": ["Android"],
808
+ "contract": "Compact token-aware content above Material bottom navigation coordinated with its scroll visibility",
809
+ "accessibility": "Preserves application-owned child semantics and exits the layout with hidden navigation",
810
+ "symbol": "LumenNavigationBarAccessory"
811
+ },
812
+ {
813
+ "id": "adaptive-navigation-scaffold",
814
+ "adapter": "compose",
815
+ "platforms": ["Android"],
816
+ "contract": "Material adaptive navigation that switches between bottom bar and rail from window size and device posture",
817
+ "accessibility": "Uses Material navigation semantics while preserving application-owned destination content and routing",
818
+ "symbol": "LumenAdaptiveNavigationScaffold"
819
+ },
820
+ {
821
+ "id": "floating-action-button",
822
+ "adapter": "compose",
823
+ "platforms": ["Android"],
824
+ "contract": "Material-native floating action with semantic intent, sizing, and optional hide or follow-navigation behavior",
825
+ "accessibility": "Requires a readable icon action description and preserves native button semantics",
826
+ "symbol": "LumenFloatingActionButton"
827
+ },
828
+ {
829
+ "id": "widget-text",
830
+ "adapter": "swiftUI",
831
+ "platforms": ["iOS", "macOS", "watchOS"],
832
+ "contract": "WidgetKit-safe semantic text with native Dynamic Type and rendering-mode adaptation",
833
+ "accessibility": "Preserves localized or verbatim text and native text scaling",
834
+ "symbol": "LumenWidgetText"
835
+ },
836
+ {
837
+ "id": "widget-icon",
838
+ "adapter": "swiftUI",
839
+ "platforms": ["iOS", "macOS", "watchOS"],
840
+ "contract": "WidgetKit-safe SF Symbol treatment with semantic tone and optional label",
841
+ "accessibility": "Decorative by default and labeled when it conveys meaning",
842
+ "symbol": "LumenWidgetIcon"
843
+ },
844
+ {
845
+ "id": "widget-badge",
846
+ "adapter": "swiftUI",
847
+ "platforms": ["iOS", "macOS", "watchOS"],
848
+ "contract": "Compact rendering-mode-aware status badge with optional symbol",
849
+ "accessibility": "Combines the icon and text into one concise status value",
850
+ "symbol": "LumenWidgetBadge"
851
+ },
852
+ {
853
+ "id": "widget-compact-stat",
854
+ "adapter": "swiftUI",
855
+ "platforms": ["iOS", "macOS", "watchOS"],
856
+ "contract": "Compact WidgetKit label and metric treatment with optional semantic icon",
857
+ "accessibility": "Combines the label and value while preserving large-text scaling",
858
+ "symbol": "LumenWidgetCompactStat"
859
+ }
860
+ ]
861
+ }