@subroh0508/marp-theme-canvas 0.0.3 → 0.0.5

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 (37) hide show
  1. package/README.ja.md +314 -0
  2. package/README.md +314 -0
  3. package/css/black-canvas.css +24 -5
  4. package/css/white-canvas.css +24 -5
  5. package/package.json +13 -3
  6. package/scss/_index.scss +30 -21
  7. package/scss/black-canvas.scss +12 -213
  8. package/scss/component/CLAUDE.md +24 -24
  9. package/scss/component/_a.scss +1 -1
  10. package/scss/component/_blockquote.scss +4 -4
  11. package/scss/component/_code.scss +8 -2
  12. package/scss/component/_columns.scss +13 -13
  13. package/scss/component/_footer.scss +1 -1
  14. package/scss/component/_header.scss +1 -1
  15. package/scss/component/_heading.scss +1 -1
  16. package/scss/component/_index.scss +5 -7
  17. package/scss/component/_pagination.scss +2 -2
  18. package/scss/component/_section.scss +3 -3
  19. package/scss/component/_table.scss +2 -2
  20. package/scss/component/_text-decorator.scss +1 -1
  21. package/scss/component/prettylights/CLAUDE.md +11 -11
  22. package/scss/component/prettylights/_base.scss +36 -30
  23. package/scss/component/prettylights/_dark.scss +9 -3
  24. package/scss/component/prettylights/_index.scss +5 -7
  25. package/scss/component/prettylights/_light.scss +9 -3
  26. package/scss/page/CLAUDE.md +27 -27
  27. package/scss/page/_agenda.scss +6 -6
  28. package/scss/page/_display.scss +9 -9
  29. package/scss/page/_index.scss +4 -6
  30. package/scss/page/_section.scss +4 -4
  31. package/scss/page/_title.scss +6 -6
  32. package/scss/page/_toc.scss +3 -3
  33. package/scss/theme/CLAUDE.md +110 -0
  34. package/scss/theme/_black-canvas.scss +243 -0
  35. package/scss/theme/_white-canvas.scss +243 -0
  36. package/scss/white-canvas.scss +12 -213
  37. package/scss/CLAUDE.md +0 -59
@@ -1,36 +1,36 @@
1
1
  # prettylights
2
2
 
3
- シンタックスハイライト用スタイル(highlight.jsクラスへのカラーマッピング)
3
+ Syntax highlighting styles (color mapping for highlight.js classes)
4
4
 
5
- ## 構成
5
+ ## Structure
6
6
 
7
7
  ```
8
8
  prettylights/
9
- ├── _base.scss # 共通ロジック(引数付きmixin
10
- ├── _light.scss # Lightテーマ色定義
11
- └── _dark.scss # Darkテーマ色定義
9
+ ├── _base.scss # Common logic (mixin with arguments)
10
+ ├── _light.scss # Light theme color definitions
11
+ └── _dark.scss # Dark theme color definitions
12
12
  ```
13
13
 
14
- ## パターン
14
+ ## Pattern
15
15
 
16
- - `_base.scss`: highlight.jsクラスへのカラーマッピングを引数付きmixinで定義
17
- - `_light.scss` / `_dark.scss`: 色変数を定義し、引数なしmixinでbaseを呼び出す
16
+ - `_base.scss`: Defines color mapping for highlight.js classes via mixin with arguments
17
+ - `_light.scss` / `_dark.scss`: Define color variables and call base via argumentless mixin
18
18
 
19
19
  ```scss
20
20
  // _light.scss
21
21
  @use 'base';
22
22
 
23
23
  $pl-comment: #59636e;
24
- // ... 色定義
24
+ // ... color definitions
25
25
 
26
26
  @mixin configure {
27
27
  @include base.configure($pl-comment, ...);
28
28
  }
29
29
  ```
30
30
 
31
- ## テーマからの呼び出し
31
+ ## Usage from Theme
32
32
 
33
- section内で呼び出す:
33
+ Use within section:
34
34
 
35
35
  ```scss
36
36
  @use './component/prettylights/light' as prettylights;
@@ -1,31 +1,37 @@
1
1
  // ===== _base.scss =====
2
- // シンタックスハイライト用スタイル(highlight.jsクラスへのカラーマッピング)
3
- // marp-core v4.2.0 を改変
2
+ // Syntax highlighting styles (color mapping for highlight.js classes)
3
+ // Modified from marp-core v4.2.0
4
4
  // https://github.com/marp-team/marp-core/blob/v4.2.0/themes/default.scss
5
5
 
6
+ /*!
7
+ * MIT License
8
+ * Copyright (c) 2018 Marp team (marp-team@marp.app)
9
+ * https://github.com/marp-team/marp-core/blob/main/LICENSE
10
+ */
11
+
6
12
  @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)
13
+ $comment, // Comment (pl-c)
14
+ $constant, // Constant (pl-c1)
15
+ $entity, // Entity / Function name (pl-e, pl-en)
16
+ $entity-tag, // Tag name (pl-ent)
17
+ $keyword, // Keyword (pl-k)
18
+ $string, // String (pl-s)
19
+ $variable, // Variable (pl-v)
20
+ $storage-modifier, // Default text (pl-smi)
21
+ $markup-heading, // Heading (pl-mh)
22
+ $markup-list, // List marker (pl-ml)
23
+ $markup-inserted-text, // Inserted text color (pl-mi1)
24
+ $markup-inserted-bg, // Inserted background color (pl-mi1)
25
+ $markup-deleted-text, // Deleted text color (pl-md)
26
+ $markup-deleted-bg // Deleted background color (pl-md)
21
27
  ) {
22
28
  pre {
23
- // デフォルト色
29
+ // Default color
24
30
  :where(.hljs) {
25
31
  color: $storage-modifier;
26
32
  }
27
33
 
28
- // キーワード系
34
+ // Keywords
29
35
  :where(.hljs-doctag),
30
36
  :where(.hljs-keyword),
31
37
  :where(.hljs-meta .hljs-keyword),
@@ -36,7 +42,7 @@
36
42
  color: $keyword;
37
43
  }
38
44
 
39
- // 関数・クラス名
45
+ // Functions / Class names
40
46
  :where(.hljs-title),
41
47
  :where(.hljs-title.class_),
42
48
  :where(.hljs-title.class_.inherited__),
@@ -44,7 +50,7 @@
44
50
  color: $entity;
45
51
  }
46
52
 
47
- // 定数・属性・数値
53
+ // Constants / Attributes / Numbers
48
54
  :where(.hljs-attr),
49
55
  :where(.hljs-attribute),
50
56
  :where(.hljs-literal),
@@ -58,27 +64,27 @@
58
64
  color: $constant;
59
65
  }
60
66
 
61
- // 文字列・正規表現
67
+ // Strings / Regular expressions
62
68
  :where(.hljs-string),
63
69
  :where(.hljs-meta .hljs-string),
64
70
  :where(.hljs-regexp) {
65
71
  color: $string;
66
72
  }
67
73
 
68
- // 組み込み関数・シンボル
74
+ // Built-in functions / Symbols
69
75
  :where(.hljs-built_in),
70
76
  :where(.hljs-symbol) {
71
77
  color: $variable;
72
78
  }
73
79
 
74
- // コメント
80
+ // Comments
75
81
  :where(.hljs-code),
76
82
  :where(.hljs-comment),
77
83
  :where(.hljs-formula) {
78
84
  color: $comment;
79
85
  }
80
86
 
81
- // タグ名・セレクタ
87
+ // Tag names / Selectors
82
88
  :where(.hljs-name),
83
89
  :where(.hljs-quote),
84
90
  :where(.hljs-selector-pseudo),
@@ -86,23 +92,23 @@
86
92
  color: $entity-tag;
87
93
  }
88
94
 
89
- // 変数展開
95
+ // Variable interpolation
90
96
  :where(.hljs-subst) {
91
97
  color: $storage-modifier;
92
98
  }
93
99
 
94
- // マークアップ: 見出し
100
+ // Markup: Heading
95
101
  :where(.hljs-section) {
96
102
  font-weight: bold;
97
103
  color: $markup-heading;
98
104
  }
99
105
 
100
- // マークアップ: リスト
106
+ // Markup: List
101
107
  :where(.hljs-bullet) {
102
108
  color: $markup-list;
103
109
  }
104
110
 
105
- // マークアップ: 強調
111
+ // Markup: Emphasis
106
112
  :where(.hljs-emphasis) {
107
113
  font-style: italic;
108
114
  color: $storage-modifier;
@@ -113,13 +119,13 @@
113
119
  color: $storage-modifier;
114
120
  }
115
121
 
116
- // diff: 追加行
122
+ // diff: Added lines
117
123
  :where(.hljs-addition) {
118
124
  color: $markup-inserted-text;
119
125
  background-color: $markup-inserted-bg;
120
126
  }
121
127
 
122
- // diff: 削除行
128
+ // diff: Deleted lines
123
129
  :where(.hljs-deletion) {
124
130
  color: $markup-deleted-text;
125
131
  background-color: $markup-deleted-bg;
@@ -1,11 +1,17 @@
1
1
  // ===== _dark.scss =====
2
- // シンタックスハイライト(Dark テーマ)カラー定義
3
- // github-markdown-css v5.8.1 を改変
2
+ // Syntax highlighting (Dark theme) color definitions
3
+ // Modified from github-markdown-css v5.8.1
4
4
  // https://github.com/sindresorhus/github-markdown-css/blob/v5.8.1/github-markdown-dark.css
5
5
 
6
+ /*!
7
+ * MIT License
8
+ * Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)
9
+ * https://github.com/sindresorhus/github-markdown-css/blob/main/license
10
+ */
11
+
6
12
  @use 'base';
7
13
 
8
- // ===== Dark テーマカラー =====
14
+ // ===== Dark theme colors =====
9
15
  $pl-comment: #9198a1;
10
16
  $pl-constant: #79c0ff;
11
17
  $pl-entity: #d2a8ff;
@@ -1,12 +1,10 @@
1
1
  @charset "utf-8";
2
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
- */
3
+ // Prettylights - GitHub-style syntax highlighting themes
4
+ //
5
+ // @use '@subroh0508/marp-theme-canvas/scss/component/prettylights';
6
+ // @use '@subroh0508/marp-theme-canvas/scss/component/prettylights/light';
7
+ // @use '@subroh0508/marp-theme-canvas/scss/component/prettylights/dark';
10
8
 
11
9
  @forward 'base' as base-*;
12
10
  @forward 'light' as light-*;
@@ -1,11 +1,17 @@
1
1
  // ===== _light.scss =====
2
- // シンタックスハイライト(Light テーマ)カラー定義
3
- // github-markdown-css v5.8.1 を改変
2
+ // Syntax highlighting (Light theme) color definitions
3
+ // Modified from github-markdown-css v5.8.1
4
4
  // https://github.com/sindresorhus/github-markdown-css/blob/v5.8.1/github-markdown-light.css
5
5
 
6
+ /*!
7
+ * MIT License
8
+ * Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)
9
+ * https://github.com/sindresorhus/github-markdown-css/blob/main/license
10
+ */
11
+
6
12
  @use 'base';
7
13
 
8
- // ===== Light テーマカラー =====
14
+ // ===== Light theme colors =====
9
15
  $pl-comment: #59636e;
10
16
  $pl-constant: #0550ae;
11
17
  $pl-entity: #6639ba;
@@ -1,28 +1,28 @@
1
1
  # page
2
2
 
3
- 特定用途に特化したページスタイル(Marpclass指定で切り替え)
3
+ Page styles specialized for specific purposes (switched via Marp class directive)
4
4
 
5
- ## ファイル構成
5
+ ## File Structure
6
6
 
7
7
  ```scss
8
- // ===== _ファイル名.scss =====
9
- // スタイルの説明(どのようなページに使うか)
8
+ // ===== _filename.scss =====
9
+ // Style description (what kind of page it's used for)
10
10
  //
11
- // 使用方法: <!-- _class: クラス名 -->
11
+ // Usage: <!-- _class: classname -->
12
12
 
13
- @mixin configure($引数1, $引数2, $引数3: デフォルト値) {
14
- &.クラス名 {
15
- // セレクタの役割をコメントで説明
16
- セレクタ {
17
- プロパティ: 値;
13
+ @mixin configure($arg1, $arg2, $arg3: default) {
14
+ &.classname {
15
+ // Explain the role of selectors with comments
16
+ selector {
17
+ property: value;
18
18
  }
19
19
  }
20
20
  }
21
21
  ```
22
22
 
23
- ## スコープ設定
23
+ ## Scope Settings
24
24
 
25
- 必ず `&.クラス名` でラップする(親の `section` に依存)
25
+ Always wrap with `&.classname` (depends on parent `section`)
26
26
 
27
27
  ```scss
28
28
  &.toc {
@@ -33,14 +33,14 @@
33
33
  }
34
34
  ```
35
35
 
36
- ## コメント規約
36
+ ## Comment Conventions
37
37
 
38
- - **セレクタの役割**: 各セレクタの前にコメントで用途を説明
39
- - **レイアウト情報**: flexの配置方法など、視覚的な配置をコメント
38
+ - **Selector role**: Explain the purpose with a comment before each selector
39
+ - **Layout information**: Comment on visual arrangement such as flex positioning
40
40
 
41
41
  ```scss
42
- // h1: タイトル文字列
43
- // section上8割を占有、上下中央揃え、左寄せ
42
+ // h1: Title text
43
+ // Occupies top 80% of section, vertically centered, left-aligned
44
44
  h1 {
45
45
  font-size: $font-size-title;
46
46
  flex: 0 0 80%;
@@ -48,9 +48,9 @@ h1 {
48
48
  }
49
49
  ```
50
50
 
51
- ## テーマからの呼び出し
51
+ ## Usage from Theme
52
52
 
53
- `white-canvas.scss` などテーマファイルで `section` ブロック内から呼び出す:
53
+ Use within the `section` block in theme files like `white-canvas.scss`:
54
54
 
55
55
  ```scss
56
56
  @use './page/title' as page-title;
@@ -63,12 +63,12 @@ section {
63
63
  }
64
64
  ```
65
65
 
66
- ## 既存のページスタイル一覧
66
+ ## Existing Page Styles
67
67
 
68
- | ファイル | クラス名 | 用途 |
69
- |----------|----------|------|
70
- | `_title.scss` | `title` | タイトルページ(h1 + メタデータ) |
71
- | `_toc.scss` | `toc` | 目次ページ |
72
- | `_agenda.scss` | `agenda` | アジェンダ(今日話すこと等) |
73
- | `_section.scss` | `section` | 中扉ページ |
74
- | `_display.scss` | `display` | 大きく表示(文章または画像) |
68
+ | File | Class Name | Purpose |
69
+ |------|------------|---------|
70
+ | `_title.scss` | `title` | Title page (h1 + metadata) |
71
+ | `_toc.scss` | `toc` | Table of contents page |
72
+ | `_agenda.scss` | `agenda` | Agenda (topics to cover today, etc.) |
73
+ | `_section.scss` | `section` | Section divider page |
74
+ | `_display.scss` | `display` | Large display (text or image) |
@@ -1,8 +1,8 @@
1
1
  // ===== _agenda.scss =====
2
- // アジェンダページ用スタイル
3
- // 「今日話すこと」「Learning Outcome」等を冒頭に提示するページ
2
+ // Styles for agenda page
3
+ // For pages presenting "Topics for today", "Learning Outcomes", etc. at the beginning
4
4
  //
5
- // 使用方法: <!-- _class: agenda -->
5
+ // Usage: <!-- _class: agenda -->
6
6
 
7
7
  @mixin configure(
8
8
  $font-size-heading,
@@ -13,21 +13,21 @@
13
13
  $font-weight-body: normal
14
14
  ) {
15
15
  &.agenda {
16
- // リスト: 直接の子要素
16
+ // List: Direct children
17
17
  > ul,
18
18
  > ol {
19
19
  font-size: $font-size-heading;
20
20
  font-weight: $font-weight-heading;
21
21
  line-height: $line-height-heading;
22
22
 
23
- // ネストされたリスト(第2レベル)
23
+ // Nested lists (2nd level)
24
24
  ul,
25
25
  ol {
26
26
  font-size: calc(#{$font-size-body} / #{$font-size-heading} * 1em);
27
27
  font-weight: $font-weight-body;
28
28
  line-height: $line-height-body;
29
29
 
30
- // 第3レベル以降はサイズを維持
30
+ // 3rd level and beyond maintain size
31
31
  ul,
32
32
  ol {
33
33
  font-size: 1em;
@@ -1,7 +1,7 @@
1
1
  // ===== _display.scss =====
2
- // 短い文章を大きく表示したり、1枚の写真や図を目立たせるページ用スタイル
2
+ // Styles for pages displaying short text prominently or highlighting a single photo/diagram
3
3
  //
4
- // 使用方法: <!-- _class: display -->
4
+ // Usage: <!-- _class: display -->
5
5
 
6
6
  @mixin configure(
7
7
  $font-size,
@@ -9,32 +9,32 @@
9
9
  $font-weight-normal: normal
10
10
  ) {
11
11
  &.display {
12
- // 上下左右中央揃え
12
+ // Center horizontally and vertically
13
13
  justify-content: center;
14
14
  align-items: center;
15
15
 
16
- // p: メイン文章(上下左右中央揃え)
16
+ // p: Main text (centered horizontally and vertically)
17
17
  p {
18
18
  margin: 0;
19
19
  text-align: center;
20
20
  }
21
21
 
22
- // img, iframeが存在しない場合、pタグを大きく表示
22
+ // When img or iframe doesn't exist, display p tag prominently
23
23
  &:not(:has(img, iframe)) p {
24
24
  font-size: $font-size;
25
25
  font-weight: $font-weight-bold;
26
26
  }
27
27
 
28
- // img, iframe: メディア要素(上下左右中央揃え)
29
- // emojiクラスは除外
28
+ // img, iframe: Media elements (centered horizontally and vertically)
29
+ // Excludes emoji class
30
30
  img:not(.emoji),
31
31
  iframe {
32
32
  display: block;
33
33
  margin: 0 0;
34
34
  }
35
35
 
36
- // pタグが存在する場合、メディア要素の下にマージンを追加
37
- // emojiクラスは除外
36
+ // When p tag exists, add margin below media elements
37
+ // Excludes emoji class
38
38
  &:has(p) img:not(.emoji),
39
39
  &:has(p) iframe {
40
40
  margin: 0 0 1em;
@@ -1,11 +1,9 @@
1
1
  @charset "utf-8";
2
2
 
3
- /*!
4
- * Page Styles - 特定用途に特化したページスタイル
5
- *
6
- * @use '@subroh0508/marp-theme-canvas/scss/page';
7
- * @use '@subroh0508/marp-theme-canvas/scss/page/title';
8
- */
3
+ // Page Styles - Specialized page styles for specific purposes
4
+ //
5
+ // @use '@subroh0508/marp-theme-canvas/scss/page';
6
+ // @use '@subroh0508/marp-theme-canvas/scss/page/title';
9
7
 
10
8
  @forward 'agenda' as agenda-*;
11
9
  @forward 'display' as display-*;
@@ -1,12 +1,12 @@
1
1
  // ===== _section.scss =====
2
- // 中扉ページ用スタイル
2
+ // Styles for section divider page
3
3
  //
4
- // 使用方法: <!-- _class: section -->
4
+ // Usage: <!-- _class: section -->
5
5
 
6
6
  @mixin configure($font-size, $font-weight: bold) {
7
7
  &.section {
8
- // p: セクションタイトル
9
- // 上下中央揃え、左寄せ
8
+ // p: Section title
9
+ // Vertically centered, left-aligned
10
10
  p {
11
11
  flex: 1;
12
12
  display: flex;
@@ -1,12 +1,12 @@
1
1
  // ===== _title.scss =====
2
- // タイトルページ用スタイル
2
+ // Styles for title page
3
3
  //
4
- // 使用方法: <!-- _class: title -->
4
+ // Usage: <!-- _class: title -->
5
5
 
6
6
  @mixin configure($font-size-title, $color-metadata-text) {
7
7
  &.title {
8
- // h1: タイトル文字列
9
- // section上8割を占有、上下中央揃え、左寄せ
8
+ // h1: Title text
9
+ // Occupies 80% of section, vertically centered, left-aligned
10
10
  h1 {
11
11
  font-size: $font-size-title;
12
12
  flex: 0 0 80%;
@@ -16,14 +16,14 @@
16
16
  justify-content: center;
17
17
  margin: 0;
18
18
 
19
- // small: サブタイトル
19
+ // small: Subtitle
20
20
  small {
21
21
  margin-top: 0.5em;
22
22
  font-size: 0.5em;
23
23
  }
24
24
  }
25
25
 
26
- // h1直後のp: 日付・イベント名・著者名
26
+ // p after h1: Date, event name, author name
27
27
  h1 + p {
28
28
  flex: 1;
29
29
  display: flex;
@@ -1,11 +1,11 @@
1
1
  // ===== _toc.scss =====
2
- // 目次ページ用スタイル
2
+ // Styles for table of contents page
3
3
  //
4
- // 使用方法: <!-- _class: toc -->
4
+ // Usage: <!-- _class: toc -->
5
5
 
6
6
  @mixin configure($font-size, $line-height) {
7
7
  &.toc {
8
- // リスト: 目次項目(直接の子要素のみ)
8
+ // List: Table of contents items (direct children only)
9
9
  > ul,
10
10
  > ol {
11
11
  font-size: $font-size;
@@ -0,0 +1,110 @@
1
+ # theme
2
+
3
+ Theme modules (white-canvas and black-canvas, importable via @use)
4
+
5
+ ## Required CSS Variables
6
+
7
+ The following CSS variables have no default values and must be defined when used.
8
+
9
+ | Variable | Description | Used in |
10
+ |----------|-------------|---------|
11
+ | `--color-primary` | Primary color | h2 text color |
12
+ | `--color-accent` | Accent color | mark tag background |
13
+
14
+ ## CSS Variables Reference
15
+
16
+ ### Colors (Basic)
17
+
18
+ | Variable | Description | Used in | white-canvas | black-canvas |
19
+ |----------|-------------|---------|--------------|--------------|
20
+ | `--color-black` | Black | - | `#000` | `#000` |
21
+ | `--color-white` | White | Slide background (white) | `#fff` | `#fff` |
22
+ | `--color-grey-lightest` | Grey (lightest) | Table header background (white) | `#cbd5e1` (slate-300) | `#f8fafc` (slate-50) |
23
+ | `--color-grey-lighter` | Grey (lighter) | - | `#94a3b8` (slate-400) | `#f1f5f9` (slate-100) |
24
+ | `--color-grey-light` | Grey (light) | Title metadata (white), page number/header/footer (black) | `#64748b` (slate-500) | `#e2e8f0` (slate-200) |
25
+ | `--color-grey-medium` | Grey (medium) | Page number/header/footer (white), blockquote text/mark, title metadata (black) | `#475569` (slate-600) | `#cbd5e1` (slate-300) |
26
+ | `--color-grey-dark` | Grey (dark) | Table header background (black) | `#334155` (slate-700) | `#1e293b` (slate-800) |
27
+ | `--color-grey-darker` | Grey (darker) | - | `#1e293b` (slate-800) | `#0f172a` (slate-900) |
28
+ | `--color-grey-darkest` | Grey (darkest) | Body text (white), slide background (black) | `#0f172a` (slate-900) | `#020617` (slate-950) |
29
+ | `--color-link` | Link color | a tag | `#2563eb` (blue-600) | `#60a5fa` (blue-400) |
30
+
31
+ ### Colors (Component)
32
+
33
+ | Variable | Description | white-canvas | black-canvas |
34
+ |----------|-------------|--------------|--------------|
35
+ | `--color-blockquote-background` | Blockquote background | `color-mix(grey-light 10%)` | `color-mix(grey-light 15%)` |
36
+ | `--color-blockquote-mark` | Blockquote mark color | `grey-medium` | `grey-medium` |
37
+ | `--color-blockquote-text` | Blockquote text color | `grey-medium` | `grey-medium` |
38
+ | `--color-table-row-bg` | Table row background | `white` | `grey-darkest` |
39
+ | `--color-table-row-bg-header` | Table header background | `grey-lightest` | `grey-dark` |
40
+ | `--color-table-border` | Table border color | `grey-light` | `grey-medium` |
41
+ | `--color-code-bg` | Code block background | `color-mix(grey-light 10%)` | `color-mix(grey-light 15%)` |
42
+ | `--color-code-fg` | Code block text color | `grey-darkest` | `grey-lightest` |
43
+
44
+ ### Fonts
45
+
46
+ | Variable | Description | Used in | Default |
47
+ |----------|-------------|---------|---------|
48
+ | `--font-family-base` | Base font | Entire slide | `'Noto Sans JP', sans-serif` |
49
+ | `--font-family-mono` | Monospace font | Code blocks | `ui-monospace, SFMono-Regular, ...` |
50
+ | `--font-size-base` | Base font size | Entire slide | `40px` |
51
+ | `--font-size-display` | Display size | title page, display page | `2.5em` |
52
+ | `--font-size-title` | Title size | h1, section page | `2em` |
53
+ | `--font-size-heading` | Heading size | h2, toc page, agenda page heading | `1.3em` |
54
+ | `--font-size-medium` | Medium size | h3 | `1.15em` |
55
+ | `--font-size-body` | Body size | agenda page body, blockquote | `1em` |
56
+ | `--font-size-small` | Small size | - | `0.85em` |
57
+ | `--font-size-note` | Note size | Page number, header, footer | `0.7em` |
58
+ | `--font-weight-normal` | Normal weight | h5, h6, agenda page body | `400` |
59
+ | `--font-weight-bold` | Bold weight | h1-h4, agenda page heading, display page emphasis | `700` |
60
+ | `--font-weight-black` | Black weight | - | `900` |
61
+
62
+ ### Line Heights
63
+
64
+ | Variable | Description | Used in | Default |
65
+ |----------|-------------|---------|---------|
66
+ | `--line-height-tight` | Tight line height | Headings, blockquote | `1.2` |
67
+ | `--line-height-normal` | Normal line height | Entire slide, agenda page body | `1.45` |
68
+ | `--line-height-loose` | Loose line height | toc page, agenda page heading | `2` |
69
+
70
+ ### Layout
71
+
72
+ | Variable | Description | Default |
73
+ |----------|-------------|---------|
74
+ | `--slide-padding-x` | Slide horizontal padding | `80px` |
75
+ | `--slide-padding-y` | Slide vertical padding | `80px` |
76
+ | `--header-footer-margin-x` | Header/footer/page number horizontal margin | `80px` |
77
+ | `--header-footer-margin-y` | Header/footer/page number vertical margin | `20px` |
78
+ | `--border-radius` | Border radius (blockquote) | `8px` |
79
+
80
+ ## Available Mixins
81
+
82
+ | Mixin | Description |
83
+ |-------|-------------|
84
+ | `apply()` | Apply CSS variables and styles at once. Can add/override CSS variables via `@content` |
85
+ | `variables()` | Output CSS variables only. Can add/override CSS variables via `@content` |
86
+ | `styles()` | Output styles only (excludes CSS variables) |
87
+
88
+ ## Usage Example
89
+
90
+ ```scss
91
+ /*!
92
+ * @theme my-custom-theme
93
+ */
94
+
95
+ @use '@subroh0508/marp-theme-canvas/scss/white-canvas' as white-canvas;
96
+
97
+ @import url('https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@400;700;900&display=swap');
98
+
99
+ @include white-canvas.apply() {
100
+ --color-primary: #e11d48;
101
+ --color-accent: #fde047;
102
+ }
103
+ ```
104
+
105
+ ## File Structure
106
+
107
+ | File | Description |
108
+ |------|-------------|
109
+ | `_white-canvas.scss` | Light theme module |
110
+ | `_black-canvas.scss` | Dark theme module |