@stellar-expert/ui-framework 1.9.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 (124) hide show
  1. package/.npmrc +1 -0
  2. package/LICENSE +21 -0
  3. package/README.md +3 -0
  4. package/account/account-address.js +127 -0
  5. package/account/account-address.scss +20 -0
  6. package/account/available-balance.js +21 -0
  7. package/account/identicon.js +91 -0
  8. package/account/identicon.scss +6 -0
  9. package/account/signer-key.js +65 -0
  10. package/api/api-cache.js +5 -0
  11. package/api/explorer-api-call.js +37 -0
  12. package/api/explorer-api-hooks.js +202 -0
  13. package/api/explorer-api-paginated-list-hooks.js +439 -0
  14. package/api/explorer-batch-info-loader.js +85 -0
  15. package/api/explorer-tx-api.js +29 -0
  16. package/asset/amount.js +53 -0
  17. package/asset/asset-icon.js +34 -0
  18. package/asset/asset-issuer.js +22 -0
  19. package/asset/asset-link.js +93 -0
  20. package/asset/asset-link.scss +26 -0
  21. package/asset/asset-list-hooks.js +60 -0
  22. package/asset/asset-meta-hooks.js +78 -0
  23. package/asset/asset-selector.js +72 -0
  24. package/asset/asset-selector.scss +41 -0
  25. package/basic-styles/base.scss +53 -0
  26. package/basic-styles/form.scss +90 -0
  27. package/basic-styles/grid.scss +388 -0
  28. package/basic-styles/link.scss +17 -0
  29. package/basic-styles/lists.scss +68 -0
  30. package/basic-styles/loader.scss +22 -0
  31. package/basic-styles/responsive.scss +29 -0
  32. package/basic-styles/scrollbars.scss +19 -0
  33. package/basic-styles/spacing.scss +50 -0
  34. package/basic-styles/table.scss +104 -0
  35. package/basic-styles/themes.scss +59 -0
  36. package/basic-styles/typography.scss +191 -0
  37. package/basic-styles/variables.scss +26 -0
  38. package/claimable-balance/claimable-balance-claimants.js +12 -0
  39. package/contract/sc-val.js +70 -0
  40. package/contract/wasm-section-parser.js +159 -0
  41. package/contract/wasm-section-reader.js +79 -0
  42. package/contract/xdr-reader.js +148 -0
  43. package/controls/active-icon.scss +23 -0
  44. package/controls/button-group.js +20 -0
  45. package/controls/button-group.scss +48 -0
  46. package/controls/button.js +74 -0
  47. package/controls/button.scss +148 -0
  48. package/controls/code-block.js +35 -0
  49. package/controls/code-block.scss +74 -0
  50. package/controls/dropdown.js +281 -0
  51. package/controls/dropdown.scss +161 -0
  52. package/controls/external-link.js +5 -0
  53. package/controls/info-tooltip.js +17 -0
  54. package/controls/info-tooltip.scss +4 -0
  55. package/controls/slider.js +20 -0
  56. package/controls/slider.scss +22 -0
  57. package/controls/tabs.js +94 -0
  58. package/controls/tabs.scss +73 -0
  59. package/controls/tooltip.js +214 -0
  60. package/controls/tooltip.scss +97 -0
  61. package/controls/update-highlighter.js +28 -0
  62. package/controls/update-highlighter.scss +10 -0
  63. package/date/date-selector.js +44 -0
  64. package/date/elapsed-time.js +22 -0
  65. package/date/utc-timestamp.js +23 -0
  66. package/dex/price-dynamic.js +45 -0
  67. package/dex/price-dynamic.scss +36 -0
  68. package/directory/directory-hooks.js +89 -0
  69. package/effect/effect-description.js +289 -0
  70. package/effect/op-effects-view.js +11 -0
  71. package/effect/op-effects.scss +8 -0
  72. package/errors/error-boundary.js +98 -0
  73. package/fonts/font.scss +23 -0
  74. package/fonts/icons/config.json +1858 -0
  75. package/fonts/icons/icons-embedded.scss +644 -0
  76. package/horizon/horizon-account-helpers.js +104 -0
  77. package/horizon/horizon-client-helpers.js +52 -0
  78. package/horizon/horizon-ledger-helpers.js +36 -0
  79. package/horizon/horizon-orderbook-helpers.js +14 -0
  80. package/horizon/horizon-trades-helper.js +89 -0
  81. package/horizon/horizon-transaction-helpers.js +36 -0
  82. package/index.js +85 -0
  83. package/index.scss +16 -0
  84. package/interaction/autofocus.js +9 -0
  85. package/interaction/block-select.js +54 -0
  86. package/interaction/block-select.scss +24 -0
  87. package/interaction/copy-to-clipboard.js +19 -0
  88. package/interaction/inline-progress.js +16 -0
  89. package/interaction/qr-code.js +45 -0
  90. package/interaction/responsive.js +21 -0
  91. package/interaction/spoiler.js +40 -0
  92. package/interaction/spoiler.scss +9 -0
  93. package/interaction/theme-selector.js +11 -0
  94. package/ledger/ledger-entry-href-formatter.js +22 -0
  95. package/ledger/ledger-entry-link.js +59 -0
  96. package/meta/page-meta-tags.js +229 -0
  97. package/module/dynamic-module.js +48 -0
  98. package/package.json +41 -0
  99. package/state/on-screen-hooks.js +23 -0
  100. package/state/page-visibility-helpers.js +17 -0
  101. package/state/page-visibility-hooks.js +12 -0
  102. package/state/screen-orientation-hooks.js +16 -0
  103. package/state/state-hooks.js +77 -0
  104. package/state/stellar-network-hooks.js +45 -0
  105. package/state/theme.js +29 -0
  106. package/stellar/key-type.js +92 -0
  107. package/stellar/ledger-generic-id.js +40 -0
  108. package/stellar/signature-hint-utils.js +65 -0
  109. package/toast/toast-notification-instance.js +43 -0
  110. package/toast/toast-notification.js +46 -0
  111. package/toast/toast-notifications-block.js +55 -0
  112. package/toast/toast-notifications.scss +166 -0
  113. package/tx/op-accounting-changes.js +27 -0
  114. package/tx/op-description-view.js +925 -0
  115. package/tx/op-description.scss +98 -0
  116. package/tx/op-icon.js +93 -0
  117. package/tx/parser/op-balance-changes.js +62 -0
  118. package/tx/parser/op-descriptor.js +49 -0
  119. package/tx/parser/tx-details-parser.js +75 -0
  120. package/tx/parser/tx-matcher.js +372 -0
  121. package/tx/parser/type-filter-matcher.js +127 -0
  122. package/tx/tx-fee-effect.js +14 -0
  123. package/tx/tx-list-hooks.js +19 -0
  124. package/tx/tx-operations-list.js +105 -0
@@ -0,0 +1,388 @@
1
+ .relative {
2
+ position: relative;
3
+ }
4
+
5
+ .container {
6
+ margin: 0 auto;
7
+ max-width: 140rem;
8
+ padding: 0 $container-padding;
9
+ position: relative;
10
+ width: 100%;
11
+ @media (max-width: $responsive-mobile-browser-width) {
12
+ padding: 0 $container-padding/2;
13
+ }
14
+
15
+ &.narrow {
16
+ max-width: 100rem;
17
+ }
18
+
19
+ &.frame {
20
+ max-width: 50rem;
21
+ }
22
+
23
+ & > .container {
24
+ padding: 0;
25
+ }
26
+ }
27
+
28
+ .row {
29
+ display: flex;
30
+ flex-direction: row;
31
+ flex-wrap: wrap;
32
+ margin-left: -$space-micro;
33
+ width: calc(100% + #{$space-standard});
34
+
35
+ &.row-no-padding {
36
+ padding: 0;
37
+
38
+ & > .column {
39
+ padding: 0;
40
+ }
41
+ }
42
+
43
+ &.row-wrap {
44
+ flex-wrap: wrap;
45
+ }
46
+
47
+ &.row-top {
48
+ align-items: flex-start;
49
+ }
50
+
51
+ &.row-bottom {
52
+ align-items: flex-end;
53
+ }
54
+
55
+ &.row-center {
56
+ align-items: center;
57
+ }
58
+
59
+ &.row-stretch {
60
+ align-items: stretch;
61
+ }
62
+
63
+ &.row-baseline {
64
+ align-items: baseline;
65
+ }
66
+
67
+ @media (max-width: $responsive-mobile-browser-width) {
68
+ flex-direction: column;
69
+ padding: 0;
70
+ width: 100%;
71
+ margin-left: 0;
72
+ }
73
+
74
+ .column {
75
+ display: block;
76
+ flex: 1 1 auto;
77
+ margin-left: 0;
78
+ max-width: 100%;
79
+ width: 100%;
80
+ margin-bottom: inherit;
81
+ padding: 0 $space-micro;
82
+
83
+ &.v-top {
84
+ align-self: flex-start;
85
+ }
86
+
87
+ &.v-bottom {
88
+ align-self: flex-end;
89
+ }
90
+
91
+ &.v-center {
92
+ align-self: center;
93
+ }
94
+
95
+ &.column-offset-10 {
96
+ margin-left: 10%;
97
+ }
98
+
99
+ &.column-offset-20 {
100
+ margin-left: 20%;
101
+ }
102
+
103
+ &.column-offset-25 {
104
+ margin-left: 25%;
105
+ }
106
+
107
+ &.column-offset-33,
108
+ &.column-offset-34 {
109
+ margin-left: 33.3333%;
110
+ }
111
+
112
+ &.column-offset-50 {
113
+ margin-left: 50%;
114
+ }
115
+
116
+ &.column-offset-66,
117
+ &.column-offset-67 {
118
+ margin-left: 66.6666%;
119
+ }
120
+
121
+ &.column-offset-75 {
122
+ margin-left: 75%;
123
+ }
124
+
125
+ &.column-offset-80 {
126
+ margin-left: 80%;
127
+ }
128
+
129
+ &.column-offset-90 {
130
+ margin-left: 90%;
131
+ }
132
+
133
+ &.column-10 {
134
+ flex: 0 0 10%;
135
+ max-width: 10%;
136
+ }
137
+
138
+ &.column-20 {
139
+ flex: 0 0 20%;
140
+ max-width: 20%;
141
+ }
142
+
143
+ &.column-25 {
144
+ flex: 0 0 25%;
145
+ max-width: 25%;
146
+ }
147
+
148
+ &.column-33,
149
+ &.column-34 {
150
+ flex: 0 0 33.3333%;
151
+ max-width: 33.3333%;
152
+ }
153
+
154
+ &.column-40 {
155
+ flex: 0 0 40%;
156
+ max-width: 40%;
157
+ }
158
+
159
+ &.column-50 {
160
+ flex: 0 0 50%;
161
+ max-width: 50%;
162
+ }
163
+
164
+ &.column-60 {
165
+ flex: 0 0 60%;
166
+ max-width: 60%;
167
+ }
168
+
169
+ &.column-66,
170
+ &.column-67 {
171
+ flex: 0 0 66.6666%;
172
+ max-width: 66.6666%;
173
+ }
174
+
175
+ &.column-75 {
176
+ flex: 0 0 75%;
177
+ max-width: 75%;
178
+ }
179
+
180
+ &.column-80 {
181
+ flex: 0 0 80%;
182
+ max-width: 80%;
183
+ }
184
+
185
+ &.column-90 {
186
+ flex: 0 0 90%;
187
+ max-width: 90%;
188
+ }
189
+
190
+ &.column-top {
191
+ align-self: flex-start;
192
+ }
193
+
194
+ &.column-bottom {
195
+ align-self: flex-end;
196
+ }
197
+
198
+ &.column-center {
199
+ align-self: center;
200
+ }
201
+
202
+ @media (max-width: $responsive-mobile-browser-width) {
203
+ margin: 0 !important;
204
+ padding: 0;
205
+ flex: 0 0 100% !important;
206
+ max-width: 100% !important;
207
+ }
208
+ }
209
+ }
210
+
211
+ .dual-layout {
212
+ display: flex;
213
+ flex-direction: row;
214
+ justify-content: space-between;
215
+
216
+ &.vertical {
217
+ flex-direction: column;
218
+ }
219
+
220
+ > * {
221
+ display: block;
222
+ }
223
+ }
224
+
225
+ .v-center-block {
226
+ display: flex;
227
+ flex-direction: column;
228
+ justify-content: center;
229
+ }
230
+
231
+ .block {
232
+ display: block;
233
+ }
234
+
235
+ .inline {
236
+ display: inline;
237
+ }
238
+
239
+ .inline-block {
240
+ display: inline-block;
241
+ }
242
+
243
+ .inline-overflow {
244
+ display: inline-flex;
245
+ max-width: 100%;
246
+ }
247
+
248
+ .flex-row {
249
+ display: flex;
250
+ justify-content: space-between;
251
+ flex-direction: row;
252
+ flex-wrap: wrap;
253
+ }
254
+
255
+ .flex-column {
256
+ display: flex !important;
257
+ flex-direction: column;
258
+ }
259
+
260
+ .h-100 {
261
+ height: 100%;
262
+ }
263
+
264
+ .segment {
265
+ padding: 2rem 3rem;
266
+ position: relative;
267
+ z-index: 0;
268
+
269
+ &:before, &:after {
270
+ content: '';
271
+ display: block;
272
+ position: absolute;
273
+ right: 0;
274
+ bottom: 0;
275
+ top: 0;
276
+ left: 0;
277
+ z-index: -1;
278
+ background: var(--color-alt-bg);
279
+ clip-path: polygon(1.2rem 0, 100% 0, 100% calc(100% - 3.2rem), calc(100% - 1.2rem) 100%, 0 100%, 0 3.2rem);
280
+ }
281
+
282
+ &:after {
283
+ right: -0.6px;
284
+ bottom: -0.6px;
285
+ top: -0.6px;
286
+ left: -0.6px;
287
+ z-index: -2;
288
+ background: var(--color-alt-border);
289
+ }
290
+
291
+ &.blank:before {
292
+ background: var(--color-bg);
293
+ }
294
+
295
+ & > h3 {
296
+ margin-top: -0.2em;
297
+ }
298
+
299
+ &.segment-inline {
300
+ &:before, &:after {
301
+ clip-path: polygon(0.6rem 0, 100% 0, 100% calc(100% - 1.6rem), calc(100% - 0.6rem) 100%, 0 100%, 0 1.6rem);
302
+ }
303
+ }
304
+
305
+ &.success {
306
+ background: none;
307
+
308
+ &:before {
309
+ background: var(--color-success-bg);
310
+ }
311
+ &:after {
312
+ background: var(--color-success);
313
+ opacity: 0.7;
314
+ }
315
+ }
316
+
317
+ &.warning {
318
+ background: none;
319
+
320
+ &:before {
321
+ background: var(--color-warning-bg);
322
+ }
323
+ &:after {
324
+ background: var(--color-warning);
325
+ opacity: 0.7;
326
+ }
327
+ }
328
+
329
+
330
+ &.error {
331
+ background: none;
332
+
333
+ &:before {
334
+ background: var(--color-alert-bg);
335
+ }
336
+ &:after {
337
+ background: var(--color-alert);
338
+ opacity: 0.7;
339
+ }
340
+ }
341
+ }
342
+
343
+ .column > .segment {
344
+ height: 100%;
345
+ }
346
+
347
+ .card {
348
+ background: var(--color-bg);
349
+ padding: 0.3*$space-micro $space-standard $space-standard;
350
+ height: 100%;
351
+ position: relative;
352
+ box-shadow: 0 2px 4px -2px var(--color-backdrop);
353
+
354
+ &:before {
355
+ content: "";
356
+ display: block;
357
+ top: 1em;
358
+ left: 0;
359
+ position: absolute;
360
+ z-index: 1;
361
+ height: 1.3em;
362
+ width: 0;
363
+ border-right: 0.1em solid var(--color-highlight);
364
+ }
365
+
366
+ &.card-blank {
367
+ padding-top: $space-standard;
368
+
369
+ &:before {
370
+ content: none;
371
+ }
372
+ }
373
+
374
+ &.tabs .tabs-header {
375
+ margin-top: 0;
376
+ }
377
+
378
+ hr {
379
+ margin-left: -$space-standard;
380
+ margin-right: -$space-standard;
381
+ }
382
+
383
+ @media (max-width: $responsive-mobile-browser-width) {
384
+ margin-bottom: $space-standard;
385
+ margin-left: -$space-micro;
386
+ margin-right: -$space-micro;
387
+ }
388
+ }
@@ -0,0 +1,17 @@
1
+ a {
2
+ color: var(--color-primary);
3
+ text-decoration: none;
4
+ cursor: pointer;
5
+
6
+ &:hover {
7
+ color: var(--color-highlight);
8
+ }
9
+
10
+ &.disabled {
11
+ cursor: default;
12
+
13
+ &:hover {
14
+ color: var(--color-primary);
15
+ }
16
+ }
17
+ }
@@ -0,0 +1,68 @@
1
+ ul {
2
+ list-style-type: none;
3
+ padding: 0;
4
+ margin: $space-micro 0;
5
+
6
+ &.list {
7
+ list-style-type: disc;
8
+ padding-left: 1em;
9
+
10
+ &.checked {
11
+ list-style-type: none;
12
+ text-align: left;
13
+
14
+ & > li:before {
15
+ content: '✓';
16
+ display: inline-block;
17
+ width: 1em;
18
+ margin-left: -1em;
19
+ user-select: none;
20
+ }
21
+ }
22
+ }
23
+
24
+ &.striped > li:nth-child(2n+1) {
25
+ background: var(--color-border-shadow);
26
+ }
27
+ }
28
+
29
+ ol {
30
+ color: var(--color-dimmed);
31
+ }
32
+
33
+ ol > li > * {
34
+ color: var(--color-text);
35
+ }
36
+
37
+ dl {
38
+ display: block;
39
+ margin: 0;
40
+ line-height: 1.12*$font-line-height-base;
41
+ letter-spacing: -.03em;
42
+
43
+ & > div {
44
+ padding-top: $space-micro;
45
+ }
46
+
47
+ dt {
48
+ color: var(--color-dimmed);
49
+ font-weight: normal;
50
+ display: inline;
51
+ }
52
+
53
+ dd {
54
+ padding-left: .3em;
55
+ margin-left: 0;
56
+ font-weight: normal;
57
+ display: inline;
58
+
59
+ &:after {
60
+ content: '';
61
+ display: block;
62
+ }
63
+
64
+ &:last-child:after {
65
+ content: none;
66
+ }
67
+ }
68
+ }
@@ -0,0 +1,22 @@
1
+ .loader {
2
+ &.micro {
3
+ font-size: 13px;
4
+ }
5
+
6
+ &.cover {
7
+ position: absolute;
8
+ top: 0;
9
+ left: 0;
10
+ width: 100%;
11
+ height: 100%;
12
+ background-color: rgba(255, 255, 255, 0.85);
13
+ z-index: 9999;
14
+ }
15
+
16
+ &.inline {
17
+ margin: 0;
18
+ margin-top: 0.5em;
19
+ display: inline-block;
20
+ vertical-align: bottom;
21
+ }
22
+ }
@@ -0,0 +1,29 @@
1
+ @media (max-width: $responsive-mobile-browser-width) {
2
+ .desktop-only {
3
+ display: none !important;
4
+ }
5
+ .mobile-left {
6
+ text-align: left !important;
7
+ }
8
+ .mobile-center {
9
+ text-align: center !important;
10
+ }
11
+ .mobile-right {
12
+ text-align: right !important;
13
+ }
14
+ }
15
+
16
+ @media (min-width: $responsive-mobile-browser-width) {
17
+ .mobile-only {
18
+ display: none !important;
19
+ }
20
+ .desktop-left {
21
+ text-align: left !important;
22
+ }
23
+ .desktop-center {
24
+ text-align: center !important;
25
+ }
26
+ .desktop-right {
27
+ text-align: right !important;
28
+ }
29
+ }
@@ -0,0 +1,19 @@
1
+ @mixin scrollbars($size, $foreground-color, $background-color) {
2
+ &::-webkit-scrollbar {
3
+ width: $size;
4
+ height: $size;
5
+ }
6
+
7
+ &::-webkit-scrollbar-thumb {
8
+ background: $foreground-color;
9
+ }
10
+
11
+ &::-webkit-scrollbar-track {
12
+ background: $background-color;
13
+ }
14
+
15
+ & {
16
+ scrollbar-face-color: $foreground-color;
17
+ scrollbar-track-color: $background-color;
18
+ }
19
+ }
@@ -0,0 +1,50 @@
1
+ input:not([type=checkbox]),
2
+ select,
3
+ textarea {
4
+ margin-bottom: $space-micro;
5
+ }
6
+
7
+ ol,
8
+ p,
9
+ blockquote,
10
+ pre,
11
+ table {
12
+ margin-bottom: $space-micro;
13
+ }
14
+
15
+ .space {
16
+ margin-top: $space-standard;
17
+ }
18
+
19
+ .micro-space {
20
+ margin-top: $space-micro;
21
+ }
22
+
23
+ .nano-space {
24
+ margin-top: $space-nano;
25
+ }
26
+
27
+ .double-space {
28
+ margin-top: $space-double;
29
+ }
30
+
31
+ .block-indent, .block-indent-screen {
32
+ padding-left: $space-standard;
33
+ }
34
+
35
+ @media (max-width: $responsive-mobile-browser-width) {
36
+ .block-indent-screen {
37
+ padding-left: 0;
38
+ }
39
+ }
40
+
41
+ blockquote {
42
+ border-left: 3px solid var(--color-contrast-border);
43
+ margin-left: -$space-micro;
44
+ padding-left: $space-micro;
45
+ font-style: italic;
46
+ }
47
+
48
+ img {
49
+ max-width: 100%;
50
+ }
@@ -0,0 +1,104 @@
1
+ .table {
2
+ border-collapse: collapse;
3
+ border-radius: $border-radius-input;
4
+ width: 100%;
5
+
6
+ th {
7
+ font-weight: bold;
8
+ font-family: $font-face-header;
9
+ text-align: left;
10
+ vertical-align: middle;
11
+ }
12
+
13
+ thead,
14
+ tr:nth-child(2n) {
15
+ background-color: var(--color-border-shadow);
16
+ transition: background-color 0.1s;
17
+ }
18
+
19
+ thead {
20
+ border-bottom: 1px solid var(--color-contrast-border);
21
+ }
22
+
23
+ td, th {
24
+ padding: .5em .7em;
25
+ border: none;
26
+
27
+ &.collapsing {
28
+ width: 1px;
29
+ }
30
+ }
31
+
32
+ td {
33
+ border-bottom: 1px solid var(--color-contrast-border);
34
+ vertical-align: middle;
35
+ }
36
+
37
+ &.active tbody > tr:hover {
38
+ cursor: pointer;
39
+ background-color: var(--color-alt-bg);
40
+ }
41
+
42
+ &.compact {
43
+ td, th {
44
+ padding: .4em .5em;
45
+ }
46
+ }
47
+
48
+ &.clear {
49
+ tr {
50
+ background-color: transparent;
51
+ }
52
+
53
+ td, th {
54
+ padding: .1em .2em;
55
+ border: none;
56
+ }
57
+ }
58
+
59
+ @media (max-width: $responsive-mobile-browser-width) {
60
+ display: block;
61
+ margin: auto $container-padding/2*-1;
62
+ width: calc(100% + #{$container-padding});
63
+
64
+ thead, th {
65
+ display: none;
66
+ }
67
+
68
+ tbody, td {
69
+ display: block;
70
+ width: 100% !important;
71
+ box-sizing: border-box;
72
+ }
73
+
74
+ tr {
75
+ display: block;
76
+ }
77
+
78
+ td {
79
+ text-align: left !important;
80
+ border: none;
81
+ padding: 0.1em $space-micro !important;
82
+
83
+ &:before {
84
+ content: attr(data-header);
85
+ color: var(--color-dimmed);
86
+ }
87
+
88
+ &:first-child {
89
+ border-top: 1px solid var(--color-contrast-border);
90
+ padding-top: $container-padding !important;
91
+ }
92
+
93
+ &:last-child {
94
+ padding-bottom: $container-padding !important;
95
+ }
96
+ }
97
+
98
+ &.clear {
99
+ td {
100
+ padding: .1em $space-micro !important;
101
+ }
102
+ }
103
+ }
104
+ }