@budibase/bbui 0.0.1

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 (149) hide show
  1. package/LICENSE +375 -0
  2. package/README.md +42 -0
  3. package/dist/bbui.es.js +8 -0
  4. package/dist/bbui.es.js.map +1 -0
  5. package/package.json +94 -0
  6. package/src/Accordion/Accordion.svelte +58 -0
  7. package/src/ActionButton/ActionButton.svelte +132 -0
  8. package/src/ActionGroup/ActionGroup.svelte +26 -0
  9. package/src/ActionMenu/ActionMenu.svelte +43 -0
  10. package/src/Actions/ClickOutside.svench.svx +30 -0
  11. package/src/Actions/PositionDropdown.svench.svx +81 -0
  12. package/src/Actions/autoresize_textarea.js +14 -0
  13. package/src/Actions/click_outside.js +76 -0
  14. package/src/Actions/position_dropdown.js +116 -0
  15. package/src/Avatar/Avatar.svelte +63 -0
  16. package/src/Badge/Badge.svelte +42 -0
  17. package/src/Banner/Banner.svelte +72 -0
  18. package/src/Banner/BannerDisplay.svelte +41 -0
  19. package/src/Button/Button.svelte +118 -0
  20. package/src/Button/Button.svench +138 -0
  21. package/src/ButtonGroup/ButtonGroup.svelte +30 -0
  22. package/src/ClearButton/ClearButton.svelte +19 -0
  23. package/src/ColorPicker/ColorPicker.svelte +304 -0
  24. package/src/DetailSummary/DetailSummary.svelte +92 -0
  25. package/src/Divider/Divider.svelte +28 -0
  26. package/src/Drawer/Drawer.svelte +113 -0
  27. package/src/Drawer/Drawer.svench +42 -0
  28. package/src/Drawer/DrawerContent.svelte +45 -0
  29. package/src/FancyForm/FancyButton.svelte +30 -0
  30. package/src/FancyForm/FancyButtonRadio.svelte +70 -0
  31. package/src/FancyForm/FancyCheckbox.svelte +53 -0
  32. package/src/FancyForm/FancyField.svelte +126 -0
  33. package/src/FancyForm/FancyFieldLabel.svelte +25 -0
  34. package/src/FancyForm/FancyForm.svelte +40 -0
  35. package/src/FancyForm/FancyInput.svelte +109 -0
  36. package/src/FancyForm/FancySelect.svelte +147 -0
  37. package/src/FancyForm/index.js +6 -0
  38. package/src/Form/Checkbox.svelte +23 -0
  39. package/src/Form/Combobox.svelte +45 -0
  40. package/src/Form/Core/Checkbox.svelte +69 -0
  41. package/src/Form/Core/CheckboxGroup.svelte +68 -0
  42. package/src/Form/Core/Combobox.svelte +142 -0
  43. package/src/Form/Core/DatePicker.svelte +265 -0
  44. package/src/Form/Core/Dropzone.svelte +482 -0
  45. package/src/Form/Core/EnvDropdown.svelte +276 -0
  46. package/src/Form/Core/File.svelte +115 -0
  47. package/src/Form/Core/InputDropdown.svelte +235 -0
  48. package/src/Form/Core/Multiselect.svelte +99 -0
  49. package/src/Form/Core/Picker.svelte +314 -0
  50. package/src/Form/Core/PickerDropdown.svelte +431 -0
  51. package/src/Form/Core/RadioGroup.svelte +65 -0
  52. package/src/Form/Core/RichTextField.svelte +42 -0
  53. package/src/Form/Core/Search.svelte +105 -0
  54. package/src/Form/Core/Select.svelte +90 -0
  55. package/src/Form/Core/Slider.svelte +86 -0
  56. package/src/Form/Core/Stepper.svelte +172 -0
  57. package/src/Form/Core/Switch.svelte +35 -0
  58. package/src/Form/Core/TextArea.svelte +78 -0
  59. package/src/Form/Core/TextField.svelte +115 -0
  60. package/src/Form/Core/index.js +16 -0
  61. package/src/Form/DatePicker.svelte +46 -0
  62. package/src/Form/Dropzone.svelte +44 -0
  63. package/src/Form/EnvDropdown.svelte +50 -0
  64. package/src/Form/Field.svelte +42 -0
  65. package/src/Form/FieldLabel.svelte +32 -0
  66. package/src/Form/File.svelte +37 -0
  67. package/src/Form/Input.svelte +45 -0
  68. package/src/Form/InputDropdown.svelte +53 -0
  69. package/src/Form/Multiselect.svelte +49 -0
  70. package/src/Form/PickerDropdown.svelte +131 -0
  71. package/src/Form/RadioGroup.svelte +42 -0
  72. package/src/Form/RichTextField.svelte +36 -0
  73. package/src/Form/Search.svelte +36 -0
  74. package/src/Form/Select.svelte +67 -0
  75. package/src/Form/Slider.svelte +24 -0
  76. package/src/Form/Stepper.svelte +45 -0
  77. package/src/Form/TextArea.svelte +34 -0
  78. package/src/Form/Toggle.svelte +22 -0
  79. package/src/Icon/Icon.svelte +94 -0
  80. package/src/Icon/IconAvatar.svelte +61 -0
  81. package/src/IconPicker/IconPicker.svelte +184 -0
  82. package/src/IconSideNav/IconSideNav.svelte +14 -0
  83. package/src/IconSideNav/IconSideNavItem.svelte +56 -0
  84. package/src/InlineAlert/InlineAlert.svelte +63 -0
  85. package/src/Input/CopyInput.svelte +59 -0
  86. package/src/Label/Label.svelte +31 -0
  87. package/src/Layout/Layout.svelte +94 -0
  88. package/src/Layout/Page.svelte +101 -0
  89. package/src/Link/Link.svelte +27 -0
  90. package/src/List/List.svelte +28 -0
  91. package/src/List/ListItem.svelte +93 -0
  92. package/src/Markdown/MarkdownEditor.svelte +60 -0
  93. package/src/Markdown/MarkdownViewer.svelte +70 -0
  94. package/src/Markdown/SpectrumMDE.svelte +184 -0
  95. package/src/Menu/Item.svelte +94 -0
  96. package/src/Menu/Menu.svelte +7 -0
  97. package/src/Menu/Menu.svench +19 -0
  98. package/src/Menu/Section.svelte +10 -0
  99. package/src/Menu/Separator.svelte +1 -0
  100. package/src/Modal/Content.svelte +6 -0
  101. package/src/Modal/CustomContent.svelte +37 -0
  102. package/src/Modal/Modal.svelte +178 -0
  103. package/src/Modal/Modal.svench +116 -0
  104. package/src/Modal/ModalContent.svelte +190 -0
  105. package/src/Modal/QuizModal.svelte +53 -0
  106. package/src/Notification/Notification.svelte +74 -0
  107. package/src/Notification/NotificationDisplay.svelte +43 -0
  108. package/src/Pagination/Pagination.svelte +57 -0
  109. package/src/Popover/Popover.svelte +95 -0
  110. package/src/Popover/Popover.svench +120 -0
  111. package/src/ProgressBar/ProgressBar.svelte +67 -0
  112. package/src/ProgressCircle/ProgressCircle.svelte +62 -0
  113. package/src/SideNavigation/Item.svelte +59 -0
  114. package/src/SideNavigation/Navigation.svelte +12 -0
  115. package/src/StatusLight/StatusLight.svelte +80 -0
  116. package/src/Stores/Notifications.svench.svx +78 -0
  117. package/src/Stores/banner.js +65 -0
  118. package/src/Stores/notifications.js +84 -0
  119. package/src/Table/ArrayRenderer.svelte +18 -0
  120. package/src/Table/AttachmentRenderer.svelte +73 -0
  121. package/src/Table/BoldRenderer.svelte +15 -0
  122. package/src/Table/BooleanRenderer.svelte +42 -0
  123. package/src/Table/CellRenderer.svelte +70 -0
  124. package/src/Table/CodeRenderer.svelte +14 -0
  125. package/src/Table/DateTimeRenderer.svelte +29 -0
  126. package/src/Table/InternalRenderer.svelte +24 -0
  127. package/src/Table/RelationshipRenderer.svelte +35 -0
  128. package/src/Table/SelectEditRenderer.svelte +28 -0
  129. package/src/Table/StringRenderer.svelte +22 -0
  130. package/src/Table/Table.svelte +657 -0
  131. package/src/Table/index.js +1 -0
  132. package/src/Tabs/Tab.svelte +88 -0
  133. package/src/Tabs/Tabs.svelte +130 -0
  134. package/src/Tags/Tag.svelte +43 -0
  135. package/src/Tags/Tags.svelte +17 -0
  136. package/src/Tooltip/Tooltip.svelte +34 -0
  137. package/src/Tooltip/TooltipWrapper.svelte +60 -0
  138. package/src/TreeView/Item.svelte +41 -0
  139. package/src/TreeView/Tree.svelte +16 -0
  140. package/src/Typography/Body.svelte +22 -0
  141. package/src/Typography/Code.svelte +10 -0
  142. package/src/Typography/Detail.svelte +19 -0
  143. package/src/Typography/Heading.svelte +24 -0
  144. package/src/bbui.css +118 -0
  145. package/src/context.js +4 -0
  146. package/src/helpers.js +116 -0
  147. package/src/index.js +109 -0
  148. package/src/spectrum-icons-rollup.js +31 -0
  149. package/src/spectrum-icons-vite.js +31 -0
@@ -0,0 +1,34 @@
1
+ <script>
2
+ import Field from "./Field.svelte"
3
+ import TextArea from "./Core/TextArea.svelte"
4
+ import { createEventDispatcher } from "svelte"
5
+
6
+ export let value = null
7
+ export let label = null
8
+ export let labelPosition = "above"
9
+ export let placeholder = null
10
+ export let disabled = false
11
+ export let error = null
12
+ export let getCaretPosition = null
13
+ export let height = null
14
+ export let minHeight = null
15
+
16
+ const dispatch = createEventDispatcher()
17
+ const onChange = e => {
18
+ value = e.detail
19
+ dispatch("change", e.detail)
20
+ }
21
+ </script>
22
+
23
+ <Field {label} {labelPosition} {error}>
24
+ <TextArea
25
+ bind:getCaretPosition
26
+ {error}
27
+ {disabled}
28
+ {value}
29
+ {placeholder}
30
+ {height}
31
+ {minHeight}
32
+ on:change={onChange}
33
+ />
34
+ </Field>
@@ -0,0 +1,22 @@
1
+ <script>
2
+ import Field from "./Field.svelte"
3
+ import Switch from "./Core/Switch.svelte"
4
+ import { createEventDispatcher } from "svelte"
5
+
6
+ export let value = null
7
+ export let label = null
8
+ export let labelPosition = "above"
9
+ export let text = null
10
+ export let disabled = false
11
+ export let error = null
12
+
13
+ const dispatch = createEventDispatcher()
14
+ const onChange = e => {
15
+ value = e.detail
16
+ dispatch("change", e.detail)
17
+ }
18
+ </script>
19
+
20
+ <Field {label} {labelPosition} {error}>
21
+ <Switch {error} {disabled} {text} {value} on:change={onChange} />
22
+ </Field>
@@ -0,0 +1,94 @@
1
+ <script context="module">
2
+ export const directions = ["n", "ne", "e", "se", "s", "sw", "w", "nw"]
3
+ </script>
4
+
5
+ <script>
6
+ import Tooltip from "../Tooltip/Tooltip.svelte"
7
+ import { fade } from "svelte/transition"
8
+
9
+ export let direction = "n"
10
+ export let name = "Add"
11
+ export let hidden = false
12
+ export let size = "M"
13
+ export let hoverable = false
14
+ export let disabled = false
15
+ export let color
16
+ export let tooltip
17
+
18
+ $: rotation = getRotation(direction)
19
+
20
+ let showTooltip = false
21
+
22
+ const getRotation = direction => {
23
+ return directions.indexOf(direction) * 45
24
+ }
25
+ </script>
26
+
27
+ <div
28
+ class="icon"
29
+ on:mouseover={() => (showTooltip = true)}
30
+ on:focus={() => (showTooltip = true)}
31
+ on:mouseleave={() => (showTooltip = false)}
32
+ on:click={() => (showTooltip = false)}
33
+ >
34
+ <svg
35
+ on:click
36
+ class:hoverable
37
+ class:disabled
38
+ class="spectrum-Icon spectrum-Icon--size{size}"
39
+ focusable="false"
40
+ aria-hidden={hidden}
41
+ aria-label={name}
42
+ style={`transform: rotate(${rotation}deg); ${
43
+ color ? `color: ${color};` : ""
44
+ }`}
45
+ >
46
+ <use style="pointer-events: none;" xlink:href="#spectrum-icon-18-{name}" />
47
+ </svg>
48
+ {#if tooltip && showTooltip}
49
+ <div class="tooltip" in:fade={{ duration: 130, delay: 250 }}>
50
+ <Tooltip textWrapping direction="bottom" text={tooltip} />
51
+ </div>
52
+ {/if}
53
+ </div>
54
+
55
+ <style>
56
+ .icon {
57
+ position: relative;
58
+ display: grid;
59
+ place-items: center;
60
+ }
61
+
62
+ svg.hoverable {
63
+ pointer-events: all;
64
+ transition: color var(--spectrum-global-animation-duration-100, 130ms);
65
+ }
66
+ svg.hoverable:hover {
67
+ color: var(--spectrum-alias-icon-color-selected-hover) !important;
68
+ cursor: pointer;
69
+ }
70
+ svg.hoverable:active {
71
+ color: var(--spectrum-global-color-blue-400) !important;
72
+ }
73
+
74
+ svg.disabled {
75
+ color: var(--spectrum-global-color-gray-500) !important;
76
+ pointer-events: none !important;
77
+ }
78
+
79
+ .tooltip {
80
+ position: absolute;
81
+ pointer-events: none;
82
+ left: 50%;
83
+ top: calc(100% + 4px);
84
+ width: 100vw;
85
+ max-width: 150px;
86
+ transform: translateX(-50%);
87
+ text-align: center;
88
+ }
89
+
90
+ .spectrum-Icon--sizeXS {
91
+ width: 10px;
92
+ height: 10px;
93
+ }
94
+ </style>
@@ -0,0 +1,61 @@
1
+ <script>
2
+ import Icon from "./Icon.svelte"
3
+
4
+ export let icon
5
+ export let background
6
+ export let color
7
+ export let size = "M"
8
+ </script>
9
+
10
+ <div
11
+ class="icon size--{size}"
12
+ style="background: {background || `transparent`};"
13
+ class:filled={!!background}
14
+ >
15
+ <Icon name={icon} color={background ? "white" : color} />
16
+ </div>
17
+
18
+ <style>
19
+ .icon {
20
+ width: 28px;
21
+ height: 28px;
22
+ flex: 0 0 28px;
23
+ display: grid;
24
+ place-items: center;
25
+ border-radius: 50%;
26
+ }
27
+ .icon :global(.spectrum-Icon) {
28
+ width: 22px;
29
+ height: 22px;
30
+ }
31
+ .icon.filled :global(.spectrum-Icon) {
32
+ width: 16px;
33
+ height: 16px;
34
+ }
35
+ .icon.size--S {
36
+ width: 22px;
37
+ height: 22px;
38
+ flex: 0 0 22px;
39
+ }
40
+ .icon.size--S :global(.spectrum-Icon) {
41
+ width: 16px;
42
+ height: 16px;
43
+ }
44
+ .icon.size--S.filled :global(.spectrum-Icon) {
45
+ width: 12px;
46
+ height: 12px;
47
+ }
48
+ .icon.size--L {
49
+ width: 40px;
50
+ height: 40px;
51
+ flex: 0 0 40px;
52
+ }
53
+ .icon.size--L :global(.spectrum-Icon) {
54
+ width: 28px;
55
+ height: 28px;
56
+ }
57
+ .icon.size--L.filled :global(.spectrum-Icon) {
58
+ width: 22px;
59
+ height: 22px;
60
+ }
61
+ </style>
@@ -0,0 +1,184 @@
1
+ <script>
2
+ //import { createEventDispatcher } from "svelte"
3
+ import "@spectrum-css/popover/dist/index-vars.css"
4
+ import clickOutside from "../Actions/click_outside"
5
+ import { fly } from "svelte/transition"
6
+ import Icon from "../Icon/Icon.svelte"
7
+ import { createEventDispatcher } from "svelte"
8
+
9
+ export let value
10
+ export let size = "M"
11
+ export let alignRight = false
12
+
13
+ let open = false
14
+
15
+ const dispatch = createEventDispatcher()
16
+
17
+ const iconList = [
18
+ {
19
+ label: "Icons",
20
+ icons: [
21
+ "Apps",
22
+ "Actions",
23
+ "ConversionFunnel",
24
+ "App",
25
+ "Briefcase",
26
+ "Money",
27
+ "ShoppingCart",
28
+ "Form",
29
+ "Help",
30
+ "Monitoring",
31
+ "Sandbox",
32
+ "Project",
33
+ "Organisations",
34
+ "Magnify",
35
+ "Launch",
36
+ "Car",
37
+ "Camera",
38
+ "Bug",
39
+ "Channel",
40
+ "Calculator",
41
+ "Calendar",
42
+ "GraphDonut",
43
+ "GraphBarHorizontal",
44
+ "Demographic",
45
+ ],
46
+ },
47
+ ]
48
+
49
+ const onChange = value => {
50
+ dispatch("change", value)
51
+ open = false
52
+ }
53
+
54
+ const handleOutsideClick = event => {
55
+ if (open) {
56
+ event.stopPropagation()
57
+ open = false
58
+ }
59
+ }
60
+ </script>
61
+
62
+ <div class="container">
63
+ <div class="preview size--{size || 'M'}" on:click={() => (open = true)}>
64
+ <div
65
+ class="fill"
66
+ style={value ? `background: ${value};` : ""}
67
+ class:placeholder={!value}
68
+ >
69
+ <Icon name={value || "UserGroup"} />
70
+ </div>
71
+ </div>
72
+ {#if open}
73
+ <div
74
+ use:clickOutside={handleOutsideClick}
75
+ transition:fly={{ y: -20, duration: 200 }}
76
+ class="spectrum-Popover spectrum-Popover--bottom spectrum-Picker-popover is-open"
77
+ class:spectrum-Popover--align-right={alignRight}
78
+ >
79
+ {#each iconList as icon}
80
+ <div class="category">
81
+ <div class="heading">{icon.label}</div>
82
+ <div class="icons">
83
+ {#each icon.icons as icon}
84
+ <div
85
+ on:click={() => {
86
+ onChange(icon)
87
+ }}
88
+ >
89
+ <Icon name={icon} />
90
+ </div>
91
+ {/each}
92
+ </div>
93
+ </div>
94
+ {/each}
95
+ </div>
96
+ {/if}
97
+ </div>
98
+
99
+ <style>
100
+ .container {
101
+ position: relative;
102
+ }
103
+ .preview {
104
+ width: 32px;
105
+ height: 32px;
106
+ position: relative;
107
+ box-shadow: 0 0 0 1px var(--spectrum-global-color-gray-400);
108
+ }
109
+ .preview:hover {
110
+ cursor: pointer;
111
+ }
112
+ .fill {
113
+ width: 100%;
114
+ height: 100%;
115
+ position: absolute;
116
+ top: 0;
117
+ left: 0;
118
+ display: grid;
119
+ place-items: center;
120
+ }
121
+ .size--S {
122
+ width: 20px;
123
+ height: 20px;
124
+ }
125
+ .size--M {
126
+ width: 32px;
127
+ height: 32px;
128
+ }
129
+ .size--L {
130
+ width: 48px;
131
+ height: 48px;
132
+ }
133
+ .spectrum-Popover {
134
+ width: 210px;
135
+ z-index: 999;
136
+ top: 100%;
137
+ padding: var(--spacing-l) var(--spacing-xl);
138
+ display: flex;
139
+ flex-direction: column;
140
+ justify-content: flex-start;
141
+ align-items: stretch;
142
+ gap: var(--spacing-xl);
143
+ }
144
+ .spectrum-Popover--align-right {
145
+ right: 0;
146
+ }
147
+ .icons {
148
+ display: grid;
149
+ grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr;
150
+ gap: var(--spacing-m);
151
+ }
152
+ .heading {
153
+ font-size: var(--font-size-s);
154
+ font-weight: 600;
155
+ letter-spacing: 0.14px;
156
+ flex: 1 1 auto;
157
+ text-transform: uppercase;
158
+ grid-column: 1 / 5;
159
+ margin-bottom: var(--spacing-s);
160
+ }
161
+
162
+ .icon {
163
+ height: 16px;
164
+ width: 16px;
165
+ border-radius: 100%;
166
+ box-shadow: 0 0 0 1px var(--spectrum-global-color-gray-300);
167
+ position: relative;
168
+ }
169
+ .icon:hover {
170
+ cursor: pointer;
171
+ box-shadow: 0 0 2px 2px var(--spectrum-global-color-gray-300);
172
+ }
173
+ .custom {
174
+ display: grid;
175
+ grid-template-columns: 1fr auto;
176
+ align-items: center;
177
+ gap: var(--spacing-m);
178
+ margin-right: var(--spacing-xs);
179
+ }
180
+
181
+ .spectrum-wrapper {
182
+ background-color: transparent;
183
+ }
184
+ </style>
@@ -0,0 +1,14 @@
1
+ <div class="icon-side-nav">
2
+ <slot />
3
+ </div>
4
+
5
+ <style>
6
+ .icon-side-nav {
7
+ display: flex;
8
+ flex-direction: column;
9
+ justify-content: flex-start;
10
+ align-items: center;
11
+ padding: var(--spacing-s);
12
+ gap: var(--spacing-xs);
13
+ }
14
+ </style>
@@ -0,0 +1,56 @@
1
+ <script>
2
+ import Icon from "../Icon/Icon.svelte"
3
+ import Tooltip from "../Tooltip/Tooltip.svelte"
4
+ import { fade } from "svelte/transition"
5
+
6
+ export let icon
7
+ export let active = false
8
+ export let tooltip
9
+
10
+ let showTooltip = false
11
+ </script>
12
+
13
+ <div
14
+ class="icon-side-nav-item"
15
+ class:active
16
+ on:mouseover={() => (showTooltip = true)}
17
+ on:focus={() => (showTooltip = true)}
18
+ on:mouseleave={() => (showTooltip = false)}
19
+ on:click
20
+ >
21
+ <Icon name={icon} hoverable />
22
+ {#if tooltip && showTooltip}
23
+ <div class="tooltip" in:fade={{ duration: 130, delay: 250 }}>
24
+ <Tooltip textWrapping direction="right" text={tooltip} />
25
+ </div>
26
+ {/if}
27
+ </div>
28
+
29
+ <style>
30
+ .icon-side-nav-item {
31
+ width: 36px;
32
+ height: 36px;
33
+ display: grid;
34
+ place-items: center;
35
+ border-radius: 4px;
36
+ position: relative;
37
+ cursor: pointer;
38
+ transition: background 130ms ease-out;
39
+ }
40
+ .icon-side-nav-item:hover :global(svg),
41
+ .active :global(svg) {
42
+ color: var(--spectrum-global-color-gray-900);
43
+ }
44
+ .active {
45
+ background: var(--spectrum-global-color-gray-300);
46
+ }
47
+ .tooltip {
48
+ position: absolute;
49
+ pointer-events: none;
50
+ left: calc(100% - 4px);
51
+ top: 50%;
52
+ white-space: nowrap;
53
+ transform: translateY(-50%);
54
+ z-index: 1;
55
+ }
56
+ </style>
@@ -0,0 +1,63 @@
1
+ <script>
2
+ import "@spectrum-css/inlinealert/dist/index-vars.css"
3
+ import Button from "../Button/Button.svelte"
4
+
5
+ export let type = "info"
6
+ export let header = ""
7
+ export let message = ""
8
+ export let onConfirm = undefined
9
+ export let buttonText = ""
10
+
11
+ $: icon = selectIcon(type)
12
+ // if newlines used, convert them to different elements
13
+ $: split = message.split("\n")
14
+
15
+ function selectIcon(alertType) {
16
+ switch (alertType) {
17
+ case "error":
18
+ case "negative":
19
+ return "Alert"
20
+ case "success":
21
+ return "CheckmarkCircle"
22
+ case "help":
23
+ return "Help"
24
+ default:
25
+ return "Info"
26
+ }
27
+ }
28
+ </script>
29
+
30
+ <div class="spectrum-InLineAlert spectrum-InLineAlert--{type}">
31
+ <svg
32
+ class="spectrum-Icon spectrum-Icon--sizeM spectrum-InLineAlert-icon"
33
+ focusable="false"
34
+ aria-hidden="true"
35
+ >
36
+ <use xlink:href="#spectrum-icon-18-{icon}" />
37
+ </svg>
38
+ <div class="spectrum-InLineAlert-header">{header}</div>
39
+ {#each split as splitMsg}
40
+ <div class="spectrum-InLineAlert-content">{splitMsg}</div>
41
+ {/each}
42
+ {#if onConfirm}
43
+ <div class="spectrum-InLineAlert-footer button">
44
+ <Button secondary on:click={onConfirm}>{buttonText || "OK"}</Button>
45
+ </div>
46
+ {/if}
47
+ </div>
48
+
49
+ <style>
50
+ .button {
51
+ margin-top: 10px;
52
+ }
53
+ .spectrum-InLineAlert {
54
+ --spectrum-semantic-negative-border-color: #e34850;
55
+ --spectrum-semantic-positive-border-color: #2d9d78;
56
+ --spectrum-semantic-positive-icon-color: #2d9d78;
57
+ --spectrum-semantic-negative-icon-color: #e34850;
58
+ min-width: 100px;
59
+ margin: 0;
60
+ border-color: var(--spectrum-global-color-gray-400);
61
+ border-width: 1px;
62
+ }
63
+ </style>
@@ -0,0 +1,59 @@
1
+ <script>
2
+ import Input from "../Form/Input.svelte"
3
+ import Icon from "../Icon/Icon.svelte"
4
+ import { notifications } from "../Stores/notifications"
5
+
6
+ export let label = null
7
+ export let value
8
+
9
+ const copyToClipboard = val => {
10
+ const dummy = document.createElement("textarea")
11
+ document.body.appendChild(dummy)
12
+ dummy.value = val
13
+ dummy.select()
14
+ document.execCommand("copy")
15
+ document.body.removeChild(dummy)
16
+ notifications.success(`Copied to clipboard`)
17
+ }
18
+ </script>
19
+
20
+ <div>
21
+ <Input readonly {value} {label} />
22
+ <div class="icon" on:click={() => copyToClipboard(value)}>
23
+ <Icon size="S" name="Copy" />
24
+ </div>
25
+ </div>
26
+
27
+ <style>
28
+ div {
29
+ position: relative;
30
+ }
31
+
32
+ .icon {
33
+ right: 1px;
34
+ bottom: 1px;
35
+ position: absolute;
36
+ justify-content: center;
37
+ align-items: center;
38
+ display: flex;
39
+ flex-direction: row;
40
+ box-sizing: border-box;
41
+ border-left: 1px solid var(--spectrum-alias-border-color);
42
+ border-top-right-radius: var(--spectrum-alias-border-radius-regular);
43
+ border-bottom-right-radius: var(--spectrum-alias-border-radius-regular);
44
+ width: 31px;
45
+ color: var(--spectrum-alias-text-color);
46
+ background-color: var(--spectrum-global-color-gray-75);
47
+ transition: background-color
48
+ var(--spectrum-global-animation-duration-100, 130ms),
49
+ box-shadow var(--spectrum-global-animation-duration-100, 130ms),
50
+ border-color var(--spectrum-global-animation-duration-100, 130ms);
51
+ height: calc(var(--spectrum-alias-item-height-m) - 2px);
52
+ }
53
+ .icon:hover {
54
+ cursor: pointer;
55
+ color: var(--spectrum-alias-text-color-hover);
56
+ background-color: var(--spectrum-global-color-gray-50);
57
+ border-color: var(--spectrum-alias-border-color-hover);
58
+ }
59
+ </style>
@@ -0,0 +1,31 @@
1
+ <script>
2
+ import "@spectrum-css/fieldlabel/dist/index-vars.css"
3
+ import TooltipWrapper from "../Tooltip/TooltipWrapper.svelte"
4
+
5
+ export let size = "M"
6
+ export let tooltip = ""
7
+ export let muted
8
+ </script>
9
+
10
+ <TooltipWrapper {tooltip} {size}>
11
+ <label
12
+ data-testid="label"
13
+ class:muted
14
+ for=""
15
+ class={`spectrum-FieldLabel spectrum-FieldLabel--size${size}`}
16
+ >
17
+ <slot />
18
+ </label>
19
+ </TooltipWrapper>
20
+
21
+ <style>
22
+ label {
23
+ padding: 0;
24
+ white-space: nowrap;
25
+ color: var(--spectrum-global-color-gray-700);
26
+ }
27
+
28
+ .muted {
29
+ opacity: 0.5;
30
+ }
31
+ </style>