@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.
- package/LICENSE +375 -0
- package/README.md +42 -0
- package/dist/bbui.es.js +8 -0
- package/dist/bbui.es.js.map +1 -0
- package/package.json +94 -0
- package/src/Accordion/Accordion.svelte +58 -0
- package/src/ActionButton/ActionButton.svelte +132 -0
- package/src/ActionGroup/ActionGroup.svelte +26 -0
- package/src/ActionMenu/ActionMenu.svelte +43 -0
- package/src/Actions/ClickOutside.svench.svx +30 -0
- package/src/Actions/PositionDropdown.svench.svx +81 -0
- package/src/Actions/autoresize_textarea.js +14 -0
- package/src/Actions/click_outside.js +76 -0
- package/src/Actions/position_dropdown.js +116 -0
- package/src/Avatar/Avatar.svelte +63 -0
- package/src/Badge/Badge.svelte +42 -0
- package/src/Banner/Banner.svelte +72 -0
- package/src/Banner/BannerDisplay.svelte +41 -0
- package/src/Button/Button.svelte +118 -0
- package/src/Button/Button.svench +138 -0
- package/src/ButtonGroup/ButtonGroup.svelte +30 -0
- package/src/ClearButton/ClearButton.svelte +19 -0
- package/src/ColorPicker/ColorPicker.svelte +304 -0
- package/src/DetailSummary/DetailSummary.svelte +92 -0
- package/src/Divider/Divider.svelte +28 -0
- package/src/Drawer/Drawer.svelte +113 -0
- package/src/Drawer/Drawer.svench +42 -0
- package/src/Drawer/DrawerContent.svelte +45 -0
- package/src/FancyForm/FancyButton.svelte +30 -0
- package/src/FancyForm/FancyButtonRadio.svelte +70 -0
- package/src/FancyForm/FancyCheckbox.svelte +53 -0
- package/src/FancyForm/FancyField.svelte +126 -0
- package/src/FancyForm/FancyFieldLabel.svelte +25 -0
- package/src/FancyForm/FancyForm.svelte +40 -0
- package/src/FancyForm/FancyInput.svelte +109 -0
- package/src/FancyForm/FancySelect.svelte +147 -0
- package/src/FancyForm/index.js +6 -0
- package/src/Form/Checkbox.svelte +23 -0
- package/src/Form/Combobox.svelte +45 -0
- package/src/Form/Core/Checkbox.svelte +69 -0
- package/src/Form/Core/CheckboxGroup.svelte +68 -0
- package/src/Form/Core/Combobox.svelte +142 -0
- package/src/Form/Core/DatePicker.svelte +265 -0
- package/src/Form/Core/Dropzone.svelte +482 -0
- package/src/Form/Core/EnvDropdown.svelte +276 -0
- package/src/Form/Core/File.svelte +115 -0
- package/src/Form/Core/InputDropdown.svelte +235 -0
- package/src/Form/Core/Multiselect.svelte +99 -0
- package/src/Form/Core/Picker.svelte +314 -0
- package/src/Form/Core/PickerDropdown.svelte +431 -0
- package/src/Form/Core/RadioGroup.svelte +65 -0
- package/src/Form/Core/RichTextField.svelte +42 -0
- package/src/Form/Core/Search.svelte +105 -0
- package/src/Form/Core/Select.svelte +90 -0
- package/src/Form/Core/Slider.svelte +86 -0
- package/src/Form/Core/Stepper.svelte +172 -0
- package/src/Form/Core/Switch.svelte +35 -0
- package/src/Form/Core/TextArea.svelte +78 -0
- package/src/Form/Core/TextField.svelte +115 -0
- package/src/Form/Core/index.js +16 -0
- package/src/Form/DatePicker.svelte +46 -0
- package/src/Form/Dropzone.svelte +44 -0
- package/src/Form/EnvDropdown.svelte +50 -0
- package/src/Form/Field.svelte +42 -0
- package/src/Form/FieldLabel.svelte +32 -0
- package/src/Form/File.svelte +37 -0
- package/src/Form/Input.svelte +45 -0
- package/src/Form/InputDropdown.svelte +53 -0
- package/src/Form/Multiselect.svelte +49 -0
- package/src/Form/PickerDropdown.svelte +131 -0
- package/src/Form/RadioGroup.svelte +42 -0
- package/src/Form/RichTextField.svelte +36 -0
- package/src/Form/Search.svelte +36 -0
- package/src/Form/Select.svelte +67 -0
- package/src/Form/Slider.svelte +24 -0
- package/src/Form/Stepper.svelte +45 -0
- package/src/Form/TextArea.svelte +34 -0
- package/src/Form/Toggle.svelte +22 -0
- package/src/Icon/Icon.svelte +94 -0
- package/src/Icon/IconAvatar.svelte +61 -0
- package/src/IconPicker/IconPicker.svelte +184 -0
- package/src/IconSideNav/IconSideNav.svelte +14 -0
- package/src/IconSideNav/IconSideNavItem.svelte +56 -0
- package/src/InlineAlert/InlineAlert.svelte +63 -0
- package/src/Input/CopyInput.svelte +59 -0
- package/src/Label/Label.svelte +31 -0
- package/src/Layout/Layout.svelte +94 -0
- package/src/Layout/Page.svelte +101 -0
- package/src/Link/Link.svelte +27 -0
- package/src/List/List.svelte +28 -0
- package/src/List/ListItem.svelte +93 -0
- package/src/Markdown/MarkdownEditor.svelte +60 -0
- package/src/Markdown/MarkdownViewer.svelte +70 -0
- package/src/Markdown/SpectrumMDE.svelte +184 -0
- package/src/Menu/Item.svelte +94 -0
- package/src/Menu/Menu.svelte +7 -0
- package/src/Menu/Menu.svench +19 -0
- package/src/Menu/Section.svelte +10 -0
- package/src/Menu/Separator.svelte +1 -0
- package/src/Modal/Content.svelte +6 -0
- package/src/Modal/CustomContent.svelte +37 -0
- package/src/Modal/Modal.svelte +178 -0
- package/src/Modal/Modal.svench +116 -0
- package/src/Modal/ModalContent.svelte +190 -0
- package/src/Modal/QuizModal.svelte +53 -0
- package/src/Notification/Notification.svelte +74 -0
- package/src/Notification/NotificationDisplay.svelte +43 -0
- package/src/Pagination/Pagination.svelte +57 -0
- package/src/Popover/Popover.svelte +95 -0
- package/src/Popover/Popover.svench +120 -0
- package/src/ProgressBar/ProgressBar.svelte +67 -0
- package/src/ProgressCircle/ProgressCircle.svelte +62 -0
- package/src/SideNavigation/Item.svelte +59 -0
- package/src/SideNavigation/Navigation.svelte +12 -0
- package/src/StatusLight/StatusLight.svelte +80 -0
- package/src/Stores/Notifications.svench.svx +78 -0
- package/src/Stores/banner.js +65 -0
- package/src/Stores/notifications.js +84 -0
- package/src/Table/ArrayRenderer.svelte +18 -0
- package/src/Table/AttachmentRenderer.svelte +73 -0
- package/src/Table/BoldRenderer.svelte +15 -0
- package/src/Table/BooleanRenderer.svelte +42 -0
- package/src/Table/CellRenderer.svelte +70 -0
- package/src/Table/CodeRenderer.svelte +14 -0
- package/src/Table/DateTimeRenderer.svelte +29 -0
- package/src/Table/InternalRenderer.svelte +24 -0
- package/src/Table/RelationshipRenderer.svelte +35 -0
- package/src/Table/SelectEditRenderer.svelte +28 -0
- package/src/Table/StringRenderer.svelte +22 -0
- package/src/Table/Table.svelte +657 -0
- package/src/Table/index.js +1 -0
- package/src/Tabs/Tab.svelte +88 -0
- package/src/Tabs/Tabs.svelte +130 -0
- package/src/Tags/Tag.svelte +43 -0
- package/src/Tags/Tags.svelte +17 -0
- package/src/Tooltip/Tooltip.svelte +34 -0
- package/src/Tooltip/TooltipWrapper.svelte +60 -0
- package/src/TreeView/Item.svelte +41 -0
- package/src/TreeView/Tree.svelte +16 -0
- package/src/Typography/Body.svelte +22 -0
- package/src/Typography/Code.svelte +10 -0
- package/src/Typography/Detail.svelte +19 -0
- package/src/Typography/Heading.svelte +24 -0
- package/src/bbui.css +118 -0
- package/src/context.js +4 -0
- package/src/helpers.js +116 -0
- package/src/index.js +109 -0
- package/src/spectrum-icons-rollup.js +31 -0
- 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>
|