@stellar-expert/ui-framework 1.16.8 → 1.19.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 (85) hide show
  1. package/README.md +1168 -3
  2. package/account/account-address.js +127 -127
  3. package/account/available-balance.js +22 -22
  4. package/account/identicon.js +90 -90
  5. package/account/signer-key.js +65 -64
  6. package/api/explorer-api-hooks.js +209 -202
  7. package/api/explorer-api-paginated-list-hooks.js +441 -440
  8. package/api/explorer-batch-info-loader.js +111 -85
  9. package/api/explorer-tx-api.js +28 -28
  10. package/api/ledger-stream.js +15 -0
  11. package/asset/amount.js +56 -56
  12. package/asset/asset-icon.js +41 -41
  13. package/asset/asset-issuer.js +21 -21
  14. package/asset/asset-link.js +107 -107
  15. package/asset/asset-list-hooks.js +59 -59
  16. package/asset/asset-meta-hooks.js +88 -88
  17. package/asset/asset-selector.js +72 -71
  18. package/claimable-balance/claimable-balance-claimants.js +23 -18
  19. package/contract/contract-api.js +15 -0
  20. package/contract/invocation-info-view.js +10 -2
  21. package/contract/sc-val.js +131 -107
  22. package/controls/button-group.js +25 -19
  23. package/controls/button.js +93 -78
  24. package/controls/code-block.js +42 -34
  25. package/controls/dropdown.js +318 -287
  26. package/controls/external-link.js +10 -4
  27. package/controls/info-tooltip.js +23 -16
  28. package/controls/slider.js +29 -19
  29. package/controls/tabs.js +94 -94
  30. package/controls/tooltip.js +244 -240
  31. package/controls/update-highlighter.js +32 -27
  32. package/date/date-selector.js +56 -54
  33. package/date/elapsed-time.js +28 -21
  34. package/dex/price-dynamic.js +53 -44
  35. package/directory/directory-hooks.js +109 -97
  36. package/effect/effect-description.js +346 -344
  37. package/errors/error-boundary.js +110 -97
  38. package/filter/editors/account-filter-view.js +20 -0
  39. package/filter/editors/asset-filter-view.js +9 -0
  40. package/filter/editors/timestamp-filter-view.js +34 -0
  41. package/filter/editors/type-filter-view.js +148 -0
  42. package/filter/filter-editors.js +102 -0
  43. package/filter/filter-view.js +218 -0
  44. package/filter/filter.scss +57 -0
  45. package/horizon/horizon-account-helpers.js +104 -104
  46. package/horizon/horizon-ledger-helpers.js +35 -35
  47. package/horizon/horizon-trades-helper.js +88 -88
  48. package/horizon/horizon-transaction-helpers.js +36 -36
  49. package/index.d.ts +1271 -0
  50. package/index.js +95 -93
  51. package/interaction/accordion.js +43 -35
  52. package/interaction/autofocus.js +13 -9
  53. package/interaction/block-select.js +64 -53
  54. package/interaction/copy-to-clipboard.js +25 -18
  55. package/interaction/inline-progress.js +20 -15
  56. package/interaction/qr-code.js +34 -34
  57. package/interaction/responsive.js +20 -20
  58. package/interaction/spoiler.js +52 -39
  59. package/interaction/theme-selector.js +13 -10
  60. package/ledger/ledger-entry-href-formatter.js +27 -26
  61. package/ledger/ledger-entry-link.js +93 -58
  62. package/ledger/ledger-info-parser.js +46 -18
  63. package/meta/page-meta-tags.js +243 -238
  64. package/module/dynamic-module.js +47 -47
  65. package/package.json +71 -40
  66. package/state/on-screen-hooks.js +22 -22
  67. package/state/page-visibility-helpers.js +29 -16
  68. package/state/page-visibility-hooks.js +13 -11
  69. package/state/screen-orientation-hooks.js +19 -15
  70. package/state/state-hooks.js +76 -76
  71. package/state/stellar-network-hooks.js +56 -44
  72. package/state/theme.js +29 -28
  73. package/stellar/key-type.js +92 -91
  74. package/stellar/ledger-generic-id.js +39 -39
  75. package/stellar/signature-hint-utils.js +65 -65
  76. package/toast/toast-notifications-block.js +59 -59
  77. package/tx/op-description-view.js +945 -942
  78. package/tx/op-icon.js +98 -98
  79. package/tx/parser/op-balance-changes.js +66 -66
  80. package/tx/parser/op-descriptor.js +51 -48
  81. package/tx/parser/tx-details-parser.js +81 -81
  82. package/tx/parser/tx-matcher.js +371 -371
  83. package/tx/parser/type-filter-matcher.js +126 -126
  84. package/tx/tx-list-hooks.js +32 -18
  85. package/tx/tx-operations-list.js +117 -116
@@ -1,79 +1,94 @@
1
- import React from 'react'
2
- import PropTypes from 'prop-types'
3
- import cn from 'classnames'
4
- import './button.scss'
5
-
6
- export const Button = React.memo(function Button({href, onClick, block, outline, clear, stackable, small, disabled, loading, className, children, ...op}) {
7
- const c = cn('button', {
8
- small,
9
- disabled,
10
- loading,
11
- 'button-block': block,
12
- 'button-outline': outline,
13
- 'button-clear': clear,
14
- stackable
15
- }, className)
16
- const props = {className: c, onClick, ...op}
17
- if (href) {
18
- props.onClick = function (e) {
19
- e.preventDefault()
20
- return false
21
- }
22
- return <a href={href} {...props}>{children}</a>
23
- }
24
- if (disabled) {
25
- props.disabled = true
26
- }
27
- return <button {...props}>{children}</button>
28
- })
29
-
30
- Button.propTypes = {
31
- /**
32
- * Button link - renders the button as A tag; if not set, BUTTON tag is rendered instead
33
- */
34
- href: PropTypes.string,
35
- /**
36
- * Click handler
37
- */
38
- onClick: PropTypes.func,
39
- /**
40
- * Whether to render the button as block element
41
- */
42
- block: PropTypes.bool,
43
- /**
44
- * Render only a thin outline instead of the color-filled button
45
- */
46
- outline: PropTypes.bool,
47
- /**
48
- * Do not render an outline - just the text
49
- */
50
- clear: PropTypes.bool,
51
- /**
52
- * Whether buttons should look stackable on mobile devices
53
- */
54
- stackable: PropTypes.bool,
55
- /**
56
- * Renders a small button
57
- */
58
- small: PropTypes.bool,
59
- /**
60
- * Whether the button is currently disabled
61
- */
62
- disabled: PropTypes.bool,
63
- /**
64
- * Show loading animation on the button
65
- */
66
- loading: PropTypes.bool,
67
- /**
68
- * Externally provided CSS classes
69
- */
70
- className: PropTypes.string,
71
- /**
72
- * Tooltip text
73
- */
74
- title: PropTypes.string,
75
- /**
76
- * Text inside the button
77
- */
78
- children: PropTypes.any.isRequired
1
+ import React from 'react'
2
+ import PropTypes from 'prop-types'
3
+ import cn from 'classnames'
4
+ import './button.scss'
5
+
6
+ /**
7
+ * Versatile button component rendered as `<button>` or `<a>` tag
8
+ * @param {Object} props
9
+ * @param {string} [props.href] - Link URL; renders as `<a>` tag when set
10
+ * @param {function} [props.onClick] - Click handler
11
+ * @param {boolean} [props.block] - Render as a block-level element
12
+ * @param {boolean} [props.outline] - Render with outline style instead of filled
13
+ * @param {boolean} [props.clear] - Render with no outline, text only
14
+ * @param {boolean} [props.stackable] - Stack buttons on mobile devices
15
+ * @param {boolean} [props.small] - Render a smaller button
16
+ * @param {boolean} [props.disabled] - Disable the button
17
+ * @param {boolean} [props.loading] - Show loading animation
18
+ * @param {string} [props.className] - Additional CSS classes
19
+ * @param {*} props.children - Button content
20
+ */
21
+ export const Button = React.memo(function Button({href, onClick, block, outline, clear, stackable, small, disabled, loading, className, children, ...op}) {
22
+ const c = cn('button', {
23
+ small,
24
+ disabled,
25
+ loading,
26
+ 'button-block': block,
27
+ 'button-outline': outline,
28
+ 'button-clear': clear,
29
+ stackable
30
+ }, className)
31
+ const props = {className: c, onClick, ...op}
32
+ if (href) {
33
+ props.onClick = function (e) {
34
+ e.preventDefault()
35
+ return false
36
+ }
37
+ return <a href={href} {...props}>{children}</a>
38
+ }
39
+ if (disabled) {
40
+ props.disabled = true
41
+ }
42
+ return <button {...props}>{children}</button>
43
+ })
44
+
45
+ Button.propTypes = {
46
+ /**
47
+ * Button link - renders the button as A tag; if not set, BUTTON tag is rendered instead
48
+ */
49
+ href: PropTypes.string,
50
+ /**
51
+ * Click handler
52
+ */
53
+ onClick: PropTypes.func,
54
+ /**
55
+ * Whether to render the button as block element
56
+ */
57
+ block: PropTypes.bool,
58
+ /**
59
+ * Render only a thin outline instead of the color-filled button
60
+ */
61
+ outline: PropTypes.bool,
62
+ /**
63
+ * Do not render an outline - just the text
64
+ */
65
+ clear: PropTypes.bool,
66
+ /**
67
+ * Whether buttons should look stackable on mobile devices
68
+ */
69
+ stackable: PropTypes.bool,
70
+ /**
71
+ * Renders a small button
72
+ */
73
+ small: PropTypes.bool,
74
+ /**
75
+ * Whether the button is currently disabled
76
+ */
77
+ disabled: PropTypes.bool,
78
+ /**
79
+ * Show loading animation on the button
80
+ */
81
+ loading: PropTypes.bool,
82
+ /**
83
+ * Externally provided CSS classes
84
+ */
85
+ className: PropTypes.string,
86
+ /**
87
+ * Tooltip text
88
+ */
89
+ title: PropTypes.string,
90
+ /**
91
+ * Text inside the button
92
+ */
93
+ children: PropTypes.any.isRequired
79
94
  }
@@ -1,35 +1,43 @@
1
- import React from 'react'
2
- import PropTypes from 'prop-types'
3
- import cn from 'classnames'
4
- import hljs from 'highlight.js/lib/core'
5
- import jsLang from 'highlight.js/lib/languages/javascript'
6
- import jsonLang from 'highlight.js/lib/languages/json'
7
- import xmlLang from 'highlight.js/lib/languages/xml'
8
- import plaintextLang from 'highlight.js/lib/languages/plaintext'
9
- import tomlLang from 'highlight.js/lib/languages/ini'
10
- import rustLang from 'highlight.js/lib/languages/rust'
11
- import './code-block.scss'
12
-
13
- hljs.registerLanguage('js', jsLang)
14
- hljs.registerLanguage('json', jsonLang)
15
- hljs.registerLanguage('html', xmlLang)
16
- hljs.registerLanguage('xml', xmlLang)
17
- hljs.registerLanguage('plain', plaintextLang)
18
- hljs.registerLanguage('toml', tomlLang)
19
- hljs.registerLanguage('rust', rustLang)
20
-
21
- export const CodeBlock = React.memo(function CodeBlock({children, lang, className, style}) {
22
- if (lang) {
23
- lang = lang.split(',')
24
- }
25
- const languageFilter = lang || ['js', 'json']
26
- const highlighted = hljs.highlightAuto(children, languageFilter)
27
- return <pre dangerouslySetInnerHTML={{__html: highlighted.value}} className={cn('hljs', className)} style={style}/>
28
- })
29
-
30
- CodeBlock.propTypes = {
31
- children: PropTypes.string.isRequired,
32
- lang: PropTypes.oneOf(['js', 'json', 'html', 'xml', 'toml', 'rust', 'plain']),
33
- className: PropTypes.string,
34
- style: PropTypes.object
1
+ import React from 'react'
2
+ import PropTypes from 'prop-types'
3
+ import cn from 'classnames'
4
+ import hljs from 'highlight.js/lib/core'
5
+ import jsLang from 'highlight.js/lib/languages/javascript'
6
+ import jsonLang from 'highlight.js/lib/languages/json'
7
+ import xmlLang from 'highlight.js/lib/languages/xml'
8
+ import plaintextLang from 'highlight.js/lib/languages/plaintext'
9
+ import tomlLang from 'highlight.js/lib/languages/ini'
10
+ import rustLang from 'highlight.js/lib/languages/rust'
11
+ import './code-block.scss'
12
+
13
+ hljs.registerLanguage('js', jsLang)
14
+ hljs.registerLanguage('json', jsonLang)
15
+ hljs.registerLanguage('html', xmlLang)
16
+ hljs.registerLanguage('xml', xmlLang)
17
+ hljs.registerLanguage('plain', plaintextLang)
18
+ hljs.registerLanguage('toml', tomlLang)
19
+ hljs.registerLanguage('rust', rustLang)
20
+
21
+ /**
22
+ * Syntax-highlighted code block using highlight.js
23
+ * @param {Object} props
24
+ * @param {string} props.children - Source code text
25
+ * @param {'js'|'json'|'html'|'xml'|'toml'|'rust'|'plain'} [props.lang] - Language for syntax highlighting
26
+ * @param {string} [props.className] - Additional CSS classes
27
+ * @param {Object} [props.style] - Inline styles
28
+ */
29
+ export const CodeBlock = React.memo(function CodeBlock({children, lang, className, style}) {
30
+ if (lang) {
31
+ lang = lang.split(',')
32
+ }
33
+ const languageFilter = lang || ['js', 'json']
34
+ const highlighted = hljs.highlightAuto(children, languageFilter)
35
+ return <pre dangerouslySetInnerHTML={{__html: highlighted.value}} className={cn('hljs', className)} style={style}/>
36
+ })
37
+
38
+ CodeBlock.propTypes = {
39
+ children: PropTypes.string.isRequired,
40
+ lang: PropTypes.oneOf(['js', 'json', 'html', 'xml', 'toml', 'rust', 'plain']),
41
+ className: PropTypes.string,
42
+ style: PropTypes.object
35
43
  }