opencode-skills-collection 3.1.0 → 3.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundled-skills/.antigravity-install-manifest.json +84 -1
- package/bundled-skills/android-ui-journey-testing/SKILL.md +191 -0
- package/bundled-skills/ask-matt/SKILL.md +92 -0
- package/bundled-skills/bugs-are-annoying/SKILL.md +137 -0
- package/bundled-skills/codebase-design/DEEPENING.md +37 -0
- package/bundled-skills/codebase-design/DESIGN-IT-TWICE.md +44 -0
- package/bundled-skills/codebase-design/SKILL.md +145 -0
- package/bundled-skills/competitor-analysis/LICENSE.txt +21 -0
- package/bundled-skills/competitor-analysis/SKILL.md +434 -0
- package/bundled-skills/competitor-analysis/references/battle-card-subagent.md +127 -0
- package/bundled-skills/competitor-analysis/references/battle-card.md +91 -0
- package/bundled-skills/competitor-analysis/references/example-research.md +130 -0
- package/bundled-skills/competitor-analysis/references/report-template.html +127 -0
- package/bundled-skills/competitor-analysis/references/research-patterns.md +217 -0
- package/bundled-skills/competitor-analysis/references/workflow.md +434 -0
- package/bundled-skills/competitor-analysis/scripts/capture_screenshots.mjs +142 -0
- package/bundled-skills/competitor-analysis/scripts/compile_report.mjs +929 -0
- package/bundled-skills/competitor-analysis/scripts/extract_vs_names.mjs +140 -0
- package/bundled-skills/competitor-analysis/scripts/gate_candidates.mjs +194 -0
- package/bundled-skills/competitor-analysis/scripts/list_urls.mjs +90 -0
- package/bundled-skills/competitor-analysis/scripts/md_utils.mjs +50 -0
- package/bundled-skills/competitor-analysis/scripts/merge_partials.mjs +291 -0
- package/bundled-skills/competitor-analysis/scripts/package.json +6 -0
- package/bundled-skills/design-it/3d-ui/SKILL.md +259 -0
- package/bundled-skills/design-it/SKILL.md +170 -0
- package/bundled-skills/design-it/ai-native-ui/SKILL.md +295 -0
- package/bundled-skills/design-it/aurora-ui/SKILL.md +307 -0
- package/bundled-skills/design-it/bento-ui/SKILL.md +314 -0
- package/bundled-skills/design-it/brutalism/SKILL.md +270 -0
- package/bundled-skills/design-it/brutalist-typography/SKILL.md +287 -0
- package/bundled-skills/design-it/card-based-design/SKILL.md +262 -0
- package/bundled-skills/design-it/claymorphism/SKILL.md +287 -0
- package/bundled-skills/design-it/color-blocking/SKILL.md +278 -0
- package/bundled-skills/design-it/command-center-ui/SKILL.md +345 -0
- package/bundled-skills/design-it/cyber-y2k/SKILL.md +312 -0
- package/bundled-skills/design-it/cyberpunk-ui/SKILL.md +262 -0
- package/bundled-skills/design-it/dark-mode/SKILL.md +289 -0
- package/bundled-skills/design-it/dashboard-design/SKILL.md +331 -0
- package/bundled-skills/design-it/data-dense-design/SKILL.md +322 -0
- package/bundled-skills/design-it/duotone-design/SKILL.md +248 -0
- package/bundled-skills/design-it/editorial-design/SKILL.md +328 -0
- package/bundled-skills/design-it/flat-design/SKILL.md +221 -0
- package/bundled-skills/design-it/flat-design-2/SKILL.md +240 -0
- package/bundled-skills/design-it/floating-ui/SKILL.md +299 -0
- package/bundled-skills/design-it/frutiger-aero/SKILL.md +274 -0
- package/bundled-skills/design-it/glassmorphism/SKILL.md +272 -0
- package/bundled-skills/design-it/gradient-design/SKILL.md +309 -0
- package/bundled-skills/design-it/high-contrast/SKILL.md +288 -0
- package/bundled-skills/design-it/holographic-ui/SKILL.md +310 -0
- package/bundled-skills/design-it/isometric-design/SKILL.md +228 -0
- package/bundled-skills/design-it/layered-design/SKILL.md +247 -0
- package/bundled-skills/design-it/material-design/SKILL.md +275 -0
- package/bundled-skills/design-it/maximalism/SKILL.md +297 -0
- package/bundled-skills/design-it/minimalism/SKILL.md +267 -0
- package/bundled-skills/design-it/monochromatic-ui/SKILL.md +296 -0
- package/bundled-skills/design-it/neo-brutalism/SKILL.md +270 -0
- package/bundled-skills/design-it/neumorphism/SKILL.md +248 -0
- package/bundled-skills/design-it/retro-design/SKILL.md +283 -0
- package/bundled-skills/design-it/retro-futurism/SKILL.md +259 -0
- package/bundled-skills/design-it/sci-fi-interface/SKILL.md +309 -0
- package/bundled-skills/design-it/skeuomorphism/SKILL.md +280 -0
- package/bundled-skills/design-it/soft-pastel/SKILL.md +307 -0
- package/bundled-skills/design-it/spatial-computing-ui/SKILL.md +300 -0
- package/bundled-skills/design-it/spatial-design/SKILL.md +268 -0
- package/bundled-skills/design-it/swiss-design/SKILL.md +293 -0
- package/bundled-skills/design-it/synthwave/SKILL.md +257 -0
- package/bundled-skills/design-it/tile-design/SKILL.md +297 -0
- package/bundled-skills/design-it/typography-first/SKILL.md +247 -0
- package/bundled-skills/design-it/vaporwave/SKILL.md +331 -0
- package/bundled-skills/design-it/vibrant-maximalism/SKILL.md +291 -0
- package/bundled-skills/design-it/widget-based-design/SKILL.md +274 -0
- package/bundled-skills/design-it/y2k-design/SKILL.md +268 -0
- package/bundled-skills/diagnosing-bugs/SKILL.md +165 -0
- package/bundled-skills/diagnosing-bugs/scripts/hitl-loop.template.sh +41 -0
- package/bundled-skills/docs/contributors/skill-scoring.md +235 -0
- package/bundled-skills/docs/integrations/jetski-cortex.md +3 -3
- package/bundled-skills/docs/integrations/jetski-gemini-loader/README.md +1 -1
- package/bundled-skills/docs/maintainers/repo-growth-seo.md +3 -3
- package/bundled-skills/docs/maintainers/skills-update-guide.md +1 -1
- package/bundled-skills/docs/users/bundles.md +1 -1
- package/bundled-skills/docs/users/claude-code-skills.md +1 -1
- package/bundled-skills/docs/users/gemini-cli-skills.md +1 -1
- package/bundled-skills/docs/users/getting-started.md +1 -1
- package/bundled-skills/docs/users/kiro-integration.md +1 -1
- package/bundled-skills/docs/users/usage.md +4 -4
- package/bundled-skills/docs/users/visual-guide.md +4 -4
- package/bundled-skills/domain-modeling/ADR-FORMAT.md +47 -0
- package/bundled-skills/domain-modeling/CONTEXT-FORMAT.md +60 -0
- package/bundled-skills/domain-modeling/SKILL.md +105 -0
- package/bundled-skills/grill-me/SKILL.md +36 -0
- package/bundled-skills/grill-with-docs/SKILL.md +36 -0
- package/bundled-skills/grilling/SKILL.md +39 -0
- package/bundled-skills/handoff/SKILL.md +45 -0
- package/bundled-skills/image-generator/.env.example +7 -0
- package/bundled-skills/image-generator/SKILL.md +509 -0
- package/bundled-skills/improve-codebase-architecture/HTML-REPORT.md +123 -0
- package/bundled-skills/improve-codebase-architecture/SKILL.md +97 -0
- package/bundled-skills/learn/SKILL.md +156 -0
- package/bundled-skills/lesson-generator/SKILL.md +90 -0
- package/bundled-skills/llm-council/.env.example +7 -0
- package/bundled-skills/llm-council/SKILL.md +602 -0
- package/bundled-skills/loop-library/SKILL.md +205 -0
- package/bundled-skills/loop-library/agents/openai.yaml +4 -0
- package/bundled-skills/loop-library/references/catalog.md +270 -0
- package/bundled-skills/mailtrap-managing-contacts/SKILL.md +112 -0
- package/bundled-skills/mailtrap-sending-emails/SKILL.md +167 -0
- package/bundled-skills/mailtrap-setting-up-sending-domain/SKILL.md +77 -0
- package/bundled-skills/mailtrap-testing-with-sandbox/SKILL.md +110 -0
- package/bundled-skills/prototype/LOGIC.md +79 -0
- package/bundled-skills/prototype/SKILL.md +62 -0
- package/bundled-skills/prototype/UI.md +112 -0
- package/bundled-skills/setup-matt-pocock-skills/SKILL.md +158 -0
- package/bundled-skills/setup-matt-pocock-skills/domain.md +51 -0
- package/bundled-skills/setup-matt-pocock-skills/issue-tracker-github.md +34 -0
- package/bundled-skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +35 -0
- package/bundled-skills/setup-matt-pocock-skills/issue-tracker-local.md +19 -0
- package/bundled-skills/setup-matt-pocock-skills/triage-labels.md +15 -0
- package/bundled-skills/survey-generator/LICENSE +21 -0
- package/bundled-skills/survey-generator/SKILL.md +143 -0
- package/bundled-skills/survey-generator/build_artifact.py +208 -0
- package/bundled-skills/survey-generator/examples/agentic-engineering/research_bundle.json +1196 -0
- package/bundled-skills/survey-generator/examples/agentic-engineering/survey.html +706 -0
- package/bundled-skills/survey-generator/style_spec.json +85 -0
- package/bundled-skills/survey-generator/templates/research_bundle_template.json +69 -0
- package/bundled-skills/tdd/SKILL.md +139 -0
- package/bundled-skills/tdd/mocking.md +59 -0
- package/bundled-skills/tdd/refactoring.md +10 -0
- package/bundled-skills/tdd/tests.md +61 -0
- package/bundled-skills/teach/GLOSSARY-FORMAT.md +35 -0
- package/bundled-skills/teach/LEARNING-RECORD-FORMAT.md +46 -0
- package/bundled-skills/teach/MISSION-FORMAT.md +31 -0
- package/bundled-skills/teach/RESOURCES-FORMAT.md +32 -0
- package/bundled-skills/teach/SKILL.md +169 -0
- package/bundled-skills/to-issues/SKILL.md +115 -0
- package/bundled-skills/to-prd/SKILL.md +104 -0
- package/bundled-skills/tools-page-seo-optimizer/SKILL.md +616 -0
- package/bundled-skills/triage/AGENT-BRIEF.md +207 -0
- package/bundled-skills/triage/OUT-OF-SCOPE.md +105 -0
- package/bundled-skills/triage/SKILL.md +143 -0
- package/bundled-skills/vibecode-production-qa-validator/SKILL.md +371 -141
- package/bundled-skills/wiki-builder/SKILL.md +157 -0
- package/bundled-skills/wiki-builder/agents/openai.yaml +5 -0
- package/bundled-skills/wiki-builder/references/wiki-flavors.md +98 -0
- package/bundled-skills/wiki-builder/scripts/init_wiki.sh +105 -0
- package/bundled-skills/wiki-builder/templates/index.md +20 -0
- package/bundled-skills/wiki-builder/templates/maintenance-log.md +7 -0
- package/bundled-skills/wiki-builder/templates/prompts/compile-concept-page.md +12 -0
- package/bundled-skills/wiki-builder/templates/prompts/compile-index.md +11 -0
- package/bundled-skills/wiki-builder/templates/prompts/compile-source-page.md +12 -0
- package/bundled-skills/wiki-builder/templates/prompts/lint-wiki.md +10 -0
- package/bundled-skills/wiki-builder/templates/prompts/query-and-file.md +11 -0
- package/bundled-skills/wiki-builder/templates/sources.md +9 -0
- package/bundled-skills/wiki-builder/templates/wiki.config.md +53 -0
- package/bundled-skills/writing-great-skills/GLOSSARY.md +181 -0
- package/bundled-skills/writing-great-skills/SKILL.md +111 -0
- package/bundled-skills/yao-meta-skill/SKILL.md +86 -0
- package/bundled-skills/yao-meta-skill/agents/interface.yaml +26 -0
- package/bundled-skills/yao-meta-skill/manifest.json +24 -0
- package/bundled-skills/yao-meta-skill/references/artifact-design-doctrine.md +49 -0
- package/bundled-skills/yao-meta-skill/references/authoring-discipline.md +78 -0
- package/bundled-skills/yao-meta-skill/references/autonomous-adaptation.md +65 -0
- package/bundled-skills/yao-meta-skill/references/distribution-registry-method.md +60 -0
- package/bundled-skills/yao-meta-skill/references/eval-playbook.md +69 -0
- package/bundled-skills/yao-meta-skill/references/gate-selection.md +68 -0
- package/bundled-skills/yao-meta-skill/references/governance.md +134 -0
- package/bundled-skills/yao-meta-skill/references/human-review-template.md +54 -0
- package/bundled-skills/yao-meta-skill/references/intent-dialogue.md +138 -0
- package/bundled-skills/yao-meta-skill/references/iteration-philosophy.md +30 -0
- package/bundled-skills/yao-meta-skill/references/non-skill-decision-tree.md +39 -0
- package/bundled-skills/yao-meta-skill/references/operating-modes.md +107 -0
- package/bundled-skills/yao-meta-skill/references/output-eval-method.md +113 -0
- package/bundled-skills/yao-meta-skill/references/output-quality-risk.md +41 -0
- package/bundled-skills/yao-meta-skill/references/output-visual-quality.md +53 -0
- package/bundled-skills/yao-meta-skill/references/packaging-contracts.md +70 -0
- package/bundled-skills/yao-meta-skill/references/pattern-extraction-doctrine.md +76 -0
- package/bundled-skills/yao-meta-skill/references/platform-capability-matrix.md +49 -0
- package/bundled-skills/yao-meta-skill/references/prompt-engineering-doctrine.md +76 -0
- package/bundled-skills/yao-meta-skill/references/qa-ladder.md +57 -0
- package/bundled-skills/yao-meta-skill/references/reference-scan.md +126 -0
- package/bundled-skills/yao-meta-skill/references/regression-cause-taxonomy.md +80 -0
- package/bundled-skills/yao-meta-skill/references/resource-boundaries.md +120 -0
- package/bundled-skills/yao-meta-skill/references/review-studio-method.md +87 -0
- package/bundled-skills/yao-meta-skill/references/review-waiver-method.md +76 -0
- package/bundled-skills/yao-meta-skill/references/runtime-conformance-method.md +21 -0
- package/bundled-skills/yao-meta-skill/references/skill-archetypes.md +86 -0
- package/bundled-skills/yao-meta-skill/references/skill-atlas-method.md +35 -0
- package/bundled-skills/yao-meta-skill/references/skill-engineering-method.md +210 -0
- package/bundled-skills/yao-meta-skill/references/skill-ir-method.md +41 -0
- package/bundled-skills/yao-meta-skill/references/skillops-decision-policy.md +53 -0
- package/bundled-skills/yao-meta-skill/references/systems-thinking-doctrine.md +75 -0
- package/bundled-skills/yao-meta-skill/references/telemetry-drift-method.md +182 -0
- package/bundled-skills/yao-meta-skill/references/trust-security-method.md +79 -0
- package/bundled-skills/yao-meta-skill/references/user-memory-policy.md +35 -0
- package/bundled-skills/youtube-notetaker/SKILL.md +209 -0
- package/bundled-skills/youtube-notetaker/reference/artifact.html +269 -0
- package/bundled-skills/youtube-notetaker/scripts/contact_sheet.py +53 -0
- package/bundled-skills/youtube-notetaker/scripts/detect_slides.sh +19 -0
- package/bundled-skills/youtube-notetaker/scripts/download.sh +24 -0
- package/bundled-skills/youtube-notetaker/scripts/extract_slides.py +43 -0
- package/bundled-skills/youtube-notetaker/scripts/serve.py +173 -0
- package/bundled-skills/youtube-notetaker/scripts/setup.sh +27 -0
- package/bundled-skills/youtube-notetaker/scripts/verify.sh +31 -0
- package/bundled-skills/youtube-notetaker/scripts/vtt_to_transcript.py +59 -0
- package/bundled-skills/youtube-notetaker/scripts/write_library_item.py +69 -0
- package/package.json +1 -1
- package/skills_index.json +1956 -286
- package/bundled-skills/ai-md/SKILL.md +0 -523
- package/bundled-skills/atlas-contract/SKILL.md +0 -650
- package/bundled-skills/busybox-on-windows/SKILL.md +0 -40
- package/bundled-skills/monte-carlo-prevent/SKILL.md +0 -257
- package/bundled-skills/monte-carlo-prevent/references/TROUBLESHOOTING.md +0 -23
- package/bundled-skills/monte-carlo-prevent/references/parameters.md +0 -32
- package/bundled-skills/monte-carlo-prevent/references/workflows.md +0 -478
- package/bundled-skills/monte-carlo-push-ingestion/SKILL.md +0 -372
- package/bundled-skills/monte-carlo-push-ingestion/references/anomaly-detection.md +0 -87
- package/bundled-skills/monte-carlo-push-ingestion/references/custom-lineage.md +0 -203
- package/bundled-skills/monte-carlo-push-ingestion/references/direct-http-api.md +0 -207
- package/bundled-skills/monte-carlo-push-ingestion/references/prerequisites.md +0 -150
- package/bundled-skills/monte-carlo-push-ingestion/references/push-lineage.md +0 -160
- package/bundled-skills/monte-carlo-push-ingestion/references/push-metadata.md +0 -158
- package/bundled-skills/monte-carlo-push-ingestion/references/push-query-logs.md +0 -219
- package/bundled-skills/monte-carlo-push-ingestion/references/validation.md +0 -257
- package/bundled-skills/monte-carlo-push-ingestion/scripts/sample_verify.py +0 -357
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery/collect_and_push_lineage.py +0 -70
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery/collect_and_push_metadata.py +0 -65
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery/collect_and_push_query_logs.py +0 -70
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery/collect_lineage.py +0 -214
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery/collect_metadata.py +0 -160
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery/collect_query_logs.py +0 -164
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery/push_lineage.py +0 -198
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery/push_metadata.py +0 -193
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery/push_query_logs.py +0 -207
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery-iceberg/collect_and_push_metadata.py +0 -71
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery-iceberg/collect_and_push_query_logs.py +0 -64
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery-iceberg/collect_metadata.py +0 -253
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery-iceberg/collect_query_logs.py +0 -149
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery-iceberg/push_metadata.py +0 -190
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery-iceberg/push_query_logs.py +0 -208
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/databricks/collect_and_push_lineage.py +0 -83
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/databricks/collect_and_push_metadata.py +0 -77
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/databricks/collect_and_push_query_logs.py +0 -83
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/databricks/collect_lineage.py +0 -240
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/databricks/collect_metadata.py +0 -212
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/databricks/collect_query_logs.py +0 -204
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/databricks/push_lineage.py +0 -192
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/databricks/push_metadata.py +0 -178
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/databricks/push_query_logs.py +0 -200
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/hive/collect_and_push_lineage.py +0 -119
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/hive/collect_and_push_metadata.py +0 -119
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/hive/collect_and_push_query_logs.py +0 -117
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/hive/collect_lineage.py +0 -265
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/hive/collect_metadata.py +0 -313
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/hive/collect_query_logs.py +0 -284
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/hive/push_lineage.py +0 -309
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/hive/push_metadata.py +0 -245
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/hive/push_query_logs.py +0 -255
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/redshift/collect_and_push_lineage.py +0 -78
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/redshift/collect_and_push_metadata.py +0 -80
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/redshift/collect_and_push_query_logs.py +0 -88
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/redshift/collect_lineage.py +0 -235
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/redshift/collect_metadata.py +0 -219
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/redshift/collect_query_logs.py +0 -239
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/redshift/push_lineage.py +0 -178
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/redshift/push_metadata.py +0 -178
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/redshift/push_query_logs.py +0 -196
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/snowflake/collect_and_push_lineage.py +0 -154
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/snowflake/collect_and_push_metadata.py +0 -137
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/snowflake/collect_and_push_query_logs.py +0 -137
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/snowflake/collect_lineage.py +0 -349
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/snowflake/collect_metadata.py +0 -329
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/snowflake/collect_query_logs.py +0 -254
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/snowflake/push_lineage.py +0 -307
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/snowflake/push_metadata.py +0 -228
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/snowflake/push_query_logs.py +0 -248
- package/bundled-skills/monte-carlo-push-ingestion/scripts/test_template_sdk_usage.py +0 -340
- package/bundled-skills/skill-optimizer/SKILL.md +0 -271
- package/bundled-skills/using-superpowers/SKILL.md +0 -98
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: maximalism
|
|
3
|
+
description: Web and App implementation guide for Controlled Maximalism. Trigger when user wants lots of elements, dense content, but a highly curated and artistic presentation.
|
|
4
|
+
date_added: "2026-06-17"
|
|
5
|
+
risk: safe
|
|
6
|
+
source: self
|
|
7
|
+
source_type: self
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Controlled Maximalism
|
|
11
|
+
|
|
12
|
+
> "Dense and rich, but deeply intentional. Like an exquisitely curated museum of artifacts."
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
## When to Use
|
|
16
|
+
Use this sub-style when the user's request matches the aesthetic described above. This is a child reference of the `design-it` skill and is not meant to be triggered directly.
|
|
17
|
+
|
|
18
|
+
## Core Principles
|
|
19
|
+
1. **High Density**: The screen is packed with information, imagery, and interactive elements.
|
|
20
|
+
2. **Ornate Detailing**: Use of decorative borders, intricate textures, and classic design flourishes.
|
|
21
|
+
3. **Structured Chaos**: Unlike Vibrant Maximalism, the layout here is based on a strict underlying grid that holds the massive amount of content together.
|
|
22
|
+
|
|
23
|
+
## Visual DNA
|
|
24
|
+
- **Colors**: **Monochromatic Brown**, **Yacht Club**, or rich jewel tones (emerald, ruby, sapphire, gold).
|
|
25
|
+
- **Typography**: Ornate serifs (like `Cinzel` or `Playfair Display`) paired with dense, highly legible sans-serif body copy.
|
|
26
|
+
- **Borders & Dividers**: Extensive use of thin, elegant lines separating every piece of content.
|
|
27
|
+
|
|
28
|
+
## Web Implementation
|
|
29
|
+
- Use dense CSS Grid layouts.
|
|
30
|
+
- **CSS Example**:
|
|
31
|
+
```css
|
|
32
|
+
body {
|
|
33
|
+
background-color: #0F172A; /* Deep slate */
|
|
34
|
+
color: #E2E8F0;
|
|
35
|
+
background-image: url('subtle-damask-pattern.png');
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.max-grid {
|
|
39
|
+
display: grid;
|
|
40
|
+
grid-template-columns: repeat(6, 1fr);
|
|
41
|
+
gap: 16px;
|
|
42
|
+
padding: 16px;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.max-item {
|
|
46
|
+
background-color: rgba(30, 41, 59, 0.9); /* Semi-transparent over pattern */
|
|
47
|
+
border: 1px solid #475569;
|
|
48
|
+
padding: 24px;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/* Ornate decorative borders */
|
|
52
|
+
.max-feature {
|
|
53
|
+
grid-column: span 3;
|
|
54
|
+
border: 2px solid #D4AF37; /* Gold */
|
|
55
|
+
position: relative;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.max-feature::before {
|
|
59
|
+
content: '';
|
|
60
|
+
position: absolute;
|
|
61
|
+
top: 4px; left: 4px; right: 4px; bottom: 4px;
|
|
62
|
+
border: 1px dashed #D4AF37;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.max-title {
|
|
66
|
+
font-family: 'Cinzel', serif;
|
|
67
|
+
color: #D4AF37;
|
|
68
|
+
font-size: 2.5rem;
|
|
69
|
+
text-align: center;
|
|
70
|
+
border-bottom: 1px solid #475569;
|
|
71
|
+
padding-bottom: 16px;
|
|
72
|
+
margin-bottom: 16px;
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## App Implementation
|
|
77
|
+
|
|
78
|
+
### SwiftUI
|
|
79
|
+
```swift
|
|
80
|
+
struct MaximalismView: View {
|
|
81
|
+
let columns = [
|
|
82
|
+
GridItem(.flexible(), spacing: 4),
|
|
83
|
+
GridItem(.flexible(), spacing: 4),
|
|
84
|
+
GridItem(.flexible(), spacing: 4)
|
|
85
|
+
]
|
|
86
|
+
|
|
87
|
+
var body: some View {
|
|
88
|
+
ScrollView {
|
|
89
|
+
LazyVGrid(columns: columns, spacing: 4) {
|
|
90
|
+
// Feature span
|
|
91
|
+
MaxItem(title: "MUSEUM", isFeature: true)
|
|
92
|
+
// Dense data blocks
|
|
93
|
+
MaxItem(title: "1892")
|
|
94
|
+
MaxItem(title: "Vol. II")
|
|
95
|
+
MaxItem(title: "Arch")
|
|
96
|
+
MaxItem(title: "Index")
|
|
97
|
+
}
|
|
98
|
+
.padding(16)
|
|
99
|
+
}
|
|
100
|
+
.background(Color(hex: "0F172A")) // Deep slate
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
struct MaxItem: View {
|
|
105
|
+
let title: String
|
|
106
|
+
var isFeature: Bool = false
|
|
107
|
+
|
|
108
|
+
var body: some View {
|
|
109
|
+
VStack {
|
|
110
|
+
Text(title)
|
|
111
|
+
.font(.custom("Cinzel", size: isFeature ? 28 : 14))
|
|
112
|
+
.foregroundColor(Color(hex: "D4AF37")) // Gold
|
|
113
|
+
.padding()
|
|
114
|
+
}
|
|
115
|
+
.frame(maxWidth: .infinity, minHeight: isFeature ? 150 : 80)
|
|
116
|
+
.background(Color(hex: "1E293B").opacity(0.9))
|
|
117
|
+
.border(Color(hex: "475569"), width: 1)
|
|
118
|
+
.overlay(
|
|
119
|
+
// Ornate internal dashed border for the feature item
|
|
120
|
+
Group {
|
|
121
|
+
if isFeature {
|
|
122
|
+
Rectangle()
|
|
123
|
+
.stroke(style: StrokeStyle(lineWidth: 1, dash: [4]))
|
|
124
|
+
.foregroundColor(Color(hex: "D4AF37"))
|
|
125
|
+
.padding(4)
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
)
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
```
|
|
132
|
+
- A `LazyVGrid` with very tight `spacing` (e.g., `4`) creates the necessary density.
|
|
133
|
+
- Extensive use of `.border` and `.overlay(Rectangle().stroke(...))` to box in every piece of data, mimicking ornate framing.
|
|
134
|
+
|
|
135
|
+
### Flutter
|
|
136
|
+
```dart
|
|
137
|
+
class MaximalismScreen extends StatelessWidget {
|
|
138
|
+
@override
|
|
139
|
+
Widget build(BuildContext context) {
|
|
140
|
+
return Scaffold(
|
|
141
|
+
backgroundColor: const Color(0xFF0F172A),
|
|
142
|
+
body: GridView.count(
|
|
143
|
+
crossAxisCount: 3,
|
|
144
|
+
padding: const EdgeInsets.all(16),
|
|
145
|
+
mainAxisSpacing: 4,
|
|
146
|
+
crossAxisSpacing: 4,
|
|
147
|
+
children: [
|
|
148
|
+
// Flutter's standard GridView doesn't span columns easily.
|
|
149
|
+
// In a real app, use the `flutter_staggered_grid_view` package.
|
|
150
|
+
_buildItem('1892'),
|
|
151
|
+
_buildItem('Vol. II'),
|
|
152
|
+
_buildItem('Arch'),
|
|
153
|
+
_buildItem('Index', isOrnate: true),
|
|
154
|
+
_buildItem('04'),
|
|
155
|
+
_buildItem('XII'),
|
|
156
|
+
],
|
|
157
|
+
),
|
|
158
|
+
);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
Widget _buildItem(String title, {bool isOrnate = false}) {
|
|
162
|
+
return Container(
|
|
163
|
+
decoration: BoxDecoration(
|
|
164
|
+
color: const Color(0xFF1E293B).withOpacity(0.9),
|
|
165
|
+
border: Border.all(color: const Color(0xFF475569), width: 1),
|
|
166
|
+
),
|
|
167
|
+
child: Stack(
|
|
168
|
+
children: [
|
|
169
|
+
if (isOrnate)
|
|
170
|
+
Positioned.fill(
|
|
171
|
+
child: Padding(
|
|
172
|
+
padding: const EdgeInsets.all(4.0),
|
|
173
|
+
// Requires path_drawing or custom painter for dashed borders natively
|
|
174
|
+
child: Container(
|
|
175
|
+
decoration: BoxDecoration(border: Border.all(color: const Color(0xFFD4AF37), width: 1)),
|
|
176
|
+
),
|
|
177
|
+
),
|
|
178
|
+
),
|
|
179
|
+
Center(
|
|
180
|
+
child: Text(
|
|
181
|
+
title,
|
|
182
|
+
style: const TextStyle(fontFamily: 'Cinzel', color: Color(0xFFD4AF37), fontSize: 16),
|
|
183
|
+
),
|
|
184
|
+
),
|
|
185
|
+
],
|
|
186
|
+
),
|
|
187
|
+
);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
```
|
|
191
|
+
- Use `flutter_staggered_grid_view` to create the complex, spanning "masonry" or architectural grid layouts typical of maximalism.
|
|
192
|
+
- Use `Stack` with `Positioned.fill` and `Padding` to create double-bordered framing effects.
|
|
193
|
+
|
|
194
|
+
### React Native
|
|
195
|
+
```jsx
|
|
196
|
+
const MaximalismScreen = () => {
|
|
197
|
+
return (
|
|
198
|
+
<ScrollView style={{ flex: 1, backgroundColor: '#0F172A' }}>
|
|
199
|
+
<View style={{ padding: 16, flexDirection: 'row', flexWrap: 'wrap', gap: 4 }}>
|
|
200
|
+
|
|
201
|
+
{/* Feature Item spanning full width */}
|
|
202
|
+
<View style={[styles.item, styles.featureItem]}>
|
|
203
|
+
<View style={styles.ornateInnerBorder}>
|
|
204
|
+
<Text style={[styles.text, { fontSize: 32 }]}>MUSEUM</Text>
|
|
205
|
+
</View>
|
|
206
|
+
</View>
|
|
207
|
+
|
|
208
|
+
{/* Small Dense Items */}
|
|
209
|
+
<View style={[styles.item, { width: '32%' }]}><Text style={styles.text}>1892</Text></View>
|
|
210
|
+
<View style={[styles.item, { width: '32%' }]}><Text style={styles.text}>Vol. II</Text></View>
|
|
211
|
+
<View style={[styles.item, { width: '32%' }]}><Text style={styles.text}>Arch</Text></View>
|
|
212
|
+
</View>
|
|
213
|
+
</ScrollView>
|
|
214
|
+
);
|
|
215
|
+
};
|
|
216
|
+
|
|
217
|
+
const styles = StyleSheet.create({
|
|
218
|
+
item: {
|
|
219
|
+
backgroundColor: 'rgba(30, 41, 59, 0.9)',
|
|
220
|
+
borderColor: '#475569', borderWidth: 1,
|
|
221
|
+
height: 100, justifyContent: 'center', alignItems: 'center'
|
|
222
|
+
},
|
|
223
|
+
featureItem: {
|
|
224
|
+
width: '100%', height: 200, padding: 4,
|
|
225
|
+
},
|
|
226
|
+
ornateInnerBorder: {
|
|
227
|
+
flex: 1, width: '100%',
|
|
228
|
+
borderColor: '#D4AF37', borderWidth: 1, borderStyle: 'dashed',
|
|
229
|
+
justifyContent: 'center', alignItems: 'center'
|
|
230
|
+
},
|
|
231
|
+
text: {
|
|
232
|
+
fontFamily: 'Cinzel-Regular', color: '#D4AF37', fontSize: 16
|
|
233
|
+
}
|
|
234
|
+
});
|
|
235
|
+
```
|
|
236
|
+
- A `flexWrap: 'wrap'` container with percentage widths (e.g., `32%` for 3 columns) is the easiest way to build complex, dense grids in React Native.
|
|
237
|
+
- Use `borderStyle: 'dashed'` combined with a solid outer border to create ornate framing.
|
|
238
|
+
|
|
239
|
+
### Jetpack Compose
|
|
240
|
+
```kotlin
|
|
241
|
+
@Composable
|
|
242
|
+
fun MaximalismScreen() {
|
|
243
|
+
LazyVerticalGrid(
|
|
244
|
+
columns = GridCells.Fixed(3),
|
|
245
|
+
modifier = Modifier.fillMaxSize().background(Color(0xFF0F172A)).padding(16.dp),
|
|
246
|
+
horizontalArrangement = Arrangement.spacedBy(4.dp),
|
|
247
|
+
verticalArrangement = Arrangement.spacedBy(4.dp)
|
|
248
|
+
) {
|
|
249
|
+
// Feature spanning all 3 columns
|
|
250
|
+
item(span = { GridItemSpan(3) }) {
|
|
251
|
+
MaxItem("MUSEUM", isFeature = true)
|
|
252
|
+
}
|
|
253
|
+
// Dense items
|
|
254
|
+
items(6) { index ->
|
|
255
|
+
MaxItem("Item $index")
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
@Composable
|
|
261
|
+
fun MaxItem(title: String, isFeature: Boolean = false) {
|
|
262
|
+
Box(
|
|
263
|
+
modifier = Modifier
|
|
264
|
+
.height(if (isFeature) 200.dp else 100.dp)
|
|
265
|
+
.background(Color(0xFF1E293B).copy(alpha = 0.9f))
|
|
266
|
+
.border(1.dp, Color(0xFF475569))
|
|
267
|
+
.padding(4.dp),
|
|
268
|
+
contentAlignment = Alignment.Center
|
|
269
|
+
) {
|
|
270
|
+
if (isFeature) {
|
|
271
|
+
// Ornate inner border
|
|
272
|
+
Box(
|
|
273
|
+
modifier = Modifier
|
|
274
|
+
.fillMaxSize()
|
|
275
|
+
.border(1.dp, Color(0xFFD4AF37), shape = RoundedCornerShape(0.dp))
|
|
276
|
+
// Note: Dashed borders require a custom drawBehind modifier in Compose
|
|
277
|
+
)
|
|
278
|
+
}
|
|
279
|
+
Text(
|
|
280
|
+
text = title,
|
|
281
|
+
color = Color(0xFFD4AF37),
|
|
282
|
+
fontFamily = FontFamily.Serif, // Replace with custom Cinzel font
|
|
283
|
+
fontSize = if (isFeature) 32.sp else 16.sp
|
|
284
|
+
)
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
```
|
|
288
|
+
- `LazyVerticalGrid` with `GridCells.Fixed(3)` is perfect.
|
|
289
|
+
- Use `GridItemSpan(3)` for the hero elements to make them span the full width, mimicking editorial or museum layouts.
|
|
290
|
+
|
|
291
|
+
## Do's and Don'ts
|
|
292
|
+
- **DO**: Treat every pixel as valuable real estate. Frame everything.
|
|
293
|
+
- **DON'T**: Let it become unreadable. The contrast between text and background must remain high despite the density.
|
|
294
|
+
|
|
295
|
+
## Limitations
|
|
296
|
+
- This is a styling reference and does not replace environment-specific validation, accessibility testing, or expert review.
|
|
297
|
+
- Ensure appropriate contrast ratios and responsive behaviors are verified separately.
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: minimalism
|
|
3
|
+
description: Web and App implementation guide for the Minimalism design style. Trigger when the user wants simple layouts, lots of whitespace, few colors, and clear hierarchy.
|
|
4
|
+
date_added: "2026-06-17"
|
|
5
|
+
risk: safe
|
|
6
|
+
source: self
|
|
7
|
+
source_type: self
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Minimalism
|
|
11
|
+
|
|
12
|
+
> "Less is more. Remove until nothing is left but the essential."
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
## When to Use
|
|
16
|
+
Use this sub-style when the user's request matches the aesthetic described above. This is a child reference of the `design-it` skill and is not meant to be triggered directly.
|
|
17
|
+
|
|
18
|
+
## Core Principles
|
|
19
|
+
1. **Extreme Whitespace**: Margins and padding should be double what you initially think is appropriate.
|
|
20
|
+
2. **Strict Typography**: Rely on font weights and sizes to establish hierarchy, not colors or boxes.
|
|
21
|
+
3. **Absence of Decor**: No borders, no drop shadows, no background textures.
|
|
22
|
+
|
|
23
|
+
## Visual DNA
|
|
24
|
+
- **Colors**: Best paired with **Minimalist Slate** or **Modern Editorial** palettes. Backgrounds must be absolute (pure or off-white/black).
|
|
25
|
+
- **Typography**: Sans-serif, geometric. (e.g., `Inter`, `Helvetica Neue`, `SF Pro`). Use extreme contrast in weights (Thin vs Black).
|
|
26
|
+
- **Spacing**: Use a generous baseline grid (e.g., multiples of 8px, heavily favoring 48px to 120px padding).
|
|
27
|
+
|
|
28
|
+
## Web Implementation
|
|
29
|
+
- Use Flexbox/Grid with large `gap` properties.
|
|
30
|
+
- **CSS Example**:
|
|
31
|
+
```css
|
|
32
|
+
.minimal-container {
|
|
33
|
+
max-width: 800px;
|
|
34
|
+
margin: 0 auto;
|
|
35
|
+
padding: 120px 24px;
|
|
36
|
+
background-color: var(--bg-primary);
|
|
37
|
+
}
|
|
38
|
+
.minimal-title {
|
|
39
|
+
font-size: 3rem;
|
|
40
|
+
font-weight: 300;
|
|
41
|
+
letter-spacing: -0.02em;
|
|
42
|
+
margin-bottom: 48px;
|
|
43
|
+
}
|
|
44
|
+
.minimal-btn {
|
|
45
|
+
background: transparent;
|
|
46
|
+
border: 1px solid var(--text-primary);
|
|
47
|
+
padding: 16px 32px;
|
|
48
|
+
text-transform: uppercase;
|
|
49
|
+
letter-spacing: 0.1em;
|
|
50
|
+
transition: all 0.3s ease;
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## App Implementation
|
|
55
|
+
|
|
56
|
+
### SwiftUI
|
|
57
|
+
```swift
|
|
58
|
+
struct MinimalView: View {
|
|
59
|
+
var body: some View {
|
|
60
|
+
ScrollView {
|
|
61
|
+
VStack(alignment: .leading, spacing: 48) {
|
|
62
|
+
Text("Headline")
|
|
63
|
+
.font(.system(size: 34, weight: .light))
|
|
64
|
+
.tracking(-0.5)
|
|
65
|
+
|
|
66
|
+
Text("Body text sits quietly with generous space around it. Let the content breathe.")
|
|
67
|
+
.font(.system(size: 17, weight: .regular))
|
|
68
|
+
.foregroundColor(.secondary)
|
|
69
|
+
.lineSpacing(6)
|
|
70
|
+
|
|
71
|
+
// Minimal button — just a thin border, no fill
|
|
72
|
+
Button(action: {}) {
|
|
73
|
+
Text("Continue")
|
|
74
|
+
.font(.system(size: 14, weight: .medium))
|
|
75
|
+
.tracking(1.5)
|
|
76
|
+
.textCase(.uppercase)
|
|
77
|
+
.padding(.horizontal, 32)
|
|
78
|
+
.padding(.vertical, 16)
|
|
79
|
+
.overlay(
|
|
80
|
+
RoundedRectangle(cornerRadius: 0)
|
|
81
|
+
.stroke(Color.primary, lineWidth: 1)
|
|
82
|
+
)
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
.padding(.horizontal, 24)
|
|
86
|
+
.padding(.vertical, 80)
|
|
87
|
+
}
|
|
88
|
+
.background(Color(.systemBackground))
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
- Use `VStack(spacing: 40...64)` for generous separation between elements.
|
|
93
|
+
- Never use `.shadow()` or `Card`-like containers. Let whitespace define grouping.
|
|
94
|
+
- Use `Divider()` sparingly — only when two adjacent sections need separation.
|
|
95
|
+
|
|
96
|
+
### Flutter
|
|
97
|
+
```dart
|
|
98
|
+
class MinimalScreen extends StatelessWidget {
|
|
99
|
+
@override
|
|
100
|
+
Widget build(BuildContext context) {
|
|
101
|
+
return Scaffold(
|
|
102
|
+
backgroundColor: Colors.white,
|
|
103
|
+
body: SingleChildScrollView(
|
|
104
|
+
padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 80),
|
|
105
|
+
child: Column(
|
|
106
|
+
crossAxisAlignment: CrossAxisAlignment.start,
|
|
107
|
+
children: [
|
|
108
|
+
Text(
|
|
109
|
+
'Headline',
|
|
110
|
+
style: TextStyle(
|
|
111
|
+
fontSize: 34,
|
|
112
|
+
fontWeight: FontWeight.w300,
|
|
113
|
+
letterSpacing: -0.5,
|
|
114
|
+
color: Colors.black87,
|
|
115
|
+
),
|
|
116
|
+
),
|
|
117
|
+
const SizedBox(height: 48),
|
|
118
|
+
Text(
|
|
119
|
+
'Body text sits quietly with generous space around it.',
|
|
120
|
+
style: TextStyle(
|
|
121
|
+
fontSize: 17,
|
|
122
|
+
fontWeight: FontWeight.w400,
|
|
123
|
+
height: 1.6,
|
|
124
|
+
color: Colors.black54,
|
|
125
|
+
),
|
|
126
|
+
),
|
|
127
|
+
const SizedBox(height: 48),
|
|
128
|
+
// Minimal button — outlined, no elevation
|
|
129
|
+
OutlinedButton(
|
|
130
|
+
onPressed: () {},
|
|
131
|
+
style: OutlinedButton.styleFrom(
|
|
132
|
+
side: const BorderSide(color: Colors.black87, width: 1),
|
|
133
|
+
shape: const RoundedRectangleBorder(borderRadius: BorderRadius.zero),
|
|
134
|
+
padding: const EdgeInsets.symmetric(horizontal: 32, vertical: 16),
|
|
135
|
+
),
|
|
136
|
+
child: Text(
|
|
137
|
+
'CONTINUE',
|
|
138
|
+
style: TextStyle(
|
|
139
|
+
fontSize: 14,
|
|
140
|
+
fontWeight: FontWeight.w500,
|
|
141
|
+
letterSpacing: 1.5,
|
|
142
|
+
color: Colors.black87,
|
|
143
|
+
),
|
|
144
|
+
),
|
|
145
|
+
),
|
|
146
|
+
],
|
|
147
|
+
),
|
|
148
|
+
),
|
|
149
|
+
);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
```
|
|
153
|
+
- Set `elevation: 0` on **all** Material widgets (`AppBar`, `Card`, `FloatingActionButton`).
|
|
154
|
+
- Use `SizedBox(height: 48)` or larger for vertical spacing. Avoid tight layouts.
|
|
155
|
+
- Override `ThemeData` to remove all default shadows: `cardTheme: CardTheme(elevation: 0)`.
|
|
156
|
+
|
|
157
|
+
### React Native
|
|
158
|
+
```jsx
|
|
159
|
+
const MinimalScreen = () => (
|
|
160
|
+
<ScrollView
|
|
161
|
+
style={{ flex: 1, backgroundColor: '#FFFFFF' }}
|
|
162
|
+
contentContainerStyle={{ paddingHorizontal: 24, paddingVertical: 80 }}
|
|
163
|
+
>
|
|
164
|
+
<Text style={{
|
|
165
|
+
fontSize: 34,
|
|
166
|
+
fontWeight: '300',
|
|
167
|
+
letterSpacing: -0.5,
|
|
168
|
+
color: '#1A1A1A',
|
|
169
|
+
marginBottom: 48,
|
|
170
|
+
}}>
|
|
171
|
+
Headline
|
|
172
|
+
</Text>
|
|
173
|
+
|
|
174
|
+
<Text style={{
|
|
175
|
+
fontSize: 17,
|
|
176
|
+
fontWeight: '400',
|
|
177
|
+
lineHeight: 28,
|
|
178
|
+
color: '#666666',
|
|
179
|
+
marginBottom: 48,
|
|
180
|
+
}}>
|
|
181
|
+
Body text sits quietly with generous space around it.
|
|
182
|
+
</Text>
|
|
183
|
+
|
|
184
|
+
<TouchableOpacity
|
|
185
|
+
style={{
|
|
186
|
+
borderWidth: 1,
|
|
187
|
+
borderColor: '#1A1A1A',
|
|
188
|
+
paddingHorizontal: 32,
|
|
189
|
+
paddingVertical: 16,
|
|
190
|
+
alignSelf: 'flex-start',
|
|
191
|
+
}}
|
|
192
|
+
activeOpacity={0.6}
|
|
193
|
+
>
|
|
194
|
+
<Text style={{
|
|
195
|
+
fontSize: 14,
|
|
196
|
+
fontWeight: '500',
|
|
197
|
+
letterSpacing: 1.5,
|
|
198
|
+
color: '#1A1A1A',
|
|
199
|
+
textTransform: 'uppercase',
|
|
200
|
+
}}>
|
|
201
|
+
Continue
|
|
202
|
+
</Text>
|
|
203
|
+
</TouchableOpacity>
|
|
204
|
+
</ScrollView>
|
|
205
|
+
);
|
|
206
|
+
```
|
|
207
|
+
- Use `paddingVertical: 80` for screen-level spacing. Double what feels natural.
|
|
208
|
+
- Avoid all `elevation` and `shadowColor` properties. No `borderRadius` on cards.
|
|
209
|
+
- If using a UI library (e.g., React Native Paper), strip default elevations.
|
|
210
|
+
|
|
211
|
+
### Jetpack Compose
|
|
212
|
+
```kotlin
|
|
213
|
+
@Composable
|
|
214
|
+
fun MinimalScreen() {
|
|
215
|
+
Column(
|
|
216
|
+
modifier = Modifier
|
|
217
|
+
.fillMaxSize()
|
|
218
|
+
.background(Color.White)
|
|
219
|
+
.verticalScroll(rememberScrollState())
|
|
220
|
+
.padding(horizontal = 24.dp, vertical = 80.dp)
|
|
221
|
+
) {
|
|
222
|
+
Text(
|
|
223
|
+
text = "Headline",
|
|
224
|
+
fontSize = 34.sp,
|
|
225
|
+
fontWeight = FontWeight.Light,
|
|
226
|
+
letterSpacing = (-0.5).sp,
|
|
227
|
+
color = Color(0xFF1A1A1A),
|
|
228
|
+
)
|
|
229
|
+
Spacer(modifier = Modifier.height(48.dp))
|
|
230
|
+
Text(
|
|
231
|
+
text = "Body text sits quietly with generous space around it.",
|
|
232
|
+
fontSize = 17.sp,
|
|
233
|
+
fontWeight = FontWeight.Normal,
|
|
234
|
+
lineHeight = 28.sp,
|
|
235
|
+
color = Color(0xFF666666),
|
|
236
|
+
)
|
|
237
|
+
Spacer(modifier = Modifier.height(48.dp))
|
|
238
|
+
// Minimal outlined button
|
|
239
|
+
OutlinedButton(
|
|
240
|
+
onClick = {},
|
|
241
|
+
shape = RectangleShape,
|
|
242
|
+
border = BorderStroke(1.dp, Color(0xFF1A1A1A)),
|
|
243
|
+
colors = ButtonDefaults.outlinedButtonColors(containerColor = Color.Transparent),
|
|
244
|
+
contentPadding = PaddingValues(horizontal = 32.dp, vertical = 16.dp),
|
|
245
|
+
) {
|
|
246
|
+
Text(
|
|
247
|
+
text = "CONTINUE",
|
|
248
|
+
fontSize = 14.sp,
|
|
249
|
+
fontWeight = FontWeight.Medium,
|
|
250
|
+
letterSpacing = 1.5.sp,
|
|
251
|
+
color = Color(0xFF1A1A1A),
|
|
252
|
+
)
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
```
|
|
257
|
+
- Set `elevation = 0.dp` on all `Card`, `TopAppBar`, and `FloatingActionButton` composables.
|
|
258
|
+
- Use `Spacer(modifier = Modifier.height(48.dp))` consistently for generous vertical gaps.
|
|
259
|
+
- Override `MaterialTheme` shape and shadow defaults to remove all depth cues.
|
|
260
|
+
|
|
261
|
+
## Do's and Don'ts
|
|
262
|
+
- **DO**: Focus intensely on alignment. A 1px misalignment breaks the illusion of minimalism.
|
|
263
|
+
- **DON'T**: Use "card" wrappers for content. Let the whitespace define the grouping.
|
|
264
|
+
|
|
265
|
+
## Limitations
|
|
266
|
+
- This is a styling reference and does not replace environment-specific validation, accessibility testing, or expert review.
|
|
267
|
+
- Ensure appropriate contrast ratios and responsive behaviors are verified separately.
|