Add skills library and plugin configs for Claude, Cursor, Codex, and OpenCode
- Add frontend-dev, fullstack-dev, and android-native-dev skills - Add plugin configs for Claude Code, Cursor, Codex, and OpenCode - Add English and Chinese READMEs with installation instructions - Add .gitignore
This commit is contained in:
782
skills/android-native-dev/SKILL.md
Normal file
782
skills/android-native-dev/SKILL.md
Normal file
@@ -0,0 +1,782 @@
|
||||
---
|
||||
name: android-native-dev
|
||||
description: Android native application development and UI design guide. Covers Material Design 3, Kotlin/Compose development, project configuration, accessibility, and build troubleshooting. Read this before Android native application development.
|
||||
license: MIT
|
||||
metadata:
|
||||
version: "1.0.0"
|
||||
category: mobile
|
||||
sources:
|
||||
- Material Design 3 Guidelines (material.io)
|
||||
- Android Developer Documentation (developer.android.com)
|
||||
- Google Play Quality Guidelines
|
||||
- WCAG Accessibility Guidelines
|
||||
---
|
||||
|
||||
## 1. Project Scenario Assessment
|
||||
|
||||
Before starting development, assess the current project state:
|
||||
|
||||
| Scenario | Characteristics | Approach |
|
||||
|----------|-----------------|----------|
|
||||
| **Empty Directory** | No files present | Full initialization required, including Gradle Wrapper |
|
||||
| **Has Gradle Wrapper** | `gradlew` and `gradle/wrapper/` exist | Use `./gradlew` directly for builds |
|
||||
| **Android Studio Project** | Complete project structure, may lack wrapper | Check wrapper, run `gradle wrapper` if needed |
|
||||
| **Incomplete Project** | Partial files present | Check missing files, complete configuration |
|
||||
|
||||
**Key Principles**:
|
||||
- Before writing business logic, ensure `./gradlew assembleDebug` succeeds
|
||||
- If `gradle.properties` is missing, create it first and configure AndroidX
|
||||
|
||||
### 1.1 Required Files Checklist
|
||||
|
||||
```
|
||||
MyApp/
|
||||
├── gradle.properties # Configure AndroidX and other settings
|
||||
├── settings.gradle.kts
|
||||
├── build.gradle.kts # Root level
|
||||
├── gradle/wrapper/
|
||||
│ └── gradle-wrapper.properties
|
||||
├── app/
|
||||
│ ├── build.gradle.kts # Module level
|
||||
│ └── src/main/
|
||||
│ ├── AndroidManifest.xml
|
||||
│ ├── java/com/example/myapp/
|
||||
│ │ └── MainActivity.kt
|
||||
│ └── res/
|
||||
│ ├── values/
|
||||
│ │ ├── strings.xml
|
||||
│ │ ├── colors.xml
|
||||
│ │ └── themes.xml
|
||||
│ └── mipmap-*/ # App icons
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2. Project Configuration
|
||||
|
||||
### 2.1 gradle.properties
|
||||
|
||||
```properties
|
||||
# Required configuration
|
||||
android.useAndroidX=true
|
||||
android.enableJetifier=true
|
||||
|
||||
# Build optimization
|
||||
org.gradle.parallel=true
|
||||
kotlin.code.style=official
|
||||
|
||||
# JVM memory settings (adjust based on project size)
|
||||
# Small projects: 2048m, Medium: 4096m, Large: 8192m+
|
||||
# org.gradle.jvmargs=-Xmx4096m -Dfile.encoding=UTF-8
|
||||
```
|
||||
|
||||
> **Note**: If you encounter `OutOfMemoryError` during build, increase `-Xmx` value. Large projects with many dependencies may require 8GB or more.
|
||||
|
||||
### 2.2 Dependency Declaration Standards
|
||||
|
||||
```kotlin
|
||||
dependencies {
|
||||
// Use BOM to manage Compose versions
|
||||
implementation(platform("androidx.compose:compose-bom:2024.02.00"))
|
||||
implementation("androidx.compose.ui:ui")
|
||||
implementation("androidx.compose.material3:material3")
|
||||
|
||||
// Activity & ViewModel
|
||||
implementation("androidx.activity:activity-compose:1.8.2")
|
||||
implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.7.0")
|
||||
}
|
||||
```
|
||||
|
||||
### 2.3 Build Variants & Product Flavors
|
||||
|
||||
Product Flavors allow you to create different versions of your app (e.g., free/paid, dev/staging/prod).
|
||||
|
||||
**Configuration in app/build.gradle.kts**:
|
||||
|
||||
```kotlin
|
||||
android {
|
||||
// Define flavor dimensions
|
||||
flavorDimensions += "environment"
|
||||
|
||||
productFlavors {
|
||||
create("dev") {
|
||||
dimension = "environment"
|
||||
applicationIdSuffix = ".dev"
|
||||
versionNameSuffix = "-dev"
|
||||
|
||||
// Different config values per flavor
|
||||
buildConfigField("String", "API_BASE_URL", "\"https://dev-api.example.com\"")
|
||||
buildConfigField("Boolean", "ENABLE_LOGGING", "true")
|
||||
|
||||
// Different resources
|
||||
resValue("string", "app_name", "MyApp Dev")
|
||||
}
|
||||
|
||||
create("staging") {
|
||||
dimension = "environment"
|
||||
applicationIdSuffix = ".staging"
|
||||
versionNameSuffix = "-staging"
|
||||
|
||||
buildConfigField("String", "API_BASE_URL", "\"https://staging-api.example.com\"")
|
||||
buildConfigField("Boolean", "ENABLE_LOGGING", "true")
|
||||
resValue("string", "app_name", "MyApp Staging")
|
||||
}
|
||||
|
||||
create("prod") {
|
||||
dimension = "environment"
|
||||
// No suffix for production
|
||||
|
||||
buildConfigField("String", "API_BASE_URL", "\"https://api.example.com\"")
|
||||
buildConfigField("Boolean", "ENABLE_LOGGING", "false")
|
||||
resValue("string", "app_name", "MyApp")
|
||||
}
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
debug {
|
||||
isDebuggable = true
|
||||
isMinifyEnabled = false
|
||||
}
|
||||
release {
|
||||
isDebuggable = false
|
||||
isMinifyEnabled = true
|
||||
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Build Variant Naming**: `{flavor}{BuildType}` → e.g., `devDebug`, `prodRelease`
|
||||
|
||||
**Gradle Build Commands**:
|
||||
|
||||
```bash
|
||||
# List all available build variants
|
||||
./gradlew tasks --group="build"
|
||||
|
||||
# Build specific variant (flavor + buildType)
|
||||
./gradlew assembleDevDebug # Dev flavor, Debug build
|
||||
./gradlew assembleStagingDebug # Staging flavor, Debug build
|
||||
./gradlew assembleProdRelease # Prod flavor, Release build
|
||||
|
||||
# Build all variants of a specific flavor
|
||||
./gradlew assembleDev # All Dev variants (debug + release)
|
||||
./gradlew assembleProd # All Prod variants
|
||||
|
||||
# Build all variants of a specific build type
|
||||
./gradlew assembleDebug # All flavors, Debug build
|
||||
./gradlew assembleRelease # All flavors, Release build
|
||||
|
||||
# Install specific variant to device
|
||||
./gradlew installDevDebug
|
||||
./gradlew installProdRelease
|
||||
|
||||
# Build and install in one command
|
||||
./gradlew installDevDebug && adb shell am start -n com.example.myapp.dev/.MainActivity
|
||||
```
|
||||
|
||||
**Access BuildConfig in Code**:
|
||||
|
||||
> **Note**: Starting from AGP 8.0, `BuildConfig` is no longer generated by default. You must explicitly enable it in your `build.gradle.kts`:
|
||||
> ```kotlin
|
||||
> android {
|
||||
> buildFeatures {
|
||||
> buildConfig = true
|
||||
> }
|
||||
> }
|
||||
> ```
|
||||
|
||||
```kotlin
|
||||
// Use build config values in your code
|
||||
val apiUrl = BuildConfig.API_BASE_URL
|
||||
val isLoggingEnabled = BuildConfig.ENABLE_LOGGING
|
||||
|
||||
if (BuildConfig.DEBUG) {
|
||||
// Debug-only code
|
||||
}
|
||||
```
|
||||
|
||||
**Flavor-Specific Source Sets**:
|
||||
|
||||
```
|
||||
app/src/
|
||||
├── main/ # Shared code for all flavors
|
||||
├── dev/ # Dev-only code and resources
|
||||
│ ├── java/
|
||||
│ └── res/
|
||||
├── staging/ # Staging-only code and resources
|
||||
├── prod/ # Prod-only code and resources
|
||||
├── debug/ # Debug build type code
|
||||
└── release/ # Release build type code
|
||||
```
|
||||
|
||||
**Multiple Flavor Dimensions** (e.g., environment + tier):
|
||||
|
||||
```kotlin
|
||||
android {
|
||||
flavorDimensions += listOf("environment", "tier")
|
||||
|
||||
productFlavors {
|
||||
create("dev") { dimension = "environment" }
|
||||
create("prod") { dimension = "environment" }
|
||||
|
||||
create("free") { dimension = "tier" }
|
||||
create("paid") { dimension = "tier" }
|
||||
}
|
||||
}
|
||||
// Results in: devFreeDebug, devPaidDebug, prodFreeRelease, etc.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. Kotlin Development Standards
|
||||
|
||||
### 3.1 Naming Conventions
|
||||
|
||||
| Type | Convention | Example |
|
||||
|------|------------|---------|
|
||||
| Class/Interface | PascalCase | `UserRepository`, `MainActivity` |
|
||||
| Function/Variable | camelCase | `getUserName()`, `isLoading` |
|
||||
| Constant | SCREAMING_SNAKE | `MAX_RETRY_COUNT` |
|
||||
| Package | lowercase | `com.example.myapp` |
|
||||
| Composable | PascalCase | `@Composable fun UserCard()` |
|
||||
|
||||
### 3.2 Code Standards (Important)
|
||||
|
||||
**Null Safety**:
|
||||
```kotlin
|
||||
// ❌ Avoid: Non-null assertion !! (may crash)
|
||||
val name = user!!.name
|
||||
|
||||
// ✅ Recommended: Safe call + default value
|
||||
val name = user?.name ?: "Unknown"
|
||||
|
||||
// ✅ Recommended: let handling
|
||||
user?.let { processUser(it) }
|
||||
```
|
||||
|
||||
**Exception Handling**:
|
||||
```kotlin
|
||||
// ❌ Avoid: Random try-catch in business layer swallowing exceptions
|
||||
fun loadData() {
|
||||
try {
|
||||
val data = api.fetch()
|
||||
} catch (e: Exception) {
|
||||
// Swallowing exception, hard to debug
|
||||
}
|
||||
}
|
||||
|
||||
// ✅ Recommended: Let exceptions propagate, handle at appropriate layer
|
||||
suspend fun loadData(): Result<Data> {
|
||||
return try {
|
||||
Result.success(api.fetch())
|
||||
} catch (e: Exception) {
|
||||
Result.failure(e) // Wrap and return, let caller decide handling
|
||||
}
|
||||
}
|
||||
|
||||
// ✅ Recommended: Unified handling in ViewModel
|
||||
viewModelScope.launch {
|
||||
runCatching { repository.loadData() }
|
||||
.onSuccess { _uiState.value = UiState.Success(it) }
|
||||
.onFailure { _uiState.value = UiState.Error(it.message) }
|
||||
}
|
||||
```
|
||||
|
||||
### 3.3 Threading & Coroutines (Critical)
|
||||
|
||||
**Thread Selection Principles**:
|
||||
|
||||
| Operation Type | Thread | Description |
|
||||
|----------------|--------|-------------|
|
||||
| UI Updates | `Dispatchers.Main` | Update View, State, LiveData |
|
||||
| Network Requests | `Dispatchers.IO` | HTTP calls, API requests |
|
||||
| File I/O | `Dispatchers.IO` | Local storage, database operations |
|
||||
| Compute Intensive | `Dispatchers.Default` | JSON parsing, sorting, encryption |
|
||||
|
||||
**Correct Usage**:
|
||||
```kotlin
|
||||
// In ViewModel
|
||||
viewModelScope.launch {
|
||||
// Default Main thread, can update UI State
|
||||
_uiState.value = UiState.Loading
|
||||
|
||||
// Switch to IO thread for network request
|
||||
val result = withContext(Dispatchers.IO) {
|
||||
repository.fetchData()
|
||||
}
|
||||
|
||||
// Automatically returns to Main thread, update UI
|
||||
_uiState.value = UiState.Success(result)
|
||||
}
|
||||
|
||||
// In Repository (suspend functions should be main-safe)
|
||||
suspend fun fetchData(): Data = withContext(Dispatchers.IO) {
|
||||
api.getData()
|
||||
}
|
||||
```
|
||||
|
||||
**Common Mistakes**:
|
||||
```kotlin
|
||||
// ❌ Wrong: Updating UI on IO thread
|
||||
viewModelScope.launch(Dispatchers.IO) {
|
||||
val data = api.fetch()
|
||||
_uiState.value = data // Crash or warning!
|
||||
}
|
||||
|
||||
// ❌ Wrong: Executing time-consuming operation on Main thread
|
||||
viewModelScope.launch {
|
||||
val data = api.fetch() // Blocking main thread! ANR
|
||||
}
|
||||
|
||||
// ✅ Correct: Fetch on IO, update on Main
|
||||
viewModelScope.launch {
|
||||
val data = withContext(Dispatchers.IO) { api.fetch() }
|
||||
_uiState.value = data
|
||||
}
|
||||
```
|
||||
|
||||
### 3.4 Visibility Rules
|
||||
|
||||
```kotlin
|
||||
// Default is public, declare explicitly when needed
|
||||
class UserRepository { // public
|
||||
private val cache = mutableMapOf<String, User>() // Visible only within class
|
||||
internal fun clearCache() {} // Visible only within module
|
||||
}
|
||||
|
||||
// data class properties are public by default, be careful when used across modules
|
||||
data class User(
|
||||
val id: String, // public
|
||||
val name: String
|
||||
)
|
||||
```
|
||||
|
||||
### 3.5 Common Syntax Pitfalls
|
||||
|
||||
```kotlin
|
||||
// ❌ Wrong: Accessing uninitialized lateinit
|
||||
class MyViewModel : ViewModel() {
|
||||
lateinit var data: String
|
||||
fun process() = data.length // May crash
|
||||
}
|
||||
|
||||
// ✅ Correct: Use nullable or default value
|
||||
class MyViewModel : ViewModel() {
|
||||
var data: String? = null
|
||||
fun process() = data?.length ?: 0
|
||||
}
|
||||
|
||||
// ❌ Wrong: Using return in lambda
|
||||
list.forEach { item ->
|
||||
if (item.isEmpty()) return // Returns from outer function!
|
||||
}
|
||||
|
||||
// ✅ Correct: Use return@forEach
|
||||
list.forEach { item ->
|
||||
if (item.isEmpty()) return@forEach
|
||||
}
|
||||
```
|
||||
|
||||
### 3.6 Server Response Data Class Fields Must Be Nullable
|
||||
|
||||
```kotlin
|
||||
// ❌ Wrong: Fields declared as non-null (server may not return them)
|
||||
data class UserResponse(
|
||||
val id: String = "",
|
||||
val name: String = "",
|
||||
val avatar: String = ""
|
||||
)
|
||||
|
||||
// ✅ Correct: All fields declared as nullable
|
||||
data class UserResponse(
|
||||
@SerializedName("id")
|
||||
val id: String? = null,
|
||||
@SerializedName("name")
|
||||
val name: String? = null,
|
||||
@SerializedName("avatar")
|
||||
val avatar: String? = null
|
||||
)
|
||||
```
|
||||
|
||||
### 3.7 Lifecycle Resource Management
|
||||
|
||||
```kotlin
|
||||
// ❌ Wrong: Only adding Observer, not removing
|
||||
class MyView : View {
|
||||
override fun onAttachedToWindow() {
|
||||
super.onAttachedToWindow()
|
||||
activity?.lifecycle?.addObserver(this)
|
||||
}
|
||||
// Memory leak!
|
||||
}
|
||||
|
||||
// ✅ Correct: Paired add and remove
|
||||
class MyView : View {
|
||||
override fun onAttachedToWindow() {
|
||||
super.onAttachedToWindow()
|
||||
activity?.lifecycle?.addObserver(this)
|
||||
}
|
||||
|
||||
override fun onDetachedFromWindow() {
|
||||
activity?.lifecycle?.removeObserver(this)
|
||||
super.onDetachedFromWindow()
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 3.8 Logging Level Usage
|
||||
|
||||
```kotlin
|
||||
import android.util.Log
|
||||
|
||||
// Info: Key checkpoints in normal flow
|
||||
Log.i(TAG, "loadData: started, userId = $userId")
|
||||
|
||||
// Warning: Abnormal but recoverable situations
|
||||
Log.w(TAG, "loadData: cache miss, fallback to network")
|
||||
|
||||
// Error: Failure/error situations
|
||||
Log.e(TAG, "loadData failed: ${error.message}")
|
||||
```
|
||||
|
||||
| Level | Use Case |
|
||||
|-------|----------|
|
||||
| `i` (Info) | Normal flow, method entry, key parameters |
|
||||
| `w` (Warning) | Recoverable exceptions, fallback handling, null returns |
|
||||
| `e` (Error) | Request failures, caught exceptions, unrecoverable errors |
|
||||
|
||||
---
|
||||
|
||||
## 4. Jetpack Compose Standards
|
||||
|
||||
### 4.1 @Composable Context Rules
|
||||
|
||||
```kotlin
|
||||
// ❌ Wrong: Calling Composable from non-Composable function
|
||||
fun showError(message: String) {
|
||||
Text(message) // Compile error!
|
||||
}
|
||||
|
||||
// ✅ Correct: Mark as @Composable
|
||||
@Composable
|
||||
fun ErrorMessage(message: String) {
|
||||
Text(message)
|
||||
}
|
||||
|
||||
// ❌ Wrong: Using suspend outside LaunchedEffect
|
||||
@Composable
|
||||
fun MyScreen() {
|
||||
val data = fetchData() // Error!
|
||||
}
|
||||
|
||||
// ✅ Correct: Use LaunchedEffect
|
||||
@Composable
|
||||
fun MyScreen() {
|
||||
var data by remember { mutableStateOf<Data?>(null) }
|
||||
LaunchedEffect(Unit) {
|
||||
data = fetchData()
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 4.2 State Management
|
||||
|
||||
```kotlin
|
||||
// Basic State
|
||||
var count by remember { mutableStateOf(0) }
|
||||
|
||||
// Derived State (avoid redundant computation)
|
||||
val isEven by remember { derivedStateOf { count % 2 == 0 } }
|
||||
|
||||
// Persist across recomposition (e.g., scroll position)
|
||||
val scrollState = rememberScrollState()
|
||||
|
||||
// State in ViewModel
|
||||
class MyViewModel : ViewModel() {
|
||||
private val _uiState = MutableStateFlow(UiState())
|
||||
val uiState: StateFlow<UiState> = _uiState.asStateFlow()
|
||||
}
|
||||
```
|
||||
|
||||
### 4.3 Common Compose Mistakes
|
||||
|
||||
```kotlin
|
||||
// ❌ Wrong: Creating objects in Composable (created on every recomposition)
|
||||
@Composable
|
||||
fun MyScreen() {
|
||||
val viewModel = MyViewModel() // Wrong!
|
||||
}
|
||||
|
||||
// ✅ Correct: Use viewModel() or remember
|
||||
@Composable
|
||||
fun MyScreen(viewModel: MyViewModel = viewModel()) {
|
||||
// ...
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5. Resources & Icons
|
||||
|
||||
### 5.1 App Icon Requirements
|
||||
|
||||
Must provide multi-resolution icons:
|
||||
|
||||
| Directory | Size | Purpose |
|
||||
|-----------|------|---------|
|
||||
| mipmap-mdpi | 48x48 | Baseline |
|
||||
| mipmap-hdpi | 72x72 | 1.5x |
|
||||
| mipmap-xhdpi | 96x96 | 2x |
|
||||
| mipmap-xxhdpi | 144x144 | 3x |
|
||||
| mipmap-xxxhdpi | 192x192 | 4x |
|
||||
|
||||
Recommended: Use Adaptive Icon (Android 8+):
|
||||
|
||||
```xml
|
||||
<!-- res/mipmap-anydpi-v26/ic_launcher.xml -->
|
||||
<adaptive-icon>
|
||||
<background android:drawable="@color/ic_launcher_background"/>
|
||||
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
|
||||
</adaptive-icon>
|
||||
```
|
||||
|
||||
### 5.2 Resource Naming Conventions
|
||||
|
||||
| Type | Prefix | Example |
|
||||
|------|--------|---------|
|
||||
| Layout | layout_ | `layout_main.xml` |
|
||||
| Image | ic_, img_, bg_ | `ic_user.png` |
|
||||
| Color | color_ | `color_primary` |
|
||||
| String | - | `app_name`, `btn_submit` |
|
||||
|
||||
### 5.3 Avoid Android Reserved Names (Important)
|
||||
|
||||
Variable names, resource IDs, colors, icons, and XML elements **must not** use Android reserved words or system resource names. Using reserved names causes build errors or resource conflicts.
|
||||
|
||||
**Common Reserved Names to Avoid**:
|
||||
|
||||
| Category | Reserved Names (Do NOT Use) |
|
||||
|----------|----------------------------|
|
||||
| Colors | `background`, `foreground`, `transparent`, `white`, `black` |
|
||||
| Icons/Drawables | `icon`, `logo`, `image`, `drawable` |
|
||||
| Views | `view`, `text`, `button`, `layout`, `container` |
|
||||
| Attributes | `id`, `name`, `type`, `style`, `theme`, `color` |
|
||||
| System | `app`, `android`, `content`, `data`, `action` |
|
||||
|
||||
**Examples**:
|
||||
|
||||
```xml
|
||||
<!-- ❌ Wrong: Using reserved names -->
|
||||
<color name="background">#FFFFFF</color>
|
||||
<color name="icon">#000000</color>
|
||||
|
||||
<!-- ✅ Correct: Add prefix or specific naming -->
|
||||
<color name="app_background">#FFFFFF</color>
|
||||
<color name="icon_primary">#000000</color>
|
||||
```
|
||||
|
||||
```kotlin
|
||||
// ❌ Wrong: Variable names conflict with system
|
||||
val icon = R.drawable.my_icon
|
||||
val background = Color.White
|
||||
|
||||
// ✅ Correct: Use descriptive names
|
||||
val appIcon = R.drawable.my_icon
|
||||
val screenBackground = Color.White
|
||||
```
|
||||
|
||||
```xml
|
||||
<!-- ❌ Wrong: Drawable name conflicts -->
|
||||
<ImageView android:src="@drawable/icon" />
|
||||
|
||||
<!-- ✅ Correct: Add prefix -->
|
||||
<ImageView android:src="@drawable/ic_home" />
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 6. Build Error Diagnosis & Fixes
|
||||
|
||||
### 6.1 Common Error Quick Reference
|
||||
|
||||
| Error Keyword | Cause | Fix |
|
||||
|---------------|-------|-----|
|
||||
| `Unresolved reference` | Missing import or undefined | Check imports, verify dependencies |
|
||||
| `Type mismatch` | Type incompatibility | Check parameter types, add conversion |
|
||||
| `Cannot access` | Visibility issue | Check public/private/internal |
|
||||
| `@Composable invocations` | Composable context error | Ensure caller is also @Composable |
|
||||
| `Duplicate class` | Dependency conflict | Use `./gradlew dependencies` to investigate |
|
||||
| `AAPT: error` | Resource file error | Check XML syntax and resource references |
|
||||
|
||||
### 6.2 Fix Best Practices
|
||||
|
||||
1. **Read the complete error message first**: Locate file and line number
|
||||
2. **Check recent changes**: Problems usually in latest modifications
|
||||
3. **Clean Build**: `./gradlew clean assembleDebug`
|
||||
4. **Check dependency versions**: Version conflicts are common causes
|
||||
5. **Refresh dependencies if needed**: Clear cache and rebuild
|
||||
|
||||
### 6.3 Debugging Commands
|
||||
|
||||
```bash
|
||||
# Clean and build
|
||||
./gradlew clean assembleDebug
|
||||
|
||||
# View dependency tree (investigate conflicts)
|
||||
./gradlew :app:dependencies
|
||||
|
||||
# View detailed errors
|
||||
./gradlew assembleDebug --stacktrace
|
||||
|
||||
# Refresh dependencies
|
||||
./gradlew --refresh-dependencies
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 7. Material Design 3 Guidelines
|
||||
|
||||
Review Android UI files for compliance with Material Design 3 Guidelines and Android best practices.
|
||||
|
||||
### Design Philosophy
|
||||
|
||||
#### M3 Core Principles
|
||||
|
||||
| Principle | Description |
|
||||
|-----------|-------------|
|
||||
| **Personal** | Dynamic color based on user preferences and wallpaper |
|
||||
| **Adaptive** | Responsive across all screen sizes and form factors |
|
||||
| **Expressive** | Bold colors and typography with personality |
|
||||
| **Accessible** | Inclusive design for all users |
|
||||
|
||||
#### M3 Expressive (Latest)
|
||||
|
||||
The latest evolution adds emotion-driven UX through:
|
||||
- Vibrant, dynamic colors
|
||||
- Intuitive motion physics
|
||||
- Adaptive components
|
||||
- Flexible typography
|
||||
- Contrasting shapes (35 new shape options)
|
||||
|
||||
### App Style Selection
|
||||
|
||||
**Critical Decision**: Match visual style to app category and target audience.
|
||||
|
||||
| App Category | Visual Style | Key Characteristics |
|
||||
|--------------|--------------|---------------------|
|
||||
| Utility/Tool | Minimalist | Clean, efficient, neutral colors |
|
||||
| Finance/Banking | Professional Trust | Conservative colors, security-focused |
|
||||
| Health/Wellness | Calm & Natural | Soft colors, organic shapes |
|
||||
| Kids (3-5) | Playful Simple | Bright colors, large targets (56dp+) |
|
||||
| Kids (6-12) | Fun & Engaging | Vibrant, gamified feedback |
|
||||
| Social/Entertainment | Expressive | Brand-driven, gesture-rich |
|
||||
| Productivity | Clean & Focused | Minimal, high contrast |
|
||||
| E-commerce | Conversion-focused | Clear CTAs, scannable |
|
||||
|
||||
See [Design Style Guide](references/design-style-guide.md) for detailed style profiles.
|
||||
|
||||
### Quick Reference: Key Specifications
|
||||
|
||||
#### Color Contrast Requirements
|
||||
|
||||
| Element | Minimum Ratio |
|
||||
|---------|---------------|
|
||||
| Body text | **4.5:1** |
|
||||
| Large text (18sp+) | **3:1** |
|
||||
| UI components | **3:1** |
|
||||
|
||||
#### Touch Targets
|
||||
|
||||
| Type | Size |
|
||||
|------|------|
|
||||
| Minimum | 48 × 48dp |
|
||||
| Recommended (primary actions) | 56 × 56dp |
|
||||
| Kids apps | 56dp+ |
|
||||
| Spacing between targets | 8dp minimum |
|
||||
|
||||
#### 8dp Grid System
|
||||
|
||||
| Token | Value | Usage |
|
||||
|-------|-------|-------|
|
||||
| xs | 4dp | Icon padding |
|
||||
| sm | 8dp | Tight spacing |
|
||||
| md | 16dp | Default padding |
|
||||
| lg | 24dp | Section spacing |
|
||||
| xl | 32dp | Large gaps |
|
||||
| xxl | 48dp | Screen margins |
|
||||
|
||||
#### Typography Scale (Summary)
|
||||
|
||||
| Category | Sizes |
|
||||
|----------|-------|
|
||||
| Display | 57sp, 45sp, 36sp |
|
||||
| Headline | 32sp, 28sp, 24sp |
|
||||
| Title | 22sp, 16sp, 14sp |
|
||||
| Body | 16sp, 14sp, 12sp |
|
||||
| Label | 14sp, 12sp, 11sp |
|
||||
|
||||
#### Animation Duration
|
||||
|
||||
| Type | Duration |
|
||||
|------|----------|
|
||||
| Micro (ripples) | 50-100ms |
|
||||
| Short (simple) | 100-200ms |
|
||||
| Medium (expand/collapse) | 200-300ms |
|
||||
| Long (complex) | 300-500ms |
|
||||
|
||||
#### Component Dimensions
|
||||
|
||||
| Component | Height | Min Width |
|
||||
|-----------|--------|-----------|
|
||||
| Button | 40dp | 64dp |
|
||||
| FAB | 56dp | 56dp |
|
||||
| Text Field | 56dp | 280dp |
|
||||
| App Bar | 64dp | - |
|
||||
| Bottom Nav | 80dp | - |
|
||||
|
||||
### Anti-Patterns (Must Avoid)
|
||||
|
||||
#### UI Anti-Patterns
|
||||
- More than 5 bottom navigation items
|
||||
- Multiple FABs on same screen
|
||||
- Touch targets smaller than 48dp
|
||||
- Inconsistent spacing (non-8dp multiples)
|
||||
- Missing dark theme support
|
||||
- Text on colored backgrounds without contrast check
|
||||
|
||||
#### Performance Anti-Patterns
|
||||
- Startup time > 2 seconds without progress indicator
|
||||
- Frame rate < 60 FPS (> 16ms per frame)
|
||||
- Crash rate > 1.09% (Google Play threshold)
|
||||
- ANR rate > 0.47% (Google Play threshold)
|
||||
|
||||
#### Accessibility Anti-Patterns
|
||||
- Missing contentDescription on interactive elements
|
||||
- Element type in labels (e.g., "Save button" instead of "Save")
|
||||
- Complex gestures in kids apps
|
||||
- Text-only buttons for non-readers
|
||||
|
||||
### Review Checklist
|
||||
|
||||
- [ ] 8dp spacing grid compliance
|
||||
- [ ] 48dp minimum touch targets
|
||||
- [ ] Proper typography scale usage
|
||||
- [ ] Color contrast compliance (4.5:1+ for text)
|
||||
- [ ] Dark theme support
|
||||
- [ ] contentDescription on all interactive elements
|
||||
- [ ] Startup < 2 seconds or shows progress
|
||||
- [ ] Visual style matches app category
|
||||
|
||||
### Design References
|
||||
|
||||
| Topic | Reference |
|
||||
|-------|-----------|
|
||||
| Colors, Typography, Spacing, Shapes | [Visual Design](references/visual-design.md) |
|
||||
| Animation & Transitions | [Motion System](references/motion-system.md) |
|
||||
| Accessibility Guidelines | [Accessibility](references/accessibility.md) |
|
||||
| Large Screens & Foldables | [Adaptive Screens](references/adaptive-screens.md) |
|
||||
| Android Vitals & Performance | [Performance & Stability](references/performance-stability.md) |
|
||||
| Privacy & Security | [Privacy & Security](references/privacy-security.md) |
|
||||
| Audio, Video, Notifications | [Functional Requirements](references/functional-requirements.md) |
|
||||
| App Style by Category | [Design Style Guide](references/design-style-guide.md) |
|
||||
209
skills/android-native-dev/references/accessibility.md
Normal file
209
skills/android-native-dev/references/accessibility.md
Normal file
@@ -0,0 +1,209 @@
|
||||
# Accessibility Guidelines
|
||||
|
||||
Comprehensive accessibility requirements for Android applications.
|
||||
|
||||
## Core Requirements
|
||||
|
||||
### Minimum Standards
|
||||
|
||||
| Requirement | Specification |
|
||||
|-------------|---------------|
|
||||
| Color contrast (text) | 4.5:1 minimum |
|
||||
| Color contrast (large text) | 3:1 minimum |
|
||||
| Color contrast (UI components) | 3:1 minimum |
|
||||
| Touch targets | 48 × 48dp minimum |
|
||||
| Content descriptions | All interactive elements |
|
||||
| Focus indicators | Clearly visible |
|
||||
| Screen reader support | Proper semantics |
|
||||
|
||||
## Content Labels
|
||||
|
||||
### contentDescription
|
||||
|
||||
Use for non-text interactive elements.
|
||||
|
||||
**When to use:**
|
||||
- ImageView, ImageButton
|
||||
- CheckBox, Switch (state description)
|
||||
- Custom drawable views
|
||||
- Icons that convey meaning
|
||||
|
||||
**When NOT to use:**
|
||||
- TextView (uses text content automatically)
|
||||
- Decorative images (set to null)
|
||||
- Elements with labelFor relationship
|
||||
|
||||
### android:hint
|
||||
|
||||
Use for editable text fields to show placeholder text.
|
||||
|
||||
**Important**: Don't use contentDescription on EditText—it interferes with accessibility services.
|
||||
|
||||
### android:labelFor
|
||||
|
||||
Link labels to input fields by setting labelFor on the TextView to reference the EditText ID.
|
||||
|
||||
## Label Best Practices
|
||||
|
||||
### Do's
|
||||
|
||||
| Practice | Example |
|
||||
|----------|---------|
|
||||
| Be concise | "Save" not "Click here to save" |
|
||||
| Describe action/purpose | "Delete message" |
|
||||
| Be unique in context | "Delete item 3" not just "Delete" |
|
||||
| Update dynamically | "Pause" ↔ "Play" based on state |
|
||||
|
||||
### Don'ts
|
||||
|
||||
| Avoid | Reason |
|
||||
|-------|--------|
|
||||
| Include element type | TalkBack announces "button" automatically |
|
||||
| Say "button", "image", etc. | Redundant with accessibility info |
|
||||
| Use "click" or "tap" | Input method varies |
|
||||
| Leave empty/generic | "Button" or "Image" is unhelpful |
|
||||
|
||||
### Examples
|
||||
|
||||
| Bad | Good |
|
||||
|-----|------|
|
||||
| "Save button" | "Save" |
|
||||
| "Click here to submit" | "Submit" |
|
||||
| "Image" | "Profile photo of John" |
|
||||
| "Button 1" | "Add to cart" |
|
||||
|
||||
## Focus and Navigation
|
||||
|
||||
### Focus Groups
|
||||
|
||||
Group related elements using `screenReaderFocusable="true"` on the container and `focusable="false"` on child elements. TalkBack will announce all children's content in a single utterance.
|
||||
|
||||
### Headings
|
||||
|
||||
Mark section headers with `accessibilityHeading="true"`. Users can navigate between headings for quick scanning.
|
||||
|
||||
### Pane Titles
|
||||
|
||||
Identify screen regions with `accessibilityPaneTitle`. Accessibility services announce pane changes.
|
||||
|
||||
### Focus Order
|
||||
|
||||
- Natural reading order (top-to-bottom, start-to-end)
|
||||
- Use `accessibilityTraversalBefore/After` for custom order
|
||||
- Ensure all interactive elements are focusable
|
||||
- Skip decorative elements
|
||||
|
||||
## Decorative Elements
|
||||
|
||||
Skip elements that don't convey information:
|
||||
- Set `contentDescription="@null"`
|
||||
- Or set `importantForAccessibility="no"`
|
||||
|
||||
## Custom Accessibility Actions
|
||||
|
||||
### Adding Actions
|
||||
|
||||
Provide alternatives for gesture-based interactions using `ViewCompat.addAccessibilityAction()`. This exposes swipe actions to accessibility services.
|
||||
|
||||
### Replacing Action Labels
|
||||
|
||||
Make default actions more descriptive using `ViewCompat.replaceAccessibilityAction()`. Example: "Double tap and hold to add to favorites" instead of generic "long press".
|
||||
|
||||
## Color and Visual Cues
|
||||
|
||||
### Don't Rely on Color Alone
|
||||
|
||||
Combine color with other indicators:
|
||||
|
||||
| Information | Color + Alternative |
|
||||
|-------------|---------------------|
|
||||
| Error state | Red + error icon + text |
|
||||
| Success | Green + checkmark + text |
|
||||
| Required field | Red asterisk + "Required" label |
|
||||
| Selected item | Highlight + checkmark + bold |
|
||||
| Link text | Blue + underline |
|
||||
|
||||
### Contrast Testing
|
||||
|
||||
Use tools to verify contrast:
|
||||
- Android Accessibility Scanner
|
||||
- Contrast Checker plugins
|
||||
- Manual calculation: (L1 + 0.05) / (L2 + 0.05)
|
||||
|
||||
## Touch Targets
|
||||
|
||||
### Minimum Sizes
|
||||
|
||||
| Element | Minimum | Recommended |
|
||||
|---------|---------|-------------|
|
||||
| Standard | 48 × 48dp | 48 × 48dp |
|
||||
| Primary actions | 48 × 48dp | 56 × 56dp |
|
||||
| Kids apps | 56 × 56dp | 64 × 64dp |
|
||||
|
||||
### Spacing
|
||||
|
||||
- Minimum 8dp between adjacent touch targets
|
||||
- Visual element can be smaller if touch area is adequate (use padding)
|
||||
|
||||
## Screen Reader Announcements
|
||||
|
||||
### Live Regions
|
||||
|
||||
Announce dynamic content changes using `accessibilityLiveRegion`:
|
||||
|
||||
| Mode | Usage |
|
||||
|------|-------|
|
||||
| polite | Announces when user is idle |
|
||||
| assertive | Interrupts current speech |
|
||||
| none | No automatic announcements |
|
||||
|
||||
### Custom Announcements
|
||||
|
||||
Use `announceForAccessibility()` sparingly—prefer live regions.
|
||||
|
||||
## Keyboard and Hardware Navigation
|
||||
|
||||
### Focus Indicators
|
||||
|
||||
- Visible focus state for all interactive elements
|
||||
- Don't remove default focus indicators
|
||||
- Custom focus: 2dp+ border or background change
|
||||
|
||||
### Keyboard Shortcuts
|
||||
|
||||
- Support Tab navigation
|
||||
- Enter/Space for activation
|
||||
- Arrow keys for lists/grids
|
||||
- Escape for dismissal
|
||||
|
||||
## Testing Accessibility
|
||||
|
||||
### Manual Testing
|
||||
|
||||
1. **TalkBack**: Navigate entire app with screen reader
|
||||
2. **Switch Access**: Test with switch navigation
|
||||
3. **Keyboard**: Navigate with external keyboard only
|
||||
4. **Magnification**: Test with zoom enabled
|
||||
5. **Large text**: Test with 200% font scale
|
||||
6. **High contrast**: Test with high contrast mode
|
||||
|
||||
### Automated Testing
|
||||
|
||||
| Tool | Purpose |
|
||||
|------|---------|
|
||||
| Accessibility Scanner | On-device scanning |
|
||||
| Espresso Accessibility Checks | Automated UI tests |
|
||||
| Lint checks | Static analysis |
|
||||
|
||||
### Checklist
|
||||
|
||||
- [ ] All interactive elements have descriptions
|
||||
- [ ] Touch targets are 48dp minimum
|
||||
- [ ] Color contrast meets requirements
|
||||
- [ ] Focus order is logical
|
||||
- [ ] Headings are properly marked
|
||||
- [ ] Custom actions have descriptive labels
|
||||
- [ ] Live regions announce important changes
|
||||
- [ ] Keyboard navigation works
|
||||
- [ ] Works with TalkBack enabled
|
||||
- [ ] Works with large text (200%)
|
||||
231
skills/android-native-dev/references/adaptive-screens.md
Normal file
231
skills/android-native-dev/references/adaptive-screens.md
Normal file
@@ -0,0 +1,231 @@
|
||||
# Adaptive Screens Guidelines
|
||||
|
||||
Requirements for large screens, tablets, foldables, and multi-window support.
|
||||
|
||||
## Adaptive Quality Tiers
|
||||
|
||||
Google defines three progressive quality tiers for adaptive apps:
|
||||
|
||||
### Tier 3: Adaptive Ready (Basic)
|
||||
|
||||
Minimum requirements for all apps:
|
||||
|
||||
| Requirement | Description |
|
||||
|-------------|-------------|
|
||||
| Full screen | App fills display, no letterboxing |
|
||||
| Configuration changes | Handles rotation, folding, resizing |
|
||||
| Multi-window | Supports split-screen mode |
|
||||
| Basic input | Keyboard, mouse, trackpad support |
|
||||
|
||||
### Tier 2: Adaptive Optimized (Better)
|
||||
|
||||
Enhanced experience:
|
||||
|
||||
| Requirement | Description |
|
||||
|-------------|-------------|
|
||||
| Layout optimization | Responsive layouts for all sizes |
|
||||
| Enhanced input | Full keyboard shortcuts, mouse hover states |
|
||||
| Continuity | Seamless state preservation |
|
||||
|
||||
### Tier 1: Adaptive Differentiated (Best)
|
||||
|
||||
Device-specific excellence:
|
||||
|
||||
| Requirement | Description |
|
||||
|-------------|-------------|
|
||||
| Multitasking | Drag and drop, activity embedding |
|
||||
| Foldable postures | Table-top mode, book mode support |
|
||||
| Stylus | Full stylus input support |
|
||||
| Desktop | Windowed mode optimization |
|
||||
|
||||
## Screen Size Classes
|
||||
|
||||
### Width-Based Classes
|
||||
|
||||
| Class | Width | Typical Devices |
|
||||
|-------|-------|-----------------|
|
||||
| Compact | < 600dp | Phone portrait |
|
||||
| Medium | 600-840dp | Tablet portrait, phone landscape |
|
||||
| Expanded | > 840dp | Tablet landscape, desktop |
|
||||
|
||||
### Layout Strategies
|
||||
|
||||
| Screen Class | Navigation | Content Layout |
|
||||
|--------------|------------|----------------|
|
||||
| Compact | Bottom nav | Single pane |
|
||||
| Medium | Nav rail | List-detail (optional) |
|
||||
| Expanded | Nav drawer/rail | List-detail, multi-pane |
|
||||
|
||||
## Configuration Changes
|
||||
|
||||
### Must Handle
|
||||
|
||||
| Change | Trigger |
|
||||
|--------|---------|
|
||||
| Rotation | Device rotated |
|
||||
| Fold/Unfold | Foldable state change |
|
||||
| Window resize | Multi-window adjustment |
|
||||
| Split screen | Enter/exit split mode |
|
||||
| Keyboard | External keyboard attach/detach |
|
||||
|
||||
### Configuration Handling
|
||||
|
||||
| Approach | Description |
|
||||
|----------|-------------|
|
||||
| Let system handle | Default, activity recreated |
|
||||
| Handle manually | Declare configChanges, implement onConfigurationChanged |
|
||||
|
||||
### State Preservation
|
||||
|
||||
- Use ViewModel for UI state
|
||||
- Use SavedStateHandle for process death
|
||||
- Test with "Don't keep activities" enabled
|
||||
|
||||
## Multi-Window Support
|
||||
|
||||
### Requirements
|
||||
|
||||
| Feature | Status |
|
||||
|---------|--------|
|
||||
| resizeableActivity | true (default API 24+) |
|
||||
| Minimum size | Support 220dp width |
|
||||
| State handling | Preserve across resize |
|
||||
|
||||
### Best Practices
|
||||
|
||||
- Don't assume full-screen ownership
|
||||
- Handle onConfigurationChanged gracefully
|
||||
- Test at minimum supported size
|
||||
- Support free-form windows (desktop mode)
|
||||
|
||||
## Foldable Devices
|
||||
|
||||
### Postures
|
||||
|
||||
| Posture | Description | Use Case |
|
||||
|---------|-------------|----------|
|
||||
| Flat | Fully open | Normal tablet use |
|
||||
| Half-opened (tabletop) | Hinged at ~90° horizontal | Video calls, media |
|
||||
| Half-opened (book) | Hinged at ~90° vertical | Reading, productivity |
|
||||
| Folded | Closed | Compact phone mode |
|
||||
|
||||
### Design Considerations
|
||||
|
||||
- Avoid placing interactive elements on the fold
|
||||
- Consider separate content for each screen segment
|
||||
- Support continuity when fold state changes
|
||||
- Use WindowInfoTracker to detect fold state
|
||||
|
||||
## External Input Devices
|
||||
|
||||
### Keyboard Support
|
||||
|
||||
| Requirement | Implementation |
|
||||
|-------------|----------------|
|
||||
| Tab navigation | Focusable elements in order |
|
||||
| Enter/Space | Activates focused element |
|
||||
| Arrow keys | Navigate lists, grids |
|
||||
| Shortcuts | Common actions (Ctrl+S, etc.) |
|
||||
| Focus indicators | Visible focus states |
|
||||
|
||||
### Mouse/Trackpad Support
|
||||
|
||||
| Requirement | Implementation |
|
||||
|-------------|----------------|
|
||||
| Hover states | Visual feedback on hover |
|
||||
| Right-click | Context menu support |
|
||||
| Scroll | Smooth scrolling |
|
||||
| Pointer cursor | Appropriate cursor types |
|
||||
|
||||
### Stylus Support
|
||||
|
||||
| Feature | Implementation |
|
||||
|---------|----------------|
|
||||
| Pressure sensitivity | Variable stroke width |
|
||||
| Palm rejection | Ignore palm touches |
|
||||
| Tilt detection | Shading effects |
|
||||
| Hover preview | Show cursor before touch |
|
||||
|
||||
## Navigation Patterns
|
||||
|
||||
### By Screen Width
|
||||
|
||||
| Width | Primary Nav | Secondary Nav |
|
||||
|-------|-------------|---------------|
|
||||
| < 600dp | Bottom nav (3-5 items) | Hamburger menu |
|
||||
| 600-840dp | Navigation rail | Drawer on demand |
|
||||
| > 840dp | Permanent drawer or rail | Drawer or none |
|
||||
|
||||
### Navigation Rail Specs
|
||||
|
||||
| Property | Value |
|
||||
|----------|-------|
|
||||
| Width | 80dp |
|
||||
| Icon size | 24dp |
|
||||
| Touch target | 56dp |
|
||||
| Items | 3-7 destinations |
|
||||
| FAB | Optional, at top |
|
||||
|
||||
### Permanent Navigation Drawer
|
||||
|
||||
| Property | Value |
|
||||
|----------|-------|
|
||||
| Width | 256-360dp |
|
||||
| Position | Left edge (LTR) |
|
||||
| Behavior | Always visible |
|
||||
| Content | Full labels, icons |
|
||||
|
||||
## Responsive Layouts
|
||||
|
||||
### Breakpoints
|
||||
|
||||
| Class | Width Range |
|
||||
|-------|-------------|
|
||||
| COMPACT | < 600dp |
|
||||
| MEDIUM | 600-840dp |
|
||||
| EXPANDED | > 840dp |
|
||||
|
||||
Use WindowSizeClass to determine current breakpoint and adapt layout accordingly.
|
||||
|
||||
## Content Considerations
|
||||
|
||||
### Text Readability
|
||||
|
||||
- Line length: 45-75 characters max
|
||||
- Use multiple columns on wide screens
|
||||
- Maintain hierarchy with consistent spacing
|
||||
|
||||
### Media
|
||||
|
||||
- Support multiple aspect ratios
|
||||
- Provide high-resolution assets
|
||||
- Consider picture-in-picture for video
|
||||
|
||||
### Touch vs. Precise Input
|
||||
|
||||
- Large screens often use mouse/keyboard
|
||||
- Don't assume touch-only interaction
|
||||
- Provide hover states and tooltips
|
||||
|
||||
## Testing
|
||||
|
||||
### Device Matrix
|
||||
|
||||
| Device Type | Test Priority |
|
||||
|-------------|---------------|
|
||||
| Phone (portrait) | Required |
|
||||
| Phone (landscape) | Required |
|
||||
| Tablet (both orientations) | Required |
|
||||
| Foldable (all postures) | High |
|
||||
| Desktop/Chromebook | Medium |
|
||||
|
||||
### Test Cases
|
||||
|
||||
- [ ] App fills screen in all configurations
|
||||
- [ ] No letterboxing or black bars
|
||||
- [ ] State preserved across configuration changes
|
||||
- [ ] Multi-window works at minimum size
|
||||
- [ ] Keyboard navigation functional
|
||||
- [ ] Mouse hover states present
|
||||
- [ ] Foldable postures handled (if applicable)
|
||||
- [ ] Navigation adapts to screen width
|
||||
365
skills/android-native-dev/references/design-style-guide.md
Normal file
365
skills/android-native-dev/references/design-style-guide.md
Normal file
@@ -0,0 +1,365 @@
|
||||
# Design Style Guide
|
||||
|
||||
Match visual design to app category and target audience for cohesive user experience.
|
||||
|
||||
## Style Selection Principle
|
||||
|
||||
> **The visual style must match the app's purpose and audience.**
|
||||
> A finance app should feel trustworthy, not playful.
|
||||
> A children's app should feel fun, not corporate.
|
||||
|
||||
## Style Selection Matrix
|
||||
|
||||
| App Category | Visual Style | Color Palette | Typography | Interaction |
|
||||
|--------------|--------------|---------------|------------|-------------|
|
||||
| Utility/Tool | Minimalist | Neutral + 1 accent | Clean sans-serif | Direct, efficient |
|
||||
| Finance/Banking | Professional Trust | Blue/Green/Navy | Conservative | Secure, deliberate |
|
||||
| Health/Wellness | Calm & Natural | Soft greens, earth tones | Rounded, friendly | Gentle, encouraging |
|
||||
| Kids (3-5) | Playful Simple | Bright primary colors | Large, rounded | Big targets, forgiving |
|
||||
| Kids (6-12) | Fun & Engaging | Vibrant, varied | Bold, readable | Gamified feedback |
|
||||
| Social/Entertainment | Expressive | Brand-driven | Dynamic | Gesture-rich |
|
||||
| Productivity | Clean & Focused | Minimal, high contrast | Professional | Keyboard-friendly |
|
||||
| E-commerce | Conversion-focused | Brand + CTA colors | Scannable | Quick actions |
|
||||
| Gaming | Immersive | Theme-driven | Stylized | Custom gestures |
|
||||
|
||||
## Detailed Style Profiles
|
||||
|
||||
### Minimalist / iOS-like (Utility Apps)
|
||||
|
||||
**When to use**: Tools, utilities, calculators, file managers, settings apps
|
||||
|
||||
**Visual Characteristics**:
|
||||
|
||||
| Element | Specification |
|
||||
|---------|---------------|
|
||||
| Colors | 2-3 colors max, neutral base |
|
||||
| Whitespace | Generous, 24-48dp margins |
|
||||
| Typography | Single font family, clear hierarchy |
|
||||
| Icons | Line-based, consistent stroke |
|
||||
| Shadows | Subtle or none |
|
||||
| Borders | Thin (1dp) or none |
|
||||
| Shapes | Subtle corners (8-12dp) |
|
||||
|
||||
**Interaction Style**:
|
||||
- Direct manipulation
|
||||
- Immediate feedback
|
||||
- No unnecessary animations
|
||||
- Efficient task completion
|
||||
|
||||
**Color Palette**:
|
||||
|
||||
| Role | Light Mode | Dark Mode |
|
||||
|------|------------|-----------|
|
||||
| Background | #FAFAFA | #1C1C1E |
|
||||
| Surface | #FFFFFF | #2C2C2E |
|
||||
| Primary | #007AFF | #0A84FF |
|
||||
| Text | #000000 | #FFFFFF |
|
||||
| Secondary | #8E8E93 | #8E8E93 |
|
||||
|
||||
**Reference Apps**: iOS Settings, Apple Notes, Google Calculator
|
||||
|
||||
---
|
||||
|
||||
### Professional Trust (Finance/Business)
|
||||
|
||||
**When to use**: Banking, investment, enterprise, B2B applications
|
||||
|
||||
**Visual Characteristics**:
|
||||
|
||||
| Element | Specification |
|
||||
|---------|---------------|
|
||||
| Colors | Blues, greens, navy (trust colors) |
|
||||
| Whitespace | Structured, grid-based |
|
||||
| Typography | Formal, conservative weights |
|
||||
| Icons | Filled or outlined, consistent |
|
||||
| Data visualization | Clear, accurate charts |
|
||||
| Security indicators | Prominent locks, badges |
|
||||
|
||||
**Interaction Style**:
|
||||
- Confirmatory (double-check important actions)
|
||||
- Deliberate (not rushed)
|
||||
- Secure-feeling
|
||||
- Clear feedback on transactions
|
||||
|
||||
**Color Palette**:
|
||||
|
||||
| Role | Color | Name |
|
||||
|------|-------|------|
|
||||
| Primary | #00695C or #1565C0 | Teal 800 / Blue 800 |
|
||||
| Secondary | #37474F | Blue Grey 800 |
|
||||
| Accent | #FFC107 | Amber |
|
||||
| Background | #ECEFF1 | Blue Grey 50 |
|
||||
| Success | #2E7D32 | Green 800 |
|
||||
| Error | #C62828 | Red 800 |
|
||||
|
||||
**Key Patterns**:
|
||||
- Balance summaries prominent
|
||||
- Transaction history easily scannable
|
||||
- Secure entry for sensitive data
|
||||
- Biometric authentication prompts
|
||||
|
||||
**Reference Apps**: Banking apps, Trading platforms, Enterprise tools
|
||||
|
||||
---
|
||||
|
||||
### Calm & Wellness (Health Apps)
|
||||
|
||||
**When to use**: Meditation, fitness tracking, health monitoring, therapy
|
||||
|
||||
**Visual Characteristics**:
|
||||
|
||||
| Element | Specification |
|
||||
|---------|---------------|
|
||||
| Colors | Soft, muted, natural |
|
||||
| Whitespace | Abundant (breathing room) |
|
||||
| Typography | Rounded, friendly fonts |
|
||||
| Shapes | Organic, soft corners (16dp+) |
|
||||
| Animation | Gentle, slow transitions |
|
||||
| Imagery | Nature, soft gradients |
|
||||
|
||||
**Interaction Style**:
|
||||
- Encouraging, not demanding
|
||||
- Progress-oriented
|
||||
- Gentle reminders
|
||||
- Celebration of achievements
|
||||
|
||||
**Color Palette**:
|
||||
|
||||
| Role | Color | Name |
|
||||
|------|-------|------|
|
||||
| Primary | #4CAF50 | Green 500 |
|
||||
| Secondary | #81C784 | Green 300 |
|
||||
| Tertiary | #B2DFDB | Teal 100 |
|
||||
| Background | #F1F8E9 | Light Green 50 |
|
||||
| Text | #33691E | Light Green 900 |
|
||||
| Accent | #FFB74D | Orange 300 |
|
||||
|
||||
**Key Patterns**:
|
||||
- Progress rings and charts
|
||||
- Streak tracking
|
||||
- Motivational messages
|
||||
- Quiet notification style
|
||||
|
||||
**Reference Apps**: Headspace, Calm, Apple Fitness
|
||||
|
||||
---
|
||||
|
||||
### Playful & Kid-Friendly (Children's Apps)
|
||||
|
||||
**When to use**: Educational games, children's content, family apps
|
||||
|
||||
#### Ages 3-5
|
||||
|
||||
**Visual Characteristics**:
|
||||
|
||||
| Element | Specification |
|
||||
|---------|---------------|
|
||||
| Colors | Bright, saturated primary colors |
|
||||
| Touch targets | 56dp minimum, 64dp recommended |
|
||||
| Shapes | Very rounded (full radius) |
|
||||
| Typography | Large (18sp+ minimum), simple fonts |
|
||||
| Icons | Large, colorful, recognizable |
|
||||
| Animation | Frequent, rewarding |
|
||||
|
||||
**Interaction Style**:
|
||||
- Simple gestures only (tap, drag)
|
||||
- No multi-finger gestures
|
||||
- Forgiving error handling
|
||||
- Immediate, multi-sensory feedback (sound + visual + haptic)
|
||||
- No text-only buttons
|
||||
|
||||
**Color Palette**:
|
||||
|
||||
| Role | Color | Name |
|
||||
|------|-------|------|
|
||||
| Primary | #F44336 | Red 500 |
|
||||
| Secondary | #FFEB3B | Yellow 500 |
|
||||
| Tertiary | #2196F3 | Blue 500 |
|
||||
| Background | #FFFFFF | White or soft pastels |
|
||||
| Accent | #4CAF50 | Green 500 |
|
||||
|
||||
#### Ages 6-12
|
||||
|
||||
**Visual Characteristics**:
|
||||
|
||||
| Element | Specification |
|
||||
|---------|---------------|
|
||||
| Colors | Vibrant, varied palette |
|
||||
| Touch targets | 48dp minimum |
|
||||
| Shapes | Rounded but can be varied |
|
||||
| Typography | Bold, readable, can include text |
|
||||
| Icons | Stylized, character-driven |
|
||||
| Animation | Gamified, achievement-based |
|
||||
|
||||
**Interaction Style**:
|
||||
- Can introduce some complexity
|
||||
- Gamification elements
|
||||
- Progress and rewards
|
||||
- Some text is acceptable
|
||||
|
||||
**Key Patterns for All Kids Apps**:
|
||||
- Icon-based navigation (no text-only)
|
||||
- Home button always visible
|
||||
- Back navigation clear
|
||||
- Parent gate for settings (math problem, hold button)
|
||||
- Multi-sensory feedback
|
||||
- Encouraging error states (no punishment)
|
||||
- Joint engagement opportunities with parents
|
||||
|
||||
**Reference Apps**: PBS Kids, Khan Academy Kids, Duolingo ABC
|
||||
|
||||
---
|
||||
|
||||
### Expressive & Social (Entertainment Apps)
|
||||
|
||||
**When to use**: Social media, content creation, entertainment
|
||||
|
||||
**Visual Characteristics**:
|
||||
|
||||
| Element | Specification |
|
||||
|---------|---------------|
|
||||
| Colors | Bold brand colors |
|
||||
| Typography | Dynamic, personality-driven |
|
||||
| Media | Rich, prominent |
|
||||
| Animation | Expressive, delightful |
|
||||
| Shapes | Brand-specific |
|
||||
|
||||
**Interaction Style**:
|
||||
- Gesture-rich
|
||||
- Quick actions
|
||||
- Social interactions prominent
|
||||
- Content-first design
|
||||
|
||||
**Key Patterns**:
|
||||
- Feed-based layouts
|
||||
- Quick action buttons (like, share, comment)
|
||||
- Stories/ephemeral content
|
||||
- Creation tools accessible
|
||||
- Notification badges
|
||||
|
||||
**Reference Apps**: Instagram, TikTok, Snapchat
|
||||
|
||||
---
|
||||
|
||||
### Clean & Focused (Productivity Apps)
|
||||
|
||||
**When to use**: Note-taking, task management, email, documents
|
||||
|
||||
**Visual Characteristics**:
|
||||
|
||||
| Element | Specification |
|
||||
|---------|---------------|
|
||||
| Colors | High contrast, minimal |
|
||||
| Whitespace | Strategic, content-focused |
|
||||
| Typography | Highly readable, clear hierarchy |
|
||||
| Icons | Functional, consistent |
|
||||
| Density | Adjustable (compact to comfortable) |
|
||||
|
||||
**Interaction Style**:
|
||||
- Keyboard-friendly
|
||||
- Batch operations
|
||||
- Drag and drop
|
||||
- Quick capture
|
||||
- Search-centric
|
||||
|
||||
**Color Palette**:
|
||||
|
||||
| Role | Light Mode | Dark Mode |
|
||||
|------|------------|-----------|
|
||||
| Primary | #1976D2 | #64B5F6 |
|
||||
| Background | #FFFFFF | #121212 |
|
||||
| Surface | #F5F5F5 | #1E1E1E |
|
||||
| Text | #212121 | #E0E0E0 |
|
||||
| Accent/Priority | #FF5722 | #FF7043 |
|
||||
|
||||
**Key Patterns**:
|
||||
- List views with swipe actions
|
||||
- Quick add buttons
|
||||
- Checkbox interactions
|
||||
- Due dates and reminders
|
||||
- Tags and categories
|
||||
|
||||
**Reference Apps**: Notion, Todoist, Google Tasks
|
||||
|
||||
---
|
||||
|
||||
### Conversion-Focused (E-commerce)
|
||||
|
||||
**When to use**: Shopping, marketplace, booking apps
|
||||
|
||||
**Visual Characteristics**:
|
||||
|
||||
| Element | Specification |
|
||||
|---------|---------------|
|
||||
| Colors | Brand + clear CTA colors |
|
||||
| Images | High quality, zoomable |
|
||||
| Typography | Scannable, price prominent |
|
||||
| Cards | Product-focused |
|
||||
| Badges | Sale, new, limited |
|
||||
|
||||
**Interaction Style**:
|
||||
- Quick add to cart
|
||||
- Easy checkout flow
|
||||
- Comparison features
|
||||
- Reviews accessible
|
||||
- Wishlist/save for later
|
||||
|
||||
**Key Patterns**:
|
||||
- Grid and list view toggle
|
||||
- Filter and sort
|
||||
- Product detail with gallery
|
||||
- Cart always accessible
|
||||
- One-tap purchase options
|
||||
|
||||
**Reference Apps**: Amazon, Shopify apps, Booking.com
|
||||
|
||||
---
|
||||
|
||||
## Consistency Principles
|
||||
|
||||
### Match Style to Subject Matter
|
||||
|
||||
| App Purpose | Style Should Feel |
|
||||
|-------------|-------------------|
|
||||
| Utility | Efficient, invisible |
|
||||
| Finance | Trustworthy, secure |
|
||||
| Health | Supportive, calm |
|
||||
| Kids | Safe, fun |
|
||||
| Social | Expressive, personal |
|
||||
| Productivity | Focused, powerful |
|
||||
| Shopping | Exciting, trustworthy |
|
||||
|
||||
### Internal Consistency Rules
|
||||
|
||||
| Rule | Implementation |
|
||||
|------|----------------|
|
||||
| Same icon style | All outlined OR all filled |
|
||||
| Consistent color meaning | Red = destructive, Green = success |
|
||||
| Uniform spacing | Use 8dp grid |
|
||||
| Predictable interaction | Same gesture = same result |
|
||||
| Typography system | Use M3 type scale |
|
||||
|
||||
## Anti-Patterns: Style Mismatch
|
||||
|
||||
| Mismatch | Problem |
|
||||
|----------|---------|
|
||||
| Playful colors in banking app | Undermines trust |
|
||||
| Complex gestures in kids app | Frustrates young users |
|
||||
| Cluttered UI in wellness app | Defeats calming purpose |
|
||||
| Boring visuals in entertainment | Fails to engage |
|
||||
| Aggressive CTAs in health app | Feels manipulative |
|
||||
| Childish design in professional tool | Lacks credibility |
|
||||
| Dense information in casual app | Overwhelms users |
|
||||
|
||||
## Implementation Checklist
|
||||
|
||||
- [ ] Identified app category and target audience
|
||||
- [ ] Selected appropriate style profile
|
||||
- [ ] Color palette matches style
|
||||
- [ ] Typography matches style
|
||||
- [ ] Interaction patterns match style
|
||||
- [ ] Touch targets appropriate for audience
|
||||
- [ ] Animation style consistent
|
||||
- [ ] Internal consistency maintained
|
||||
- [ ] No style mismatches
|
||||
- [ ] Tested with target users
|
||||
229
skills/android-native-dev/references/functional-requirements.md
Normal file
229
skills/android-native-dev/references/functional-requirements.md
Normal file
@@ -0,0 +1,229 @@
|
||||
# Functional Requirements
|
||||
|
||||
Audio, video, notifications, and other functional behavior requirements.
|
||||
|
||||
## Audio
|
||||
|
||||
### Playback Initialization
|
||||
|
||||
| Requirement | Specification |
|
||||
|-------------|---------------|
|
||||
| Response time | < 1 second |
|
||||
| If delayed | Show visual progress indicator |
|
||||
| User feedback | Immediate acknowledgment of action |
|
||||
|
||||
### Audio Focus Rules
|
||||
|
||||
| Event | Required Action |
|
||||
|-------|-----------------|
|
||||
| Another app requests focus | Pause or reduce volume |
|
||||
| Focus regained | Resume or restore volume |
|
||||
| Playback stops | Abandon focus |
|
||||
|
||||
### Audio Focus Handling
|
||||
|
||||
| Focus Change | Action |
|
||||
|--------------|--------|
|
||||
| AUDIOFOCUS_LOSS | Stop playback |
|
||||
| AUDIOFOCUS_LOSS_TRANSIENT | Pause playback |
|
||||
| AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK | Reduce volume |
|
||||
| AUDIOFOCUS_GAIN | Resume playback |
|
||||
|
||||
### Background Playback
|
||||
|
||||
| Requirement | Implementation |
|
||||
|-------------|----------------|
|
||||
| Continue when backgrounded | Use Foreground Service |
|
||||
| Notification | MediaStyle notification required |
|
||||
| Media controls | System media controls integration |
|
||||
| Session | MediaSession for system integration |
|
||||
|
||||
## Video
|
||||
|
||||
### Picture-in-Picture (PiP)
|
||||
|
||||
| Requirement | Specification |
|
||||
|-------------|---------------|
|
||||
| Video apps | Should support PiP |
|
||||
| Aspect ratio | 16:9 to 2.39:1 |
|
||||
| Auto-enter | When user navigates away during playback |
|
||||
|
||||
### Video Encoding
|
||||
|
||||
| Standard | Requirement |
|
||||
|----------|-------------|
|
||||
| Compression | HEVC (H.265) recommended |
|
||||
| Fallback | H.264 for compatibility |
|
||||
| Quality | Adaptive based on network |
|
||||
|
||||
### Video Player Requirements
|
||||
|
||||
| Feature | Implementation |
|
||||
|---------|----------------|
|
||||
| Fullscreen | Support landscape |
|
||||
| Controls | Play, pause, seek, volume |
|
||||
| Captions | Support closed captions |
|
||||
| Resume | Remember playback position |
|
||||
|
||||
## Notifications
|
||||
|
||||
### Channel Best Practices
|
||||
|
||||
| Practice | Reason |
|
||||
|----------|--------|
|
||||
| Multiple channels | User can control each type |
|
||||
| Descriptive names | User understands purpose |
|
||||
| Appropriate importance | Match user expectation |
|
||||
| Don't share channels | Different content = different channel |
|
||||
|
||||
### Notification Priority
|
||||
|
||||
| Importance | Usage |
|
||||
|------------|-------|
|
||||
| HIGH | Time-sensitive (messages, calls) |
|
||||
| DEFAULT | Normal notifications |
|
||||
| LOW | Background info |
|
||||
| MIN | Minimal interruption |
|
||||
|
||||
### Notification Content Rules
|
||||
|
||||
| Do | Don't |
|
||||
|-----|-------|
|
||||
| Relevant information | Cross-promotion |
|
||||
| Clear, concise text | Advertising other products |
|
||||
| Actionable content | Unnecessary interruptions |
|
||||
| Set timeouts | Persistent non-ongoing notifications |
|
||||
|
||||
### Messaging Apps Requirements
|
||||
|
||||
| Feature | Description |
|
||||
|---------|-------------|
|
||||
| MessagingStyle | Use for conversation notifications |
|
||||
| Direct reply | Support inline reply action |
|
||||
| Conversation shortcuts | Enable direct share |
|
||||
| Bubbles | Support floating conversations |
|
||||
|
||||
### Notification Grouping
|
||||
|
||||
Group related notifications together with a summary notification. Set appropriate group keys and summary flags.
|
||||
|
||||
## Sharing
|
||||
|
||||
### Android Sharesheet
|
||||
|
||||
Use the system sharesheet for sharing content. Create an ACTION_SEND intent with appropriate type and extras, then use createChooser().
|
||||
|
||||
### Direct Share
|
||||
|
||||
Provide conversation shortcuts for Direct Share ranking:
|
||||
- Create ShortcutInfo for each conversation
|
||||
- Set appropriate categories
|
||||
- Push dynamic shortcuts
|
||||
|
||||
## Background Services
|
||||
|
||||
### Service Restrictions
|
||||
|
||||
| Rule | Implementation |
|
||||
|------|----------------|
|
||||
| Avoid long-running services | Use WorkManager |
|
||||
| No background starts (API 26+) | Use foreground service or JobScheduler |
|
||||
| Battery-efficient | Batch work, respect Doze |
|
||||
|
||||
### Poor Background Service Uses
|
||||
|
||||
| Don't Use For | Alternative |
|
||||
|---------------|-------------|
|
||||
| Maintaining network connection | FCM (push notifications) |
|
||||
| Persistent Bluetooth | Companion device manager |
|
||||
| Keeping GPS on | Geofencing, fused location |
|
||||
| Polling server | FCM or WorkManager |
|
||||
|
||||
## State Management
|
||||
|
||||
### State Preservation Requirements
|
||||
|
||||
| Scenario | Required Behavior |
|
||||
|----------|-------------------|
|
||||
| App switcher return | Exact previous state |
|
||||
| Device wake | Exact previous state |
|
||||
| Process death | Restore critical state |
|
||||
| Configuration change | Seamless transition |
|
||||
|
||||
### State Categories
|
||||
|
||||
| State Type | Storage |
|
||||
|------------|---------|
|
||||
| UI state (scroll, selection) | ViewModel + SavedState |
|
||||
| User input (forms) | SavedState |
|
||||
| Navigation | NavController state |
|
||||
| Persistent data | Room database |
|
||||
|
||||
## Navigation
|
||||
|
||||
### Back Button/Gesture
|
||||
|
||||
| Requirement | Implementation |
|
||||
|-------------|----------------|
|
||||
| System back | Navigate to previous screen |
|
||||
| Gesture navigation | Support back gesture |
|
||||
| No custom back buttons | Use system navigation |
|
||||
| Predictable | User knows what back does |
|
||||
|
||||
## Gestures
|
||||
|
||||
### Gesture Navigation Support
|
||||
|
||||
| Gesture | Default Action |
|
||||
|---------|----------------|
|
||||
| Swipe from left edge | Back |
|
||||
| Swipe up from bottom | Home |
|
||||
| Swipe up and hold | Recent apps |
|
||||
|
||||
### Custom Gestures
|
||||
|
||||
| Practice | Reason |
|
||||
|----------|--------|
|
||||
| Avoid edge swipes | Conflicts with navigation |
|
||||
| Provide alternatives | Not all users gesture-capable |
|
||||
| Test with gesture nav | Ensure no conflicts |
|
||||
|
||||
Handle system gesture insets to avoid conflicts with edge gestures.
|
||||
|
||||
## Functional Checklist
|
||||
|
||||
### Audio
|
||||
- [ ] Playback starts within 1 second
|
||||
- [ ] Audio focus requested and released
|
||||
- [ ] Responds to focus changes (duck/pause)
|
||||
- [ ] Background playback with notification
|
||||
- [ ] MediaSession integration
|
||||
|
||||
### Video
|
||||
- [ ] Picture-in-picture supported
|
||||
- [ ] HEVC encoding used
|
||||
- [ ] Playback position remembered
|
||||
- [ ] Captions supported
|
||||
|
||||
### Notifications
|
||||
- [ ] Appropriate channels defined
|
||||
- [ ] Correct importance levels
|
||||
- [ ] No promotional content
|
||||
- [ ] Grouped when appropriate
|
||||
- [ ] Timeouts set where applicable
|
||||
|
||||
### Messaging (if applicable)
|
||||
- [ ] MessagingStyle used
|
||||
- [ ] Direct reply supported
|
||||
- [ ] Conversation shortcuts
|
||||
- [ ] Bubbles supported
|
||||
|
||||
### Background
|
||||
- [ ] WorkManager for background work
|
||||
- [ ] No long-running services
|
||||
- [ ] Battery-efficient design
|
||||
|
||||
### Navigation
|
||||
- [ ] Standard back behavior
|
||||
- [ ] Gesture navigation supported
|
||||
- [ ] State preserved across lifecycle
|
||||
203
skills/android-native-dev/references/motion-system.md
Normal file
203
skills/android-native-dev/references/motion-system.md
Normal file
@@ -0,0 +1,203 @@
|
||||
# Motion System Guidelines
|
||||
|
||||
Animation and transition specifications for Material Design 3.
|
||||
|
||||
## Motion Principles
|
||||
|
||||
### Four Core Characteristics
|
||||
|
||||
| Principle | Description |
|
||||
|-----------|-------------|
|
||||
| **Responsive** | Quickly responds to user input at the point of interaction |
|
||||
| **Natural** | Follows real-world physics (gravity, friction, momentum) |
|
||||
| **Aware** | Elements are aware of surroundings and other elements |
|
||||
| **Intentional** | Guides focus to the right place at the right time |
|
||||
|
||||
## Duration Guidelines
|
||||
|
||||
### By Interaction Type
|
||||
|
||||
| Type | Duration | Usage |
|
||||
|------|----------|-------|
|
||||
| Micro | 50-100ms | Ripples, state changes, hover |
|
||||
| Short | 100-200ms | Simple transitions, toggles |
|
||||
| Medium | 200-300ms | Expanding, collapsing, revealing |
|
||||
| Long | 300-500ms | Complex choreography, page transitions |
|
||||
|
||||
### By Device Type
|
||||
|
||||
| Device | Typical Duration | Adjustment |
|
||||
|--------|------------------|------------|
|
||||
| Mobile | 300ms | Baseline |
|
||||
| Tablet | 390ms | +30% slower |
|
||||
| Desktop | 150-200ms | Faster, more responsive |
|
||||
| Wearable | 210ms | -30% faster |
|
||||
|
||||
### Duration Rules
|
||||
|
||||
- **Maximum**: Keep under 400ms for most transitions
|
||||
- **User-initiated**: Faster (closer to instant feedback)
|
||||
- **System-initiated**: Can be slightly longer
|
||||
- **Loading states**: Use indeterminate indicators for unknown duration
|
||||
|
||||
## Easing Curves
|
||||
|
||||
### Standard Curves
|
||||
|
||||
| Curve | Usage | Characteristics |
|
||||
|-------|-------|-----------------|
|
||||
| **Standard** | Most common transitions | Quick acceleration, slow deceleration |
|
||||
| **Emphasized** | Important/significant transitions | More dramatic curve |
|
||||
| **Decelerate** | Elements entering screen | Starts fast, ends slow |
|
||||
| **Accelerate** | Elements leaving screen permanently | Starts slow, ends fast |
|
||||
| **Sharp** | Elements temporarily leaving | Quick, snappy motion |
|
||||
|
||||
### Curve Values (Cubic Bezier)
|
||||
|
||||
| Curve | Value |
|
||||
|-------|-------|
|
||||
| Standard | cubic-bezier(0.2, 0.0, 0.0, 1.0) |
|
||||
| Emphasized | cubic-bezier(0.2, 0.0, 0.0, 1.0) |
|
||||
| Decelerate | cubic-bezier(0.0, 0.0, 0.0, 1.0) |
|
||||
| Accelerate | cubic-bezier(0.3, 0.0, 1.0, 1.0) |
|
||||
|
||||
## Movement Patterns
|
||||
|
||||
### Arc Motion
|
||||
|
||||
- Use natural, concave arcs for diagonal movement
|
||||
- Single-axis movement (horizontal/vertical only) stays straight
|
||||
- Elements entering/exiting screen move on single axis
|
||||
|
||||
### Choreography
|
||||
|
||||
- **Stagger**: Offset timing for related elements (20-40ms between)
|
||||
- **Cascade**: Sequential reveal from a focal point
|
||||
- **Shared motion**: Elements that move together maintain relationship
|
||||
|
||||
## Transition Patterns
|
||||
|
||||
### Container Transform
|
||||
|
||||
Best for: Navigation from card/list item to detail screen
|
||||
|
||||
- Origin container morphs into destination
|
||||
- Maintains visual continuity
|
||||
- Content fades during transformation
|
||||
|
||||
### Shared Axis
|
||||
|
||||
Best for: Same-level navigation (tabs, stepper)
|
||||
|
||||
| Axis | Direction | Usage |
|
||||
|------|-----------|-------|
|
||||
| X-axis | Horizontal | Tabs, horizontal paging |
|
||||
| Y-axis | Vertical | Vertical lists, feeds |
|
||||
| Z-axis | Depth | Parent-child relationships |
|
||||
|
||||
### Fade Through
|
||||
|
||||
Best for: Unrelated screen transitions
|
||||
|
||||
- Outgoing content fades out
|
||||
- Incoming content fades in
|
||||
- Brief overlap period
|
||||
- No shared elements
|
||||
|
||||
### Fade
|
||||
|
||||
Best for: Show/hide single elements
|
||||
|
||||
- Simple opacity change
|
||||
- Optionally combine with scale
|
||||
- Quick duration (100-200ms)
|
||||
|
||||
## Component-Specific Motion
|
||||
|
||||
### FAB
|
||||
|
||||
| State | Animation |
|
||||
|-------|-----------|
|
||||
| Appear | Scale up + fade in |
|
||||
| Disappear | Scale down + fade out |
|
||||
| Transform | Morph to extended FAB |
|
||||
| Press | Elevation change (3dp → 8dp) |
|
||||
|
||||
### Bottom Sheet
|
||||
|
||||
| State | Animation |
|
||||
|-------|-----------|
|
||||
| Expand | Slide up with decelerate curve |
|
||||
| Collapse | Slide down with accelerate curve |
|
||||
| Dismiss | Swipe down with velocity-based duration |
|
||||
|
||||
### Navigation
|
||||
|
||||
| Pattern | Animation |
|
||||
|---------|-----------|
|
||||
| Push | Incoming slides from right, outgoing shifts left |
|
||||
| Pop | Incoming slides from left, outgoing shifts right |
|
||||
| Modal | Slide up from bottom |
|
||||
|
||||
### Cards
|
||||
|
||||
| State | Animation |
|
||||
|-------|-----------|
|
||||
| Expand | Container transform to detail |
|
||||
| Press | Subtle elevation increase |
|
||||
| Reorder | Follow finger with physics |
|
||||
|
||||
## Loading & Progress
|
||||
|
||||
### Indeterminate Indicators
|
||||
|
||||
- Use for unknown duration
|
||||
- Continuous, looping animation
|
||||
- M3 Expressive: Customizable waveform and thickness
|
||||
|
||||
### Determinate Indicators
|
||||
|
||||
- Use when progress is measurable
|
||||
- Smooth, linear progression
|
||||
- Update frequently for responsiveness
|
||||
|
||||
### Skeleton Screens
|
||||
|
||||
- Show layout structure immediately
|
||||
- Subtle shimmer animation
|
||||
- Replace with content as it loads
|
||||
|
||||
## Accessibility Considerations
|
||||
|
||||
### Reduced Motion
|
||||
|
||||
- Respect prefers-reduced-motion setting
|
||||
- Provide alternatives:
|
||||
- Instant transitions (no animation)
|
||||
- Simple fade instead of complex motion
|
||||
- Static loading indicators
|
||||
|
||||
### Motion Duration
|
||||
|
||||
- Keep essential feedback < 100ms
|
||||
- Avoid motion that could trigger vestibular issues
|
||||
- Test with motion sensitivity settings enabled
|
||||
|
||||
## Implementation Notes
|
||||
|
||||
### Android Animation APIs
|
||||
|
||||
| API | Usage |
|
||||
|-----|-------|
|
||||
| MotionLayout | Complex, coordinated animations |
|
||||
| Transition | Activity/Fragment transitions |
|
||||
| Animator | Property animations |
|
||||
| AnimatedContent | Compose content transitions |
|
||||
| animateContentSize | Compose size changes |
|
||||
|
||||
### Performance Tips
|
||||
|
||||
- Use hardware layers for complex animations
|
||||
- Avoid animating layout properties (use transform)
|
||||
- Profile with GPU rendering tools
|
||||
- Target 60 FPS (16ms per frame)
|
||||
223
skills/android-native-dev/references/performance-stability.md
Normal file
223
skills/android-native-dev/references/performance-stability.md
Normal file
@@ -0,0 +1,223 @@
|
||||
# Performance & Stability Guidelines
|
||||
|
||||
Android Vitals thresholds, performance requirements, and stability best practices.
|
||||
|
||||
## Android Vitals Thresholds
|
||||
|
||||
### Core Metrics (Google Play)
|
||||
|
||||
Exceeding these thresholds affects app visibility on Google Play:
|
||||
|
||||
| Metric | Overall Threshold | Per Phone Model | Per Watch Model |
|
||||
|--------|-------------------|-----------------|-----------------|
|
||||
| User-perceived crash rate | **1.09%** | 8% | 4% |
|
||||
| User-perceived ANR rate | **0.47%** | 8% | 5% |
|
||||
| Excessive battery usage | 1% | - | 1% |
|
||||
| Excessive wake locks | 5% | - | - |
|
||||
|
||||
### Consequences of Exceeding Thresholds
|
||||
|
||||
- Reduced app visibility in Google Play
|
||||
- Warning label on store listing
|
||||
- Lower ranking in search results
|
||||
- Negative impact on user trust
|
||||
|
||||
## Startup Performance
|
||||
|
||||
### Requirements
|
||||
|
||||
| Metric | Target | Maximum |
|
||||
|--------|--------|---------|
|
||||
| Cold start | < 1 second | 2 seconds |
|
||||
| Warm start | < 500ms | 1 second |
|
||||
| Hot start | < 100ms | 500ms |
|
||||
|
||||
### If Startup Exceeds 2 Seconds
|
||||
|
||||
Must provide visual feedback:
|
||||
- Progress indicator
|
||||
- Splash screen with animation
|
||||
- Loading skeleton
|
||||
|
||||
### Optimization Techniques
|
||||
|
||||
| Technique | Impact |
|
||||
|-----------|--------|
|
||||
| Lazy initialization | Defer non-critical work |
|
||||
| Async loading | Move I/O off main thread |
|
||||
| View hierarchy optimization | Reduce layout depth |
|
||||
| App Startup library | Initialize components efficiently |
|
||||
| Baseline Profiles | Pre-compile hot paths |
|
||||
|
||||
## Rendering Performance
|
||||
|
||||
### Frame Rate Requirements
|
||||
|
||||
| Target | Frame Time | Notes |
|
||||
|--------|------------|-------|
|
||||
| 60 FPS | ≤ 16.67ms | Standard requirement |
|
||||
| 90 FPS | ≤ 11.11ms | High refresh rate displays |
|
||||
| 120 FPS | ≤ 8.33ms | Premium devices |
|
||||
|
||||
### Jank Detection
|
||||
|
||||
| Metric | Threshold | Severity |
|
||||
|--------|-----------|----------|
|
||||
| Slow frames | > 16ms | Warning |
|
||||
| Frozen frames | > 700ms | Critical |
|
||||
| Jank rate | > 1% of frames | Poor experience |
|
||||
|
||||
### Common Rendering Issues
|
||||
|
||||
| Issue | Cause | Solution |
|
||||
|-------|-------|----------|
|
||||
| Overdraw | Multiple layers drawn | Reduce background stacking |
|
||||
| Deep hierarchy | Complex view nesting | Use ConstraintLayout, Compose |
|
||||
| Main thread work | Blocking operations | Move to background thread |
|
||||
| Large bitmaps | Unoptimized images | Downsample, use vector |
|
||||
|
||||
## ANR Prevention
|
||||
|
||||
### ANR Triggers
|
||||
|
||||
| Scenario | Timeout |
|
||||
|----------|---------|
|
||||
| Input dispatch | 5 seconds |
|
||||
| Broadcast receiver | 10 seconds |
|
||||
| Service start | 20 seconds |
|
||||
|
||||
### Prevention Strategies
|
||||
|
||||
- Never perform network calls on main thread
|
||||
- Never perform database operations on main thread
|
||||
- Never perform file I/O on main thread
|
||||
- Use coroutines, RxJava, or other async mechanisms
|
||||
- Reduce synchronized block contention
|
||||
|
||||
### Common ANR Causes
|
||||
|
||||
| Cause | Solution |
|
||||
|-------|----------|
|
||||
| Network on main thread | Use coroutines/RxJava |
|
||||
| Database on main thread | Use Room with suspend |
|
||||
| File I/O on main thread | Use Dispatchers.IO |
|
||||
| Lock contention | Reduce synchronized blocks |
|
||||
| Dead locks | Careful threading design |
|
||||
|
||||
## Battery Optimization
|
||||
|
||||
### Wake Lock Guidelines
|
||||
|
||||
| Rule | Implementation |
|
||||
|------|----------------|
|
||||
| Minimize duration | Release as soon as possible |
|
||||
| Use appropriate type | PARTIAL_WAKE_LOCK only when needed |
|
||||
| Always release | Use try-finally or lifecycle |
|
||||
| Prefer WorkManager | System-managed scheduling |
|
||||
|
||||
### Background Restrictions
|
||||
|
||||
| Feature | Best Practice |
|
||||
|---------|---------------|
|
||||
| Background services | Use WorkManager instead |
|
||||
| Location | Request only when necessary |
|
||||
| Network | Batch requests, respect connectivity |
|
||||
| Alarms | Use inexact alarms when possible |
|
||||
|
||||
### Doze and App Standby
|
||||
|
||||
| Mode | Behavior | Adaptation |
|
||||
|------|----------|------------|
|
||||
| Doze | Limited network, alarms delayed | Use FCM for high-priority |
|
||||
| App Standby | Background work restricted | Use expedited WorkManager |
|
||||
| Buckets | Frequency limits by usage | Design for infrequent execution |
|
||||
|
||||
## Memory Management
|
||||
|
||||
### Memory Best Practices
|
||||
|
||||
| Practice | Benefit |
|
||||
|----------|---------|
|
||||
| Avoid memory leaks | Prevent OutOfMemoryError |
|
||||
| Use weak references | Allow garbage collection |
|
||||
| Recycle bitmaps | Reduce memory pressure |
|
||||
| Monitor heap | Profile regularly |
|
||||
|
||||
### Common Memory Issues
|
||||
|
||||
| Issue | Detection | Solution |
|
||||
|-------|-----------|----------|
|
||||
| Activity leak | LeakCanary | Fix lifecycle references |
|
||||
| Bitmap leak | Memory profiler | Recycle, use Glide/Coil |
|
||||
| Context leak | Static analysis | Use application context |
|
||||
| Handler leak | Lint warning | Use WeakReference |
|
||||
|
||||
## StrictMode
|
||||
|
||||
### What StrictMode Detects
|
||||
|
||||
| Category | Issues |
|
||||
|----------|--------|
|
||||
| Thread | Disk reads/writes, network, slow calls |
|
||||
| VM | Leaked objects, unsafe intents, content URI exposure |
|
||||
|
||||
Enable StrictMode in debug builds to detect violations during development.
|
||||
|
||||
## SDK Requirements
|
||||
|
||||
### Version Requirements
|
||||
|
||||
| Property | Requirement |
|
||||
|----------|-------------|
|
||||
| targetSdk | Latest Android SDK (Google Play requirement) |
|
||||
| compileSdk | Latest Android SDK |
|
||||
| minSdk | Based on target audience |
|
||||
|
||||
### Third-Party SDK Management
|
||||
|
||||
| Practice | Reason |
|
||||
|----------|--------|
|
||||
| Keep updated | Security fixes, compatibility |
|
||||
| Audit regularly | Remove unused dependencies |
|
||||
| Monitor crashes | SDKs can cause issues |
|
||||
| Check permissions | SDKs may request excessive permissions |
|
||||
|
||||
### Non-SDK Interface Restrictions
|
||||
|
||||
- Don't use reflection for hidden APIs
|
||||
- Use Android Studio lint to detect
|
||||
- APIs may break in future versions
|
||||
|
||||
## Monitoring and Profiling
|
||||
|
||||
### Tools
|
||||
|
||||
| Tool | Purpose |
|
||||
|------|---------|
|
||||
| Android Studio Profiler | CPU, memory, network, energy |
|
||||
| Android Vitals (Play Console) | Production crash/ANR data |
|
||||
| Firebase Performance | Real-time performance monitoring |
|
||||
| Perfetto | Advanced system tracing |
|
||||
| Benchmark library | Reproducible measurements |
|
||||
|
||||
### Key Metrics to Track
|
||||
|
||||
| Metric | Tool |
|
||||
|--------|------|
|
||||
| Startup time | Macrobenchmark |
|
||||
| Frame timing | JankStats |
|
||||
| Memory usage | Memory Profiler |
|
||||
| Network latency | Network Profiler |
|
||||
| Battery drain | Energy Profiler |
|
||||
|
||||
## Performance Checklist
|
||||
|
||||
- [ ] Cold startup < 2 seconds
|
||||
- [ ] Rendering at 60 FPS
|
||||
- [ ] No StrictMode violations
|
||||
- [ ] Crash rate < 1.09%
|
||||
- [ ] ANR rate < 0.47%
|
||||
- [ ] No memory leaks
|
||||
- [ ] Background work uses WorkManager
|
||||
- [ ] Wake locks properly released
|
||||
- [ ] SDKs up to date
|
||||
244
skills/android-native-dev/references/privacy-security.md
Normal file
244
skills/android-native-dev/references/privacy-security.md
Normal file
@@ -0,0 +1,244 @@
|
||||
# Privacy & Security Guidelines
|
||||
|
||||
Security best practices and privacy requirements for Android applications.
|
||||
|
||||
## Permissions
|
||||
|
||||
### Principle of Least Privilege
|
||||
|
||||
| Rule | Implementation |
|
||||
|------|----------------|
|
||||
| Request minimum | Only permissions essential for core features |
|
||||
| Request when needed | At point of use, not app startup |
|
||||
| Explain why | Show rationale before system dialog |
|
||||
| Degrade gracefully | App works (limited) if denied |
|
||||
|
||||
### Permission Request Flow
|
||||
|
||||
1. Check if already granted
|
||||
2. If not, show educational UI (rationale)
|
||||
3. Request permission
|
||||
4. Handle result (grant or denial)
|
||||
5. If denied, offer alternative or reduced functionality
|
||||
|
||||
### Sensitive Permissions
|
||||
|
||||
| Permission | Consideration |
|
||||
|------------|---------------|
|
||||
| Location | Use coarse if fine not needed |
|
||||
| Camera | Request only when capturing |
|
||||
| Microphone | Request only when recording |
|
||||
| Contacts | Consider contact picker intent |
|
||||
| Storage | Use scoped storage |
|
||||
| SMS/Call Log | Restricted, needs approval |
|
||||
|
||||
### Alternative Approaches
|
||||
|
||||
| Instead of... | Consider... |
|
||||
|---------------|-------------|
|
||||
| READ_CONTACTS | Contact picker intent |
|
||||
| ACCESS_FINE_LOCATION | Coarse location |
|
||||
| READ_EXTERNAL_STORAGE | Storage Access Framework |
|
||||
| CAMERA | Camera intent |
|
||||
|
||||
## Data Storage
|
||||
|
||||
### Storage Types
|
||||
|
||||
| Type | Security | Usage |
|
||||
|------|----------|-------|
|
||||
| Internal storage | Private to app | Sensitive data |
|
||||
| External storage | World-readable | Shared files only |
|
||||
| SharedPreferences | Private, unencrypted | Non-sensitive settings |
|
||||
| EncryptedSharedPreferences | Private, encrypted | Sensitive settings |
|
||||
| Room database | Private, optional encryption | Structured data |
|
||||
|
||||
### Sensitive Data Rules
|
||||
|
||||
| Rule | Implementation |
|
||||
|------|----------------|
|
||||
| Store internally | Use internal storage, not external |
|
||||
| Encrypt at rest | Use EncryptedSharedPreferences, SQLCipher |
|
||||
| Don't log | Never log PII or credentials |
|
||||
| Clear on logout | Wipe user data completely |
|
||||
|
||||
### Data Logging
|
||||
|
||||
Never log sensitive data such as passwords, emails, tokens, or personal information. Only log non-sensitive operational information.
|
||||
|
||||
## Network Security
|
||||
|
||||
### HTTPS Requirements
|
||||
|
||||
- All network traffic must use SSL/TLS
|
||||
- Configure Network Security Config
|
||||
- Don't allow cleartext traffic
|
||||
|
||||
### Network Security Config
|
||||
|
||||
Define a network security configuration that:
|
||||
- Disables cleartext traffic
|
||||
- Specifies trusted certificate authorities
|
||||
- Optionally implements certificate pinning for high-security apps
|
||||
|
||||
### Certificate Pinning (Optional)
|
||||
|
||||
For high-security apps, pin certificates to prevent MITM attacks. Include backup pins and plan for certificate rotation.
|
||||
|
||||
## User Identity
|
||||
|
||||
### Credential Manager
|
||||
|
||||
Integrate Credential Manager for unified sign-in supporting:
|
||||
- Passkeys
|
||||
- Federated identity
|
||||
- Traditional passwords
|
||||
|
||||
### Biometric Authentication
|
||||
|
||||
Use biometric authentication for sensitive operations like:
|
||||
- Financial transactions
|
||||
- Accessing sensitive documents
|
||||
- Confirming identity
|
||||
|
||||
### Autofill Support
|
||||
|
||||
Provide autofill hints on input fields:
|
||||
- emailAddress, username for identity fields
|
||||
- password for credential fields
|
||||
- creditCardNumber, postalCode for payment fields
|
||||
|
||||
## App Components Security
|
||||
|
||||
### Exported Components
|
||||
|
||||
| Component | Exported Rule |
|
||||
|-----------|---------------|
|
||||
| Launcher Activity | exported="true" with intent-filter |
|
||||
| Internal Activity | exported="false" |
|
||||
| Internal Service | exported="false" |
|
||||
| Content Provider (shared) | exported="true" with permissions |
|
||||
|
||||
Always explicitly set the exported attribute on all components.
|
||||
|
||||
### Custom Permissions
|
||||
|
||||
Use signature-level protection for custom permissions that control access between your own apps.
|
||||
|
||||
### Intent Validation
|
||||
|
||||
- Validate all intent data before use
|
||||
- Check URI scheme and host
|
||||
- Use explicit intents when possible
|
||||
- Don't trust extras from unknown sources
|
||||
|
||||
### PendingIntent Security
|
||||
|
||||
Use FLAG_IMMUTABLE for PendingIntents unless mutability is required. This prevents other apps from modifying the intent.
|
||||
|
||||
## WebView Security
|
||||
|
||||
### Safe WebView Configuration
|
||||
|
||||
| Setting | Recommendation |
|
||||
|---------|----------------|
|
||||
| JavaScript | Disabled unless required |
|
||||
| File access | Disabled |
|
||||
| Content access | Disabled |
|
||||
| Universal file access | Never enable |
|
||||
|
||||
### Avoid Dangerous Practices
|
||||
|
||||
| Don't | Why |
|
||||
|-------|-----|
|
||||
| setAllowUniversalAccessFromFileURLs(true) | Security vulnerability |
|
||||
| addJavascriptInterface() with untrusted content | Code injection risk |
|
||||
| Load untrusted URLs | XSS, phishing |
|
||||
|
||||
## Cryptography
|
||||
|
||||
### Use Platform APIs
|
||||
|
||||
- Use Android Keystore for key storage
|
||||
- Use standard algorithms (AES-GCM, RSA)
|
||||
- Never implement custom cryptography
|
||||
- Use SecureRandom for random generation
|
||||
|
||||
### Avoid
|
||||
|
||||
- Custom encryption implementations
|
||||
- Weak algorithms (MD5, SHA1 for security)
|
||||
- Hardcoded keys or secrets
|
||||
- Non-cryptographic random generators
|
||||
|
||||
## Code Security
|
||||
|
||||
### No Dynamic Code Loading
|
||||
|
||||
| Don't | Do Instead |
|
||||
|-------|------------|
|
||||
| Load code at runtime | Android App Bundles |
|
||||
| Download DEX files | Play Feature Delivery |
|
||||
| Execute scripts | Predefined functionality |
|
||||
|
||||
### Debug Code Removal
|
||||
|
||||
- Set debuggable=false in release builds
|
||||
- Enable minification (R8/ProGuard)
|
||||
- Remove debug libraries from production
|
||||
|
||||
## Device Identifiers
|
||||
|
||||
### Don't Use Hardware IDs
|
||||
|
||||
| Identifier | Status |
|
||||
|------------|--------|
|
||||
| IMEI | Don't use |
|
||||
| MAC address | Don't use |
|
||||
| Serial number | Don't use |
|
||||
| Android ID | Limited use only |
|
||||
|
||||
### Recommended Alternatives
|
||||
|
||||
| Use Case | Solution |
|
||||
|----------|----------|
|
||||
| Analytics | Firebase Analytics ID |
|
||||
| Advertising | Advertising ID (resettable) |
|
||||
| App instance | Generate UUID on install |
|
||||
| User identity | Account-based ID |
|
||||
|
||||
## Google Play Policies
|
||||
|
||||
### Data Safety
|
||||
|
||||
- Declare all data collected
|
||||
- Explain data usage
|
||||
- Provide privacy policy
|
||||
- Allow data deletion requests
|
||||
|
||||
### User Data Policy
|
||||
|
||||
| Rule | Requirement |
|
||||
|------|-------------|
|
||||
| Transparency | Clear disclosure of data use |
|
||||
| Security | Protect user data appropriately |
|
||||
| Minimization | Collect only what's needed |
|
||||
| Control | Allow users to manage data |
|
||||
|
||||
## Security Checklist
|
||||
|
||||
- [ ] Permissions requested only when needed
|
||||
- [ ] Permissions explained to user
|
||||
- [ ] Sensitive data stored internally
|
||||
- [ ] No sensitive data in logs
|
||||
- [ ] All network traffic over HTTPS
|
||||
- [ ] Network security config defined
|
||||
- [ ] Components export status explicit
|
||||
- [ ] Custom permissions use signature protection
|
||||
- [ ] Intents validated before use
|
||||
- [ ] PendingIntents use FLAG_IMMUTABLE
|
||||
- [ ] WebView configured securely
|
||||
- [ ] Platform crypto APIs used
|
||||
- [ ] No debug code in production
|
||||
- [ ] No hardware IDs used
|
||||
- [ ] Privacy policy available
|
||||
246
skills/android-native-dev/references/visual-design.md
Normal file
246
skills/android-native-dev/references/visual-design.md
Normal file
@@ -0,0 +1,246 @@
|
||||
# Visual Design Guidelines
|
||||
|
||||
Detailed specifications for colors, typography, spacing, elevation, and shapes in Material Design 3.
|
||||
|
||||
## Color System
|
||||
|
||||
### Color Roles (Tokens)
|
||||
|
||||
Material Design 3 uses a token-based color system with three accent groups:
|
||||
|
||||
| Role | Usage |
|
||||
|------|-------|
|
||||
| **Primary** | Key components, FAB, prominent buttons |
|
||||
| **Secondary** | Less prominent components, filters, chips |
|
||||
| **Tertiary** | Accent, complementary elements |
|
||||
| **Error** | Error states, destructive actions |
|
||||
| **Surface** | Backgrounds, cards, dialogs |
|
||||
|
||||
Each role includes variants: base color, onColor, container, onContainer.
|
||||
|
||||
### Color Contrast Requirements
|
||||
|
||||
| Element | Minimum Contrast Ratio | Notes |
|
||||
|---------|----------------------|-------|
|
||||
| Body text | **4.5:1** | WCAG AA compliance |
|
||||
| Large text (18sp+) | **3:1** | 14sp bold also qualifies |
|
||||
| UI components | **3:1** | Icons, borders, controls |
|
||||
| Focus indicators | **3:1** | Must be clearly visible |
|
||||
|
||||
### Recommended Color Palettes
|
||||
|
||||
#### Modern Professional (Business Apps)
|
||||
|
||||
| Role | Color | Name |
|
||||
|------|-------|------|
|
||||
| Primary | #1976D2 | Blue 700 |
|
||||
| Secondary | #455A64 | Blue Grey 700 |
|
||||
| Tertiary | #00897B | Teal 600 |
|
||||
| Background | #FAFAFA | Grey 50 |
|
||||
|
||||
#### Vibrant & Playful (Consumer Apps)
|
||||
|
||||
| Role | Color | Name |
|
||||
|------|-------|------|
|
||||
| Primary | #6200EE | Deep Purple |
|
||||
| Secondary | #03DAC6 | Teal Accent |
|
||||
| Tertiary | #FF5722 | Deep Orange |
|
||||
| Background | #FFFFFF | White |
|
||||
|
||||
#### Dark & Elegant (Premium Apps)
|
||||
|
||||
| Role | Color | Name |
|
||||
|------|-------|------|
|
||||
| Primary | #BB86FC | Purple 200 |
|
||||
| Secondary | #03DAC6 | Teal 200 |
|
||||
| Tertiary | #CF6679 | Red 200 |
|
||||
| Background | #121212 | Dark surface |
|
||||
|
||||
#### Nature & Wellness (Health Apps)
|
||||
|
||||
| Role | Color | Name |
|
||||
|------|-------|------|
|
||||
| Primary | #4CAF50 | Green 500 |
|
||||
| Secondary | #8BC34A | Light Green 500 |
|
||||
| Tertiary | #FFEB3B | Yellow 500 |
|
||||
| Background | #F1F8E9 | Light Green 50 |
|
||||
|
||||
#### Finance & Trust (Banking Apps)
|
||||
|
||||
| Role | Color | Name |
|
||||
|------|-------|------|
|
||||
| Primary | #00695C | Teal 800 |
|
||||
| Secondary | #37474F | Blue Grey 800 |
|
||||
| Tertiary | #FFC107 | Amber 500 |
|
||||
| Background | #ECEFF1 | Blue Grey 50 |
|
||||
|
||||
### Dark Theme Requirements
|
||||
|
||||
- Background: #121212 or darker
|
||||
- Surface colors use elevation-based tonal overlay
|
||||
- Primary colors should be lighter variants (200-300 range)
|
||||
- Maintain contrast ratios in dark mode
|
||||
- Test all states (hover, focus, pressed) in dark mode
|
||||
|
||||
## Typography System
|
||||
|
||||
### Type Scale
|
||||
|
||||
| Style | Size | Weight | Line Height | Usage |
|
||||
|-------|------|--------|-------------|-------|
|
||||
| Display Large | 57sp | 400 | 64sp | Hero text |
|
||||
| Display Medium | 45sp | 400 | 52sp | Large headers |
|
||||
| Display Small | 36sp | 400 | 44sp | Section headers |
|
||||
| Headline Large | 32sp | 400 | 40sp | Screen titles |
|
||||
| Headline Medium | 28sp | 400 | 36sp | Subsection titles |
|
||||
| Headline Small | 24sp | 400 | 32sp | Card titles |
|
||||
| Title Large | 22sp | 400 | 28sp | App bar titles |
|
||||
| Title Medium | 16sp | 500 | 24sp | List item titles |
|
||||
| Title Small | 14sp | 500 | 20sp | Tabs |
|
||||
| Body Large | 16sp | 400 | 24sp | Primary body text |
|
||||
| Body Medium | 14sp | 400 | 20sp | Secondary body text |
|
||||
| Body Small | 12sp | 400 | 16sp | Captions |
|
||||
| Label Large | 14sp | 500 | 20sp | Button text |
|
||||
| Label Medium | 12sp | 500 | 16sp | Navigation labels |
|
||||
| Label Small | 11sp | 500 | 16sp | Badges |
|
||||
|
||||
### Recommended Fonts
|
||||
|
||||
| Category | Fonts |
|
||||
|----------|-------|
|
||||
| Primary | Roboto (system default) |
|
||||
| Display | Roboto Serif, Google Sans |
|
||||
| Monospace | Roboto Mono, JetBrains Mono |
|
||||
|
||||
### Text Readability
|
||||
|
||||
- **Line length**: 45-75 characters per line (including spaces)
|
||||
- **Paragraph spacing**: 1.5x line height between paragraphs
|
||||
- **Letter spacing**: Use default unless brand requires adjustment
|
||||
- **Text alignment**: Left-aligned for body text (LTR languages)
|
||||
|
||||
## Spacing & Layout
|
||||
|
||||
### 8dp Grid System
|
||||
|
||||
All spacing values should be multiples of 8dp (with 4dp for fine adjustments).
|
||||
|
||||
| Token | Value | Usage |
|
||||
|-------|-------|-------|
|
||||
| xs | 4dp | Icon padding, fine adjustments |
|
||||
| sm | 8dp | Tight spacing, inline elements |
|
||||
| md | 16dp | Default padding, card content |
|
||||
| lg | 24dp | Section spacing |
|
||||
| xl | 32dp | Large gaps, group separation |
|
||||
| xxl | 48dp | Screen margins, major sections |
|
||||
|
||||
### Component Dimensions
|
||||
|
||||
| Component | Height | Min Width | Notes |
|
||||
|-----------|--------|-----------|-------|
|
||||
| Button | 40dp | 64dp | Touch target 48dp |
|
||||
| FAB | 56dp | 56dp | Standard size |
|
||||
| Mini FAB | 40dp | 40dp | Secondary actions |
|
||||
| Extended FAB | 56dp | 80dp | With text label |
|
||||
| Text Field | 56dp | 280dp | Including label |
|
||||
| App Bar | 64dp | - | Top app bar |
|
||||
| Bottom Nav | 80dp | - | With labels |
|
||||
| Nav Rail | - | 80dp | Tablet/desktop |
|
||||
| List Item | 56-88dp | - | Depends on content |
|
||||
| Chip | 32dp | - | Filter/action chips |
|
||||
|
||||
### Touch Targets
|
||||
|
||||
| Type | Size | Notes |
|
||||
|------|------|-------|
|
||||
| Minimum | 48 × 48dp | WCAG requirement |
|
||||
| Recommended | 56 × 56dp | Primary actions |
|
||||
| Kids apps | 56dp+ | Larger for motor skills |
|
||||
| Spacing | 8dp minimum | Between adjacent targets |
|
||||
|
||||
## Elevation & Shadows
|
||||
|
||||
### Elevation Levels
|
||||
|
||||
| Level | Elevation | Usage |
|
||||
|-------|-----------|-------|
|
||||
| Level 0 | 0dp | Flat surfaces |
|
||||
| Level 1 | 1dp | Cards, elevated buttons |
|
||||
| Level 2 | 3dp | FAB (resting), raised elements |
|
||||
| Level 3 | 6dp | Navigation drawer, bottom sheet |
|
||||
| Level 4 | 8dp | FAB (pressed), menus |
|
||||
| Level 5 | 12dp | Dialogs, modal surfaces |
|
||||
|
||||
### Shadow Guidelines
|
||||
|
||||
- Use elevation consistently for same component types
|
||||
- Higher elevation = more important/prominent
|
||||
- In dark theme, use surface tint instead of shadows
|
||||
- Avoid excessive elevation (keeps UI grounded)
|
||||
|
||||
## Shape System
|
||||
|
||||
### Corner Radius
|
||||
|
||||
| Size | Radius | Usage |
|
||||
|------|--------|-------|
|
||||
| None | 0dp | Sharp edges, dividers |
|
||||
| Extra Small | 4dp | Badges, small chips |
|
||||
| Small | 8dp | Buttons, chips, small cards |
|
||||
| Medium | 12dp | Cards, dialogs, text fields |
|
||||
| Large | 16dp | FAB, bottom sheets |
|
||||
| Extra Large | 28dp | Large sheets, expanded cards |
|
||||
| Full | 50% | Pills, avatars, circular buttons |
|
||||
|
||||
### M3 Expressive Shapes
|
||||
|
||||
Material 3 Expressive introduces 35 new decorative shapes:
|
||||
- Organic curves
|
||||
- Asymmetric corners
|
||||
- Cut corners
|
||||
- Scalloped edges
|
||||
|
||||
Use sparingly for brand differentiation and visual interest.
|
||||
|
||||
### Shape Consistency Rules
|
||||
|
||||
- Same component type = same shape
|
||||
- Related components should share shape family
|
||||
- Don't mix too many shape styles on one screen
|
||||
- Consider shape in dark/light theme transitions
|
||||
|
||||
## Icons
|
||||
|
||||
### Size Specifications
|
||||
|
||||
| Size | Dimensions | Usage |
|
||||
|------|------------|-------|
|
||||
| Small | 20 × 20dp | Compact UI, inline |
|
||||
| Standard | 24 × 24dp | Default for most uses |
|
||||
| Large | 40 × 40dp | Emphasis, empty states |
|
||||
|
||||
### Icon Guidelines
|
||||
|
||||
- **Touch target**: Always wrap in 48dp minimum clickable area
|
||||
- **Style**: Outlined (default), Filled (selected/active states)
|
||||
- **Stroke width**: 2dp for outlined icons
|
||||
- **Optical alignment**: May need visual adjustments
|
||||
- **Color**: Use semantic colors (primary, error, etc.)
|
||||
|
||||
### Recommended Icon Sets
|
||||
|
||||
| Set | Usage |
|
||||
|-----|-------|
|
||||
| Material Symbols | Recommended, variable font support |
|
||||
| Material Icons | Legacy, still widely used |
|
||||
|
||||
### Adaptive Icons (App Icon)
|
||||
|
||||
| Property | Value |
|
||||
|----------|-------|
|
||||
| Canvas size | 108 × 108dp |
|
||||
| Safe zone | 66 × 66dp (centered circle) |
|
||||
| Logo size | 48-66dp |
|
||||
| Max display | 72 × 72dp |
|
||||
| Layers | Foreground + Background (both 108dp) |
|
||||
| Android 13+ | Include monochrome layer for theming |
|
||||
567
skills/frontend-dev/SKILL.md
Normal file
567
skills/frontend-dev/SKILL.md
Normal file
@@ -0,0 +1,567 @@
|
||||
---
|
||||
name: frontend-dev
|
||||
description: |
|
||||
Full-stack frontend development combining premium UI design, cinematic animations,
|
||||
AI-generated media assets, persuasive copywriting, and visual art. Builds complete,
|
||||
visually striking web pages with real media, advanced motion, and compelling copy.
|
||||
Use when: building landing pages, marketing sites, product pages, dashboards,
|
||||
generating media assets (image/video/audio/music), writing conversion copy,
|
||||
creating generative art, or implementing cinematic scroll animations.
|
||||
license: MIT
|
||||
metadata:
|
||||
version: "1.0.0"
|
||||
category: frontend
|
||||
sources:
|
||||
- Framer Motion documentation
|
||||
- GSAP / GreenSock documentation
|
||||
- Three.js documentation
|
||||
- Tailwind CSS documentation
|
||||
- React / Next.js documentation
|
||||
- AIDA Framework (Elmo Lewis)
|
||||
- p5.js documentation
|
||||
---
|
||||
|
||||
# Frontend Studio
|
||||
|
||||
Build complete, production-ready frontend pages by orchestrating 5 specialized capabilities: design engineering, motion systems, AI-generated assets, persuasive copy, and generative art.
|
||||
|
||||
## Invocation
|
||||
|
||||
```
|
||||
/frontend-dev <request>
|
||||
```
|
||||
|
||||
The user provides their request as natural language (e.g. "build a landing page for a music streaming app").
|
||||
|
||||
## Skill Structure
|
||||
|
||||
```
|
||||
frontend-dev/
|
||||
├── SKILL.md # Core skill (this file)
|
||||
├── scripts/ # Asset generation scripts
|
||||
│ ├── minimax_tts.py # Text-to-speech
|
||||
│ ├── minimax_music.py # Music generation
|
||||
│ ├── minimax_video.py # Video generation (async)
|
||||
│ └── minimax_image.py # Image generation
|
||||
├── references/ # Detailed guides (read as needed)
|
||||
│ ├── minimax-cli-reference.md # CLI flags quick reference
|
||||
│ ├── asset-prompt-guide.md # Asset prompt engineering rules
|
||||
│ ├── minimax-tts-guide.md # TTS usage & voices
|
||||
│ ├── minimax-music-guide.md # Music prompts & lyrics format
|
||||
│ ├── minimax-video-guide.md # Camera commands & models
|
||||
│ ├── minimax-image-guide.md # Ratios & batch generation
|
||||
│ ├── minimax-voice-catalog.md # All voice IDs
|
||||
│ ├── motion-recipes.md # Animation code snippets
|
||||
│ ├── env-setup.md # Environment setup
|
||||
│ └── troubleshooting.md # Common issues
|
||||
├── templates/ # Visual art templates
|
||||
│ ├── viewer.html # p5.js interactive art base
|
||||
│ └── generator_template.js # p5.js code reference
|
||||
└── canvas-fonts/ # Static art fonts (TTF + licenses)
|
||||
```
|
||||
|
||||
## Project Structure
|
||||
|
||||
### Assets (Universal)
|
||||
|
||||
All frameworks use the same asset organization:
|
||||
|
||||
```
|
||||
assets/
|
||||
├── images/
|
||||
│ ├── hero-landing-1710xxx.webp
|
||||
│ ├── icon-feature-01.webp
|
||||
│ └── bg-pattern.svg
|
||||
├── videos/
|
||||
│ ├── hero-bg-1710xxx.mp4
|
||||
│ └── demo-preview.mp4
|
||||
└── audio/
|
||||
├── bgm-ambient-1710xxx.mp3
|
||||
└── tts-intro-1710xxx.mp3
|
||||
```
|
||||
|
||||
**Asset naming:** `{type}-{descriptor}-{timestamp}.{ext}`
|
||||
|
||||
### By Framework
|
||||
|
||||
| Framework | Asset Location | Component Location |
|
||||
|-----------|---------------|-------------------|
|
||||
| **Pure HTML** | `./assets/` | N/A (inline or `./js/`) |
|
||||
| **React/Next.js** | `public/assets/` | `src/components/` |
|
||||
| **Vue/Nuxt** | `public/assets/` | `src/components/` |
|
||||
| **Svelte/SvelteKit** | `static/assets/` | `src/lib/components/` |
|
||||
| **Astro** | `public/assets/` | `src/components/` |
|
||||
|
||||
### Pure HTML
|
||||
|
||||
```
|
||||
project/
|
||||
├── index.html
|
||||
├── assets/
|
||||
│ ├── images/
|
||||
│ ├── videos/
|
||||
│ └── audio/
|
||||
├── css/
|
||||
│ └── styles.css
|
||||
└── js/
|
||||
└── main.js # Animations (GSAP/vanilla)
|
||||
```
|
||||
|
||||
### React / Next.js
|
||||
|
||||
```
|
||||
project/
|
||||
├── public/assets/ # Static assets
|
||||
├── src/
|
||||
│ ├── components/
|
||||
│ │ ├── ui/ # Button, Card, Input
|
||||
│ │ ├── sections/ # Hero, Features, CTA
|
||||
│ │ └── motion/ # RevealSection, StaggerGrid
|
||||
│ ├── lib/
|
||||
│ ├── styles/
|
||||
│ └── app/ # Pages
|
||||
└── package.json
|
||||
```
|
||||
|
||||
### Vue / Nuxt
|
||||
|
||||
```
|
||||
project/
|
||||
├── public/assets/
|
||||
├── src/ # or root for Nuxt
|
||||
│ ├── components/
|
||||
│ │ ├── ui/
|
||||
│ │ ├── sections/
|
||||
│ │ └── motion/
|
||||
│ ├── composables/ # Shared logic
|
||||
│ ├── pages/
|
||||
│ └── assets/ # Processed assets (optional)
|
||||
└── package.json
|
||||
```
|
||||
|
||||
### Astro
|
||||
|
||||
```
|
||||
project/
|
||||
├── public/assets/
|
||||
├── src/
|
||||
│ ├── components/ # .astro, .tsx, .vue, .svelte
|
||||
│ ├── layouts/
|
||||
│ ├── pages/
|
||||
│ └── styles/
|
||||
└── package.json
|
||||
```
|
||||
|
||||
**Component naming:** PascalCase (`HeroSection.tsx`, `HeroSection.vue`, `HeroSection.astro`)
|
||||
|
||||
---
|
||||
|
||||
## Compliance
|
||||
|
||||
**All rules in this skill are mandatory. Violating any rule is a blocking error — fix before proceeding or delivering.**
|
||||
|
||||
---
|
||||
|
||||
## Workflow
|
||||
### Phase 1: Design Architecture
|
||||
1. Analyze the request — determine page type and context
|
||||
2. Set design dials based on page type
|
||||
3. Plan layout sections and identify asset needs
|
||||
|
||||
### Phase 2: Motion Architecture
|
||||
1. Select animation tools per section (see Tool Selection Matrix)
|
||||
2. Plan motion sequences following performance guardrails
|
||||
|
||||
### Phase 3: Asset Generation
|
||||
Generate all image/video/audio assets using `scripts/`. NEVER use placeholder URLs (unsplash, picsum, placeholder.com, via.placeholder, placehold.co, etc.) or external URLs.
|
||||
|
||||
1. Parse asset requirements (type, style, spec, usage)
|
||||
2. Craft optimized prompts, show to user, confirm before generating
|
||||
3. Execute via scripts, save to project — do NOT proceed to Phase 5 until all assets are saved locally
|
||||
|
||||
### Phase 4: Copywriting & Content
|
||||
Follow copywriting frameworks (AIDA, PAS, FAB) to craft all text content. Do NOT use "Lorem ipsum" — write real copy.
|
||||
|
||||
### Phase 5: Build UI
|
||||
Scaffold the project and build each section following Design and Motion rules. Integrate generated assets and copy. All `<img>`, `<video>`, `<source>`, and CSS `background-image` MUST reference local assets from Phase 3.
|
||||
|
||||
### Phase 6: Quality Gates
|
||||
Run final checklist (see Quality Gates section).
|
||||
|
||||
---
|
||||
|
||||
# 1. Design Engineering
|
||||
|
||||
## 1.1 Baseline Configuration
|
||||
|
||||
| Dial | Default | Range |
|
||||
|------|---------|-------|
|
||||
| DESIGN_VARIANCE | 8 | 1=Symmetry, 10=Asymmetric |
|
||||
| MOTION_INTENSITY | 6 | 1=Static, 10=Cinematic |
|
||||
| VISUAL_DENSITY | 4 | 1=Airy, 10=Packed |
|
||||
|
||||
Adapt dynamically based on user requests.
|
||||
|
||||
## 1.2 Architecture Conventions
|
||||
- **DEPENDENCY VERIFICATION:** Check `package.json` before importing any library. Output install command if missing.
|
||||
- **Framework:** React/Next.js. Default to Server Components. Interactive components must be isolated `"use client"` leaf components.
|
||||
- **Styling:** Tailwind CSS. Check version in `package.json` — NEVER mix v3/v4 syntax.
|
||||
- **ANTI-EMOJI POLICY:** NEVER use emojis anywhere. Use Phosphor or Radix icons only.
|
||||
- **Viewport:** Use `min-h-[100dvh]` not `h-screen`. Use CSS Grid not flex percentage math.
|
||||
- **Layout:** `max-w-[1400px] mx-auto` or `max-w-7xl`.
|
||||
|
||||
## 1.3 Design Rules
|
||||
| Rule | Directive |
|
||||
|------|-----------|
|
||||
| Typography | Headlines: `text-4xl md:text-6xl tracking-tighter`. Body: `text-base leading-relaxed max-w-[65ch]`. **NEVER** use Inter — use Geist/Outfit/Satoshi. **NEVER** use Serif on dashboards. |
|
||||
| Color | Max 1 accent, saturation < 80%. **NEVER** use AI purple/blue. Stick to one palette. |
|
||||
| Layout | **NEVER** use centered heroes when VARIANCE > 4. Force split-screen or asymmetric layouts. |
|
||||
| Cards | **NEVER** use generic cards when DENSITY > 7. Use `border-t`, `divide-y`, or spacing. |
|
||||
| States | **ALWAYS** implement: Loading (skeleton), Empty, Error, Tactile feedback (`scale-[0.98]`). |
|
||||
| Forms | Label above input. Error below. `gap-2` for input blocks. |
|
||||
|
||||
## 1.4 Anti-Slop Techniques
|
||||
|
||||
- **Liquid Glass:** `backdrop-blur` + `border-white/10` + `shadow-[inset_0_1px_0_rgba(255,255,255,0.1)]`
|
||||
- **Magnetic Buttons:** Use `useMotionValue`/`useTransform` — never `useState` for continuous animations
|
||||
- **Perpetual Motion:** When INTENSITY > 5, add infinite micro-animations (Pulse, Float, Shimmer)
|
||||
- **Layout Transitions:** Use Framer `layout` and `layoutId` props
|
||||
- **Stagger:** Use `staggerChildren` or CSS `animation-delay: calc(var(--index) * 100ms)`
|
||||
|
||||
## 1.5 Forbidden Patterns
|
||||
| Category | Banned |
|
||||
|----------|--------|
|
||||
| Visual | Neon glows, pure black (#000), oversaturated accents, gradient text on headers, custom cursors |
|
||||
| Typography | Inter font, oversized H1s, Serif on dashboards |
|
||||
| Layout | 3-column equal card rows, floating elements with awkward gaps |
|
||||
| Components | Default shadcn/ui without customization |
|
||||
|
||||
## 1.6 Creative Arsenal
|
||||
|
||||
| Category | Patterns |
|
||||
|----------|----------|
|
||||
| Navigation | Dock magnification, Magnetic button, Gooey menu, Dynamic island, Radial menu, Speed dial, Mega menu |
|
||||
| Layout | Bento grid, Masonry, Chroma grid, Split-screen scroll, Curtain reveal |
|
||||
| Cards | Parallax tilt, Spotlight border, Glassmorphism, Holographic foil, Swipe stack, Morphing modal |
|
||||
| Scroll | Sticky stack, Horizontal hijack, Locomotive sequence, Zoom parallax, Progress path, Liquid swipe |
|
||||
| Gallery | Dome gallery, Coverflow, Drag-to-pan, Accordion slider, Hover trail, Glitch effect |
|
||||
| Text | Kinetic marquee, Text mask reveal, Scramble effect, Circular path, Gradient stroke, Kinetic grid |
|
||||
| Micro | Particle explosion, Pull-to-refresh, Skeleton shimmer, Directional hover, Ripple click, SVG draw, Mesh gradient, Lens blur |
|
||||
|
||||
## 1.7 Bento Paradigm
|
||||
|
||||
- **Palette:** Background `#f9fafb`, cards pure white with `border-slate-200/50`
|
||||
- **Surfaces:** `rounded-[2.5rem]`, diffusion shadow
|
||||
- **Typography:** Geist/Satoshi, `tracking-tight` headers
|
||||
- **Labels:** Outside and below cards
|
||||
- **Animation:** Spring physics (`stiffness: 100, damping: 20`), infinite loops, `React.memo` isolation
|
||||
|
||||
**5-Card Archetypes:**
|
||||
1. Intelligent List — auto-sorting with `layoutId`
|
||||
2. Command Input — typewriter + blinking cursor
|
||||
3. Live Status — breathing indicators
|
||||
4. Wide Data Stream — infinite horizontal carousel
|
||||
5. Contextual UI — staggered highlight + float-in toolbar
|
||||
|
||||
## 1.8 Brand Override
|
||||
|
||||
When brand styling is active:
|
||||
- Dark: `#141413`, Light: `#faf9f5`, Mid: `#b0aea5`, Subtle: `#e8e6dc`
|
||||
- Accents: Orange `#d97757`, Blue `#6a9bcc`, Green `#788c5d`
|
||||
- Fonts: Poppins (headings), Lora (body)
|
||||
|
||||
---
|
||||
|
||||
# 2. Motion Engine
|
||||
|
||||
## 2.1 Tool Selection Matrix
|
||||
|
||||
| Need | Tool |
|
||||
|------|------|
|
||||
| UI enter/exit/layout | **Framer Motion** — `AnimatePresence`, `layoutId`, springs |
|
||||
| Scroll storytelling (pin, scrub) | **GSAP + ScrollTrigger** — frame-accurate control |
|
||||
| Looping icons | **Lottie** — lazy-load (~50KB) |
|
||||
| 3D/WebGL | **Three.js / R3F** — isolated `<Canvas>`, own `"use client"` boundary |
|
||||
| Hover/focus states | **CSS only** — zero JS cost |
|
||||
| Native scroll-driven | **CSS** — `animation-timeline: scroll()` |
|
||||
|
||||
**Conflict Rules [MANDATORY]:**
|
||||
- NEVER mix GSAP + Framer Motion in same component
|
||||
- R3F MUST live in isolated Canvas wrapper
|
||||
- ALWAYS lazy-load Lottie, GSAP, Three.js
|
||||
|
||||
## 2.2 Intensity Scale
|
||||
|
||||
| Level | Techniques |
|
||||
|-------|------------|
|
||||
| 1-2 Subtle | CSS transitions only, 150-300ms |
|
||||
| 3-4 Smooth | CSS keyframes + Framer animate, stagger ≤3 items |
|
||||
| 5-6 Fluid | `whileInView`, magnetic hover, parallax tilt |
|
||||
| 7-8 Cinematic | GSAP ScrollTrigger, pinned sections, horizontal hijack |
|
||||
| 9-10 Immersive | Full scroll sequences, Three.js particles, WebGL shaders |
|
||||
|
||||
## 2.3 Animation Recipes
|
||||
|
||||
See `references/motion-recipes.md` for full code. Summary:
|
||||
|
||||
| Recipe | Tool | Use For |
|
||||
|--------|------|---------|
|
||||
| Scroll Reveal | Framer | Fade+slide on viewport entry |
|
||||
| Stagger Grid | Framer | Sequential list animations |
|
||||
| Pinned Timeline | GSAP | Horizontal scroll with pinning |
|
||||
| Tilt Card | Framer | Mouse-tracking 3D perspective |
|
||||
| Magnetic Button | Framer | Cursor-attracted buttons |
|
||||
| Text Scramble | Vanilla | Matrix-style decode effect |
|
||||
| SVG Path Draw | CSS | Scroll-linked path animation |
|
||||
| Horizontal Scroll | GSAP | Vertical-to-horizontal hijack |
|
||||
| Particle Background | R3F | Decorative WebGL particles |
|
||||
| Layout Morph | Framer | Card-to-modal expansion |
|
||||
|
||||
## 2.4 Performance Rules
|
||||
**GPU-only properties (ONLY animate these):** `transform`, `opacity`, `filter`, `clip-path`
|
||||
|
||||
**NEVER animate:** `width`, `height`, `top`, `left`, `margin`, `padding`, `font-size` — if you need these effects, use `transform: scale()` or `clip-path` instead.
|
||||
|
||||
**Isolation:**
|
||||
- Perpetual animations MUST be in `React.memo` leaf components
|
||||
- `will-change: transform` ONLY during animation
|
||||
- `contain: layout style paint` on heavy containers
|
||||
|
||||
**Mobile:**
|
||||
- ALWAYS respect `prefers-reduced-motion`
|
||||
- ALWAYS disable parallax/3D on `pointer: coarse`
|
||||
- Cap particles: desktop 800, tablet 300, mobile 100
|
||||
- Disable GSAP pin on mobile < 768px
|
||||
|
||||
**Cleanup:** Every `useEffect` with GSAP/observers MUST `return () => ctx.revert()`
|
||||
|
||||
## 2.5 Springs & Easings
|
||||
|
||||
| Feel | Framer Config |
|
||||
|------|---------------|
|
||||
| Snappy | `stiffness: 300, damping: 30` |
|
||||
| Smooth | `stiffness: 150, damping: 20` |
|
||||
| Bouncy | `stiffness: 100, damping: 10` |
|
||||
| Heavy | `stiffness: 60, damping: 20` |
|
||||
|
||||
| CSS Easing | Value |
|
||||
|------------|-------|
|
||||
| Smooth decel | `cubic-bezier(0.16, 1, 0.3, 1)` |
|
||||
| Smooth accel | `cubic-bezier(0.7, 0, 0.84, 0)` |
|
||||
| Elastic | `cubic-bezier(0.34, 1.56, 0.64, 1)` |
|
||||
|
||||
## 2.6 Accessibility
|
||||
- ALWAYS wrap motion in `prefers-reduced-motion` check
|
||||
- NEVER flash content > 3 times/second (seizure risk)
|
||||
- ALWAYS provide visible focus rings (use `outline` not `box-shadow`)
|
||||
- ALWAYS add `aria-live="polite"` for dynamically revealed content
|
||||
- ALWAYS include pause button for auto-playing animations
|
||||
|
||||
## 2.7 Dependencies
|
||||
|
||||
```bash
|
||||
npm install framer-motion # UI (keep at top level)
|
||||
npm install gsap # Scroll (lazy-load)
|
||||
npm install lottie-react # Icons (lazy-load)
|
||||
npm install three @react-three/fiber @react-three/drei # 3D (lazy-load)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 3. Asset Generation
|
||||
|
||||
## 3.1 Scripts
|
||||
|
||||
| Type | Script | Pattern |
|
||||
|------|--------|---------|
|
||||
| TTS | `scripts/minimax_tts.py` | Sync |
|
||||
| Music | `scripts/minimax_music.py` | Sync |
|
||||
| Video | `scripts/minimax_video.py` | Async (create → poll → download) |
|
||||
| Image | `scripts/minimax_image.py` | Sync |
|
||||
|
||||
Env: `MINIMAX_API_KEY` (required).
|
||||
|
||||
## 3.2 Workflow
|
||||
1. **Parse:** type, quantity, style, spec, usage
|
||||
2. **Craft prompt:** Be specific (composition, lighting, style). **NEVER** include text in image prompts.
|
||||
3. **Execute:** Show prompt to user, **MUST confirm before generating**, then run script
|
||||
4. **Save:** `<project>/public/assets/{images,videos,audio}/` as `{type}-{descriptor}-{timestamp}.{ext}` — **MUST save locally**
|
||||
5. **Post-process:** Images → WebP, Videos → ffmpeg compress, Audio → normalize
|
||||
6. **Deliver:** File path + code snippet + CSS suggestion
|
||||
|
||||
## 3.3 Preset Shortcuts
|
||||
|
||||
| Shortcut | Spec |
|
||||
|----------|------|
|
||||
| `hero` | 16:9, cinematic, text-safe |
|
||||
| `thumb` | 1:1, centered subject |
|
||||
| `icon` | 1:1, flat, clean background |
|
||||
| `avatar` | 1:1, portrait, circular crop ready |
|
||||
| `banner` | 21:9, OG/social |
|
||||
| `bg-video` | 768P, 6s, `[Static shot]` |
|
||||
| `video-hd` | 1080P, 6s |
|
||||
| `bgm` | 30s, no vocals, loopable |
|
||||
| `tts` | MiniMax HD, MP3 |
|
||||
|
||||
## 3.4 Reference
|
||||
|
||||
- `references/minimax-cli-reference.md` — CLI flags
|
||||
- `references/asset-prompt-guide.md` — Prompt rules
|
||||
- `references/minimax-voice-catalog.md` — Voice IDs
|
||||
- `references/minimax-tts-guide.md` — TTS usage
|
||||
- `references/minimax-music-guide.md` — Music generation (prompts, lyrics, structure tags)
|
||||
- `references/minimax-video-guide.md` — Camera commands
|
||||
- `references/minimax-image-guide.md` — Ratios, batch
|
||||
|
||||
---
|
||||
|
||||
# 4. Copywriting
|
||||
|
||||
## 4.1 Core Job
|
||||
|
||||
1. Grab attention → 2. Create desire → 3. Remove friction → 4. Prompt action
|
||||
|
||||
## 4.2 Frameworks
|
||||
|
||||
**AIDA** (landing pages, emails):
|
||||
```
|
||||
ATTENTION: Bold headline (promise or pain)
|
||||
INTEREST: Elaborate problem ("yes, that's me")
|
||||
DESIRE: Show transformation
|
||||
ACTION: Clear CTA
|
||||
```
|
||||
|
||||
**PAS** (pain-driven products):
|
||||
```
|
||||
PROBLEM: State clearly
|
||||
AGITATE: Make urgent
|
||||
SOLUTION: Your product
|
||||
```
|
||||
|
||||
**FAB** (product differentiation):
|
||||
```
|
||||
FEATURE: What it does
|
||||
ADVANTAGE: Why it matters
|
||||
BENEFIT: What customer gains
|
||||
```
|
||||
|
||||
## 4.3 Headlines
|
||||
|
||||
| Formula | Example |
|
||||
|---------|---------|
|
||||
| Promise | "Double open rates in 30 days" |
|
||||
| Question | "Still wasting 10 hours/week?" |
|
||||
| How-To | "How to automate your pipeline" |
|
||||
| Number | "7 mistakes killing conversions" |
|
||||
| Negative | "Stop losing leads" |
|
||||
| Curiosity | "The one change that tripled bookings" |
|
||||
| Transformation | "From 50 to 500 leads" |
|
||||
|
||||
Be specific. Lead with outcome, not method.
|
||||
|
||||
## 4.4 CTAs
|
||||
|
||||
**Bad:** Submit, Click here, Learn more
|
||||
|
||||
**Good:** "Start my free trial", "Get the template now", "Book my strategy call"
|
||||
|
||||
**Formula:** [Action Verb] + [What They Get] + [Urgency/Ease]
|
||||
|
||||
Place: above fold, after value, multiple on long pages.
|
||||
|
||||
## 4.5 Emotional Triggers
|
||||
|
||||
| Trigger | Example |
|
||||
|---------|---------|
|
||||
| FOMO | "Only 3 spots left" |
|
||||
| Fear of loss | "Every day without this, you're losing $X" |
|
||||
| Status | "Join 10,000+ top agencies" |
|
||||
| Ease | "Set it up once. Forget forever." |
|
||||
| Frustration | "Tired of tools that deliver nothing?" |
|
||||
| Hope | "Yes, you CAN hit $10K MRR" |
|
||||
|
||||
## 4.6 Objection Handling
|
||||
|
||||
| Objection | Response |
|
||||
|-----------|----------|
|
||||
| Too expensive | Show ROI: "Pays for itself in 2 weeks" |
|
||||
| Won't work for me | Social proof from similar customer |
|
||||
| No time | "Setup takes 10 minutes" |
|
||||
| What if it fails | "30-day money-back guarantee" |
|
||||
| Need to think | Urgency/scarcity |
|
||||
|
||||
Place in FAQ, testimonials, near CTA.
|
||||
|
||||
## 4.7 Proof Types
|
||||
|
||||
Testimonials (with name/title), Case studies, Data/metrics, Social proof, Certifications
|
||||
|
||||
---
|
||||
|
||||
# 5. Visual Art
|
||||
|
||||
Philosophy-first workflow. Two output modes.
|
||||
|
||||
## 5.1 Output Modes
|
||||
|
||||
| Mode | Output | When |
|
||||
|------|--------|------|
|
||||
| Static | PDF/PNG | Posters, print, design assets |
|
||||
| Interactive | HTML (p5.js) | Generative art, explorable variations |
|
||||
|
||||
## 5.2 Workflow
|
||||
|
||||
### Step 1: Philosophy Creation
|
||||
Name the movement (1-2 words). Articulate philosophy (4-6 paragraphs) covering:
|
||||
- Static: space, form, color, scale, rhythm, hierarchy
|
||||
- Interactive: computation, emergence, noise, parametric variation
|
||||
|
||||
### Step 2: Conceptual Seed
|
||||
Identify subtle, niche reference — sophisticated, not literal. Jazz musician quoting another song.
|
||||
|
||||
### Step 3: Creation
|
||||
|
||||
**Static Mode:**
|
||||
- Single page, highly visual, design-forward
|
||||
- Repeating patterns, perfect shapes
|
||||
- Sparse typography from `canvas-fonts/`
|
||||
- Nothing overlaps, proper margins
|
||||
- Output: `.pdf` or `.png` + philosophy `.md`
|
||||
|
||||
**Interactive Mode:**
|
||||
1. Read `templates/viewer.html` first
|
||||
2. Keep FIXED sections (header, sidebar, seed controls)
|
||||
3. Replace VARIABLE sections (algorithm, parameters)
|
||||
4. Seeded randomness: `randomSeed(seed); noiseSeed(seed);`
|
||||
5. Output: single self-contained HTML
|
||||
|
||||
### Step 4: Refinement
|
||||
Refine, don't add. Make it crisp. Polish into masterpiece.
|
||||
|
||||
---
|
||||
|
||||
# Quality Gates
|
||||
**Design:**
|
||||
- [ ] Mobile layout collapse (`w-full`, `px-4`) for high-variance designs
|
||||
- [ ] `min-h-[100dvh]` not `h-screen`
|
||||
- [ ] Empty, loading, error states provided
|
||||
- [ ] Cards omitted where spacing suffices
|
||||
|
||||
**Motion:**
|
||||
- [ ] Correct tool per selection matrix
|
||||
- [ ] No GSAP + Framer mixed in same component
|
||||
- [ ] All `useEffect` have cleanup returns
|
||||
- [ ] `prefers-reduced-motion` respected
|
||||
- [ ] Perpetual animations in `React.memo` leaf components
|
||||
- [ ] Only GPU properties animated
|
||||
- [ ] Heavy libraries lazy-loaded
|
||||
|
||||
**General:**
|
||||
- [ ] Dependencies verified in `package.json`
|
||||
- [ ] **No placeholder URLs** — grep the output for `unsplash`, `picsum`, `placeholder`, `placehold`, `via.placeholder`, `lorem.space`, `dummyimage`. If ANY found, STOP and replace with generated assets before delivering.
|
||||
- [ ] **All media assets exist as local files** in the project's assets directory
|
||||
- [ ] Asset prompts confirmed with user before generation
|
||||
|
||||
---
|
||||
|
||||
*React and Next.js are trademarks of Meta Platforms, Inc. and Vercel, Inc., respectively. Vue.js is a trademark of Evan You. Tailwind CSS is a trademark of Tailwind Labs Inc. Svelte and SvelteKit are trademarks of their respective owners. GSAP/GreenSock is a trademark of GreenSock Inc. Three.js, Framer Motion, Lottie, Astro, and all other product names are trademarks of their respective owners.*
|
||||
93
skills/frontend-dev/canvas-fonts/ArsenalSC-OFL.txt
Normal file
93
skills/frontend-dev/canvas-fonts/ArsenalSC-OFL.txt
Normal file
@@ -0,0 +1,93 @@
|
||||
Copyright 2012 The Arsenal Project Authors (andrij.design@gmail.com)
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
https://openfontlicense.org
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
BIN
skills/frontend-dev/canvas-fonts/ArsenalSC-Regular.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/ArsenalSC-Regular.ttf
Normal file
Binary file not shown.
BIN
skills/frontend-dev/canvas-fonts/BigShoulders-Bold.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/BigShoulders-Bold.ttf
Normal file
Binary file not shown.
93
skills/frontend-dev/canvas-fonts/BigShoulders-OFL.txt
Normal file
93
skills/frontend-dev/canvas-fonts/BigShoulders-OFL.txt
Normal file
@@ -0,0 +1,93 @@
|
||||
Copyright 2019 The Big Shoulders Project Authors (https://github.com/xotypeco/big_shoulders)
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
https://openfontlicense.org
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
BIN
skills/frontend-dev/canvas-fonts/BigShoulders-Regular.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/BigShoulders-Regular.ttf
Normal file
Binary file not shown.
93
skills/frontend-dev/canvas-fonts/Boldonse-OFL.txt
Normal file
93
skills/frontend-dev/canvas-fonts/Boldonse-OFL.txt
Normal file
@@ -0,0 +1,93 @@
|
||||
Copyright 2024 The Boldonse Project Authors (https://github.com/googlefonts/boldonse)
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
https://openfontlicense.org
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
BIN
skills/frontend-dev/canvas-fonts/Boldonse-Regular.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/Boldonse-Regular.ttf
Normal file
Binary file not shown.
BIN
skills/frontend-dev/canvas-fonts/BricolageGrotesque-Bold.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/BricolageGrotesque-Bold.ttf
Normal file
Binary file not shown.
93
skills/frontend-dev/canvas-fonts/BricolageGrotesque-OFL.txt
Normal file
93
skills/frontend-dev/canvas-fonts/BricolageGrotesque-OFL.txt
Normal file
@@ -0,0 +1,93 @@
|
||||
Copyright 2022 The Bricolage Grotesque Project Authors (https://github.com/ateliertriay/bricolage)
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
https://openfontlicense.org
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
BIN
skills/frontend-dev/canvas-fonts/BricolageGrotesque-Regular.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/BricolageGrotesque-Regular.ttf
Normal file
Binary file not shown.
BIN
skills/frontend-dev/canvas-fonts/CrimsonPro-Bold.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/CrimsonPro-Bold.ttf
Normal file
Binary file not shown.
BIN
skills/frontend-dev/canvas-fonts/CrimsonPro-Italic.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/CrimsonPro-Italic.ttf
Normal file
Binary file not shown.
93
skills/frontend-dev/canvas-fonts/CrimsonPro-OFL.txt
Normal file
93
skills/frontend-dev/canvas-fonts/CrimsonPro-OFL.txt
Normal file
@@ -0,0 +1,93 @@
|
||||
Copyright 2018 The Crimson Pro Project Authors (https://github.com/Fonthausen/CrimsonPro)
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
https://openfontlicense.org
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
BIN
skills/frontend-dev/canvas-fonts/CrimsonPro-Regular.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/CrimsonPro-Regular.ttf
Normal file
Binary file not shown.
93
skills/frontend-dev/canvas-fonts/DMMono-OFL.txt
Normal file
93
skills/frontend-dev/canvas-fonts/DMMono-OFL.txt
Normal file
@@ -0,0 +1,93 @@
|
||||
Copyright 2020 The DM Mono Project Authors (https://www.github.com/googlefonts/dm-mono)
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
https://openfontlicense.org
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
BIN
skills/frontend-dev/canvas-fonts/DMMono-Regular.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/DMMono-Regular.ttf
Normal file
Binary file not shown.
94
skills/frontend-dev/canvas-fonts/EricaOne-OFL.txt
Normal file
94
skills/frontend-dev/canvas-fonts/EricaOne-OFL.txt
Normal file
@@ -0,0 +1,94 @@
|
||||
Copyright (c) 2011 by LatinoType Limitada (luciano@latinotype.com),
|
||||
with Reserved Font Names "Erica One"
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
https://openfontlicense.org
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
BIN
skills/frontend-dev/canvas-fonts/EricaOne-Regular.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/EricaOne-Regular.ttf
Normal file
Binary file not shown.
BIN
skills/frontend-dev/canvas-fonts/GeistMono-Bold.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/GeistMono-Bold.ttf
Normal file
Binary file not shown.
93
skills/frontend-dev/canvas-fonts/GeistMono-OFL.txt
Normal file
93
skills/frontend-dev/canvas-fonts/GeistMono-OFL.txt
Normal file
@@ -0,0 +1,93 @@
|
||||
Copyright 2024 The Geist Project Authors (https://github.com/vercel/geist-font.git)
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
https://openfontlicense.org
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
BIN
skills/frontend-dev/canvas-fonts/GeistMono-Regular.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/GeistMono-Regular.ttf
Normal file
Binary file not shown.
93
skills/frontend-dev/canvas-fonts/Gloock-OFL.txt
Normal file
93
skills/frontend-dev/canvas-fonts/Gloock-OFL.txt
Normal file
@@ -0,0 +1,93 @@
|
||||
Copyright 2022 The Gloock Project Authors (https://github.com/duartp/gloock)
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
https://openfontlicense.org
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
BIN
skills/frontend-dev/canvas-fonts/Gloock-Regular.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/Gloock-Regular.ttf
Normal file
Binary file not shown.
BIN
skills/frontend-dev/canvas-fonts/IBMPlexMono-Bold.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/IBMPlexMono-Bold.ttf
Normal file
Binary file not shown.
93
skills/frontend-dev/canvas-fonts/IBMPlexMono-OFL.txt
Normal file
93
skills/frontend-dev/canvas-fonts/IBMPlexMono-OFL.txt
Normal file
@@ -0,0 +1,93 @@
|
||||
Copyright © 2017 IBM Corp. with Reserved Font Name "Plex"
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
https://openfontlicense.org
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
BIN
skills/frontend-dev/canvas-fonts/IBMPlexMono-Regular.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/IBMPlexMono-Regular.ttf
Normal file
Binary file not shown.
BIN
skills/frontend-dev/canvas-fonts/IBMPlexSerif-Bold.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/IBMPlexSerif-Bold.ttf
Normal file
Binary file not shown.
BIN
skills/frontend-dev/canvas-fonts/IBMPlexSerif-BoldItalic.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/IBMPlexSerif-BoldItalic.ttf
Normal file
Binary file not shown.
BIN
skills/frontend-dev/canvas-fonts/IBMPlexSerif-Italic.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/IBMPlexSerif-Italic.ttf
Normal file
Binary file not shown.
BIN
skills/frontend-dev/canvas-fonts/IBMPlexSerif-Regular.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/IBMPlexSerif-Regular.ttf
Normal file
Binary file not shown.
BIN
skills/frontend-dev/canvas-fonts/InstrumentSans-Bold.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/InstrumentSans-Bold.ttf
Normal file
Binary file not shown.
BIN
skills/frontend-dev/canvas-fonts/InstrumentSans-BoldItalic.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/InstrumentSans-BoldItalic.ttf
Normal file
Binary file not shown.
BIN
skills/frontend-dev/canvas-fonts/InstrumentSans-Italic.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/InstrumentSans-Italic.ttf
Normal file
Binary file not shown.
93
skills/frontend-dev/canvas-fonts/InstrumentSans-OFL.txt
Normal file
93
skills/frontend-dev/canvas-fonts/InstrumentSans-OFL.txt
Normal file
@@ -0,0 +1,93 @@
|
||||
Copyright 2022 The Instrument Sans Project Authors (https://github.com/Instrument/instrument-sans)
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
https://openfontlicense.org
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
BIN
skills/frontend-dev/canvas-fonts/InstrumentSans-Regular.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/InstrumentSans-Regular.ttf
Normal file
Binary file not shown.
BIN
skills/frontend-dev/canvas-fonts/InstrumentSerif-Italic.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/InstrumentSerif-Italic.ttf
Normal file
Binary file not shown.
BIN
skills/frontend-dev/canvas-fonts/InstrumentSerif-Regular.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/InstrumentSerif-Regular.ttf
Normal file
Binary file not shown.
93
skills/frontend-dev/canvas-fonts/Italiana-OFL.txt
Normal file
93
skills/frontend-dev/canvas-fonts/Italiana-OFL.txt
Normal file
@@ -0,0 +1,93 @@
|
||||
Copyright (c) 2011, Santiago Orozco (hi@typemade.mx), with Reserved Font Name "Italiana".
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
https://openfontlicense.org
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
BIN
skills/frontend-dev/canvas-fonts/Italiana-Regular.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/Italiana-Regular.ttf
Normal file
Binary file not shown.
BIN
skills/frontend-dev/canvas-fonts/JetBrainsMono-Bold.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/JetBrainsMono-Bold.ttf
Normal file
Binary file not shown.
93
skills/frontend-dev/canvas-fonts/JetBrainsMono-OFL.txt
Normal file
93
skills/frontend-dev/canvas-fonts/JetBrainsMono-OFL.txt
Normal file
@@ -0,0 +1,93 @@
|
||||
Copyright 2020 The JetBrains Mono Project Authors (https://github.com/JetBrains/JetBrainsMono)
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
https://openfontlicense.org
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
BIN
skills/frontend-dev/canvas-fonts/JetBrainsMono-Regular.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/JetBrainsMono-Regular.ttf
Normal file
Binary file not shown.
BIN
skills/frontend-dev/canvas-fonts/Jura-Light.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/Jura-Light.ttf
Normal file
Binary file not shown.
BIN
skills/frontend-dev/canvas-fonts/Jura-Medium.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/Jura-Medium.ttf
Normal file
Binary file not shown.
93
skills/frontend-dev/canvas-fonts/Jura-OFL.txt
Normal file
93
skills/frontend-dev/canvas-fonts/Jura-OFL.txt
Normal file
@@ -0,0 +1,93 @@
|
||||
Copyright 2019 The Jura Project Authors (https://github.com/ossobuffo/jura)
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
https://openfontlicense.org
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
93
skills/frontend-dev/canvas-fonts/LibreBaskerville-OFL.txt
Normal file
93
skills/frontend-dev/canvas-fonts/LibreBaskerville-OFL.txt
Normal file
@@ -0,0 +1,93 @@
|
||||
Copyright 2012 The Libre Baskerville Project Authors (https://github.com/impallari/Libre-Baskerville) with Reserved Font Name Libre Baskerville.
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
https://openfontlicense.org
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
BIN
skills/frontend-dev/canvas-fonts/LibreBaskerville-Regular.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/LibreBaskerville-Regular.ttf
Normal file
Binary file not shown.
BIN
skills/frontend-dev/canvas-fonts/Lora-Bold.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/Lora-Bold.ttf
Normal file
Binary file not shown.
BIN
skills/frontend-dev/canvas-fonts/Lora-BoldItalic.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/Lora-BoldItalic.ttf
Normal file
Binary file not shown.
BIN
skills/frontend-dev/canvas-fonts/Lora-Italic.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/Lora-Italic.ttf
Normal file
Binary file not shown.
93
skills/frontend-dev/canvas-fonts/Lora-OFL.txt
Normal file
93
skills/frontend-dev/canvas-fonts/Lora-OFL.txt
Normal file
@@ -0,0 +1,93 @@
|
||||
Copyright 2011 The Lora Project Authors (https://github.com/cyrealtype/Lora-Cyrillic), with Reserved Font Name "Lora".
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
https://openfontlicense.org
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
BIN
skills/frontend-dev/canvas-fonts/Lora-Regular.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/Lora-Regular.ttf
Normal file
Binary file not shown.
BIN
skills/frontend-dev/canvas-fonts/NationalPark-Bold.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/NationalPark-Bold.ttf
Normal file
Binary file not shown.
93
skills/frontend-dev/canvas-fonts/NationalPark-OFL.txt
Normal file
93
skills/frontend-dev/canvas-fonts/NationalPark-OFL.txt
Normal file
@@ -0,0 +1,93 @@
|
||||
Copyright 2025 The National Park Project Authors (https://github.com/benhoepner/National-Park)
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
https://openfontlicense.org
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
BIN
skills/frontend-dev/canvas-fonts/NationalPark-Regular.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/NationalPark-Regular.ttf
Normal file
Binary file not shown.
93
skills/frontend-dev/canvas-fonts/NothingYouCouldDo-OFL.txt
Normal file
93
skills/frontend-dev/canvas-fonts/NothingYouCouldDo-OFL.txt
Normal file
@@ -0,0 +1,93 @@
|
||||
Copyright (c) 2010, Kimberly Geswein (kimberlygeswein.com)
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
https://openfontlicense.org
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
BIN
skills/frontend-dev/canvas-fonts/NothingYouCouldDo-Regular.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/NothingYouCouldDo-Regular.ttf
Normal file
Binary file not shown.
BIN
skills/frontend-dev/canvas-fonts/Outfit-Bold.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/Outfit-Bold.ttf
Normal file
Binary file not shown.
93
skills/frontend-dev/canvas-fonts/Outfit-OFL.txt
Normal file
93
skills/frontend-dev/canvas-fonts/Outfit-OFL.txt
Normal file
@@ -0,0 +1,93 @@
|
||||
Copyright 2021 The Outfit Project Authors (https://github.com/Outfitio/Outfit-Fonts)
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
https://openfontlicense.org
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
BIN
skills/frontend-dev/canvas-fonts/Outfit-Regular.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/Outfit-Regular.ttf
Normal file
Binary file not shown.
BIN
skills/frontend-dev/canvas-fonts/PixelifySans-Medium.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/PixelifySans-Medium.ttf
Normal file
Binary file not shown.
93
skills/frontend-dev/canvas-fonts/PixelifySans-OFL.txt
Normal file
93
skills/frontend-dev/canvas-fonts/PixelifySans-OFL.txt
Normal file
@@ -0,0 +1,93 @@
|
||||
Copyright 2021 The Pixelify Sans Project Authors (https://github.com/eifetx/Pixelify-Sans)
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
https://openfontlicense.org
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
93
skills/frontend-dev/canvas-fonts/PoiretOne-OFL.txt
Normal file
93
skills/frontend-dev/canvas-fonts/PoiretOne-OFL.txt
Normal file
@@ -0,0 +1,93 @@
|
||||
Copyright (c) 2011, Denis Masharov (denis.masharov@gmail.com)
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
https://openfontlicense.org
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
BIN
skills/frontend-dev/canvas-fonts/PoiretOne-Regular.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/PoiretOne-Regular.ttf
Normal file
Binary file not shown.
BIN
skills/frontend-dev/canvas-fonts/RedHatMono-Bold.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/RedHatMono-Bold.ttf
Normal file
Binary file not shown.
93
skills/frontend-dev/canvas-fonts/RedHatMono-OFL.txt
Normal file
93
skills/frontend-dev/canvas-fonts/RedHatMono-OFL.txt
Normal file
@@ -0,0 +1,93 @@
|
||||
Copyright 2024 The Red Hat Project Authors (https://github.com/RedHatOfficial/RedHatFont)
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
https://openfontlicense.org
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
BIN
skills/frontend-dev/canvas-fonts/RedHatMono-Regular.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/RedHatMono-Regular.ttf
Normal file
Binary file not shown.
93
skills/frontend-dev/canvas-fonts/Silkscreen-OFL.txt
Normal file
93
skills/frontend-dev/canvas-fonts/Silkscreen-OFL.txt
Normal file
@@ -0,0 +1,93 @@
|
||||
Copyright 2001 The Silkscreen Project Authors (https://github.com/googlefonts/silkscreen)
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
https://openfontlicense.org
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
BIN
skills/frontend-dev/canvas-fonts/Silkscreen-Regular.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/Silkscreen-Regular.ttf
Normal file
Binary file not shown.
BIN
skills/frontend-dev/canvas-fonts/SmoochSans-Medium.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/SmoochSans-Medium.ttf
Normal file
Binary file not shown.
93
skills/frontend-dev/canvas-fonts/SmoochSans-OFL.txt
Normal file
93
skills/frontend-dev/canvas-fonts/SmoochSans-OFL.txt
Normal file
@@ -0,0 +1,93 @@
|
||||
Copyright 2016 The Smooch Sans Project Authors (https://github.com/googlefonts/smooch-sans)
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
https://openfontlicense.org
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
BIN
skills/frontend-dev/canvas-fonts/Tektur-Medium.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/Tektur-Medium.ttf
Normal file
Binary file not shown.
93
skills/frontend-dev/canvas-fonts/Tektur-OFL.txt
Normal file
93
skills/frontend-dev/canvas-fonts/Tektur-OFL.txt
Normal file
@@ -0,0 +1,93 @@
|
||||
Copyright 2023 The Tektur Project Authors (https://www.github.com/hyvyys/Tektur)
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
https://openfontlicense.org
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
BIN
skills/frontend-dev/canvas-fonts/Tektur-Regular.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/Tektur-Regular.ttf
Normal file
Binary file not shown.
BIN
skills/frontend-dev/canvas-fonts/WorkSans-Bold.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/WorkSans-Bold.ttf
Normal file
Binary file not shown.
BIN
skills/frontend-dev/canvas-fonts/WorkSans-BoldItalic.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/WorkSans-BoldItalic.ttf
Normal file
Binary file not shown.
BIN
skills/frontend-dev/canvas-fonts/WorkSans-Italic.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/WorkSans-Italic.ttf
Normal file
Binary file not shown.
93
skills/frontend-dev/canvas-fonts/WorkSans-OFL.txt
Normal file
93
skills/frontend-dev/canvas-fonts/WorkSans-OFL.txt
Normal file
@@ -0,0 +1,93 @@
|
||||
Copyright 2019 The Work Sans Project Authors (https://github.com/weiweihuanghuang/Work-Sans)
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
https://openfontlicense.org
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
BIN
skills/frontend-dev/canvas-fonts/WorkSans-Regular.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/WorkSans-Regular.ttf
Normal file
Binary file not shown.
93
skills/frontend-dev/canvas-fonts/YoungSerif-OFL.txt
Normal file
93
skills/frontend-dev/canvas-fonts/YoungSerif-OFL.txt
Normal file
@@ -0,0 +1,93 @@
|
||||
Copyright 2023 The Young Serif Project Authors (https://github.com/noirblancrouge/YoungSerif)
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
https://openfontlicense.org
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
BIN
skills/frontend-dev/canvas-fonts/YoungSerif-Regular.ttf
Normal file
BIN
skills/frontend-dev/canvas-fonts/YoungSerif-Regular.ttf
Normal file
Binary file not shown.
43
skills/frontend-dev/references/asset-prompt-guide.md
Normal file
43
skills/frontend-dev/references/asset-prompt-guide.md
Normal file
@@ -0,0 +1,43 @@
|
||||
# Prompt Engineering Guide
|
||||
|
||||
## Image Prompts
|
||||
|
||||
- Be specific about composition: "left-aligned subject with negative space on the right for text overlay"
|
||||
- Specify lighting: "soft studio lighting", "golden hour backlight", "flat diffused light"
|
||||
- Include style modifiers: "editorial photography", "3D render", "flat vector illustration"
|
||||
- Add technical specs: "4K resolution, sharp focus, shallow depth of field"
|
||||
- For web assets: always mention "clean background", "web-optimized", "high contrast for readability"
|
||||
- **NEVER** include text in image prompts unless explicitly requested — AI text rendering is unreliable
|
||||
|
||||
## Video Prompts
|
||||
|
||||
- Use MiniMax camera commands in brackets: `[Push in]`, `[Truck left]`, `[Tracking shot]`, etc.
|
||||
- Describe scene, subject, lighting, and mood — the API auto-optimizes prompts by default
|
||||
- For web backgrounds: keep 6s duration, add `[Static shot]` for stability
|
||||
- Max 2,000 characters
|
||||
|
||||
## Audio / TTS
|
||||
|
||||
- Specify genre, tempo (BPM), mood, and instruments
|
||||
- For background music: "no vocals, suitable for background, not distracting"
|
||||
- For sound effects: be extremely specific about the sound event
|
||||
- For TTS: choose voice matching content language and speaker gender
|
||||
|
||||
## Preset Shortcuts
|
||||
|
||||
| Shortcut | Spec |
|
||||
|----------|------|
|
||||
| `hero` | 16:9 (1280x720) image, cinematic, text-safe space |
|
||||
| `thumb` | 1:1 (1024x1024) image, centered subject |
|
||||
| `icon` | 1:1 (1024x1024), flat style, clean background |
|
||||
| `avatar` | 1:1 (1024x1024), portrait, circular crop ready |
|
||||
| `banner` | 21:9 (1344x576), OG/social banner |
|
||||
| `portrait` | 2:3 (832x1248), vertical portrait |
|
||||
| `mobile` | 9:16 (720x1280), mobile fullscreen |
|
||||
| `bg-video` | 768P, 6s, `[Static shot]`, MiniMax Hailuo-2.3 |
|
||||
| `video` | 768P, 6s, MiniMax Hailuo-2.3, prompt auto-optimized |
|
||||
| `video-hd` | 1080P, 6s, MiniMax Hailuo-2.3 |
|
||||
| `bgm` | 30s background music, no vocals, loopable |
|
||||
| `sfx` | Short sound effect, < 3s |
|
||||
| `tts` | Text-to-speech, MiniMax HD, MP3 |
|
||||
| `narration` | Expressive narration voice, MiniMax |
|
||||
33
skills/frontend-dev/references/env-setup.md
Normal file
33
skills/frontend-dev/references/env-setup.md
Normal file
@@ -0,0 +1,33 @@
|
||||
# Getting Started
|
||||
|
||||
## 1. Set API key
|
||||
|
||||
```bash
|
||||
export MINIMAX_API_KEY="<paste-your-key-here>"
|
||||
```
|
||||
|
||||
## 2. Install dependencies
|
||||
|
||||
```bash
|
||||
pip install requests
|
||||
|
||||
# FFmpeg (optional, for audio post-processing)
|
||||
# macOS:
|
||||
brew install ffmpeg
|
||||
# Ubuntu:
|
||||
sudo apt install ffmpeg
|
||||
```
|
||||
|
||||
## 3. Quick test
|
||||
|
||||
```bash
|
||||
python scripts/minimax_tts.py "Hello world" -o test.mp3
|
||||
```
|
||||
|
||||
If successful, you'll see `OK: xxxxx bytes -> test.mp3`.
|
||||
|
||||
## Next steps
|
||||
|
||||
- **Voice selection**: See [minimax-voice-catalog.md](minimax-voice-catalog.md)
|
||||
- **TTS workflows**: See [minimax-tts-guide.md](minimax-tts-guide.md)
|
||||
- **Troubleshooting**: See [troubleshooting.md](troubleshooting.md)
|
||||
133
skills/frontend-dev/references/minimax-cli-reference.md
Normal file
133
skills/frontend-dev/references/minimax-cli-reference.md
Normal file
@@ -0,0 +1,133 @@
|
||||
# Provider Reference — MiniMax
|
||||
|
||||
All asset generation uses MiniMax API. Env: `MINIMAX_API_KEY` (required).
|
||||
|
||||
## Audio (Sync TTS)
|
||||
|
||||
**Script:** `scripts/minimax_tts.py`
|
||||
|
||||
```bash
|
||||
python scripts/minimax_tts.py "Hello world" -o output.mp3
|
||||
python scripts/minimax_tts.py "你好" -o hi.mp3 -v female-shaonv
|
||||
python scripts/minimax_tts.py "Welcome" -o out.wav -v male-qn-jingying --speed 0.8 --format wav
|
||||
```
|
||||
|
||||
**Model:** `speech-2.8-hd` (default).
|
||||
|
||||
| Flag | Default | Range / Options |
|
||||
|------|---------|-----------------|
|
||||
| `-o` | (required) | Output file path |
|
||||
| `-v` | `male-qn-qingse` | Voice ID |
|
||||
| `--model` | `speech-2.8-hd` | speech-2.8-hd / speech-2.8-turbo / speech-2.6-hd / speech-2.6-turbo |
|
||||
| `--speed` | 1.0 | 0.5–2.0 |
|
||||
| `--volume` | 1.0 | 0.1–10 |
|
||||
| `--pitch` | 0 | -12 to 12 |
|
||||
| `--emotion` | (auto) | happy / sad / angry / fearful / disgusted / surprised / calm / fluent / whisper |
|
||||
| `--format` | mp3 | mp3 / wav / flac |
|
||||
| `--lang` | auto | Language boost |
|
||||
|
||||
**Programmatic:**
|
||||
```python
|
||||
from minimax_tts import tts
|
||||
audio_bytes = tts("Hello", voice_id="female-shaonv")
|
||||
```
|
||||
|
||||
|
||||
## Video (Text-to-Video)
|
||||
|
||||
**Script:** `scripts/minimax_video.py`
|
||||
|
||||
```bash
|
||||
python scripts/minimax_video.py "A cat playing piano" -o cat.mp4
|
||||
python scripts/minimax_video.py "Ocean waves [Truck left]" -o waves.mp4 --duration 10
|
||||
python scripts/minimax_video.py "City skyline [Push in]" -o city.mp4 --resolution 1080P
|
||||
```
|
||||
|
||||
**Model:** `MiniMax-Hailuo-2.3` (default). Async: script handles create → poll → download automatically.
|
||||
|
||||
| Flag | Default | Options |
|
||||
|------|---------|---------|
|
||||
| `-o` | (required) | Output file path (.mp4) |
|
||||
| `--model` | `MiniMax-Hailuo-2.3` | MiniMax-Hailuo-2.3 / MiniMax-Hailuo-02 / T2V-01-Director / T2V-01 |
|
||||
| `--duration` | 6 | 6 / 10 (10s only at 768P with Hailuo models) |
|
||||
| `--resolution` | 768P | 720P / 768P / 1080P (1080P only 6s) |
|
||||
| `--no-optimize` | false | Disable prompt auto-optimization |
|
||||
| `--poll-interval` | 10 | Seconds between status checks |
|
||||
| `--max-wait` | 600 | Max wait time in seconds |
|
||||
|
||||
**Camera commands** — insert `[Command]` in prompt: `[Push in]`, `[Truck left]`, `[Pan right]`, `[Zoom out]`, `[Static shot]`, `[Tracking shot]`, etc.
|
||||
|
||||
**Programmatic:**
|
||||
```python
|
||||
from minimax_video import generate
|
||||
generate("A cat playing piano", "cat.mp4", model="MiniMax-Hailuo-2.3", duration=6)
|
||||
```
|
||||
|
||||
See [minimax-video-guide.md](minimax-video-guide.md) for full camera command list and model compatibility.
|
||||
|
||||
## Image (Text-to-Image)
|
||||
|
||||
**Script:** `scripts/minimax_image.py`
|
||||
|
||||
```bash
|
||||
python scripts/minimax_image.py "A cat astronaut in space" -o cat.png
|
||||
python scripts/minimax_image.py "Mountain landscape" -o hero.png --ratio 16:9
|
||||
python scripts/minimax_image.py "Product icons, flat style" -o icons.png -n 4 --seed 42
|
||||
```
|
||||
|
||||
**Model:** `image-01`. Sync: returns image URL (or base64) immediately.
|
||||
|
||||
| Flag | Default | Options |
|
||||
|------|---------|---------|
|
||||
| `-o` | (required) | Output file path (.png/.jpg) |
|
||||
| `--ratio` | 1:1 | 1:1 / 16:9 / 4:3 / 3:2 / 2:3 / 3:4 / 9:16 / 21:9 |
|
||||
| `-n` | 1 | Number of images (1–9) |
|
||||
| `--seed` | (random) | Seed for reproducibility |
|
||||
| `--optimize` | false | Enable prompt auto-optimization |
|
||||
| `--base64` | false | Return base64 instead of URL |
|
||||
|
||||
**Batch output:** with `-n > 1`, files are named `out-0.png`, `out-1.png`, etc.
|
||||
|
||||
**Programmatic:**
|
||||
```python
|
||||
from minimax_image import generate_image, download_and_save
|
||||
result = generate_image("A cat in space", aspect_ratio="16:9")
|
||||
download_and_save(result["data"]["image_urls"][0], "cat.png")
|
||||
```
|
||||
|
||||
See [minimax-image-guide.md](minimax-image-guide.md) for ratio dimensions and details.
|
||||
|
||||
## Music (Text-to-Music)
|
||||
|
||||
**Script:** `scripts/minimax_music.py`
|
||||
|
||||
```bash
|
||||
python scripts/minimax_music.py --prompt "Indie folk, melancholic" --lyrics "[verse]\nStreetlights flicker" -o song.mp3
|
||||
python scripts/minimax_music.py --prompt "Upbeat pop, energetic" --auto-lyrics -o pop.mp3
|
||||
python scripts/minimax_music.py --prompt "Jazz piano, smooth, relaxing" --instrumental -o jazz.mp3
|
||||
```
|
||||
|
||||
**Model:** `music-2.5+` (default). Sync: returns audio hex or URL.
|
||||
|
||||
| Flag | Default | Options |
|
||||
|------|---------|---------|
|
||||
| `-o` | (required) | Output file path (.mp3/.wav) |
|
||||
| `--prompt` | (empty) | Music description: style, mood, scenario (max 2000 chars) |
|
||||
| `--lyrics` | (empty) | Song lyrics with structure tags (max 3500 chars) |
|
||||
| `--lyrics-file` | (empty) | Read lyrics from file |
|
||||
| `--model` | `music-2.5+` | music-2.5+ / music-2.5 |
|
||||
| `--instrumental` | false | Generate instrumental only (no vocals, music-2.5+ only) |
|
||||
| `--auto-lyrics` | false | Auto-generate lyrics from prompt |
|
||||
| `--format` | mp3 | mp3 / wav / pcm |
|
||||
| `--sample-rate` | 44100 | 16000 / 24000 / 32000 / 44100 |
|
||||
| `--bitrate` | 256000 | 32000 / 64000 / 128000 / 256000 |
|
||||
|
||||
**Lyrics structure tags:** `[Intro]`, `[Verse]`, `[Pre Chorus]`, `[Chorus]`, `[Interlude]`, `[Bridge]`, `[Outro]`, `[Post Chorus]`, `[Transition]`, `[Break]`, `[Hook]`, `[Build Up]`, `[Inst]`, `[Solo]`
|
||||
|
||||
**Programmatic:**
|
||||
```python
|
||||
from minimax_music import generate_music
|
||||
result = generate_music(prompt="Jazz piano", is_instrumental=True)
|
||||
with open("jazz.mp3", "wb") as f:
|
||||
f.write(result["audio_bytes"])
|
||||
```
|
||||
65
skills/frontend-dev/references/minimax-image-guide.md
Normal file
65
skills/frontend-dev/references/minimax-image-guide.md
Normal file
@@ -0,0 +1,65 @@
|
||||
# Image Generation Guide
|
||||
|
||||
## CLI usage
|
||||
|
||||
```bash
|
||||
# Basic (1:1, 1024x1024)
|
||||
python scripts/minimax_image.py "A cat astronaut floating in space" -o cat.png
|
||||
|
||||
# 16:9 for hero banner
|
||||
python scripts/minimax_image.py "Mountain landscape at golden hour" -o hero.png --ratio 16:9
|
||||
|
||||
# Batch: 4 images at once
|
||||
python scripts/minimax_image.py "Minimalist product icon" -o icons.png -n 4
|
||||
|
||||
# With seed for reproducibility
|
||||
python scripts/minimax_image.py "Abstract gradient background" -o bg.png --seed 42
|
||||
|
||||
# Enable prompt optimization
|
||||
python scripts/minimax_image.py "a dog" -o dog.png --optimize
|
||||
|
||||
# Base64 mode (no URL download, save directly)
|
||||
python scripts/minimax_image.py "Logo concept" -o logo.png --base64
|
||||
```
|
||||
|
||||
## Programmatic usage
|
||||
|
||||
```python
|
||||
from minimax_image import generate_image, download_and_save
|
||||
|
||||
# Generate and get URL
|
||||
result = generate_image("A cat in space", aspect_ratio="16:9")
|
||||
url = result["data"]["image_urls"][0]
|
||||
download_and_save(url, "cat.png")
|
||||
|
||||
# Generate multiple
|
||||
result = generate_image("Icon design", n=4, aspect_ratio="1:1")
|
||||
for i, url in enumerate(result["data"]["image_urls"]):
|
||||
download_and_save(url, f"icon-{i}.png")
|
||||
```
|
||||
|
||||
## Model
|
||||
|
||||
Currently only `image-01`.
|
||||
|
||||
## Aspect ratios & dimensions
|
||||
|
||||
| Ratio | Pixels | Use case |
|
||||
|-------|--------|----------|
|
||||
| `1:1` | 1024x1024 | Avatar, icon, square thumbnail |
|
||||
| `16:9` | 1280x720 | Hero banner, video thumbnail |
|
||||
| `4:3` | 1152x864 | Standard landscape |
|
||||
| `3:2` | 1248x832 | Photo-style |
|
||||
| `2:3` | 832x1248 | Portrait, mobile |
|
||||
| `3:4` | 864x1152 | Portrait card |
|
||||
| `9:16` | 720x1280 | Mobile fullscreen, story |
|
||||
| `21:9` | 1344x576 | Ultra-wide banner |
|
||||
|
||||
Custom dimensions also supported: width/height in [512, 2048], must be divisible by 8.
|
||||
|
||||
## Limits
|
||||
|
||||
- Prompt: max 1,500 characters
|
||||
- Batch: 1–9 images per request
|
||||
- URL expires after 24 hours (use `--base64` to avoid expiry)
|
||||
- Seed: set for reproducible results across identical prompts
|
||||
216
skills/frontend-dev/references/minimax-music-guide.md
Normal file
216
skills/frontend-dev/references/minimax-music-guide.md
Normal file
@@ -0,0 +1,216 @@
|
||||
# Music Generation Guide
|
||||
|
||||
## CLI Usage
|
||||
|
||||
```bash
|
||||
# Instrumental (no vocals)
|
||||
python scripts/minimax_music.py --prompt "Jazz piano, smooth, relaxing" --instrumental -o jazz.mp3
|
||||
|
||||
# With custom lyrics
|
||||
python scripts/minimax_music.py --prompt "Indie folk, melancholic" --lyrics "[verse]\nStreetlights flicker\nOn empty roads" -o song.mp3
|
||||
|
||||
# Auto-generate lyrics from prompt
|
||||
python scripts/minimax_music.py --prompt "Upbeat pop, energetic, summer vibes" --auto-lyrics -o pop.mp3
|
||||
|
||||
# From lyrics file
|
||||
python scripts/minimax_music.py --prompt "Soulful blues, rainy night" --lyrics-file lyrics.txt -o blues.mp3
|
||||
|
||||
# Custom audio settings
|
||||
python scripts/minimax_music.py --prompt "Lo-fi beats" --instrumental -o lofi.wav --format wav --sample-rate 44100 --bitrate 256000
|
||||
```
|
||||
|
||||
## Programmatic Usage
|
||||
|
||||
```python
|
||||
from minimax_music import generate_music
|
||||
|
||||
# Instrumental
|
||||
result = generate_music(prompt="Jazz piano, smooth", is_instrumental=True)
|
||||
with open("jazz.mp3", "wb") as f:
|
||||
f.write(result["audio_bytes"])
|
||||
|
||||
# With lyrics
|
||||
result = generate_music(
|
||||
prompt="Indie folk, acoustic guitar",
|
||||
lyrics="[verse]\nWalking through the rain\n[chorus]\nI'll find my way home",
|
||||
)
|
||||
|
||||
# Auto-generate lyrics
|
||||
result = generate_music(
|
||||
prompt="Upbeat pop, summer anthem",
|
||||
lyrics_optimizer=True,
|
||||
)
|
||||
|
||||
# Access metadata
|
||||
print(f"Duration: {result['duration']}ms")
|
||||
print(f"Sample rate: {result['sample_rate']}")
|
||||
print(f"Size: {result['size']} bytes")
|
||||
```
|
||||
|
||||
## Models
|
||||
|
||||
| Model | Features |
|
||||
|-------|----------|
|
||||
| `music-2.5+` | Recommended. Supports instrumental mode, complete song structures, hi-fi audio |
|
||||
| `music-2.5` | Standard model. No instrumental mode |
|
||||
|
||||
## Prompt Writing
|
||||
|
||||
The `prompt` parameter describes music style using comma-separated descriptors:
|
||||
|
||||
| Category | Examples |
|
||||
|----------|----------|
|
||||
| Genre | Blues, Pop, Rock, Jazz, Electronic, Hip-hop, Folk, Classical |
|
||||
| Mood | Soulful, Melancholy, Upbeat, Energetic, Peaceful, Dark, Nostalgic |
|
||||
| Scenario | Rainy night, Summer day, Road trip, Late night, Sunrise |
|
||||
| Instrumentation | Electric guitar, Piano, Acoustic, Synthesizer, Strings |
|
||||
| Vocal type | Male vocals, Female vocals, Soft vocals, Powerful vocals |
|
||||
| Tempo | Slow tempo, Fast tempo, Mid-tempo, Relaxed |
|
||||
|
||||
**Example prompts:**
|
||||
```
|
||||
"Soulful Blues, Rainy Night, Melancholy, Male Vocals, Slow Tempo"
|
||||
"Upbeat Pop, Summer Vibes, Female Vocals, Energetic, Synth-heavy"
|
||||
"Lo-fi Hip-hop, Chill, Relaxed, Instrumental, Piano samples"
|
||||
"Cinematic Orchestral, Epic, Building tension, Strings and Brass"
|
||||
```
|
||||
|
||||
## Lyrics Format
|
||||
|
||||
Use structure tags in brackets to organize song sections:
|
||||
|
||||
### Structure Tags
|
||||
|
||||
| Tag | Purpose |
|
||||
|-----|---------|
|
||||
| `[Intro]` | Opening section (can be instrumental) |
|
||||
| `[Verse]` / `[Verse 1]` | Story/narrative sections |
|
||||
| `[Pre-Chorus]` | Build-up before chorus |
|
||||
| `[Chorus]` | Main hook, typically repeated |
|
||||
| `[Post Chorus]` | Extension after chorus |
|
||||
| `[Bridge]` | Contrasting section near end |
|
||||
| `[Interlude]` | Instrumental break |
|
||||
| `[Solo]` | Instrumental solo (add direction: "slow, bluesy") |
|
||||
| `[Outro]` | Closing section |
|
||||
| `[Break]` | Short pause or transition |
|
||||
| `[Hook]` | Catchy repeated phrase |
|
||||
| `[Build Up]` | Tension building section |
|
||||
| `[Inst]` | Instrumental section |
|
||||
| `[Transition]` | Section change |
|
||||
|
||||
### Backing Vocals & Directions
|
||||
|
||||
Use parentheses for backing vocals or performance notes:
|
||||
```
|
||||
(Ooh, yeah)
|
||||
(Harmonize)
|
||||
(Whispered)
|
||||
(Fade out...)
|
||||
```
|
||||
|
||||
### Example Lyrics
|
||||
|
||||
```
|
||||
[Intro]
|
||||
(Soft piano)
|
||||
|
||||
[Verse 1]
|
||||
Streetlights flicker on empty roads
|
||||
The rain keeps falling, the wind still blows
|
||||
I'm walking home with nowhere to go
|
||||
Just memories of what I used to know
|
||||
|
||||
[Pre-Chorus]
|
||||
And I can feel it coming back to me
|
||||
(Coming back to me)
|
||||
|
||||
[Chorus]
|
||||
Under the neon lights tonight
|
||||
I'm searching for what feels right
|
||||
(Oh, feels right)
|
||||
These city streets will guide me home
|
||||
I'm tired of feeling so alone
|
||||
|
||||
[Verse 2]
|
||||
Coffee shops and midnight trains
|
||||
The faces change but the feeling remains
|
||||
...
|
||||
|
||||
[Bridge]
|
||||
Maybe tomorrow will be different
|
||||
Maybe I'll finally understand
|
||||
(Understand...)
|
||||
|
||||
[Solo]
|
||||
(Slow, mournful, bluesy guitar)
|
||||
|
||||
[Outro]
|
||||
(Fade out...)
|
||||
Under the neon lights...
|
||||
```
|
||||
|
||||
## Audio Settings
|
||||
|
||||
| Parameter | Options | Default | Notes |
|
||||
|-----------|---------|---------|-------|
|
||||
| `format` | mp3, wav, pcm | mp3 | WAV for highest quality |
|
||||
| `sample_rate` | 16000, 24000, 32000, 44100 | 44100 | 44100 recommended |
|
||||
| `bitrate` | 32000, 64000, 128000, 256000 | 256000 | Higher = better quality |
|
||||
|
||||
## Generation Modes
|
||||
|
||||
### 1. Instrumental Only
|
||||
```bash
|
||||
python scripts/minimax_music.py --prompt "Ambient electronic, space theme" --instrumental -o ambient.mp3
|
||||
```
|
||||
- Requires `music-2.5+` model
|
||||
- Only `prompt` needed, no lyrics
|
||||
|
||||
### 2. With Custom Lyrics
|
||||
```bash
|
||||
python scripts/minimax_music.py --prompt "Pop ballad, emotional" --lyrics "[verse]\nYour lyrics here" -o ballad.mp3
|
||||
```
|
||||
- Provide both `prompt` (style) and `lyrics` (words + structure)
|
||||
|
||||
### 3. Auto-Generated Lyrics
|
||||
```bash
|
||||
python scripts/minimax_music.py --prompt "Rock anthem about freedom" --auto-lyrics -o rock.mp3
|
||||
```
|
||||
- System generates lyrics from prompt
|
||||
- Good for quick generation when lyrics aren't critical
|
||||
|
||||
## Limits
|
||||
|
||||
- **Prompt:** max 2,000 characters
|
||||
- **Lyrics:** 1–3,500 characters
|
||||
- **Duration:** ~25-30 seconds per generation (varies)
|
||||
- **URL expiration:** 24 hours (when using URL output mode)
|
||||
|
||||
## Best Practices
|
||||
|
||||
1. **Layer style descriptors** — Combine genre + mood + instrumentation for precise results
|
||||
2. **Use structure tags** — Even simple `[verse]` `[chorus]` improves arrangement
|
||||
3. **Include backing vocal cues** — `(Ooh)`, `(Yeah)` add production polish
|
||||
4. **Match prompt to lyrics mood** — Conflicting prompt/lyrics produce inconsistent results
|
||||
5. **Instrumental for backgrounds** — Use `--instrumental` for BGM, avoiding vocal distractions
|
||||
6. **High bitrate for production** — Use 256000 for final assets, lower for drafts
|
||||
|
||||
## Common Use Cases
|
||||
|
||||
| Use Case | Command |
|
||||
|----------|---------|
|
||||
| Background music | `--prompt "Lo-fi, calm, ambient" --instrumental` |
|
||||
| Landing page hero | `--prompt "Cinematic, inspiring, building" --instrumental` |
|
||||
| Podcast intro | `--prompt "Upbeat, energetic, short" --instrumental` |
|
||||
| Demo song | `--prompt "Pop, catchy" --auto-lyrics` |
|
||||
| Custom jingle | `--prompt "Happy, bright, corporate" --lyrics "[hook]\nYour brand name"` |
|
||||
|
||||
## Error Handling
|
||||
|
||||
| Error Code | Meaning | Solution |
|
||||
|------------|---------|----------|
|
||||
| 1002 | Rate limit | Wait and retry |
|
||||
| 1004 | Auth failed | Check API key |
|
||||
| 1008 | Insufficient balance | Top up account |
|
||||
| 1026 | Content flagged | Rephrase prompt/lyrics |
|
||||
| 2013 | Invalid parameters | Check prompt/lyrics length |
|
||||
78
skills/frontend-dev/references/minimax-tts-guide.md
Normal file
78
skills/frontend-dev/references/minimax-tts-guide.md
Normal file
@@ -0,0 +1,78 @@
|
||||
# TTS Guide
|
||||
|
||||
## CLI usage (recommended)
|
||||
|
||||
```bash
|
||||
# Basic
|
||||
python scripts/minimax_tts.py "Hello world" -o output.mp3
|
||||
|
||||
# Custom voice and speed
|
||||
python scripts/minimax_tts.py "你好世界" -o hi.mp3 -v female-shaonv --speed 0.9
|
||||
|
||||
# WAV format, high quality
|
||||
python scripts/minimax_tts.py "Welcome" -o out.wav -v male-qn-jingying --format wav --sample-rate 32000
|
||||
|
||||
# With emotion (for speech-2.6 models)
|
||||
python scripts/minimax_tts.py "Great news!" -o happy.mp3 -v female-shaonv --emotion happy --model speech-2.6-hd
|
||||
```
|
||||
|
||||
## Programmatic usage
|
||||
|
||||
```python
|
||||
from minimax_tts import tts
|
||||
|
||||
# Basic
|
||||
audio_bytes = tts("Hello world")
|
||||
|
||||
# With options
|
||||
audio_bytes = tts(
|
||||
text="Welcome to our product.",
|
||||
voice_id="female-shaonv",
|
||||
model="speech-2.8-hd",
|
||||
speed=0.9,
|
||||
fmt="mp3",
|
||||
)
|
||||
|
||||
# Save to file
|
||||
with open("output.mp3", "wb") as f:
|
||||
f.write(audio_bytes)
|
||||
```
|
||||
|
||||
## Limits
|
||||
|
||||
- **Sync TTS:** max 10,000 characters per request
|
||||
- **Pause markers:** insert `<#1.5#>` for a 1.5s pause (range: 0.01–99.99s)
|
||||
|
||||
## Model selection
|
||||
|
||||
| Model | Best for |
|
||||
|-------|----------|
|
||||
| `speech-2.8-hd` | Highest quality, auto emotion (recommended) |
|
||||
| `speech-2.8-turbo` | Fast, good quality |
|
||||
| `speech-2.6-hd` | Manual emotion control needed |
|
||||
| `speech-2.6-turbo` | Fast + manual emotion |
|
||||
|
||||
## Voice selection
|
||||
|
||||
See [minimax-voice-catalog.md](minimax-voice-catalog.md) for the full list.
|
||||
|
||||
Common voices:
|
||||
|
||||
| Voice ID | Gender | Style |
|
||||
|----------|--------|-------|
|
||||
| `male-qn-qingse` | Male | Young, gentle |
|
||||
| `male-qn-jingying` | Male | Elite, authoritative |
|
||||
| `male-qn-badao` | Male | Dominant, powerful |
|
||||
| `female-shaonv` | Female | Young, bright |
|
||||
| `female-yujie` | Female | Mature, elegant |
|
||||
| `female-chengshu` | Female | Sophisticated |
|
||||
| `presenter_male` | Male | News presenter |
|
||||
| `presenter_female` | Female | News presenter |
|
||||
| `audiobook_male_1` | Male | Audiobook narrator |
|
||||
| `audiobook_female_1` | Female | Audiobook narrator |
|
||||
|
||||
## Best practices
|
||||
|
||||
- Use `speech-2.8-hd` and let emotion auto-match — don't manually set emotion unless needed
|
||||
- Use 32000 sample rate for web audio (good balance of quality and file size)
|
||||
- For long text (>10,000 chars), split into chunks and merge with FFmpeg
|
||||
82
skills/frontend-dev/references/minimax-video-guide.md
Normal file
82
skills/frontend-dev/references/minimax-video-guide.md
Normal file
@@ -0,0 +1,82 @@
|
||||
# Video Generation Guide
|
||||
|
||||
## CLI usage
|
||||
|
||||
```bash
|
||||
# Basic
|
||||
python scripts/minimax_video.py "A cat playing piano in a cozy room" -o cat.mp4
|
||||
|
||||
# With camera control
|
||||
python scripts/minimax_video.py "Ocean waves crashing on rocks [Truck left]" -o waves.mp4
|
||||
|
||||
# 10 seconds, 1080P
|
||||
python scripts/minimax_video.py "City skyline at sunset [Push in]" -o city.mp4 --duration 10 --resolution 1080P
|
||||
|
||||
# Disable prompt auto-optimization
|
||||
python scripts/minimax_video.py "Exact prompt I want used" -o out.mp4 --no-optimize
|
||||
```
|
||||
|
||||
## Programmatic usage
|
||||
|
||||
```python
|
||||
from minimax_video import generate, create_task, poll_task, download_video
|
||||
|
||||
# Full pipeline (blocking)
|
||||
generate("A cat playing piano", "cat.mp4", model="MiniMax-Hailuo-2.3", duration=6)
|
||||
|
||||
# Step by step
|
||||
task_id = create_task("A cat playing piano")
|
||||
file_id = poll_task(task_id, interval=10, max_wait=600)
|
||||
download_video(file_id, "cat.mp4")
|
||||
```
|
||||
|
||||
## Models
|
||||
|
||||
| Model | Resolution | Duration | Notes |
|
||||
|-------|-----------|----------|-------|
|
||||
| `MiniMax-Hailuo-2.3` | 768P, 1080P | 6s, 10s (768P only) | Latest, recommended |
|
||||
| `MiniMax-Hailuo-02` | 768P, 1080P | 6s, 10s (768P only) | Previous gen |
|
||||
| `T2V-01-Director` | 720P | 6s | Camera control optimized |
|
||||
| `T2V-01` | 720P | 6s | Base model |
|
||||
|
||||
## Camera commands
|
||||
|
||||
Insert `[Command]` in prompt text to control camera movement:
|
||||
|
||||
| Command | Effect |
|
||||
|---------|--------|
|
||||
| `[Truck left]` | Camera moves left |
|
||||
| `[Truck right]` | Camera moves right |
|
||||
| `[Push in]` | Camera moves toward subject |
|
||||
| `[Pull out]` | Camera moves away from subject |
|
||||
| `[Pan left]` | Camera rotates left (fixed position) |
|
||||
| `[Pan right]` | Camera rotates right (fixed position) |
|
||||
| `[Tilt up]` | Camera tilts upward |
|
||||
| `[Tilt down]` | Camera tilts downward |
|
||||
| `[Pedestal up]` | Camera rises vertically |
|
||||
| `[Pedestal down]` | Camera lowers vertically |
|
||||
| `[Zoom in]` | Lens zooms in |
|
||||
| `[Zoom out]` | Lens zooms out |
|
||||
| `[Static shot]` | No camera movement |
|
||||
| `[Tracking shot]` | Camera follows subject |
|
||||
| `[Shake]` | Handheld shake effect |
|
||||
|
||||
Example: `"A runner sprints through a forest trail [Tracking shot]"`
|
||||
|
||||
## Pipeline
|
||||
|
||||
The script handles the full async flow:
|
||||
|
||||
1. **Create task** — `POST /v1/video_generation` → returns `task_id`
|
||||
2. **Poll status** — `GET /v1/query/video_generation?task_id=xxx` → poll until `Success`
|
||||
- Status values: `Preparing` → `Queueing` → `Processing` → `Success` / `Fail`
|
||||
3. **Download** — `GET /v1/files/retrieve?file_id=xxx` → get `download_url` (valid 1 hour) → save file
|
||||
|
||||
Typical generation time: 1–5 minutes depending on duration and resolution.
|
||||
|
||||
## Limits
|
||||
|
||||
- Prompt: max 2,000 characters
|
||||
- 1080P: only supports 6s duration
|
||||
- 10s duration: only available at 768P with Hailuo-2.3/02
|
||||
- Download URL expires after 1 hour
|
||||
686
skills/frontend-dev/references/minimax-voice-catalog.md
Normal file
686
skills/frontend-dev/references/minimax-voice-catalog.md
Normal file
@@ -0,0 +1,686 @@
|
||||
# MiniMax Voice Catalog
|
||||
|
||||
Complete reference for all available voices in the MiniMax Voice API.
|
||||
|
||||
## Contents
|
||||
|
||||
- [Voice Recommendation](#voice-recommendation) - Find voices by content type and characteristics
|
||||
- [System Voices List (categorized by language)](#system-voices-list-categorized-by-language) - Complete voice database by language
|
||||
- [Voice Parameters](#voice-parameters) - Configure voice settings (speed, volume, pitch, emotion)
|
||||
- [Custom Voices](#custom-voices) - Voice cloning and voice design options
|
||||
- [Voice Comparison Table](#voice-comparison-table) - Quick reference comparison
|
||||
- [Voice IDs for Quick Reference](#voice-ids-for-quick-reference) - Most popular voices at a glance
|
||||
|
||||
---
|
||||
|
||||
## 1. How to Choose a Voice
|
||||
|
||||
When selecting a voice, follow this two-step decision process to ensure the voice matches the scenario, gender, age, and language of the character.
|
||||
|
||||
### Step 1: Identify the Usage Scenario
|
||||
|
||||
First, determine whether your content falls into one of the **three professional domains** listed in **Section 2.1**:
|
||||
|
||||
| Professional Domain | Examples |
|
||||
|---|---|
|
||||
| **Narration & Narrator in Storytelling** | suitable for the narrator in Audiobooks, fiction narration, storytelling |
|
||||
| **News & Announcements** | suitable for news broadcasts, formal announcements, press releases |
|
||||
| **Documentary** | suitable for documentary narration, commentary, educational films |
|
||||
|
||||
**If your content matches one of these professional domains:**
|
||||
→ Prioritize selecting from the recommended voices in **Section 2.1**, filtering by scenario and the speaker's **gender**.
|
||||
These voices are specifically optimized for their respective professional use cases (pacing, clarity, tone).
|
||||
|
||||
**If your content does NOT fall into these three professional domains:**
|
||||
→ Proceed to Step 2 below.
|
||||
|
||||
### Step 2: Select by Character Traits (Gender + Age + Language)
|
||||
|
||||
For non-professional scenarios, select a voice from **Section 2.2** based on the following three character traits, in strict priority order:
|
||||
|
||||
1. **Gender** (highest priority, non-negotiable)
|
||||
- Male characters → **must** use male voices
|
||||
- Female characters → **must** use female voices
|
||||
- Never mismatch gender, even if other traits seem to fit
|
||||
|
||||
2. **Age** (determines which subsection to look in)
|
||||
- **Children** → Section 2.2 "Children's Voices"
|
||||
- **Youth** (teens, young adults) → Section 2.2 "Youthful Voices"
|
||||
- **Adult** → Section 2.2 "Adult Voices"
|
||||
- **Elderly** → Section 2.2 "Elderly Voices"
|
||||
|
||||
3. **Language** (must match the content language)
|
||||
- The voice **must** match the language of the content being generated
|
||||
- Chinese content → select Chinese voices; Korean content → select Korean voices; English content → select English voices, etc.
|
||||
- If no exact language match exists in Section 2.2, fall back to the full **System Voices List** (Section 3) for the target language
|
||||
|
||||
After narrowing down candidates by these three traits, choose the best match based on the voice's **personality**, **tone**, and **use case** as described in each voice entry.
|
||||
|
||||
### Quick Reference Decision Flow
|
||||
|
||||
```
|
||||
Content Type?
|
||||
├── Story/Narration/News/Documentary → Section 2.1 (filter by scenario + gender)
|
||||
└── Other scenarios → Section 2.2:
|
||||
├── 1. Match Gender (mandatory)
|
||||
├── 2. Match Age Group (Children/Youth/Adult/Elderly/Professional)
|
||||
├── 3. Match Language (must match content language)
|
||||
└── 4. Choose best fit by personality/tone
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
|
||||
## 2. Voice Recommendation
|
||||
|
||||
### 2.1 By Content Type
|
||||
|
||||
**Narration & Narrator in Storytelling**
|
||||
- Recommended: `audiobook_female_1`, `audiobook_male_1`
|
||||
- Characteristics: suitable for narrating stories, sustained performance, clear articulation, good pacing
|
||||
|
||||
**News & Announcements**
|
||||
- Recommended: `Chinese (Mandarin)_News_Anchor`, `Chinese (Mandarin)_Male_Announcer`
|
||||
- Characteristics: Authoritative, clear, professional pacing
|
||||
|
||||
**Documentary**
|
||||
- Recommended: `doc_commentary`
|
||||
- Characteristics: Professional, clear, consistent pacing
|
||||
|
||||
|
||||
### 2.2 By Characteristics
|
||||
|
||||
#### Children's Voices
|
||||
|
||||
| voice_id | Name | Description | Best For | Language |
|
||||
|----------|------|-------------|----------|----------|
|
||||
| `clever_boy` | 聪明男童 | Smart, witty boy voice | Children's content, educational | Chinese (Mandarin) |
|
||||
| `cute_boy` | 可爱男童 | Adorable young boy voice | Kids' content, animations | Chinese (Mandarin) |
|
||||
| `lovely_girl` | 萌萌女童 | Cute, sweet girl voice | Children's stories, games | Chinese (Mandarin) |
|
||||
| `cartoon_pig` | 卡通猪小琪 | Cartoon character voice | Animations, comedy, entertainment | Chinese (Mandarin) |
|
||||
| `Korean_SweetGirl` | Sweet Girl | Sweet, adorable young girl voice | Children's content, romance | Korean |
|
||||
| `Indonesian_SweetGirl` | Sweet Girl | Sweet, adorable girl voice | Children's content, friendly | Indonesian |
|
||||
| `English_Sweet_Girl` | Sweet Girl | Sweet, innocent young girl voice | Children's content, friendly | English |
|
||||
| `Spanish_Kind-heartedGirl` | Kind-hearted Girl | Warm, compassionate girl voice | Children's content, warm | Spanish |
|
||||
| `Portuguese_Kind-heartedGirl` | Kind-hearted Girl | Warm, compassionate girl voice | Children's content, warm | Portuguese |
|
||||
|
||||
#### Youthful Voices
|
||||
|
||||
| voice_id | Name | Description | Best For | Language |
|
||||
|----------|------|-------------|----------|----------|
|
||||
| `male-qn-qingse` | 青涩青年 | Youthful, inexperienced young man voice | Campus stories, coming-of-age content | Chinese (Mandarin) |
|
||||
| `male-qn-daxuesheng` | 青年大学生 | Young university student voice | Campus content, educational | Chinese (Mandarin) |
|
||||
| `female-shaonv` | 少女 | Young maiden voice | Romance, youth content | Chinese (Mandarin) |
|
||||
| `bingjiao_didi` | 病娇弟弟 | Tsundere young brother voice | Romance, character-driven content | Chinese (Mandarin) |
|
||||
| `junlang_nanyou` | 俊朗男友 | Handsome boyfriend voice | Romance, dating content | Chinese (Mandarin) |
|
||||
| `chunzhen_xuedi` | 纯真学弟 | Innocent junior student voice | Campus stories, youth content | Chinese (Mandarin) |
|
||||
| `lengdan_xiongzhang` | 冷淡学长 | Cool senior student voice | Campus stories, romance | Chinese (Mandarin) |
|
||||
| `diadia_xuemei` | 嗲嗲学妹 | Flirty junior girl voice | Romance, dating content | Chinese (Mandarin) |
|
||||
| `danya_xuejie` | 淡雅学姐 | Elegant senior girl voice | Campus stories, romance | Chinese (Mandarin) |
|
||||
| `Chinese (Mandarin)_Straightforward_Boy` | 率真弟弟 | Frank, straightforward boy voice | Casual, direct content | Chinese (Mandarin) |
|
||||
| `Chinese (Mandarin)_Sincere_Adult` | 真诚青年 | Sincere young adult voice | Honest, genuine content | Chinese (Mandarin) |
|
||||
| `Chinese (Mandarin)_Pure-hearted_Boy` | 清澈邻家弟弟 | Pure-hearted neighbor boy voice | Innocent, wholesome content | Chinese (Mandarin) |
|
||||
| `Korean_CheerfulBoyfriend` | Cheerful Boyfriend | Energetic, loving boyfriend voice | Romance, dating content | Korean |
|
||||
| `Korean_ShyGirl` | Shy Girl | Timid, reserved girl voice | Comedy, romance | Korean |
|
||||
| `Japanese_SportyStudent` | Sporty Student | Energetic athletic student voice | Sports, youth content | Japanese |
|
||||
| `Japanese_InnocentBoy` | Innocent Boy | Pure, naive young boy voice | Children's content | Japanese |
|
||||
| `Spanish_SincereTeen` | SincereTeen | Honest, genuine teenager voice | Youth, authentic | Spanish |
|
||||
| `Spanish_Strong-WilledBoy` | Strong-willed Boy | Determined, persistent boy voice | Youth, motivation | Spanish |
|
||||
|
||||
#### Adult Voices
|
||||
|
||||
| voice_id | Name | Description | Best For | Language |
|
||||
|----------|------|-------------|----------|----------|
|
||||
| `female-chengshu` | 成熟女性 | Mature woman voice | Sophisticated, adult content | Chinese (Mandarin) |
|
||||
| `female-yujie` | 御姐 | Mature, elegant woman voice | Romance, professional content | Chinese (Mandarin) |
|
||||
| `female-tianmei` | 甜美女性 | Sweet, pleasant woman voice | Soft, gentle content | Chinese (Mandarin) |
|
||||
| `badao_shaoye` | 霸道少爷 | Arrogant young master voice | Drama, character roles | Chinese (Mandarin) |
|
||||
| `wumei_yujie` | 妩媚御姐 | Charming mature woman voice | Romance, mature content | Chinese (Mandarin) |
|
||||
| `Chinese (Mandarin)_Gentleman` | 温润男声 | Gentle, refined male voice | Narration, storytelling | Chinese (Mandarin) |
|
||||
| `Chinese (Mandarin)_Unrestrained_Young_Man` | 不羁青年 | Unrestrained young man voice | Casual, entertainment content | Chinese (Mandarin) |
|
||||
| `Chinese (Mandarin)_Southern_Young_Man` | 南方小哥 | Southern young man voice | Regional character, casual content | Chinese (Mandarin) |
|
||||
| `Chinese (Mandarin)_Gentle_Youth` | 温润青年 | Gentle young man voice | Narration, calm content | Chinese (Mandarin) |
|
||||
| `Chinese (Mandarin)_Warm_Girl` | 温暖少女 | Warm young girl voice | Friendly, supportive content | Chinese (Mandarin) |
|
||||
| `Chinese (Mandarin)_Soft_Girl` | 柔和少女 | Soft, gentle girl voice | Calm, soothing content | Chinese (Mandarin) |
|
||||
| `Korean_PlayboyCharmer` | Playboy Charmer | Smooth, flirtatious male voice | Romance, entertainment | Korean |
|
||||
| `Korean_CalmLady` | Calm Lady | Composed, serene female voice | Meditation, relaxation | Korean |
|
||||
| `Spanish_ConfidentWoman` | Confident Woman | Self-assured, capable woman voice | Professional, empowerment | Spanish |
|
||||
| `Portuguese_ConfidentWoman` | Confident Woman | Self-assured, capable woman voice | Professional, empowerment | Portuguese |
|
||||
|
||||
#### Elderly Voices
|
||||
|
||||
| voice_id | Name | Description | Best For | Language |
|
||||
|----------|------|-------------|----------|----------|
|
||||
| `Chinese (Mandarin)_Humorous_Elder` | 搞笑大爷 | Humorous old man voice | Comedy, entertainment | Chinese (Mandarin) |
|
||||
| `Chinese (Mandarin)_Kind-hearted_Elder` | 花甲奶奶 | Kind elderly lady voice | Stories, warm content | Chinese (Mandarin) |
|
||||
| `Chinese (Mandarin)_Kind-hearted_Antie` | 热心大婶 | Kind-hearted auntie voice | Warm, friendly content | Chinese (Mandarin) |
|
||||
| `Japanese_IntellectualSenior` | Intellectual Senior | Wise, knowledgeable elder voice | Narration, educational | Japanese |
|
||||
| `Korean_IntellectualSenior` | Intellectual Senior | Wise, knowledgeable elder voice | Educational, narration | Korean |
|
||||
| `Spanish_Wiselady` | Wise Lady | Experienced, wise woman voice | Guidance, advice | Spanish |
|
||||
| `Portuguese_Wiselady` | Wise Lady | Experienced, wise woman voice | Guidance, advice | Portuguese |
|
||||
| `Spanish_SereneElder` | Serene Elder | Calm, peaceful elderly voice | Meditation, wisdom | Spanish |
|
||||
| `Portuguese_SereneElder` | Serene Elder | Calm, peaceful elderly voice | Meditation, wisdom | Portuguese |
|
||||
| `English_Gentle-voiced_man` | Gentle-voiced Man | Soft-spoken, kind male voice | Calm, supportive content | English |
|
||||
|
||||
---
|
||||
|
||||
## System Voices List (categorized by language)
|
||||
|
||||
### Chinese Mandarin Voices
|
||||
|
||||
| voice_id | Name | Description | Best For |
|
||||
|----------|------|-------------|----------|
|
||||
| `male-qn-qingse` | 青涩青年 | Youthful, inexperienced young man voice | Campus stories, coming-of-age content |
|
||||
| `male-qn-badao` | 霸道青年 | Arrogant, dominant young man voice | Drama, romance, character roles |
|
||||
| `male-qn-daxuesheng` | 青年大学生 | Young university student voice | Campus content, educational |
|
||||
| `female-shaonv` | 少女 | Young maiden voice | Romance, youth content |
|
||||
| `female-yujie` | 御姐 | Mature, elegant woman voice | Romance, professional content |
|
||||
| `female-chengshu` | 成熟女性 | Mature woman voice | Sophisticated, adult content |
|
||||
| `female-tianmei` | 甜美女性 | Sweet, pleasant woman voice | Soft, gentle content |
|
||||
| `clever_boy` | 聪明男童 | Smart, witty boy voice | Children's content, educational |
|
||||
| `cute_boy` | 可爱男童 | Adorable young boy voice | Kids' content, animations |
|
||||
| `lovely_girl` | 萌萌女童 | Cute, sweet girl voice | Children's stories, games |
|
||||
| `cartoon_pig` | 卡通猪小琪 | Cartoon character voice | Animations, comedy, entertainment |
|
||||
| `bingjiao_didi` | 病娇弟弟 | Tsundere young brother voice | Romance, character-driven content |
|
||||
| `junlang_nanyou` | 俊朗男友 | Handsome boyfriend voice | Romance, dating content |
|
||||
| `chunzhen_xuedi` | 纯真学弟 | Innocent junior student voice | Campus stories, youth content |
|
||||
| `lengdan_xiongzhang` | 冷淡学长 | Cool senior student voice | Campus stories, romance |
|
||||
| `badao_shaoye` | 霸道少爷 | Arrogant young master voice | Drama, character roles |
|
||||
| `tianxin_xiaoling` | 甜心小玲 | Sweet Xiao Ling voice | Character roles, animations |
|
||||
| `qiaopi_mengmei` | 俏皮萌妹 | Playful cute girl voice | Comedy, light-hearted content |
|
||||
| `wumei_yujie` | 妩媚御姐 | Charming mature woman voice | Romance, mature content |
|
||||
| `diadia_xuemei` | 嗲嗲学妹 | Flirty junior girl voice | Romance, dating content |
|
||||
| `danya_xuejie` | 淡雅学姐 | Elegant senior girl voice | Campus stories, romance |
|
||||
| `Arrogant_Miss` | 嚣张小姐 | Arrogant young lady voice | Drama, character roles |
|
||||
| `Robot_Armor` | 机械战甲 | Robotic armor voice | Sci-fi, game characters |
|
||||
| `Chinese (Mandarin)_Reliable_Executive` | 沉稳高管 | Reliable executive voice | Corporate, business content |
|
||||
| `Chinese (Mandarin)_News_Anchor` | 新闻女声 | News anchor female voice | News broadcasts, current affairs |
|
||||
| `Chinese (Mandarin)_Mature_Woman` | 傲娇御姐 | Tsundere mature woman voice | Romance, character-driven content |
|
||||
| `Chinese (Mandarin)_Unrestrained_Young_Man` | 不羁青年 | Unrestrained young man voice | Casual, entertainment content |
|
||||
| `male-qn-jingying` | 精英青年 | Elite, ambitious young man voice | Business, professional content |
|
||||
| `Chinese (Mandarin)_Kind-hearted_Antie` | 热心大婶 | Kind-hearted auntie voice | Warm, friendly content |
|
||||
| `Chinese (Mandarin)_HK_Flight_Attendant` | 港普空姐 | HK accent flight attendant voice | Regional character, entertainment |
|
||||
| `Chinese (Mandarin)_Humorous_Elder` | 搞笑大爷 | Humorous old man voice | Comedy, entertainment |
|
||||
| `Chinese (Mandarin)_Gentleman` | 温润男声 | Gentle, refined male voice | Narration, storytelling |
|
||||
| `Chinese (Mandarin)_Warm_Bestie` | 温暖闺蜜 | Warm bestie female voice | Friendly, supportive content |
|
||||
| `Chinese (Mandarin)_Male_Announcer` | 播报男声 | Male announcer voice | Announcements, broadcasts |
|
||||
| `Chinese (Mandarin)_Sweet_Lady` | 甜美女声 | Sweet lady voice | Soft, gentle content |
|
||||
| `Chinese (Mandarin)_Southern_Young_Man` | 南方小哥 | Southern young man voice | Regional character, casual content |
|
||||
| `Chinese (Mandarin)_Wise_Women` | 阅历姐姐 | Experienced wise woman voice | Advice, guidance content |
|
||||
| `Chinese (Mandarin)_Gentle_Youth` | 温润青年 | Gentle young man voice | Narration, calm content |
|
||||
| `Chinese (Mandarin)_Warm_Girl` | 温暖少女 | Warm young girl voice | Friendly, supportive content |
|
||||
| `Chinese (Mandarin)_Kind-hearted_Elder` | 花甲奶奶 | Kind elderly lady voice | Stories, warm content |
|
||||
| `Chinese (Mandarin)_Cute_Spirit` | 憨憨萌兽 | Cute cartoon spirit voice | Animations, children's content |
|
||||
| `Chinese (Mandarin)_Radio_Host` | 电台男主播 | Radio host male voice | Podcasts, radio shows |
|
||||
| `Chinese (Mandarin)_Lyrical_Voice` | 抒情男声 | Lyrical male singing voice | Music, singing content |
|
||||
| `Chinese (Mandarin)_Straightforward_Boy` | 率真弟弟 | Frank, straightforward boy voice | Casual, direct content |
|
||||
| `Chinese (Mandarin)_Sincere_Adult` | 真诚青年 | Sincere young adult voice | Honest, genuine content |
|
||||
| `Chinese (Mandarin)_Gentle_Senior` | 温柔学姐 | Gentle senior girl voice | Campus stories, supportive content |
|
||||
| `Chinese (Mandarin)_Stubborn_Friend` | 嘴硬竹马 | Stubborn childhood friend voice | Drama, character-driven content |
|
||||
| `Chinese (Mandarin)_Crisp_Girl` | 清脆少女 | Crisp, clear young girl voice | Clear, bright content |
|
||||
| `Chinese (Mandarin)_Pure-hearted_Boy` | 清澈邻家弟弟 | Pure-hearted neighbor boy voice | Innocent, wholesome content |
|
||||
| `Chinese (Mandarin)_Soft_Girl` | 柔和少女 | Soft, gentle girl voice | Calm, soothing content |
|
||||
|
||||
### Chinese Cantonese Voices
|
||||
|
||||
| voice_id | Name | Description | Best For |
|
||||
|----------|------|-------------|----------|
|
||||
| `Cantonese_ProfessionalHost(F)` | 专业女主持 | Professional female host voice | Cantonese broadcasts, hosting |
|
||||
| `Cantonese_GentleLady` | 温柔女声 | Gentle Cantonese female voice | Soft, warm Cantonese content |
|
||||
| `Cantonese_ProfessionalHost(M)` | 专业男主持 | Professional male host voice | Cantonese broadcasts, hosting |
|
||||
| `Cantonese_PlayfulMan` | 活泼男声 | Playful Cantonese male voice | Entertainment, casual content |
|
||||
| `Cantonese_CuteGirl` | 可爱女孩 | Cute Cantonese girl voice | Children's content, animations |
|
||||
| `Cantonese_KindWoman` | 善良女声 | Kind Cantonese female voice | Warm, friendly content |
|
||||
|
||||
### English Voices
|
||||
|
||||
| voice_id | Name | Description | Best For |
|
||||
|----------|------|-------------|----------|
|
||||
| `Santa_Claus` | Santa Claus | Festive, jolly male voice | Holiday content, children's stories |
|
||||
| `Grinch` | Grinch | Whiny, mischievous voice | Comedy, entertainment, holiday |
|
||||
| `Rudolph` | Rudolph | Cute, nasal reindeer voice | Children's content, holiday |
|
||||
| `Arnold` | Arnold | Deep, robotic terminator voice | Sci-fi, action, character roles |
|
||||
| `Charming_Santa` | Charming Santa | Smooth, charismatic Santa voice | Holiday, entertainment |
|
||||
| `Charming_Lady` | Charming Lady | Elegant, sophisticated female voice | Professional, romance |
|
||||
| `Sweet_Girl` | Sweet Girl | Sweet, innocent young girl voice | Children's content, friendly |
|
||||
| `Cute_Elf` | Cute Elf | Playful, tiny elf voice | Fantasy, children's content |
|
||||
| `Attractive_Girl` | Attractive Girl | Attractive, engaging female voice | Entertainment, marketing |
|
||||
| `Serene_Woman` | Serene Woman | Calm, peaceful female voice | Meditation, relaxation |
|
||||
| `English_Trustworthy_Man` | Trustworthy Man | Reliable, sincere male voice | Business, narration |
|
||||
| `English_Graceful_Lady` | Graceful Lady | Elegant, refined female voice | Formal, professional |
|
||||
| `English_Aussie_Bloke` | Aussie Bloke | Casual, friendly Australian male voice | Casual, entertainment |
|
||||
| `English_Whispering_girl` | Whispering Girl | Soft, whisper voice | Romance, intimate content |
|
||||
| `English_Diligent_Man` | Diligent Man | Hardworking, earnest male voice | Motivational, educational |
|
||||
| `English_Gentle-voiced_man` | Gentle-voiced Man | Soft-spoken, kind male voice | Calm, supportive content |
|
||||
|
||||
### Japanese Voices
|
||||
|
||||
| voice_id | Name | Description | Best For |
|
||||
|----------|------|-------------|----------|
|
||||
| `Japanese_IntellectualSenior` | Intellectual Senior | Wise, knowledgeable elder voice | Narration, educational |
|
||||
| `Japanese_DecisivePrincess` | Decisive Princess | Confident, royal princess voice | Animation, games, drama |
|
||||
| `Japanese_LoyalKnight` | Loyal Knight | Brave, faithful knight voice | Fantasy, games, stories |
|
||||
| `Japanese_DominantMan` | Dominant Man | Powerful, commanding male voice | Action, leadership |
|
||||
| `Japanese_SeriousCommander` | Serious Commander | Stern, authoritative commander voice | Military, games |
|
||||
| `Japanese_ColdQueen` | Cold Queen | Distant, majestic queen voice | Drama, fantasy |
|
||||
| `Japanese_DependableWoman` | Dependable Woman | Reliable, supportive female voice | Supportive, guidance |
|
||||
| `Japanese_GentleButler` | Gentle Butler | Polite, refined servant voice | Comedy, animation |
|
||||
| `Japanese_KindLady` | Kind Lady | Warm, gentle noblewoman voice | Warm, comforting |
|
||||
| `Japanese_CalmLady` | Calm Lady | Composed, serene female voice | Meditation, relaxation |
|
||||
| `Japanese_OptimisticYouth` | Optimistic Youth | Cheerful, positive young person voice | Youth content, motivation |
|
||||
| `Japanese_GenerousIzakayaOwner` | Generous Izakaya Owner | Friendly, welcoming tavern owner voice | Casual, comedy |
|
||||
| `Japanese_SportyStudent` | Sporty Student | Energetic athletic student voice | Sports, youth content |
|
||||
| `Japanese_InnocentBoy` | Innocent Boy | Pure, naive young boy voice | Children's content |
|
||||
| `Japanese_GracefulMaiden` | Graceful Maiden | Elegant, gentle young woman voice | Romance, drama |
|
||||
|
||||
### Korean Voices
|
||||
|
||||
| voice_id | Name | Description | Best For |
|
||||
|----------|------|-------------|----------|
|
||||
| `Korean_SweetGirl` | Sweet Girl | Sweet, adorable young girl voice | Children's content, romance |
|
||||
| `Korean_CheerfulBoyfriend` | Cheerful Boyfriend | Energetic, loving boyfriend voice | Romance, dating content |
|
||||
| `Korean_EnchantingSister` | Enchanting Sister | Charming, captivating sister voice | Family, drama |
|
||||
| `Korean_ShyGirl` | Shy Girl | Timid, reserved girl voice | Comedy, romance |
|
||||
| `Korean_ReliableSister` | Reliable Sister | Trustworthy, dependable sister voice | Supportive, guidance |
|
||||
| `Korean_StrictBoss` | Strict Boss | Authoritative, demanding boss voice | Business, drama |
|
||||
| `Korean_SassyGirl` | Sassy Girl | Bold, witty girl voice | Comedy, entertainment |
|
||||
| `Korean_ChildhoodFriendGirl` | Childhood Friend Girl | Familiar, friendly childhood friend voice | Romance, nostalgia |
|
||||
| `Korean_PlayboyCharmer` | Playboy Charmer | Smooth, flirtatious male voice | Romance, entertainment |
|
||||
| `Korean_ElegantPrincess` | Elegant Princess | Graceful, royal princess voice | Animation, fantasy |
|
||||
| `Korean_BraveFemaleWarrior` | Brave Female Warrior | Courageous female warrior voice | Action, fantasy |
|
||||
| `Korean_BraveYouth` | Brave Youth | Heroic young person voice | Action, youth |
|
||||
| `Korean_CalmLady` | Calm Lady | Composed, serene female voice | Meditation, relaxation |
|
||||
| `Korean_EnthusiasticTeen` | EnthusiasticTeen | Excited, energetic teenager voice | Youth content |
|
||||
| `Korean_SoothingLady` | Soothing Lady | Calming, comforting female voice | Relaxation, support |
|
||||
| `Korean_IntellectualSenior` | Intellectual Senior | Wise, knowledgeable elder voice | Educational, narration |
|
||||
| `Korean_LonelyWarrior` | Lonely Warrior | Solitary, melancholic warrior voice | Drama, fantasy |
|
||||
| `Korean_MatureLady` | MatureLady | Sophisticated, adult female voice | Professional, drama |
|
||||
| `Korean_InnocentBoy` | Innocent Boy | Pure, naive young boy voice | Children's content |
|
||||
| `Korean_CharmingSister` | Charming Sister | Attractive, delightful sister voice | Family, romance |
|
||||
| `Korean_AthleticStudent` | Athletic Student | Sporty, energetic student voice | Sports, youth |
|
||||
| `Korean_BraveAdventurer` | Brave Adventurer | Courageous explorer voice | Adventure, fantasy |
|
||||
| `Korean_CalmGentleman` | Calm Gentleman | Composed, refined gentleman voice | Formal, professional |
|
||||
| `Korean_WiseElf` | Wise Elf | Ancient, mystical elf voice | Fantasy, narration |
|
||||
| `Korean_CheerfulCoolJunior` | Cheerful Cool Junior | Popular, friendly junior voice | Youth, entertainment |
|
||||
| `Korean_DecisiveQueen` | Decisive Queen | Authoritative, commanding queen voice | Drama, fantasy |
|
||||
| `Korean_ColdYoungMan` | Cold Young Man | Distant, aloof young man voice | Drama, romance |
|
||||
| `Korean_MysteriousGirl` | Mysterious Girl | Enigmatic, secretive girl voice | Mystery, drama |
|
||||
| `Korean_QuirkyGirl` | Quirky Girl | Eccentric, unique girl voice | Comedy, entertainment |
|
||||
| `Korean_ConsiderateSenior` | Considerate Senior | Thoughtful, caring elder voice | Warm, supportive |
|
||||
| `Korean_CheerfulLittleSister` | Cheerful Little Sister | Playful, adorable younger sister voice | Family, comedy |
|
||||
| `Korean_DominantMan` | Dominant Man | Powerful, commanding male voice | Leadership, action |
|
||||
| `Korean_AirheadedGirl` | Airheaded Girl | Bubbly, spacey girl voice | Comedy, entertainment |
|
||||
| `Korean_ReliableYouth` | Reliable Youth | Trustworthy, dependable young person voice | Supportive, youth |
|
||||
| `Korean_FriendlyBigSister` | Friendly Big Sister | Warm, protective elder sister voice | Family, support |
|
||||
| `Korean_GentleBoss` | Gentle Boss | Kind, understanding boss voice | Business, supportive |
|
||||
| `Korean_ColdGirl` | Cold Girl | Aloof, distant girl voice | Drama, romance |
|
||||
| `Korean_HaughtyLady` | Haughty Lady | Arrogant, proud woman voice | Drama, comedy |
|
||||
| `Korean_CharmingElderSister` | Charming Elder Sister | Attractive, graceful elder sister voice | Romance, family |
|
||||
| `Korean_IntellectualMan` | Intellectual Man | Smart, knowledgeable male voice | Educational, professional |
|
||||
| `Korean_CaringWoman` | Caring Woman | Nurturing, supportive woman voice | Supportive, warm |
|
||||
| `Korean_WiseTeacher` | Wise Teacher | Experienced, knowledgeable teacher voice | Educational |
|
||||
| `Korean_ConfidentBoss` | Confident Boss | Self-assured, capable boss voice | Business, leadership |
|
||||
| `Korean_AthleticGirl` | Athletic Girl | Sporty, energetic girl voice | Sports, fitness |
|
||||
| `Korean_PossessiveMan` | PossessiveMan | Intense, protective male voice | Romance, drama |
|
||||
| `Korean_GentleWoman` | Gentle Woman | Soft-spoken, kind woman voice | Calm, supportive |
|
||||
| `Korean_CockyGuy` | Cocky Guy | Confident, slightly arrogant male voice | Comedy, entertainment |
|
||||
| `Korean_ThoughtfulWoman` | ThoughtfulWoman | Reflective, caring woman voice | Drama, support |
|
||||
| `Korean_OptimisticYouth` | Optimistic Youth | Positive, hopeful young person voice | Motivation, youth |
|
||||
|
||||
### Spanish Voices
|
||||
|
||||
| voice_id | Name | Description | Best For |
|
||||
|----------|------|-------------|----------|
|
||||
| `Spanish_SereneWoman` | Serene Woman | Calm, peaceful female voice | Relaxation, meditation |
|
||||
| `Spanish_MaturePartner` | Mature Partner | Sophisticated, adult partner voice | Romance, drama |
|
||||
| `Spanish_CaptivatingStoryteller` | Captivating Storyteller | Engaging, magnetic narrator voice | Audiobooks, storytelling |
|
||||
| `Spanish_Narrator` | Narrator | Professional narrative voice | Documentaries, narration |
|
||||
| `Spanish_WiseScholar` | Wise Scholar | Knowledgeable, wise scholar voice | Educational, historical |
|
||||
| `Spanish_Kind-heartedGirl` | Kind-hearted Girl | Warm, compassionate girl voice | Children's content, warm |
|
||||
| `Spanish_DeterminedManager` | Determined Manager | Ambitious, driven manager voice | Business, motivation |
|
||||
| `Spanish_BossyLeader` | Bossy Leader | Commanding, authoritative leader voice | Leadership, drama |
|
||||
| `Spanish_ReservedYoungMan` | Reserved Young Man | Quiet, introverted young man voice | Drama, realistic characters |
|
||||
| `Spanish_ConfidentWoman` | Confident Woman | Self-assured, capable woman voice | Professional, empowerment |
|
||||
| `Spanish_ThoughtfulMan` | ThoughtfulMan | Reflective, intelligent man voice | Educational, drama |
|
||||
| `Spanish_Strong-WilledBoy` | Strong-willed Boy | Determined, persistent boy voice | Youth, motivation |
|
||||
| `Spanish_SophisticatedLady` | SophisticatedLady | Elegant, refined woman voice | Formal, romance |
|
||||
| `Spanish_RationalMan` | Rational Man | Logical, analytical man voice | Educational, business |
|
||||
| `Spanish_AnimeCharacter` | Anime Character | Exaggerated anime-style voice | Animation, entertainment |
|
||||
| `Spanish_Deep-tonedMan` | Deep-toned Man | Deep, resonant male voice | Attractive, commanding |
|
||||
| `Spanish_Fussyhostess` | Fussy Hostess | Particular, demanding hostess voice | Comedy, drama |
|
||||
| `Spanish_SincereTeen` | SincereTeen | Honest, genuine teenager voice | Youth, authentic |
|
||||
| `Spanish_FrankLady` | Frank Lady | Direct, honest woman voice | Comedy, drama |
|
||||
| `Spanish_Comedian` | Comedian | Humorous, entertaining voice | Comedy, entertainment |
|
||||
| `Spanish_Debator` | Debator | Argumentative, persuasive voice | Debate, discussion |
|
||||
| `Spanish_ToughBoss` | Tough Boss | Harsh, demanding boss voice | Business, drama |
|
||||
| `Spanish_Wiselady` | Wise Lady | Experienced, wise woman voice | Guidance, advice |
|
||||
| `Spanish_Steadymentor` | Steady Mentor | Reliable, supportive mentor voice | Educational, guidance |
|
||||
| `Spanish_Jovialman` | Jovial Man | Cheerful, friendly man voice | Entertainment, casual |
|
||||
| `Spanish_SantaClaus` | Santa Claus | Festive Santa voice | Holiday, children |
|
||||
| `Spanish_Rudolph` | Rudolph | Reindeer voice | Holiday, children |
|
||||
| `Spanish_Intonategirl` | Intonate Girl | Musical, melodic girl voice | Music, singing |
|
||||
| `Spanish_Arnold` | Arnold | Robotic, mechanical voice | Sci-fi, action |
|
||||
| `Spanish_Ghost` | Ghost | Spooky, ethereal voice | Horror, mystery |
|
||||
| `Spanish_HumorousElder` | Humorous Elder | Funny, elderly person voice | Comedy, entertainment |
|
||||
| `Spanish_EnergeticBoy` | Energetic Boy | Active, lively boy voice | Youth, sports |
|
||||
| `Spanish_WhimsicalGirl` | Whimsical Girl | Playful, imaginative girl voice | Children's, fantasy |
|
||||
| `Spanish_StrictBoss` | Strict Boss | Strict, demanding boss voice | Business, education |
|
||||
| `Spanish_ReliableMan` | Reliable Man | Trustworthy, dependable man voice | Professional, support |
|
||||
| `Spanish_SereneElder` | Serene Elder | Calm, peaceful elderly voice | Meditation, wisdom |
|
||||
| `Spanish_AngryMan` | Angry Man | Frustrated, irritated male voice | Drama, comedy |
|
||||
| `Spanish_AssertiveQueen` | Assertive Queen | Confident, commanding queen voice | Drama, fantasy |
|
||||
| `Spanish_CaringGirlfriend` | Caring Girlfriend | Nurturing, loving girlfriend voice | Romance, relationship |
|
||||
| `Spanish_PowerfulSoldier` | Powerful Soldier | Strong, brave soldier voice | Action, military |
|
||||
| `Spanish_PassionateWarrior` | Passionate Warrior | Fierce, dedicated warrior voice | Action, fantasy |
|
||||
| `Spanish_ChattyGirl` | Chatty Girl | Talkative, sociable girl voice | Comedy, social |
|
||||
| `Spanish_RomanticHusband` | Romantic Husband | Loving, romantic husband voice | Romance, family |
|
||||
| `Spanish_CompellingGirl` | CompellingGirl | Persuasive, magnetic girl voice | Marketing, entertainment |
|
||||
| `Spanish_PowerfulVeteran` | Powerful Veteran | Experienced, strong veteran voice | Military, drama |
|
||||
| `Spanish_SensibleManager` | Sensible Manager | Practical, reasonable manager voice | Business, guidance |
|
||||
| `Spanish_ThoughtfulLady` | Thoughtful Lady | Considerate, kind lady voice | Supportive, advice |
|
||||
|
||||
### Portuguese Voices
|
||||
|
||||
| voice_id | Name | Description | Best For |
|
||||
|----------|------|-------------|----------|
|
||||
| `Portuguese_SentimentalLady` | Sentimental Lady | Emotional, sensitive lady voice | Drama, romance |
|
||||
| `Portuguese_BossyLeader` | Bossy Leader | Commanding, authoritative leader voice | Leadership, drama |
|
||||
| `Portuguese_Wiselady` | Wise Lady | Experienced, wise woman voice | Guidance, advice |
|
||||
| `Portuguese_Strong-WilledBoy` | Strong-willed Boy | Determined, persistent boy voice | Youth, motivation |
|
||||
| `Portuguese_Deep-VoicedGentleman` | Deep-voiced Gentleman | Deep, rich male voice | Attractive, commanding |
|
||||
| `Portuguese_UpsetGirl` | Upset Girl | Distressed, emotional girl voice | Drama, realistic |
|
||||
| `Portuguese_PassionateWarrior` | Passionate Warrior | Fierce, dedicated warrior voice | Action, fantasy |
|
||||
| `Portuguese_AnimeCharacter` | Anime Character | Exaggerated anime-style voice | Animation, entertainment |
|
||||
| `Portuguese_ConfidentWoman` | Confident Woman | Self-assured, capable woman voice | Professional, empowerment |
|
||||
| `Portuguese_AngryMan` | Angry Man | Frustrated, irritated male voice | Drama, comedy |
|
||||
| `Portuguese_CaptivatingStoryteller` | Captivating Storyteller | Engaging, magnetic narrator voice | Audiobooks, storytelling |
|
||||
| `Portuguese_Godfather` | Godfather | Authoritative, powerful father figure voice | Drama, powerful |
|
||||
| `Portuguese_ReservedYoungMan` | Reserved Young Man | Quiet, introverted young man voice | Drama, realistic |
|
||||
| `Portuguese_SmartYoungGirl` | Smart Young Girl | Intelligent, clever girl voice | Educational, youth |
|
||||
| `Portuguese_Kind-heartedGirl` | Kind-hearted Girl | Warm, compassionate girl voice | Children's content, warm |
|
||||
| `Portuguese_Pompouslady` | Pompous Lady | Self-important, arrogant lady voice | Comedy, drama |
|
||||
| `Portuguese_Grinch` | Grinch | Whiny, mischievous voice | Comedy, entertainment |
|
||||
| `Portuguese_Debator` | Debator | Argumentative, persuasive voice | Debate, discussion |
|
||||
| `Portuguese_SweetGirl` | Sweet Girl | Sweet, adorable girl voice | Children's content, romance |
|
||||
| `Portuguese_AttractiveGirl` | Attractive Girl | Charming, appealing girl voice | Entertainment, romance |
|
||||
| `Portuguese_ThoughtfulMan` | Thoughtful Man | Reflective, intelligent man voice | Educational, drama |
|
||||
| `Portuguese_PlayfulGirl` | Playful Girl | Playful, fun-loving girl voice | Comedy, children's content |
|
||||
| `Portuguese_GorgeousLady` | Gorgeous Lady | Beautiful, stunning lady voice | Romance, entertainment |
|
||||
| `Portuguese_LovelyLady` | Lovely Lady | Sweet, endearing lady voice | Warm, friendly |
|
||||
| `Portuguese_SereneWoman` | Serene Woman | Calm, peaceful female voice | Relaxation, meditation |
|
||||
| `Portuguese_SadTeen` | Sad Teen | Melancholic, teenage voice | Drama, emotional |
|
||||
| `Portuguese_MaturePartner` | Mature Partner | Sophisticated, adult partner voice | Romance, drama |
|
||||
| `Portuguese_Comedian` | Comedian | Humorous, entertaining voice | Comedy, entertainment |
|
||||
| `Portuguese_NaughtySchoolgirl` | Naughty Schoolgirl | Mischievous, playful student voice | Comedy, school |
|
||||
| `Portuguese_Narrator` | Narrator | Professional narrative voice | Documentaries, narration |
|
||||
| `Portuguese_ToughBoss` | Tough Boss | Harsh, demanding boss voice | Business, drama |
|
||||
| `Portuguese_Fussyhostess` | Fussy Hostess | Particular, demanding hostess voice | Comedy, drama |
|
||||
| `Portuguese_Dramatist` | Dramatist | Theatrical, expressive voice | Drama, storytelling |
|
||||
| `Portuguese_Steadymentor` | Steady Mentor | Reliable, supportive mentor voice | Educational, guidance |
|
||||
| `Portuguese_Jovialman` | Jovial Man | Cheerful, friendly man voice | Entertainment, casual |
|
||||
| `Portuguese_CharmingQueen` | Charming Queen | Elegant, captivating queen voice | Drama, fantasy |
|
||||
| `Portuguese_SantaClaus` | Santa Claus | Festive Santa voice | Holiday, children |
|
||||
| `Portuguese_Rudolph` | Rudolph | Reindeer voice | Holiday, children |
|
||||
| `Portuguese_Arnold` | Arnold | Robotic, mechanical voice | Sci-fi, action |
|
||||
| `Portuguese_CharmingSanta` | Charming Santa | Smooth, charismatic Santa voice | Holiday, entertainment |
|
||||
| `Portuguese_CharmingLady` | Charming Lady | Elegant, sophisticated lady voice | Professional, romance |
|
||||
| `Portuguese_Ghost` | Ghost | Spooky, ethereal voice | Horror, mystery |
|
||||
| `Portuguese_HumorousElder` | Humorous Elder | Funny, elderly person voice | Comedy, entertainment |
|
||||
| `Portuguese_CalmLeader` | Calm Leader | Composed, steady leader voice | Leadership, guidance |
|
||||
| `Portuguese_GentleTeacher` | Gentle Teacher | Kind, patient teacher voice | Educational, supportive |
|
||||
| `Portuguese_EnergeticBoy` | Energetic Boy | Active, lively boy voice | Youth, sports |
|
||||
| `Portuguese_ReliableMan` | Reliable Man | Trustworthy, dependable man voice | Professional, support |
|
||||
| `Portuguese_SereneElder` | Serene Elder | Calm, peaceful elderly voice | Meditation, wisdom |
|
||||
| `Portuguese_GrimReaper` | Grim Reaper | Dark, ominous voice | Horror, fantasy |
|
||||
| `Portuguese_AssertiveQueen` | Assertive Queen | Confident, commanding queen voice | Drama, fantasy |
|
||||
| `Portuguese_WhimsicalGirl` | Whimsical Girl | Playful, imaginative girl voice | Children's, fantasy |
|
||||
| `Portuguese_StressedLady` | Stressed Lady | Anxious, overwhelmed lady voice | Comedy, realistic |
|
||||
| `Portuguese_FriendlyNeighbor` | Friendly Neighbor | Warm, helpful neighbor voice | Community, family |
|
||||
| `Portuguese_CaringGirlfriend` | Caring Girlfriend | Nurturing, loving girlfriend voice | Romance, relationship |
|
||||
| `Portuguese_PowerfulSoldier` | Powerful Soldier | Strong, brave soldier voice | Action, military |
|
||||
| `Portuguese_FascinatingBoy` | Fascinating Boy | Charming, intriguing boy voice | Romance, youth |
|
||||
| `Portuguese_RomanticHusband` | Romantic Husband | Loving, romantic husband voice | Romance, family |
|
||||
| `Portuguese_StrictBoss` | Strict Boss | Strict, demanding boss voice | Business, education |
|
||||
| `Portuguese_InspiringLady` | Inspiring Lady | Motivating, encouraging lady voice | Motivation, leadership |
|
||||
| `Portuguese_PlayfulSpirit` | Playful Spirit | Cheerful, mischievous spirit voice | Fantasy, children's |
|
||||
| `Portuguese_ElegantGirl` | Elegant Girl | Graceful, refined girl voice | Formal, romance |
|
||||
| `Portuguese_CompellingGirl` | Compelling Girl | Persuasive, magnetic girl voice | Marketing, entertainment |
|
||||
| `Portuguese_PowerfulVeteran` | Powerful Veteran | Experienced, strong veteran voice | Military, drama |
|
||||
| `Portuguese_SensibleManager` | Sensible Manager | Practical, reasonable manager voice | Business, guidance |
|
||||
| `Portuguese_ThoughtfulLady` | Thoughtful Lady | Considerate, kind lady voice | Supportive, advice |
|
||||
| `Portuguese_TheatricalActor` | Theatrical Actor | Dramatic, expressive actor voice | Drama, entertainment |
|
||||
| `Portuguese_FragileBoy` | Fragile Boy | Sensitive, vulnerable boy voice | Drama, emotional |
|
||||
| `Portuguese_ChattyGirl` | Chatty Girl | Talkative, sociable girl voice | Comedy, social |
|
||||
| `Portuguese_Conscientiousinstructor` | Conscientious Instructor | Careful, diligent instructor voice | Educational, training |
|
||||
| `Portuguese_RationalMan` | Rational Man | Logical, analytical man voice | Educational, business |
|
||||
| `Portuguese_WiseScholar` | Wise Scholar | Knowledgeable, wise scholar voice | Educational, historical |
|
||||
| `Portuguese_FrankLady` | Frank Lady | Direct, honest woman voice | Comedy, drama |
|
||||
| `Portuguese_DeterminedManager` | Determined Manager | Ambitious, driven manager voice | Business, motivation |
|
||||
|
||||
### French Voices
|
||||
|
||||
| voice_id | Name | Description | Best For |
|
||||
|----------|------|-------------|----------|
|
||||
| `French_Male_Speech_New` | Level-Headed Man | Calm, reasonable male voice | Professional, narration |
|
||||
| `French_Female_News Anchor` | Patient Female Presenter | Clear, patient news presenter voice | News, broadcasts |
|
||||
| `French_CasualMan` | Casual Man | Relaxed, informal male voice | Casual, entertainment |
|
||||
| `French_MovieLeadFemale` | Movie Lead Female | Dramatic, expressive female voice | Drama, entertainment |
|
||||
| `French_FemaleAnchor` | Female Anchor | Professional female anchor voice | News, broadcasts |
|
||||
|
||||
### Indonesian Voices
|
||||
|
||||
| voice_id | Name | Description | Best For |
|
||||
|----------|------|-------------|----------|
|
||||
| `Indonesian_SweetGirl` | Sweet Girl | Sweet, adorable girl voice | Children's content, friendly |
|
||||
| `Indonesian_ReservedYoungMan` | Reserved Young Man | Quiet, introverted young man voice | Drama, realistic |
|
||||
| `Indonesian_CharmingGirl` | Charming Girl | Attractive, appealing girl voice | Entertainment, romance |
|
||||
| `Indonesian_CalmWoman` | Calm Woman | Composed, peaceful female voice | Relaxation, meditation |
|
||||
| `Indonesian_ConfidentWoman` | Confident Woman | Self-assured, capable woman voice | Professional, empowerment |
|
||||
| `Indonesian_CaringMan` | Caring Man | Nurturing, supportive man voice | Supportive, family |
|
||||
| `Indonesian_BossyLeader` | Bossy Leader | Commanding, authoritative leader voice | Leadership, drama |
|
||||
| `Indonesian_DeterminedBoy` | Determined Boy | Ambitious, persistent boy voice | Youth, motivation |
|
||||
| `Indonesian_GentleGirl` | Gentle Girl | Soft-spoken, kind girl voice | Calm, supportive |
|
||||
|
||||
### German Voices
|
||||
|
||||
| voice_id | Name | Description | Best For |
|
||||
|----------|------|-------------|----------|
|
||||
| `German_FriendlyMan` | Friendly Man | Warm, approachable male voice | Casual, friendly |
|
||||
| `German_SweetLady` | Sweet Lady | Pleasant, kind lady voice | Warm, supportive |
|
||||
| `German_PlayfulMan` | Playful Man | Fun-loving, humorous male voice | Comedy, entertainment |
|
||||
|
||||
### Russian Voices
|
||||
|
||||
| voice_id | Name | Description | Best For |
|
||||
|----------|------|-------------|----------|
|
||||
| `Russian_HandsomeChildhoodFriend` | Handsome Childhood Friend | Charming childhood friend voice | Romance, nostalgia |
|
||||
| `Russian_BrightHeroine` | Bright Queen | Lively, strong female lead voice | Drama, action |
|
||||
| `Russian_AmbitiousWoman` | Ambitious Woman | Driven, determined woman voice | Professional, motivation |
|
||||
| `Russian_ReliableMan` | Reliable Man | Trustworthy, dependable man voice | Professional, support |
|
||||
| `Russian_CrazyQueen` | Crazy Girl | Wild, unpredictable female voice | Comedy, drama |
|
||||
| `Russian_PessimisticGirl` | Pessimistic Girl | Gloomy, negative girl voice | Comedy, drama |
|
||||
| `Russian_AttractiveGuy` | Attractive Guy | Charming, appealing male voice | Romance, entertainment |
|
||||
| `Russian_Bad-temperedBoy` | Bad-tempered Boy | Irritable, grumpy boy voice | Comedy, drama |
|
||||
|
||||
### Italian Voices
|
||||
|
||||
| voice_id | Name | Description | Best For |
|
||||
|----------|------|-------------|----------|
|
||||
| `Italian_BraveHeroine` | Brave Heroine | Courageous, heroic female voice | Action, fantasy |
|
||||
| `Italian_Narrator` | Narrator | Professional narrative voice | Documentaries, storytelling |
|
||||
| `Italian_WanderingSorcerer` | Wandering Sorcerer | Mysterious, traveling magician voice | Fantasy, adventure |
|
||||
| `Italian_DiligentLeader` | Diligent Leader | Hardworking, dedicated leader voice | Leadership, business |
|
||||
|
||||
### Arabic Voices
|
||||
|
||||
| voice_id | Name | Description | Best For |
|
||||
|----------|------|-------------|----------|
|
||||
| `Arabic_CalmWoman` | Calm Woman | Composed, peaceful female voice | Relaxation, meditation |
|
||||
| `Arabic_FriendlyGuy` | Friendly Guy | Warm, approachable male voice | Casual, friendly |
|
||||
|
||||
### Turkish Voices
|
||||
|
||||
| voice_id | Name | Description | Best For |
|
||||
|----------|------|-------------|----------|
|
||||
| `Turkish_CalmWoman` | Calm Woman | Composed, peaceful female voice | Relaxation, meditation |
|
||||
| `Turkish_Trustworthyman` | Trustworthy Man | Reliable, sincere male voice | Professional, business |
|
||||
|
||||
### Ukrainian Voices
|
||||
|
||||
| voice_id | Name | Description | Best For |
|
||||
|----------|------|-------------|----------|
|
||||
| `Ukrainian_CalmWoman` | Calm Woman | Composed, peaceful female voice | Relaxation, meditation |
|
||||
| `Ukrainian_WiseScholar` | Wise Scholar | Knowledgeable, wise scholar voice | Educational, historical |
|
||||
|
||||
### Dutch Voices
|
||||
|
||||
| voice_id | Name | Description | Best For |
|
||||
|----------|------|-------------|----------|
|
||||
| `Dutch_kindhearted_girl` | Kind-hearted girl | Warm, compassionate girl voice | Children's content, warm |
|
||||
| `Dutch_bossy_leader` | Bossy leader | Commanding, authoritative leader voice | Leadership, drama |
|
||||
|
||||
### Vietnamese Voices
|
||||
|
||||
| voice_id | Name | Description | Best For |
|
||||
|----------|------|-------------|----------|
|
||||
| `Vietnamese_kindhearted_girl` | Kind-hearted girl | Warm, compassionate girl voice | Children's content, warm |
|
||||
|
||||
### Thai Voices
|
||||
|
||||
| voice_id | Name | Description | Best For |
|
||||
|----------|------|-------------|----------|
|
||||
| `Thai_male_1_sample8` | Serene Man | Calm, peaceful male voice | Relaxation, meditation |
|
||||
| `Thai_male_2_sample2` | Friendly Man | Warm, approachable male voice | Casual, friendly |
|
||||
| `Thai_female_1_sample1` | Confident Woman | Self-assured, capable woman voice | Professional, empowerment |
|
||||
| `Thai_female_2_sample2` | Energetic Woman | Active, lively female voice | Motivation, energy |
|
||||
|
||||
### Polish Voices
|
||||
|
||||
| voice_id | Name | Description | Best For |
|
||||
|----------|------|-------------|----------|
|
||||
| `Polish_male_1_sample4` | Male Narrator | Professional narrative voice | Documentaries, narration |
|
||||
| `Polish_male_2_sample3` | Male Anchor | Professional male anchor voice | News, broadcasts |
|
||||
| `Polish_female_1_sample1` | Calm Woman | Composed, peaceful female voice | Relaxation, meditation |
|
||||
| `Polish_female_2_sample3` | Casual Woman | Relaxed, informal female voice | Casual, entertainment |
|
||||
|
||||
### Romanian Voices
|
||||
|
||||
| voice_id | Name | Description | Best For |
|
||||
|----------|------|-------------|----------|
|
||||
| `Romanian_male_1_sample2` | Reliable Man | Trustworthy, dependable man voice | Professional, support |
|
||||
| `Romanian_male_2_sample1` | Energetic Youth | Active, lively young person voice | Youth, motivation |
|
||||
| `Romanian_female_1_sample4` | Optimistic Youth | Positive, hopeful young person voice | Motivation, youth |
|
||||
| `Romanian_female_2_sample1` | Gentle Woman | Soft-spoken, kind woman voice | Calm, supportive |
|
||||
|
||||
### Greek Voices
|
||||
|
||||
| voice_id | Name | Description | Best For |
|
||||
|----------|------|-------------|----------|
|
||||
| `greek_male_1a_v1` | Thoughtful Mentor | Reflective, wise mentor voice | Educational, guidance |
|
||||
| `Greek_female_1_sample1` | Gentle Lady | Soft-spoken, kind lady voice | Calm, supportive |
|
||||
| `Greek_female_2_sample3` | Girl Next Door | Friendly, approachable girl voice | Casual, friendly |
|
||||
|
||||
### Czech Voices
|
||||
|
||||
| voice_id | Name | Description | Best For |
|
||||
|----------|------|-------------|----------|
|
||||
| `czech_male_1_v1` | Assured Presenter | Confident, professional presenter voice | Presentations, broadcasts |
|
||||
| `czech_female_5_v7` | Steadfast Narrator | Reliable, consistent narrator voice | Documentaries, storytelling |
|
||||
| `czech_female_2_v2` | Elegant Lady | Graceful, refined lady voice | Formal, professional |
|
||||
|
||||
### Finnish Voices
|
||||
|
||||
| voice_id | Name | Description | Best For |
|
||||
|----------|------|-------------|----------|
|
||||
| `finnish_male_3_v1` | Upbeat Man | Cheerful, energetic male voice | Motivation, entertainment |
|
||||
| `finnish_male_1_v2` | Friendly Boy | Warm, approachable boy voice | Children's content, friendly |
|
||||
| `finnish_female_4_v1` | Assertive Woman | Confident, strong female voice | Professional, empowerment |
|
||||
|
||||
### Hindi Voices
|
||||
|
||||
| voice_id | Name | Description | Best For |
|
||||
|----------|------|-------------|----------|
|
||||
| `hindi_male_1_v2` | Trustworthy Advisor | Reliable, wise advisor voice | Guidance, advice |
|
||||
| `hindi_female_2_v1` | Tranquil Woman | Calm, peaceful female voice | Relaxation, meditation |
|
||||
| `hindi_female_1_v2` | News Anchor | Professional news anchor voice | News, broadcasts |
|
||||
|
||||
---
|
||||
|
||||
## Voice Parameters
|
||||
|
||||
### VoiceSetting Dataclass
|
||||
|
||||
```python
|
||||
from utils import VoiceSetting
|
||||
|
||||
voice = VoiceSetting(
|
||||
voice_id="male-qn-qingse", # Required: Voice ID
|
||||
speed=1.0, # Optional: 0.5 (slower) to 2.0 (faster), default 1.0
|
||||
volume=1.0, # Optional: 0.1 (quieter) to 10.0 (louder), default 1.0
|
||||
pitch=0, # Optional: -12 (deeper) to 12 (higher), default 0
|
||||
emotion="calm", # Optional: happy, sad, angry, fearful, disgusted, surprised, calm, fluent, whisper
|
||||
)
|
||||
```
|
||||
|
||||
### Parameter Guidelines
|
||||
|
||||
**Speed**
|
||||
- 0.75: Slower, deliberate speech (news, tutorials)
|
||||
- 1.0: Normal pace (most content)
|
||||
- 1.25: Slightly faster (energetic content)
|
||||
- 1.5+: Fast pace (time-sensitive content)
|
||||
|
||||
**Volume**
|
||||
- 0.8-1.0: Normal listening levels
|
||||
- 1.0-1.5: Louder for attention-grabbing content
|
||||
- < 0.8: Softer, intimate feeling
|
||||
|
||||
**Pitch**
|
||||
- -6 to -3: Deeper, more authoritative
|
||||
- 0: Natural pitch
|
||||
- +3 to +6: Higher, more energetic
|
||||
|
||||
**Emotion**
|
||||
- `calm`: Calm, neutral tone
|
||||
- `fluent`: Fluent, natural tone
|
||||
- `whisper`: Whisper, soft, gentle tone
|
||||
- `happy`: Cheerful, upbeat tone
|
||||
- `sad`: Melancholic, somber tone
|
||||
- `angry`: Frustrated, intense tone
|
||||
- `fearful`: Anxious, nervous tone
|
||||
- `disgusted`: Repulsed, revolted tone
|
||||
- `surprised`: Astonished, amazed tone
|
||||
|
||||
|
||||
## Custom Voices
|
||||
|
||||
### Voice Cloning
|
||||
|
||||
Create custom voices from audio samples for unique brand voices.
|
||||
|
||||
**Requirements:**
|
||||
- Source audio: 10 seconds to 5 minutes
|
||||
- Format: mp3, wav, m4a
|
||||
- Size: Max 20MB
|
||||
- Quality: Clear, no background noise, single speaker
|
||||
|
||||
**Best Practices:**
|
||||
- Use 30-60 seconds of clean speech
|
||||
- Include varied intonation and emotion
|
||||
- Record in quiet environment
|
||||
- Consistent volume throughout
|
||||
|
||||
### Voice Design
|
||||
|
||||
Generate new voices through text descriptions for creative projects.
|
||||
|
||||
**When to Use:**
|
||||
- No existing voice matches your needs
|
||||
- Need unique character voices
|
||||
- Prototype before full voice cloning
|
||||
|
||||
**Prompt Guidelines:**
|
||||
- Include: gender, age, vocal characteristics, emotional tone, use case
|
||||
- Be specific about pacing, tone, and intended audience
|
||||
- Example: "A warm, grandmotherly voice with gentle pacing, perfect for bedtime stories"
|
||||
|
||||
407
skills/frontend-dev/references/motion-recipes.md
Normal file
407
skills/frontend-dev/references/motion-recipes.md
Normal file
@@ -0,0 +1,407 @@
|
||||
# Motion Recipes
|
||||
|
||||
Production-ready animation code snippets. Copy and adapt as needed.
|
||||
|
||||
## 1. Scroll-Triggered Reveal (Framer Motion)
|
||||
|
||||
Elements fade and slide up when entering viewport.
|
||||
|
||||
```tsx
|
||||
"use client";
|
||||
import { motion } from "framer-motion";
|
||||
|
||||
const fadeSlideUp = {
|
||||
hidden: { opacity: 0, y: 40 },
|
||||
visible: {
|
||||
opacity: 1,
|
||||
y: 0,
|
||||
transition: { type: "spring", stiffness: 100, damping: 20 },
|
||||
},
|
||||
};
|
||||
|
||||
export function RevealSection({ children }: { children: React.ReactNode }) {
|
||||
return (
|
||||
<motion.div
|
||||
variants={fadeSlideUp}
|
||||
initial="hidden"
|
||||
whileInView="visible"
|
||||
viewport={{ once: true, margin: "-80px" }}
|
||||
>
|
||||
{children}
|
||||
</motion.div>
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
## 2. Staggered List Orchestration (Framer Motion)
|
||||
|
||||
Children animate sequentially with blur effect.
|
||||
|
||||
```tsx
|
||||
"use client";
|
||||
import { motion } from "framer-motion";
|
||||
|
||||
const container = {
|
||||
hidden: {},
|
||||
visible: { transition: { staggerChildren: 0.08, delayChildren: 0.1 } },
|
||||
};
|
||||
|
||||
const item = {
|
||||
hidden: { opacity: 0, y: 24, filter: "blur(4px)" },
|
||||
visible: {
|
||||
opacity: 1,
|
||||
y: 0,
|
||||
filter: "blur(0px)",
|
||||
transition: { type: "spring", stiffness: 120, damping: 20 },
|
||||
},
|
||||
};
|
||||
|
||||
export function StaggerGrid({ items }: { items: React.ReactNode[] }) {
|
||||
return (
|
||||
<motion.div
|
||||
className="grid gap-6"
|
||||
variants={container}
|
||||
initial="hidden"
|
||||
whileInView="visible"
|
||||
viewport={{ once: true }}
|
||||
>
|
||||
{items.map((child, i) => (
|
||||
<motion.div key={i} variants={item}>
|
||||
{child}
|
||||
</motion.div>
|
||||
))}
|
||||
</motion.div>
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
## 3. GSAP ScrollTrigger Pinned Section
|
||||
|
||||
Horizontal scroll panels with pinning.
|
||||
|
||||
```tsx
|
||||
"use client";
|
||||
import { useRef, useEffect } from "react";
|
||||
import gsap from "gsap";
|
||||
import { ScrollTrigger } from "gsap/ScrollTrigger";
|
||||
|
||||
gsap.registerPlugin(ScrollTrigger);
|
||||
|
||||
export function PinnedTimeline() {
|
||||
const containerRef = useRef<HTMLDivElement>(null);
|
||||
const panelsRef = useRef<HTMLDivElement>(null);
|
||||
|
||||
useEffect(() => {
|
||||
const ctx = gsap.context(() => {
|
||||
const panels = gsap.utils.toArray<HTMLElement>(".panel");
|
||||
gsap.to(panels, {
|
||||
xPercent: -100 * (panels.length - 1),
|
||||
ease: "none",
|
||||
scrollTrigger: {
|
||||
trigger: containerRef.current,
|
||||
pin: true,
|
||||
scrub: 1,
|
||||
end: () => "+=" + (panelsRef.current?.scrollWidth ?? 0),
|
||||
},
|
||||
});
|
||||
}, containerRef);
|
||||
|
||||
return () => ctx.revert(); // CRITICAL: full cleanup
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<div ref={containerRef} className="overflow-hidden">
|
||||
<div ref={panelsRef} className="flex">
|
||||
{/* .panel elements */}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
## 4. Parallax Tilt Card (Framer Motion)
|
||||
|
||||
Mouse-tracking 3D perspective. Uses `useMotionValue` — never `useState`.
|
||||
|
||||
```tsx
|
||||
"use client";
|
||||
import { motion, useMotionValue, useTransform } from "framer-motion";
|
||||
|
||||
export function TiltCard({ children }: { children: React.ReactNode }) {
|
||||
const x = useMotionValue(0.5);
|
||||
const y = useMotionValue(0.5);
|
||||
const rotateX = useTransform(y, [0, 1], [8, -8]);
|
||||
const rotateY = useTransform(x, [0, 1], [-8, 8]);
|
||||
|
||||
return (
|
||||
<motion.div
|
||||
style={{ rotateX, rotateY, transformPerspective: 800 }}
|
||||
onMouseMove={(e) => {
|
||||
const rect = e.currentTarget.getBoundingClientRect();
|
||||
x.set((e.clientX - rect.left) / rect.width);
|
||||
y.set((e.clientY - rect.top) / rect.height);
|
||||
}}
|
||||
onMouseLeave={() => {
|
||||
x.set(0.5);
|
||||
y.set(0.5);
|
||||
}}
|
||||
className="rounded-2xl bg-white shadow-lg"
|
||||
>
|
||||
{children}
|
||||
</motion.div>
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
## 5. Magnetic Button (Framer Motion)
|
||||
|
||||
Cursor-attracted button. Pure `useMotionValue` — zero re-renders.
|
||||
|
||||
```tsx
|
||||
"use client";
|
||||
import { motion, useMotionValue, useSpring } from "framer-motion";
|
||||
import { useRef } from "react";
|
||||
|
||||
export function MagneticButton({ children }: { children: React.ReactNode }) {
|
||||
const ref = useRef<HTMLButtonElement>(null);
|
||||
const x = useMotionValue(0);
|
||||
const y = useMotionValue(0);
|
||||
const springX = useSpring(x, { stiffness: 200, damping: 15 });
|
||||
const springY = useSpring(y, { stiffness: 200, damping: 15 });
|
||||
|
||||
return (
|
||||
<motion.button
|
||||
ref={ref}
|
||||
style={{ x: springX, y: springY }}
|
||||
onMouseMove={(e) => {
|
||||
const rect = ref.current!.getBoundingClientRect();
|
||||
const dx = e.clientX - (rect.left + rect.width / 2);
|
||||
const dy = e.clientY - (rect.top + rect.height / 2);
|
||||
x.set(dx * 0.3);
|
||||
y.set(dy * 0.3);
|
||||
}}
|
||||
onMouseLeave={() => {
|
||||
x.set(0);
|
||||
y.set(0);
|
||||
}}
|
||||
>
|
||||
{children}
|
||||
</motion.button>
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
## 6. Text Scramble / Decode Effect
|
||||
|
||||
Matrix-style character reveal — pure JS, no library needed.
|
||||
|
||||
```tsx
|
||||
"use client";
|
||||
import { useEffect, useRef, useState } from "react";
|
||||
|
||||
const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
||||
|
||||
export function TextScramble({ text, className }: { text: string; className?: string }) {
|
||||
const [display, setDisplay] = useState(text);
|
||||
const iteration = useRef(0);
|
||||
|
||||
useEffect(() => {
|
||||
iteration.current = 0;
|
||||
const id = setInterval(() => {
|
||||
setDisplay(
|
||||
text
|
||||
.split("")
|
||||
.map((char, i) =>
|
||||
i < iteration.current ? char : chars[Math.floor(Math.random() * chars.length)]
|
||||
)
|
||||
.join("")
|
||||
);
|
||||
iteration.current += 1 / 3;
|
||||
if (iteration.current >= text.length) clearInterval(id);
|
||||
}, 30);
|
||||
return () => clearInterval(id);
|
||||
}, [text]);
|
||||
|
||||
return <span className={className}>{display}</span>;
|
||||
}
|
||||
```
|
||||
|
||||
## 7. SVG Path Draw on Scroll (CSS Scroll-Driven)
|
||||
|
||||
Zero-JS scroll-linked path drawing using native CSS.
|
||||
|
||||
```css
|
||||
@supports (animation-timeline: scroll()) {
|
||||
.draw-path {
|
||||
stroke-dasharray: 1;
|
||||
stroke-dashoffset: 1;
|
||||
animation: draw linear;
|
||||
animation-timeline: scroll();
|
||||
animation-range: entry 0% cover 60%;
|
||||
}
|
||||
|
||||
@keyframes draw {
|
||||
to {
|
||||
stroke-dashoffset: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 8. Horizontal Scroll Hijack (GSAP)
|
||||
|
||||
Vertical scroll drives horizontal panning.
|
||||
|
||||
```tsx
|
||||
"use client";
|
||||
import { useRef, useEffect } from "react";
|
||||
import gsap from "gsap";
|
||||
import { ScrollTrigger } from "gsap/ScrollTrigger";
|
||||
|
||||
gsap.registerPlugin(ScrollTrigger);
|
||||
|
||||
export function HorizontalScroll({ children }: { children: React.ReactNode }) {
|
||||
const sectionRef = useRef<HTMLDivElement>(null);
|
||||
const trackRef = useRef<HTMLDivElement>(null);
|
||||
|
||||
useEffect(() => {
|
||||
const ctx = gsap.context(() => {
|
||||
const track = trackRef.current!;
|
||||
const scrollWidth = track.scrollWidth - window.innerWidth;
|
||||
gsap.to(track, {
|
||||
x: -scrollWidth,
|
||||
ease: "none",
|
||||
scrollTrigger: {
|
||||
trigger: sectionRef.current,
|
||||
pin: true,
|
||||
scrub: 0.8,
|
||||
end: () => `+=${scrollWidth}`,
|
||||
},
|
||||
});
|
||||
}, sectionRef);
|
||||
return () => ctx.revert();
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<section ref={sectionRef} className="overflow-hidden">
|
||||
<div ref={trackRef} className="flex gap-8 w-max">
|
||||
{children}
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
## 9. Particle Background (React Three Fiber)
|
||||
|
||||
Isolated canvas layer. Purely decorative, pointer-events-none.
|
||||
|
||||
```tsx
|
||||
"use client";
|
||||
import { Canvas, useFrame } from "@react-three/fiber";
|
||||
import { useRef, useMemo } from "react";
|
||||
import * as THREE from "three";
|
||||
|
||||
function Particles({ count = 800 }) {
|
||||
const mesh = useRef<THREE.Points>(null);
|
||||
const positions = useMemo(() => {
|
||||
const arr = new Float32Array(count * 3);
|
||||
for (let i = 0; i < count * 3; i++) arr[i] = (Math.random() - 0.5) * 10;
|
||||
return arr;
|
||||
}, [count]);
|
||||
|
||||
useFrame(({ clock }) => {
|
||||
if (mesh.current) mesh.current.rotation.y = clock.getElapsedTime() * 0.05;
|
||||
});
|
||||
|
||||
return (
|
||||
<points ref={mesh}>
|
||||
<bufferGeometry>
|
||||
<bufferAttribute attach="attributes-position" args={[positions, 3]} />
|
||||
</bufferGeometry>
|
||||
<pointsMaterial size={0.015} color="#94a3b8" transparent opacity={0.6} />
|
||||
</points>
|
||||
);
|
||||
}
|
||||
|
||||
export function ParticleCanvas() {
|
||||
return (
|
||||
<div className="fixed inset-0 -z-10 pointer-events-none">
|
||||
<Canvas camera={{ position: [0, 0, 5], fov: 60 }}>
|
||||
<Particles />
|
||||
</Canvas>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
## 10. Shared Layout Morph (Framer Motion)
|
||||
|
||||
Card-to-modal expansion using `layoutId`.
|
||||
|
||||
```tsx
|
||||
"use client";
|
||||
import { motion, AnimatePresence } from "framer-motion";
|
||||
import { useState } from "react";
|
||||
|
||||
export function MorphCard({ id, preview, detail }: {
|
||||
id: string;
|
||||
preview: React.ReactNode;
|
||||
detail: React.ReactNode;
|
||||
}) {
|
||||
const [open, setOpen] = useState(false);
|
||||
return (
|
||||
<>
|
||||
<motion.div layoutId={`card-${id}`} onClick={() => setOpen(true)}
|
||||
className="cursor-pointer rounded-2xl bg-white p-6 shadow-md">
|
||||
{preview}
|
||||
</motion.div>
|
||||
|
||||
<AnimatePresence>
|
||||
{open && (
|
||||
<>
|
||||
<motion.div
|
||||
initial={{ opacity: 0 }} animate={{ opacity: 1 }} exit={{ opacity: 0 }}
|
||||
className="fixed inset-0 bg-black/40 z-40"
|
||||
onClick={() => setOpen(false)}
|
||||
/>
|
||||
<motion.div layoutId={`card-${id}`}
|
||||
className="fixed inset-4 md:inset-20 z-50 rounded-2xl bg-white p-8 shadow-2xl overflow-auto">
|
||||
{detail}
|
||||
</motion.div>
|
||||
</>
|
||||
)}
|
||||
</AnimatePresence>
|
||||
</>
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
## Scroll Animation Patterns
|
||||
|
||||
### Sticky Scroll Stack
|
||||
Cards pin to top and stack over each other.
|
||||
- Each card: `position: sticky; top: calc(var(--index) * 2rem)`
|
||||
- Depth illusion: `scale(calc(1 - var(--index) * 0.03))`
|
||||
|
||||
### Split-Screen Parallax
|
||||
Two viewport halves scroll at different speeds.
|
||||
- Left: `translateY` at 0.5x scroll speed (GSAP `scrub`)
|
||||
- Mobile: collapse to single column, disable parallax
|
||||
|
||||
### Zoom Parallax
|
||||
Hero image scales 1 to 1.5 on scroll.
|
||||
```tsx
|
||||
scrollTrigger: { trigger: heroRef, start: "top top", end: "bottom top", scrub: true }
|
||||
gsap.to(imageRef, { scale: 1.5, ease: "none" });
|
||||
```
|
||||
|
||||
### Text Mask Reveal
|
||||
Large typography as window into video/image background.
|
||||
- `background-clip: text` + `color: transparent`
|
||||
- Animate `background-position` on scroll
|
||||
|
||||
### Curtain Reveal
|
||||
Hero splits in half, each side slides away on scroll.
|
||||
- Two halves clipped with `clip-path: inset(0 50% 0 0)` and `inset(0 0 0 50%)`
|
||||
- GSAP animates `xPercent: -100` and `xPercent: 100`
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user