@exponential_app/eui 0.2.0 → 0.3.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.
Files changed (69) hide show
  1. package/catalog/a11y.json +15 -1
  2. package/catalog/core.catalog.json +142 -0
  3. package/catalog/core.schema.json +198 -1
  4. package/catalog/host.json +10 -0
  5. package/catalog/macros.json +541 -1
  6. package/catalog/recipes.json +2 -2
  7. package/catalog/strings.json +5 -0
  8. package/catalog/theme.schema.json +2066 -212
  9. package/conformance/manifest.json +5 -5
  10. package/dist/chunks/{index-gtk2gwsb.js → index-4z7f2bp1.js} +160 -33
  11. package/dist/chunks/{index-gtk2gwsb.js.map → index-4z7f2bp1.js.map} +6 -5
  12. package/dist/chunks/{index-5fmaa0xq.js → index-abcjanhc.js} +629 -3
  13. package/dist/chunks/{index-5fmaa0xq.js.map → index-abcjanhc.js.map} +2 -2
  14. package/dist/chunks/{index-62yzr94z.js → index-dx45asrf.js} +99 -3
  15. package/dist/chunks/{index-62yzr94z.js.map → index-dx45asrf.js.map} +2 -2
  16. package/dist/chunks/{index-bg2jsgjq.js → index-h3zgfghf.js} +304 -6
  17. package/dist/chunks/{index-bg2jsgjq.js.map → index-h3zgfghf.js.map} +2 -2
  18. package/dist/conformance.js +7901 -614
  19. package/dist/conformance.js.map +2 -2
  20. package/dist/entries/prompt.js +2 -2
  21. package/dist/entries/schema.js +2 -2
  22. package/dist/host/index.js +20 -4
  23. package/dist/host/index.js.map +1 -1
  24. package/dist/index.js +46 -5
  25. package/dist/index.js.map +4 -3
  26. package/dist/types/src/catalog.generated.d.ts +23 -3
  27. package/dist/types/src/host/contract.d.ts +17 -0
  28. package/dist/types/src/host/exposes.d.ts +68 -0
  29. package/dist/types/src/host/index.d.ts +1 -0
  30. package/dist/types/src/host/package.d.ts +8 -0
  31. package/dist/types/src/index.d.ts +1 -0
  32. package/dist/types/src/text-clusters.d.ts +11 -0
  33. package/dist/types/src/web/primitives/carousel.d.ts +17 -0
  34. package/dist/types/src/web/primitives/index.d.ts +3 -0
  35. package/dist/types/src/web/primitives/mosaic.d.ts +30 -0
  36. package/dist/types/src/web/primitives/outline.d.ts +22 -0
  37. package/dist/web/index.js +8 -2
  38. package/dist/web/index.js.map +4 -4
  39. package/dist/web/primitives/index.js +59 -1
  40. package/dist/web/primitives/index.js.map +6 -3
  41. package/docs/components.generated.json +150 -1
  42. package/docs/package-format.md +56 -1
  43. package/docs/round-6-contract.md +108 -0
  44. package/docs/themes.generated.json +39 -2
  45. package/fixtures/bind-time.json +1464 -0
  46. package/fixtures/catalog-components.json +96 -0
  47. package/fixtures/catalog-macros.json +1159 -48
  48. package/fixtures/conformance-baseline.json +46073 -44448
  49. package/fixtures/conformance-known.json +76 -64
  50. package/fixtures/host-router.json +539 -1
  51. package/fixtures/kitchen-sink.expanded.json +614 -1
  52. package/fixtures/kitchen-sink.json +69 -1
  53. package/fixtures/primitive-specimens.json +3 -0
  54. package/fixtures/prompt-budget.json +14 -14
  55. package/fixtures/specimens.json +122 -0
  56. package/fixtures/text-clusters.json +65 -0
  57. package/fixtures/theme-recipes.json +4617 -1691
  58. package/fixtures/theme-resolved.json +1154 -2
  59. package/generated/ExponentialUICatalog.generated.kt +13 -13
  60. package/generated/ExponentialUICatalog.generated.swift +13 -13
  61. package/generated/ExponentialUIThemes.generated.kt +7 -7
  62. package/generated/ExponentialUIThemes.generated.swift +7 -7
  63. package/generated/catalog.descriptions.generated.rs +1 -1
  64. package/generated/catalog.generated.rs +18 -18
  65. package/generated/catalog.themes.generated.rs +8 -8
  66. package/generated/core.descriptions.json +96 -0
  67. package/generated/core.runtime.json +86 -0
  68. package/package.json +1 -1
  69. package/themes/neutral.theme.json +288 -0
@@ -77,6 +77,37 @@
77
77
  }
78
78
  }
79
79
  }
80
+ },
81
+ {
82
+ "id": "outline",
83
+ "component": "Outline",
84
+ "props": {
85
+ "caption": "Outline",
86
+ "value": "part-a",
87
+ "items": [
88
+ {
89
+ "id": "current",
90
+ "title": "Current state"
91
+ },
92
+ {
93
+ "id": "part-a",
94
+ "title": "Part A: editor-first creation",
95
+ "count": 5
96
+ },
97
+ {
98
+ "id": "part-b",
99
+ "title": "Part B: MCP for eApps",
100
+ "count": 2
101
+ }
102
+ ]
103
+ },
104
+ "on": {
105
+ "select": {
106
+ "event": {
107
+ "name": "outlineSelect"
108
+ }
109
+ }
110
+ }
80
111
  }
81
112
  ]
82
113
  },
@@ -1676,7 +1707,12 @@
1676
1707
  "component": "Carousel",
1677
1708
  "props": {
1678
1709
  "page": 0,
1679
- "indicators": true
1710
+ "indicators": true,
1711
+ "counter": true,
1712
+ "thumbnails": [
1713
+ "https://example.com/1.jpg",
1714
+ "https://example.com/2.jpg"
1715
+ ]
1680
1716
  },
1681
1717
  "children": [
1682
1718
  {
@@ -1699,6 +1735,38 @@
1699
1735
  }
1700
1736
  ]
1701
1737
  },
1738
+ {
1739
+ "id": "mosaic",
1740
+ "component": "Mosaic",
1741
+ "props": {
1742
+ "label": "Screens",
1743
+ "pictures": [
1744
+ {
1745
+ "src": "https://example.com/1.jpg",
1746
+ "alt": "One"
1747
+ },
1748
+ {
1749
+ "src": "https://example.com/2.jpg",
1750
+ "alt": "Two"
1751
+ },
1752
+ {
1753
+ "src": "https://example.com/3.jpg",
1754
+ "alt": "Three"
1755
+ },
1756
+ {
1757
+ "src": "https://example.com/4.jpg",
1758
+ "alt": "Four"
1759
+ }
1760
+ ]
1761
+ },
1762
+ "on": {
1763
+ "select": {
1764
+ "event": {
1765
+ "name": "mosaicSelect"
1766
+ }
1767
+ }
1768
+ }
1769
+ },
1702
1770
  {
1703
1771
  "id": "video",
1704
1772
  "component": "Video",
@@ -20,6 +20,9 @@
20
20
  { "id": "plain/progress", "primitive": "plain", "viewport": { "width": 900, "height": 200 }, "open": false, "interact": null },
21
21
  { "id": "plain/rings", "primitive": "plain", "viewport": { "width": 900, "height": 200 }, "open": false, "interact": null },
22
22
  { "id": "plain/voice-wave", "primitive": "plain", "viewport": { "width": 900, "height": 300 }, "open": false, "interact": null },
23
+ { "id": "plain/outline", "primitive": "plain", "viewport": { "width": 900, "height": 300 }, "open": false, "interact": null },
24
+ { "id": "plain/mosaic", "primitive": "plain", "viewport": { "width": 900, "height": 1400 }, "open": false, "interact": null },
25
+ { "id": "plain/carousel-extras", "primitive": "plain", "viewport": { "width": 900, "height": 400 }, "open": false, "interact": null },
23
26
  { "id": "plain/disclosure-header", "primitive": "plain", "viewport": { "width": 900, "height": 300 }, "open": false, "interact": "hover" },
24
27
  { "id": "plain/choice-tiles", "primitive": "plain", "viewport": { "width": 900, "height": 500 }, "open": false, "interact": null },
25
28
  { "id": "plain/code-block", "primitive": "plain", "viewport": { "width": 900, "height": 700 }, "open": false, "interact": null },
@@ -1,32 +1,32 @@
1
1
  {
2
2
  "$comment": "AUTO-GENERATED by packages/exponential-ui/scripts/generate.ts — do not edit.\nSource of truth: packages/exponential-ui/catalog/core.catalog.json (+ tokens.json, style.json, basic-map.json, strings.json, locale.json, code.json, a11y.json, layout.json). The size of catalogPrompt() on record: prompt.test.ts fails when the full prompt passes budgetTokens (cut descriptions before components) or when these numbers drift from the catalog without being regenerated. tokens = chars / 4, an estimate. VAPP-108: `index` = sections rules + index + functions + style (the components then come one at a time through componentPrompt, `perComponent`), `rules` = the rules alone.",
3
- "budgetTokens": 7900,
3
+ "budgetTokens": 8034,
4
4
  "full": {
5
- "components": 87,
6
- "chars": 31599,
7
- "tokens": 7900
5
+ "components": 89,
6
+ "chars": 32133,
7
+ "tokens": 8034
8
8
  },
9
9
  "lite": {
10
- "components": 61,
11
- "chars": 22948,
12
- "tokens": 5737
10
+ "components": 62,
11
+ "chars": 23193,
12
+ "tokens": 5799
13
13
  },
14
14
  "terse": {
15
- "components": 87,
16
- "chars": 23419,
17
- "tokens": 5855
15
+ "components": 89,
16
+ "chars": 23849,
17
+ "tokens": 5963
18
18
  },
19
19
  "index": {
20
- "components": 87,
21
- "chars": 11639,
22
- "tokens": 2910
20
+ "components": 89,
21
+ "chars": 11812,
22
+ "tokens": 2953
23
23
  },
24
24
  "rules": {
25
25
  "chars": 2060,
26
26
  "tokens": 515
27
27
  },
28
28
  "perComponent": {
29
- "mean": 320,
29
+ "mean": 319,
30
30
  "max": 1097,
31
31
  "meanTokens": 80
32
32
  }
@@ -3232,6 +3232,67 @@
3232
3232
  ]
3233
3233
  }
3234
3234
  },
3235
+ {
3236
+ "id": "exponential-ui-mosaic",
3237
+ "component": "Mosaic",
3238
+ "title": "Mosaic",
3239
+ "node": {
3240
+ "id": "specimen-mosaic",
3241
+ "component": "Box",
3242
+ "style": {
3243
+ "display": "flex",
3244
+ "flexDirection": "column",
3245
+ "gap": "$spacing.lg",
3246
+ "padding": "$spacing.xl",
3247
+ "maxWidth": 720
3248
+ },
3249
+ "children": [
3250
+ {
3251
+ "id": "specimen-mosaic-case-0",
3252
+ "component": "Stack",
3253
+ "props": {
3254
+ "direction": "vertical",
3255
+ "gap": "xs",
3256
+ "align": "stretch"
3257
+ },
3258
+ "children": [
3259
+ {
3260
+ "id": "specimen-mosaic-case-0-label",
3261
+ "component": "Text",
3262
+ "props": {
3263
+ "text": "example",
3264
+ "variant": "caption"
3265
+ }
3266
+ },
3267
+ {
3268
+ "id": "c0-mosaic",
3269
+ "component": "Mosaic",
3270
+ "props": {
3271
+ "pictures": [
3272
+ {
3273
+ "src": "https://example.com/editor.png",
3274
+ "alt": "Editor"
3275
+ },
3276
+ {
3277
+ "src": "https://example.com/preview.png",
3278
+ "alt": "Preview"
3279
+ },
3280
+ {
3281
+ "src": "https://example.com/data.png",
3282
+ "alt": "Data"
3283
+ },
3284
+ {
3285
+ "src": "https://example.com/versions.png",
3286
+ "alt": "Versions"
3287
+ }
3288
+ ]
3289
+ }
3290
+ }
3291
+ ]
3292
+ }
3293
+ ]
3294
+ }
3295
+ },
3235
3296
  {
3236
3297
  "id": "exponential-ui-tabs",
3237
3298
  "component": "Tabs",
@@ -4495,6 +4556,67 @@
4495
4556
  ]
4496
4557
  }
4497
4558
  },
4559
+ {
4560
+ "id": "exponential-ui-outline",
4561
+ "component": "Outline",
4562
+ "title": "Outline",
4563
+ "node": {
4564
+ "id": "specimen-outline",
4565
+ "component": "Box",
4566
+ "style": {
4567
+ "display": "flex",
4568
+ "flexDirection": "column",
4569
+ "gap": "$spacing.lg",
4570
+ "padding": "$spacing.xl",
4571
+ "maxWidth": 720
4572
+ },
4573
+ "children": [
4574
+ {
4575
+ "id": "specimen-outline-case-0",
4576
+ "component": "Stack",
4577
+ "props": {
4578
+ "direction": "vertical",
4579
+ "gap": "xs",
4580
+ "align": "stretch"
4581
+ },
4582
+ "children": [
4583
+ {
4584
+ "id": "specimen-outline-case-0-label",
4585
+ "component": "Text",
4586
+ "props": {
4587
+ "text": "example",
4588
+ "variant": "caption"
4589
+ }
4590
+ },
4591
+ {
4592
+ "id": "c0-outline",
4593
+ "component": "Outline",
4594
+ "props": {
4595
+ "caption": "Outline",
4596
+ "value": "part-a",
4597
+ "items": [
4598
+ {
4599
+ "id": "current",
4600
+ "title": "Current state"
4601
+ },
4602
+ {
4603
+ "id": "part-a",
4604
+ "title": "Part A: editor-first creation",
4605
+ "count": 5
4606
+ },
4607
+ {
4608
+ "id": "part-b",
4609
+ "title": "Part B: MCP for eApps",
4610
+ "count": 2
4611
+ }
4612
+ ]
4613
+ }
4614
+ }
4615
+ ]
4616
+ }
4617
+ ]
4618
+ }
4619
+ },
4498
4620
  {
4499
4621
  "id": "exponential-ui-stepper",
4500
4622
  "component": "Stepper",
@@ -0,0 +1,65 @@
1
+ {
2
+ "$comment": "YO-30: text is laid out per grapheme CLUSTER (UAX #29 extended), never per code point. (1) Font fallback: a cluster the primary face cannot shape whole (Nunito has no U+0329 COMBINING VERTICAL LINE BELOW) shapes whole in the first fallback face that covers every character of it, so a combining mark attaches to its base (browsers, CoreText, minikin do this; gpui falls back per character and eui-gpui cuts its runs per cluster, crates/eui-gpui/src/fallback.rs). `attach` = the clusters whose marks must paint ON their base: same face as the base, inside the base's advance (never a free-standing glyph after it). (2) CSS `letter-spacing` follows clusters: `tracked` = how many times `letterSpacing` is added (a mark adds none; bidi controls none). Hand-written; src/text-clusters.ts is the reference, every renderer replays it (eui-gpui tests/text_clusters.rs with the conformance fonts, SwiftUI Round2Suites, Compose Round2Suites).",
3
+ "family": "Nunito",
4
+ "cases": [
5
+ {
6
+ "name": "IPA Spätzle (the Spezl sense line)",
7
+ "text": "/ˈʃpɛtsl̩/",
8
+ "clusters": [
9
+ "/",
10
+ "ˈ",
11
+ "ʃ",
12
+ "p",
13
+ "ɛ",
14
+ "t",
15
+ "s",
16
+ "l̩",
17
+ "/"
18
+ ],
19
+ "tracked": 9,
20
+ "attach": [
21
+ 7
22
+ ]
23
+ },
24
+ {
25
+ "name": "decomposed accents Nunito covers",
26
+ "text": "Spätzle",
27
+ "clusters": [
28
+ "S",
29
+ "p",
30
+ "ä",
31
+ "t",
32
+ "z",
33
+ "l",
34
+ "e"
35
+ ],
36
+ "tracked": 7,
37
+ "attach": [
38
+ 2
39
+ ]
40
+ },
41
+ {
42
+ "name": "two marks on one base",
43
+ "text": "ń̩",
44
+ "clusters": [
45
+ "ń̩"
46
+ ],
47
+ "tracked": 1,
48
+ "attach": [
49
+ 0
50
+ ]
51
+ },
52
+ {
53
+ "name": "a bidi mark takes no letter-spacing",
54
+ "text": "‎abc",
55
+ "clusters": [
56
+ "‎",
57
+ "a",
58
+ "b",
59
+ "c"
60
+ ],
61
+ "tracked": 3,
62
+ "attach": []
63
+ }
64
+ ]
65
+ }