@subroh0508/marp-theme-canvas 0.0.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.
- package/LICENSE +21 -0
- package/css/black-canvas.css +540 -0
- package/css/white-canvas.css +540 -0
- package/package.json +73 -0
- package/scss/CLAUDE.md +59 -0
- package/scss/_index.scss +27 -0
- package/scss/black-canvas.scss +233 -0
- package/scss/component/CLAUDE.md +55 -0
- package/scss/component/_a.scss +13 -0
- package/scss/component/_blockquote.scss +36 -0
- package/scss/component/_code.scss +31 -0
- package/scss/component/_columns.scss +56 -0
- package/scss/component/_footer.scss +12 -0
- package/scss/component/_header.scss +12 -0
- package/scss/component/_heading.scss +71 -0
- package/scss/component/_index.scss +23 -0
- package/scss/component/_pagination.scss +14 -0
- package/scss/component/_section.scss +43 -0
- package/scss/component/_table.scss +30 -0
- package/scss/component/_text-decorator.scss +17 -0
- package/scss/component/prettylights/CLAUDE.md +41 -0
- package/scss/component/prettylights/_base.scss +128 -0
- package/scss/component/prettylights/_dark.scss +41 -0
- package/scss/component/prettylights/_index.scss +13 -0
- package/scss/component/prettylights/_light.scss +41 -0
- package/scss/page/CLAUDE.md +74 -0
- package/scss/page/_agenda.scss +38 -0
- package/scss/page/_display.scss +39 -0
- package/scss/page/_index.scss +14 -0
- package/scss/page/_section.scss +20 -0
- package/scss/page/_title.scss +38 -0
- package/scss/page/_toc.scss +15 -0
- package/scss/white-canvas.scss +233 -0
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
// ===== _base.scss =====
|
|
2
|
+
// シンタックスハイライト用スタイル(highlight.jsクラスへのカラーマッピング)
|
|
3
|
+
// marp-core v4.2.0 を改変
|
|
4
|
+
// https://github.com/marp-team/marp-core/blob/v4.2.0/themes/default.scss
|
|
5
|
+
|
|
6
|
+
@mixin configure(
|
|
7
|
+
$comment, // コメント (pl-c)
|
|
8
|
+
$constant, // 定数 (pl-c1)
|
|
9
|
+
$entity, // エンティティ・関数名 (pl-e, pl-en)
|
|
10
|
+
$entity-tag, // タグ名 (pl-ent)
|
|
11
|
+
$keyword, // キーワード (pl-k)
|
|
12
|
+
$string, // 文字列 (pl-s)
|
|
13
|
+
$variable, // 変数 (pl-v)
|
|
14
|
+
$storage-modifier, // デフォルトテキスト (pl-smi)
|
|
15
|
+
$markup-heading, // 見出し (pl-mh)
|
|
16
|
+
$markup-list, // リストマーカー (pl-ml)
|
|
17
|
+
$markup-inserted-text, // 挿入テキスト色 (pl-mi1)
|
|
18
|
+
$markup-inserted-bg, // 挿入背景色 (pl-mi1)
|
|
19
|
+
$markup-deleted-text, // 削除テキスト色 (pl-md)
|
|
20
|
+
$markup-deleted-bg // 削除背景色 (pl-md)
|
|
21
|
+
) {
|
|
22
|
+
pre {
|
|
23
|
+
// デフォルト色
|
|
24
|
+
:where(.hljs) {
|
|
25
|
+
color: $storage-modifier;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// キーワード系
|
|
29
|
+
:where(.hljs-doctag),
|
|
30
|
+
:where(.hljs-keyword),
|
|
31
|
+
:where(.hljs-meta .hljs-keyword),
|
|
32
|
+
:where(.hljs-template-tag),
|
|
33
|
+
:where(.hljs-template-variable),
|
|
34
|
+
:where(.hljs-type),
|
|
35
|
+
:where(.hljs-variable.language_) {
|
|
36
|
+
color: $keyword;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// 関数・クラス名
|
|
40
|
+
:where(.hljs-title),
|
|
41
|
+
:where(.hljs-title.class_),
|
|
42
|
+
:where(.hljs-title.class_.inherited__),
|
|
43
|
+
:where(.hljs-title.function_) {
|
|
44
|
+
color: $entity;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// 定数・属性・数値
|
|
48
|
+
:where(.hljs-attr),
|
|
49
|
+
:where(.hljs-attribute),
|
|
50
|
+
:where(.hljs-literal),
|
|
51
|
+
:where(.hljs-meta),
|
|
52
|
+
:where(.hljs-number),
|
|
53
|
+
:where(.hljs-operator),
|
|
54
|
+
:where(.hljs-selector-attr),
|
|
55
|
+
:where(.hljs-selector-class),
|
|
56
|
+
:where(.hljs-selector-id),
|
|
57
|
+
:where(.hljs-variable) {
|
|
58
|
+
color: $constant;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// 文字列・正規表現
|
|
62
|
+
:where(.hljs-string),
|
|
63
|
+
:where(.hljs-meta .hljs-string),
|
|
64
|
+
:where(.hljs-regexp) {
|
|
65
|
+
color: $string;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// 組み込み関数・シンボル
|
|
69
|
+
:where(.hljs-built_in),
|
|
70
|
+
:where(.hljs-symbol) {
|
|
71
|
+
color: $variable;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// コメント
|
|
75
|
+
:where(.hljs-code),
|
|
76
|
+
:where(.hljs-comment),
|
|
77
|
+
:where(.hljs-formula) {
|
|
78
|
+
color: $comment;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// タグ名・セレクタ
|
|
82
|
+
:where(.hljs-name),
|
|
83
|
+
:where(.hljs-quote),
|
|
84
|
+
:where(.hljs-selector-pseudo),
|
|
85
|
+
:where(.hljs-selector-tag) {
|
|
86
|
+
color: $entity-tag;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// 変数展開
|
|
90
|
+
:where(.hljs-subst) {
|
|
91
|
+
color: $storage-modifier;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// マークアップ: 見出し
|
|
95
|
+
:where(.hljs-section) {
|
|
96
|
+
font-weight: bold;
|
|
97
|
+
color: $markup-heading;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// マークアップ: リスト
|
|
101
|
+
:where(.hljs-bullet) {
|
|
102
|
+
color: $markup-list;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// マークアップ: 強調
|
|
106
|
+
:where(.hljs-emphasis) {
|
|
107
|
+
font-style: italic;
|
|
108
|
+
color: $storage-modifier;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
:where(.hljs-strong) {
|
|
112
|
+
font-weight: bold;
|
|
113
|
+
color: $storage-modifier;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// diff: 追加行
|
|
117
|
+
:where(.hljs-addition) {
|
|
118
|
+
color: $markup-inserted-text;
|
|
119
|
+
background-color: $markup-inserted-bg;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// diff: 削除行
|
|
123
|
+
:where(.hljs-deletion) {
|
|
124
|
+
color: $markup-deleted-text;
|
|
125
|
+
background-color: $markup-deleted-bg;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
// ===== _dark.scss =====
|
|
2
|
+
// シンタックスハイライト(Dark テーマ)カラー定義
|
|
3
|
+
// github-markdown-css v5.8.1 を改変
|
|
4
|
+
// https://github.com/sindresorhus/github-markdown-css/blob/v5.8.1/github-markdown-dark.css
|
|
5
|
+
|
|
6
|
+
@use 'base';
|
|
7
|
+
|
|
8
|
+
// ===== Dark テーマカラー =====
|
|
9
|
+
$pl-comment: #9198a1;
|
|
10
|
+
$pl-constant: #79c0ff;
|
|
11
|
+
$pl-entity: #d2a8ff;
|
|
12
|
+
$pl-entity-tag: #7ee787;
|
|
13
|
+
$pl-keyword: #ff7b72;
|
|
14
|
+
$pl-string: #a5d6ff;
|
|
15
|
+
$pl-variable: #ffa657;
|
|
16
|
+
$pl-storage-modifier: #f0f6fc;
|
|
17
|
+
$pl-markup-heading: #1f6feb;
|
|
18
|
+
$pl-markup-list: #f2cc60;
|
|
19
|
+
$pl-markup-inserted-text: #aff5b4;
|
|
20
|
+
$pl-markup-inserted-bg: #033a16;
|
|
21
|
+
$pl-markup-deleted-text: #ffdcd7;
|
|
22
|
+
$pl-markup-deleted-bg: #67060c;
|
|
23
|
+
|
|
24
|
+
@mixin configure {
|
|
25
|
+
@include base.configure(
|
|
26
|
+
$pl-comment,
|
|
27
|
+
$pl-constant,
|
|
28
|
+
$pl-entity,
|
|
29
|
+
$pl-entity-tag,
|
|
30
|
+
$pl-keyword,
|
|
31
|
+
$pl-string,
|
|
32
|
+
$pl-variable,
|
|
33
|
+
$pl-storage-modifier,
|
|
34
|
+
$pl-markup-heading,
|
|
35
|
+
$pl-markup-list,
|
|
36
|
+
$pl-markup-inserted-text,
|
|
37
|
+
$pl-markup-inserted-bg,
|
|
38
|
+
$pl-markup-deleted-text,
|
|
39
|
+
$pl-markup-deleted-bg
|
|
40
|
+
);
|
|
41
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
@charset "utf-8";
|
|
2
|
+
|
|
3
|
+
/*!
|
|
4
|
+
* Prettylights - GitHub風シンタックスハイライトテーマ
|
|
5
|
+
*
|
|
6
|
+
* @use '@subroh0508/marp-theme-canvas/scss/component/prettylights';
|
|
7
|
+
* @use '@subroh0508/marp-theme-canvas/scss/component/prettylights/light';
|
|
8
|
+
* @use '@subroh0508/marp-theme-canvas/scss/component/prettylights/dark';
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
@forward 'base' as base-*;
|
|
12
|
+
@forward 'light' as light-*;
|
|
13
|
+
@forward 'dark' as dark-*;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
// ===== _light.scss =====
|
|
2
|
+
// シンタックスハイライト(Light テーマ)カラー定義
|
|
3
|
+
// github-markdown-css v5.8.1 を改変
|
|
4
|
+
// https://github.com/sindresorhus/github-markdown-css/blob/v5.8.1/github-markdown-light.css
|
|
5
|
+
|
|
6
|
+
@use 'base';
|
|
7
|
+
|
|
8
|
+
// ===== Light テーマカラー =====
|
|
9
|
+
$pl-comment: #59636e;
|
|
10
|
+
$pl-constant: #0550ae;
|
|
11
|
+
$pl-entity: #6639ba;
|
|
12
|
+
$pl-entity-tag: #0550ae;
|
|
13
|
+
$pl-keyword: #cf222e;
|
|
14
|
+
$pl-string: #0a3069;
|
|
15
|
+
$pl-variable: #953800;
|
|
16
|
+
$pl-storage-modifier: #1f2328;
|
|
17
|
+
$pl-markup-heading: #0550ae;
|
|
18
|
+
$pl-markup-list: #3b2300;
|
|
19
|
+
$pl-markup-inserted-text: #116329;
|
|
20
|
+
$pl-markup-inserted-bg: #dafbe1;
|
|
21
|
+
$pl-markup-deleted-text: #82071e;
|
|
22
|
+
$pl-markup-deleted-bg: #ffebe9;
|
|
23
|
+
|
|
24
|
+
@mixin configure {
|
|
25
|
+
@include base.configure(
|
|
26
|
+
$pl-comment,
|
|
27
|
+
$pl-constant,
|
|
28
|
+
$pl-entity,
|
|
29
|
+
$pl-entity-tag,
|
|
30
|
+
$pl-keyword,
|
|
31
|
+
$pl-string,
|
|
32
|
+
$pl-variable,
|
|
33
|
+
$pl-storage-modifier,
|
|
34
|
+
$pl-markup-heading,
|
|
35
|
+
$pl-markup-list,
|
|
36
|
+
$pl-markup-inserted-text,
|
|
37
|
+
$pl-markup-inserted-bg,
|
|
38
|
+
$pl-markup-deleted-text,
|
|
39
|
+
$pl-markup-deleted-bg
|
|
40
|
+
);
|
|
41
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# page
|
|
2
|
+
|
|
3
|
+
特定用途に特化したページスタイル(Marpのclass指定で切り替え)
|
|
4
|
+
|
|
5
|
+
## ファイル構成
|
|
6
|
+
|
|
7
|
+
```scss
|
|
8
|
+
// ===== _ファイル名.scss =====
|
|
9
|
+
// スタイルの説明(どのようなページに使うか)
|
|
10
|
+
//
|
|
11
|
+
// 使用方法: <!-- _class: クラス名 -->
|
|
12
|
+
|
|
13
|
+
@mixin configure($引数1, $引数2, $引数3: デフォルト値) {
|
|
14
|
+
&.クラス名 {
|
|
15
|
+
// セレクタの役割をコメントで説明
|
|
16
|
+
セレクタ {
|
|
17
|
+
プロパティ: 値;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## スコープ設定
|
|
24
|
+
|
|
25
|
+
必ず `&.クラス名` でラップする(親の `section` に依存)
|
|
26
|
+
|
|
27
|
+
```scss
|
|
28
|
+
&.toc {
|
|
29
|
+
ul,
|
|
30
|
+
ol {
|
|
31
|
+
font-size: $font-size;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## コメント規約
|
|
37
|
+
|
|
38
|
+
- **セレクタの役割**: 各セレクタの前にコメントで用途を説明
|
|
39
|
+
- **レイアウト情報**: flexの配置方法など、視覚的な配置をコメント
|
|
40
|
+
|
|
41
|
+
```scss
|
|
42
|
+
// h1: タイトル文字列
|
|
43
|
+
// section上8割を占有、上下中央揃え、左寄せ
|
|
44
|
+
h1 {
|
|
45
|
+
font-size: $font-size-title;
|
|
46
|
+
flex: 0 0 80%;
|
|
47
|
+
// ...
|
|
48
|
+
}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## テーマからの呼び出し
|
|
52
|
+
|
|
53
|
+
`white-canvas.scss` などテーマファイルで `section` ブロック内から呼び出す:
|
|
54
|
+
|
|
55
|
+
```scss
|
|
56
|
+
@use './page/title' as page-title;
|
|
57
|
+
|
|
58
|
+
section {
|
|
59
|
+
@include page-title.configure(
|
|
60
|
+
$font-size-title: var(--font-size-display),
|
|
61
|
+
$color-metadata-text: var(--color-grey-light)
|
|
62
|
+
);
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## 既存のページスタイル一覧
|
|
67
|
+
|
|
68
|
+
| ファイル | クラス名 | 用途 |
|
|
69
|
+
|----------|----------|------|
|
|
70
|
+
| `_title.scss` | `title` | タイトルページ(h1 + メタデータ) |
|
|
71
|
+
| `_toc.scss` | `toc` | 目次ページ |
|
|
72
|
+
| `_agenda.scss` | `agenda` | アジェンダ(今日話すこと等) |
|
|
73
|
+
| `_section.scss` | `section` | 中扉ページ |
|
|
74
|
+
| `_display.scss` | `display` | 大きく表示(文章または画像) |
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
// ===== _agenda.scss =====
|
|
2
|
+
// アジェンダページ用スタイル
|
|
3
|
+
// 「今日話すこと」「Learning Outcome」等を冒頭に提示するページ
|
|
4
|
+
//
|
|
5
|
+
// 使用方法: <!-- _class: agenda -->
|
|
6
|
+
|
|
7
|
+
@mixin configure(
|
|
8
|
+
$font-size-heading,
|
|
9
|
+
$font-size-body,
|
|
10
|
+
$line-height-heading,
|
|
11
|
+
$line-height-body,
|
|
12
|
+
$font-weight-heading: bold,
|
|
13
|
+
$font-weight-body: normal
|
|
14
|
+
) {
|
|
15
|
+
&.agenda {
|
|
16
|
+
// リスト: 直接の子要素
|
|
17
|
+
> ul,
|
|
18
|
+
> ol {
|
|
19
|
+
font-size: $font-size-heading;
|
|
20
|
+
font-weight: $font-weight-heading;
|
|
21
|
+
line-height: $line-height-heading;
|
|
22
|
+
|
|
23
|
+
// ネストされたリスト(第2レベル)
|
|
24
|
+
ul,
|
|
25
|
+
ol {
|
|
26
|
+
font-size: calc(#{$font-size-body} / #{$font-size-heading} * 1em);
|
|
27
|
+
font-weight: $font-weight-body;
|
|
28
|
+
line-height: $line-height-body;
|
|
29
|
+
|
|
30
|
+
// 第3レベル以降はサイズを維持
|
|
31
|
+
ul,
|
|
32
|
+
ol {
|
|
33
|
+
font-size: 1em;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// ===== _display.scss =====
|
|
2
|
+
// 短い文章を大きく表示したり、1枚の写真や図を目立たせるページ用スタイル
|
|
3
|
+
//
|
|
4
|
+
// 使用方法: <!-- _class: display -->
|
|
5
|
+
|
|
6
|
+
@mixin configure(
|
|
7
|
+
$font-size,
|
|
8
|
+
$font-weight-bold: bold,
|
|
9
|
+
$font-weight-normal: normal
|
|
10
|
+
) {
|
|
11
|
+
&.display {
|
|
12
|
+
// 上下左右中央揃え
|
|
13
|
+
justify-content: center;
|
|
14
|
+
align-items: center;
|
|
15
|
+
|
|
16
|
+
// p: メイン文章(上下左右中央揃え)
|
|
17
|
+
p {
|
|
18
|
+
margin: 0;
|
|
19
|
+
text-align: center;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// imgが存在しない場合、pタグを大きく表示
|
|
23
|
+
&:not(:has(img)) p {
|
|
24
|
+
font-size: $font-size;
|
|
25
|
+
font-weight: $font-weight-bold;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// img: 画像(上下左右中央揃え)
|
|
29
|
+
img {
|
|
30
|
+
display: block;
|
|
31
|
+
margin: 0 0;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// pタグが存在する場合、imgの下にマージンを追加
|
|
35
|
+
&:has(p) img {
|
|
36
|
+
margin: 0 0 1em;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
@charset "utf-8";
|
|
2
|
+
|
|
3
|
+
/*!
|
|
4
|
+
* Page Styles - 特定用途に特化したページスタイル
|
|
5
|
+
*
|
|
6
|
+
* @use '@subroh0508/marp-theme-canvas/scss/page';
|
|
7
|
+
* @use '@subroh0508/marp-theme-canvas/scss/page/title';
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
@forward 'agenda' as agenda-*;
|
|
11
|
+
@forward 'display' as display-*;
|
|
12
|
+
@forward 'section' as section-*;
|
|
13
|
+
@forward 'title' as title-*;
|
|
14
|
+
@forward 'toc' as toc-*;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// ===== _section.scss =====
|
|
2
|
+
// 中扉ページ用スタイル
|
|
3
|
+
//
|
|
4
|
+
// 使用方法: <!-- _class: section -->
|
|
5
|
+
|
|
6
|
+
@mixin configure($font-size, $font-weight: bold) {
|
|
7
|
+
&.section {
|
|
8
|
+
// p: セクションタイトル
|
|
9
|
+
// 上下中央揃え、左寄せ
|
|
10
|
+
p {
|
|
11
|
+
flex: 1;
|
|
12
|
+
display: flex;
|
|
13
|
+
align-items: center;
|
|
14
|
+
justify-content: flex-start;
|
|
15
|
+
font-size: $font-size;
|
|
16
|
+
font-weight: $font-weight;
|
|
17
|
+
margin: 0;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
// ===== _title.scss =====
|
|
2
|
+
// タイトルページ用スタイル
|
|
3
|
+
//
|
|
4
|
+
// 使用方法: <!-- _class: title -->
|
|
5
|
+
|
|
6
|
+
@mixin configure($font-size-title, $color-metadata-text) {
|
|
7
|
+
&.title {
|
|
8
|
+
// h1: タイトル文字列
|
|
9
|
+
// section上8割を占有、上下中央揃え、左寄せ
|
|
10
|
+
h1 {
|
|
11
|
+
font-size: $font-size-title;
|
|
12
|
+
flex: 0 0 80%;
|
|
13
|
+
display: flex;
|
|
14
|
+
flex-direction: column;
|
|
15
|
+
align-items: flex-start;
|
|
16
|
+
justify-content: center;
|
|
17
|
+
margin: 0;
|
|
18
|
+
|
|
19
|
+
// small: サブタイトル
|
|
20
|
+
small {
|
|
21
|
+
margin-top: 0.5em;
|
|
22
|
+
font-size: 0.5em;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// h1直後のp: 日付・イベント名・著者名
|
|
27
|
+
h1 + p {
|
|
28
|
+
flex: 1;
|
|
29
|
+
display: flex;
|
|
30
|
+
flex-direction: column;
|
|
31
|
+
align-items: flex-end;
|
|
32
|
+
justify-content: center;
|
|
33
|
+
text-align: right;
|
|
34
|
+
color: $color-metadata-text;
|
|
35
|
+
margin: 0;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* White Canvas - 極力余計なスタイリングを廃した、シンプルなスライドテーマ
|
|
3
|
+
*
|
|
4
|
+
* 使用時はMarpのインラインスタイル指定で以下の変数を必ず定義してください。
|
|
5
|
+
* - --color-primary: メインカラー(h2の文字色など)
|
|
6
|
+
* - --color-accent: アクセントカラー(markタグの背景色など)
|
|
7
|
+
*
|
|
8
|
+
* 例:
|
|
9
|
+
* style: |
|
|
10
|
+
* :root {
|
|
11
|
+
* --color-primary: #3b91c4;
|
|
12
|
+
* --color-accent: #ead7a4;
|
|
13
|
+
* }
|
|
14
|
+
*
|
|
15
|
+
* @theme white-canvas
|
|
16
|
+
* @author subroh_0508
|
|
17
|
+
*
|
|
18
|
+
* @auto-scaling true
|
|
19
|
+
* @size 16:9 1920px 1080px
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
// ===== コンポーネント =====
|
|
23
|
+
@use './component/prettylights/light' as prettylights;
|
|
24
|
+
@use './component/table' as table;
|
|
25
|
+
@use './component/code' as code;
|
|
26
|
+
@use './component/section' as section;
|
|
27
|
+
@use './component/pagination' as pagination;
|
|
28
|
+
@use './component/header' as header;
|
|
29
|
+
@use './component/footer' as footer;
|
|
30
|
+
@use './component/heading' as heading;
|
|
31
|
+
@use './component/blockquote' as blockquote;
|
|
32
|
+
@use './component/text-decorator' as text-decorator;
|
|
33
|
+
@use './component/columns' as columns;
|
|
34
|
+
@use './component/a' as a;
|
|
35
|
+
|
|
36
|
+
// ===== ページスタイル =====
|
|
37
|
+
@use './page/title' as page-title;
|
|
38
|
+
@use './page/section' as page-section;
|
|
39
|
+
@use './page/toc' as page-toc;
|
|
40
|
+
@use './page/agenda' as page-agenda;
|
|
41
|
+
@use './page/display' as page-display;
|
|
42
|
+
|
|
43
|
+
// ===== Google Fonts =====
|
|
44
|
+
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@400;700;900&display=swap');
|
|
45
|
+
|
|
46
|
+
// ===== CSS変数(デフォルト値) =====
|
|
47
|
+
:root {
|
|
48
|
+
// --- 色(白黒) ---
|
|
49
|
+
--color-black: #000;
|
|
50
|
+
--color-white: #fff;
|
|
51
|
+
|
|
52
|
+
// --- 色(グレースケール 7色): Tailwind slate 300-900 ---
|
|
53
|
+
--color-grey-lightest: #cbd5e1; // slate-300
|
|
54
|
+
--color-grey-lighter: #94a3b8; // slate-400
|
|
55
|
+
--color-grey-light: #64748b; // slate-500
|
|
56
|
+
--color-grey-medium: #475569; // slate-600
|
|
57
|
+
--color-grey-dark: #334155; // slate-700
|
|
58
|
+
--color-grey-darker: #1e293b; // slate-800
|
|
59
|
+
--color-grey-darkest: #0f172a; // slate-900
|
|
60
|
+
|
|
61
|
+
// --- 色(コンポーネント: blockquote) ---
|
|
62
|
+
--color-blockquote-background: color-mix(in srgb, var(--color-grey-light) 10%, transparent);
|
|
63
|
+
--color-blockquote-mark: var(--color-grey-medium);
|
|
64
|
+
--color-blockquote-text: var(--color-grey-medium);
|
|
65
|
+
|
|
66
|
+
// --- 色(コンポーネント: table) ---
|
|
67
|
+
--color-table-row-bg: var(--color-white);
|
|
68
|
+
--color-table-row-bg-header: var(--color-grey-lightest);
|
|
69
|
+
--color-table-border: var(--color-grey-light);
|
|
70
|
+
|
|
71
|
+
// --- 色(コンポーネント: code) ---
|
|
72
|
+
--color-code-bg: color-mix(in srgb, var(--color-grey-light) 10%, transparent);
|
|
73
|
+
--color-code-fg: var(--color-grey-darkest);
|
|
74
|
+
|
|
75
|
+
// --- 色(コンポーネント: link) ---
|
|
76
|
+
--color-link: #2563eb; // Tailwind blue-600
|
|
77
|
+
|
|
78
|
+
// --- フォント ---
|
|
79
|
+
--font-family-base: 'Noto Sans JP', sans-serif;
|
|
80
|
+
--font-family-mono: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace;
|
|
81
|
+
|
|
82
|
+
// --- フォントサイズ ---
|
|
83
|
+
--font-size-base: 40px;
|
|
84
|
+
--font-size-display: 2.5em;
|
|
85
|
+
--font-size-title: 2em;
|
|
86
|
+
--font-size-heading: 1.3em;
|
|
87
|
+
--font-size-medium: 1.15em;
|
|
88
|
+
--font-size-body: 1em;
|
|
89
|
+
--font-size-small: 0.85em;
|
|
90
|
+
--font-size-note: 0.7em;
|
|
91
|
+
|
|
92
|
+
// --- フォントウェイト ---
|
|
93
|
+
--font-weight-normal: 400;
|
|
94
|
+
--font-weight-bold: 700;
|
|
95
|
+
--font-weight-black: 900;
|
|
96
|
+
|
|
97
|
+
// --- 行間 ---
|
|
98
|
+
--line-height-tight: 1.2;
|
|
99
|
+
--line-height-normal: 1.45;
|
|
100
|
+
--line-height-loose: 2;
|
|
101
|
+
|
|
102
|
+
// --- レイアウト ---
|
|
103
|
+
--slide-padding-x: 80px;
|
|
104
|
+
--slide-padding-y: 80px;
|
|
105
|
+
--header-footer-margin-x: 80px;
|
|
106
|
+
--header-footer-margin-y: 20px;
|
|
107
|
+
--border-radius: 8px;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
// ===== section(スライド本体) =====
|
|
111
|
+
section {
|
|
112
|
+
@include prettylights.configure;
|
|
113
|
+
@include section.configure(
|
|
114
|
+
$width: 1920px,
|
|
115
|
+
$height: 1080px,
|
|
116
|
+
$padding-x: var(--slide-padding-x),
|
|
117
|
+
$padding-y: var(--slide-padding-y),
|
|
118
|
+
$color-bg: var(--color-white),
|
|
119
|
+
$color-text: var(--color-grey-darkest),
|
|
120
|
+
$font-family: var(--font-family-base),
|
|
121
|
+
$font-size: var(--font-size-base),
|
|
122
|
+
$line-height: var(--line-height-normal),
|
|
123
|
+
$list-indent: 1.3em
|
|
124
|
+
);
|
|
125
|
+
@include pagination.configure(
|
|
126
|
+
$margin-x: var(--header-footer-margin-x),
|
|
127
|
+
$margin-y: var(--header-footer-margin-y),
|
|
128
|
+
$font-size: var(--font-size-note),
|
|
129
|
+
$color-text: var(--color-grey-medium)
|
|
130
|
+
);
|
|
131
|
+
|
|
132
|
+
// ===== ページスタイル =====
|
|
133
|
+
@include page-title.configure(
|
|
134
|
+
$font-size-title: var(--font-size-display),
|
|
135
|
+
$color-metadata-text: var(--color-grey-light)
|
|
136
|
+
);
|
|
137
|
+
|
|
138
|
+
@include page-section.configure(
|
|
139
|
+
$font-size: var(--font-size-title)
|
|
140
|
+
);
|
|
141
|
+
|
|
142
|
+
@include page-toc.configure(
|
|
143
|
+
$font-size: var(--font-size-heading),
|
|
144
|
+
$line-height: var(--line-height-loose)
|
|
145
|
+
);
|
|
146
|
+
|
|
147
|
+
@include page-agenda.configure(
|
|
148
|
+
$font-size-heading: var(--font-size-heading),
|
|
149
|
+
$font-size-body: var(--font-size-body),
|
|
150
|
+
$line-height-heading: var(--line-height-loose),
|
|
151
|
+
$line-height-body: var(--line-height-normal),
|
|
152
|
+
$font-weight-heading: var(--font-weight-bold),
|
|
153
|
+
$font-weight-body: var(--font-weight-normal)
|
|
154
|
+
);
|
|
155
|
+
|
|
156
|
+
@include page-display.configure(
|
|
157
|
+
$font-size: var(--font-size-display),
|
|
158
|
+
$font-weight-bold: var(--font-weight-bold),
|
|
159
|
+
$font-weight-normal: var(--font-weight-normal)
|
|
160
|
+
);
|
|
161
|
+
|
|
162
|
+
// ===== カラムレイアウト =====
|
|
163
|
+
@include columns.configure();
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
// ===== header =====
|
|
167
|
+
@include header.configure(
|
|
168
|
+
$margin-x: var(--header-footer-margin-x),
|
|
169
|
+
$margin-y: var(--header-footer-margin-y),
|
|
170
|
+
$font-size: var(--font-size-note),
|
|
171
|
+
$color-text: var(--color-grey-medium)
|
|
172
|
+
);
|
|
173
|
+
|
|
174
|
+
// ===== footer =====
|
|
175
|
+
@include footer.configure(
|
|
176
|
+
$margin-x: var(--header-footer-margin-x),
|
|
177
|
+
$margin-y: var(--header-footer-margin-y),
|
|
178
|
+
$font-size: var(--font-size-note),
|
|
179
|
+
$color-text: var(--color-grey-medium)
|
|
180
|
+
);
|
|
181
|
+
|
|
182
|
+
// ===== 見出し(h1-h6) =====
|
|
183
|
+
@include heading.configure(
|
|
184
|
+
$line-height: var(--line-height-tight),
|
|
185
|
+
$font-size-h1: var(--font-size-title),
|
|
186
|
+
$font-size-h2: var(--font-size-heading),
|
|
187
|
+
$font-size-h3: var(--font-size-medium),
|
|
188
|
+
$font-weight-h1: var(--font-weight-bold),
|
|
189
|
+
$font-weight-h2: var(--font-weight-bold),
|
|
190
|
+
$font-weight-h3: var(--font-weight-bold),
|
|
191
|
+
$font-weight-h4: var(--font-weight-bold),
|
|
192
|
+
$font-weight-h5: var(--font-weight-normal),
|
|
193
|
+
$font-weight-h6: var(--font-weight-normal),
|
|
194
|
+
$color-text-h2: var(--color-primary)
|
|
195
|
+
);
|
|
196
|
+
|
|
197
|
+
// ===== 引用(blockquote) =====
|
|
198
|
+
@include blockquote.configure(
|
|
199
|
+
$font-size: var(--font-size-body),
|
|
200
|
+
$line-height: var(--line-height-tight),
|
|
201
|
+
$color-text: var(--color-blockquote-text),
|
|
202
|
+
$color-bg: var(--color-blockquote-background),
|
|
203
|
+
$color-mark: var(--color-blockquote-mark),
|
|
204
|
+
$border-radius: var(--border-radius)
|
|
205
|
+
);
|
|
206
|
+
|
|
207
|
+
// ===== テキスト装飾(strong, mark, rp) =====
|
|
208
|
+
@include text-decorator.configure(
|
|
209
|
+
$font-weight-bold: var(--font-weight-bold),
|
|
210
|
+
$font-weight-normal: var(--font-weight-normal),
|
|
211
|
+
$color-text-highlight: var(--color-accent)
|
|
212
|
+
);
|
|
213
|
+
|
|
214
|
+
// ===== リンク(a) =====
|
|
215
|
+
@include a.configure(
|
|
216
|
+
$color-text: var(--color-link)
|
|
217
|
+
);
|
|
218
|
+
|
|
219
|
+
// ===== table =====
|
|
220
|
+
@include table.configure(
|
|
221
|
+
$color-row-bg: var(--color-table-row-bg),
|
|
222
|
+
$color-header-bg: var(--color-table-row-bg-header),
|
|
223
|
+
$color-even-row-bg: var(--color-table-row-bg),
|
|
224
|
+
$color-border-vert: var(--color-table-border),
|
|
225
|
+
$color-border-horz: var(--color-table-border)
|
|
226
|
+
);
|
|
227
|
+
|
|
228
|
+
// ===== code =====
|
|
229
|
+
@include code.configure(
|
|
230
|
+
$font-mono: var(--font-family-mono),
|
|
231
|
+
$color-bg: var(--color-code-bg),
|
|
232
|
+
$color-fg: var(--color-code-fg)
|
|
233
|
+
);
|