@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,63 @@
1
+ <script>
2
+ import "@spectrum-css/avatar/dist/index-vars.css"
3
+ let sizes = new Map([
4
+ ["XXS", "--spectrum-alias-avatar-size-50"],
5
+ ["XS", "--spectrum-alias-avatar-size-75"],
6
+ ["S", "--spectrum-alias-avatar-size-200"],
7
+ ["M", "--spectrum-alias-avatar-size-400"],
8
+ ["L", "--spectrum-alias-avatar-size-500"],
9
+ ["XL", "--spectrum-alias-avatar-size-600"],
10
+ ["XXL", "--spectrum-alias-avatar-size-700"],
11
+ ])
12
+ export let size = "M"
13
+ export let url = ""
14
+ export let disabled = false
15
+ export let initials = "JD"
16
+
17
+ const DefaultColor = "#3aab87"
18
+
19
+ $: color = getColor(initials)
20
+
21
+ const getColor = initials => {
22
+ if (!initials?.length) {
23
+ return DefaultColor
24
+ }
25
+ const code = initials[0].toLowerCase().charCodeAt(0)
26
+ const hue = ((code % 26) / 26) * 360
27
+ return `hsl(${hue}, 50%, 50%)`
28
+ }
29
+ </script>
30
+
31
+ {#if url}
32
+ <img
33
+ class:is-disabled={disabled}
34
+ class="spectrum-Avatar"
35
+ src={url}
36
+ alt="Avatar"
37
+ style="width: var({sizes.get(size)}); height: var({sizes.get(size)});"
38
+ />
39
+ {:else}
40
+ <div
41
+ class="spectrum-Avatar"
42
+ class:is-disabled={disabled}
43
+ style="width: var({sizes.get(size)}); height: var({sizes.get(
44
+ size
45
+ )}); font-size: calc(var({sizes.get(size)}) / 2); background: {color};"
46
+ >
47
+ {initials || ""}
48
+ </div>
49
+ {/if}
50
+
51
+ <style>
52
+ div {
53
+ color: white;
54
+ display: grid;
55
+ place-items: center;
56
+ font-weight: 600;
57
+ border-radius: 50%;
58
+ overflow: hidden;
59
+ user-select: none;
60
+ text-transform: uppercase;
61
+ flex-shrink: 0;
62
+ }
63
+ </style>
@@ -0,0 +1,42 @@
1
+ <script>
2
+ import "@spectrum-css/label/dist/index-vars.css"
3
+
4
+ export let size = "M"
5
+ export let grey = false
6
+ export let red = false
7
+ export let orange = false
8
+ export let yellow = false
9
+ export let seafoam = false
10
+ export let green = false
11
+ export let active = false
12
+ export let inactive = false
13
+ export let hoverable = false
14
+ </script>
15
+
16
+ <span
17
+ on:click
18
+ class="spectrum-Label"
19
+ class:hoverable
20
+ class:spectrum-Label--small={size === "S"}
21
+ class:spectrum-Label--large={size === "L"}
22
+ class:spectrum-Label--grey={grey}
23
+ class:spectrum-Label--red={red}
24
+ class:spectrum-Label--green={green}
25
+ class:spectrum-Label--orange={orange}
26
+ class:spectrum-Label--yellow={yellow}
27
+ class:spectrum-Label--seafoam={seafoam}
28
+ class:spectrum-Label--active={active}
29
+ class:spectrum-Label--inactive={inactive}
30
+ >
31
+ <slot />
32
+ </span>
33
+
34
+ <style>
35
+ .spectrum-Label--grey {
36
+ background-color: var(--spectrum-global-color-gray-500);
37
+ font-weight: 600;
38
+ }
39
+ .hoverable:hover {
40
+ cursor: pointer;
41
+ }
42
+ </style>
@@ -0,0 +1,72 @@
1
+ <script>
2
+ import { createEventDispatcher } from "svelte"
3
+
4
+ let dispatch = createEventDispatcher()
5
+
6
+ export let type = "info"
7
+ export let icon = "Info"
8
+ export let size = "S"
9
+ export let extraButtonText
10
+ export let extraButtonAction
11
+ export let showCloseButton = true
12
+
13
+ let show = true
14
+
15
+ function clear() {
16
+ show = false
17
+ dispatch("change")
18
+ }
19
+ </script>
20
+
21
+ {#if show}
22
+ <div class="spectrum-Toast spectrum-Toast--{type}">
23
+ <svg
24
+ class="spectrum-Icon spectrum-Icon--size{size} spectrum-Toast-typeIcon"
25
+ focusable="false"
26
+ aria-hidden="true"
27
+ >
28
+ <use xlink:href="#spectrum-icon-18-{icon}" />
29
+ </svg>
30
+ <div class="spectrum-Toast-body">
31
+ <div class="spectrum-Toast-content">
32
+ <slot />
33
+ </div>
34
+ {#if extraButtonText && extraButtonAction}
35
+ <button
36
+ class="spectrum-Button spectrum-Button--sizeM spectrum-Button--overBackground spectrum-Button--quiet"
37
+ on:click={extraButtonAction}
38
+ >
39
+ <span class="spectrum-Button-label">{extraButtonText}</span>
40
+ </button>
41
+ {/if}
42
+ </div>
43
+ {#if showCloseButton}
44
+ <div class="spectrum-Toast-buttons">
45
+ <button
46
+ class="spectrum-ClearButton spectrum-ClearButton--overBackground spectrum-ClearButton--size{size}"
47
+ on:click={clear}
48
+ >
49
+ <div class="spectrum-ClearButton-fill">
50
+ <svg
51
+ class="spectrum-ClearButton-icon spectrum-Icon spectrum-UIIcon-Cross100"
52
+ focusable="false"
53
+ aria-hidden="true"
54
+ >
55
+ <use xlink:href="#spectrum-css-icon-Cross100" />
56
+ </svg>
57
+ </div>
58
+ </button>
59
+ </div>
60
+ {/if}
61
+ </div>
62
+ {/if}
63
+
64
+ <style>
65
+ .spectrum-Toast {
66
+ pointer-events: all;
67
+ width: 100%;
68
+ }
69
+ .spectrum-Button {
70
+ border: 1px solid rgba(255, 255, 255, 0.2);
71
+ }
72
+ </style>
@@ -0,0 +1,41 @@
1
+ <script>
2
+ import "@spectrum-css/toast/dist/index-vars.css"
3
+ import Portal from "svelte-portal"
4
+ import { banner } from "../Stores/banner"
5
+ import Banner from "./Banner.svelte"
6
+ import { fly } from "svelte/transition"
7
+ import TooltipWrapper from "../Tooltip/TooltipWrapper.svelte"
8
+ </script>
9
+
10
+ <Portal target=".banner-container">
11
+ <div class="banner">
12
+ {#each $banner.messages as message}
13
+ <div transition:fly={{ y: -30 }}>
14
+ <Banner
15
+ type={message.type}
16
+ extraButtonText={message.extraButtonText}
17
+ extraButtonAction={message.extraButtonAction}
18
+ on:change={() => {
19
+ if (message.onChange) {
20
+ message.onChange()
21
+ }
22
+ }}
23
+ showCloseButton={typeof message.showCloseButton === "boolean"
24
+ ? message.showCloseButton
25
+ : true}
26
+ >
27
+ <TooltipWrapper tooltip={message.tooltip} disabled={false}>
28
+ {message.message}
29
+ </TooltipWrapper>
30
+ </Banner>
31
+ </div>
32
+ {/each}
33
+ </div>
34
+ </Portal>
35
+
36
+ <style>
37
+ .banner {
38
+ pointer-events: none;
39
+ width: 100%;
40
+ }
41
+ </style>
@@ -0,0 +1,118 @@
1
+ <script>
2
+ import "@spectrum-css/button/dist/index-vars.css"
3
+ import Tooltip from "../Tooltip/Tooltip.svelte"
4
+
5
+ export let disabled = false
6
+ export let size = "M"
7
+ export let cta = false
8
+ export let primary = false
9
+ export let secondary = false
10
+ export let warning = false
11
+ export let overBackground = false
12
+ export let quiet = false
13
+ export let icon = undefined
14
+ export let active = false
15
+ export let tooltip = undefined
16
+ export let newStyles = true
17
+ export let id
18
+
19
+ let showTooltip = false
20
+ </script>
21
+
22
+ <button
23
+ {id}
24
+ class:spectrum-Button--cta={cta}
25
+ class:spectrum-Button--primary={primary}
26
+ class:spectrum-Button--secondary={secondary}
27
+ class:spectrum-Button--warning={warning}
28
+ class:spectrum-Button--overBackground={overBackground}
29
+ class:spectrum-Button--quiet={quiet}
30
+ class:new-styles={newStyles}
31
+ class:active
32
+ class:disabled
33
+ class="spectrum-Button spectrum-Button--size{size.toUpperCase()}"
34
+ {disabled}
35
+ on:click|preventDefault
36
+ on:mouseover={() => (showTooltip = true)}
37
+ on:focus={() => (showTooltip = true)}
38
+ on:mouseleave={() => (showTooltip = false)}
39
+ >
40
+ {#if icon}
41
+ <svg
42
+ class="spectrum-Icon spectrum-Icon--size{size.toUpperCase()}"
43
+ focusable="false"
44
+ aria-hidden="true"
45
+ aria-label={icon}
46
+ >
47
+ <use xlink:href="#spectrum-icon-18-{icon}" />
48
+ </svg>
49
+ {/if}
50
+ {#if $$slots}
51
+ <span class="spectrum-Button-label"><slot /></span>
52
+ {/if}
53
+ {#if !disabled && tooltip}
54
+ <div class="tooltip-icon">
55
+ <svg
56
+ class="spectrum-Icon spectrum-Icon--size{size.toUpperCase()}"
57
+ focusable="false"
58
+ aria-hidden="true"
59
+ aria-label="Info"
60
+ >
61
+ <use xlink:href="#spectrum-icon-18-InfoOutline" />
62
+ </svg>
63
+ </div>
64
+ {/if}
65
+ {#if showTooltip && tooltip}
66
+ <div class="tooltip">
67
+ <Tooltip textWrapping={true} direction={"bottom"} text={tooltip} />
68
+ </div>
69
+ {/if}
70
+ </button>
71
+
72
+ <style>
73
+ button {
74
+ position: relative;
75
+ }
76
+ .spectrum-Button-label {
77
+ white-space: nowrap;
78
+ overflow: hidden;
79
+ text-overflow: ellipsis;
80
+ }
81
+ .active {
82
+ color: var(--spectrum-global-color-blue-600) !important;
83
+ }
84
+ .tooltip {
85
+ position: absolute;
86
+ display: flex;
87
+ justify-content: center;
88
+ z-index: 100;
89
+ width: 160px;
90
+ text-align: center;
91
+ transform: translateX(-50%);
92
+ left: 50%;
93
+ top: calc(100% - 3px);
94
+ }
95
+ .tooltip-icon {
96
+ padding-left: var(--spacing-m);
97
+ line-height: 0;
98
+ }
99
+ .spectrum-Button--primary.new-styles {
100
+ background: var(--spectrum-global-color-gray-800);
101
+ border-color: transparent;
102
+ color: var(--spectrum-global-color-gray-50);
103
+ }
104
+ .spectrum-Button--primary.new-styles:hover {
105
+ background: var(--spectrum-global-color-gray-900);
106
+ }
107
+ .spectrum-Button--secondary.new-styles {
108
+ background: var(--spectrum-global-color-gray-200);
109
+ border-color: transparent;
110
+ color: var(--spectrum-global-color-gray-900);
111
+ }
112
+ .spectrum-Button--secondary.new-styles:not(.disabled):hover {
113
+ background: var(--spectrum-global-color-gray-300);
114
+ }
115
+ .spectrum-Button--secondary.new-styles.disabled {
116
+ color: var(--spectrum-global-color-gray-500);
117
+ }
118
+ </style>
@@ -0,0 +1,138 @@
1
+ <script>
2
+ import { View } from "svench";
3
+ import Button from "./Button.svelte";
4
+ import Icon from "../Icons/Icon.svelte";
5
+ </script>
6
+
7
+ <View name="Primary">
8
+ <Button primary small on:click={() => alert('Clicked!')}>Small</Button>
9
+ <Button primary on:click={() => alert('Clicked!')}>Default</Button>
10
+ <Button primary medium on:click={() => alert('Clicked!')}>Medium</Button>
11
+ <Button primary large on:click={() => alert('Clicked!')}>Large</Button>
12
+ <Button primary wide on:click={() => alert('Clicked!')}>Wide</Button>
13
+ </View>
14
+ <View name="Secondary">
15
+ <Button secondary small on:click={() => alert('Clicked!')}>Small</Button>
16
+ <Button secondary on:click={() => alert('Clicked!')}>Default</Button>
17
+ <Button secondary medium on:click={() => alert('Clicked!')}>Medium</Button>
18
+ <Button secondary large on:click={() => alert('Clicked!')}>Large</Button>
19
+ <Button secondary wide on:click={() => alert('Clicked!')}>Wide</Button>
20
+ </View>
21
+ <View name="Translucent">
22
+ <div class="translucent">
23
+ <div class="light">
24
+ <Button translucent small on:click={() => alert('Clicked!')}>Small</Button>
25
+ <Button translucent on:click={() => alert('Clicked!')}>Default</Button>
26
+ <Button translucent medium on:click={() => alert('Clicked!')}>Medium</Button>
27
+ <Button translucent large on:click={() => alert('Clicked!')}>Large</Button>
28
+ <Button translucent wide on:click={() => alert('Clicked!')}>Wide</Button>
29
+ </div>
30
+ <div class="dark">
31
+ <Button translucent small on:click={() => alert('Clicked!')}>Small</Button>
32
+ <Button translucent on:click={() => alert('Clicked!')}>Default</Button>
33
+ <Button translucent medium on:click={() => alert('Clicked!')}>Medium</Button>
34
+ <Button translucent large on:click={() => alert('Clicked!')}>Large</Button>
35
+ <Button translucent wide on:click={() => alert('Clicked!')}>Wide</Button>
36
+ </div>
37
+ </div>
38
+ </View>
39
+ <View name="Blue">
40
+ <Button blue small on:click={() => alert('Clicked!')}>Small</Button>
41
+ <Button blue on:click={() => alert('Clicked!')}>Default</Button>
42
+ <Button blue medium on:click={() => alert('Clicked!')}>Medium</Button>
43
+ <Button blue large on:click={() => alert('Clicked!')}>Large</Button>
44
+ <Button blue wide on:click={() => alert('Clicked!')}>Wide</Button>
45
+ </View>
46
+ <View name="Red">
47
+ <Button red small on:click={() => alert('Clicked!')}>Small</Button>
48
+ <Button red on:click={() => alert('Clicked!')}>Default</Button>
49
+ <Button red medium on:click={() => alert('Clicked!')}>Medium</Button>
50
+ <Button red large on:click={() => alert('Clicked!')}>Large</Button>
51
+ <Button red wide on:click={() => alert('Clicked!')}>Wide</Button>
52
+ </View>
53
+ <View name="Yellow">
54
+ <Button yellow small on:click={() => alert('Clicked!')}>Small</Button>
55
+ <Button yellow on:click={() => alert('Clicked!')}>Default</Button>
56
+ <Button yellow medium on:click={() => alert('Clicked!')}>Medium</Button>
57
+ <Button yellow large on:click={() => alert('Clicked!')}>Large</Button>
58
+ <Button yellow wide on:click={() => alert('Clicked!')}>Wide</Button>
59
+ </View>
60
+ <View name="Orange">
61
+ <Button orange small on:click={() => alert('Clicked!')}>Small</Button>
62
+ <Button orange on:click={() => alert('Clicked!')}>Default</Button>
63
+ <Button orange medium on:click={() => alert('Clicked!')}>Medium</Button>
64
+ <Button orange large on:click={() => alert('Clicked!')}>Large</Button>
65
+ <Button orange wide on:click={() => alert('Clicked!')}>Wide</Button>
66
+ </View>
67
+ <View name="Green">
68
+ <Button green small on:click={() => alert('Clicked!')}>Small</Button>
69
+ <Button green on:click={() => alert('Clicked!')}>Default</Button>
70
+ <Button green medium on:click={() => alert('Clicked!')}>Medium</Button>
71
+ <Button green large on:click={() => alert('Clicked!')}>Large</Button>
72
+ <Button green wide on:click={() => alert('Clicked!')}>Wide</Button>
73
+ </View>
74
+ <View name="Purple">
75
+ <Button purple small on:click={() => alert('Clicked!')}>Small</Button>
76
+ <Button purple on:click={() => alert('Clicked!')}>Default</Button>
77
+ <Button purple medium on:click={() => alert('Clicked!')}>Medium</Button>
78
+ <Button purple large on:click={() => alert('Clicked!')}>Large</Button>
79
+ <Button purple wide on:click={() => alert('Clicked!')}>Wide</Button>
80
+ </View>
81
+ <View name="Disabled">
82
+ <Button primary disabled on:click={() => alert('Clicked!')}>Disabled</Button>
83
+ </View>
84
+ <View name="Button With Icon">
85
+ <Button primary small on:click={() => alert('Clicked!')}>
86
+ <Icon name="addrow" direction="n" />
87
+ Small
88
+ </Button>
89
+ <Button primary on:click={() => alert('Clicked!')}>
90
+ <Icon name="add" direction="n" />
91
+ Default
92
+ </Button>
93
+ <Button primary medium on:click={() => alert('Clicked!')}>
94
+ <Icon name="addcolumn" direction="n" />
95
+ Medium
96
+ </Button>
97
+ <Button primary large on:click={() => alert('Clicked!')}>
98
+ <Icon name="copy" direction="n" />
99
+ Large
100
+ </Button>
101
+ <Button primary wide on:click={() => alert('Clicked!')}>
102
+ <Icon name="view" direction="n" />
103
+ Wide
104
+ </Button>
105
+ </View>
106
+ <View name="Button with symbols">
107
+ <Button primary small on:click={() => alert('Clicked!')}>⊗ Small</Button>
108
+ <Button primary on:click={() => alert('Clicked!')}>↓ Default</Button>
109
+ <Button primary medium on:click={() => alert('Clicked!')}>+ Medium</Button>
110
+ <Button primary large on:click={() => alert('Clicked!')}>⋯ Large</Button>
111
+ <Button primary wide on:click={() => alert('Clicked!')}>⊕ Wide</Button>
112
+ </View>
113
+ <View
114
+ name="use Knobs"
115
+ knobs={{ primary: true, secondary: false, blue: false, red: false, yellow: false, orange: false, green: false, purple: false, disabled: false, small: false, medium: false, large: false, wide: false, text: false }}
116
+ let:knobs>
117
+ <Button {...knobs} on:click={() => alert('Clicked!')}>Knooby</Button>
118
+ </View>
119
+ <View name="a link that looks like a button">
120
+ <Button primary href="https://google.com">Linkbutton</Button>
121
+ </View>
122
+
123
+
124
+ <style>
125
+ .translucent {
126
+ display: flex;
127
+ gap: 20px;
128
+ }
129
+ .translucent > div {
130
+ padding: 10px;
131
+ }
132
+ .light {
133
+ background-color: white;
134
+ }
135
+ .dark {
136
+ background-color: #2a2a2a;
137
+ }
138
+ </style>
@@ -0,0 +1,30 @@
1
+ <script>
2
+ import "@spectrum-css/buttongroup/dist/index-vars.css"
3
+ export let vertical = false
4
+ export let gap = ""
5
+
6
+ $: gapStyle =
7
+ gap === "L"
8
+ ? "var(--spacing-l)"
9
+ : gap === "M"
10
+ ? "var(--spacing-m)"
11
+ : gap === "S"
12
+ ? "var(--spacing-s)"
13
+ : null
14
+
15
+ function group(element) {
16
+ const buttons = Array.from(element.getElementsByTagName("button"))
17
+ buttons.forEach(button => {
18
+ button.classList.add("spectrum-ButtonGroup-item")
19
+ })
20
+ }
21
+ </script>
22
+
23
+ <div
24
+ use:group
25
+ class="spectrum-ButtonGroup"
26
+ class:spectrum-ButtonGroup--vertical={vertical}
27
+ style={gapStyle ? `gap: ${gapStyle};` : null}
28
+ >
29
+ <slot />
30
+ </div>
@@ -0,0 +1,19 @@
1
+ <script>
2
+ export let small = false
3
+ export let disabled
4
+ </script>
5
+
6
+ <button
7
+ on:click
8
+ class="spectrum-ClearButton"
9
+ class:spectrum-ClearButton--small={small}
10
+ {disabled}
11
+ >
12
+ <svg
13
+ class="spectrum-Icon spectrum-UIIcon-Cross75"
14
+ focusable="false"
15
+ aria-hidden="true"
16
+ >
17
+ <use xlink:href="#spectrum-css-icon-Cross75" />
18
+ </svg>
19
+ </button>