@budibase/bbui 1.3.0 → 1.3.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 (152) hide show
  1. package/LICENSE +375 -0
  2. package/README.md +19 -17
  3. package/dist/bbui.es.js +210 -0
  4. package/dist/bbui.es.js.map +1 -0
  5. package/package.json +71 -26
  6. package/src/ActionButton/ActionButton.svelte +102 -0
  7. package/src/ActionGroup/ActionGroup.svelte +26 -0
  8. package/src/ActionMenu/ActionMenu.svelte +44 -0
  9. package/src/Actions/ClickOutside.svench.svx +30 -0
  10. package/src/Actions/PositionDropdown.svench.svx +81 -0
  11. package/src/Actions/autoresize_textarea.js +14 -0
  12. package/src/Actions/click_outside.js +18 -0
  13. package/src/Actions/position_dropdown.js +66 -0
  14. package/src/Avatar/Avatar.svelte +62 -0
  15. package/src/Badge/Badge.svelte +29 -0
  16. package/src/Banner/Banner.svelte +72 -0
  17. package/src/Banner/BannerDisplay.svelte +31 -0
  18. package/src/Button/Button.svelte +114 -0
  19. package/src/Button/Button.svench +138 -0
  20. package/src/ButtonGroup/ButtonGroup.svelte +30 -0
  21. package/src/ClearButton/ClearButton.svelte +19 -0
  22. package/src/ColorPicker/ColorPicker.svelte +297 -0
  23. package/src/DetailSummary/DetailSummary.svelte +83 -0
  24. package/src/Divider/Divider.svelte +28 -0
  25. package/src/Drawer/Drawer.svelte +113 -0
  26. package/src/Drawer/Drawer.svench +42 -0
  27. package/src/Drawer/DrawerContent.svelte +46 -0
  28. package/src/Form/Checkbox.svelte +23 -0
  29. package/src/Form/Combobox.svelte +45 -0
  30. package/src/Form/Core/Checkbox.svelte +69 -0
  31. package/src/Form/Core/CheckboxGroup.svelte +68 -0
  32. package/src/Form/Core/Combobox.svelte +142 -0
  33. package/src/Form/Core/DatePicker.svelte +257 -0
  34. package/src/Form/Core/Dropzone.svelte +450 -0
  35. package/src/Form/Core/InputDropdown.svelte +228 -0
  36. package/src/Form/Core/Multiselect.svelte +90 -0
  37. package/src/Form/Core/Picker.svelte +259 -0
  38. package/src/Form/Core/PickerDropdown.svelte +436 -0
  39. package/src/Form/Core/RadioGroup.svelte +48 -0
  40. package/src/Form/Core/RichTextField.svelte +42 -0
  41. package/src/Form/Core/Search.svelte +105 -0
  42. package/src/Form/Core/Select.svelte +75 -0
  43. package/src/Form/Core/Slider.svelte +86 -0
  44. package/src/Form/Core/Stepper.svelte +172 -0
  45. package/src/Form/Core/Switch.svelte +37 -0
  46. package/src/Form/Core/TextArea.svelte +78 -0
  47. package/src/Form/Core/TextField.svelte +119 -0
  48. package/src/Form/Core/index.js +15 -0
  49. package/src/Form/DatePicker.svelte +39 -0
  50. package/src/Form/Dropzone.svelte +42 -0
  51. package/src/Form/Field.svelte +42 -0
  52. package/src/Form/FieldLabel.svelte +32 -0
  53. package/src/Form/Input.svelte +40 -45
  54. package/src/Form/InputDropdown.svelte +55 -0
  55. package/src/Form/Multiselect.svelte +40 -0
  56. package/src/Form/PickerDropdown.svelte +134 -0
  57. package/src/Form/RadioGroup.svelte +42 -0
  58. package/src/Form/RichTextField.svelte +36 -0
  59. package/src/Form/Search.svelte +36 -0
  60. package/src/Form/Select.svelte +48 -43
  61. package/src/Form/Slider.svelte +24 -0
  62. package/src/Form/Stepper.svelte +45 -0
  63. package/src/Form/TextArea.svelte +29 -44
  64. package/src/Form/Toggle.svelte +23 -0
  65. package/src/Icon/Icon.svelte +91 -0
  66. package/src/IconPicker/IconPicker.svelte +177 -0
  67. package/src/IconSideNav/IconSideNav.svelte +14 -0
  68. package/src/IconSideNav/IconSideNavItem.svelte +56 -0
  69. package/src/InlineAlert/InlineAlert.svelte +56 -0
  70. package/src/Label/Label.svelte +20 -0
  71. package/src/Layout/Layout.svelte +94 -0
  72. package/src/Layout/Page.svelte +32 -0
  73. package/src/Link/Link.svelte +24 -0
  74. package/src/List/List.svelte +28 -0
  75. package/src/List/ListItem.svelte +98 -0
  76. package/src/Markdown/MarkdownEditor.svelte +60 -0
  77. package/src/Markdown/MarkdownViewer.svelte +70 -0
  78. package/src/Markdown/SpectrumMDE.svelte +184 -0
  79. package/src/Menu/Item.svelte +96 -0
  80. package/src/Menu/Menu.svelte +7 -0
  81. package/src/Menu/Menu.svench +19 -0
  82. package/src/Menu/Section.svelte +10 -0
  83. package/src/Menu/Separator.svelte +1 -0
  84. package/src/Modal/Content.svelte +6 -0
  85. package/src/Modal/CustomContent.svelte +38 -0
  86. package/src/Modal/Modal.svelte +165 -0
  87. package/src/Modal/Modal.svench +117 -0
  88. package/src/Modal/ModalContent.svelte +192 -0
  89. package/src/Modal/QuizModal.svelte +54 -0
  90. package/src/Notification/Notification.svelte +70 -0
  91. package/src/Notification/NotificationDisplay.svelte +43 -0
  92. package/src/Pagination/Pagination.svelte +57 -0
  93. package/src/Popover/Popover.svelte +77 -0
  94. package/src/Popover/Popover.svench +121 -0
  95. package/src/ProgressBar/ProgressBar.svelte +54 -0
  96. package/src/ProgressCircle/ProgressCircle.svelte +62 -0
  97. package/src/SideNavigation/Item.svelte +47 -0
  98. package/src/SideNavigation/Navigation.svelte +12 -0
  99. package/src/StatusLight/StatusLight.svelte +80 -0
  100. package/src/Stores/Notifications.svench.svx +78 -0
  101. package/src/Stores/banner.js +37 -0
  102. package/src/Stores/notifications.js +84 -0
  103. package/src/Table/ArrayRenderer.svelte +17 -0
  104. package/src/Table/AttachmentRenderer.svelte +67 -0
  105. package/src/Table/BoldRenderer.svelte +15 -0
  106. package/src/Table/BooleanRenderer.svelte +42 -0
  107. package/src/Table/CellRenderer.svelte +69 -0
  108. package/src/Table/CodeRenderer.svelte +14 -0
  109. package/src/Table/DateTimeRenderer.svelte +29 -0
  110. package/src/Table/InternalRenderer.svelte +24 -0
  111. package/src/Table/RelationshipRenderer.svelte +40 -0
  112. package/src/Table/SelectEditRenderer.svelte +28 -0
  113. package/src/Table/StringRenderer.svelte +14 -0
  114. package/src/Table/Table.svelte +635 -0
  115. package/src/Table/index.js +1 -0
  116. package/src/Tabs/Tab.svelte +88 -0
  117. package/src/Tabs/Tabs.svelte +125 -0
  118. package/src/Tags/Tag.svelte +43 -0
  119. package/src/Tags/Tags.svelte +7 -0
  120. package/src/Tooltip/Tooltip.svelte +34 -0
  121. package/src/Tooltip/TooltipWrapper.svelte +60 -0
  122. package/src/TreeView/Item.svelte +41 -0
  123. package/src/TreeView/Tree.svelte +16 -0
  124. package/src/Typography/Body.svelte +21 -0
  125. package/src/Typography/Code.svelte +10 -0
  126. package/src/Typography/Detail.svelte +19 -0
  127. package/src/Typography/Heading.svelte +17 -0
  128. package/src/bbui.css +96 -0
  129. package/src/context.js +3 -0
  130. package/src/helpers.js +134 -0
  131. package/src/index.js +97 -11
  132. package/src/spectrum-icons-rollup.js +31 -0
  133. package/src/spectrum-icons-vite.js +31 -0
  134. package/dist/bundle.css +0 -7
  135. package/dist/bundle.css.map +0 -20
  136. package/dist/index.js +0 -1100
  137. package/dist/index.mjs +0 -1086
  138. package/src/Branding/Budibase-logo.svelte +0 -68
  139. package/src/Branding/Logo.svelte +0 -16
  140. package/src/Branding/Logo.svench +0 -8
  141. package/src/Form/Button.svelte +0 -131
  142. package/src/Form/Button.svench +0 -49
  143. package/src/Form/Input.svench +0 -8
  144. package/src/Form/Select.svench +0 -8
  145. package/src/Form/TextArea.svench +0 -8
  146. package/src/Links/Home.svelte +0 -49
  147. package/src/Links/Home.svench +0 -19
  148. package/src/List/Items/DetailSummary.svelte +0 -66
  149. package/src/List/Items/DetailSummary.svench +0 -15
  150. package/src/actions/autoresize_textarea.js +0 -14
  151. package/src/icons/Contribution.svelte +0 -14
  152. package/src/index.svench.svx +0 -35
@@ -0,0 +1,23 @@
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
+ export let dataCy = null
13
+
14
+ const dispatch = createEventDispatcher()
15
+ const onChange = e => {
16
+ value = e.detail
17
+ dispatch("change", e.detail)
18
+ }
19
+ </script>
20
+
21
+ <Field {label} {labelPosition} {error}>
22
+ <Switch {dataCy} {error} {disabled} {text} {value} on:change={onChange} />
23
+ </Field>
@@ -0,0 +1,91 @@
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);
68
+ cursor: pointer;
69
+ }
70
+
71
+ svg.disabled {
72
+ color: var(--spectrum-global-color-gray-500) !important;
73
+ pointer-events: none !important;
74
+ }
75
+
76
+ .tooltip {
77
+ position: absolute;
78
+ pointer-events: none;
79
+ left: 50%;
80
+ top: calc(100% + 4px);
81
+ width: 100vw;
82
+ max-width: 150px;
83
+ transform: translateX(-50%);
84
+ text-align: center;
85
+ }
86
+
87
+ .spectrum-Icon--sizeXS {
88
+ width: 10px;
89
+ height: 10px;
90
+ }
91
+ </style>
@@ -0,0 +1,177 @@
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
+ </script>
54
+
55
+ <div class="container">
56
+ <div class="preview size--{size || 'M'}" on:click={() => (open = true)}>
57
+ <div
58
+ class="fill"
59
+ style={value ? `background: ${value};` : ""}
60
+ class:placeholder={!value}
61
+ >
62
+ <Icon name={value || "UserGroup"} />
63
+ </div>
64
+ </div>
65
+ {#if open}
66
+ <div
67
+ use:clickOutside={() => (open = false)}
68
+ transition:fly={{ y: -20, duration: 200 }}
69
+ class="spectrum-Popover spectrum-Popover--bottom spectrum-Picker-popover is-open"
70
+ class:spectrum-Popover--align-right={alignRight}
71
+ >
72
+ {#each iconList as icon}
73
+ <div class="category">
74
+ <div class="heading">{icon.label}</div>
75
+ <div class="icons">
76
+ {#each icon.icons as icon}
77
+ <div
78
+ on:click={() => {
79
+ onChange(icon)
80
+ }}
81
+ >
82
+ <Icon name={icon} />
83
+ </div>
84
+ {/each}
85
+ </div>
86
+ </div>
87
+ {/each}
88
+ </div>
89
+ {/if}
90
+ </div>
91
+
92
+ <style>
93
+ .container {
94
+ position: relative;
95
+ }
96
+ .preview {
97
+ width: 32px;
98
+ height: 32px;
99
+ position: relative;
100
+ box-shadow: 0 0 0 1px var(--spectrum-global-color-gray-400);
101
+ }
102
+ .preview:hover {
103
+ cursor: pointer;
104
+ }
105
+ .fill {
106
+ width: 100%;
107
+ height: 100%;
108
+ position: absolute;
109
+ top: 0;
110
+ left: 0;
111
+ display: grid;
112
+ place-items: center;
113
+ }
114
+ .size--S {
115
+ width: 20px;
116
+ height: 20px;
117
+ }
118
+ .size--M {
119
+ width: 32px;
120
+ height: 32px;
121
+ }
122
+ .size--L {
123
+ width: 48px;
124
+ height: 48px;
125
+ }
126
+ .spectrum-Popover {
127
+ width: 210px;
128
+ z-index: 999;
129
+ top: 100%;
130
+ padding: var(--spacing-l) var(--spacing-xl);
131
+ display: flex;
132
+ flex-direction: column;
133
+ justify-content: flex-start;
134
+ align-items: stretch;
135
+ gap: var(--spacing-xl);
136
+ }
137
+ .spectrum-Popover--align-right {
138
+ right: 0;
139
+ }
140
+ .icons {
141
+ display: grid;
142
+ grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr;
143
+ gap: var(--spacing-m);
144
+ }
145
+ .heading {
146
+ font-size: var(--font-size-s);
147
+ font-weight: 600;
148
+ letter-spacing: 0.14px;
149
+ flex: 1 1 auto;
150
+ text-transform: uppercase;
151
+ grid-column: 1 / 5;
152
+ margin-bottom: var(--spacing-s);
153
+ }
154
+
155
+ .icon {
156
+ height: 16px;
157
+ width: 16px;
158
+ border-radius: 100%;
159
+ box-shadow: 0 0 0 1px var(--spectrum-global-color-gray-300);
160
+ position: relative;
161
+ }
162
+ .icon:hover {
163
+ cursor: pointer;
164
+ box-shadow: 0 0 2px 2px var(--spectrum-global-color-gray-300);
165
+ }
166
+ .custom {
167
+ display: grid;
168
+ grid-template-columns: 1fr auto;
169
+ align-items: center;
170
+ gap: var(--spacing-m);
171
+ margin-right: var(--spacing-xs);
172
+ }
173
+
174
+ .spectrum-wrapper {
175
+ background-color: transparent;
176
+ }
177
+ </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,56 @@
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
+
10
+ $: icon = selectIcon(type)
11
+ // if newlines used, convert them to different elements
12
+ $: split = message.split("\n")
13
+
14
+ function selectIcon(alertType) {
15
+ switch (alertType) {
16
+ case "error":
17
+ case "negative":
18
+ return "Alert"
19
+ case "success":
20
+ return "CheckmarkCircle"
21
+ case "help":
22
+ return "Help"
23
+ default:
24
+ return "Info"
25
+ }
26
+ }
27
+ </script>
28
+
29
+ <div class="spectrum-InLineAlert spectrum-InLineAlert--{type}">
30
+ <svg
31
+ class="spectrum-Icon spectrum-Icon--sizeM spectrum-InLineAlert-icon"
32
+ focusable="false"
33
+ aria-hidden="true"
34
+ >
35
+ <use xlink:href="#spectrum-icon-18-{icon}" />
36
+ </svg>
37
+ <div class="spectrum-InLineAlert-header">{header}</div>
38
+ {#each split as splitMsg}
39
+ <div class="spectrum-InLineAlert-content">{splitMsg}</div>
40
+ {/each}
41
+ {#if onConfirm}
42
+ <div class="spectrum-InLineAlert-footer">
43
+ <Button secondary on:click={onConfirm}>OK</Button>
44
+ </div>
45
+ {/if}
46
+ </div>
47
+
48
+ <style>
49
+ .spectrum-InLineAlert {
50
+ --spectrum-semantic-negative-border-color: #e34850;
51
+ --spectrum-semantic-positive-border-color: #2d9d78;
52
+ --spectrum-semantic-positive-icon-color: #2d9d78;
53
+ --spectrum-semantic-negative-icon-color: #e34850;
54
+ min-width: 100px;
55
+ }
56
+ </style>
@@ -0,0 +1,20 @@
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
+ </script>
8
+
9
+ <TooltipWrapper {tooltip} {size}>
10
+ <label for="" class={`spectrum-FieldLabel spectrum-FieldLabel--size${size}`}>
11
+ <slot />
12
+ </label>
13
+ </TooltipWrapper>
14
+
15
+ <style>
16
+ label {
17
+ padding: 0;
18
+ white-space: nowrap;
19
+ }
20
+ </style>
@@ -0,0 +1,94 @@
1
+ <script>
2
+ export let horizontal = false
3
+ export let paddingX = "M"
4
+ export let paddingY = "M"
5
+ export let noPadding = false
6
+ export let gap = "M"
7
+ export let noGap = false
8
+ export let alignContent = "normal"
9
+ export let justifyItems = "stretch"
10
+ </script>
11
+
12
+ <div
13
+ style="align-content:{alignContent};justify-items:{justifyItems};"
14
+ class:horizontal
15
+ class="container paddingX-{!noPadding && paddingX} paddingY-{!noPadding &&
16
+ paddingY} gap-{!noGap && gap}"
17
+ >
18
+ <slot />
19
+ </div>
20
+
21
+ <style>
22
+ .container {
23
+ display: grid;
24
+ grid-template-columns: 1fr;
25
+ position: relative;
26
+ }
27
+ .paddingX-S {
28
+ padding-left: var(--spacing-s);
29
+ padding-right: var(--spacing-s);
30
+ }
31
+ .paddingX-M {
32
+ padding-left: var(--spacing-m);
33
+ padding-right: var(--spacing-m);
34
+ }
35
+ .paddingX-L {
36
+ padding-left: var(--spacing-l);
37
+ padding-right: var(--spacing-l);
38
+ }
39
+ .paddingX-XL {
40
+ padding-left: var(--spacing-xl);
41
+ padding-right: var(--spacing-xl);
42
+ }
43
+ .paddingX-XXL {
44
+ padding-left: var(--spectrum-alias-grid-gutter-large);
45
+ padding-right: var(--spectrum-alias-grid-gutter-large);
46
+ }
47
+ .paddingY-S {
48
+ padding-top: var(--spacing-s);
49
+ padding-bottom: var(--spacing-s);
50
+ }
51
+ .paddingY-M {
52
+ padding-top: var(--spacing-m);
53
+ padding-bottom: var(--spacing-m);
54
+ }
55
+ .paddingY-L {
56
+ padding-top: var(--spacing-l);
57
+ padding-bottom: var(--spacing-l);
58
+ }
59
+ .paddingY-XL {
60
+ padding-top: var(--spacing-xl);
61
+ padding-bottom: var(--spacing-xl);
62
+ }
63
+ .paddingY-XXL {
64
+ padding-top: var(--spectrum-alias-grid-gutter-large);
65
+ padding-bottom: var(--spectrum-alias-grid-gutter-large);
66
+ }
67
+ .gap-XXS {
68
+ grid-gap: var(--spacing-xs);
69
+ }
70
+ .gap-XS {
71
+ grid-gap: var(--spacing-s);
72
+ }
73
+ .gap-S {
74
+ grid-gap: var(--spectrum-alias-grid-gutter-xsmall);
75
+ }
76
+ .gap-M {
77
+ grid-gap: var(--spectrum-alias-grid-gutter-small);
78
+ }
79
+ .gap-L {
80
+ grid-gap: var(--spectrum-alias-grid-gutter-medium);
81
+ }
82
+ .gap-XL {
83
+ grid-gap: var(--spectrum-alias-grid-gutter-large);
84
+ }
85
+ .horizontal.gap-S :global(*) + :global(*) {
86
+ margin-left: var(--spectrum-alias-grid-gutter-xsmall);
87
+ }
88
+ .horizontal.gap-M :global(*) + :global(*) {
89
+ margin-left: var(--spectrum-alias-grid-gutter-small);
90
+ }
91
+ .horizontal.gap-L :global(*) + :global(*) {
92
+ margin-left: var(--spectrum-alias-grid-gutter-medium);
93
+ }
94
+ </style>
@@ -0,0 +1,32 @@
1
+ <script>
2
+ export let wide = false
3
+ export let maxWidth = "80ch"
4
+ export let noPadding = false
5
+ </script>
6
+
7
+ <div style="--max-width: {maxWidth}" class:wide class:noPadding>
8
+ <slot />
9
+ </div>
10
+
11
+ <style>
12
+ div {
13
+ display: flex;
14
+ flex-direction: column;
15
+ justify-content: flex-start;
16
+ align-items: stretch;
17
+ max-width: var(--max-width);
18
+ margin: 0 auto;
19
+ padding: calc(var(--spacing-xl) * 2);
20
+ min-height: calc(100% - var(--spacing-xl) * 4);
21
+ }
22
+
23
+ .wide {
24
+ max-width: none;
25
+ margin: 0;
26
+ }
27
+
28
+ .noPadding {
29
+ padding: 0px;
30
+ margin: 0px;
31
+ }
32
+ </style>
@@ -0,0 +1,24 @@
1
+ <script>
2
+ import "@spectrum-css/link/dist/index-vars.css"
3
+
4
+ export let href = "#"
5
+ export let size = "M"
6
+ export let quiet = false
7
+ export let primary = false
8
+ export let secondary = false
9
+ export let overBackground = false
10
+ export let target
11
+ export let download
12
+ </script>
13
+
14
+ <a
15
+ on:click
16
+ {href}
17
+ {target}
18
+ {download}
19
+ class:spectrum-Link--primary={primary}
20
+ class:spectrum-Link--secondary={secondary}
21
+ class:spectrum-Link--overBackground={overBackground}
22
+ class:spectrum-Link--quiet={quiet}
23
+ class="spectrum-Link spectrum-Link--size{size}"><slot /></a
24
+ >
@@ -0,0 +1,28 @@
1
+ <script>
2
+ import Detail from "../Typography/Detail.svelte"
3
+
4
+ export let title = null
5
+ </script>
6
+
7
+ <div>
8
+ {#if title}
9
+ <div class="title">
10
+ <Detail>{title}</Detail>
11
+ </div>
12
+ {/if}
13
+ <div class="list-items">
14
+ <slot />
15
+ </div>
16
+ </div>
17
+
18
+ <style>
19
+ .title {
20
+ margin-bottom: 6px;
21
+ }
22
+ .list-items {
23
+ display: flex;
24
+ flex-direction: column;
25
+ justify-content: flex-start;
26
+ align-items: stretch;
27
+ }
28
+ </style>