File tree 5 files changed +91
-0
lines changed
5 files changed +91
-0
lines changed Original file line number Diff line number Diff line change 1
1
# Upgrading to v4
2
2
3
+ - [ Upgrading to v4] ( #upgrading-to-v4 )
4
+ - [ Breaking changes] ( #breaking-changes )
5
+ - [ Support for NextJS] ( #support-for-nextjs )
6
+ - [ Default font] ( #default-font )
7
+ - [ Whitney font] ( #whitney-font )
8
+ - [ Frameworkless usage] ( #frameworkless-usage )
9
+ - [ Component changes] ( #component-changes )
10
+ - [ ` discord-inline-code ` ] ( #discord-inline-code )
11
+ - [ ` discord-code ` ] ( #discord-code )
12
+ - [ ` discord-header ` ] ( #discord-header )
13
+
3
14
In version 4.x of @skyra/discord-components-core , the library has been rewritten
4
15
from from [ StencilJS] ( https://stenciljs.com ) to [ Lit] . This means that this
5
16
library now offers proper
@@ -121,4 +132,11 @@ default to inline.
121
132
As mentioned above, ` discord-code ` will default to inline. To get multiline code
122
133
blocks set ` multiline="true" ` as property.
123
134
135
+ #### ` discord-header `
136
+
137
+ A new component called ` discord-header ` has been added. This is the component
138
+ that represents Discord markdown headers (lines starting with one of ` # ` , ` ## ` ,
139
+ or ` ### ` ). The maximum level is 3, just like it is for Discord. An error is
140
+ thrown if a level lower than 1 or higher than 3 is used.
141
+
124
142
[ Lit ] : https://lit.dev
Original file line number Diff line number Diff line change 25
25
"./discord-embed-field.js" : " ./dist/components/discord-embed-field/DiscordEmbedField.js" ,
26
26
"./discord-embed-fields.js" : " ./dist/components/discord-embed-fields/DiscordEmbedFields.js" ,
27
27
"./discord-embed-footer.js" : " ./dist/components/discord-embed-footer/DiscordEmbedFooter.js" ,
28
+ "./discord-header.js" : " ./dist/components/discord-header/DiscordHeader.js" ,
28
29
"./discord-invite.js" : " ./dist/components/discord-invite/DiscordInvite.js" ,
29
30
"./discord-italic.js" : " ./dist/components/discord-italic/DiscordItalic.js" ,
30
31
"./discord-link.js" : " ./dist/components/discord-link/DiscordLink.js" ,
60
61
" ./dist/components/discord-embed-field/DiscordEmbedField.js" ,
61
62
" ./dist/components/discord-embed-fields/DiscordEmbedFields.js" ,
62
63
" ./dist/components/discord-embed-footer/DiscordEmbedFooter.js" ,
64
+ " ./dist/components/discord-header/DiscordHeader.js" ,
63
65
" ./dist/components/discord-invite/DiscordInvite.js" ,
64
66
" ./dist/components/discord-italic/DiscordItalic.js" ,
65
67
" ./dist/components/discord-link/DiscordLink.js" ,
Original file line number Diff line number Diff line change
1
+ import { css , html , LitElement } from 'lit' ;
2
+ import { customElement , property } from 'lit/decorators.js' ;
3
+
4
+ @customElement ( 'discord-header' )
5
+ export class DiscordHeader extends LitElement {
6
+ public static override styles = css `
7
+ :host {
8
+ margin: 16px 0 8px;
9
+ font-weight: 700;
10
+ line-height: 1.375em;
11
+ }
12
+
13
+ :host([level='1']) {
14
+ font-size: 1.5rem;
15
+ }
16
+
17
+ :host([level='2']) {
18
+ font-size: 1.25rem;
19
+ }
20
+
21
+ :host([level='3']) {
22
+ font-size: 1rem;
23
+ }
24
+
25
+ :host([level='1']):first-child(),
26
+ :host([level='2']):first-child() {
27
+ margin-top: 8px;
28
+ }
29
+
30
+ :host([level='3']):first-child() {
31
+ margin-top: 4px;
32
+ }
33
+ ` ;
34
+
35
+ /**
36
+ * The header level, this should be a number between 1 and 3 (inclusive).
37
+ * If a number outside of this range is provided, an error is thrown.
38
+ */
39
+ @property ( { type : Number , reflect : true } )
40
+ public accessor level : 1 | 2 | 3 = 1 ;
41
+
42
+ public checkLevel ( ) {
43
+ if ( this . level < 1 || this . level > 3 ) {
44
+ throw new RangeError ( 'The level property must be a number between 1 and 3 (inclusive)' ) ;
45
+ }
46
+ }
47
+
48
+ protected override render ( ) {
49
+ this . checkLevel ( ) ;
50
+
51
+ switch ( this . level ) {
52
+ case 1 : {
53
+ return html `< h1 > < slot > </ slot > </ h1 > ` ;
54
+ }
55
+ case 2 : {
56
+ return html `< h2 > < slot > </ slot > </ h2 > ` ;
57
+ }
58
+ case 3 : {
59
+ return html `< h3 > < slot > </ slot > </ h3 > ` ;
60
+ }
61
+ }
62
+ }
63
+ }
64
+
65
+ declare global {
66
+ interface HTMLElementTagNameMap {
67
+ 'discord-header' : DiscordHeader ;
68
+ }
69
+ }
Original file line number Diff line number Diff line change @@ -16,6 +16,7 @@ export { DiscordEmbedDescription } from './components/discord-embed-description/
16
16
export { DiscordEmbedField } from './components/discord-embed-field/DiscordEmbedField.js' ;
17
17
export { DiscordEmbedFields } from './components/discord-embed-fields/DiscordEmbedFields.js' ;
18
18
export { DiscordEmbedFooter } from './components/discord-embed-footer/DiscordEmbedFooter.js' ;
19
+ export { DiscordHeader } from './components/discord-header/DiscordHeader.js' ;
19
20
export { DiscordInvite } from './components/discord-invite/DiscordInvite.js' ;
20
21
export { DiscordItalic } from './components/discord-italic/DiscordItalic.js' ;
21
22
export { DiscordLink } from './components/discord-link/DiscordLink.js' ;
Original file line number Diff line number Diff line change @@ -17,6 +17,7 @@ export const DiscordEmbedDescription = createReactComponent('discord-embed-descr
17
17
export const DiscordEmbedField = createReactComponent ( 'discord-embed-field' , ReactComponents . DiscordEmbedField ) ;
18
18
export const DiscordEmbedFields = createReactComponent ( 'discord-embed-fields' , ReactComponents . DiscordEmbedFields ) ;
19
19
export const DiscordEmbedFooter = createReactComponent ( 'discord-embed-footer' , ReactComponents . DiscordEmbedFooter ) ;
20
+ export const DiscordHeader = createReactComponent ( 'discord-header' , ReactComponents . DiscordHeader ) ;
20
21
export const DiscordInvite = createReactComponent ( 'discord-invite' , ReactComponents . DiscordInvite ) ;
21
22
export const DiscordItalic = createReactComponent ( 'discord-italic' , ReactComponents . DiscordItalic ) ;
22
23
export const DiscordLink = createReactComponent ( 'discord-link' , ReactComponents . DiscordLink ) ;
You can’t perform that action at this time.
0 commit comments