@everchron/ec-shards 4.2.0 → 4.3.0

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 (65) hide show
  1. package/dist/ec-shards.common.js +2562 -1465
  2. package/dist/ec-shards.common.js.map +1 -1
  3. package/dist/ec-shards.css +1 -1
  4. package/dist/ec-shards.umd.js +2562 -1465
  5. package/dist/ec-shards.umd.js.map +1 -1
  6. package/dist/ec-shards.umd.min.js +2 -2
  7. package/dist/ec-shards.umd.min.js.map +1 -1
  8. package/dist/img/EU.d180ac2d.svg +1 -0
  9. package/dist/img/login-email-mfa.33936706.svg +1 -0
  10. package/dist/img/login-email.4b81db3a.svg +1 -0
  11. package/dist/img/login-sso-azure.a49f3fe4.svg +1 -0
  12. package/dist/img/login-sso-okta.55de1bbd.svg +1 -0
  13. package/package.json +4 -2
  14. package/src/assets/icons/login-key.svg +7 -0
  15. package/src/assets/images/fill-icons/login-email-mfa.svg +1 -0
  16. package/src/assets/images/fill-icons/login-email.svg +1 -0
  17. package/src/assets/images/fill-icons/login-sso-azure.svg +1 -0
  18. package/src/assets/images/fill-icons/login-sso-okta.svg +1 -0
  19. package/src/assets/images/flags/EU.svg +1 -0
  20. package/src/components/alert/alert.vue +2 -2
  21. package/src/components/breadcrumb-button/breadcrumb-button.vue +2 -2
  22. package/src/components/button/button.vue +2 -2
  23. package/src/components/button-context/button-context.vue +1 -1
  24. package/src/components/button-more/button-more.vue +1 -1
  25. package/src/components/button-table/button-table.vue +1 -1
  26. package/src/components/button-toolbar/button-toolbar.vue +4 -4
  27. package/src/components/button-toolbar-icon/button-toolbar-icon.vue +1 -1
  28. package/src/components/collection-control/collection-control.vue +1 -1
  29. package/src/components/context-menu/context-menu.vue +215 -0
  30. package/src/components/data-card/data-card.vue +1 -1
  31. package/src/components/data-grid/data-grid-row.vue +25 -1
  32. package/src/components/dialog/dialog.vue +24 -46
  33. package/src/components/document-state/document-state.vue +1 -1
  34. package/src/components/empty-state/empty-state.vue +1 -1
  35. package/src/components/excerpt-snippet/excerpt-snippet.vue +1 -1
  36. package/src/components/fill-icon/fill-icon.vue +59 -0
  37. package/src/components/flag/flag.vue +5 -0
  38. package/src/components/index.js +4 -0
  39. package/src/components/info-tooltip/info-tooltip.vue +1 -1
  40. package/src/components/input-addon/input-addon.vue +1 -1
  41. package/src/components/input-clear/input-clear.vue +1 -1
  42. package/src/components/input-search/input-search.vue +1 -1
  43. package/src/components/multiselect-option/multiselect-option.vue +1 -1
  44. package/src/components/multiselect-search-token/multiselect-search-token.vue +2 -2
  45. package/src/components/multiselect-token/multiselect-token.vue +1 -1
  46. package/src/components/overlay/overlay.vue +1 -1
  47. package/src/components/pagination/pagination.vue +138 -105
  48. package/src/components/party-entry/party-entry.vue +2 -2
  49. package/src/components/popover-header/popover-header.vue +1 -1
  50. package/src/components/segment/segment.vue +1 -1
  51. package/src/components/select/select.vue +24 -3
  52. package/src/components/separator/separator.vue +93 -0
  53. package/src/components/sequence-map-button/sequence-map-button.vue +1 -1
  54. package/src/components/tab-button/tab-button.vue +16 -5
  55. package/src/components/transcript-state/transcript-state.vue +1 -1
  56. package/src/components/tree-list-item/tree-list-item.vue +1 -1
  57. package/src/stories/Changelog.stories.mdx +29 -0
  58. package/src/stories/context-menu/context-menu.stories.js +69 -0
  59. package/src/stories/fill-icon/fill-icon.stories.js +24 -0
  60. package/src/stories/flag/flag.stories.js +6 -1
  61. package/src/stories/pagination/pagination.stories.js +0 -15
  62. package/src/stories/select/select.stories.js +16 -0
  63. package/src/stories/separator/.DS_Store +0 -0
  64. package/src/stories/separator/separator.stories.js +33 -0
  65. package/src/components/tiptap/tiptap.vue +0 -246
@@ -0,0 +1,93 @@
1
+ <template>
2
+ <div class="ecs-separator" :class="classes" :style="{margin: marginStyles, width: width, height: height}" />
3
+ </template>
4
+
5
+ <script>
6
+ export default {
7
+ props: {
8
+ /** Determines if the separator line is horinzontally or vertically shown. */
9
+ type: {
10
+ type: String,
11
+ default: 'horizontal',
12
+ validator: v => ['horizontal', 'vertical'].includes(v)
13
+ },
14
+ /** Determines the color strength of the line. */
15
+ strength: {
16
+ type: String,
17
+ default: 'medium',
18
+ validator: v => ['soft', 'medium', 'strong'].includes(v)
19
+ },
20
+ /** Determines to margin (top/bottom for horizontal, left/right for vertical). If a `Number` is passed, the margin will used for both top/bottom or left/right. If an `Array` is passed (eg. `[8, 16]`), you can set individual margins for each side (CSS shorthand syntax). */
21
+ margin: {
22
+ type: [Number, Array],
23
+ default: 0
24
+ },
25
+ /** Determines the width of the separator. Any valid css (px, %) value possible. */
26
+ width: {
27
+ type: String
28
+ },
29
+ /** Determines the height of the separator. Any valid css (px, %) value possible. Vertical separators typically require a pixel value height. */
30
+ height: {
31
+ type: String
32
+ }
33
+ },
34
+
35
+ computed: {
36
+ classes(){
37
+ return 'ecs-separator-' + this.type + ' ecs-separator-' + this.strength
38
+ },
39
+
40
+ marginStyles(){
41
+ if(typeof(this.margin) === 'number') {
42
+ if(this.type === 'horizontal')
43
+ return this.margin + 'px 0 ' + this.margin + 'px 0'
44
+ else
45
+ return '0 ' + this.margin + 'px 0 ' + this.margin + 'px'
46
+ } else if(typeof(this.margin) === 'object') {
47
+ const iterator = this.margin.values()
48
+ let margins
49
+ let iteration = 0
50
+ for (const value of iterator) {
51
+ if(iteration == 0)
52
+ margins = value + 'px '
53
+ else
54
+ margins = margins + value + 'px '
55
+ iteration++
56
+ }
57
+ return margins
58
+ }
59
+ }
60
+ }
61
+ };
62
+ </script>
63
+
64
+ <style lang="scss" scoped>
65
+ @import "../../tokens/build/scss/tokens.scss";
66
+
67
+ .ecs-separator{
68
+ border-radius: 1px;
69
+
70
+ &-soft{
71
+ background-color: $color-gray-2;
72
+ }
73
+
74
+ &-medium{
75
+ background-color: $color-gray-3;
76
+ }
77
+
78
+ &-strong{
79
+ background-color: $color-gray-4;
80
+ }
81
+
82
+ &-horizontal{
83
+ width: 100%;
84
+ height: 1px;
85
+ }
86
+
87
+ &-vertical{
88
+ height: 100%;
89
+ width: 1px;
90
+ }
91
+ }
92
+ </style>
93
+
@@ -4,7 +4,7 @@
4
4
  :class="[active ? 'active' : '', loading ? 'loading' : '', disabled ? 'disabled' : '', completed ? 'completed' : '']">
5
5
  <span class="count">
6
6
  {{ step }}
7
- <ecs-icon v-if="loading" type="loading" class="loading" width="34" height="34" />
7
+ <ecs-icon v-if="loading" type="loading" class="loading" size="34" />
8
8
  </span>
9
9
  <slot></slot>
10
10
  <div class="step-indicator" />
@@ -8,7 +8,7 @@
8
8
  @click="handleClick">
9
9
 
10
10
  <ecs-icon v-if="icon" :type="icon" />
11
- <ecs-icon v-if="icon && sticker" :type="`sticker-${sticker}`" class="sticker" width="16" height="16" />
11
+ <ecs-icon v-if="icon && sticker" :type="`sticker-${sticker}`" class="sticker" size="16" />
12
12
  <slot></slot>
13
13
  <span v-if="shortcut" class="shortcut">{{ shortcut }}</span>
14
14
  <span class="hover" />
@@ -316,10 +316,10 @@
316
316
  padding-left: 1px;
317
317
 
318
318
  .ecs-tab-button{
319
- border-radius: 0 0 3px 3px;
319
+ border-radius: 0 0 $border-radius-small $border-radius-small;
320
320
  color: $color-gray-14;
321
321
  height: 38px;
322
- padding: 0 20px;
322
+ padding: 0 $spacing-25;
323
323
  text-align: center;
324
324
  font-size: $type-scale-3-font-size;
325
325
  line-height: 26px;
@@ -330,6 +330,11 @@
330
330
  border-top-color: $color-gray-4;
331
331
  position: relative;
332
332
  margin-left: -1px;
333
+ transition: .2s background-color, .2s border-color, .2s color;
334
+
335
+ &:hover{
336
+ background-color: $color-gray-3;
337
+ }
333
338
 
334
339
  &:before{
335
340
  content: "";
@@ -338,7 +343,7 @@
338
343
  background: $color-gray-4;
339
344
  border-radius: 1px;
340
345
  position: absolute;
341
- right: 0;
346
+ left: 0;
342
347
  }
343
348
 
344
349
  &:after{
@@ -354,18 +359,24 @@
354
359
  &.show{
355
360
  color: $color-blue-10;
356
361
  font-weight: $font-weight-medium;
362
+ letter-spacing: -.015em;
357
363
  background: #FFFFFF;
358
364
  border: 1px solid $color-gray-4;
359
365
  border-top-color: #FFF;
366
+ z-index: 1;
360
367
 
361
368
  &:after{
362
369
  transform: scale(1);
363
370
  opacity: 1;
364
371
  }
372
+
373
+ + .ecs-tab-button:before{
374
+ opacity: 0;
375
+ }
365
376
  }
366
377
 
367
378
  &.show:before,
368
- &:last-child:before{
379
+ &:first-child:before{
369
380
  opacity: 0;
370
381
  }
371
382
  }
@@ -5,7 +5,7 @@
5
5
  <div v-if="state =='repairing'" class="repairing" />
6
6
  <div v-if="state =='corrupted'" class="corrupted" />
7
7
  <span v-if="state == 'loading'" class="loading">
8
- <ecs-icon type="loading" width="18px" height="18px" color="#202127" />
8
+ <ecs-icon type="loading" size="18px" color="#202127" />
9
9
  </span>
10
10
  </div>
11
11
  </template>
@@ -15,7 +15,7 @@
15
15
  :collapsed="!isVisible"
16
16
  @click="toggleCollapse" />
17
17
 
18
- <ecs-icon v-if="icon" :type="icon" :color="iconColor" :width="iconSize" :height="iconSize" />
18
+ <ecs-icon v-if="icon" :type="icon" :color="iconColor" :size="iconSize" />
19
19
 
20
20
  <div v-if="$slots.control" class="ecs-tree-view-entry-control">
21
21
  <!-- @slot Slot for a selection control, such as a checkbox or radiobutton. -->
@@ -6,6 +6,35 @@ import { Meta } from '@storybook/addon-docs/blocks';
6
6
  Changelog
7
7
  </h1>
8
8
 
9
+ ## Version 3.3.0 (12 January 2023)
10
+
11
+ ### Features
12
+
13
+ - Added new EcsFillIcon component
14
+ - Added `login-key` icon
15
+ - Added EU flag icon
16
+ - Added new `placeholder` prop support for EcsSelect component
17
+ - Added new EcsSeparator component
18
+
19
+ ## Version 3.2.0 (11 January 2023)
20
+
21
+ ### Fixes
22
+
23
+ Reverted all EcsPagination updates and moved these changes to the @next branch, until infinite scroll feature can be implemented. This means 3.2.0 can be used again as a stable release for current application development.
24
+
25
+ ## Version 3.1.5 (undefined)
26
+
27
+ ### Features
28
+
29
+ - Added item range indicator to EcsPagination component
30
+
31
+ ### Fixes
32
+
33
+ - Overwrite margins of dialog
34
+ - Only add EcsDialog to the DOM when it's being shown
35
+ - Fix subtle layout shift on EcsTabButton of type `sheet`.
36
+ - Replaced soon to be deprecated `width` and `height` props of EcsIcon with `size`.
37
+
9
38
  ## Version 3.1.2 (15 December 2022)
10
39
 
11
40
  ### Fixes
@@ -0,0 +1,69 @@
1
+ import EcsContextMenu from '@components/context-menu/context-menu';
2
+ import EcsDataGrid from '@components/data-grid/data-grid';
3
+ import EcsDataGridGroup from '@components/data-grid/data-grid-group';
4
+ import EcsDataGridRow from '@components/data-grid/data-grid-row';
5
+ import EcsDataGridHeadCell from '@components/data-grid/data-grid-head-cell';
6
+ import EcsDataGridCell from '@components/data-grid/data-grid-cell';
7
+
8
+ export default {
9
+ title: 'Data/Context Menu',
10
+ component: EcsContextMenu
11
+ }
12
+
13
+ export const contextMenu = () => ({
14
+ components: { EcsContextMenu, EcsDataGrid, EcsDataGridGroup, EcsDataGridRow, EcsDataGridHeadCell, EcsDataGridCell },
15
+ template: `<div style="width: 100%;">
16
+ <ecs-data-grid :striped="false">
17
+ <template slot="head">
18
+ <ecs-data-grid-head-cell name="First" :width="200" />
19
+ <ecs-data-grid-head-cell name="Second" :width="200" />
20
+ <ecs-data-grid-head-cell name="Third" :width="200" />
21
+ <ecs-data-grid-head-cell name="Fourth" :width="200" />
22
+ </template>
23
+
24
+ <ecs-data-grid-row v-for="index in 6" :key="index" mouse-event="contextmenu" @click="(e) => handleClick(e, index)">
25
+ <ecs-data-grid-cell column="first" :width="200">Right click me</ecs-data-grid-cell>
26
+ <ecs-data-grid-cell column="second" :width="200">Right click me</ecs-data-grid-cell>
27
+ <ecs-data-grid-cell column="third" :width="200">Right click me</ecs-data-grid-cell>
28
+ <ecs-data-grid-cell column="fourth" :width="200">Right click me</ecs-data-grid-cell>
29
+ </ecs-data-grid-row>
30
+ </ecs-data-grid>
31
+
32
+ <ecs-context-menu
33
+ element-id="rowMenu"
34
+ ref="contextMenu"
35
+ :options="options"
36
+ ></ecs-context-menu>
37
+ </div>`,
38
+ data() {
39
+ return {
40
+ options: [
41
+ {
42
+ name: 'Duplicate',
43
+ slug: 'duplicate',
44
+ icon: 'evidence'
45
+ },
46
+ {
47
+ name: 'Edit',
48
+ slug: 'edit',
49
+ icon: 'edit',
50
+ disabled: true
51
+ },
52
+ {
53
+ type: 'divider',
54
+ },
55
+ {
56
+ name: 'Delete',
57
+ slug: 'delete',
58
+ type: 'danger',
59
+ icon: 'delete'
60
+ }
61
+ ],
62
+ }
63
+ },
64
+ methods: {
65
+ handleClick(event, item) {
66
+ this.$refs.contextMenu.showMenu(event, item)
67
+ }
68
+ },
69
+ })
@@ -0,0 +1,24 @@
1
+ import EcsFillIcon from '@components/fill-icon/fill-icon';
2
+
3
+ export default {
4
+ title: 'Icons/Fill Icon',
5
+ component: EcsFillIcon
6
+ };
7
+
8
+ export const fillIcon = () => ({
9
+ components: { EcsFillIcon },
10
+ template: `<main>
11
+ <ecs-fill-icon type="login-sso-azure" />
12
+ <ecs-fill-icon type="login-sso-okta" />
13
+ <ecs-fill-icon type="login-email" />
14
+ <ecs-fill-icon type="login-email-mfa" :width="23" />
15
+ </main>`,
16
+ });
17
+
18
+ export const fillIconSizes = () => ({
19
+ components: { EcsFillIcon },
20
+ template: `<main>
21
+ <ecs-fill-icon type="login-sso-azure" :width="40" />
22
+ <ecs-fill-icon type="login-sso-azure" :height="40" :width="40" />
23
+ </main>`,
24
+ });
@@ -7,5 +7,10 @@ export default {
7
7
 
8
8
  export const flag = () => ({
9
9
  components: { EcsFlag },
10
- template: `<ecs-flag code="us" />`,
10
+ template: `<main>
11
+ <ecs-flag code="us" />
12
+ <ecs-flag code="eu" />
13
+ <ecs-flag code="gb" />
14
+ <ecs-flag code="au" />
15
+ </main>`,
11
16
  });
@@ -35,18 +35,3 @@ export const tabPagination = () => ({
35
35
  </ecs-pagination>
36
36
  </div>`,
37
37
  });
38
-
39
- export const infiniteScroll = () => ({
40
- components: { EcsPagination, EcsTabBar, EcsTabButton },
41
- template: `<div style="display:flex;flex-direction:column;height: 200px;justify-content: flex-end;">
42
- <ecs-pagination type="infinite" :current-page="2" :total-pages="10" loading>
43
- <template slot="tabs">
44
- <ecs-tab-bar type="sheet">
45
- <ecs-tab-button show>Settings</ecs-tab-button>
46
- <ecs-tab-button>Calendar</ecs-tab-button>
47
- <ecs-tab-button>Versions</ecs-tab-button>
48
- </ecs-tab-bar>
49
- </template>
50
- </ecs-pagination>
51
- </div>`,
52
- });
@@ -89,3 +89,19 @@ export const selectNaked = () => ({
89
89
  </ecs-select>
90
90
  </div>`,
91
91
  });
92
+
93
+ export const selectPlaceholders = () => ({
94
+ components: { EcsSelect },
95
+ template: `<div>
96
+ <ecs-select placeholder="Placeholder" class="mb-4">
97
+ <option value="admin">Admin</option>
98
+ <option value="basic">Basic</option>
99
+ <option value="guest">Guest</option>
100
+ </ecs-select>
101
+ <ecs-select placeholder="Placeholder" subtle>
102
+ <option value="admin">Admin</option>
103
+ <option value="basic">Basic</option>
104
+ <option value="guest">Guest</option>
105
+ </ecs-select>
106
+ </div>`,
107
+ });
Binary file
@@ -0,0 +1,33 @@
1
+ import EcsSeparator from '@components/separator/separator';
2
+
3
+ export default {
4
+ title: 'Layout/Separator',
5
+ component: EcsSeparator
6
+ };
7
+
8
+ export const separator = () => ({
9
+ components: { EcsSeparator },
10
+ template: `<div>
11
+ <ecs-separator :margin="20" />
12
+ <ecs-separator type="vertical" height="24px" />
13
+ </div>`,
14
+ });
15
+
16
+ export const separatorStrengths = () => ({
17
+ components: { EcsSeparator },
18
+ template: `<div>
19
+ <ecs-separator strength="soft" :margin="20" />
20
+ <ecs-separator strength="medium" :margin="20" />
21
+ <ecs-separator strength="strong" :margin="20" />
22
+ </div>`,
23
+ });
24
+
25
+ export const separatorMargins = () => ({
26
+ components: { EcsSeparator },
27
+ template: `<div>
28
+ <ecs-separator :margin="20" />
29
+ <ecs-separator type="vertical" :margin="20" height="24px" />
30
+ <ecs-separator :margin="[20, 40]" />
31
+ <ecs-separator type="vertical" :margin="[8, 16, 12, 20]" height="24px" />
32
+ </div>`,
33
+ });
@@ -1,246 +0,0 @@
1
- <template>
2
- <div class="ecs-tiptap">
3
- <bubble-menu
4
- class="ecs-bubble-menu"
5
- :tippy-options="{ duration: 100 }"
6
- :editor="editor"
7
- v-if="editor"
8
- >
9
- <button @click="editor.chain().focus().toggleBold().run()" :class="{ 'is-active': editor.isActive('bold') }" title="Bold">
10
- <ecs-icon type="format-bold" width="26px" height="26px" />
11
- </button>
12
- <button @click="editor.chain().focus().toggleItalic().run()" :class="{ 'is-active': editor.isActive('italic') }" title="Italic">
13
- <ecs-icon type="format-italic" width="26px" height="26px" />
14
- </button>
15
- <button @click="editor.chain().focus().toggleUnderline().run()" :class="{ 'is-active': editor.isActive('underline') }" title="Underline">
16
- <ecs-icon type="format-underline" width="26px" height="26px" />
17
- </button>
18
- <button @click="setLink" :class="{ 'is-active': editor.isActive('link') }" title="Link">
19
- <ecs-icon type="link" width="26px" height="26px" />
20
- </button>
21
- <button @click="editor.chain().focus().unsetLink().run()" v-if="editor.isActive('link')" title="Remove Link">
22
- <ecs-icon type="link-remove" width="26px" height="26px" />
23
- </button>
24
- <button @click="editor.chain().focus().toggleBlockquote().run()" :class="{ 'is-active': editor.isActive('blockquote') }" title="Quote">
25
- <ecs-icon type="format-blockquote" width="26px" height="26px" />
26
- </button>
27
- <button @click="editor.chain().focus().toggleOrderedList().run()" :class="{ 'is-active': editor.isActive('orderedList') }" title="Ordered List">
28
- <ecs-icon type="format-ol" width="26px" height="26px" />
29
- </button>
30
- <button @click="editor.chain().focus().toggleBulletList().run()" :class="{ 'is-active': editor.isActive('bulletList') }" title="Bullet List">
31
- <ecs-icon type="format-ul" width="26px" height="26px" />
32
- </button>
33
- </bubble-menu>
34
-
35
- <editor-content :editor="editor" />
36
- </div>
37
- </template>
38
-
39
- <script>
40
- import EcsIcon from '../icon/icon'
41
-
42
- import {
43
- Editor,
44
- EditorContent,
45
- BubbleMenu,
46
- FloatingMenu,
47
- } from '@tiptap/vue-2'
48
-
49
- import Underline from '@tiptap/extension-underline'
50
- import Placeholder from '@tiptap/extension-placeholder'
51
- import Link from '@tiptap/extension-link'
52
- import Blockquote from '@tiptap/extension-blockquote'
53
- import OrderedList from '@tiptap/extension-ordered-list'
54
- import BulletList from '@tiptap/extension-bullet-list'
55
- import ListItem from '@tiptap/extension-list-item'
56
-
57
- import { defaultExtensions } from '@tiptap/starter-kit'
58
-
59
- export default {
60
- components: {
61
- EcsIcon,
62
- EditorContent,
63
- BubbleMenu,
64
- FloatingMenu
65
- },
66
-
67
- props: {
68
- placeholder: {
69
- type: String,
70
- default: 'Write something…'
71
- }
72
- },
73
-
74
- data() {
75
- return {
76
- editor: null,
77
- }
78
- },
79
-
80
- mounted() {
81
- this.editor = new Editor({
82
- extensions: [
83
- ...defaultExtensions(),
84
- Underline,
85
- Placeholder.configure({
86
- placeholder: this.placeholder,
87
- }),
88
- Link,
89
- Blockquote,
90
- OrderedList,
91
- BulletList,
92
- ListItem,
93
- ],
94
- content: ``
95
- })
96
- },
97
-
98
- methods: {
99
- setLink() {
100
- const url = window.prompt('Enter URL')
101
- this.editor.chain().focus().setLink({ href: url }).run()
102
- },
103
- },
104
-
105
- beforeDestroy() {
106
- this.editor.destroy()
107
- }
108
- }
109
- </script>
110
-
111
- <style lang="scss">
112
- @import "../../tokens/build/scss/tokens.scss";
113
- @import "../mixins/svg-uri";
114
-
115
- .ProseMirror{
116
- font-size: $type-scale-3-font-size;
117
- line-height: 1.4em;
118
- padding: 10px;
119
-
120
- > *:first-child{
121
- margin-top: 0;
122
- }
123
-
124
- > *:last-child{
125
- margin-bottom: 0;
126
- }
127
-
128
- p{
129
- margin: 1em 0;
130
- }
131
-
132
- i{
133
- font-style: italic;
134
- }
135
-
136
- u{
137
- text-decoration: underline;
138
- }
139
-
140
- b, strong{
141
- font-weight: 600;
142
- }
143
-
144
- ul{
145
- list-style-type: disc;
146
- padding-left: 16px;
147
- margin: 1em 0;
148
- }
149
-
150
- ol{
151
- padding-left: 16px;
152
- margin: 1em 0;
153
- }
154
-
155
- ul li, ol li{
156
- > *:first-child{
157
- margin-top: 0;
158
- }
159
-
160
- > *:last-child{
161
- margin-bottom: 0;
162
- }
163
- }
164
-
165
- blockquote{
166
- border-left: 3px solid rgba($color-gray-6, .4);
167
- color: $color-gray-10;
168
- margin: 1em 0;
169
- padding-left: 16px;
170
- }
171
-
172
- a{
173
- color: $color-blue-10;
174
- text-decoration: none;
175
- transition: .2s;
176
-
177
- &:after{
178
- opacity: .7;
179
- transition: .2s;
180
- }
181
-
182
- &:hover{
183
- color: darken($color-blue-10, 5%);
184
-
185
- &:after{
186
- opacity: 1;
187
- }
188
- }
189
-
190
- &[href*="//"]:not([href*="everchron.com"]):after,
191
- &[href*="//"]:not([href*="everchron.me"]):after,
192
- &[href*="//"]:not([href*="everchron.co.uk"]):after,
193
- &[href*="//"]:not([href*="everchron.com.au"]):after,
194
- &[href*="//"]:not([href*="everchron.wtf"]):after{
195
- content: "";
196
- background: svg-uri('<svg xmlns="http://www.w3.org/2000/svg" width="8" height="8" viewBox="0 0 8 8"><path fill="#858E9E" d="M7.625,3.5 C7.524,3.5 7.434,3.459 7.366,3.395 C7.364,3.393 7.361,3.393 7.359,3.391 L6.427,2.458 L4.067,4.818 C3.823,5.061 3.427,5.061 3.183,4.818 C2.939,4.574 2.939,4.178 3.183,3.934 L5.542,1.575 L4.609,0.641 C4.607,0.639 4.607,0.636 4.605,0.634 C4.541,0.566 4.5,0.476 4.5,0.375 C4.5,0.168 4.668,0 4.875,0 L7.5,0 C7.776,0 8,0.224 8,0.5 L8,3.125 C8,3.332 7.832,3.5 7.625,3.5 Z M1,2.25 L1,6.75 C1,6.888 1.112,7 1.25,7 L5.75,7 C5.888,7 6,6.888 6,6.75 L6,4 L7,5 L7,7 C7,7.553 6.553,8 6,8 L1,8 C0.448,8 0,7.553 0,7 L0,2 C0,1.448 0.448,1 1,1 L3,1 L4,2 L1.25,2 C1.112,2 1,2.112 1,2.25 Z"/></svg>');
197
- width: 8px;
198
- display: inline-block;
199
- height: 8px;
200
- margin-left: 4px;
201
- }
202
- }
203
- }
204
-
205
- .ProseMirror p.is-editor-empty:first-child::before {
206
- content: attr(data-placeholder);
207
- float: left;
208
- color: $color-gray-6;
209
- pointer-events: none;
210
- height: 0;
211
- }
212
-
213
- .ecs-bubble-menu {
214
- display: flex;
215
- align-items: center;
216
- background-color: rgba($color-gray-13, .97);
217
- padding: 4px;
218
- border-radius: $border-radius-medium;
219
-
220
- button {
221
- border: none;
222
- background: none;
223
- color: #FFF;
224
- opacity: 0.6;
225
- transition: .2s;
226
- padding: 0;
227
- display: flex;
228
- border-radius: $border-radius-small;
229
- margin-right: 4px;
230
-
231
- &:last-child{
232
- margin-right: 0;
233
- }
234
-
235
- &:hover{
236
- opacity: .8;
237
- background: rgba(#000, .5);
238
- }
239
-
240
- &.is-active{
241
- opacity: 1;
242
- background: rgba(#000, .5);
243
- }
244
- }
245
- }
246
- </style>