Skip to content

Commit db2bb9a

Browse files
authored
Merge pull request #8 from mozumasu/feature/qiita-bash-update-claude-code
feat: Qiita Bash用プレゼンテーション - Claude Codeテーマとネオン効果の追加
2 parents 1472cf3 + e5feca3 commit db2bb9a

6 files changed

Lines changed: 110 additions & 61 deletions

File tree

slides.md

Lines changed: 29 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,20 @@ mdc: true
1919
---
2020

2121
<div class="text-center">
22-
<div class="font-handwritten-jp-casual text-2xl mb-2">CLI資産を活かせ !</div>
22+
<div class="font-handwritten-jp-casual neon-glow-purple text-2xl mb-2">CLI資産を活かせ !</div>
2323
<div>
2424
<span class="neon-glow-orange flicker text-7xl font-bold">Claude Code</span>
25-
<span class="font-handwritten-jp-casual text-3xl">で整える</span>
25+
<span class="font-handwritten-jp-casual neon-glow-purple text-3xl">で整える</span>
2626
</div>
27-
<div class="font-handwritten-jp-cassual text-4xl mt-6">アウトプットワークフロー</div>
27+
<div class="font-handwritten-jp-cassual neon-glow-pink text-5xl mt-5">アウトプットワークフロー</div>
2828
</div>
2929

30-
<p class="opacity-35">もずます</p>
30+
<div class="font-handwritten-jp-casual neon-glow-matrix-colored flicker-slow text-4xl absolute bottom-25 left-175 transform -rotate-15">2025/09/08<br> Qiita Bash</div>
3131

32-
<div class="font-handwritten-jp-casual text-green-400 text-5xl opacity-85 absolute bottom-25 left-170 transform -rotate-15">2025/09/08 Qiita Bash</div>
32+
<br>
33+
<div class="opacity-70 mt-4">
34+
mozumasu
35+
</div>
3336

3437
---
3538
layout: center
@@ -118,7 +121,7 @@ layout: two-cols-header
118121
## 便利ショートカットキー
119122

120123
- ドキュメント: [Interactive Mode](https://docs.anthropic.com/ja/docs/claude-code/interactive-mode)
121-
- `?` を入力すると追加のショートカットが表示される
124+
- `?` でショートカット表示
122125
- **undo** - 直前の操作を取り消し
123126
- **suspend** - セッションを一時停止
124127

@@ -201,11 +204,26 @@ transition: slide-up
201204
layout: center
202205
---
203206

204-
# - <ruby>WezTerm<rt>ターミナル</rt></ruby>も<ruby>Neovim<rt>エディタ</rt></ruby>もLuaで設定できる
205-
206-
<br>
207-
208-
# - コマンドの知識が活かせる
207+
<div class="text-center space-y-8">
208+
<div class="flex items-center justify-center gap-4">
209+
<div class="text-4xl neon-glow-cyan">
210+
<ruby>WezTerm<rt class="text-xs opacity-60">ターミナル</rt></ruby>
211+
</div>
212+
<span class="text-2xl">も</span>
213+
<div class="text-4xl neon-glow-purple">
214+
<ruby>Neovim<rt class="text-xs opacity-60">エディタ</rt></ruby>
215+
</div>
216+
<span class="text-2xl">も</span>
217+
<div class="text-4xl neon-glow-orange">
218+
<ruby>Lua<rt class="text-xs opacity-60">プログラミング言語</rt></ruby>
219+
</div>
220+
<span class="text-2xl">で設定できる</span>
221+
</div>
222+
223+
<div class="text-4xl mt-12 neon-glow-matrix flicker-slow">
224+
CLIの知識が活かせる
225+
</div>
226+
</div>
209227

210228
---
211229
layout: center
@@ -637,10 +655,6 @@ class: text-center
637655

638656
# ご清聴ありがとうございました
639657

640-
<div class="mt-10 text-2xl opacity-70">
641-
<p>@mozumasu</p>
642-
</div>
643-
644658
<div class="mt-10">
645659
<div class="text-xl neon-glow-cyan">
646660
CLIで快適なアウトプットライフを!

slidev-theme-neon/components/NeonBackground.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ const props = defineProps<{
1313
}>()
1414
1515
// 現在のNeonテーマ
16-
const currentNeonTheme = ref<NeonTheme>('default')
16+
const currentNeonTheme = ref<NeonTheme>('synthwave')
1717
const neonConfig = computed(() => NEON_THEMES[currentNeonTheme.value])
1818
1919
// ポリゴン生成用の変数

slidev-theme-neon/components/SelfIntroduction.vue

Lines changed: 51 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -324,15 +324,17 @@ onMounted(() => {
324324
font-size: 1.35rem;
325325
font-weight: 500;
326326
font-family: "Outfit", "Inter", sans-serif;
327-
color: rgba(255, 255, 255, 0.7);
327+
color: #fff;
328328
letter-spacing: 0.08em;
329329
line-height: 1;
330330
opacity: 1;
331331
margin-top: 0.5rem;
332332
position: relative;
333333
text-shadow:
334-
0 1px 2px rgba(0, 0, 0, 0.15),
335-
0 2px 4px rgba(0, 0, 0, 0.1);
334+
0 0 1px #0ff,
335+
0 0 15px #0ff,
336+
0 0 8px #0ff,
337+
0 0 25px #0ff;
336338
backdrop-filter: blur(2px);
337339
}
338340
@@ -373,6 +375,20 @@ onMounted(() => {
373375
.role-text {
374376
font-family: "JetBrains Mono", "Fira Code", "SF Mono", monospace;
375377
letter-spacing: -0.02em;
378+
color: #fff;
379+
text-shadow:
380+
0 0 1px #ffff00,
381+
0 0 10px #ffff00,
382+
0 0 5px #ffff00;
383+
}
384+
385+
.theme-neon .role-text {
386+
color: #fff;
387+
text-shadow:
388+
0 0 2px #ff10f0,
389+
0 0 10px #ff10f0,
390+
0 0 20px #ff10f0,
391+
0 0 30px #ff10f0;
376392
}
377393
378394
/* Tools Section */
@@ -387,10 +403,13 @@ onMounted(() => {
387403
font-weight: 600;
388404
text-transform: uppercase;
389405
letter-spacing: 0.2em;
390-
color: rgba(255, 255, 255, 0.5);
406+
color: #fff;
391407
opacity: 1;
392408
margin: 0 0 0.4rem 0;
393-
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
409+
text-shadow:
410+
0 0 1px #ff10f0,
411+
0 0 10px #ff10f0,
412+
0 0 5px #ff10f0;
394413
}
395414
396415
.tools-badges {
@@ -446,14 +465,25 @@ onMounted(() => {
446465
}
447466
448467
.tool-name {
449-
color: rgba(255, 255, 255, 0.9);
468+
color: #fff;
450469
font-weight: 600;
451470
font-family: "Outfit", "Inter", "Hiragino Sans", sans-serif;
452471
font-size: 0.8rem;
453472
letter-spacing: 0.03em;
454473
position: relative;
455474
z-index: 1;
456-
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
475+
text-shadow:
476+
0 0 1px #8b5cf6,
477+
0 0 10px #8b5cf6,
478+
0 0 5px #a78bfa;
479+
}
480+
481+
.theme-neon .tool-name {
482+
text-shadow:
483+
0 0 2px #0ff,
484+
0 0 15px #0ff,
485+
0 0 8px #0ff,
486+
0 0 25px #0ff;
457487
}
458488
459489
/* Achievement Section */
@@ -494,9 +524,12 @@ onMounted(() => {
494524
font-family: "Outfit", sans-serif;
495525
text-transform: uppercase;
496526
letter-spacing: 0.15em;
497-
color: rgba(255, 255, 255, 0.55);
527+
color: #fff;
498528
opacity: 1;
499-
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
529+
text-shadow:
530+
0 0 1px #00ff41,
531+
0 0 10px #00ff41,
532+
0 0 5px #39ff14;
500533
}
501534
502535
.achievement-text {
@@ -508,6 +541,14 @@ onMounted(() => {
508541
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.15);
509542
}
510543
544+
.theme-neon .achievement-text {
545+
color: #fff;
546+
text-shadow:
547+
0 0 2px rgba(255, 215, 0, 0.8),
548+
0 0 10px rgba(255, 215, 0, 0.5),
549+
0 0 15px rgba(255, 215, 0, 0.3);
550+
}
551+
511552
/* Neon Theme */
512553
.theme-neon {
513554
--bg-color: rgba(0, 0, 0, 0.3);
@@ -552,27 +593,7 @@ onMounted(() => {
552593
/* ホバー効果を無効化 */
553594
}
554595
555-
.theme-neon .avatar-name {
556-
color: rgba(200, 200, 200, 0.85);
557-
text-shadow:
558-
0 1px 2px rgba(0, 0, 0, 0.3),
559-
0 2px 4px rgba(0, 0, 0, 0.2);
560-
}
561-
562-
.theme-neon .section-title,
563-
.theme-neon .achievement-label {
564-
color: rgba(180, 180, 180, 0.6);
565-
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);
566-
}
567-
568-
.theme-neon .role-content,
569-
.theme-neon .achievement-text {
570-
color: rgba(220, 220, 220, 0.85);
571-
}
572-
573-
.theme-neon .tool-name {
574-
color: rgba(230, 230, 230, 0.9);
575-
}
596+
/* ネオンテーマではオーバーライドを削除(上記のネオン効果を維持) */
576597
577598
.theme-ocean {
578599
--bg-color: rgba(240, 248, 255, 0.3);

slidev-theme-neon/components/ThemeIndicator.vue

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import type { NeonTheme } from "../composables/useNeonThemes";
44
55
// プロパティ
66
const props = defineProps<{
7-
currentTheme: "neon";
7+
currentTheme: "synthwave" | "neon";
88
neonTheme?: NeonTheme;
99
}>();
1010
@@ -15,27 +15,26 @@ const emit = defineEmits<{
1515
1616
// 算出プロパティ
1717
const themeIcon = computed(() => "");
18-
const themeVariant = computed(() => {
19-
if (props.neonTheme) {
20-
return props.neonTheme.toUpperCase();
21-
}
22-
return "";
18+
19+
// 現在のテーマ名を取得
20+
const displayThemeName = computed(() => {
21+
// neonThemeが指定されていればそれを使用、なければsynthwave
22+
const theme = props.neonTheme || 'synthwave';
23+
return theme.toUpperCase();
2324
});
2425
2526
const hintText = computed(() => {
26-
return "Press W for neon style";
27+
return "Press W to switch theme";
2728
});
2829
</script>
2930

3031
<template>
3132
<div class="theme-indicator">
3233
<div
33-
class="theme-badge neon"
34+
:class="['theme-badge', neonTheme || 'synthwave']"
3435
@click="$emit('switchTheme')"
3536
>
36-
{{ themeIcon }}
37-
{{ currentTheme.toUpperCase() }}
38-
<span v-if="themeVariant" class="theme-variant"> ({{ themeVariant }}) </span>
37+
{{ themeIcon }} {{ displayThemeName }}
3938
</div>
4039
<div class="theme-hint">{{ hintText }}</div>
4140
</div>
@@ -72,6 +71,21 @@ const hintText = computed(() => {
7271
box-shadow: 0 0 10px rgba(139, 92, 246, 0.5);
7372
}
7473
74+
.theme-badge.synthwave {
75+
background: linear-gradient(135deg, #ff006e 0%, #8338ec 50%, #3a86ff 100%);
76+
box-shadow: 0 0 20px rgba(255, 0, 110, 0.7);
77+
}
78+
79+
.theme-badge.cyberpunk {
80+
background: linear-gradient(135deg, #ff0080 0%, #00ff88 100%);
81+
box-shadow: 0 0 20px rgba(255, 0, 128, 0.6);
82+
}
83+
84+
.theme-badge.default {
85+
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
86+
box-shadow: 0 0 20px rgba(102, 126, 234, 0.6);
87+
}
88+
7589
.theme-badge:hover {
7690
transform: scale(1.05);
7791
box-shadow: 0 0 20px currentColor;

slidev-theme-neon/composables/useNeonThemes.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ export const NEON_THEMES: Record<NeonTheme, NeonSettings> = {
9999

100100
// 次のNeonテーマを取得
101101
export const getNextNeonTheme = (current: NeonTheme): NeonTheme => {
102-
const themes: NeonTheme[] = ["default", "cyberpunk", "synthwave"];
102+
const themes: NeonTheme[] = ["synthwave", "cyberpunk", "default"];
103103
const currentIndex = themes.indexOf(current);
104104
const nextIndex = (currentIndex + 1) % themes.length;
105105
return themes[nextIndex];

slidev-theme-neon/global-bottom.vue

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@ import ThemeIndicator from "./components/ThemeIndicator.vue";
55
66
// テーマプロパティ
77
const props = defineProps<{
8-
theme?: "neon";
8+
theme?: "synthwave" | "neon";
99
}>();
1010
1111
// 状態
12-
const currentTheme = ref(props.theme || "neon");
12+
const currentTheme = ref(props.theme || "synthwave");
1313
const currentSlideNo = ref(1);
1414
1515
// コンポーネント参照
@@ -70,6 +70,6 @@ onMounted(() => {
7070
<ThemeIndicator
7171
:current-theme="currentTheme"
7272
:neon-theme="getCurrentNeonTheme()"
73-
@switch-theme="() => {}"
73+
@switch-theme="() => neonRef?.switchNeonTheme()"
7474
/>
7575
</template>

0 commit comments

Comments
 (0)