@budibase/bbui 1.0.0 → 1.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 (128) hide show
  1. package/LICENSE +375 -0
  2. package/README.md +19 -17
  3. package/dist/bbui.es.js +2 -0
  4. package/dist/bbui.es.js.map +1 -0
  5. package/package.json +68 -26
  6. package/src/ActionButton/ActionButton.svelte +83 -0
  7. package/src/ActionGroup/ActionGroup.svelte +26 -0
  8. package/src/ActionMenu/ActionMenu.svelte +43 -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 +49 -0
  15. package/src/Badge/Badge.svelte +29 -0
  16. package/src/Button/Button.svelte +52 -0
  17. package/src/Button/Button.svench +138 -0
  18. package/src/ButtonGroup/ButtonGroup.svelte +19 -0
  19. package/src/ClearButton/ClearButton.svelte +19 -0
  20. package/src/ColorPicker/ColorPicker.svelte +292 -0
  21. package/src/DetailSummary/DetailSummary.svelte +83 -0
  22. package/src/Divider/Divider.svelte +25 -0
  23. package/src/Drawer/Drawer.svelte +85 -0
  24. package/src/Drawer/Drawer.svench +42 -0
  25. package/src/Drawer/DrawerContent.svelte +46 -0
  26. package/src/Form/Checkbox.svelte +23 -0
  27. package/src/Form/Combobox.svelte +44 -0
  28. package/src/Form/Core/Checkbox.svelte +67 -0
  29. package/src/Form/Core/Combobox.svelte +156 -0
  30. package/src/Form/Core/DatePicker.svelte +183 -0
  31. package/src/Form/Core/Dropzone.svelte +393 -0
  32. package/src/Form/Core/Multiselect.svelte +88 -0
  33. package/src/Form/Core/Picker.svelte +241 -0
  34. package/src/Form/Core/RadioGroup.svelte +47 -0
  35. package/src/Form/Core/Search.svelte +101 -0
  36. package/src/Form/Core/Select.svelte +81 -0
  37. package/src/Form/Core/Stepper.svelte +172 -0
  38. package/src/Form/Core/Switch.svelte +35 -0
  39. package/src/Form/Core/TextArea.svelte +60 -0
  40. package/src/Form/Core/TextField.svelte +104 -0
  41. package/src/Form/Core/index.js +12 -0
  42. package/src/Form/DatePicker.svelte +33 -0
  43. package/src/Form/Dropzone.svelte +34 -0
  44. package/src/Form/Field.svelte +41 -0
  45. package/src/Form/FieldLabel.svelte +27 -0
  46. package/src/Form/Input.svelte +38 -45
  47. package/src/Form/Multiselect.svelte +39 -0
  48. package/src/Form/RadioGroup.svelte +38 -0
  49. package/src/Form/Search.svelte +32 -0
  50. package/src/Form/Select.svelte +45 -43
  51. package/src/Form/Stepper.svelte +45 -0
  52. package/src/Form/TextArea.svelte +25 -44
  53. package/src/Form/Toggle.svelte +23 -0
  54. package/src/Icon/Icon.svelte +47 -0
  55. package/src/InlineAlert/InlineAlert.svelte +56 -0
  56. package/src/Label/Label.svelte +67 -0
  57. package/src/Layout/Layout.svelte +75 -0
  58. package/src/Layout/Page.svelte +25 -0
  59. package/src/Link/Link.svelte +22 -0
  60. package/src/List/Items/DetailSummary.svench +53 -0
  61. package/src/Menu/Item.svelte +45 -0
  62. package/src/Menu/Menu.svelte +7 -0
  63. package/src/Menu/Menu.svench +19 -0
  64. package/src/Menu/Section.svelte +10 -0
  65. package/src/Menu/Separator.svelte +1 -0
  66. package/src/Modal/Content.svelte +6 -0
  67. package/src/Modal/CustomContent.svelte +38 -0
  68. package/src/Modal/Modal.svelte +133 -0
  69. package/src/Modal/Modal.svench +117 -0
  70. package/src/Modal/ModalContent.svelte +139 -0
  71. package/src/Modal/QuizModal.svelte +54 -0
  72. package/src/Notification/Notification.svelte +20 -0
  73. package/src/Notification/NotificationDisplay.svelte +36 -0
  74. package/src/Pagination/Pagination.svelte +57 -0
  75. package/src/Popover/Popover.svelte +52 -0
  76. package/src/Popover/Popover.svench +121 -0
  77. package/src/ProgressBar/ProgressBar.svelte +54 -0
  78. package/src/ProgressCircle/ProgressCircle.svelte +62 -0
  79. package/src/SideNavigation/Item.svelte +45 -0
  80. package/src/SideNavigation/Navigation.svelte +12 -0
  81. package/src/StatusLight/StatusLight.svelte +41 -0
  82. package/src/Stores/Notifications.svench.svx +78 -0
  83. package/src/Stores/notifications.js +56 -0
  84. package/src/Table/ArrayRenderer.svelte +17 -0
  85. package/src/Table/AttachmentRenderer.svelte +55 -0
  86. package/src/Table/BooleanRenderer.svelte +42 -0
  87. package/src/Table/CellRenderer.svelte +37 -0
  88. package/src/Table/DateTimeRenderer.svelte +13 -0
  89. package/src/Table/InternalRenderer.svelte +28 -0
  90. package/src/Table/RelationshipRenderer.svelte +40 -0
  91. package/src/Table/SelectEditRenderer.svelte +16 -0
  92. package/src/Table/StringRenderer.svelte +13 -0
  93. package/src/Table/Table.svelte +506 -0
  94. package/src/Table/index.js +1 -0
  95. package/src/Tabs/Tab.svelte +66 -0
  96. package/src/Tabs/Tabs.svelte +105 -0
  97. package/src/Tags/Tag.svelte +43 -0
  98. package/src/Tags/Tags.svelte +7 -0
  99. package/src/Tooltip/Tooltip.svelte +24 -0
  100. package/src/TreeView/Item.svelte +41 -0
  101. package/src/TreeView/Tree.svelte +16 -0
  102. package/src/Typography/Body.svelte +19 -0
  103. package/src/Typography/Code.svelte +10 -0
  104. package/src/Typography/Detail.svelte +15 -0
  105. package/src/Typography/Heading.svelte +16 -0
  106. package/src/bbui.css +96 -0
  107. package/src/context.js +3 -0
  108. package/src/index.js +75 -10
  109. package/src/spectrum-icons-rollup.js +31 -0
  110. package/src/spectrum-icons-vite.js +31 -0
  111. package/src/utils/helpers.js +8 -0
  112. package/dist/bundle.css +0 -6
  113. package/dist/bundle.css.map +0 -18
  114. package/dist/index.js +0 -919
  115. package/dist/index.mjs +0 -906
  116. package/src/Branding/Budibase-logo.svelte +0 -68
  117. package/src/Branding/Logo.svelte +0 -16
  118. package/src/Branding/Logo.svench +0 -8
  119. package/src/Form/Button.svelte +0 -52
  120. package/src/Form/Button.svench +0 -26
  121. package/src/Form/Input.svench +0 -8
  122. package/src/Form/Select.svench +0 -8
  123. package/src/Form/TextArea.svench +0 -8
  124. package/src/Links/Home.svelte +0 -49
  125. package/src/Links/Home.svench +0 -19
  126. package/src/actions/autoresize_textarea.js +0 -14
  127. package/src/icons/Contribution.svelte +0 -14
  128. package/src/index.svench.svx +0 -35
@@ -0,0 +1,43 @@
1
+ <script>
2
+ import "@spectrum-css/tags/dist/index-vars.css"
3
+ import Avatar from "../Avatar/Avatar.svelte"
4
+ import ClearButton from "../ClearButton/ClearButton.svelte"
5
+
6
+ export let icon = ""
7
+ export let avatar = ""
8
+ export let invalid = false
9
+ export let disabled = false
10
+ export let closable = false
11
+ </script>
12
+
13
+ <div
14
+ class:is-invalid={invalid}
15
+ class:is-disabled={disabled}
16
+ class="spectrum-Tags-item"
17
+ role="listitem"
18
+ >
19
+ {#if avatar}
20
+ <Avatar url={avatar} />
21
+ {/if}
22
+ {#if icon}
23
+ <svg
24
+ class="spectrum-Icon spectrum-Icon--sizeS"
25
+ focusable="false"
26
+ aria-hidden="true"
27
+ aria-label="Tag"
28
+ >
29
+ <use xlink:href="#spectrum-icon-24-{icon}" />
30
+ </svg>
31
+ {/if}
32
+ <span class="spectrum-Tags-itemLabel"><slot /></span>
33
+ {#if closable}
34
+ <ClearButton on:click />
35
+ {/if}
36
+ </div>
37
+
38
+ <style>
39
+ .spectrum-Tags-item {
40
+ margin-top: 0;
41
+ margin-bottom: 0;
42
+ }
43
+ </style>
@@ -0,0 +1,7 @@
1
+ <script>
2
+ import "@spectrum-css/tags/dist/index-vars.css"
3
+ </script>
4
+
5
+ <div class="spectrum-Tags" role="list" aria-label="list">
6
+ <slot />
7
+ </div>
@@ -0,0 +1,24 @@
1
+ <script>
2
+ import "@spectrum-css/tooltip/dist/index-vars.css"
3
+
4
+ export let direction = "top"
5
+ export let text = ""
6
+ export let textWrapping = false
7
+ </script>
8
+
9
+ <!-- Showing / Hiding a text wrapped tooltip should be handled outside the component -->
10
+ {#if textWrapping}
11
+ <span class="spectrum-Tooltip spectrum-Tooltip--{direction} is-open">
12
+ <span class="spectrum-Tooltip-label">{text}</span>
13
+ <span class="spectrum-Tooltip-tip" />
14
+ </span>
15
+ {:else}
16
+ <!-- The default show on hover tooltip does not support text wrapping -->
17
+ <span class="u-tooltip-showOnHover tooltip">
18
+ <slot />
19
+ <div class={`spectrum-Tooltip spectrum-Tooltip--${direction}`}>
20
+ <span class="spectrum-Tooltip-label">{text}</span>
21
+ <span class="spectrum-Tooltip-tip" />
22
+ </div>
23
+ </span>
24
+ {/if}
@@ -0,0 +1,41 @@
1
+ <script>
2
+ export let selected = false
3
+ export let open = false
4
+ export let href = false
5
+ export let title
6
+ export let icon
7
+ </script>
8
+
9
+ <li
10
+ class:is-selected={selected}
11
+ class:is-open={open}
12
+ class="spectrum-TreeView-item"
13
+ >
14
+ <a on:click class="spectrum-TreeView-itemLink" {href}>
15
+ {#if $$slots.default}
16
+ <svg
17
+ class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-TreeView-itemIndicator"
18
+ focusable="false"
19
+ aria-hidden="true"
20
+ >
21
+ <use xlink:href="#spectrum-css-icon-Chevron100" />
22
+ </svg>
23
+ {/if}
24
+ {#if icon}
25
+ <svg
26
+ class="spectrum-TreeView-itemIcon spectrum-Icon spectrum-Icon--sizeM"
27
+ focusable="false"
28
+ aria-hidden="true"
29
+ aria-label="Layers"
30
+ >
31
+ <use xlink:href="#spectrum-icon-18-{icon}" />
32
+ </svg>
33
+ {/if}
34
+ <span class="spectrum-TreeView-itemLabel">{title}</span>
35
+ </a>
36
+ {#if $$slots.default}
37
+ <ul class="spectrum-TreeView">
38
+ <slot />
39
+ </ul>
40
+ {/if}
41
+ </li>
@@ -0,0 +1,16 @@
1
+ <script>
2
+ import "@spectrum-css/treeview/dist/index-vars.css"
3
+
4
+ export let quiet = false
5
+ export let standalone = true
6
+ export let width = "250px"
7
+ </script>
8
+
9
+ <ul
10
+ class:spectrum-TreeView--standalone={standalone}
11
+ class:spectrum-TreeView--quiet={quiet}
12
+ class="spectrum-TreeView"
13
+ style="width: {width}"
14
+ >
15
+ <slot />
16
+ </ul>
@@ -0,0 +1,19 @@
1
+ <script>
2
+ import "@spectrum-css/typography/dist/index-vars.css"
3
+
4
+ export let size = "M"
5
+ export let serif = false
6
+ export let weight = null
7
+ export let textAlign = null
8
+ </script>
9
+
10
+ <p
11
+ style={`
12
+ ${weight ? `font-weight:${weight};` : ""}
13
+ ${textAlign ? `text-align:${textAlign};` : ""}
14
+ `}
15
+ class="spectrum-Body spectrum-Body--size{size}"
16
+ class:spectrum-Body--serif={serif}
17
+ >
18
+ <slot />
19
+ </p>
@@ -0,0 +1,10 @@
1
+ <script>
2
+ import "@spectrum-css/typography/dist/index-vars.css"
3
+
4
+ // Sizes
5
+ export let size = "M"
6
+ </script>
7
+
8
+ <code class="spectrum-Code spectrum-Code--size{size}">
9
+ <slot />
10
+ </code>
@@ -0,0 +1,15 @@
1
+ <script>
2
+ import "@spectrum-css/typography/dist/index-vars.css"
3
+
4
+ // Sizes
5
+ export let size = "M"
6
+
7
+ export let serif = false
8
+ </script>
9
+
10
+ <p
11
+ class="spectrum-Detail spectrum-Detail--size{size}"
12
+ class:spectrum-Detail--serif={serif}
13
+ >
14
+ <slot />
15
+ </p>
@@ -0,0 +1,16 @@
1
+ <script>
2
+ import "@spectrum-css/typography/dist/index-vars.css"
3
+
4
+ // Sizes
5
+ export let size = "M"
6
+ export let textAlign
7
+ export let noPadding = false
8
+ </script>
9
+
10
+ <h1
11
+ style={textAlign ? `text-align:${textAlign}` : ``}
12
+ class:noPadding
13
+ class="spectrum-Heading spectrum-Heading--size{size}"
14
+ >
15
+ <slot />
16
+ </h1>
package/src/bbui.css ADDED
@@ -0,0 +1,96 @@
1
+ :root {
2
+ --background: #ffffff;
3
+ --ink: #000000;
4
+
5
+ --grey-1: #fafafa;
6
+ --grey-2: #f5f5f5;
7
+ --grey-3: #eeeeee;
8
+ --grey-4: #e0e0e0;
9
+ --grey-5: #bdbdbd;
10
+ --grey-6: #9e9e9e;
11
+ --grey-7: #757575;
12
+ --grey-8: #616161;
13
+ --grey-9: #424242;
14
+
15
+ --blue-light: #f1f4fc;
16
+ --blue: #4285f4;
17
+ --blue-dark: #2f4c9b;
18
+
19
+ --red-light: #ffe6e6;
20
+ --red: #e26d69;
21
+ --red-dark: #800400;
22
+
23
+ --yellow-light: #fff7e6;
24
+ --yellow: #ffd26a;
25
+ --yellow-dark: #805900;
26
+
27
+ --orange-light: #fff0e6;
28
+ --orange: #f0955a;
29
+ --orange-dark: #803300;
30
+
31
+ --green-light: #e6ffeb;
32
+ --green: #84c991;
33
+ --green-dark: #008017;
34
+
35
+ --purple-light: #e9e6ff;
36
+ --purple: #806fde;
37
+ --purple-dark: #130080;
38
+
39
+ --rounded-small: 4px;
40
+ --rounded-medium: 8px;
41
+ --rounded-large: 16px;
42
+
43
+ --font-sans: Source Sans Pro, -apple-system, BlinkMacSystemFont, Segoe UI, "Inter",
44
+ "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji",
45
+ "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
46
+ --font-serif: "Georgia", Cambria, Times New Roman, Times, serif;
47
+ --font-mono: Menlo, Monaco, Consolas, "Liberation Mono", "Courier New",
48
+ monospace;
49
+
50
+ font-size: 16px;
51
+ --font-size-xs: 0.75rem;
52
+ --font-size-s: 0.875rem;
53
+ --font-size-m: 1rem;
54
+ --font-size-l: 1.15rem;
55
+ --font-size-xl: 1.3rem;
56
+
57
+ --heading-font-size-xs: 0.875rem;
58
+ --heading-font-size-s: 1.12rem;
59
+ --heading-font-size-m: 1.5rem;
60
+ --heading-font-size-l: 2.6rem;
61
+ --heading-font-size-xl: 3rem;
62
+
63
+ --font-render: optimizeLegibility;
64
+ --font-smooth: antialiased;
65
+
66
+ --spacing-xs: 0.25rem;
67
+ --spacing-s: 0.5rem;
68
+ --spacing-m: 0.75rem;
69
+ --spacing-l: 1rem;
70
+ --spacing-xl: 1.25rem;
71
+
72
+ --layout-xs: 1.25rem;
73
+ --layout-s: 1.5rem;
74
+ --layout-m: 2rem;
75
+ --layout-l: 3rem;
76
+ --layout-xl: 4rem;
77
+
78
+ --border-radius-xs: 0.125rem;
79
+ --border-radius-s: 0.35rem;
80
+ --border-radius-m: 0.5rem;
81
+ --border-radius-l: 1rem;
82
+ --border-radius-xl: 100rem;
83
+
84
+ --border-black: 2px var(--ink) solid;
85
+ --border-dark: 2px var(--grey-7) solid;
86
+ --border-grey: 1px var(--grey-4) solid;
87
+ --border-grey-2: 2px var(--grey-4) solid;
88
+ --border-light: 1px var(--grey-3) solid;
89
+ --border-light-2: 2px var(--grey-3) solid;
90
+ --border-blue: 2px var(--blue) solid;
91
+ --border-transparent: 2px transparent solid;
92
+ }
93
+
94
+ a {
95
+ text-decoration: none;
96
+ }
package/src/context.js ADDED
@@ -0,0 +1,3 @@
1
+ export default {
2
+ Modal: "bbui-modal",
3
+ }
package/src/index.js CHANGED
@@ -1,13 +1,78 @@
1
- // Single default export
1
+ import "./bbui.css"
2
2
 
3
- // export { default as default } from './Component.svelte';
3
+ // Spectrum icons
4
+ import "@spectrum-css/icon/dist/index-vars.css"
4
5
 
5
- // OR multiple named exports
6
- //
7
- // import { Foo, Bar } from 'my-lib'
8
- //
6
+ // Components
7
+ export { default as Input } from "./Form/Input.svelte"
8
+ export { default as Stepper } from "./Form/Stepper.svelte"
9
+ export { default as TextArea } from "./Form/TextArea.svelte"
10
+ export { default as Select } from "./Form/Select.svelte"
11
+ export { default as Combobox } from "./Form/Combobox.svelte"
12
+ export { default as Dropzone } from "./Form/Dropzone.svelte"
13
+ export { default as Drawer } from "./Drawer/Drawer.svelte"
14
+ export { default as DrawerContent } from "./Drawer/DrawerContent.svelte"
15
+ export { default as Avatar } from "./Avatar/Avatar.svelte"
16
+ export { default as ActionButton } from "./ActionButton/ActionButton.svelte"
17
+ export { default as ActionGroup } from "./ActionGroup/ActionGroup.svelte"
18
+ export { default as ActionMenu } from "./ActionMenu/ActionMenu.svelte"
19
+ export { default as Button } from "./Button/Button.svelte"
20
+ export { default as ButtonGroup } from "./ButtonGroup/ButtonGroup.svelte"
21
+ export { default as ClearButton } from "./ClearButton/ClearButton.svelte"
22
+ export { default as Icon, directions } from "./Icon/Icon.svelte"
23
+ export { default as Toggle } from "./Form/Toggle.svelte"
24
+ export { default as RadioGroup } from "./Form/RadioGroup.svelte"
25
+ export { default as Checkbox } from "./Form/Checkbox.svelte"
26
+ export { default as DetailSummary } from "./DetailSummary/DetailSummary.svelte"
27
+ export { default as Popover } from "./Popover/Popover.svelte"
28
+ export { default as ProgressBar } from "./ProgressBar/ProgressBar.svelte"
29
+ export { default as ProgressCircle } from "./ProgressCircle/ProgressCircle.svelte"
30
+ export { default as Label } from "./Label/Label.svelte"
31
+ export { default as Layout } from "./Layout/Layout.svelte"
32
+ export { default as Page } from "./Layout/Page.svelte"
33
+ export { default as Link } from "./Link/Link.svelte"
34
+ export { default as Tooltip } from "./Tooltip/Tooltip.svelte"
35
+ export { default as Menu } from "./Menu/Menu.svelte"
36
+ export { default as MenuSection } from "./Menu/Section.svelte"
37
+ export { default as MenuSeparator } from "./Menu/Separator.svelte"
38
+ export { default as MenuItem } from "./Menu/Item.svelte"
39
+ export { default as Modal } from "./Modal/Modal.svelte"
40
+ export { default as ModalContent } from "./Modal/ModalContent.svelte"
41
+ export { default as NotificationDisplay } from "./Notification/NotificationDisplay.svelte"
42
+ export { default as Notification } from "./Notification/Notification.svelte"
43
+ export { default as SideNavigation } from "./SideNavigation/Navigation.svelte"
44
+ export { default as SideNavigationItem } from "./SideNavigation/Item.svelte"
45
+ export { default as DatePicker } from "./Form/DatePicker.svelte"
46
+ export { default as Multiselect } from "./Form/Multiselect.svelte"
47
+ export { default as Context } from "./context"
48
+ export { default as Table } from "./Table/Table.svelte"
49
+ export { default as Tabs } from "./Tabs/Tabs.svelte"
50
+ export { default as Tab } from "./Tabs/Tab.svelte"
51
+ export { default as Tags } from "./Tags/Tags.svelte"
52
+ export { default as Tag } from "./Tags/Tag.svelte"
53
+ export { default as TreeView } from "./TreeView/Tree.svelte"
54
+ export { default as TreeItem } from "./TreeView/Item.svelte"
55
+ export { default as Divider } from "./Divider/Divider.svelte"
56
+ export { default as Search } from "./Form/Search.svelte"
57
+ export { default as Pagination } from "./Pagination/Pagination.svelte"
58
+ export { default as Badge } from "./Badge/Badge.svelte"
59
+ export { default as StatusLight } from "./StatusLight/StatusLight.svelte"
60
+ export { default as ColorPicker } from "./ColorPicker/ColorPicker.svelte"
61
+ export { default as InlineAlert } from "./InlineAlert/InlineAlert.svelte"
9
62
 
10
- export { default as Input } from './Form/Input.svelte';
11
- export { default as TextArea } from './Form/TextArea.svelte';
12
- export { default as Button } from './Form/Button.svelte';
13
- export { default as Home } from './Links/Home.svelte';
63
+ // Typography
64
+ export { default as Body } from "./Typography/Body.svelte"
65
+ export { default as Heading } from "./Typography/Heading.svelte"
66
+ export { default as Detail } from "./Typography/Detail.svelte"
67
+ export { default as Code } from "./Typography/Code.svelte"
68
+
69
+ // Core form components to be used elsewhere (standard components)
70
+ export * from "./Form/Core"
71
+
72
+ // Actions
73
+ export { default as autoResizeTextArea } from "./Actions/autoresize_textarea"
74
+ export { default as positionDropdown } from "./Actions/position_dropdown"
75
+ export { default as clickOutside } from "./Actions/click_outside"
76
+
77
+ // Stores
78
+ export { notifications, createNotificationStore } from "./Stores/notifications"
@@ -0,0 +1,31 @@
1
+ import SpectrumUIIcons from "@spectrum-css/icon/dist/spectrum-css-icons.svg"
2
+ import SpectrumWorkflowIcons from "@adobe/spectrum-css-workflow-icons/dist/spectrum-icons.svg"
3
+
4
+ export default () => {
5
+ loadIconSet("Spectrum UI Icons", SpectrumUIIcons)
6
+ loadIconSet("Spectrum Workflow Icons", SpectrumWorkflowIcons)
7
+ }
8
+
9
+ const loadIconSet = (name, markup) => {
10
+ // Parse the SVG
11
+ const parser = new DOMParser()
12
+ try {
13
+ const doc = parser.parseFromString(markup, "image/svg+xml")
14
+ const svg = doc.firstChild
15
+
16
+ // Check a real SVG was parsed
17
+ if (svg && svg.tagName === "svg") {
18
+ // Hide the element
19
+ svg.style.display = "none"
20
+
21
+ // Insert it into the head
22
+ document.head.insertBefore(svg, null)
23
+ } else {
24
+ throw "Invalid tag type for SVG definition"
25
+ }
26
+ } catch (err) {
27
+ // Swallow error, but icons won't work
28
+ console.error(err)
29
+ console.error(`Failed to parse ${name}. Icons won't work.`)
30
+ }
31
+ }
@@ -0,0 +1,31 @@
1
+ import SpectrumUIIcons from "@spectrum-css/icon/dist/spectrum-css-icons.svg?raw"
2
+ import SpectrumWorkflowIcons from "@adobe/spectrum-css-workflow-icons/dist/spectrum-icons.svg?raw"
3
+
4
+ export default () => {
5
+ loadIconSet("Spectrum UI Icons", SpectrumUIIcons)
6
+ loadIconSet("Spectrum Workflow Icons", SpectrumWorkflowIcons)
7
+ }
8
+
9
+ const loadIconSet = (name, markup) => {
10
+ // Parse the SVG
11
+ const parser = new DOMParser()
12
+ try {
13
+ const doc = parser.parseFromString(markup, "image/svg+xml")
14
+ const svg = doc.firstChild
15
+
16
+ // Check a real SVG was parsed
17
+ if (svg && svg.tagName === "svg") {
18
+ // Hide the element
19
+ svg.style.display = "none"
20
+
21
+ // Insert it into the head
22
+ document.head.insertBefore(svg, null)
23
+ } else {
24
+ throw "Invalid tag type for SVG definition"
25
+ }
26
+ } catch (err) {
27
+ // Swallow error, but icons won't work
28
+ console.error(err)
29
+ console.error(`Failed to parse ${name}. Icons won't work.`)
30
+ }
31
+ }
@@ -0,0 +1,8 @@
1
+ export const generateID = () => {
2
+ const rand = Math.random().toString(32).substring(2)
3
+
4
+ // Starts with a letter so that its a valid DOM ID
5
+ return `A${rand}`
6
+ }
7
+
8
+ export const capitalise = s => s.substring(0, 1).toUpperCase() + s.substring(1)
package/dist/bundle.css DELETED
@@ -1,6 +0,0 @@
1
- button.svelte-1sayyj3{cursor:pointer;font-weight:bold;font-size:18px;border-radius:3px;padding:20px 30px;color:white}button.svelte-1sayyj3:hover:not([disabled]){filter:brightness(85%)}.primary.svelte-1sayyj3{border:solid 0 var(--primary100);background-color:var(--primary100)}.outline.svelte-1sayyj3{border:solid 1px var(--grey-medium);background-color:white;color:var(--font)}.error.svelte-1sayyj3{border:solid 0 var(--error100);background-color:var(--error100)}.thin.svelte-1sayyj3{padding:12px 16px}button.svelte-1sayyj3:disabled{background-color:#adaec4;cursor:not-allowed}
2
- .container.svelte-1u9cox8{display:flex;flex-direction:column;font-size:18px;font-weight:500;line-height:1.17}label.svelte-1u9cox8{color:var(--font);margin-bottom:12px}input.svelte-1u9cox8{box-sizing:border-box;color:var(--font);font-size:18px;border-radius:3px;border:solid 1px var(--grey-medium);padding:20px;margin:0;background-color:white}input.svelte-1u9cox8::placeholder{color:var(--grey-medium)}input.svelte-1u9cox8:focus{box-shadow:0 4px 16px 0 rgba(57, 60, 68, 0.08)}input.svelte-1u9cox8:disabled{background:var(--grey-medium)}
3
- .container.svelte-b7rdfu{display:flex;flex-direction:column;font-size:18px;font-weight:500;line-height:1.17}label.svelte-b7rdfu{color:var(--font);margin-bottom:12px}textarea.svelte-b7rdfu{color:var(--font);font-size:18px;border-radius:3px;border:solid 1px var(--grey-medium);padding:20px;margin:0}textarea.svelte-b7rdfu::placeholder{color:var(--grey-dark)}textarea.svelte-b7rdfu:focus{box-shadow:0 4px 16px 0 rgba(57, 60, 68, 0.08)}textarea.svelte-b7rdfu:disabled{background:var(--grey-medium)}
4
- .nav-item.svelte-dsza1v{cursor:pointer;padding:12px;height:40px;display:flex;flex-direction:row;align-items:center;box-sizing:border-box;border-radius:3px}.nav-item.svelte-dsza1v:hover{background-color:var(--grey-light)}.nav-item-title.svelte-dsza1v{font-size:14px;color:var(--ink);font-weight:400;margin-left:12px}.nav-item-icon.svelte-dsza1v{color:var(--ink-light)}.active.svelte-dsza1v{background-color:var(--blue-light)}
5
-
6
- /*# sourceMappingURL=bundle.css.map */
@@ -1,18 +0,0 @@
1
- {
2
- "version": 3,
3
- "file": "bundle.css",
4
- "sources": [
5
- "../Button.svelte",
6
- "../Input.svelte",
7
- "../TextArea.svelte",
8
- "../Home.svelte"
9
- ],
10
- "sourcesContent": [
11
- "<script>\n export let primary = false,\n outline = false,\n disabled = false,\n error = false,\n thin = false;\n</script>\n\n<style>\n button {\n cursor: pointer;\n font-weight: bold;\n font-size: 18px;\n border-radius: 3px;\n padding: 20px 30px;\n color: white;\n }\n button:hover:not([disabled]) {\n filter: brightness(85%);\n }\n\n .primary {\n border: solid 0 var(--primary100);\n background-color: var(--primary100);\n }\n .outline {\n border: solid 1px var(--grey-medium);\n background-color: white;\n color: var(--font);\n }\n .error {\n border: solid 0 var(--error100);\n background-color: var(--error100);\n }\n .thin {\n padding: 12px 16px;\n }\n button:disabled {\n background-color: #adaec4;\n cursor: not-allowed;\n }\n</style>\n\n<button\n class:primary\n class:outline\n class:error\n class:thin\n {disabled}\n on:click|preventDefault>\n <slot />\n</button>\n",
12
- "<script>\n export let name,\n label,\n type,\n placeholder,\n validator = () => {};\n</script>\n\n<style>\n .container {\n display: flex;\n flex-direction: column;\n font-size: 18px;\n font-weight: 500;\n line-height: 1.17;\n }\n\n label {\n color: var(--font);\n margin-bottom: 12px;\n }\n\n input {\n box-sizing: border-box;\n color: var(--font);\n font-size: 18px;\n border-radius: 3px;\n border: solid 1px var(--grey-medium);\n padding: 20px;\n margin: 0;\n background-color: white;\n }\n\n input::placeholder {\n color: var(--grey-medium);\n }\n\n input:focus {\n box-shadow: 0 4px 16px 0 rgba(57, 60, 68, 0.08);\n }\n\n input:disabled {\n background: var(--grey-medium);\n }\n</style>\n\n<div class=\"container\">\n <label for={name}>{label}</label>\n <input on:change on:input use:validator {type} {name} {placeholder} />\n</div>\n",
13
- "<script>\n import { text_area_resize } from \"../actions/autoresize_textarea.js\";\n export let name,\n label,\n value,\n placeholder,\n validator = () => {};\n</script>\n\n<style>\n .container {\n display: flex;\n flex-direction: column;\n font-size: 18px;\n font-weight: 500;\n line-height: 1.17;\n }\n\n label {\n color: var(--font);\n margin-bottom: 12px;\n }\n\n textarea {\n color: var(--font);\n font-size: 18px;\n border-radius: 3px;\n border: solid 1px var(--grey-medium);\n padding: 20px;\n margin: 0;\n }\n\n textarea::placeholder {\n color: var(--grey-dark);\n }\n\n textarea:focus {\n box-shadow: 0 4px 16px 0 rgba(57, 60, 68, 0.08);\n }\n\n textarea:disabled {\n background: var(--grey-medium);\n }\n</style>\n\n<div class=\"container\">\n <label for={name}>{label}</label>\n <textarea bind:value {placeholder} {name} use:text_area_resize />\n</div>\n",
14
- "<script>\n export let href,\n icon,\n title,\n active = false;\n</script>\n\n<style>\n .nav-item {\n cursor: pointer;\n padding: 12px;\n height: 40px;\n display: flex;\n flex-direction: row;\n align-items: center;\n box-sizing: border-box;\n border-radius: 3px;\n }\n\n .nav-item:hover {\n background-color: var(--grey-light);\n }\n\n .nav-item-title {\n font-size: 14px;\n color: var(--ink);\n font-weight: 400;\n margin-left: 12px;\n }\n\n .nav-item-icon {\n color: var(--ink-light);\n }\n\n .active {\n background-color: var(--blue-light);\n }\n</style>\n\n<a {href} target=\"_blank\" class=\"nav-item\" class:active>\n {#if icon}\n <span class=\"nav-item-icon\">\n <svelte:component this={icon} />\n </span>\n {/if}\n {#if title}\n <div class=\"nav-item-title\">{title}</div>\n {/if}\n</a>\n"
15
- ],
16
- "names": [],
17
- "mappings": "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"
18
- }