Files
gh-atournayre-claude-market…/commands/style-genui.md
2025-11-29 17:58:59 +08:00

347 lines
12 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: style:genui
description: Generative UI with embedded modern styling
---
**À partir de maintenant et pour toutes les réponses suivantes, applique ce style de réponse:**
After every request generate complete, self-contained HTML documents with embedded modern styling and then open it in a browser:
## Variables
REPORT_PATH: ~/.claude/reports
## Workflow
1. After you complete the user's request do the following:
2. Understand the user's request and what HTML content is needed
3. Create a complete HTML document with all necessary tags and embedded CSS styles
4. Save the HTML file to `REPORT_PATH` with a descriptive name and `.html` extension (see `## File Output Convention` below)
5. IMPORTANT: Open the file in the default web browser using the `open` command
## HTML Document Requirements
- Generate COMPLETE HTML5 documents with `<!DOCTYPE html>`, `<html>`, `<head>`, and `<body>` tags
- Include UTF-8 charset and responsive viewport meta tags
- Embed all CSS directly in a `<style>` tag within `<head>`
- Create self-contained pages that work without external dependencies
- Use semantic HTML5 elements for proper document structure
- IMPORTANT: If links to external resources referenced, ensure they are accessible and relevant (footer)
- IMPORTANT: If files are referenced, created a dedicated section for them (footer)
## Visual Theme and Styling
Apply this consistent modern theme to all generated HTML:
### Color Palette
Dark mode (default):
- Primary blue: `#3498db` (for accents, links, borders)
- Light text: `#e8e8e8` (for main text)
- Medium light: `#b8b8b8` (for subheadings)
- Dark background: `#1a1a1a` (for main background)
- Code background: `#2d2d2d` (for code blocks)
- Info blue: `#1a3a4a` (for info sections)
- Success green: `#1a3a2a` (for success messages)
- Warning orange: `#3a2a1a` (for warnings)
- Error red: `#3a1a1a` (for errors)
Light mode:
- Primary blue: `#3498db` (for accents, links, borders)
- Dark blue: `#2c3e50` (for main headings)
- Medium gray: `#34495e` (for subheadings)
- Light gray: `#f5f5f5` (for code backgrounds)
- Info blue: `#e8f4f8` (for info sections)
- Success green: `#d4edda` (for success messages)
- Warning orange: `#fff3cd` (for warnings)
- Error red: `#f8d7da` (for errors)
### Typography
```css
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif;
line-height: 1.6;
color: #e8e8e8;
background-color: #1a1a1a;
}
body.light-mode {
color: #333;
background-color: #fff;
}
code {
font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', 'Courier New', monospace;
}
```
### Layout
- Max width: 900px centered with auto margins
- Body padding: 20px
- Main content container: white background with subtle shadow
- Border radius: 8px for containers, 4px for code blocks
### Component Styling
- **Headers**: Border-bottom accent on h2, proper spacing hierarchy
- **Code blocks**: Dark background (#2d2d2d) with left border accent (#3498db) - light mode: (#f8f9fa) with (#007acc)
- **Inline code**: Dark background (#404040) with padding and border-radius - light mode: (#f5f5f5)
- **Info/Warning/Error sections**: Colored left border with tinted background (dark mode colors by default)
- **Tables**: Clean borders, alternating row colors, proper padding
- **Lists**: Adequate spacing between items
- **Mode toggle**: Button in top-right corner to switch between dark/light modes
## Document Structure Template
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>[Descriptive Page Title]</title>
<style>
/* Complete embedded styles here with dark/light mode support */
body { ... }
body.light-mode { ... }
article { ... }
/* All component styles with mode variants */
.theme-toggle {
position: fixed;
top: 20px;
right: 20px;
padding: 8px 16px;
border: 1px solid #3498db;
background: transparent;
color: #3498db;
border-radius: 4px;
cursor: pointer;
}
/* Code container and copy button styles */
.code-container {
position: relative;
margin: 1em 0;
}
.copy-btn {
position: absolute;
top: 8px;
right: 8px;
padding: 4px 8px;
background: #3498db;
color: white;
border: none;
border-radius: 4px;
cursor: pointer;
font-size: 12px;
z-index: 10;
transition: background 0.2s;
}
.copy-btn:hover {
background: #2980b9;
}
.copy-btn.copied {
background: #27ae60;
}
</style>
</head>
<body>
<button class="theme-toggle" onclick="toggleTheme()">🌞 Light</button>
<article>
<header>
<h1>[Main Title]</h1>
</header>
<main>
[Content sections]
</main>
<footer>
[Optional footer]
</footer>
</article>
<script>
function toggleTheme() {
document.body.classList.toggle('light-mode');
const btn = document.querySelector('.theme-toggle');
btn.textContent = document.body.classList.contains('light-mode') ? '🌙 Dark' : '🌞 Light';
}
function copyCode(button) {
const codeBlock = button.parentElement.querySelector('pre code');
const text = codeBlock.textContent;
navigator.clipboard.writeText(text).then(() => {
const originalText = button.textContent;
button.textContent = '✓ Copied!';
button.classList.add('copied');
setTimeout(() => {
button.textContent = originalText;
button.classList.remove('copied');
}, 2000);
}).catch(err => {
// Fallback pour les anciens navigateurs
const textarea = document.createElement('textarea');
textarea.value = text;
textarea.style.position = 'fixed';
textarea.style.opacity = '0';
document.body.appendChild(textarea);
textarea.select();
document.execCommand('copy');
document.body.removeChild(textarea);
button.textContent = '✓ Copied!';
button.classList.add('copied');
setTimeout(() => {
button.textContent = '📋 Copy';
button.classList.remove('copied');
}, 2000);
});
}
</script>
</body>
</html>
```
## Special Sections
Create styled sections for different content types:
### Info Section
```html
<section class="info-section">
<h3> Information</h3>
<p>...</p>
</section>
```
Style: Dark mode - Dark blue background (#1a3a4a), blue left border. Light mode - Light blue background (#e8f4f8), blue left border
### Success Section
```html
<section class="success-section">
<h3>✅ Success</h3>
<p>...</p>
</section>
```
Style: Dark mode - Dark green background (#1a3a2a), green left border. Light mode - Light green background (#d4edda), green left border
### Warning Section
```html
<section class="warning-section">
<h3>⚠️ Warning</h3>
<p>...</p>
</section>
```
Style: Dark mode - Dark orange background (#3a2a1a), orange left border. Light mode - Light orange background (#fff3cd), orange left border
### Error Section
```html
<section class="error-section">
<h3>❌ Error</h3>
<p>...</p>
</section>
```
Style: Dark mode - Dark red background (#3a1a1a), red left border. Light mode - Light red background (#f8d7da), red left border
## Code Display
- Syntax highlighting through class names (language-python, language-javascript, etc.)
- Line numbers for longer code blocks
- Horizontal scrolling for wide code
- Proper indentation and formatting
- **Copy button**: Each code block must have a copy-to-clipboard button in the top-right corner
### Code Block Structure
```html
<div class="code-container">
<button class="copy-btn" onclick="copyCode(this)">📋 Copy</button>
<pre><code class="language-javascript">// Your code here</code></pre>
</div>
```
### Copy Button Styling
```css
.code-container {
position: relative;
}
.copy-btn {
position: absolute;
top: 8px;
right: 8px;
padding: 4px 8px;
background: #3498db;
color: white;
border: none;
border-radius: 4px;
cursor: pointer;
font-size: 12px;
z-index: 10;
}
.copy-btn:hover {
background: #2980b9;
}
.copy-btn.copied {
background: #27ae60;
}
```
### Copy Function JavaScript
```javascript
function copyCode(button) {
const codeBlock = button.parentElement.querySelector('pre code');
const text = codeBlock.textContent;
navigator.clipboard.writeText(text).then(() => {
const originalText = button.textContent;
button.textContent = '✓ Copied!';
button.classList.add('copied');
setTimeout(() => {
button.textContent = originalText;
button.classList.remove('copied');
}, 2000);
}).catch(err => {
// Fallback pour les anciens navigateurs
const textarea = document.createElement('textarea');
textarea.value = text;
textarea.style.position = 'fixed';
textarea.style.opacity = '0';
document.body.appendChild(textarea);
textarea.select();
document.execCommand('copy');
document.body.removeChild(textarea);
button.textContent = '✓ Copied!';
button.classList.add('copied');
setTimeout(() => {
button.textContent = '📋 Copy';
button.classList.remove('copied');
}, 2000);
});
}
```
## Interactive Elements (when appropriate)
- Buttons with hover states
- Collapsible sections for lengthy content
- Smooth transitions on interactive elements
- Copy-to-clipboard functionality for all code blocks (mandatory)
## File Output Convention
When generating HTML files:
1. Save to `REPORT_PATH` directory with descriptive names
2. Use `.html` extension
3. Automatically open with `open` command after creation
4. Include timestamp in the filename and a concise description of the output: `cc_genui_<concise description>_YYYYMMDD_HHMMSS.html`
## Response Pattern
1. First, briefly describe what HTML will be generated
2. Create the complete HTML file with all embedded styles
3. Save to `REPORT_PATH` directory
4. Open the file in the browser
5. Provide a summary of what was created and where it was saved
## Key Principles
- **Self-contained**: Every HTML file must work standalone without external dependencies
- **Professional appearance**: Clean, modern, readable design
- **Accessibility**: Proper semantic HTML, good contrast ratios
- **Responsive**: Works well on different screen sizes
- **Performance**: Minimal CSS, no external requests
- **Browser compatibility**: Standard HTML5 and CSS3 that works in all modern browsers
Always prefer creating complete HTML documents over partial snippets. The goal is to provide instant, beautiful, browser-ready output that users can immediately view and potentially share or save.
## Response Guidelines
- After generating the html: Concisely summarize your work, and link to the generated file path
- The last piece of your response should be two things.
- You're executed the `open` command to open the file in the default web browser.
- A path to the generated HTML file, e.g. `REPORT_PATH/cc_genui_<concise description>_YYYYMMDD_HHMMSS.html`.