@energie360/ui-library 0.1.0 → 0.1.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 (86) hide show
  1. package/base/abstracts/_mixins.scss +11 -5
  2. package/base/main-base.scss +1 -0
  3. package/components/icon-text-block/{icon-text-block.vue → u-icon-text-block.vue} +10 -6
  4. package/components/index.js +14 -0
  5. package/components/panel/panel.scss +70 -0
  6. package/components/panel/u-panel.vue +37 -0
  7. package/components/progress-bar/progress-bar.scss +37 -0
  8. package/components/progress-bar/u-progress-bar.vue +21 -0
  9. package/components/table/cell-ctas.scss +12 -0
  10. package/components/table/cell-icon-group.scss +12 -0
  11. package/components/table/cell-icon-text.scss +22 -0
  12. package/components/table/cell-progress-bar.scss +23 -0
  13. package/components/table/table-cell.mixins.scss +60 -0
  14. package/components/table/table-cell.scss +24 -0
  15. package/components/table/table-header.scss +5 -0
  16. package/components/table/table-heading.scss +8 -0
  17. package/components/table/table-row.scss +20 -0
  18. package/components/table/table.scss +12 -0
  19. package/components/table/table.type.ts +31 -0
  20. package/components/table/u-cell-ctas.vue +33 -0
  21. package/components/table/u-cell-icon-group.vue +31 -0
  22. package/components/table/u-cell-icon-text.vue +23 -0
  23. package/components/table/u-cell-progress-bar.vue +22 -0
  24. package/components/table/u-table-cell.vue +47 -0
  25. package/components/table/u-table-header.vue +9 -0
  26. package/components/table/u-table-heading.vue +24 -0
  27. package/components/table/u-table-row.vue +17 -0
  28. package/components/table/u-table.vue +11 -0
  29. package/components/tooltip/dom.js +167 -0
  30. package/components/tooltip/popover.js +200 -0
  31. package/components/tooltip/tooltip.scss +75 -0
  32. package/components/tooltip/u-tooltip.vue +92 -0
  33. package/components/tooltip/viewport.js +21 -0
  34. package/custom-elements.js +1 -0
  35. package/dist/base-style.css +1 -1
  36. package/dist/custom-elements.css +1 -0
  37. package/dist/{index.js → custom-elements.js} +1482 -1491
  38. package/dist/custom-elements.js.map +1 -0
  39. package/elements/button/_button-base.scss +1 -1
  40. package/elements/button/_button-filled-inverted.scss +3 -3
  41. package/elements/button/_button-filled.scss +3 -3
  42. package/elements/button/_button-outlined-inverted.scss +3 -3
  43. package/elements/button/_button-outlined.scss +3 -3
  44. package/elements/button/_button-plain.scss +3 -3
  45. package/elements/button/_button-secondary-outlined.scss +3 -3
  46. package/elements/button/button.js +2 -2
  47. package/elements/button/button.scss +1 -1
  48. package/elements/button/u-button.vue +44 -0
  49. package/elements/elements.js +35 -0
  50. package/elements/form-field/form-field-base.scss +142 -0
  51. package/elements/form-field/form-field-error.scss +20 -0
  52. package/elements/form-field/form-field-prefix-suffix.scss +80 -0
  53. package/elements/form-field/form-field-states.scss +59 -0
  54. package/elements/form-field/index.scss +4 -0
  55. package/elements/icon/icon.js +2 -2
  56. package/elements/icon/{icon.vue → u-icon.vue} +11 -15
  57. package/elements/icon-button/icon-button.js +2 -2
  58. package/elements/icon-button/{icon-button.vue → u-icon-button.vue} +14 -15
  59. package/elements/image/image.scss +3 -0
  60. package/elements/image/u-image.vue +17 -0
  61. package/elements/index.js +6 -31
  62. package/elements/loader/loader.js +2 -2
  63. package/elements/loader/{loader.vue → u-loader.vue} +6 -7
  64. package/elements/spectro/spectro.scss +13 -0
  65. package/elements/spectro/u-spectro.vue +11 -0
  66. package/elements/text-field/text-field.scss +30 -0
  67. package/elements/text-field/text-field.types.ts +6 -0
  68. package/elements/text-field/u-text-field.vue +164 -0
  69. package/elements/types.ts +12 -0
  70. package/env.d.ts +1 -0
  71. package/layout/grid/grid.scss +6 -7
  72. package/package.json +17 -7
  73. package/tsconfig.app.json +12 -0
  74. package/tsconfig.json +11 -0
  75. package/tsconfig.node.json +19 -0
  76. package/{vite.config.js → vite.config.ts} +1 -1
  77. package/wizard/index.js +4 -0
  78. package/wizard/wizard-intro/{wizard-intro.vue → u-wizard-intro.vue} +12 -9
  79. package/wizard/wizard-layout/{wizard-layout-block.vue → u-wizard-layout-block.vue} +6 -4
  80. package/dist/index.css +0 -1
  81. package/dist/index.js.map +0 -1
  82. package/elements/button/button.vue +0 -42
  83. package/index.js +0 -1
  84. /package/components/icon-text-block-group/{icon-text-block-group.vue → u-icon-text-block-group.vue} +0 -0
  85. /package/wizard/wizard-layout/{wizard-layout-element.vue → u-wizard-layout-element.vue} +0 -0
  86. /package/wizard/wizard-layout/{wizard-layout.vue → u-wizard-layout.vue} +0 -0
@@ -0,0 +1,17 @@
1
+ <script setup lang="ts">
2
+ interface Props {
3
+ highlight?: boolean
4
+ }
5
+
6
+ defineProps<Props>()
7
+ </script>
8
+
9
+ <template>
10
+ <div role="row" :class="['table-row', { highlight }]">
11
+ <slot></slot>
12
+ </div>
13
+ </template>
14
+
15
+ <style scoped lang="scss">
16
+ @use './table-row.scss';
17
+ </style>
@@ -0,0 +1,11 @@
1
+ <template>
2
+ <div class="table-scroll-wrapper">
3
+ <div role="table" class="table">
4
+ <slot></slot>
5
+ </div>
6
+ </div>
7
+ </template>
8
+
9
+ <style scoped lang="scss">
10
+ @use './table.scss';
11
+ </style>
@@ -0,0 +1,167 @@
1
+ /**
2
+ * Wrap an element with another element
3
+ *
4
+ * @param {Node} el
5
+ * @param {string} wrapper - Tag name of wrapper element. Can also have a classname (like emmet notation)
6
+ *
7
+ * @returns {Node}
8
+ */
9
+ export const wrap = (el, wrapper) => {
10
+ const parsedWrapper = wrapper.split('.')
11
+ const wrapperEl = document.createElement(parsedWrapper[0])
12
+
13
+ if (parsedWrapper.length > 1) {
14
+ wrapperEl.className = parsedWrapper.slice(1).join(' ')
15
+ }
16
+
17
+ el.parentNode.insertBefore(wrapperEl, el)
18
+ wrapperEl.appendChild(el)
19
+
20
+ return wrapperEl
21
+ }
22
+
23
+ /**
24
+ * Get element position relative to document.
25
+ *
26
+ * @param {Node} el
27
+ * @returns {{top: number, left: number, width: number, height: number}}
28
+ */
29
+ export const getElementPosition = (el) => {
30
+ const elRect = el.getBoundingClientRect()
31
+ const scrollTop = window.scrollY
32
+ const scrollLeft = window.scrollX
33
+
34
+ return {
35
+ top: elRect.top + scrollTop,
36
+ left: elRect.left + scrollLeft,
37
+ width: elRect.width,
38
+ height: elRect.height,
39
+ }
40
+ }
41
+
42
+ /**
43
+ * Decode HTML encoded string.
44
+ *
45
+ * @param {string} str
46
+ * @returns {string}
47
+ */
48
+ export const htmlDecode = (str) => {
49
+ const doc = new DOMParser().parseFromString(str, 'text/html')
50
+ return doc.documentElement.textContent
51
+ }
52
+
53
+ export const htmlToDocFragment = (str) => {
54
+ const tpl = document.createElement('template')
55
+ tpl.innerHTML = str
56
+ return tpl.content.cloneNode(true)
57
+ }
58
+
59
+ /**
60
+ * Reverse order of direct child nodes of given parent.
61
+ *
62
+ * @param {Node} parent
63
+ */
64
+ export const reverseChildren = (parent) => {
65
+ for (let i = 1; i < parent.childNodes.length; i++) {
66
+ parent.insertBefore(parent.childNodes[i], parent.firstChild)
67
+ }
68
+ }
69
+
70
+ /**
71
+ * Check if element is in a slotted element.
72
+ *
73
+ * @param {Element} el
74
+ * @returns {boolean}
75
+ */
76
+ const isInSlottedElement = (el) => {
77
+ const parentEl = el.parentElement
78
+
79
+ if (parentEl === document.body || !parentEl) {
80
+ return false
81
+ }
82
+
83
+ if (parentEl.assignedSlot) {
84
+ return true
85
+ } else {
86
+ return isInSlottedElement(parentEl)
87
+ }
88
+ }
89
+
90
+ /**
91
+ *
92
+ * @param {Element} el
93
+ * @returns {boolean}
94
+ */
95
+ const isOffsetParent = (el) => {
96
+ const style = getComputedStyle(el)
97
+ return style.position === 'relative' || style.position === 'absolute'
98
+ }
99
+
100
+ /**
101
+ * Get the expected offsetParent within nested shadow roots.
102
+ *
103
+ * Because elements are nested in web components or slotted in web components we can't get desired offsetParent.
104
+ *
105
+ * @param {Element} el
106
+ * @returns {Element}
107
+ */
108
+ export const getOffsetParent = (el) => {
109
+ if (el === document.body) {
110
+ // We arrived at the top.
111
+ // 'body' must be the offsetParent then.
112
+ return el
113
+ }
114
+
115
+ const offsetParent = el.offsetParent
116
+
117
+ if (offsetParent === document.body || offsetParent === null) {
118
+ // It's possible that we're a slotted element, in which case we'll always have the potentially 'wrong' offsetParent 'body'.
119
+ // Dig deeper...
120
+ if (el.assignedSlot) {
121
+ // A <slot> doesn't have an offsetParent. Let's use the parentNode.
122
+ const parentElement = el.assignedSlot.parentElement
123
+
124
+ // Handle case where the parent node actually is an offsetParent
125
+ if (isOffsetParent(parentElement)) {
126
+ return parentElement
127
+ }
128
+
129
+ return getOffsetParent(el.assignedSlot.parentElement)
130
+ }
131
+
132
+ if (isInSlottedElement(el)) {
133
+ return getOffsetParent(el.parentElement)
134
+ }
135
+
136
+ if (el.getRootNode() instanceof ShadowRoot) {
137
+ // If we're nested in another shadow root we'll also always get 'body' as offsetParent.
138
+ // Check the offsetParent of the current host element.
139
+ return getOffsetParent(el.getRootNode().host)
140
+ }
141
+ }
142
+
143
+ return offsetParent
144
+ }
145
+
146
+ /**
147
+ * Get offset positions of parent which is not 'static'.
148
+ *
149
+ * @param {Element} el
150
+ * @returns {Object}
151
+ */
152
+ export const getOffsetParentPosition = (el) => {
153
+ const offsetParent = getOffsetParent(el)
154
+ const elRect = el.getBoundingClientRect()
155
+ const offsetParentRect = offsetParent.getBoundingClientRect()
156
+
157
+ return {
158
+ top: elRect.top - offsetParentRect.top,
159
+ left: elRect.left - offsetParentRect.left,
160
+ }
161
+ }
162
+
163
+ export const moveChildren = (sourceParent, targetParent) => {
164
+ while (sourceParent.childNodes.length > 0) {
165
+ targetParent.appendChild(sourceParent.childNodes[0])
166
+ }
167
+ }
@@ -0,0 +1,200 @@
1
+ import { getViewportDimensions } from './viewport'
2
+ import { getOffsetParentPosition } from './dom'
3
+
4
+ const defaultOptions = {
5
+ offset: 0,
6
+ viewportPadding: 0,
7
+ placement: 'top-left',
8
+ }
9
+
10
+ /**
11
+ * This simply calculates the desired position of the popover and returns the coordinates.
12
+ * It won't change the DOM.
13
+ *
14
+ * @param {Element} refEl
15
+ * @param {Element} popoverEl
16
+ * @param {Object} options - Options object
17
+ * @param {number} options.offset - offset to refEl in px
18
+ * @param {number} options.viewportPadding - Padding to viewport in px
19
+ * @param {string} options.placement - One of the following keywords: top-right, top-left, top-center, bottom-right, bottom-left, bottom-center
20
+ */
21
+ export const getPopoverPosition = (refEl, popoverEl, options = {}) => {
22
+ options = Object.assign({}, defaultOptions, options)
23
+
24
+ const refRect = refEl.getBoundingClientRect()
25
+ let popoverRect = popoverEl.getBoundingClientRect()
26
+
27
+ const offsetParent = getOffsetParentPosition(refEl)
28
+
29
+ let top
30
+ let left
31
+ const offsetTop = offsetParent.top
32
+ const offsetLeft = offsetParent.left
33
+ const { vpWidth } = getViewportDimensions()
34
+ const docHeight = document.documentElement.scrollHeight
35
+ const scrollY = window.scrollY
36
+
37
+ if (popoverRect.width === 0 && popoverRect.height === 0) {
38
+ // Popover probably has display:none.
39
+ // Make it visible for a frame to get the correct dimensions.
40
+ popoverEl.style.display = 'block'
41
+ popoverRect = popoverEl.getBoundingClientRect()
42
+ popoverEl.style.display = ''
43
+ }
44
+
45
+ switch (options.placement) {
46
+ case 'top-right':
47
+ top = offsetTop - popoverRect.height - options.offset
48
+ left = offsetLeft + refRect.width - popoverRect.width
49
+ // console.log(left)
50
+ break
51
+
52
+ case 'top-left':
53
+ top = offsetTop - popoverRect.height - options.offset
54
+ left = offsetLeft
55
+ break
56
+
57
+ case 'bottom-right':
58
+ top = offsetTop + refRect.height + options.offset
59
+ left = offsetLeft + refRect.width - popoverRect.width
60
+ break
61
+
62
+ case 'bottom-left':
63
+ top = offsetTop + refRect.height + options.offset
64
+ left = offsetLeft
65
+ break
66
+
67
+ // TODO: add remaining placement options
68
+ case 'bottom-center':
69
+ break
70
+
71
+ case 'top-center':
72
+ }
73
+
74
+ // Add corrections to position if necessary
75
+
76
+ // Check left or right overflow
77
+ const leftDiff = refRect.left - offsetLeft
78
+ if (left + leftDiff < options.viewportPadding) {
79
+ left = 0 - leftDiff + options.viewportPadding
80
+ } else if (
81
+ left + leftDiff + popoverRect.width >
82
+ vpWidth - options.viewportPadding
83
+ ) {
84
+ left = vpWidth - leftDiff - popoverRect.width - options.viewportPadding
85
+ }
86
+
87
+ // Check top or bottom overflow
88
+ const topDiff = refRect.top - offsetTop
89
+ if (top + topDiff + scrollY < options.viewportPadding) {
90
+ // popover is too high.
91
+ // console.log('too high')
92
+ // Switch position to bottom
93
+ top = offsetTop + refRect.height + options.offset
94
+ } else if (
95
+ top + topDiff + scrollY + popoverRect.height >
96
+ docHeight - options.viewportPadding
97
+ ) {
98
+ // popover is too low.
99
+ // console.log('too low')
100
+ // Swith position to top.
101
+ top = offsetTop - popoverRect.height - options.offset
102
+ }
103
+
104
+ return {
105
+ top,
106
+ left,
107
+ }
108
+ }
109
+
110
+ /**
111
+ * Calculates the desired position of the popover relative to <body>.
112
+ *
113
+ * @param {Element} refEl
114
+ * @param {Element} popoverEl
115
+ * @param {Object} options - Options object
116
+ * @param {number} options.offset - offset to refEl in px
117
+ * @param {number} options.viewportPadding - Padding to viewport in px
118
+ * @param {string} options.placement - One of the following keywords: top-right, top-left, top-center, bottom-right, bottom-left, bottom-center
119
+ */
120
+ export const getPopoverPositionBody = (refEl, popoverEl, options = {}) => {
121
+ options = Object.assign({}, defaultOptions, options)
122
+
123
+ const refRect = refEl.getBoundingClientRect()
124
+ let popoverRect = popoverEl.getBoundingClientRect()
125
+
126
+ let top
127
+ let left
128
+ const topCorrection = 0
129
+ let leftCorrection = 0
130
+ const scrollY = window.scrollY
131
+ const scrollX = window.scrollX
132
+ const { vpWidth } = getViewportDimensions()
133
+ // const docHeight = document.documentElement.scrollHeight
134
+ const refTop = refRect.top + scrollY
135
+ const refLeft = refRect.left + scrollX
136
+
137
+ if (popoverRect.width === 0 && popoverRect.height === 0) {
138
+ // Popover probably has display:none.
139
+ // Make it visible for a frame to get the correct dimensions.
140
+ popoverEl.style.display = 'block'
141
+ popoverRect = popoverEl.getBoundingClientRect()
142
+ popoverEl.style.display = ''
143
+ }
144
+
145
+ switch (options.placement) {
146
+ case 'top-right':
147
+ // top = offsetTop - popoverRect.height - options.offset
148
+ // left = offsetLeft + refRect.width - popoverRect.width
149
+ // console.log(left)
150
+ break
151
+
152
+ case 'top-left':
153
+ // top = offsetTop - popoverRect.height - options.offset
154
+ // left = offsetLeft
155
+ break
156
+
157
+ case 'bottom-right':
158
+ // top = offsetTop + refRect.height + options.offset
159
+ // left = offsetLeft + refRect.width - popoverRect.width
160
+ break
161
+
162
+ case 'bottom-left':
163
+ // top = offsetTop + refRect.height + options.offset
164
+ // left = offsetLeft
165
+ break
166
+
167
+ case 'bottom-center':
168
+ top = refTop + refRect.height + options.offset
169
+ left = refLeft + refRect.width / 2 - popoverRect.width / 2
170
+ break
171
+
172
+ case 'top-center':
173
+ top = refTop - options.offset - popoverRect.height
174
+ left = refLeft + refRect.width / 2 - popoverRect.width / 2
175
+ }
176
+
177
+ // Add corrections to position if necessary
178
+
179
+ // Check left or right overflow
180
+ if (left < options.viewportPadding) {
181
+ // too left
182
+ leftCorrection = Math.abs(left) + options.viewportPadding
183
+ left = options.viewportPadding
184
+ } else if (left + popoverRect.width > vpWidth - options.viewportPadding) {
185
+ // too right
186
+ leftCorrection =
187
+ vpWidth - options.viewportPadding - popoverRect.width - left
188
+ left = vpWidth - options.viewportPadding - popoverRect.width
189
+ }
190
+
191
+ // Check top or bottom overflow
192
+ // TODO: Add these corrections
193
+
194
+ return {
195
+ top,
196
+ left,
197
+ leftCorrection,
198
+ topCorrection,
199
+ }
200
+ }
@@ -0,0 +1,75 @@
1
+ @use '../../base/abstracts/' as a;
2
+
3
+ .tooltip {
4
+ pointer-events: none;
5
+ z-index: a.$layer-tooltip;
6
+ position: absolute;
7
+ top: 0;
8
+ left: 0;
9
+ max-width: a.rem(360);
10
+ min-width: a.rem(84);
11
+ opacity: 0;
12
+ transform: translateY(-5px);
13
+ transition:
14
+ opacity a.$trs-default,
15
+ transform a.$trs-default;
16
+
17
+ @include a.bp(lg) {
18
+ max-width: a.rem(280);
19
+ }
20
+
21
+ .tooltip__content {
22
+ @include a.type(100);
23
+
24
+ // This nesting here is only to make the new sass compiler happy.
25
+ & {
26
+ z-index: 0;
27
+ position: relative;
28
+ padding: var(--e-space-2);
29
+ background-color: var(--e-c-mono-00);
30
+ box-shadow: var(--e-elevation-sm);
31
+ border: 1px solid var(--e-c-mono-100);
32
+ border-radius: var(--e-brd-radius-1);
33
+ }
34
+
35
+ @include a.bp(lg) {
36
+ @include a.type(50);
37
+
38
+ padding: var(--e-space-3);
39
+ }
40
+ }
41
+
42
+ .tooltip__pointer {
43
+ position: absolute;
44
+ bottom: -4px;
45
+ left: calc(50% - 6px);
46
+
47
+ &::before {
48
+ content: '';
49
+ display: block;
50
+ width: 10px;
51
+ height: 9.6px;
52
+ transform: rotate(53.13deg) skewX(15.36deg);
53
+ box-shadow: var(--e-elevation-sm);
54
+ background-color: var(--e-c-mono-00);
55
+ border-right: 1px solid var(--e-c-mono-100);
56
+ border-bottom: 1px solid var(--e-c-mono-100);
57
+ }
58
+
59
+ &::after {
60
+ content: '';
61
+ position: absolute;
62
+ bottom: 5px;
63
+ left: -2px;
64
+ width: 14px;
65
+ height: 7px;
66
+ background: var(--e-c-mono-00);
67
+ }
68
+ }
69
+
70
+ // States
71
+ &.tooltip--open {
72
+ opacity: 1;
73
+ transform: translateY(0);
74
+ }
75
+ }
@@ -0,0 +1,92 @@
1
+ <script setup lang="ts">
2
+ import { ref } from 'vue'
3
+ import { getPopoverPositionBody } from './popover'
4
+
5
+ interface Props {
6
+ title: string
7
+ placement?:
8
+ | 'top-right'
9
+ | 'top-left'
10
+ | 'top-center'
11
+ | 'bottom-right'
12
+ | 'bottom-left'
13
+ | 'bottom-center'
14
+ offset?: number
15
+ viewportPadding?: number
16
+ }
17
+
18
+ const {
19
+ placement = 'top-center',
20
+ offset = 12,
21
+ viewportPadding = 20,
22
+ } = defineProps<Props>()
23
+
24
+ const tooltip = ref(null)
25
+ const root = ref(null)
26
+ const pointer = ref(null)
27
+
28
+ const showTooltip = () => {
29
+ const popoverPosition = getPopoverPositionBody(root.value, tooltip.value, {
30
+ offset,
31
+ placement,
32
+ viewportPadding,
33
+ })
34
+
35
+ // Set position
36
+ tooltip.value.style.top = `${popoverPosition.top}px`
37
+ tooltip.value.style.left = `${popoverPosition.left}px`
38
+
39
+ // Fix pointer position if necessary
40
+ if (popoverPosition.leftCorrection) {
41
+ pointer.value.style.transform = `translateX(${popoverPosition.leftCorrection * -1}px)`
42
+ }
43
+
44
+ tooltip.value.ariaHidden = 'false'
45
+ tooltip.value.classList.toggle('tooltip--open', true)
46
+ }
47
+
48
+ const hideTooltip = () => {
49
+ const onTransitionend = () => {
50
+ tooltip.value.removeEventListener('transitionend', onTransitionend)
51
+
52
+ tooltip.value.style.top = ''
53
+ tooltip.value.style.left = ''
54
+ pointer.value.style.transform = ''
55
+ }
56
+
57
+ tooltip.value.addEventListener('transitionend', onTransitionend)
58
+
59
+ tooltip.value.ariaHidden = 'true'
60
+ tooltip.value.classList.toggle('tooltip--open', false)
61
+ }
62
+
63
+ // On desktop (or non-touch devices) mouse events will be fired before the pointer events.
64
+ // For mobile and touch devices it's th opposite, pointer events will be fired first.
65
+ // This way we can detect on what device we are and handle the behaviour accordingly.
66
+ const onMouseenter = () => {
67
+ showTooltip()
68
+ }
69
+
70
+ const onMouseleave = () => {
71
+ hideTooltip()
72
+ }
73
+ </script>
74
+
75
+ <template>
76
+ <span @mouseenter="onMouseenter" @mouseleave="onMouseleave" ref="root">
77
+ <slot></slot>
78
+ </span>
79
+
80
+ <Teleport to="body">
81
+ <div ref="tooltip" class="tooltip">
82
+ <div class="tooltip__content">
83
+ {{ title }}
84
+ </div>
85
+ <span class="tooltip__pointer" ref="pointer"></span>
86
+ </div>
87
+ </Teleport>
88
+ </template>
89
+
90
+ <style scoped lang="scss">
91
+ @use './tooltip.scss';
92
+ </style>
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Get element offset relative to document.
3
+ *
4
+ * @param {Element} el
5
+ * @returns {{top: *, left: *, width, height}}
6
+ */
7
+ export const getElOffset = (el) => {
8
+ const rect = el.getBoundingClientRect()
9
+
10
+ return {
11
+ top: window.scrollY + rect.top,
12
+ left: window.scrollX + rect.left,
13
+ width: rect.width,
14
+ height: rect.height,
15
+ }
16
+ }
17
+
18
+ export const getViewportDimensions = () => ({
19
+ vpWidth: window.innerWidth,
20
+ vpHeight: window.innerHeight,
21
+ })
@@ -0,0 +1 @@
1
+ export * from './elements/elements'
@@ -17,4 +17,4 @@
17
17
  *
18
18
  *
19
19
  * © 2020 MyFonts Inc
20
- */body{margin:0;min-height:100vh}h1,h2,h3,h4,h5,h6{margin:0;text-wrap:balance;font-size:unset;font-weight:unset}p,figure,blockquote{margin:0}button{padding:0;margin:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;font-family:inherit;font-size:inherit;background:none}ul,ol{list-style:none;padding:0;margin:0}dl,dt,dd{margin:0}address{font-style:normal}img,picture{max-width:100%;display:block}fieldset{padding:0;margin:0;border:0}html{box-sizing:border-box;scroll-behavior:smooth;min-height:100vh}*,*:before,*:after{box-sizing:inherit}body{font-family:var(--e-type-font-body),var(--e-type-font-fallback);font-size:var(--e-type-size-300);font-weight:var(--e-type-weight-weak);line-height:var(--e-type-line-height-300);color:var(--e-c-mono-900)}*{outline:none}*:focus-visible{outline-style:solid;outline-offset:4px;outline-color:#b3b3b3cc}[data-whatintent=mouse] *:focus{outline:none}@font-face{font-family:Glober;font-weight:400;font-style:normal;font-display:swap;src:url(/static/ui-assets/fonts/Glober/Glober-Regular/font.woff2) format("woff2"),url(/static/ui-assets/fonts/Glober/Glober-Regular/font.woff) format("woff")}@font-face{font-family:Glober;font-weight:700;font-style:normal;font-display:swap;src:url(/static/ui-assets/fonts/Glober/Glober-Bold/font.woff2) format("woff2"),url(/static/ui-assets/fonts/Glober/Glober-Bold/font.woff) format("woff")}:root{--e-c-primary-01-50: #edf6e9;--e-c-primary-01-50-rgb: 237, 246, 233;--e-c-primary-01-100: #dbedd4;--e-c-primary-01-100-rgb: 219, 237, 212;--e-c-primary-01-200: #9cce89;--e-c-primary-01-200-rgb: 156, 206, 137;--e-c-primary-01-500: #4ba528;--e-c-primary-01-500-rgb: 75, 165, 40;--e-c-primary-01-700: #3c8420;--e-c-primary-01-700-rgb: 60, 132, 32;--e-c-primary-01-900: #316b1a;--e-c-primary-01-900-rgb: 49, 107, 26;--e-c-secondary-01-50: #e5f2eb;--e-c-secondary-01-50-rgb: 229, 242, 235;--e-c-secondary-01-100: #cce5d8;--e-c-secondary-01-100-rgb: 204, 229, 216;--e-c-secondary-01-200: #73b894;--e-c-secondary-01-200-rgb: 115, 184, 148;--e-c-secondary-01-500: #007d3c;--e-c-secondary-01-500-rgb: 0, 125, 60;--e-c-secondary-01-700: #006430;--e-c-secondary-01-700-rgb: 0, 100, 48;--e-c-secondary-01-900: #005127;--e-c-secondary-01-900-rgb: 0, 81, 39;--e-c-secondary-02-50: #ede9ee;--e-c-secondary-02-50-rgb: 237, 233, 238;--e-c-secondary-02-100: #dcd3de;--e-c-secondary-02-100-rgb: 220, 211, 222;--e-c-secondary-02-200: #9f86a4;--e-c-secondary-02-200-rgb: 159, 134, 164;--e-c-secondary-02-500: #50235a;--e-c-secondary-02-500-rgb: 80, 35, 90;--e-c-secondary-02-700: #401c48;--e-c-secondary-02-700-rgb: 64, 28, 72;--e-c-secondary-02-900: #34173b;--e-c-secondary-02-900-rgb: 52, 23, 59;--e-c-secondary-03-50: #f8e7ed;--e-c-secondary-03-50-rgb: 248, 231, 237;--e-c-secondary-03-100: #f1cfdb;--e-c-secondary-03-100-rgb: 241, 207, 219;--e-c-secondary-03-200: #d97b9c;--e-c-secondary-03-200-rgb: 217, 123, 156;--e-c-secondary-03-500: #b90f4b;--e-c-secondary-03-500-rgb: 185, 15, 75;--e-c-secondary-03-700: #940c3c;--e-c-secondary-03-700-rgb: 148, 12, 60;--e-c-secondary-03-900: #780a31;--e-c-secondary-03-900-rgb: 120, 10, 49;--e-c-secondary-04-50: #fffbe5;--e-c-secondary-04-50-rgb: 255, 251, 229;--e-c-secondary-04-100: #fff7cc;--e-c-secondary-04-100-rgb: 255, 247, 204;--e-c-secondary-04-200: #ffe973;--e-c-secondary-04-200-rgb: 255, 233, 115;--e-c-secondary-04-500: #ffd700;--e-c-secondary-04-500-rgb: 255, 215, 0;--e-c-secondary-04-700: #ccac00;--e-c-secondary-04-700-rgb: 204, 172, 0;--e-c-secondary-04-900: #a68c00;--e-c-secondary-04-900-rgb: 166, 140, 0;--e-c-secondary-05-50: #e5f5fc;--e-c-secondary-05-50-rgb: 229, 245, 252;--e-c-secondary-05-100: #cceaf8;--e-c-secondary-05-100-rgb: 204, 234, 248;--e-c-secondary-05-200: #73c5ec;--e-c-secondary-05-200-rgb: 115, 197, 236;--e-c-secondary-05-500: #0096dc;--e-c-secondary-05-500-rgb: 0, 150, 220;--e-c-secondary-05-700: #0078b0;--e-c-secondary-05-700-rgb: 0, 120, 176;--e-c-secondary-05-900: #00618f;--e-c-secondary-05-900-rgb: 0, 97, 143;--e-c-secondary-06-50: #f4e6e5;--e-c-secondary-06-50-rgb: 244, 230, 229;--e-c-secondary-06-100: #e9cdcc;--e-c-secondary-06-100-rgb: 233, 205, 204;--e-c-secondary-06-200: #c27673;--e-c-secondary-06-200-rgb: 194, 118, 115;--e-c-secondary-06-500: #910500;--e-c-secondary-06-500-rgb: 145, 5, 0;--e-c-secondary-06-700: #740400;--e-c-secondary-06-700-rgb: 116, 4, 0;--e-c-secondary-06-900: #5e0300;--e-c-secondary-06-900-rgb: 94, 3, 0;--e-c-mono-50: #f5f5f5;--e-c-mono-50-rgb: 245, 245, 245;--e-c-mono-100: #ececec;--e-c-mono-100-rgb: 236, 236, 236;--e-c-mono-200: #dddddd;--e-c-mono-200-rgb: 221, 221, 221;--e-c-mono-500: #b3b3b3;--e-c-mono-500-rgb: 179, 179, 179;--e-c-mono-700: #6b6b6b;--e-c-mono-700-rgb: 107, 107, 107;--e-c-mono-900: #333333;--e-c-mono-900-rgb: 51, 51, 51;--e-c-mono-00: #ffffff;--e-c-mono-00-rgb: 255, 255, 255;--e-c-signal-01-100: #b6e6cf;--e-c-signal-01-100-rgb: 182, 230, 207;--e-c-signal-01-500: #1aa764;--e-c-signal-01-500-rgb: 26, 167, 100;--e-c-signal-01-700: #0e6f41;--e-c-signal-01-700-rgb: 14, 111, 65;--e-c-signal-01-900: #004926;--e-c-signal-01-900-rgb: 0, 73, 38;--e-c-signal-02-100: #ffe2b6;--e-c-signal-02-100-rgb: 255, 226, 182;--e-c-signal-02-500: #ff9800;--e-c-signal-02-500-rgb: 255, 152, 0;--e-c-signal-02-700: #cc7a00;--e-c-signal-02-700-rgb: 204, 122, 0;--e-c-signal-02-900: #703600;--e-c-signal-02-900-rgb: 112, 54, 0;--e-c-signal-03-100: #ffb5c4;--e-c-signal-03-100-rgb: 255, 181, 196;--e-c-signal-03-500: #ff0c3e;--e-c-signal-03-500-rgb: 255, 12, 62;--e-c-signal-03-700: #b90d31;--e-c-signal-03-700-rgb: 185, 13, 49;--e-c-signal-03-900: #790019;--e-c-signal-03-900-rgb: 121, 0, 25;--e-space-1: 4px;--e-space-2: 8px;--e-space-3: 12px;--e-space-4: 16px;--e-space-5: 20px;--e-space-6: 24px;--e-space-7: 28px;--e-space-8: 32px;--e-space-9: 36px;--e-space-10: 40px;--e-space-11: 44px;--e-space-12: 48px;--e-space-14: 56px;--e-space-16: 64px;--e-space-20: 80px;--e-space-24: 96px;--e-space-28: 112px;--e-space-30: 120px;--e-space-32: 128px;--e-space-36: 144px;--e-space-40: 160px;--e-space-44: 176px;--e-space-48: 192px;--e-space-52: 208px;--e-space-56: 224px;--e-space-60: 240px;--e-space-64: 256px;--e-space-72: 288px;--e-space-80: 320px;--e-space-96: 384px;--e-space-0_5: 2px;--e-space-1_5: 6px;--e-space-2_5: 10px;--e-space-3_5: 14px;--e-type-font-body: Glober;--e-type-font-fallback: "Helvetica Neue", helvetica, arial, sans-serif;--e-type-font-base-size: 16px;--e-type-size-50: 12px;--e-type-size-100: 14px;--e-type-size-200: 16px;--e-type-size-300: 18px;--e-type-size-400: 20px;--e-type-size-500: 22px;--e-type-size-600: 26px;--e-type-size-700: 26px;--e-type-size-800: 32px;--e-type-size-900: 48px;--e-type-size-1000: 56px;--e-type-line-height-50: 1.5 ;--e-type-line-height-100: calc(22 / 14);--e-type-line-height-200: 1.5 ;--e-type-line-height-300: calc(28 / 18);--e-type-line-height-400: 1.3 ;--e-type-line-height-500: calc(30 / 22);--e-type-line-height-600: calc(36 / 26);--e-type-line-height-700: calc(34 / 26);--e-type-line-height-800: 1.1875 ;--e-type-line-height-900: 1.125 ;--e-type-line-height-1000: calc(62 / 56);--e-type-weight-weak: 400;--e-type-weight-strong: 700;--e-type-decoration-enhance: underline;--e-trs-duration-fastest: .1s;--e-trs-duration-faster: .2s;--e-trs-duration-fast: .4s;--e-trs-duration-slow: .6s;--e-trs-duration-slower: .8s;--e-trs-duration-slowest: 1s;--e-trs-easing-default: ease-in-out;--e-brd-radius-1: 4px;--e-brd-radius-2: 8px;--e-brd-radius-3: 12px;--e-brd-radius-4: 16px;--e-brd-radius-5: 20px;--e-brd-radius-6: 24px;--e-mq-breakpoint-xs: 480px;--e-mq-breakpoint-s: 520px;--e-mq-breakpoint-m: 740px;--e-mq-breakpoint-lg: 1020px;--e-mq-breakpoint-xl: 1240px;--e-mq-breakpoint-2xl: 1520px;--e-layout-site-width: 1680px;--e-layout-site-width-lg: 1020px;--e-layout-site-width-m: 740px;--e-layout-site-width-s: 520px;--e-layout-grid-columns: 12;--e-elevation-xs: 0px 1px 2px rgba(0, 0, 0, .05);--e-elevation-sm: 0px 1px 3px rgba(0, 0, 0, .1), 0px 1px 2px -1px rgba(0, 0, 0, .1);--e-elevation-md: 0px 4px 6px -1px rgba(0, 0, 0, .1), 0px 2px 4px -2px rgba(0, 0, 0, .1);--e-elevation-lg: 0px 10px 15px -3px rgba(0, 0, 0, .1), 0px 4px 6px -4px rgba(0, 0, 0, .1);--e-elevation-xl: 0px 20px 25px -5px rgba(0, 0, 0, .1), 0px 8px 10px -6px rgba(0, 0, 0, .1);--e-elevation-2xl: 0px 25px 50px -12px rgba(0, 0, 0, .25)}e-button:not(:defined),e-icon-button:not(:defined),e-icon:not(:defined),e-loader:not(:defined){opacity:0}
20
+ */body{margin:0;min-height:100vh}h1,h2,h3,h4,h5,h6{margin:0;text-wrap:balance;font-size:unset;font-weight:unset}p,figure,blockquote{margin:0}button{padding:0;margin:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;font-family:inherit;font-size:inherit;background:none}ul,ol{list-style:none;padding:0;margin:0}dl,dt,dd{margin:0}address{font-style:normal}img,picture{max-width:100%;display:block}fieldset{padding:0;margin:0;border:0}input,textarea,select{font-family:inherit;font-size:inherit;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:none;margin:0}input,select,textarea{font-size:var(--e-type-size-200);line-height:var(--e-type-line-height-200);letter-spacing:.01875rem}input::-moz-placeholder{color:var(--e-c-mono-700)}input::placeholder{color:var(--e-c-mono-700)}input:disabled::-moz-placeholder{color:var(--e-c-mono-500)}input:disabled::placeholder{color:var(--e-c-mono-500)}[type=search]::-webkit-search-cancel-button{display:none}[type=date]::-webkit-calendar-picker-indicator{opacity:0;cursor:pointer}select:invalid{color:var(--e-c-mono-700)}textarea{resize:vertical}html{box-sizing:border-box;scroll-behavior:smooth;min-height:100vh}*,*:before,*:after{box-sizing:inherit}body{font-family:var(--e-type-font-body),var(--e-type-font-fallback);font-size:var(--e-type-size-300);font-weight:var(--e-type-weight-weak);line-height:var(--e-type-line-height-300);color:var(--e-c-mono-900)}*{outline:none}*:focus-visible{outline-style:solid;outline-offset:4px;outline-color:#b3b3b3cc}[data-whatintent=mouse] *:focus{outline:none}@font-face{font-family:Glober;font-weight:400;font-style:normal;font-display:swap;src:url(/static/ui-assets/fonts/Glober/Glober-Regular/font.woff2) format("woff2"),url(/static/ui-assets/fonts/Glober/Glober-Regular/font.woff) format("woff")}@font-face{font-family:Glober;font-weight:700;font-style:normal;font-display:swap;src:url(/static/ui-assets/fonts/Glober/Glober-Bold/font.woff2) format("woff2"),url(/static/ui-assets/fonts/Glober/Glober-Bold/font.woff) format("woff")}:root{--e-c-primary-01-50: #edf6e9;--e-c-primary-01-50-rgb: 237, 246, 233;--e-c-primary-01-100: #dbedd4;--e-c-primary-01-100-rgb: 219, 237, 212;--e-c-primary-01-200: #9cce89;--e-c-primary-01-200-rgb: 156, 206, 137;--e-c-primary-01-500: #4ba528;--e-c-primary-01-500-rgb: 75, 165, 40;--e-c-primary-01-700: #3c8420;--e-c-primary-01-700-rgb: 60, 132, 32;--e-c-primary-01-900: #316b1a;--e-c-primary-01-900-rgb: 49, 107, 26;--e-c-secondary-01-50: #e5f2eb;--e-c-secondary-01-50-rgb: 229, 242, 235;--e-c-secondary-01-100: #cce5d8;--e-c-secondary-01-100-rgb: 204, 229, 216;--e-c-secondary-01-200: #73b894;--e-c-secondary-01-200-rgb: 115, 184, 148;--e-c-secondary-01-500: #007d3c;--e-c-secondary-01-500-rgb: 0, 125, 60;--e-c-secondary-01-700: #006430;--e-c-secondary-01-700-rgb: 0, 100, 48;--e-c-secondary-01-900: #005127;--e-c-secondary-01-900-rgb: 0, 81, 39;--e-c-secondary-02-50: #ede9ee;--e-c-secondary-02-50-rgb: 237, 233, 238;--e-c-secondary-02-100: #dcd3de;--e-c-secondary-02-100-rgb: 220, 211, 222;--e-c-secondary-02-200: #9f86a4;--e-c-secondary-02-200-rgb: 159, 134, 164;--e-c-secondary-02-500: #50235a;--e-c-secondary-02-500-rgb: 80, 35, 90;--e-c-secondary-02-700: #401c48;--e-c-secondary-02-700-rgb: 64, 28, 72;--e-c-secondary-02-900: #34173b;--e-c-secondary-02-900-rgb: 52, 23, 59;--e-c-secondary-03-50: #f8e7ed;--e-c-secondary-03-50-rgb: 248, 231, 237;--e-c-secondary-03-100: #f1cfdb;--e-c-secondary-03-100-rgb: 241, 207, 219;--e-c-secondary-03-200: #d97b9c;--e-c-secondary-03-200-rgb: 217, 123, 156;--e-c-secondary-03-500: #b90f4b;--e-c-secondary-03-500-rgb: 185, 15, 75;--e-c-secondary-03-700: #940c3c;--e-c-secondary-03-700-rgb: 148, 12, 60;--e-c-secondary-03-900: #780a31;--e-c-secondary-03-900-rgb: 120, 10, 49;--e-c-secondary-04-50: #fffbe5;--e-c-secondary-04-50-rgb: 255, 251, 229;--e-c-secondary-04-100: #fff7cc;--e-c-secondary-04-100-rgb: 255, 247, 204;--e-c-secondary-04-200: #ffe973;--e-c-secondary-04-200-rgb: 255, 233, 115;--e-c-secondary-04-500: #ffd700;--e-c-secondary-04-500-rgb: 255, 215, 0;--e-c-secondary-04-700: #ccac00;--e-c-secondary-04-700-rgb: 204, 172, 0;--e-c-secondary-04-900: #a68c00;--e-c-secondary-04-900-rgb: 166, 140, 0;--e-c-secondary-05-50: #e5f5fc;--e-c-secondary-05-50-rgb: 229, 245, 252;--e-c-secondary-05-100: #cceaf8;--e-c-secondary-05-100-rgb: 204, 234, 248;--e-c-secondary-05-200: #73c5ec;--e-c-secondary-05-200-rgb: 115, 197, 236;--e-c-secondary-05-500: #0096dc;--e-c-secondary-05-500-rgb: 0, 150, 220;--e-c-secondary-05-700: #0078b0;--e-c-secondary-05-700-rgb: 0, 120, 176;--e-c-secondary-05-900: #00618f;--e-c-secondary-05-900-rgb: 0, 97, 143;--e-c-secondary-06-50: #f4e6e5;--e-c-secondary-06-50-rgb: 244, 230, 229;--e-c-secondary-06-100: #e9cdcc;--e-c-secondary-06-100-rgb: 233, 205, 204;--e-c-secondary-06-200: #c27673;--e-c-secondary-06-200-rgb: 194, 118, 115;--e-c-secondary-06-500: #910500;--e-c-secondary-06-500-rgb: 145, 5, 0;--e-c-secondary-06-700: #740400;--e-c-secondary-06-700-rgb: 116, 4, 0;--e-c-secondary-06-900: #5e0300;--e-c-secondary-06-900-rgb: 94, 3, 0;--e-c-mono-50: #f5f5f5;--e-c-mono-50-rgb: 245, 245, 245;--e-c-mono-100: #ececec;--e-c-mono-100-rgb: 236, 236, 236;--e-c-mono-200: #dddddd;--e-c-mono-200-rgb: 221, 221, 221;--e-c-mono-500: #b3b3b3;--e-c-mono-500-rgb: 179, 179, 179;--e-c-mono-700: #6b6b6b;--e-c-mono-700-rgb: 107, 107, 107;--e-c-mono-900: #333333;--e-c-mono-900-rgb: 51, 51, 51;--e-c-mono-00: #ffffff;--e-c-mono-00-rgb: 255, 255, 255;--e-c-signal-01-100: #b6e6cf;--e-c-signal-01-100-rgb: 182, 230, 207;--e-c-signal-01-500: #1aa764;--e-c-signal-01-500-rgb: 26, 167, 100;--e-c-signal-01-700: #0e6f41;--e-c-signal-01-700-rgb: 14, 111, 65;--e-c-signal-01-900: #004926;--e-c-signal-01-900-rgb: 0, 73, 38;--e-c-signal-02-100: #ffe2b6;--e-c-signal-02-100-rgb: 255, 226, 182;--e-c-signal-02-500: #ff9800;--e-c-signal-02-500-rgb: 255, 152, 0;--e-c-signal-02-700: #cc7a00;--e-c-signal-02-700-rgb: 204, 122, 0;--e-c-signal-02-900: #703600;--e-c-signal-02-900-rgb: 112, 54, 0;--e-c-signal-03-100: #ffb5c4;--e-c-signal-03-100-rgb: 255, 181, 196;--e-c-signal-03-500: #ff0c3e;--e-c-signal-03-500-rgb: 255, 12, 62;--e-c-signal-03-700: #b90d31;--e-c-signal-03-700-rgb: 185, 13, 49;--e-c-signal-03-900: #790019;--e-c-signal-03-900-rgb: 121, 0, 25;--e-space-1: 4px;--e-space-2: 8px;--e-space-3: 12px;--e-space-4: 16px;--e-space-5: 20px;--e-space-6: 24px;--e-space-7: 28px;--e-space-8: 32px;--e-space-9: 36px;--e-space-10: 40px;--e-space-11: 44px;--e-space-12: 48px;--e-space-14: 56px;--e-space-16: 64px;--e-space-20: 80px;--e-space-24: 96px;--e-space-28: 112px;--e-space-30: 120px;--e-space-32: 128px;--e-space-36: 144px;--e-space-40: 160px;--e-space-44: 176px;--e-space-48: 192px;--e-space-52: 208px;--e-space-56: 224px;--e-space-60: 240px;--e-space-64: 256px;--e-space-72: 288px;--e-space-80: 320px;--e-space-96: 384px;--e-space-0_5: 2px;--e-space-1_5: 6px;--e-space-2_5: 10px;--e-space-3_5: 14px;--e-type-font-body: Glober;--e-type-font-fallback: "Helvetica Neue", helvetica, arial, sans-serif;--e-type-font-base-size: 16px;--e-type-size-50: 12px;--e-type-size-100: 14px;--e-type-size-200: 16px;--e-type-size-300: 18px;--e-type-size-400: 20px;--e-type-size-500: 22px;--e-type-size-600: 26px;--e-type-size-700: 26px;--e-type-size-800: 32px;--e-type-size-900: 48px;--e-type-size-1000: 56px;--e-type-line-height-50: 1.5 ;--e-type-line-height-100: calc(22 / 14);--e-type-line-height-200: 1.5 ;--e-type-line-height-300: calc(28 / 18);--e-type-line-height-400: 1.3 ;--e-type-line-height-500: calc(30 / 22);--e-type-line-height-600: calc(36 / 26);--e-type-line-height-700: calc(34 / 26);--e-type-line-height-800: 1.1875 ;--e-type-line-height-900: 1.125 ;--e-type-line-height-1000: calc(62 / 56);--e-type-weight-weak: 400;--e-type-weight-strong: 700;--e-type-decoration-enhance: underline;--e-trs-duration-fastest: .1s;--e-trs-duration-faster: .2s;--e-trs-duration-fast: .4s;--e-trs-duration-slow: .6s;--e-trs-duration-slower: .8s;--e-trs-duration-slowest: 1s;--e-trs-easing-default: ease-in-out;--e-brd-radius-1: 4px;--e-brd-radius-2: 8px;--e-brd-radius-3: 12px;--e-brd-radius-4: 16px;--e-brd-radius-5: 20px;--e-brd-radius-6: 24px;--e-mq-breakpoint-xs: 480px;--e-mq-breakpoint-s: 520px;--e-mq-breakpoint-m: 740px;--e-mq-breakpoint-lg: 1020px;--e-mq-breakpoint-xl: 1240px;--e-mq-breakpoint-2xl: 1520px;--e-layout-site-width: 1680px;--e-layout-site-width-lg: 1020px;--e-layout-site-width-m: 740px;--e-layout-site-width-s: 520px;--e-layout-grid-columns: 12;--e-elevation-xs: 0px 1px 2px rgba(0, 0, 0, .05);--e-elevation-sm: 0px 1px 3px rgba(0, 0, 0, .1), 0px 1px 2px -1px rgba(0, 0, 0, .1);--e-elevation-md: 0px 4px 6px -1px rgba(0, 0, 0, .1), 0px 2px 4px -2px rgba(0, 0, 0, .1);--e-elevation-lg: 0px 10px 15px -3px rgba(0, 0, 0, .1), 0px 4px 6px -4px rgba(0, 0, 0, .1);--e-elevation-xl: 0px 20px 25px -5px rgba(0, 0, 0, .1), 0px 8px 10px -6px rgba(0, 0, 0, .1);--e-elevation-2xl: 0px 25px 50px -12px rgba(0, 0, 0, .25)}e-button:not(:defined),e-icon-button:not(:defined),e-icon:not(:defined),e-loader:not(:defined){opacity:0}
@@ -0,0 +1 @@
1
+ .icon[data-v-3ff10e21]{display:block;fill:var(--icon-fill-color, currentColor);width:var(--icon-width, 24px);height:var(--icon-height, 24px);transition:var(--icon-transition, none)}.icon.icon--custom-size[data-v-3ff10e21]{width:100%;height:100%}.icon.icon--inline[data-v-3ff10e21]{display:inline-block;vertical-align:baseline}@keyframes horizontal-8027a436{0%{transform:translate(0)}20%{transform:translate(0);opacity:1;width:8px}50%{transform:translate(24px);opacity:.7;width:16px}80%{transform:translate(56px);opacity:1;width:8px}to{transform:translate(56px)}}@keyframes vertical-8027a436{0%{transform:translateY(0)}50%{transform:translateY(0);opacity:1;height:8px}55%{transform:translateY(-12px);opacity:.7;height:16px}60%{transform:translateY(0);opacity:1;height:8px}70%{transform:translateY(-4px)}to{transform:translateY(0)}}.loader[data-v-8027a436]{position:relative;display:inline-flex;--dot-color: var(--e-c-mono-900)}.loader>span[data-v-8027a436]{display:block;width:8px;height:8px;border-radius:4px;background-color:var(--dot-color)}.loader.horizontal[data-v-8027a436]{width:64px}.loader.horizontal>span[data-v-8027a436]{transform:translate(0);animation-name:horizontal-8027a436;animation-duration:1s;animation-direction:alternate;animation-timing-function:cubic-bezier(.4,.61,.61,.4);animation-iteration-count:infinite}.loader.vertical[data-v-8027a436]{height:8px;width:8px}.loader.vertical>span[data-v-8027a436]{transform:translateY(0);animation-name:vertical-8027a436;animation-duration:2s;animation-timing-function:cubic-bezier(.47,.52,.165,1.005);animation-iteration-count:infinite}button[data-v-40a767c3]{padding:0;margin:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;font-family:inherit;font-size:inherit;background:none}.button[data-v-40a767c3]{position:relative;display:inline-flex;align-items:center;justify-content:center;padding:.625rem 1.875rem;grid-gap:var(--e-space-2);border-radius:24px;transition:background-color var(--e-trs-duration-faster) var(--e-trs-easing-default),box-shadow var(--e-trs-duration-faster) var(--e-trs-easing-default),color var(--e-trs-duration-faster) var(--e-trs-easing-default),border var(--e-trs-duration-faster) var(--e-trs-easing-default);border-width:2px;border-style:solid;text-decoration:none;vertical-align:middle;text-align:center;cursor:pointer;font-size:var(--e-type-size-200);line-height:var(--e-type-line-height-200);letter-spacing:.00625rem;font-weight:var(--e-type-weight-strong);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.button .icon[data-v-40a767c3],.button e-icon[data-v-40a767c3]{width:24px;height:24px}.button .button__loader[data-v-40a767c3]{position:absolute;top:0;left:0;display:flex;align-items:center;justify-content:center;width:100%;height:100%}.button.disabled[data-v-40a767c3],.button[data-v-40a767c3]:disabled{pointer-events:none}.button.loading[data-v-40a767c3]{cursor:default}.button .icon[data-v-40a767c3],.button e-icon[data-v-40a767c3]{--icon-transition: fill var(--e-trs-duration-faster) var(--e-trs-easing-default)}.button[data-v-40a767c3]{background-color:var(--e-c-primary-01-700);color:var(--e-c-mono-00);border-color:var(--e-c-primary-01-700)}.button .icon[data-v-40a767c3],.button e-icon[data-v-40a767c3]{--icon-fill-color: var(--e-c-mono-00)}.button .loader[data-v-40a767c3],.button e-loader[data-v-40a767c3]{--dot-color: var(--e-c-mono-00)}.button[data-v-40a767c3]:hover{background-color:var(--e-c-secondary-01-900);border-color:var(--e-c-secondary-01-900)}.button[data-v-40a767c3]:active,.button.loading[data-v-40a767c3]{background-color:var(--e-c-secondary-01-700);border-color:var(--e-c-secondary-01-700)}.button.disabled[data-v-40a767c3]:not(.loading),.button[data-v-40a767c3]:disabled:not(.loading){background-color:var(--e-c-mono-500);border-color:var(--e-c-mono-500)}.button.outlined[data-v-40a767c3]{background-color:transparent;color:var(--e-c-primary-01-700);border:2px solid var(--e-c-primary-01-700)}.button.outlined .icon[data-v-40a767c3],.button.outlined e-icon[data-v-40a767c3]{--icon-fill-color: var(--e-c-primary-01-700)}.button.outlined .loader[data-v-40a767c3],.button.outlined e-loader[data-v-40a767c3]{--dot-color: var(--e-c-primary-01-500)}.button.outlined[data-v-40a767c3]:hover{background-color:var(--e-c-primary-01-50);border-color:var(--e-c-primary-01-200)}.button.outlined[data-v-40a767c3]:active,.button.outlined.loading[data-v-40a767c3]{background-color:transparent;border-color:var(--e-c-primary-01-500)}.button.outlined.disabled[data-v-40a767c3]:not(.loading),.button.outlined[data-v-40a767c3]:disabled:not(.loading){border-color:var(--e-c-mono-500);background-color:transparent;color:var(--e-c-mono-500)}.button.outlined.disabled:not(.loading) .icon[data-v-40a767c3],.button.outlined.disabled:not(.loading) e-icon[data-v-40a767c3],.button.outlined:disabled:not(.loading) .icon[data-v-40a767c3],.button.outlined:disabled:not(.loading) e-icon[data-v-40a767c3]{--icon-fill-color: var(--e-c-mono-500)}.button.plain[data-v-40a767c3]{padding:var(--e-space-2) var(--e-space-3);color:var(--e-c-primary-01-700);background:none;border:0;text-decoration:none;grid-gap:var(--e-space-1)}.button.plain .icon[data-v-40a767c3],.button.plain e-icon[data-v-40a767c3]{--icon-fill-color: var(--e-c-primary-01-700)}.button.plain[data-v-40a767c3]:hover{color:var(--e-c-secondary-01-900)}.button.plain:hover .icon[data-v-40a767c3],.button.plain:hover e-icon[data-v-40a767c3]{--icon-fill-color: var(--e-c-secondary-01-900)}.button.plain[data-v-40a767c3]:active{color:var(--e-c-secondary-01-700)}.button.plain:active .icon[data-v-40a767c3],.button.plain:active e-icon[data-v-40a767c3]{--icon-fill-color: var(--e-c-secondary-01-700)}.button.plain.disabled[data-v-40a767c3]:not(.loading),.button.plain[data-v-40a767c3]:disabled:not(.loading){background:none;color:var(--e-c-mono-500)}.button.plain.disabled:not(.loading) .icon[data-v-40a767c3],.button.plain.disabled:not(.loading) e-icon[data-v-40a767c3],.button.plain:disabled:not(.loading) .icon[data-v-40a767c3],.button.plain:disabled:not(.loading) e-icon[data-v-40a767c3]{--icon-fill-color: var(--e-c-mono-500)}.button.plain.loading .loader[data-v-40a767c3],.button.plain.loading e-loader[data-v-40a767c3]{--dot-color: var(--e-c-secondary-01-700)}.button.plain-small[data-v-40a767c3]{padding:var(--e-space-2) var(--e-space-3);color:var(--e-c-primary-01-700);background:none;border:0;text-decoration:none;grid-gap:var(--e-space-1);font-size:var(--e-type-size-100);line-height:var(--e-type-line-height-100);letter-spacing:.025rem;font-weight:var(--e-type-weight-strong);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.button.plain-small .icon[data-v-40a767c3],.button.plain-small e-icon[data-v-40a767c3]{--icon-fill-color: var(--e-c-primary-01-700)}.button.plain-small[data-v-40a767c3]:hover{color:var(--e-c-secondary-01-900)}.button.plain-small:hover .icon[data-v-40a767c3],.button.plain-small:hover e-icon[data-v-40a767c3]{--icon-fill-color: var(--e-c-secondary-01-900)}.button.plain-small[data-v-40a767c3]:active{color:var(--e-c-secondary-01-700)}.button.plain-small:active .icon[data-v-40a767c3],.button.plain-small:active e-icon[data-v-40a767c3]{--icon-fill-color: var(--e-c-secondary-01-700)}.button.plain-small.disabled[data-v-40a767c3]:not(.loading),.button.plain-small[data-v-40a767c3]:disabled:not(.loading){background:none;color:var(--e-c-mono-500)}.button.plain-small.disabled:not(.loading) .icon[data-v-40a767c3],.button.plain-small.disabled:not(.loading) e-icon[data-v-40a767c3],.button.plain-small:disabled:not(.loading) .icon[data-v-40a767c3],.button.plain-small:disabled:not(.loading) e-icon[data-v-40a767c3]{--icon-fill-color: var(--e-c-mono-500)}.button.plain-small.loading .loader[data-v-40a767c3],.button.plain-small.loading e-loader[data-v-40a767c3]{--dot-color: var(--e-c-secondary-01-700)}.button.filled-inverted[data-v-40a767c3]{background-color:var(--e-c-mono-00);border-color:var(--e-c-mono-00);color:var(--e-c-primary-01-700)}.button.filled-inverted e-loader[data-v-40a767c3]{--dot-color: var(--e-c-secondary-01-900)}.button.filled-inverted .icon[data-v-40a767c3],.button.filled-inverted e-icon[data-v-40a767c3]{--icon-fill-color: var(--e-c-primary-01-700)}.button.filled-inverted[data-v-40a767c3]:hover{background-color:var(--e-c-primary-01-100);border-color:var(--e-c-primary-01-100);color:var(--e-c-secondary-01-700)}.button.filled-inverted:hover .icon[data-v-40a767c3],.button.filled-inverted:hover e-icon[data-v-40a767c3]{--icon-fill-color: var(--e-c-secondary-01-700)}.button.filled-inverted[data-v-40a767c3]:active,.button.filled-inverted.loading[data-v-40a767c3]{background-color:var(--e-c-primary-01-200);border-color:var(--e-c-primary-01-200)}.button.filled-inverted.disabled[data-v-40a767c3]:not(.loading),.button.filled-inverted[data-v-40a767c3]:disabled:not(.loading){color:var(--e-c-mono-700)}.button.filled-inverted.disabled:not(.loading) .icon[data-v-40a767c3],.button.filled-inverted.disabled:not(.loading) e-icon[data-v-40a767c3],.button.filled-inverted:disabled:not(.loading) .icon[data-v-40a767c3],.button.filled-inverted:disabled:not(.loading) e-icon[data-v-40a767c3]{--icon-fill-color: var(--e-c-mono-700)}.button.outlined-inverted[data-v-40a767c3]{background-color:transparent;border-color:var(--e-c-mono-00);color:var(--e-c-mono-00)}.button.outlined-inverted .icon[data-v-40a767c3],.button.outlined-inverted e-icon[data-v-40a767c3]{--icon-fill-color: var(--e-c-mono-00)}.button.outlined-inverted .loader[data-v-40a767c3],.button.outlined-inverted e-loader[data-v-40a767c3]{--dot-color: var(--e-c-mono-00)}.button.outlined-inverted[data-v-40a767c3]:hover{background-color:rgba(var(--e-c-primary-01-900-rgb),.7);border-color:var(--e-c-primary-01-200)}.button.outlined-inverted[data-v-40a767c3]:active,.button.outlined-inverted.loading[data-v-40a767c3]{background-color:transparent;border-color:var(--e-c-primary-01-500)}.button.outlined-inverted.disabled[data-v-40a767c3]:not(.loading),.button.outlined-inverted[data-v-40a767c3]:disabled:not(.loading){color:var(--e-c-mono-500);border:2px solid var(--e-c-mono-500);background-color:transparent}.button.outlined-inverted.disabled:not(.loading) .icon[data-v-40a767c3],.button.outlined-inverted.disabled:not(.loading) e-icon[data-v-40a767c3],.button.outlined-inverted:disabled:not(.loading) .icon[data-v-40a767c3],.button.outlined-inverted:disabled:not(.loading) e-icon[data-v-40a767c3]{--icon-fill-color: var(--e-c-mono-500)}.button.secondary-outlined[data-v-40a767c3]{background-color:transparent;color:var(--e-c-secondary-02-500);border:2px solid var(--e-c-secondary-02-500)}.button.secondary-outlined .icon[data-v-40a767c3],.button.secondary-outlined e-icon[data-v-40a767c3]{--icon-fill-color: var(--e-c-secondary-02-500)}.button.secondary-outlined .loader[data-v-40a767c3],.button.secondary-outlined e-loader[data-v-40a767c3]{--dot-color: var(--e-c-secondary-02-500)}.button.secondary-outlined[data-v-40a767c3]:hover{background-color:var(--e-c-secondary-02-50);border-color:var(--e-c-secondary-02-200)}.button.secondary-outlined[data-v-40a767c3]:active,.button.secondary-outlined.loading[data-v-40a767c3]{background-color:transparent;border-color:var(--e-c-secondary-02-200)}.button.secondary-outlined.disabled[data-v-40a767c3]:not(.loading),.button.secondary-outlined[data-v-40a767c3]:disabled:not(.loading){border-color:var(--e-c-mono-500);background-color:transparent;color:var(--e-c-mono-500)}.button.secondary-outlined.disabled:not(.loading) .icon[data-v-40a767c3],.button.secondary-outlined.disabled:not(.loading) e-icon[data-v-40a767c3],.button.secondary-outlined:disabled:not(.loading) .icon[data-v-40a767c3],.button.secondary-outlined:disabled:not(.loading) e-icon[data-v-40a767c3]{--icon-fill-color: var(--e-c-mono-500)}.button.secondary-outlined-small[data-v-40a767c3]{padding:var(--e-space-2_5) var(--e-space-6);background-color:transparent;color:var(--e-c-secondary-02-500);border:2px solid var(--e-c-secondary-02-500);font-size:var(--e-type-size-100);line-height:var(--e-type-line-height-100);letter-spacing:.025rem;font-weight:var(--e-type-weight-strong);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.button.secondary-outlined-small .icon[data-v-40a767c3],.button.secondary-outlined-small e-icon[data-v-40a767c3]{--icon-fill-color: var(--e-c-secondary-02-500)}.button.secondary-outlined-small .loader[data-v-40a767c3],.button.secondary-outlined-small e-loader[data-v-40a767c3]{--dot-color: var(--e-c-secondary-02-500)}.button.secondary-outlined-small[data-v-40a767c3]:hover{background-color:var(--e-c-secondary-02-50);border-color:var(--e-c-secondary-02-200)}.button.secondary-outlined-small[data-v-40a767c3]:active,.button.secondary-outlined-small.loading[data-v-40a767c3]{background-color:transparent;border-color:var(--e-c-secondary-02-200)}.button.secondary-outlined-small.disabled[data-v-40a767c3]:not(.loading),.button.secondary-outlined-small[data-v-40a767c3]:disabled:not(.loading){border-color:var(--e-c-mono-500);background-color:transparent;color:var(--e-c-mono-500)}.button.secondary-outlined-small.disabled:not(.loading) .icon[data-v-40a767c3],.button.secondary-outlined-small.disabled:not(.loading) e-icon[data-v-40a767c3],.button.secondary-outlined-small:disabled:not(.loading) .icon[data-v-40a767c3],.button.secondary-outlined-small:disabled:not(.loading) e-icon[data-v-40a767c3]{--icon-fill-color: var(--e-c-mono-500)}.button.loading[data-v-40a767c3]{color:transparent}.button.loading .icon[data-v-40a767c3],.button.loading e-icon[data-v-40a767c3]{--icon-fill-color: transparent}[data-v-4d752899]:host{font-family:var(--e-type-font-body),var(--e-type-font-fallback);font-size:var(--e-type-size-300);font-weight:var(--e-type-weight-weak);line-height:var(--e-type-line-height-300);color:var(--e-c-mono-900);box-sizing:border-box}[data-v-4d752899],[data-v-4d752899]:after,[data-v-4d752899]:before{box-sizing:inherit}[data-v-4d752899]{outline:none}[data-v-4d752899]:focus-visible{outline-style:solid;outline-offset:4px;outline-color:#b3b3b3cc}[data-whatintent=mouse][data-v-4d752899] *:focus{outline:none}body[data-v-4d752899]{margin:0;min-height:100vh}h1[data-v-4d752899],h2[data-v-4d752899],h3[data-v-4d752899],h4[data-v-4d752899],h5[data-v-4d752899],h6[data-v-4d752899]{margin:0;text-wrap:balance;font-size:unset;font-weight:unset}p[data-v-4d752899],figure[data-v-4d752899],blockquote[data-v-4d752899]{margin:0}button[data-v-4d752899]{padding:0;margin:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;font-family:inherit;font-size:inherit;background:none}ul[data-v-4d752899],ol[data-v-4d752899]{list-style:none;padding:0;margin:0}dl[data-v-4d752899],dt[data-v-4d752899],dd[data-v-4d752899]{margin:0}address[data-v-4d752899]{font-style:normal}img[data-v-4d752899],picture[data-v-4d752899]{max-width:100%;display:block}fieldset[data-v-4d752899]{padding:0;margin:0;border:0}.visually-hidden[data-v-4d752899]{position:absolute;display:block;width:1px;height:1px;margin:-1px;padding:0;border:0;clip:rect(0,0,0,0);overflow:hidden;white-space:nowrap}.icon-button[data-v-4d752899]{position:relative;display:inline-flex;align-items:center;justify-content:center;width:3rem;height:3rem;border-radius:100%;color:transparent;cursor:pointer}.icon-button .icon[data-v-4d752899],.icon-button e-icon[data-v-4d752899]{width:1.5rem;height:1.5rem}.icon-button .icon[data-v-4d752899],.icon-button e-icon[data-v-4d752899]{position:relative}.icon-button[data-v-4d752899]:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;border-radius:100%;border-width:2px;border-style:solid;transition:background-color var(--e-trs-duration-faster) var(--e-trs-easing-default),border-color var(--e-trs-duration-faster) var(--e-trs-easing-default),transform var(--e-trs-duration-faster) var(--e-trs-easing-default)}.icon-button[data-v-4d752899]:hover:not(:disabled):before{transform:scale(1.05)}.icon-button[data-v-4d752899]:active:before{transform:scale(1)}.icon-button[data-v-4d752899]:disabled{cursor:default}.icon-button[data-v-4d752899]:before{background-color:var(--e-c-primary-01-700);border-color:var(--e-c-primary-01-700)}.icon-button .icon[data-v-4d752899],.icon-button e-icon[data-v-4d752899]{--icon-fill-color: var(--e-c-mono-00)}.icon-button[data-v-4d752899]:hover:before{background-color:var(--e-c-secondary-01-900);border-color:var(--e-c-secondary-01-900)}.icon-button[data-v-4d752899]:active:before{background-color:var(--e-c-secondary-01-700);border-color:var(--e-c-secondary-01-700)}.icon-button[data-v-4d752899]:disabled:before{background-color:var(--e-c-mono-500);border-color:var(--e-c-mono-500)}.icon-button.outlined[data-v-4d752899]:before{background-color:transparent;border-color:var(--e-c-mono-500)}.icon-button.outlined .icon[data-v-4d752899],.icon-button.outlined e-icon[data-v-4d752899]{--icon-fill-color: var(--e-c-mono-900)}.icon-button.outlined[data-v-4d752899]:hover:before{border-color:var(--e-c-primary-01-200)}.icon-button.outlined[data-v-4d752899]:active:before{border-color:var(--e-c-primary-01-500)}.icon-button.outlined[data-v-4d752899]:disabled:before{border-color:var(--e-c-mono-500)}.icon-button.outlined:disabled .icon[data-v-4d752899],.icon-button.outlined:disabled e-icon[data-v-4d752899]{--icon-fill-color: var(--e-c-mono-500)}.icon-button.plain[data-v-4d752899]:before{background-color:transparent;border-color:transparent}.icon-button.plain .icon[data-v-4d752899],.icon-button.plain e-icon[data-v-4d752899]{--icon-fill-color: var(--e-c-primary-01-700)}.icon-button.plain[data-v-4d752899]:hover:before{background-color:var(--e-c-primary-01-50);border-color:var(--e-c-primary-01-50)}.icon-button.plain[data-v-4d752899]:active:before{background-color:var(--e-c-primary-01-100);border-color:var(--e-c-primary-01-100)}.icon-button.plain:disabled .icon[data-v-4d752899],.icon-button.plain:disabled e-icon[data-v-4d752899]{--icon-fill-color: var(--e-c-mono-500)}.icon-button.filled-inverted[data-v-4d752899]:before{background-color:var(--e-c-mono-00);border-color:var(--e-c-mono-00)}.icon-button.filled-inverted .icon[data-v-4d752899],.icon-button.filled-inverted e-icon[data-v-4d752899]{--icon-fill-color: var(--e-c-primary-01-700)}.icon-button.filled-inverted[data-v-4d752899]:hover:before{background-color:var(--e-c-primary-01-100);border-color:var(--e-c-primary-01-100)}.icon-button.filled-inverted:hover .icon[data-v-4d752899],.icon-button.filled-inverted:hover e-icon[data-v-4d752899]{--icon-fill-color: var(--e-c-secondary-01-700)}.icon-button.filled-inverted[data-v-4d752899]:active:before{background-color:var(--e-c-primary-01-200);border-color:var(--e-c-primary-01-200)}.icon-button.filled-inverted[data-v-4d752899]:disabled:before{background-color:var(--e-c-mono-500);border-color:var(--e-c-mono-500)}.icon-button.filled-inverted:disabled .icon[data-v-4d752899],.icon-button.filled-inverted:disabled e-icon[data-v-4d752899]{--icon-fill-color: var(--e-c-mono-700)}.icon-button.outlined-inverted[data-v-4d752899]:before{background-color:transparent;border-color:var(--e-c-mono-00)}.icon-button.outlined-inverted .icon[data-v-4d752899],.icon-button.outlined-inverted e-icon[data-v-4d752899]{--icon-fill-color: var(--e-c-mono-00)}.icon-button.outlined-inverted[data-v-4d752899]:hover:before{border-color:var(--e-c-primary-01-200)}.icon-button.outlined-inverted[data-v-4d752899]:active:before{border-color:var(--e-c-primary-01-500)}.icon-button.outlined-inverted[data-v-4d752899]:disabled:before{border-color:var(--e-c-mono-500)}.icon-button.outlined-inverted:disabled .icon[data-v-4d752899],.icon-button.outlined-inverted:disabled e-icon[data-v-4d752899]{--icon-fill-color: var(--e-c-mono-500)}.icon-button.plain-inverted[data-v-4d752899]:before{background-color:transparent;border-color:transparent}.icon-button.plain-inverted .icon[data-v-4d752899],.icon-button.plain-inverted e-icon[data-v-4d752899]{--icon-fill-color: var(--e-c-mono-00)}.icon-button.plain-inverted[data-v-4d752899]:hover:before{background-color:var(--e-c-secondary-01-700);border-color:var(--e-c-secondary-01-700)}.icon-button.plain-inverted[data-v-4d752899]:active:before{background-color:var(--e-c-secondary-01-900);border-color:var(--e-c-secondary-01-900)}.icon-button.plain-inverted:disabled .icon[data-v-4d752899],.icon-button.plain-inverted:disabled e-icon[data-v-4d752899]{--icon-fill-color: var(--e-c-mono-500)}