|
1 | 1 | <template> |
2 | | - <img |
3 | | - width="240" |
4 | | - :src="icons[props.language]" |
5 | | - alt="" /> |
6 | 2 | <!-- Code Block Component --> |
7 | 3 | <div |
8 | 4 | :id="props.id" |
9 | 5 | :class="`vuejs-code-block ${props.class} ${props.theme}`"> |
10 | 6 | <component |
11 | 7 | ref="codeBlock" |
12 | 8 | :is="props.asElement || 'pre'" |
13 | | - v-bind="$attrs"> |
| 9 | + v-bind="$attrs" |
| 10 | + :style="props.showHeader ? '' : 'padding-top: 1rem'"> |
14 | 11 | <!-- Header Component --> |
15 | | - <div class=""></div> |
| 12 | + <div |
| 13 | + v-if="props.showHeader" |
| 14 | + class="header"> |
| 15 | + <div class="file-name"> |
| 16 | + <img |
| 17 | + width="18" |
| 18 | + :src="icons[props.language]" |
| 19 | + alt="" /> |
| 20 | + <p>{{ props.fileName }}</p> |
| 21 | + </div> |
| 22 | + <div class="copy"></div> |
| 23 | + </div> |
16 | 24 |
|
17 | 25 | <!-- Line Component --> |
18 | 26 | <slot> |
|
57 | 65 | import { addThemeToCodeBlock, themes } from '../themes'; |
58 | 66 |
|
59 | 67 | const props = defineProps(codeBlockProps()); |
60 | | - const langIcon = ref(`../icons/${props.language}.svg`); |
61 | 68 |
|
62 | 69 | const codeBlock: Ref<HTMLDivElement | null> = ref(null); |
63 | 70 |
|
|
98 | 105 | } |
99 | 106 |
|
100 | 107 | .vuejs-code-block pre { |
101 | | - padding: 1rem; |
| 108 | + padding-bottom: 1rem; |
102 | 109 | border-radius: 0.25rem; |
103 | 110 | border: 0.5px solid #888; |
104 | 111 | } |
105 | 112 |
|
| 113 | + .vuejs-code-block pre .header { |
| 114 | + padding: 0.5rem 1rem; |
| 115 | + display: flex; |
| 116 | + align-items: center; |
| 117 | + justify-content: space-between; |
| 118 | + margin-bottom: 1rem; |
| 119 | + background-color: rgba(0, 0, 0, 0.001); |
| 120 | + backdrop-filter: brightness(0.9); |
| 121 | + } |
| 122 | +
|
| 123 | + .vuejs-code-block pre .header .file-name { |
| 124 | + border-radius: 0.25rem; |
| 125 | + display: flex; |
| 126 | + gap: 0.5rem; |
| 127 | + padding: 0.5rem 5rem; |
| 128 | + padding-left: 0.25rem; |
| 129 | + } |
| 130 | +
|
| 131 | + .vuejs-code-block pre .header .file-name p { |
| 132 | + font-size: 1rem; |
| 133 | + } |
| 134 | +
|
106 | 135 | .vuejs-code-block pre .line { |
| 136 | + padding: 0 1rem; |
| 137 | +
|
107 | 138 | display: flex; |
108 | 139 | align-items: center; |
| 140 | + font-size: 1rem; |
109 | 141 | } |
110 | 142 |
|
111 | 143 | .vuejs-code-block pre .line-number { |
112 | 144 | color: #888; |
113 | 145 | user-select: none; |
114 | | - font-size: 0.8rem; |
| 146 | + font-size: 0.9rem; |
115 | 147 | padding: 0.1rem 1rem 0.1rem 0; |
116 | 148 | } |
117 | 149 | </style> |
0 commit comments