@onekeyfe/react-native-native-list 3.0.157-alpha.249 → 3.0.157-alpha.250

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 (130) hide show
  1. package/README.md +21 -5
  2. package/android/src/main/java/com/onekey/nativelist/NativeListAccessoryStack.kt +711 -0
  3. package/android/src/main/java/com/onekey/nativelist/NativeListActionRenderer.kt +169 -0
  4. package/android/src/main/java/com/onekey/nativelist/NativeListActivityRenderer.kt +243 -0
  5. package/android/src/main/java/com/onekey/nativelist/NativeListAdapter.kt +20 -6
  6. package/android/src/main/java/com/onekey/nativelist/NativeListDataRowRenderer.kt +487 -0
  7. package/android/src/main/java/com/onekey/nativelist/NativeListIdentityRenderer.kt +820 -0
  8. package/android/src/main/java/com/onekey/nativelist/NativeListImageSlot.kt +147 -0
  9. package/android/src/main/java/com/onekey/nativelist/NativeListLeadingVisual.kt +453 -0
  10. package/android/src/main/java/com/onekey/nativelist/NativeListMarketRenderer.kt +997 -0
  11. package/android/src/main/java/com/onekey/nativelist/NativeListMediaTileRenderer.kt +234 -0
  12. package/android/src/main/java/com/onekey/nativelist/NativeListMessageRenderer.kt +232 -0
  13. package/android/src/main/java/com/onekey/nativelist/NativeListMetricCardRenderer.kt +551 -0
  14. package/android/src/main/java/com/onekey/nativelist/NativeListModels.kt +24 -0
  15. package/android/src/main/java/com/onekey/nativelist/NativeListPrimitives.kt +475 -0
  16. package/android/src/main/java/com/onekey/nativelist/NativeListRailRenderer.kt +143 -0
  17. package/android/src/main/java/com/onekey/nativelist/NativeListRendererRegistry.kt +42 -0
  18. package/android/src/main/java/com/onekey/nativelist/NativeListRendererRowView.kt +415 -0
  19. package/android/src/main/java/com/onekey/nativelist/NativeListResolvedText.kt +163 -0
  20. package/android/src/main/java/com/onekey/nativelist/NativeListRowHost.kt +70 -0
  21. package/android/src/main/java/com/onekey/nativelist/NativeListSectionHeaderRenderer.kt +748 -0
  22. package/android/src/main/java/com/onekey/nativelist/NativeListSystemRenderer.kt +464 -0
  23. package/android/src/main/java/com/onekey/nativelist/NativeListTextView.kt +25 -0
  24. package/android/src/main/java/com/onekey/nativelist/NativeListView.kt +174 -104
  25. package/android/src/main/java/com/onekey/nativelist/NativeListWalletGroupRenderer.kt +407 -0
  26. package/android/src/test/java/com/margelo/nitro/nativelist/NativeListSelectorBackgroundColorTest.kt +34 -0
  27. package/docs/DESIGN.md +518 -9
  28. package/docs/MIGRATION_BASELINE.md +117 -0
  29. package/docs/ROW_TEMPLATES.md +359 -0
  30. package/docs/SPEC.md +358 -0
  31. package/docs/STYLE_SPEC.md +978 -0
  32. package/docs/images/list-capabilities.svg +39 -0
  33. package/docs/images/row-action.svg +17 -0
  34. package/docs/images/row-activity.svg +24 -0
  35. package/docs/images/row-data.svg +24 -0
  36. package/docs/images/row-identity.svg +25 -0
  37. package/docs/images/row-market.svg +23 -0
  38. package/docs/images/row-media-tile.svg +26 -0
  39. package/docs/images/row-message.svg +20 -0
  40. package/docs/images/row-metric-card.svg +33 -0
  41. package/docs/images/row-rail.svg +18 -0
  42. package/docs/images/row-section-header.svg +19 -0
  43. package/docs/images/row-style-regions.svg +30 -0
  44. package/docs/images/row-system.svg +30 -0
  45. package/docs/images/row-wallet-group.svg +26 -0
  46. package/ios/NativeListAccessoryStack.swift +680 -0
  47. package/ios/NativeListActionRenderer.swift +108 -0
  48. package/ios/NativeListActivityRenderer.swift +179 -0
  49. package/ios/NativeListDataRowRenderer.swift +444 -0
  50. package/ios/NativeListIdentityRenderer.swift +685 -0
  51. package/ios/NativeListImageSlot.swift +140 -0
  52. package/ios/NativeListLeadingVisual.swift +372 -0
  53. package/ios/NativeListMarketRenderer.swift +698 -0
  54. package/ios/NativeListMediaTileRenderer.swift +184 -0
  55. package/ios/NativeListMessageRenderer.swift +168 -0
  56. package/ios/NativeListMetricCardRenderer.swift +420 -0
  57. package/ios/NativeListModels.swift +32 -0
  58. package/ios/NativeListRailRenderer.swift +152 -0
  59. package/ios/NativeListRendererCell.swift +311 -0
  60. package/ios/NativeListRendererRegistry.swift +50 -0
  61. package/ios/NativeListResolvedText.swift +122 -0
  62. package/ios/NativeListRowHost.swift +63 -0
  63. package/ios/NativeListSectionHeaderRenderer.swift +708 -0
  64. package/ios/NativeListSystemRenderer.swift +568 -0
  65. package/ios/NativeListTextLabel.swift +42 -0
  66. package/ios/NativeListTextStyles.swift +236 -0
  67. package/ios/NativeListWalletGroupRenderer.swift +255 -0
  68. package/ios/RNCNativeListView.swift +111 -180
  69. package/lib/module/models.js +54 -0
  70. package/lib/module/validation.js +324 -26
  71. package/lib/module/web/NativeListWebEngine.js +148 -936
  72. package/lib/module/web/templates/ActionRowRenderer.js +97 -0
  73. package/lib/module/web/templates/ActivityRowRenderer.js +95 -0
  74. package/lib/module/web/templates/DataRowRenderer.js +145 -0
  75. package/lib/module/web/templates/IdentityRowRenderer.js +289 -0
  76. package/lib/module/web/templates/MarketRowRenderer.js +310 -0
  77. package/lib/module/web/templates/MediaTileRowRenderer.js +132 -0
  78. package/lib/module/web/templates/MessageRowRenderer.js +165 -0
  79. package/lib/module/web/templates/MetricCardRowRenderer.js +172 -0
  80. package/lib/module/web/templates/RailRowRenderer.js +98 -0
  81. package/lib/module/web/templates/RowContainerStyle.js +100 -0
  82. package/lib/module/web/templates/RowElements.js +93 -0
  83. package/lib/module/web/templates/RowRendererRegistry.js +70 -0
  84. package/lib/module/web/templates/RowText.js +121 -0
  85. package/lib/module/web/templates/RowVisual.js +43 -0
  86. package/lib/module/web/templates/SectionHeaderRowRenderer.js +146 -0
  87. package/lib/module/web/templates/SystemRowRenderer.js +161 -0
  88. package/lib/module/web/templates/WalletGroupRowRenderer.js +96 -0
  89. package/lib/typescript/src/models.d.ts +166 -13
  90. package/lib/typescript/src/web/NativeListWebEngine.d.ts +18 -16
  91. package/lib/typescript/src/web/templates/ActionRowRenderer.d.ts +15 -0
  92. package/lib/typescript/src/web/templates/ActivityRowRenderer.d.ts +15 -0
  93. package/lib/typescript/src/web/templates/DataRowRenderer.d.ts +15 -0
  94. package/lib/typescript/src/web/templates/IdentityRowRenderer.d.ts +16 -0
  95. package/lib/typescript/src/web/templates/MarketRowRenderer.d.ts +30 -0
  96. package/lib/typescript/src/web/templates/MediaTileRowRenderer.d.ts +15 -0
  97. package/lib/typescript/src/web/templates/MessageRowRenderer.d.ts +44 -0
  98. package/lib/typescript/src/web/templates/MetricCardRowRenderer.d.ts +15 -0
  99. package/lib/typescript/src/web/templates/RailRowRenderer.d.ts +28 -0
  100. package/lib/typescript/src/web/templates/RowContainerStyle.d.ts +9 -0
  101. package/lib/typescript/src/web/templates/RowElements.d.ts +38 -0
  102. package/lib/typescript/src/web/templates/RowRendererRegistry.d.ts +83 -0
  103. package/lib/typescript/src/web/templates/RowText.d.ts +9 -0
  104. package/lib/typescript/src/web/templates/RowVisual.d.ts +20 -0
  105. package/lib/typescript/src/web/templates/SectionHeaderRowRenderer.d.ts +15 -0
  106. package/lib/typescript/src/web/templates/SystemRowRenderer.d.ts +16 -0
  107. package/lib/typescript/src/web/templates/WalletGroupRowRenderer.d.ts +20 -0
  108. package/package.json +3 -3
  109. package/src/models.ts +281 -19
  110. package/src/validation.ts +501 -46
  111. package/src/web/NativeListWebEngine.ts +361 -1932
  112. package/src/web/templates/ActionRowRenderer.ts +123 -0
  113. package/src/web/templates/ActivityRowRenderer.ts +159 -0
  114. package/src/web/templates/DataRowRenderer.ts +212 -0
  115. package/src/web/templates/IdentityRowRenderer.ts +527 -0
  116. package/src/web/templates/MarketRowRenderer.ts +467 -0
  117. package/src/web/templates/MediaTileRowRenderer.ts +182 -0
  118. package/src/web/templates/MessageRowRenderer.ts +306 -0
  119. package/src/web/templates/MetricCardRowRenderer.ts +337 -0
  120. package/src/web/templates/RailRowRenderer.ts +136 -0
  121. package/src/web/templates/RowContainerStyle.ts +131 -0
  122. package/src/web/templates/RowElements.ts +160 -0
  123. package/src/web/templates/RowRendererRegistry.ts +111 -0
  124. package/src/web/templates/RowText.ts +181 -0
  125. package/src/web/templates/RowVisual.ts +115 -0
  126. package/src/web/templates/SectionHeaderRowRenderer.ts +243 -0
  127. package/src/web/templates/SystemRowRenderer.ts +282 -0
  128. package/src/web/templates/WalletGroupRowRenderer.ts +131 -0
  129. package/android/src/main/java/com/onekey/nativelist/NativeListRowView.kt +0 -4538
  130. package/ios/NativeListCell.swift +0 -4300
@@ -0,0 +1,39 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="900" height="532" viewBox="0 0 900 532" role="img" aria-labelledby="title desc">
2
+ <title id="title">NativeList · container capability boundaries</title>
3
+ <desc id="desc">Structural schematic. Blue is content; green is controls; dashed slots are optional. Not a device screenshot or a pixel specification.</desc>
4
+ <rect width="900" height="100%" rx="16" fill="#f5f7fa"/>
5
+ <g font-family="Arial, Helvetica, sans-serif">
6
+ <text x="24" y="36" font-size="22" fill="#172a3a" font-weight="600">NativeList · container capability boundaries</text>
7
+ <rect x="24" y="62" width="458" height="418" rx="8" fill="#fff" stroke="#bfcbd5"/>
8
+ <rect x="42" y="80" width="422" height="44" rx="8" fill="#eaf1fb" stroke="#91add0"/>
9
+ <text x="54" y="107.0" font-size="15" fill="#294766" font-weight="400">Header placement · container responsibility</text>
10
+ <rect x="42" y="140" width="356" height="254" rx="8" fill="#ffffff" stroke="#93a8ba"/>
11
+ <text x="56" y="164" font-size="14" fill="#64798b" font-weight="600">Scrolling viewport</text>
12
+ <rect x="56" y="180" width="328" height="40" rx="8" fill="#eaf1fb" stroke="#91add0"/>
13
+ <text x="68" y="205.0" font-size="15" fill="#294766" font-weight="400">Section heading · structural row</text>
14
+ <rect x="56" y="232" width="328" height="44" rx="8" fill="#eaf1fb" stroke="#91add0"/>
15
+ <text x="68" y="259.0" font-size="15" fill="#294766" font-weight="400">identity · internal slots only</text>
16
+ <rect x="56" y="286" width="328" height="44" rx="8" fill="#eaf1fb" stroke="#91add0"/>
17
+ <text x="68" y="313.0" font-size="15" fill="#294766" font-weight="400">market / dataRow · internal slots only</text>
18
+ <rect x="56" y="342" width="328" height="36" rx="8" fill="#eaf1fb" stroke="#91add0" stroke-dasharray="5 4"/>
19
+ <text x="68" y="365.0" font-size="15" fill="#294766" font-weight="400">Next section …</text>
20
+ <rect x="412" y="140" width="52" height="254" rx="8" fill="#e9f5ee" stroke="#72a38a"/>
21
+ <text x="424" y="250.0" font-size="15" fill="#2c6245" font-weight="400">A</text>
22
+ <text x="424" y="272.0" font-size="15" fill="#2c6245" font-weight="400">B</text>
23
+ <text x="424" y="294.0" font-size="15" fill="#2c6245" font-weight="400">C</text>
24
+ <rect x="42" y="412" width="422" height="48" rx="8" fill="#eaf1fb" stroke="#91add0"/>
25
+ <text x="54" y="441.0" font-size="15" fill="#294766" font-weight="400">Footer placement · fixed or scrolling</text>
26
+ <text x="518" y="96" font-size="20" fill="#172a3a" font-weight="600">Common container capabilities</text>
27
+ <text x="518" y="138" font-size="16" fill="#243f55" font-weight="400">Header / footer positioning</text>
28
+ <text x="518" y="176" font-size="16" fill="#243f55" font-weight="400">Section membership and sticky headers</text>
29
+ <text x="518" y="214" font-size="16" fill="#243f55" font-weight="400">Scroll, restoration, refresh, pagination</text>
30
+ <text x="518" y="252" font-size="16" fill="#243f55" font-weight="400">Indexed bar and its host / hit area</text>
31
+ <text x="518" y="290" font-size="16" fill="#243f55" font-weight="400">Padding, separators and grouped cards</text>
32
+ <path d="M512 312 L866 312" stroke="#9bb0c0" stroke-width="1.5"/>
33
+ <text x="518" y="348" font-size="18" fill="#294766" font-weight="600">Row template</text>
34
+ <text x="518" y="378" font-size="16" fill="#243f55" font-weight="400">Owns slot structure and local style only.</text>
35
+ <text x="518" y="410" font-size="16" fill="#243f55" font-weight="400">Changing content templates preserves</text>
36
+ <text x="518" y="435" font-size="16" fill="#243f55" font-weight="400">the container’s public capabilities.</text>
37
+ <text x="24" y="512" font-size="13" fill="#64798b" font-weight="400">Ownership diagram, not new API: generic header slot is still absent; fixedFooter currently accepts action/system.</text>
38
+ </g>
39
+ </svg>
@@ -0,0 +1,17 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="900" height="226" viewBox="0 0 900 226" role="img" aria-labelledby="title desc">
2
+ <title id="title">action · content reusable in rows / footer / empty state</title>
3
+ <desc id="desc">Structural schematic. Blue is content; green is controls; dashed slots are optional. Not a device screenshot or a pixel specification.</desc>
4
+ <rect width="900" height="100%" rx="16" fill="#f5f7fa"/>
5
+ <g font-family="Arial, Helvetica, sans-serif">
6
+ <text x="24" y="36" font-size="22" fill="#172a3a" font-weight="600">action · content reusable in rows / footer / empty state</text>
7
+ <rect x="24" y="66" width="852" height="108" rx="8" fill="#fff" stroke="#bfcbd5"/>
8
+ <rect x="40" y="84" width="104" height="72" rx="8" fill="#eaf1fb" stroke="#91add0" stroke-dasharray="5 4"/>
9
+ <text x="52" y="125.0" font-size="15" fill="#294766" font-weight="400">icon</text>
10
+ <rect x="160" y="84" width="438" height="72" rx="8" fill="#e9f5ee" stroke="#72a38a"/>
11
+ <text x="172" y="125.0" font-size="15" fill="#2c6245" font-weight="400">title → actionKey</text>
12
+ <rect x="614" y="84" width="242" height="72" rx="8" fill="#e9f5ee" stroke="#72a38a" stroke-dasharray="5 4"/>
13
+ <text x="626" y="114.0" font-size="15" fill="#2c6245" font-weight="400">trailing value /</text>
14
+ <text x="626" y="136.0" font-size="15" fill="#2c6245" font-weight="400">accessories / checkbox</text>
15
+ <text x="24" y="206" font-size="13" fill="#64798b" font-weight="400">Placement is chosen by the container. Styling the action never makes it fixed or sticky.</text>
16
+ </g>
17
+ </svg>
@@ -0,0 +1,24 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="900" height="324" viewBox="0 0 900 324" role="img" aria-labelledby="title desc">
2
+ <title id="title">activity · record plus row-local actions</title>
3
+ <desc id="desc">Structural schematic. Blue is content; green is controls; dashed slots are optional. Not a device screenshot or a pixel specification.</desc>
4
+ <rect width="900" height="100%" rx="16" fill="#f5f7fa"/>
5
+ <g font-family="Arial, Helvetica, sans-serif">
6
+ <text x="24" y="36" font-size="22" fill="#172a3a" font-weight="600">activity · record plus row-local actions</text>
7
+ <rect x="24" y="66" width="852" height="210" rx="8" fill="#fff" stroke="#bfcbd5"/>
8
+ <rect x="40" y="84" width="110" height="106" rx="8" fill="#eaf1fb" stroke="#91add0"/>
9
+ <text x="52" y="142.0" font-size="15" fill="#294766" font-weight="400">leading</text>
10
+ <rect x="166" y="84" width="368" height="42" rx="8" fill="#eaf1fb" stroke="#91add0"/>
11
+ <text x="178" y="110.0" font-size="15" fill="#294766" font-weight="400">title</text>
12
+ <rect x="166" y="138" width="368" height="52" rx="8" fill="#eaf1fb" stroke="#91add0" stroke-dasharray="5 4"/>
13
+ <text x="178" y="169.0" font-size="15" fill="#294766" font-weight="400">description</text>
14
+ <rect x="552" y="84" width="304" height="42" rx="8" fill="#eaf1fb" stroke="#91add0" stroke-dasharray="5 4"/>
15
+ <text x="564" y="110.0" font-size="15" fill="#294766" font-weight="400">primaryAmount</text>
16
+ <rect x="552" y="138" width="304" height="52" rx="8" fill="#eaf1fb" stroke="#91add0" stroke-dasharray="5 4"/>
17
+ <text x="564" y="169.0" font-size="15" fill="#294766" font-weight="400">secondaryAmount</text>
18
+ <rect x="40" y="210" width="246" height="46" rx="8" fill="#eaf1fb" stroke="#91add0" stroke-dasharray="5 4"/>
19
+ <text x="52" y="238.0" font-size="15" fill="#294766" font-weight="400">status</text>
20
+ <rect x="304" y="210" width="552" height="46" rx="8" fill="#e9f5ee" stroke="#72a38a" stroke-dasharray="5 4"/>
21
+ <text x="316" y="238.0" font-size="15" fill="#2c6245" font-weight="400">footerActions · up to 3 buttons</text>
22
+ <text x="24" y="304" font-size="13" fill="#64798b" font-weight="400">footerActions are inside this row. They are unrelated to the shared list footer.</text>
23
+ </g>
24
+ </svg>
@@ -0,0 +1,24 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="900" height="272" viewBox="0 0 900 272" role="img" aria-labelledby="title desc">
2
+ <title id="title">dataRow · stable column geometry</title>
3
+ <desc id="desc">Structural schematic. Blue is content; green is controls; dashed slots are optional. Not a device screenshot or a pixel specification.</desc>
4
+ <rect width="900" height="100%" rx="16" fill="#f5f7fa"/>
5
+ <g font-family="Arial, Helvetica, sans-serif">
6
+ <text x="24" y="36" font-size="22" fill="#172a3a" font-weight="600">dataRow · stable column geometry</text>
7
+ <rect x="24" y="66" width="852" height="154" rx="8" fill="#fff" stroke="#bfcbd5"/>
8
+ <rect x="40" y="84" width="68" height="116" rx="8" fill="#eaf1fb" stroke="#91add0" stroke-dasharray="5 4"/>
9
+ <text x="52" y="147.0" font-size="15" fill="#294766" font-weight="400">index</text>
10
+ <rect x="120" y="84" width="100" height="116" rx="8" fill="#eaf1fb" stroke="#91add0" stroke-dasharray="5 4"/>
11
+ <text x="132" y="147.0" font-size="15" fill="#294766" font-weight="400">leading</text>
12
+ <rect x="234" y="84" width="216" height="116" rx="8" fill="#eaf1fb" stroke="#91add0"/>
13
+ <text x="246" y="136.0" font-size="15" fill="#294766" font-weight="400">columns[0].text</text>
14
+ <text x="246" y="158.0" font-size="15" fill="#294766" font-weight="400">secondaryText?</text>
15
+ <rect x="464" y="84" width="216" height="116" rx="8" fill="#eaf1fb" stroke="#91add0"/>
16
+ <text x="476" y="136.0" font-size="15" fill="#294766" font-weight="400">columns[1].text</text>
17
+ <text x="476" y="158.0" font-size="15" fill="#294766" font-weight="400">secondaryText?</text>
18
+ <rect x="696" y="84" width="72" height="116" rx="8" fill="#eaf1fb" stroke="#91add0" stroke-dasharray="5 4"/>
19
+ <text x="708" y="147.0" font-size="15" fill="#294766" font-weight="400">…</text>
20
+ <rect x="782" y="84" width="74" height="116" rx="8" fill="#e9f5ee" stroke="#72a38a" stroke-dasharray="5 4"/>
21
+ <text x="794" y="147.0" font-size="15" fill="#2c6245" font-weight="400">check</text>
22
+ <text x="24" y="252" font-size="13" fill="#64798b" font-weight="400">2–4 columns; order, weight and alignment are data/layout inputs, not arbitrary text-style overrides.</text>
23
+ </g>
24
+ </svg>
@@ -0,0 +1,25 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="900" height="292" viewBox="0 0 900 292" role="img" aria-labelledby="title desc">
2
+ <title id="title">identity · fixed leading / text / trailing regions</title>
3
+ <desc id="desc">Structural schematic. Blue is content; green is controls; dashed slots are optional. Not a device screenshot or a pixel specification.</desc>
4
+ <rect width="900" height="100%" rx="16" fill="#f5f7fa"/>
5
+ <g font-family="Arial, Helvetica, sans-serif">
6
+ <text x="24" y="36" font-size="22" fill="#172a3a" font-weight="600">identity · fixed leading / text / trailing regions</text>
7
+ <rect x="24" y="66" width="852" height="178" rx="8" fill="#fff" stroke="#bfcbd5"/>
8
+ <rect x="40" y="92" width="106" height="114" rx="8" fill="#eaf1fb" stroke="#91add0"/>
9
+ <text x="52" y="143.0" font-size="15" fill="#294766" font-weight="400">leading</text>
10
+ <text x="52" y="165.0" font-size="15" fill="#294766" font-weight="400">visual</text>
11
+ <rect x="162" y="82" width="358" height="40" rx="8" fill="#eaf1fb" stroke="#91add0"/>
12
+ <text x="174" y="107.0" font-size="15" fill="#294766" font-weight="400">title</text>
13
+ <rect x="532" y="82" width="112" height="40" rx="8" fill="#eaf1fb" stroke="#91add0" stroke-dasharray="5 4"/>
14
+ <text x="544" y="107.0" font-size="15" fill="#294766" font-weight="400">badges</text>
15
+ <rect x="162" y="134" width="358" height="40" rx="8" fill="#eaf1fb" stroke="#91add0" stroke-dasharray="5 4"/>
16
+ <text x="174" y="159.0" font-size="15" fill="#294766" font-weight="400">subtitle</text>
17
+ <rect x="162" y="186" width="358" height="40" rx="8" fill="#eaf1fb" stroke="#91add0" stroke-dasharray="5 4"/>
18
+ <text x="174" y="211.0" font-size="15" fill="#294766" font-weight="400">tertiary</text>
19
+ <rect x="662" y="90" width="194" height="126" rx="8" fill="#e9f5ee" stroke="#72a38a" stroke-dasharray="5 4"/>
20
+ <text x="674" y="136.0" font-size="15" fill="#2c6245" font-weight="400">trailing</text>
21
+ <text x="674" y="158.0" font-size="15" fill="#2c6245" font-weight="400">value / valuePair</text>
22
+ <text x="674" y="180.0" font-size="15" fill="#2c6245" font-weight="400">checkbox / menu</text>
23
+ <text x="24" y="272" font-size="13" fill="#64798b" font-weight="400">Variants: default, accountSelector, networkSelector, walletSidebar. Styles preserve each variant’s structure.</text>
24
+ </g>
25
+ </svg>
@@ -0,0 +1,23 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="900" height="260" viewBox="0 0 900 260" role="img" aria-labelledby="title desc">
2
+ <title id="title">market · identity / price / change</title>
3
+ <desc id="desc">Structural schematic. Blue is content; green is controls; dashed slots are optional. Not a device screenshot or a pixel specification.</desc>
4
+ <rect width="900" height="100%" rx="16" fill="#f5f7fa"/>
5
+ <g font-family="Arial, Helvetica, sans-serif">
6
+ <text x="24" y="36" font-size="22" fill="#172a3a" font-weight="600">market · identity / price / change</text>
7
+ <rect x="24" y="66" width="852" height="142" rx="8" fill="#fff" stroke="#bfcbd5"/>
8
+ <rect x="40" y="84" width="100" height="106" rx="8" fill="#eaf1fb" stroke="#91add0"/>
9
+ <text x="52" y="142.0" font-size="15" fill="#294766" font-weight="400">leading</text>
10
+ <rect x="156" y="84" width="238" height="42" rx="8" fill="#eaf1fb" stroke="#91add0"/>
11
+ <text x="168" y="110.0" font-size="15" fill="#294766" font-weight="400">title</text>
12
+ <rect x="408" y="84" width="102" height="42" rx="8" fill="#eaf1fb" stroke="#91add0" stroke-dasharray="5 4"/>
13
+ <text x="420" y="110.0" font-size="15" fill="#294766" font-weight="400">badges</text>
14
+ <rect x="156" y="140" width="354" height="50" rx="8" fill="#eaf1fb" stroke="#91add0" stroke-dasharray="5 4"/>
15
+ <text x="168" y="170.0" font-size="15" fill="#294766" font-weight="400">subtitle</text>
16
+ <rect x="526" y="84" width="170" height="106" rx="8" fill="#eaf1fb" stroke="#91add0"/>
17
+ <text x="538" y="142.0" font-size="15" fill="#294766" font-weight="400">price</text>
18
+ <rect x="712" y="84" width="144" height="106" rx="8" fill="#eaf1fb" stroke="#91add0"/>
19
+ <text x="724" y="131.0" font-size="15" fill="#294766" font-weight="400">change</text>
20
+ <text x="724" y="153.0" font-size="15" fill="#294766" font-weight="400">text + tone</text>
21
+ <text x="24" y="240" font-size="13" fill="#64798b" font-weight="400">Explicit variants: token, stock, perp. Local metrics keep price/change inside the allocated row frame.</text>
22
+ </g>
23
+ </svg>
@@ -0,0 +1,26 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="900" height="380" viewBox="0 0 900 380" role="img" aria-labelledby="title desc">
2
+ <title id="title">mediaTile · media over caption metadata</title>
3
+ <desc id="desc">Structural schematic. Blue is content; green is controls; dashed slots are optional. Not a device screenshot or a pixel specification.</desc>
4
+ <rect width="900" height="100%" rx="16" fill="#f5f7fa"/>
5
+ <g font-family="Arial, Helvetica, sans-serif">
6
+ <text x="24" y="36" font-size="22" fill="#172a3a" font-weight="600">mediaTile · media over caption metadata</text>
7
+ <rect x="24" y="66" width="456" height="262" rx="8" fill="#fff" stroke="#bfcbd5"/>
8
+ <rect x="40" y="82" width="424" height="148" rx="8" fill="#eaf1fb" stroke="#91add0" stroke-dasharray="5 4"/>
9
+ <text x="52" y="161.0" font-size="15" fill="#294766" font-weight="400">image / imageState</text>
10
+ <rect x="54" y="94" width="100" height="38" rx="8" fill="#eaf1fb" stroke="#91add0" stroke-dasharray="5 4"/>
11
+ <text x="66" y="118.0" font-size="15" fill="#294766" font-weight="400">badge</text>
12
+ <rect x="358" y="94" width="92" height="38" rx="8" fill="#e9f5ee" stroke="#72a38a" stroke-dasharray="5 4"/>
13
+ <text x="370" y="118.0" font-size="15" fill="#2c6245" font-weight="400">close</text>
14
+ <rect x="350" y="180" width="100" height="38" rx="8" fill="#eaf1fb" stroke="#91add0" stroke-dasharray="5 4"/>
15
+ <text x="362" y="204.0" font-size="15" fill="#294766" font-weight="400">network</text>
16
+ <rect x="40" y="244" width="424" height="32" rx="8" fill="#eaf1fb" stroke="#91add0"/>
17
+ <text x="52" y="265.0" font-size="15" fill="#294766" font-weight="400">title</text>
18
+ <rect x="40" y="288" width="424" height="24" rx="8" fill="#eaf1fb" stroke="#91add0" stroke-dasharray="5 4"/>
19
+ <text x="52" y="305.0" font-size="15" fill="#294766" font-weight="400">subtitle</text>
20
+ <text x="516" y="112" font-size="19" fill="#243f55" font-weight="600">gallery / browserPreview</text>
21
+ <text x="516" y="152" font-size="16" fill="#243f55" font-weight="400">The container owns grid spans.</text>
22
+ <text x="516" y="184" font-size="16" fill="#243f55" font-weight="400">Overlay anchors stay fixed.</text>
23
+ <text x="516" y="216" font-size="16" fill="#243f55" font-weight="400">Caption remains below the media.</text>
24
+ <text x="24" y="360" font-size="13" fill="#64798b" font-weight="400">Schematic shows one tile; row style does not choose grid columns or change tile placement.</text>
25
+ </g>
26
+ </svg>
@@ -0,0 +1,20 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="900" height="272" viewBox="0 0 900 272" role="img" aria-labelledby="title desc">
2
+ <title id="title">message · bounded text with time / thumbnail</title>
3
+ <desc id="desc">Structural schematic. Blue is content; green is controls; dashed slots are optional. Not a device screenshot or a pixel specification.</desc>
4
+ <rect width="900" height="100%" rx="16" fill="#f5f7fa"/>
5
+ <g font-family="Arial, Helvetica, sans-serif">
6
+ <text x="24" y="36" font-size="22" fill="#172a3a" font-weight="600">message · bounded text with time / thumbnail</text>
7
+ <rect x="24" y="66" width="852" height="154" rx="8" fill="#fff" stroke="#bfcbd5"/>
8
+ <rect x="40" y="84" width="110" height="116" rx="8" fill="#eaf1fb" stroke="#91add0" stroke-dasharray="5 4"/>
9
+ <text x="52" y="147.0" font-size="15" fill="#294766" font-weight="400">leading</text>
10
+ <rect x="166" y="84" width="430" height="40" rx="8" fill="#eaf1fb" stroke="#91add0"/>
11
+ <text x="178" y="109.0" font-size="15" fill="#294766" font-weight="400">title</text>
12
+ <rect x="608" y="84" width="98" height="40" rx="8" fill="#eaf1fb" stroke="#91add0"/>
13
+ <text x="620" y="109.0" font-size="15" fill="#294766" font-weight="400">time</text>
14
+ <rect x="166" y="136" width="540" height="64" rx="8" fill="#eaf1fb" stroke="#91add0"/>
15
+ <text x="178" y="173.0" font-size="15" fill="#294766" font-weight="400">body · bounded line count</text>
16
+ <rect x="722" y="84" width="134" height="116" rx="8" fill="#eaf1fb" stroke="#91add0" stroke-dasharray="5 4"/>
17
+ <text x="734" y="147.0" font-size="15" fill="#294766" font-weight="400">thumbnail</text>
18
+ <text x="24" y="252" font-size="13" fill="#64798b" font-weight="400">Timestamp and thumbnail retain their regions; body wrapping cannot move controls or adjacent rows.</text>
19
+ </g>
20
+ </svg>
@@ -0,0 +1,33 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="900" height="356" viewBox="0 0 900 356" role="img" aria-labelledby="title desc">
2
+ <title id="title">metricCard · standard and named composite variants</title>
3
+ <desc id="desc">Structural schematic. Blue is content; green is controls; dashed slots are optional. Not a device screenshot or a pixel specification.</desc>
4
+ <rect width="900" height="100%" rx="16" fill="#f5f7fa"/>
5
+ <g font-family="Arial, Helvetica, sans-serif">
6
+ <text x="24" y="36" font-size="22" fill="#172a3a" font-weight="600">metricCard · standard and named composite variants</text>
7
+ <rect x="24" y="66" width="358" height="238" rx="8" fill="#fff" stroke="#bfcbd5"/>
8
+ <rect x="40" y="84" width="326" height="40" rx="8" fill="#eaf1fb" stroke="#91add0"/>
9
+ <text x="52" y="109.0" font-size="15" fill="#294766" font-weight="400">title · small label</text>
10
+ <rect x="40" y="138" width="326" height="66" rx="8" fill="#eaf1fb" stroke="#91add0"/>
11
+ <text x="52" y="176.0" font-size="15" fill="#294766" font-weight="400">value · large number</text>
12
+ <rect x="40" y="218" width="158" height="64" rx="8" fill="#eaf1fb" stroke="#91add0" stroke-dasharray="5 4"/>
13
+ <text x="52" y="255.0" font-size="15" fill="#294766" font-weight="400">subtitle</text>
14
+ <rect x="212" y="218" width="154" height="64" rx="8" fill="#eaf1fb" stroke="#91add0" stroke-dasharray="5 4"/>
15
+ <text x="224" y="255.0" font-size="15" fill="#294766" font-weight="400">trend</text>
16
+ <rect x="402" y="66" width="474" height="238" rx="8" fill="#fff" stroke="#bfcbd5"/>
17
+ <rect x="418" y="84" width="442" height="40" rx="8" fill="#eaf1fb" stroke="#91add0"/>
18
+ <text x="430" y="109.0" font-size="15" fill="#294766" font-weight="400">title · composite heading</text>
19
+ <rect x="418" y="138" width="214" height="50" rx="8" fill="#eaf1fb" stroke="#91add0"/>
20
+ <text x="430" y="157.0" font-size="15" fill="#294766" font-weight="400">metrics[0]</text>
21
+ <text x="430" y="179.0" font-size="15" fill="#294766" font-weight="400">label / value</text>
22
+ <rect x="646" y="138" width="214" height="50" rx="8" fill="#eaf1fb" stroke="#91add0"/>
23
+ <text x="658" y="157.0" font-size="15" fill="#294766" font-weight="400">metrics[1]</text>
24
+ <text x="658" y="179.0" font-size="15" fill="#294766" font-weight="400">label / value</text>
25
+ <rect x="418" y="202" width="442" height="24" rx="8" fill="#eaf1fb" stroke="#91add0" stroke-dasharray="5 4"/>
26
+ <text x="430" y="219.0" font-size="15" fill="#294766" font-weight="400">divider or progress</text>
27
+ <rect x="418" y="240" width="214" height="48" rx="8" fill="#eaf1fb" stroke="#91add0" stroke-dasharray="5 4"/>
28
+ <text x="430" y="269.0" font-size="15" fill="#294766" font-weight="400">metrics[2…]</text>
29
+ <rect x="646" y="240" width="214" height="48" rx="8" fill="#eaf1fb" stroke="#91add0" stroke-dasharray="5 4"/>
30
+ <text x="658" y="269.0" font-size="15" fill="#294766" font-weight="400">metrics[3…]</text>
31
+ <text x="24" y="336" font-size="13" fill="#64798b" font-weight="400">Composite activity/performance layouts remain fixed. Standard-card style coverage does not prove composite support.</text>
32
+ </g>
33
+ </svg>
@@ -0,0 +1,18 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="900" height="216" viewBox="0 0 900 216" role="img" aria-labelledby="title desc">
2
+ <title id="title">rail · compact navigation / status item</title>
3
+ <desc id="desc">Structural schematic. Blue is content; green is controls; dashed slots are optional. Not a device screenshot or a pixel specification.</desc>
4
+ <rect width="900" height="100%" rx="16" fill="#f5f7fa"/>
5
+ <g font-family="Arial, Helvetica, sans-serif">
6
+ <text x="24" y="36" font-size="22" fill="#172a3a" font-weight="600">rail · compact navigation / status item</text>
7
+ <rect x="24" y="68" width="852" height="94" rx="8" fill="#fff" stroke="#bfcbd5"/>
8
+ <rect x="40" y="84" width="112" height="62" rx="8" fill="#eaf1fb" stroke="#91add0"/>
9
+ <text x="52" y="120.0" font-size="15" fill="#294766" font-weight="400">visual</text>
10
+ <rect x="166" y="84" width="334" height="62" rx="8" fill="#eaf1fb" stroke="#91add0"/>
11
+ <text x="178" y="120.0" font-size="15" fill="#294766" font-weight="400">title</text>
12
+ <rect x="516" y="84" width="154" height="62" rx="8" fill="#eaf1fb" stroke="#91add0" stroke-dasharray="5 4"/>
13
+ <text x="528" y="120.0" font-size="15" fill="#294766" font-weight="400">badge</text>
14
+ <rect x="686" y="84" width="170" height="62" rx="8" fill="#eaf1fb" stroke="#91add0" stroke-dasharray="5 4"/>
15
+ <text x="698" y="120.0" font-size="15" fill="#294766" font-weight="400">status</text>
16
+ <text x="24" y="196" font-size="13" fill="#64798b" font-weight="400">Compact template regions; the list container supplies scroll orientation and reorder orchestration.</text>
17
+ </g>
18
+ </svg>
@@ -0,0 +1,19 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="900" height="254" viewBox="0 0 900 254" role="img" aria-labelledby="title desc">
2
+ <title id="title">sectionHeader · shared structural heading</title>
3
+ <desc id="desc">Structural schematic. Blue is content; green is controls; dashed slots are optional. Not a device screenshot or a pixel specification.</desc>
4
+ <rect width="900" height="100%" rx="16" fill="#f5f7fa"/>
5
+ <g font-family="Arial, Helvetica, sans-serif">
6
+ <text x="24" y="36" font-size="22" fill="#172a3a" font-weight="600">sectionHeader · shared structural heading</text>
7
+ <rect x="24" y="66" width="852" height="138" rx="8" fill="#fff" stroke="#bfcbd5"/>
8
+ <rect x="40" y="84" width="476" height="40" rx="8" fill="#eaf1fb" stroke="#91add0"/>
9
+ <text x="52" y="109.0" font-size="15" fill="#294766" font-weight="400">title</text>
10
+ <rect x="40" y="138" width="476" height="48" rx="8" fill="#eaf1fb" stroke="#91add0" stroke-dasharray="5 4"/>
11
+ <text x="52" y="167.0" font-size="15" fill="#294766" font-weight="400">subtitle</text>
12
+ <rect x="532" y="84" width="206" height="102" rx="8" fill="#eaf1fb" stroke="#91add0" stroke-dasharray="5 4"/>
13
+ <text x="544" y="140.0" font-size="15" fill="#294766" font-weight="400">value</text>
14
+ <rect x="754" y="84" width="102" height="102" rx="8" fill="#e9f5ee" stroke="#72a38a" stroke-dasharray="5 4"/>
15
+ <text x="766" y="129.0" font-size="15" fill="#2c6245" font-weight="400">icon /</text>
16
+ <text x="766" y="151.0" font-size="15" fill="#2c6245" font-weight="400">check</text>
17
+ <text x="24" y="234" font-size="13" fill="#64798b" font-weight="400">sectionKey/indexTitle are structural metadata. The list owns pinning, membership and the indexed bar.</text>
18
+ </g>
19
+ </svg>
@@ -0,0 +1,30 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="1040" height="430" viewBox="0 0 1040 430">
2
+ <rect width="1040" height="430" fill="#f8fafc"/>
3
+ <g font-family="Arial, sans-serif" fill="#172b4d">
4
+ <text x="36" y="42" font-size="24" font-weight="700">Row style: shared surface and semantic regions</text>
5
+ <text x="36" y="70" font-size="15" fill="#53657d">Template owns order and grouping. container.height can define the row height.</text>
6
+ <rect x="40" y="122" width="960" height="194" rx="18" fill="#eaf3ff" stroke="#3878ba" stroke-width="3"/>
7
+ <rect x="70" y="152" width="900" height="134" rx="6" fill="none" stroke="#8298b5" stroke-dasharray="6 4"/>
8
+ <rect x="90" y="178" width="80" height="80" rx="12" fill="#b2cdeb"/>
9
+ <text x="108" y="224" font-size="17">image</text>
10
+ <path d="M178 220H228" stroke="#3878ba" stroke-width="2"/>
11
+ <text x="174" y="172" font-size="12">leadingGap</text>
12
+ <rect x="240" y="164" width="490" height="112" rx="5" fill="#fff" stroke="#b2cdeb"/>
13
+ <text x="256" y="190" font-size="17" font-weight="700">Title text</text>
14
+ <rect x="376" y="172" width="66" height="24" rx="4" fill="#dcf0db"/>
15
+ <text x="386" y="189" font-size="13">badge</text>
16
+ <text x="463" y="188" font-size="13" fill="#53657d">titleBadgeGap</text>
17
+ <path d="M254 199V211" stroke="#3878ba" stroke-width="2"/>
18
+ <text x="270" y="208" font-size="12" fill="#53657d">lineGap</text>
19
+ <text x="256" y="229" font-size="15">Body: lines 1 / 2 / 3, tail or clip</text>
20
+ <text x="256" y="253" font-size="15">lineHeight separates lines inside this field</text>
21
+ <rect x="760" y="187" width="110" height="58" rx="6" fill="#fff" stroke="#b2cdeb"/>
22
+ <text x="785" y="221" font-size="15">value</text>
23
+ <path d="M879 217H902" stroke="#3878ba" stroke-width="2"/>
24
+ <circle cx="931" cy="217" r="18" fill="#b2cdeb"/>
25
+ <text x="796" y="269" font-size="13" fill="#53657d">trailingGap</text>
26
+ <text x="40" y="107" font-size="15" fill="#3878ba">container: height / background / opacity / cornerRadius / borderWidth / borderColor</text>
27
+ <text x="42" y="347" font-size="15">Dashed area = content after horizontalPadding / verticalPadding.</text>
28
+ <text x="42" y="374" font-size="15">contentVerticalAlignment: top / center / bottom in the padded row.</text>
29
+ <text x="42" y="401" font-size="15">Text alignment stays inside its region; offsetY shifts only glyphs, without changing spacing.</text>
30
+ </g></svg>
@@ -0,0 +1,30 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="900" height="386" viewBox="0 0 900 386" role="img" aria-labelledby="title desc">
2
+ <title id="title">system · bounded state variants</title>
3
+ <desc id="desc">Structural schematic. Blue is content; green is controls; dashed slots are optional. Not a device screenshot or a pixel specification.</desc>
4
+ <rect width="900" height="100%" rx="16" fill="#f5f7fa"/>
5
+ <g font-family="Arial, Helvetica, sans-serif">
6
+ <text x="24" y="36" font-size="22" fill="#172a3a" font-weight="600">system · bounded state variants</text>
7
+ <rect x="24" y="66" width="852" height="274" rx="8" fill="#fff" stroke="#bfcbd5"/>
8
+ <rect x="40" y="82" width="242" height="48" rx="8" fill="#eaf1fb" stroke="#91add0"/>
9
+ <text x="52" y="111.0" font-size="15" fill="#294766" font-weight="400">loading</text>
10
+ <rect x="298" y="82" width="558" height="48" rx="8" fill="#eaf1fb" stroke="#91add0"/>
11
+ <text x="310" y="111.0" font-size="15" fill="#294766" font-weight="400">skeleton / spinner + optional message</text>
12
+ <rect x="40" y="144" width="242" height="48" rx="8" fill="#eaf1fb" stroke="#91add0"/>
13
+ <text x="52" y="173.0" font-size="15" fill="#294766" font-weight="400">retry</text>
14
+ <rect x="298" y="144" width="362" height="48" rx="8" fill="#eaf1fb" stroke="#91add0"/>
15
+ <text x="310" y="173.0" font-size="15" fill="#294766" font-weight="400">message</text>
16
+ <rect x="676" y="144" width="180" height="48" rx="8" fill="#e9f5ee" stroke="#72a38a" stroke-dasharray="5 4"/>
17
+ <text x="688" y="173.0" font-size="15" fill="#2c6245" font-weight="400">actionText</text>
18
+ <rect x="40" y="206" width="242" height="48" rx="8" fill="#eaf1fb" stroke="#91add0"/>
19
+ <text x="52" y="235.0" font-size="15" fill="#294766" font-weight="400">warning</text>
20
+ <rect x="298" y="206" width="558" height="48" rx="8" fill="#eaf1fb" stroke="#91add0"/>
21
+ <text x="310" y="235.0" font-size="15" fill="#294766" font-weight="400">title + message</text>
22
+ <rect x="40" y="268" width="242" height="52" rx="8" fill="#eaf1fb" stroke="#91add0"/>
23
+ <text x="52" y="299.0" font-size="15" fill="#294766" font-weight="400">noMatch / end</text>
24
+ <rect x="298" y="268" width="260" height="52" rx="8" fill="#eaf1fb" stroke="#91add0"/>
25
+ <text x="310" y="299.0" font-size="15" fill="#294766" font-weight="400">message</text>
26
+ <rect x="574" y="268" width="282" height="52" rx="8" fill="#eaf1fb" stroke="#91add0"/>
27
+ <text x="586" y="299.0" font-size="15" fill="#294766" font-weight="400">spacer: height only</text>
28
+ <text x="24" y="366" font-size="13" fill="#64798b" font-weight="400">Variants are mutually exclusive. Refresh/pagination capability is owned by the list, not by a loading row.</text>
29
+ </g>
30
+ </svg>
@@ -0,0 +1,26 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="900" height="342" viewBox="0 0 900 342" role="img" aria-labelledby="title desc">
2
+ <title id="title">walletGroup · a composite wallet family</title>
3
+ <desc id="desc">Structural schematic. Blue is content; green is controls; dashed slots are optional. Not a device screenshot or a pixel specification.</desc>
4
+ <rect width="900" height="100%" rx="16" fill="#f5f7fa"/>
5
+ <g font-family="Arial, Helvetica, sans-serif">
6
+ <text x="24" y="36" font-size="22" fill="#172a3a" font-weight="600">walletGroup · a composite wallet family</text>
7
+ <rect x="24" y="66" width="852" height="226" rx="8" fill="#fff" stroke="#bfcbd5"/>
8
+ <rect x="44" y="84" width="250" height="62" rx="8" fill="#eaf1fb" stroke="#91add0"/>
9
+ <text x="56" y="109.0" font-size="15" fill="#294766" font-weight="400">parent: identity</text>
10
+ <text x="56" y="131.0" font-size="15" fill="#294766" font-weight="400">walletSidebar</text>
11
+ <rect x="320" y="84" width="534" height="62" rx="8" fill="#eaf1fb" stroke="#91add0"/>
12
+ <text x="332" y="120.0" font-size="15" fill="#294766" font-weight="400">Parent key equals the walletGroup key</text>
13
+ <rect x="68" y="160" width="226" height="48" rx="8" fill="#eaf1fb" stroke="#91add0"/>
14
+ <text x="80" y="189.0" font-size="15" fill="#294766" font-weight="400">children[0]: identity</text>
15
+ <rect x="320" y="160" width="534" height="48" rx="8" fill="#eaf1fb" stroke="#91add0"/>
16
+ <text x="332" y="189.0" font-size="15" fill="#294766" font-weight="400">Member text uses children[0].style</text>
17
+ <rect x="68" y="222" width="226" height="48" rx="8" fill="#eaf1fb" stroke="#91add0" stroke-dasharray="5 4"/>
18
+ <text x="80" y="251.0" font-size="15" fill="#294766" font-weight="400">children[1…]: identity</text>
19
+ <rect x="320" y="222" width="534" height="48" rx="8" fill="#eaf1fb" stroke="#91add0" stroke-dasharray="5 4"/>
20
+ <text x="332" y="251.0" font-size="15" fill="#294766" font-weight="400">Fixed parent-first membership</text>
21
+ <path d="M54 148 L54 247" stroke="#9bb0c0" stroke-width="1.5"/>
22
+ <path d="M54 185 L66 185" stroke="#9bb0c0" stroke-width="1.5"/>
23
+ <path d="M54 247 L66 247" stroke="#9bb0c0" stroke-width="1.5"/>
24
+ <text x="24" y="322" font-size="13" fill="#64798b" font-weight="400">Group style is box-only. This template does not own the list’s general sections or header/footer.</text>
25
+ </g>
26
+ </svg>