@functionalcms/svelte-components 3.0.5 → 3.0.7

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 (55) hide show
  1. package/dist/components/Banner.svelte +5 -3
  2. package/dist/components/Link.svelte +54 -44
  3. package/dist/components/Logo.svelte +15 -3
  4. package/dist/components/Spacer.svelte +10 -7
  5. package/dist/components/Well.svelte +15 -12
  6. package/dist/components/agnostic/Alert/Alert.svelte +64 -57
  7. package/dist/components/agnostic/Avatar/Avatar.svelte +19 -15
  8. package/dist/components/agnostic/Breadcrumb/Breadcrumb.svelte +19 -10
  9. package/dist/components/agnostic/Button/Button.svelte +60 -35
  10. package/dist/components/agnostic/Button/ButtonGroup.svelte +4 -3
  11. package/dist/components/agnostic/Card/Card.svelte +22 -18
  12. package/dist/components/agnostic/ChoiceInput/ChoiceInput.svelte +87 -59
  13. package/dist/components/agnostic/Close/Close.svelte +11 -7
  14. package/dist/components/agnostic/Dialog/Dialog.svelte +64 -42
  15. package/dist/components/agnostic/Dialog/SvelteA11yDialog.svelte +76 -51
  16. package/dist/components/agnostic/Disclose/Disclose.svelte +15 -9
  17. package/dist/components/agnostic/Divider/Divider.svelte +137 -135
  18. package/dist/components/agnostic/Divider/Divider.svelte.d.ts +5 -8
  19. package/dist/components/agnostic/Drawer/Drawer.svelte +20 -16
  20. package/dist/components/agnostic/EmptyState/EmptyState.svelte +10 -7
  21. package/dist/components/agnostic/Header/Header.svelte +22 -15
  22. package/dist/components/agnostic/Header/HeaderNav.svelte +4 -3
  23. package/dist/components/agnostic/Header/HeaderNavItem.svelte +3 -2
  24. package/dist/components/agnostic/Icon/Icon.svelte +28 -20
  25. package/dist/components/agnostic/Loader/Loader.svelte +6 -3
  26. package/dist/components/agnostic/Progress/Progress.svelte +5 -4
  27. package/dist/components/agnostic/Spinner/Spinner.svelte +6 -3
  28. package/dist/components/agnostic/Table/Table.svelte +191 -134
  29. package/dist/components/agnostic/Tabs/TabButtonCustom.svelte +24 -12
  30. package/dist/components/agnostic/Tabs/Tabs.svelte +173 -104
  31. package/dist/components/agnostic/Tag/Tag.svelte +14 -10
  32. package/dist/components/agnostic/Tag/TagSlots.svelte +2 -1
  33. package/dist/components/agnostic/Toasts/Toasts.svelte +29 -19
  34. package/dist/components/agnostic/Tooltip/Tooltip.svelte +85 -68
  35. package/dist/components/agnostic/Tooltip/TooltipSlots.svelte +2 -1
  36. package/dist/components/blog/BlogDescription.svelte +6 -4
  37. package/dist/components/blog/BlogTitle.svelte +8 -6
  38. package/dist/components/form/Input.svelte +81 -52
  39. package/dist/components/form/Input.svelte.d.ts +2 -2
  40. package/dist/components/form/Select.svelte +40 -24
  41. package/dist/components/layouts/DefaultLayout.svelte +8 -5
  42. package/dist/components/layouts/Meta.svelte +7 -6
  43. package/dist/components/layouts/SimpleFooter.svelte +13 -3
  44. package/dist/components/layouts/Tracker.svelte +2 -1
  45. package/dist/components/layouts/TwoColumnsLayout.svelte +3 -2
  46. package/dist/components/menu/CollapsibleMenu.svelte +18 -13
  47. package/dist/components/menu/DynamicMenu.svelte +16 -10
  48. package/dist/components/menu/DynamicMenu.svelte.d.ts +1 -1
  49. package/dist/components/menu/HamburgerMenu.svelte +24 -18
  50. package/dist/components/menu/Menu.svelte +279 -219
  51. package/dist/components/menu/MenuItem.svelte +14 -10
  52. package/dist/components/menu/NavigationItems.svelte +18 -12
  53. package/dist/components/presentation/Carusel.svelte +77 -72
  54. package/dist/components/presentation/Gallery.svelte +14 -8
  55. package/package.json +9 -10
@@ -1,139 +1,141 @@
1
- <script>export let isVertical = false;
2
- export let justify = "";
3
- export let type = "";
4
- export let size = "";
5
- let slots = $$props.$$slots;
6
- const dividerClasses = [
7
- "divider",
8
- isVertical ? "divider-vertical" : "",
9
- justify ? `divider-justify-${justify}` : "",
10
- size ? `divider-${size}` : "",
11
- type ? `divider-${type}` : ""
12
- ].filter((cl) => cl.length).join(" ");
1
+ <script lang="ts">
2
+ import type { DividerJustify, DividerTypes, DividerSizes } from './api';
3
+
4
+ export let isVertical = false;
5
+
6
+ // start, end (centered by default)
7
+ export let justify: DividerJustify = '';
8
+ // info, success, error, warning
9
+ export let type: DividerTypes = '';
10
+ // small (default is medium) large xlarge
11
+ export let size: DividerSizes = '';
12
+
13
+ const dividerClasses: string = [
14
+ 'divider',
15
+ isVertical ? 'divider-vertical' : '',
16
+ justify ? `divider-justify-${justify}` : '',
17
+ size ? `divider-${size}` : '',
18
+ type ? `divider-${type}` : ''
19
+ ]
20
+ .filter((cl) => cl.length)
21
+ .join(' ');
13
22
  </script>
14
23
 
15
- <div class={dividerClasses}>
16
- {#if slots && slots.dividerContent}
17
- <div class="divider-content">
18
- <slot name="dividerContent" />
19
- </div>
20
- {/if}
21
- </div>
22
- <style>
23
- .divider {
24
- display: flex;
25
- justify-content: center;
26
- align-items: center;
27
- white-space: nowrap;
28
- width: 100%;
29
- }
30
-
31
- .divider::before,
32
- .divider::after {
33
- content: "";
34
- background-color: var(--functional-gray-mid);
35
- height: var(--fluid-2);
36
- flex-grow: 1;
37
- }
38
-
39
- .divider-small::before,
40
- .divider-small::after {
41
- height: 1px;
42
- }
43
-
44
- .divider-large::before,
45
- .divider-large::after {
46
- height: var(--fluid-4);
47
- }
48
-
49
- .divider-xlarge::before,
50
- .divider-xlarge::after {
51
- height: var(--fluid-6);
52
- }
53
-
54
- .divider-justify-end::after,
55
- .divider-justify-start::before {
56
- flex-grow: 0;
57
- flex-basis: 3%;
58
- }
59
-
60
- .divider-content {
61
- padding-inline-start: var(--fluid-16);
62
- padding-inline-end: var(--fluid-16);
63
- }
64
-
65
- .divider-vertical {
66
- height: auto;
67
- margin: 0 var(--fluid-16);
68
- width: var(--fluid-16);
69
- flex-direction: column;
70
- align-self: stretch;
71
- }
72
-
73
- .divider-vertical::before,
74
- .divider-vertical::after {
75
- width: var(--fluid-2);
76
- }
77
-
78
- .divider-vertical.divider-small::before,
79
- .divider-vertical.divider-small::after {
80
- width: 1px;
81
- }
82
-
83
- .divider-vertical.divider-large::before,
84
- .divider-vertical.divider-large::after {
85
- width: var(--fluid-4);
86
- }
87
-
88
- .divider-vertical.divider-xlarge::before,
89
- .divider-vertical.divider-xlarge::after {
90
- width: var(--fluid-6);
91
- }
92
-
93
- .divider-vertical .divider-content {
94
- padding-inline-start: var(--fluid-24);
95
- padding-inline-end: var(--fluid-24);
96
-
97
- /* Since we're vertical we need space from line above/below */
98
- padding-block-start: var(--fluid-6);
99
- padding-block-end: var(--fluid-6);
100
- }
101
-
102
- .divider-warning::before,
103
- .divider-warning::after {
104
- background-color: var(--functional-warning-border);
105
- }
106
-
107
- .divider-warning .divider-content {
108
- color: var(--functional-warning-border);
109
- }
110
-
111
- .divider-error::before,
112
- .divider-error::after {
113
- background-color: var(--functional-error);
114
- }
115
-
116
- .divider-error .divider-content {
117
- color: var(--functional-error);
118
- }
119
-
120
- .divider-success::before,
121
- .divider-success::after {
122
- background-color: var(--functional-action);
123
- }
124
-
125
- .divider-success .divider-content {
126
- color: var(--functional-action);
127
- }
128
-
129
- .divider-info::before,
130
- .divider-info::after {
131
- background-color: var(--functional-primary);
132
- }
133
-
134
- .divider-info .divider-content {
135
- color: var(--functional-primary);
136
- }
24
+ <div class={dividerClasses}></div>
137
25
 
26
+ <style>
27
+ .divider {
28
+ display: flex;
29
+ justify-content: center;
30
+ align-items: center;
31
+ white-space: nowrap;
32
+ width: 100%;
33
+ }
34
+
35
+ .divider::before,
36
+ .divider::after {
37
+ content: '';
38
+ background-color: var(--functional-gray-mid);
39
+ height: var(--fluid-2);
40
+ flex-grow: 1;
41
+ }
42
+
43
+ .divider-small::before,
44
+ .divider-small::after {
45
+ height: 1px;
46
+ }
47
+
48
+ .divider-large::before,
49
+ .divider-large::after {
50
+ height: var(--fluid-4);
51
+ }
52
+
53
+ .divider-xlarge::before,
54
+ .divider-xlarge::after {
55
+ height: var(--fluid-6);
56
+ }
57
+
58
+ .divider-justify-end::after,
59
+ .divider-justify-start::before {
60
+ flex-grow: 0;
61
+ flex-basis: 3%;
62
+ }
63
+
64
+ .divider-content {
65
+ padding-inline-start: var(--fluid-16);
66
+ padding-inline-end: var(--fluid-16);
67
+ }
68
+
69
+ .divider-vertical {
70
+ height: auto;
71
+ margin: 0 var(--fluid-16);
72
+ width: var(--fluid-16);
73
+ flex-direction: column;
74
+ align-self: stretch;
75
+ }
76
+
77
+ .divider-vertical::before,
78
+ .divider-vertical::after {
79
+ width: var(--fluid-2);
80
+ }
81
+
82
+ .divider-vertical.divider-small::before,
83
+ .divider-vertical.divider-small::after {
84
+ width: 1px;
85
+ }
86
+
87
+ .divider-vertical.divider-large::before,
88
+ .divider-vertical.divider-large::after {
89
+ width: var(--fluid-4);
90
+ }
91
+
92
+ .divider-vertical.divider-xlarge::before,
93
+ .divider-vertical.divider-xlarge::after {
94
+ width: var(--fluid-6);
95
+ }
96
+
97
+ .divider-vertical .divider-content {
98
+ padding-inline-start: var(--fluid-24);
99
+ padding-inline-end: var(--fluid-24);
100
+
101
+ /* Since we're vertical we need space from line above/below */
102
+ padding-block-start: var(--fluid-6);
103
+ padding-block-end: var(--fluid-6);
104
+ }
105
+
106
+ .divider-warning::before,
107
+ .divider-warning::after {
108
+ background-color: var(--functional-warning-border);
109
+ }
110
+
111
+ .divider-warning .divider-content {
112
+ color: var(--functional-warning-border);
113
+ }
114
+
115
+ .divider-error::before,
116
+ .divider-error::after {
117
+ background-color: var(--functional-error);
118
+ }
119
+
120
+ .divider-error .divider-content {
121
+ color: var(--functional-error);
122
+ }
123
+
124
+ .divider-success::before,
125
+ .divider-success::after {
126
+ background-color: var(--functional-action);
127
+ }
128
+
129
+ .divider-success .divider-content {
130
+ color: var(--functional-action);
131
+ }
132
+
133
+ .divider-info::before,
134
+ .divider-info::after {
135
+ background-color: var(--functional-primary);
136
+ }
137
+
138
+ .divider-info .divider-content {
139
+ color: var(--functional-primary);
140
+ }
138
141
  </style>
139
-
@@ -2,18 +2,15 @@ import { SvelteComponentTyped } from "svelte";
2
2
  import type { DividerJustify, DividerTypes, DividerSizes } from './api';
3
3
  declare const __propDef: {
4
4
  props: {
5
- [x: string]: any;
6
- isVertical?: boolean | undefined;
7
- justify?: DividerJustify | undefined;
8
- type?: DividerTypes | undefined;
9
- size?: DividerSizes | undefined;
5
+ isVertical?: boolean;
6
+ justify?: DividerJustify;
7
+ type?: DividerTypes;
8
+ size?: DividerSizes;
10
9
  };
11
10
  events: {
12
11
  [evt: string]: CustomEvent<any>;
13
12
  };
14
- slots: {
15
- dividerContent: {};
16
- };
13
+ slots: {};
17
14
  };
18
15
  export type DividerProps = typeof __propDef.props;
19
16
  export type DividerEvents = typeof __propDef.events;
@@ -1,19 +1,23 @@
1
- <script>import Dialog from "../Dialog/Dialog.svelte";
2
- import { createEventDispatcher } from "svelte";
3
- const dispatch = createEventDispatcher();
4
- let drawerInstance;
5
- const assignDrawerRef = (ev) => {
6
- drawerInstance = ev.detail.instance;
7
- dispatch("instance", {
8
- instance: drawerInstance
9
- });
10
- };
11
- export let id;
12
- export let drawerRoot;
13
- export let placement;
14
- export let title;
15
- export let role = "dialog";
16
- export let isAnimationFadeIn = true;
1
+ <script lang="ts">
2
+ import type { DrawerRoles } from './api';
3
+ import Dialog from "../Dialog/Dialog.svelte";
4
+ import { createEventDispatcher } from "svelte";
5
+ const dispatch = createEventDispatcher();
6
+
7
+ let drawerInstance;
8
+ const assignDrawerRef = (ev) => {
9
+ drawerInstance = ev.detail.instance;
10
+ dispatch("instance", {
11
+ instance: drawerInstance,
12
+ });
13
+ };
14
+
15
+ export let id;
16
+ export let drawerRoot;
17
+ export let placement;
18
+ export let title;
19
+ export let role: DrawerRoles = "dialog";
20
+ export let isAnimationFadeIn = true;
17
21
  </script>
18
22
  <Dialog
19
23
  id={id}
@@ -28,13 +28,16 @@
28
28
 
29
29
  </style>
30
30
 
31
- <script>export let isRounded = false;
32
- export let isBordered = false;
33
- const emptyClasses = [
34
- "empty",
35
- isRounded ? "empty-rounded" : "",
36
- isBordered ? "empty-bordered" : ""
37
- ].filter((cl) => cl.length).join(" ");
31
+ <script lang="ts">
32
+ export let isRounded = false;
33
+ export let isBordered = false;
34
+ const emptyClasses: string = [
35
+ "empty",
36
+ isRounded ? "empty-rounded" : "",
37
+ isBordered ? "empty-bordered" : "",
38
+ ]
39
+ .filter((cl) => cl.length)
40
+ .join(" ");
38
41
  </script>
39
42
 
40
43
  <div class={emptyClasses}>
@@ -78,21 +78,28 @@
78
78
 
79
79
  </style>
80
80
 
81
- <script>export let isSticky = false;
82
- export let isSkinned = true;
83
- export let isHeaderContentStart = false;
84
- export let isHeaderContentEnd = false;
85
- export let css = "";
86
- const klasses = [
87
- isSkinned ? "header" : "header-base",
88
- isSticky ? "header-sticky" : "",
89
- css ? `${css}` : ""
90
- ].filter((cl) => cl.length).join(" ");
91
- const headerContentClasses = [
92
- "header-content",
93
- isHeaderContentStart ? "header-content-start" : "",
94
- isHeaderContentEnd ? "header-content-end" : ""
95
- ].filter((cl) => cl.length).join(" ");
81
+ <script lang="ts">
82
+ export let isSticky = false;
83
+ export let isSkinned = true;
84
+ export let isHeaderContentStart = false;
85
+ export let isHeaderContentEnd = false;
86
+ export let css = "";
87
+
88
+ const klasses: string = [
89
+ isSkinned ? "header" : "header-base",
90
+ isSticky ? "header-sticky" : "",
91
+ css ? `${css}` : "",
92
+ ]
93
+ .filter((cl) => cl.length)
94
+ .join(" ");
95
+
96
+ const headerContentClasses: string = [
97
+ "header-content",
98
+ isHeaderContentStart ? "header-content-start" : "",
99
+ isHeaderContentEnd ? "header-content-end" : "",
100
+ ]
101
+ .filter((cl) => cl.length)
102
+ .join(" ");
96
103
  </script>
97
104
 
98
105
  <nav class={klasses}>
@@ -16,9 +16,10 @@
16
16
 
17
17
  </style>
18
18
 
19
- <script>export let css = "";
20
- const containerClasses = [css ? `${css}` : ""].filter((c) => c.length);
21
- </script>
19
+ <script lang="ts">
20
+ export let css = "";
21
+ const containerClasses = [css ? `${css}` : ""].filter((c) => c.length);
22
+ </script>
22
23
 
23
24
  <nav class={containerClasses}>
24
25
  <ul class="header-nav">
@@ -21,8 +21,9 @@
21
21
 
22
22
  </style>
23
23
 
24
- <script>export let css = "";
25
- let klasses = ["header-nav-item", css ? `${css}` : ""].filter((cl) => cl && cl.length).join(" ");
24
+ <script lang="ts">
25
+ export let css = "";
26
+ let klasses: string = ["header-nav-item", css ? `${css}` : ""].filter(cl => cl && cl.length).join(' ');
26
27
  </script>
27
28
 
28
29
  <li class={klasses}>
@@ -153,26 +153,34 @@
153
153
  }
154
154
  </style>
155
155
 
156
- <script>import { onMount } from "svelte";
157
- export let type = "";
158
- export let size = 14;
159
- export let isSkinned = true;
160
- let spanRef;
161
- const iconClasses = [
162
- "screenreader-only",
163
- isSkinned ? "icon" : "icon-base",
164
- type ? `icon-${type}` : "",
165
- size ? `icon-${size}` : ""
166
- ].filter((cls) => cls).join(" ");
167
- onMount(() => {
168
- const svg = spanRef.querySelector("svg");
169
- svg.classList.add("icon-svg");
170
- if (svg) {
171
- if (size) svg.classList.add(`icon-svg-${size}`);
172
- if (type) svg.classList.add(`icon-svg-${type}`);
173
- spanRef.classList.remove("screenreader-only");
174
- }
175
- });
156
+ <script lang="ts">
157
+ import { onMount } from 'svelte';
158
+ import type { IconSize, IconType } from './api';
159
+ export let type: IconType = '';
160
+ export let size: IconSize = 14;
161
+ export let isSkinned = true;
162
+ let spanRef;
163
+
164
+ const iconClasses = [
165
+ "screenreader-only",
166
+ isSkinned ? "icon" : "icon-base",
167
+ type ? `icon-${type}` : "",
168
+ size ? `icon-${size}` : "",
169
+ ]
170
+ .filter((cls) => cls)
171
+ .join(" ");
172
+
173
+ onMount(() => {
174
+ const svg = spanRef.querySelector("svg");
175
+ svg.classList.add("icon-svg");
176
+ if (svg) {
177
+ if (size) svg.classList.add(`icon-svg-${size}`);
178
+ if (type) svg.classList.add(`icon-svg-${type}`);
179
+
180
+ // Now that we've setup our SVG classes we can visually unhide the icon
181
+ spanRef.classList.remove("screenreader-only");
182
+ }
183
+ });
176
184
  </script>
177
185
 
178
186
  <span bind:this={spanRef} class={iconClasses}>
@@ -103,9 +103,12 @@
103
103
  }
104
104
 
105
105
  </style>
106
- <script>export let ariaLabel = "Loading\u2026";
107
- export let size = "";
108
- export let loaderClasses = ["loader", size ? `loader-${size}` : ""].filter((c) => c).join(" ");
106
+ <script lang="ts">
107
+ export let ariaLabel = "Loading…";
108
+ export let size: "small" | "large" | "" = "";
109
+ export let loaderClasses: string = ["loader", size ? `loader-${size}` : ""]
110
+ .filter((c) => c)
111
+ .join(" ");
109
112
  </script>
110
113
 
111
114
  <div class={loaderClasses} role="status" aria-live="polite" aria-busy="true">
@@ -41,10 +41,11 @@
41
41
 
42
42
  </style>
43
43
 
44
- <script>export let value = 0;
45
- export let max;
46
- export let css = "";
47
- let klasses = ["progress", css ? `${css}` : ""].filter((cl) => cl && cl.length).join(" ");
44
+ <script lang="ts">
45
+ export let value = 0;
46
+ export let max;
47
+ export let css = "";
48
+ let klasses: string = ["progress", css ? `${css}` : ""].filter(cl => cl && cl.length).join(' ');
48
49
  </script>
49
50
 
50
51
  <progress class={klasses} value={value} max={max}></progress>
@@ -95,9 +95,12 @@
95
95
 
96
96
  </style>
97
97
 
98
- <script>export let ariaLabel = "Loading\u2026";
99
- export let size = "";
100
- $: spinnerClasses = ["spinner", size ? `spinner-${size}` : ""].filter((c) => c).join(" ");
98
+ <script lang="ts">
99
+ export let ariaLabel = "Loading…";
100
+ export let size: "small" | "large" | "xlarge" | "" = "";
101
+ $: spinnerClasses = ["spinner", size ? `spinner-${size}` : ""]
102
+ .filter((c) => c)
103
+ .join(" ");
101
104
  </script>
102
105
 
103
106
  <div class={spinnerClasses} role="status" aria-live="polite" aria-busy="true">