opencode-skills-collection 4.0.68 → 4.0.70
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 +304 -1
- package/bundled-skills/access-review/SKILL.md +394 -0
- package/bundled-skills/access-review/references/details.md +121 -0
- package/bundled-skills/agent-evals/SKILL.md +420 -0
- package/bundled-skills/agent-observability/SKILL.md +346 -0
- package/bundled-skills/agent-observability/references/details.md +786 -0
- package/bundled-skills/ai-agent-security/SKILL.md +393 -0
- package/bundled-skills/ai-agent-security/references/details.md +912 -0
- package/bundled-skills/ai-coding-agent-guardrails/SKILL.md +442 -0
- package/bundled-skills/ai-coding-agent-guardrails/references/details.md +753 -0
- package/bundled-skills/ai-inference-service-mesh/SKILL.md +449 -0
- package/bundled-skills/ai-pipeline-orchestration/SKILL.md +287 -0
- package/bundled-skills/ai-red-teaming/SKILL.md +409 -0
- package/bundled-skills/ai-security-hardening/SKILL.md +343 -0
- package/bundled-skills/ai-sre-incident-response/SKILL.md +336 -0
- package/bundled-skills/alerting-oncall/SKILL.md +458 -0
- package/bundled-skills/alerting-oncall/references/details.md +84 -0
- package/bundled-skills/api-integration-architect/SKILL.md +241 -0
- package/bundled-skills/apify-generate-output-schema/SKILL.md +438 -0
- package/bundled-skills/apify-integration-development/SKILL.md +168 -0
- package/bundled-skills/apify-integration-development/references/ai-framework-package.md +158 -0
- package/bundled-skills/apify-integration-development/references/ai-harness-plugin.md +192 -0
- package/bundled-skills/apify-integration-development/references/sdk-integration.md +236 -0
- package/bundled-skills/apify-integration-development/references/workflow-automation.md +163 -0
- package/bundled-skills/apk-redteam-pipeline/SKILL.md +446 -0
- package/bundled-skills/architecture-review/README.md +42 -0
- package/bundled-skills/architecture-review/SKILL.md +77 -0
- package/bundled-skills/architecture-review/examples.md +11 -0
- package/bundled-skills/architecture-review/reference/best-practices.md +7 -0
- package/bundled-skills/architecture-review/reference/capabilities.md +20 -0
- package/bundled-skills/architecture-review/reference/fallbacks.md +11 -0
- package/bundled-skills/architecture-review/reference/graph.md +15 -0
- package/bundled-skills/architecture-review/reference/mcp.md +14 -0
- package/bundled-skills/architecture-review/reference/workflow.md +15 -0
- package/bundled-skills/architecture-review/templates/architecture-review.md +21 -0
- package/bundled-skills/argocd-gitops/SKILL.md +469 -0
- package/bundled-skills/arm-templates/SKILL.md +438 -0
- package/bundled-skills/arm-templates/references/details.md +64 -0
- package/bundled-skills/asset-inventory/SKILL.md +412 -0
- package/bundled-skills/asset-inventory/references/details.md +127 -0
- package/bundled-skills/audit-logging/SKILL.md +476 -0
- package/bundled-skills/aws-cloudtrail/SKILL.md +486 -0
- package/bundled-skills/aws-cost-optimization/SKILL.md +331 -0
- package/bundled-skills/aws-ec2/SKILL.md +426 -0
- package/bundled-skills/aws-ecs-fargate/SKILL.md +388 -0
- package/bundled-skills/aws-iam/SKILL.md +463 -0
- package/bundled-skills/aws-lambda/SKILL.md +428 -0
- package/bundled-skills/aws-rds/SKILL.md +380 -0
- package/bundled-skills/aws-s3/SKILL.md +434 -0
- package/bundled-skills/aws-secrets-manager/SKILL.md +486 -0
- package/bundled-skills/aws-vpc/SKILL.md +436 -0
- package/bundled-skills/azure-ai-document-intelligence-ts/SKILL.md +1 -1
- package/bundled-skills/azure-aks/SKILL.md +423 -0
- package/bundled-skills/azure-devops/SKILL.md +457 -0
- package/bundled-skills/azure-functions-devsec/SKILL.md +436 -0
- package/bundled-skills/azure-keyvault/SKILL.md +455 -0
- package/bundled-skills/azure-keyvault/references/details.md +83 -0
- package/bundled-skills/azure-monitor-audit/SKILL.md +379 -0
- package/bundled-skills/azure-networking/SKILL.md +448 -0
- package/bundled-skills/azure-networking/references/details.md +135 -0
- package/bundled-skills/azure-sql/SKILL.md +413 -0
- package/bundled-skills/azure-sql/references/details.md +113 -0
- package/bundled-skills/azure-vms/SKILL.md +402 -0
- package/bundled-skills/azure-vms/references/details.md +134 -0
- package/bundled-skills/backup-recovery/SKILL.md +388 -0
- package/bundled-skills/bb-methodology/SKILL.md +451 -0
- package/bundled-skills/bb-methodology/references/details.md +120 -0
- package/bundled-skills/block-storage/SKILL.md +371 -0
- package/bundled-skills/blue-green-deploy/SKILL.md +453 -0
- package/bundled-skills/blue-green-deploy/references/details.md +90 -0
- package/bundled-skills/bug-bounty/SKILL.md +447 -0
- package/bundled-skills/bug-bounty/references/details.md +1316 -0
- package/bundled-skills/bugcrowd-reporting/SKILL.md +351 -0
- package/bundled-skills/business-continuity/SKILL.md +463 -0
- package/bundled-skills/career-ops/SKILL.md +186 -0
- package/bundled-skills/cdn-setup/SKILL.md +374 -0
- package/bundled-skills/change-management/SKILL.md +438 -0
- package/bundled-skills/change-management/references/details.md +105 -0
- package/bundled-skills/circleci/SKILL.md +475 -0
- package/bundled-skills/cis-benchmarks/SKILL.md +150 -0
- package/bundled-skills/cloudflare-pages/SKILL.md +318 -0
- package/bundled-skills/cloudflare-r2/SKILL.md +353 -0
- package/bundled-skills/cloudflare-workers/SKILL.md +415 -0
- package/bundled-skills/cloudflare-zero-trust/SKILL.md +361 -0
- package/bundled-skills/cloudformation/SKILL.md +461 -0
- package/bundled-skills/code-review-sensei/SKILL.md +177 -0
- package/bundled-skills/codebase-onboarding/README.md +42 -0
- package/bundled-skills/codebase-onboarding/SKILL.md +77 -0
- package/bundled-skills/codebase-onboarding/examples.md +11 -0
- package/bundled-skills/codebase-onboarding/reference/best-practices.md +7 -0
- package/bundled-skills/codebase-onboarding/reference/capabilities.md +20 -0
- package/bundled-skills/codebase-onboarding/reference/fallbacks.md +11 -0
- package/bundled-skills/codebase-onboarding/reference/graph.md +15 -0
- package/bundled-skills/codebase-onboarding/reference/mcp.md +14 -0
- package/bundled-skills/codebase-onboarding/reference/workflow.md +15 -0
- package/bundled-skills/codebase-onboarding/templates/repository-onboarding.md +21 -0
- package/bundled-skills/connection-auth-rules/SKILL.md +199 -0
- package/bundled-skills/connection-auth-rules/fetch_schema.py +320 -0
- package/bundled-skills/constraint-driven-development/SKILL.md +335 -0
- package/bundled-skills/constraint-driven-development/references/floor-guard.md +99 -0
- package/bundled-skills/container-hardening/SKILL.md +126 -0
- package/bundled-skills/container-registries/SKILL.md +435 -0
- package/bundled-skills/container-scanning/SKILL.md +416 -0
- package/bundled-skills/convex-backend/SKILL.md +338 -0
- package/bundled-skills/dast-scanning/SKILL.md +437 -0
- package/bundled-skills/database-backups/SKILL.md +425 -0
- package/bundled-skills/datadog/SKILL.md +487 -0
- package/bundled-skills/dependency-analysis/README.md +42 -0
- package/bundled-skills/dependency-analysis/SKILL.md +76 -0
- package/bundled-skills/dependency-analysis/examples.md +11 -0
- package/bundled-skills/dependency-analysis/reference/best-practices.md +7 -0
- package/bundled-skills/dependency-analysis/reference/capabilities.md +20 -0
- package/bundled-skills/dependency-analysis/reference/fallbacks.md +11 -0
- package/bundled-skills/dependency-analysis/reference/graph.md +15 -0
- package/bundled-skills/dependency-analysis/reference/mcp.md +14 -0
- package/bundled-skills/dependency-analysis/reference/workflow.md +15 -0
- package/bundled-skills/dependency-analysis/templates/dependency-review.md +21 -0
- package/bundled-skills/dependency-scanning/SKILL.md +457 -0
- package/bundled-skills/devcontainers-nix/SKILL.md +416 -0
- package/bundled-skills/devops-pipeline-builder/SKILL.md +200 -0
- package/bundled-skills/disaster-recovery/SKILL.md +374 -0
- package/bundled-skills/disaster-recovery/references/details.md +219 -0
- package/bundled-skills/dns-management/SKILL.md +375 -0
- package/bundled-skills/docker-compose/SKILL.md +482 -0
- package/bundled-skills/docker-management/SKILL.md +426 -0
- package/bundled-skills/eas-app-stores/SKILL.md +197 -0
- package/bundled-skills/eas-app-stores/agents/openai.yaml +4 -0
- package/bundled-skills/eas-app-stores/references/app-store-metadata.md +497 -0
- package/bundled-skills/eas-app-stores/references/ios-app-store.md +376 -0
- package/bundled-skills/eas-app-stores/references/native-ios.md +167 -0
- package/bundled-skills/eas-app-stores/references/play-store.md +244 -0
- package/bundled-skills/eas-app-stores/references/testflight.md +62 -0
- package/bundled-skills/eas-app-stores/references/workflows.md +120 -0
- package/bundled-skills/eas-hosting/SKILL.md +448 -0
- package/bundled-skills/eas-hosting/agents/openai.yaml +4 -0
- package/bundled-skills/eas-observe/SKILL.md +75 -0
- package/bundled-skills/eas-observe/agents/openai.yaml +4 -0
- package/bundled-skills/eas-observe/references/metrics.md +98 -0
- package/bundled-skills/eas-observe/references/queries.md +403 -0
- package/bundled-skills/eas-observe/references/setup.md +476 -0
- package/bundled-skills/eas-observe/references/third-party.md +136 -0
- package/bundled-skills/eas-simulator/SKILL.md +251 -0
- package/bundled-skills/eas-simulator/agents/openai.yaml +4 -0
- package/bundled-skills/eas-simulator/references/controllers.md +135 -0
- package/bundled-skills/eas-simulator/references/run-your-app.md +240 -0
- package/bundled-skills/eas-simulator/references/troubleshooting.md +47 -0
- package/bundled-skills/eas-workflows/SKILL.md +119 -0
- package/bundled-skills/eas-workflows/agents/openai.yaml +4 -0
- package/bundled-skills/eas-workflows/scripts/fetch.js +109 -0
- package/bundled-skills/ebpf-observability/SKILL.md +436 -0
- package/bundled-skills/ebpf-observability/references/details.md +542 -0
- package/bundled-skills/elk-stack/SKILL.md +487 -0
- package/bundled-skills/enterprise-vpn-attack/SKILL.md +395 -0
- package/bundled-skills/evidence-hygiene/SKILL.md +404 -0
- package/bundled-skills/expo-animation/LICENSE +21 -0
- package/bundled-skills/expo-animation/RECIPES.md +385 -0
- package/bundled-skills/expo-animation/SKILL.md +295 -0
- package/bundled-skills/expo-animation/agents/openai.yaml +4 -0
- package/bundled-skills/fact-check-x-unified/SKILL.md +178 -0
- package/bundled-skills/fact-check-x-unified/agents/openai.yaml +4 -0
- package/bundled-skills/fact-check-x-unified/references/acceptance-criteria.md +44 -0
- package/bundled-skills/fact-check-x-unified/references/contracts.md +39 -0
- package/bundled-skills/fact-check-x-unified/scripts/common.py +31 -0
- package/bundled-skills/fact-check-x-unified/scripts/fact_check_x.py +1832 -0
- package/bundled-skills/fact-check-x-unified/scripts/trusted_search_config.py +324 -0
- package/bundled-skills/fact-check-x-unified/tests/anchor_downgrade_test.py +90 -0
- package/bundled-skills/fact-check-x-unified/tests/multi_platform_test.py +369 -0
- package/bundled-skills/fact-check-x-unified/tests/smoke_test.py +740 -0
- package/bundled-skills/fact-check-x-unified/tests/stage_checkpoint_test.py +103 -0
- package/bundled-skills/fact-check-x-unified/tests/trusted_search_config_test.py +156 -0
- package/bundled-skills/feature-flags/SKILL.md +426 -0
- package/bundled-skills/feature-flags/references/details.md +86 -0
- package/bundled-skills/fedramp-compliance/SKILL.md +453 -0
- package/bundled-skills/firebase-app-platform/SKILL.md +381 -0
- package/bundled-skills/firewall-config/SKILL.md +479 -0
- package/bundled-skills/gcp-audit-logs/SKILL.md +452 -0
- package/bundled-skills/gcp-audit-logs/references/details.md +56 -0
- package/bundled-skills/gcp-cloud-functions/SKILL.md +284 -0
- package/bundled-skills/gcp-cloud-sql/SKILL.md +277 -0
- package/bundled-skills/gcp-compute/SKILL.md +319 -0
- package/bundled-skills/gcp-gke/SKILL.md +307 -0
- package/bundled-skills/gcp-networking/SKILL.md +293 -0
- package/bundled-skills/gcp-secret-manager/SKILL.md +421 -0
- package/bundled-skills/gcp-secret-manager/references/details.md +131 -0
- package/bundled-skills/gdpr-compliance/SKILL.md +451 -0
- package/bundled-skills/gdpr-compliance/references/details.md +145 -0
- package/bundled-skills/geo-audit/SKILL.md +368 -0
- package/bundled-skills/geo-brand-mentions/SKILL.md +68 -0
- package/bundled-skills/geo-brand-mentions/references/details.md +471 -0
- package/bundled-skills/geo-citability/SKILL.md +350 -0
- package/bundled-skills/geo-compare/SKILL.md +340 -0
- package/bundled-skills/geo-content/SKILL.md +383 -0
- package/bundled-skills/geo-crawlers/SKILL.md +408 -0
- package/bundled-skills/geo-llmstxt/SKILL.md +464 -0
- package/bundled-skills/geo-platform-optimizer/SKILL.md +314 -0
- package/bundled-skills/geo-proposal/SKILL.md +378 -0
- package/bundled-skills/geo-prospect/SKILL.md +225 -0
- package/bundled-skills/geo-report/SKILL.md +436 -0
- package/bundled-skills/geo-report-pdf/SKILL.md +157 -0
- package/bundled-skills/geo-schema/SKILL.md +408 -0
- package/bundled-skills/geo-technical/SKILL.md +78 -0
- package/bundled-skills/geo-technical/references/details.md +543 -0
- package/bundled-skills/git-workflow/SKILL.md +460 -0
- package/bundled-skills/github-actions/SKILL.md +368 -0
- package/bundled-skills/gitlab-ci/SKILL.md +340 -0
- package/bundled-skills/gpt-taste/SKILL.md +8 -1
- package/bundled-skills/gpu-kubernetes-operations/SKILL.md +468 -0
- package/bundled-skills/gpu-server-management/SKILL.md +236 -0
- package/bundled-skills/hashicorp-vault/SKILL.md +408 -0
- package/bundled-skills/helm-charts/SKILL.md +469 -0
- package/bundled-skills/hf-cli/SKILL.md +263 -0
- package/bundled-skills/hipaa-compliance/SKILL.md +451 -0
- package/bundled-skills/huggingface-community-evals/SKILL.md +228 -0
- package/bundled-skills/huggingface-community-evals/examples/.env.example +3 -0
- package/bundled-skills/huggingface-community-evals/examples/USAGE_EXAMPLES.md +101 -0
- package/bundled-skills/huggingface-community-evals/scripts/inspect_eval_uv.py +104 -0
- package/bundled-skills/huggingface-community-evals/scripts/inspect_vllm_uv.py +306 -0
- package/bundled-skills/huggingface-community-evals/scripts/lighteval_vllm_uv.py +297 -0
- package/bundled-skills/huggingface-datasets/SKILL.md +130 -0
- package/bundled-skills/hunt-aspnet/SKILL.md +321 -0
- package/bundled-skills/hunt-ato/SKILL.md +184 -0
- package/bundled-skills/hunt-auth-bypass/SKILL.md +426 -0
- package/bundled-skills/hunt-auth-bypass/references/details.md +80 -0
- package/bundled-skills/hunt-brute-force/SKILL.md +341 -0
- package/bundled-skills/hunt-business-logic/SKILL.md +281 -0
- package/bundled-skills/hunt-cache-poison/SKILL.md +382 -0
- package/bundled-skills/hunt-captcha-bypass/SKILL.md +136 -0
- package/bundled-skills/hunt-cicd/SKILL.md +311 -0
- package/bundled-skills/hunt-clickjacking/SKILL.md +110 -0
- package/bundled-skills/hunt-cors/SKILL.md +335 -0
- package/bundled-skills/hunt-dom/SKILL.md +323 -0
- package/bundled-skills/hunt-exceptional-conditions/SKILL.md +111 -0
- package/bundled-skills/hunt-file-upload/SKILL.md +202 -0
- package/bundled-skills/hunt-fintech-graphql/SKILL.md +289 -0
- package/bundled-skills/hunt-forgot-password/SKILL.md +114 -0
- package/bundled-skills/hunt-grpc/SKILL.md +317 -0
- package/bundled-skills/hunt-host-header/SKILL.md +309 -0
- package/bundled-skills/hunt-html-injection/SKILL.md +106 -0
- package/bundled-skills/hunt-http-smuggling/SKILL.md +129 -0
- package/bundled-skills/hunt-http-smuggling/references/phase2h-smuggling-cachepoison.md +177 -0
- package/bundled-skills/hunt-idor/SKILL.md +434 -0
- package/bundled-skills/hunt-jwt-crypto/SKILL.md +221 -0
- package/bundled-skills/hunt-k8s/SKILL.md +337 -0
- package/bundled-skills/hunt-laravel/SKILL.md +255 -0
- package/bundled-skills/hunt-ldap/SKILL.md +351 -0
- package/bundled-skills/hunt-lfi/SKILL.md +311 -0
- package/bundled-skills/hunt-llm-ai/SKILL.md +289 -0
- package/bundled-skills/hunt-mfa-bypass/SKILL.md +177 -0
- package/bundled-skills/hunt-misc/SKILL.md +378 -0
- package/bundled-skills/hunt-nextjs/SKILL.md +299 -0
- package/bundled-skills/hunt-nodejs/SKILL.md +263 -0
- package/bundled-skills/hunt-nosqli/SKILL.md +210 -0
- package/bundled-skills/hunt-ntlm-info/SKILL.md +314 -0
- package/bundled-skills/hunt-oauth/SKILL.md +459 -0
- package/bundled-skills/hunt-open-redirect/SKILL.md +223 -0
- package/bundled-skills/hunt-race-condition/SKILL.md +381 -0
- package/bundled-skills/hunt-race-condition/references/details.md +159 -0
- package/bundled-skills/hunt-rag-vector/SKILL.md +212 -0
- package/bundled-skills/hunt-rce/SKILL.md +444 -0
- package/bundled-skills/hunt-rce/references/details.md +110 -0
- package/bundled-skills/hunt-saml/SKILL.md +156 -0
- package/bundled-skills/hunt-session/SKILL.md +342 -0
- package/bundled-skills/hunt-shadow-api/SKILL.md +198 -0
- package/bundled-skills/hunt-source-leak/SKILL.md +345 -0
- package/bundled-skills/hunt-spa-api/SKILL.md +163 -0
- package/bundled-skills/hunt-springboot/SKILL.md +285 -0
- package/bundled-skills/hunt-sqli/SKILL.md +466 -0
- package/bundled-skills/hunt-ssrf/SKILL.md +396 -0
- package/bundled-skills/hunt-ssrf/references/details.md +179 -0
- package/bundled-skills/hunt-ssti/SKILL.md +163 -0
- package/bundled-skills/hunt-subdomain/SKILL.md +379 -0
- package/bundled-skills/hunt-tls-network/SKILL.md +399 -0
- package/bundled-skills/hunt-xxe/SKILL.md +466 -0
- package/bundled-skills/i-have-adhd/SKILL.md +170 -0
- package/bundled-skills/identity-access-management/SKILL.md +382 -0
- package/bundled-skills/identity-access-management/references/details.md +524 -0
- package/bundled-skills/incident-management/SKILL.md +484 -0
- package/bundled-skills/incident-response/SKILL.md +448 -0
- package/bundled-skills/incident-response/references/details.md +113 -0
- package/bundled-skills/interview-me/SKILL.md +248 -0
- package/bundled-skills/iso27001-compliance/SKILL.md +460 -0
- package/bundled-skills/jenkins/SKILL.md +462 -0
- package/bundled-skills/jev-social/SKILL.md +182 -0
- package/bundled-skills/jev-use/SKILL.md +158 -0
- package/bundled-skills/kubernetes-hardening/SKILL.md +154 -0
- package/bundled-skills/kubernetes-ops/SKILL.md +449 -0
- package/bundled-skills/kubernetes-ops/references/details.md +108 -0
- package/bundled-skills/kustomize/SKILL.md +478 -0
- package/bundled-skills/linux-administration/SKILL.md +367 -0
- package/bundled-skills/linux-hardening/SKILL.md +154 -0
- package/bundled-skills/llm-app-security/SKILL.md +389 -0
- package/bundled-skills/llm-app-security/references/details.md +674 -0
- package/bundled-skills/llm-caching/SKILL.md +334 -0
- package/bundled-skills/llm-cost-optimization/SKILL.md +311 -0
- package/bundled-skills/llm-fine-tuning/SKILL.md +329 -0
- package/bundled-skills/llm-gateway/SKILL.md +282 -0
- package/bundled-skills/llm-inference-scaling/SKILL.md +286 -0
- package/bundled-skills/llmops-platform-engineering/SKILL.md +472 -0
- package/bundled-skills/load-balancing/SKILL.md +403 -0
- package/bundled-skills/loki-logging/SKILL.md +479 -0
- package/bundled-skills/longbridge-derivatives/SKILL.md +117 -0
- package/bundled-skills/longbridge-derivatives/references/option.md +36 -0
- package/bundled-skills/longbridge-derivatives/references/options-advanced.md +101 -0
- package/bundled-skills/longbridge-derivatives/references/options-pnl.md +74 -0
- package/bundled-skills/longbridge-derivatives/references/options-strategy.md +82 -0
- package/bundled-skills/longbridge-derivatives/references/options-volatility.md +70 -0
- package/bundled-skills/longbridge-derivatives/references/warrant.md +12 -0
- package/bundled-skills/longbridge-quant/SKILL.md +151 -0
- package/bundled-skills/longbridge-quant/references/correlation.md +51 -0
- package/bundled-skills/longbridge-quant/references/execution-model.md +68 -0
- package/bundled-skills/longbridge-quant/references/factor-research.md +95 -0
- package/bundled-skills/longbridge-quant/references/factor-screen.md +101 -0
- package/bundled-skills/longbridge-quant/references/hedging.md +136 -0
- package/bundled-skills/longbridge-quant/references/ml-strategy.md +77 -0
- package/bundled-skills/longbridge-quant/references/multifactor.md +68 -0
- package/bundled-skills/longbridge-quant/references/pairs-trading.md +61 -0
- package/bundled-skills/longbridge-quant/references/quant-cli.md +133 -0
- package/bundled-skills/longbridge-quant/references/quant-stats.md +150 -0
- package/bundled-skills/longbridge-quant/references/seasonality.md +50 -0
- package/bundled-skills/longbridge-quant/references/strategy-optimizer.md +68 -0
- package/bundled-skills/longbridge-quant/references/volatility-strategy.md +52 -0
- package/bundled-skills/longbridge-research/SKILL.md +187 -0
- package/bundled-skills/longbridge-research/references/company-profile.md +96 -0
- package/bundled-skills/longbridge-research/references/company-tearsheet.md +82 -0
- package/bundled-skills/longbridge-research/references/competitive-analysis.md +81 -0
- package/bundled-skills/longbridge-research/references/consensus.md +92 -0
- package/bundled-skills/longbridge-research/references/coverage-initiation.md +76 -0
- package/bundled-skills/longbridge-research/references/defi-yield.md +60 -0
- package/bundled-skills/longbridge-research/references/finance-calendar.md +165 -0
- package/bundled-skills/longbridge-research/references/financial-planning.md +77 -0
- package/bundled-skills/longbridge-research/references/forecast-eps.md +39 -0
- package/bundled-skills/longbridge-research/references/fund-holder.md +44 -0
- package/bundled-skills/longbridge-research/references/hkipo-analysis.md +101 -0
- package/bundled-skills/longbridge-research/references/industry-peers.md +46 -0
- package/bundled-skills/longbridge-research/references/industry-rank.md +62 -0
- package/bundled-skills/longbridge-research/references/insider-trades.md +48 -0
- package/bundled-skills/longbridge-research/references/institution-rating.md +62 -0
- package/bundled-skills/longbridge-research/references/investment-ideas.md +69 -0
- package/bundled-skills/longbridge-research/references/investment-proposal.md +95 -0
- package/bundled-skills/longbridge-research/references/investors.md +87 -0
- package/bundled-skills/longbridge-research/references/onchain.md +70 -0
- package/bundled-skills/longbridge-research/references/post-investment.md +76 -0
- package/bundled-skills/longbridge-research/references/shareholder.md +72 -0
- package/bundled-skills/longbridge-research/references/short-positions.md +50 -0
- package/bundled-skills/longbridge-research/references/short-trades.md +50 -0
- package/bundled-skills/longbridge-research/references/stock-research.md +61 -0
- package/bundled-skills/longbridge-research/references/thesis-tracker.md +64 -0
- package/bundled-skills/m365-entra-attack/SKILL.md +423 -0
- package/bundled-skills/mac-mini-llm-lab/SKILL.md +350 -0
- package/bundled-skills/makepad-2-0-animation/SKILL.md +318 -0
- package/bundled-skills/makepad-2-0-animation/references/animator-reference.md +433 -0
- package/bundled-skills/makepad-2-0-dsl/SKILL.md +492 -0
- package/bundled-skills/makepad-2-0-dsl/references/dsl-syntax-reference.md +511 -0
- package/bundled-skills/makepad-2-0-dsl/references/extended-guide.md +56 -0
- package/bundled-skills/makepad-2-0-dsl/references/property-system.md +757 -0
- package/bundled-skills/makepad-2-0-events/SKILL.md +497 -0
- package/bundled-skills/makepad-2-0-events/references/event-patterns.md +802 -0
- package/bundled-skills/makepad-2-0-events/references/extended-guide.md +590 -0
- package/bundled-skills/makepad-2-0-layout/SKILL.md +499 -0
- package/bundled-skills/makepad-2-0-layout/references/extended-guide.md +243 -0
- package/bundled-skills/makepad-2-0-layout/references/layout-patterns.md +881 -0
- package/bundled-skills/makepad-2-0-widgets/SKILL.md +261 -0
- package/bundled-skills/makepad-2-0-widgets/references/widget-advanced.md +648 -0
- package/bundled-skills/makepad-2-0-widgets/references/widget-catalog.md +547 -0
- package/bundled-skills/mcp-server-security/SKILL.md +356 -0
- package/bundled-skills/mcp-server-security/references/details.md +745 -0
- package/bundled-skills/mdm-device-management/SKILL.md +404 -0
- package/bundled-skills/mdm-device-management/references/details.md +410 -0
- package/bundled-skills/meeting-distiller-pro/SKILL.md +120 -0
- package/bundled-skills/meme-coin-audit/SKILL.md +402 -0
- package/bundled-skills/mid-engagement-ir-detection/SKILL.md +377 -0
- package/bundled-skills/model-registry-governance/SKILL.md +452 -0
- package/bundled-skills/model-serving-kubernetes/SKILL.md +339 -0
- package/bundled-skills/model-supply-chain-security/SKILL.md +427 -0
- package/bundled-skills/mongodb/SKILL.md +436 -0
- package/bundled-skills/monte-carlo-analyze-root-cause/SKILL.md +12 -1
- package/bundled-skills/monte-carlo-asset-health/SKILL.md +12 -1
- package/bundled-skills/monte-carlo-context-detection/SKILL.md +170 -0
- package/bundled-skills/monte-carlo-context-detection/references/signal-definitions.md +46 -0
- package/bundled-skills/multi-tenant-llm-hosting/SKILL.md +435 -0
- package/bundled-skills/multi-tenant-llm-hosting/references/details.md +211 -0
- package/bundled-skills/mysql/SKILL.md +390 -0
- package/bundled-skills/new-relic/SKILL.md +472 -0
- package/bundled-skills/nfs-storage/SKILL.md +356 -0
- package/bundled-skills/object-storage/SKILL.md +378 -0
- package/bundled-skills/offensive-osint/SKILL.md +443 -0
- package/bundled-skills/okta-attack/SKILL.md +436 -0
- package/bundled-skills/ollama-stack/SKILL.md +379 -0
- package/bundled-skills/openclaw-deployment-hardening/SKILL.md +135 -0
- package/bundled-skills/openclaw-local-mac-mini/SKILL.md +426 -0
- package/bundled-skills/openclaw-local-mac-mini/references/details.md +221 -0
- package/bundled-skills/openclaw-security-hardening/SKILL.md +135 -0
- package/bundled-skills/openshift/SKILL.md +485 -0
- package/bundled-skills/opentelemetry/SKILL.md +438 -0
- package/bundled-skills/opentelemetry/references/details.md +78 -0
- package/bundled-skills/opentofu-migration/SKILL.md +349 -0
- package/bundled-skills/osint-methodology/SKILL.md +460 -0
- package/bundled-skills/osint-methodology/references/details.md +1350 -0
- package/bundled-skills/pci-dss-compliance/SKILL.md +446 -0
- package/bundled-skills/penetration-testing/SKILL.md +152 -0
- package/bundled-skills/performance-tuning/SKILL.md +381 -0
- package/bundled-skills/planetscale/SKILL.md +297 -0
- package/bundled-skills/platform-engineering/SKILL.md +348 -0
- package/bundled-skills/platform-engineering/references/details.md +944 -0
- package/bundled-skills/podman/SKILL.md +405 -0
- package/bundled-skills/policy-as-code/SKILL.md +434 -0
- package/bundled-skills/policy-as-code/references/details.md +204 -0
- package/bundled-skills/postgresql-devsec/SKILL.md +378 -0
- package/bundled-skills/prometheus-grafana/SKILL.md +469 -0
- package/bundled-skills/prompt-injection-defense/SKILL.md +483 -0
- package/bundled-skills/rag-infrastructure/SKILL.md +269 -0
- package/bundled-skills/rag-observability-evals/SKILL.md +444 -0
- package/bundled-skills/rag-observability-evals/references/details.md +92 -0
- package/bundled-skills/recon-scope-triage/SKILL.md +128 -0
- package/bundled-skills/redis/SKILL.md +421 -0
- package/bundled-skills/redteam-report-template/SKILL.md +370 -0
- package/bundled-skills/remotion-captions/SKILL.md +57 -0
- package/bundled-skills/remotion-captions/agents/openai.yaml +7 -0
- package/bundled-skills/remotion-captions/assets/remotion-icon.svg +4 -0
- package/bundled-skills/remotion-captions/display-captions.md +190 -0
- package/bundled-skills/remotion-captions/import-srt-captions.md +73 -0
- package/bundled-skills/remotion-captions/transcribe-captions.md +70 -0
- package/bundled-skills/remotion-create/SKILL.md +106 -0
- package/bundled-skills/remotion-create/agents/openai.yaml +7 -0
- package/bundled-skills/remotion-create/assets/remotion-icon.svg +4 -0
- package/bundled-skills/remotion-create/tailwind.md +11 -0
- package/bundled-skills/remotion-create/video-layout.md +9 -0
- package/bundled-skills/remotion-docs/SKILL.md +67 -0
- package/bundled-skills/remotion-docs/agents/openai.yaml +7 -0
- package/bundled-skills/remotion-docs/assets/remotion-icon.svg +4 -0
- package/bundled-skills/remotion-interactivity/SKILL.md +270 -0
- package/bundled-skills/remotion-interactivity/agents/openai.yaml +7 -0
- package/bundled-skills/remotion-interactivity/assets/remotion-icon.svg +4 -0
- package/bundled-skills/remotion-render/SKILL.md +48 -0
- package/bundled-skills/remotion-render/agents/openai.yaml +7 -0
- package/bundled-skills/remotion-render/assets/remotion-icon.svg +4 -0
- package/bundled-skills/remotion-render/transparent-videos.md +106 -0
- package/bundled-skills/report-writing/SKILL.md +426 -0
- package/bundled-skills/report-writing/references/details.md +187 -0
- package/bundled-skills/reverse-proxy/SKILL.md +420 -0
- package/bundled-skills/runbook-creation/SKILL.md +438 -0
- package/bundled-skills/runbook-creation/references/details.md +71 -0
- package/bundled-skills/saas-pricing-strategist/SKILL.md +169 -0
- package/bundled-skills/saas-security-posture/SKILL.md +415 -0
- package/bundled-skills/sast-scanning/SKILL.md +444 -0
- package/bundled-skills/sbom-supply-chain/SKILL.md +433 -0
- package/bundled-skills/score-eval/SKILL.md +35 -0
- package/bundled-skills/security-arsenal/SKILL.md +446 -0
- package/bundled-skills/security-arsenal/references/details.md +540 -0
- package/bundled-skills/security-automation/SKILL.md +146 -0
- package/bundled-skills/semantic-versioning/SKILL.md +434 -0
- package/bundled-skills/semantic-versioning/references/details.md +83 -0
- package/bundled-skills/service-mesh/SKILL.md +422 -0
- package/bundled-skills/soc2-compliance/SKILL.md +409 -0
- package/bundled-skills/sops-encryption/SKILL.md +124 -0
- package/bundled-skills/sre-dashboards/SKILL.md +143 -0
- package/bundled-skills/ssh-configuration/SKILL.md +324 -0
- package/bundled-skills/ssl-tls-management/SKILL.md +428 -0
- package/bundled-skills/ssl-tls-management/references/details.md +99 -0
- package/bundled-skills/startup-it-troubleshooting/SKILL.md +415 -0
- package/bundled-skills/supply-chain-attack-recon/SKILL.md +453 -0
- package/bundled-skills/supply-chain-attack-recon/references/details.md +258 -0
- package/bundled-skills/systemd-services/SKILL.md +379 -0
- package/bundled-skills/terraform-aws/SKILL.md +125 -0
- package/bundled-skills/terraform-azure/SKILL.md +415 -0
- package/bundled-skills/terraform-azure/references/details.md +231 -0
- package/bundled-skills/terraform-gcp/SKILL.md +369 -0
- package/bundled-skills/threat-modeling/SKILL.md +487 -0
- package/bundled-skills/user-management/SKILL.md +383 -0
- package/bundled-skills/using-agent-skills/SKILL.md +220 -0
- package/bundled-skills/vector-database-ops/SKILL.md +300 -0
- package/bundled-skills/vendor-management/SKILL.md +439 -0
- package/bundled-skills/vendor-management/references/details.md +109 -0
- package/bundled-skills/vercel-deployments/SKILL.md +296 -0
- package/bundled-skills/vllm-server/SKILL.md +236 -0
- package/bundled-skills/vmware-vcenter-attack/SKILL.md +412 -0
- package/bundled-skills/vpn-setup/SKILL.md +452 -0
- package/bundled-skills/vulnerability-scanning/SKILL.md +448 -0
- package/bundled-skills/waf-setup/SKILL.md +354 -0
- package/bundled-skills/waf-setup/references/details.md +211 -0
- package/bundled-skills/web2-recon/SKILL.md +440 -0
- package/bundled-skills/web2-recon/references/details.md +319 -0
- package/bundled-skills/web3-audit/SKILL.md +445 -0
- package/bundled-skills/web3-audit/references/details.md +224 -0
- package/bundled-skills/windows-hardening/SKILL.md +454 -0
- package/bundled-skills/windows-hardening/references/details.md +204 -0
- package/bundled-skills/windows-server/SKILL.md +318 -0
- package/bundled-skills/writing-guidelines/SKILL.md +60 -0
- package/bundled-skills/zero-trust/SKILL.md +461 -0
- package/package.json +1 -1
- package/skills_index.json +7874 -277
|
@@ -0,0 +1,881 @@
|
|
|
1
|
+
# Makepad 2.0 Layout Patterns Reference
|
|
2
|
+
|
|
3
|
+
Complete, working layout examples using Makepad 2.0 Splash syntax. Every example
|
|
4
|
+
starts with `use mod.prelude.widgets.*` and uses correct syntax (no commas, no semicolons,
|
|
5
|
+
colon for property assignment).
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 1. Simple Vertical Stack
|
|
10
|
+
|
|
11
|
+
A basic top-to-bottom layout with spacing between items.
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
use mod.prelude.widgets.*
|
|
15
|
+
|
|
16
|
+
View{
|
|
17
|
+
width: Fill height: Fit
|
|
18
|
+
flow: Down spacing: 8 padding: 16
|
|
19
|
+
|
|
20
|
+
Label{text: "First item" draw_text.color: #fff}
|
|
21
|
+
Label{text: "Second item" draw_text.color: #ddd}
|
|
22
|
+
Label{text: "Third item" draw_text.color: #bbb}
|
|
23
|
+
}
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
**Key points:**
|
|
27
|
+
- `flow: Down` stacks children vertically
|
|
28
|
+
- `spacing: 8` adds 8px between each child
|
|
29
|
+
- `height: Fit` makes the container shrink to its content
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## 2. Horizontal Row with Spacing
|
|
34
|
+
|
|
35
|
+
Items laid out left-to-right with vertical centering.
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
use mod.prelude.widgets.*
|
|
39
|
+
|
|
40
|
+
View{
|
|
41
|
+
width: Fill height: Fit
|
|
42
|
+
flow: Right spacing: 12 padding: 10
|
|
43
|
+
align: Align{y: 0.5}
|
|
44
|
+
|
|
45
|
+
RoundedView{
|
|
46
|
+
width: 40 height: 40
|
|
47
|
+
draw_bg.color: #4a9eff
|
|
48
|
+
draw_bg.border_radius: 20.0
|
|
49
|
+
align: Center
|
|
50
|
+
Label{text: "A" draw_text.color: #fff}
|
|
51
|
+
}
|
|
52
|
+
View{
|
|
53
|
+
width: Fit height: Fit
|
|
54
|
+
flow: Down spacing: 2
|
|
55
|
+
Label{text: "Alice Johnson" draw_text.color: #fff draw_text.text_style.font_size: 12}
|
|
56
|
+
Label{text: "Online" draw_text.color: #6f6 draw_text.text_style.font_size: 9}
|
|
57
|
+
}
|
|
58
|
+
Filler{}
|
|
59
|
+
ButtonFlatter{text: "Message"}
|
|
60
|
+
}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
**Key points:**
|
|
64
|
+
- `flow: Right` lays children out horizontally
|
|
65
|
+
- `align: Align{y: 0.5}` vertically centers all children
|
|
66
|
+
- `Filler{}` pushes the button to the far right (used between Fit siblings)
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## 3. Card Layout (RoundedView with Padding)
|
|
71
|
+
|
|
72
|
+
A styled card container with title and body text.
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
use mod.prelude.widgets.*
|
|
76
|
+
|
|
77
|
+
let InfoCard = RoundedView{
|
|
78
|
+
width: Fill height: Fit
|
|
79
|
+
padding: 16 flow: Down spacing: 8
|
|
80
|
+
draw_bg.color: #2a2a3d
|
|
81
|
+
draw_bg.border_radius: 10.0
|
|
82
|
+
new_batch: true
|
|
83
|
+
title := Label{text: "Title" draw_text.color: #fff draw_text.text_style.font_size: 14}
|
|
84
|
+
body := Label{text: "Body" draw_text.color: #aaa draw_text.text_style.font_size: 11}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
View{
|
|
88
|
+
width: Fill height: Fit
|
|
89
|
+
flow: Down spacing: 12 padding: 20
|
|
90
|
+
InfoCard{title.text: "Getting Started" body.text: "Learn how to build your first Makepad app."}
|
|
91
|
+
InfoCard{title.text: "Components" body.text: "Explore the built-in widget library."}
|
|
92
|
+
InfoCard{title.text: "Deployment" body.text: "Ship to desktop, mobile, and web."}
|
|
93
|
+
}
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
**Key points:**
|
|
97
|
+
- `let InfoCard` defines a reusable template
|
|
98
|
+
- `title :=` and `body :=` create named children that can be overridden
|
|
99
|
+
- `new_batch: true` ensures text renders on top of the background
|
|
100
|
+
- Override children with `InfoCard{title.text: "New Title"}`
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## 4. Responsive Wrap Layout
|
|
105
|
+
|
|
106
|
+
A tag cloud or card grid that wraps to the next line when the container is full.
|
|
107
|
+
|
|
108
|
+
```
|
|
109
|
+
use mod.prelude.widgets.*
|
|
110
|
+
|
|
111
|
+
let Tag = RoundedView{
|
|
112
|
+
width: Fit height: Fit
|
|
113
|
+
padding: Inset{top: 4 bottom: 4 left: 10 right: 10}
|
|
114
|
+
draw_bg.color: #335
|
|
115
|
+
draw_bg.border_radius: 12.0
|
|
116
|
+
new_batch: true
|
|
117
|
+
label := Label{text: "tag" draw_text.color: #8af draw_text.text_style.font_size: 10}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
View{
|
|
121
|
+
width: Fill height: Fit
|
|
122
|
+
flow: Flow.Right{wrap: true}
|
|
123
|
+
spacing: 8 padding: 12
|
|
124
|
+
|
|
125
|
+
Tag{label.text: "Rust"}
|
|
126
|
+
Tag{label.text: "Makepad"}
|
|
127
|
+
Tag{label.text: "UI"}
|
|
128
|
+
Tag{label.text: "Layout"}
|
|
129
|
+
Tag{label.text: "Splash"}
|
|
130
|
+
Tag{label.text: "GPU"}
|
|
131
|
+
Tag{label.text: "Shaders"}
|
|
132
|
+
Tag{label.text: "Cross-platform"}
|
|
133
|
+
Tag{label.text: "Hot reload"}
|
|
134
|
+
Tag{label.text: "Streaming"}
|
|
135
|
+
}
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
**Key points:**
|
|
139
|
+
- `flow: Flow.Right{wrap: true}` wraps children to the next line
|
|
140
|
+
- Each tag uses `width: Fit` so it sizes to its content
|
|
141
|
+
- Tags automatically wrap when the row is full
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## 5. Sidebar + Main Content
|
|
146
|
+
|
|
147
|
+
A two-column layout with a fixed-width sidebar and a flexible main area.
|
|
148
|
+
|
|
149
|
+
```
|
|
150
|
+
use mod.prelude.widgets.*
|
|
151
|
+
|
|
152
|
+
let NavItem = View{
|
|
153
|
+
width: Fill height: Fit
|
|
154
|
+
padding: Inset{top: 8 bottom: 8 left: 16 right: 16}
|
|
155
|
+
label := Label{text: "Item" draw_text.color: #aaa draw_text.text_style.font_size: 11}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
View{
|
|
159
|
+
width: Fill height: Fill
|
|
160
|
+
flow: Right
|
|
161
|
+
|
|
162
|
+
// Sidebar: fixed width, fills height
|
|
163
|
+
SolidView{
|
|
164
|
+
width: 220 height: Fill
|
|
165
|
+
draw_bg.color: #1a1a2e
|
|
166
|
+
flow: Down spacing: 2 padding: Inset{top: 16 bottom: 16}
|
|
167
|
+
|
|
168
|
+
Label{
|
|
169
|
+
text: "Navigation"
|
|
170
|
+
draw_text.color: #fff
|
|
171
|
+
draw_text.text_style.font_size: 13
|
|
172
|
+
margin: Inset{left: 16 bottom: 12}
|
|
173
|
+
}
|
|
174
|
+
Hr{}
|
|
175
|
+
NavItem{label.text: "Dashboard"}
|
|
176
|
+
NavItem{label.text: "Projects"}
|
|
177
|
+
NavItem{label.text: "Settings"}
|
|
178
|
+
NavItem{label.text: "Help"}
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
// Main content: fills remaining width
|
|
182
|
+
ScrollYView{
|
|
183
|
+
width: Fill height: Fill
|
|
184
|
+
flow: Down padding: 24 spacing: 16
|
|
185
|
+
|
|
186
|
+
Label{text: "Dashboard" draw_text.color: #fff draw_text.text_style.font_size: 20}
|
|
187
|
+
Label{text: "Welcome to your workspace." draw_text.color: #aaa draw_text.text_style.font_size: 12}
|
|
188
|
+
|
|
189
|
+
RoundedView{
|
|
190
|
+
width: Fill height: Fit
|
|
191
|
+
padding: 16 flow: Down spacing: 8
|
|
192
|
+
draw_bg.color: #2a2a3d
|
|
193
|
+
draw_bg.border_radius: 8.0
|
|
194
|
+
new_batch: true
|
|
195
|
+
Label{text: "Recent Activity" draw_text.color: #fff draw_text.text_style.font_size: 14}
|
|
196
|
+
Label{text: "No recent activity." draw_text.color: #888}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
**Key points:**
|
|
203
|
+
- Sidebar has `width: 220` (fixed) and `height: Fill`
|
|
204
|
+
- Main content has `width: Fill` to take remaining space
|
|
205
|
+
- ScrollYView wraps the main content for scrolling
|
|
206
|
+
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
## 6. Header / Body / Footer with ScrollYView
|
|
210
|
+
|
|
211
|
+
A common app layout: fixed header, scrollable body, fixed footer.
|
|
212
|
+
|
|
213
|
+
```
|
|
214
|
+
use mod.prelude.widgets.*
|
|
215
|
+
|
|
216
|
+
let ListItem = RoundedView{
|
|
217
|
+
width: Fill height: Fit
|
|
218
|
+
padding: Inset{top: 10 bottom: 10 left: 14 right: 14}
|
|
219
|
+
margin: Inset{top: 2 bottom: 2 left: 8 right: 8}
|
|
220
|
+
draw_bg.color: #2a2a3d
|
|
221
|
+
draw_bg.border_radius: 6.0
|
|
222
|
+
flow: Right spacing: 10
|
|
223
|
+
align: Align{y: 0.5}
|
|
224
|
+
new_batch: true
|
|
225
|
+
label := Label{text: "Item" draw_text.color: #ddd draw_text.text_style.font_size: 11}
|
|
226
|
+
Filler{}
|
|
227
|
+
tag := Label{text: "" draw_text.color: #888 draw_text.text_style.font_size: 9}
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
View{
|
|
231
|
+
width: Fill height: Fill
|
|
232
|
+
flow: Down
|
|
233
|
+
|
|
234
|
+
// Header (fixed)
|
|
235
|
+
SolidView{
|
|
236
|
+
width: Fill height: Fit
|
|
237
|
+
padding: Inset{top: 14 bottom: 14 left: 20 right: 20}
|
|
238
|
+
draw_bg.color: #1e1e2e
|
|
239
|
+
flow: Right
|
|
240
|
+
align: Align{y: 0.5}
|
|
241
|
+
new_batch: true
|
|
242
|
+
Label{text: "My App" draw_text.color: #fff draw_text.text_style.font_size: 16}
|
|
243
|
+
Filler{}
|
|
244
|
+
ButtonFlatter{text: "Help"}
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
// Body (scrollable, fills remaining space)
|
|
248
|
+
ScrollYView{
|
|
249
|
+
width: Fill height: Fill
|
|
250
|
+
flow: Down spacing: 4 padding: Inset{top: 8 bottom: 8}
|
|
251
|
+
|
|
252
|
+
ListItem{label.text: "Set up development environment" tag.text: "dev"}
|
|
253
|
+
ListItem{label.text: "Design landing page" tag.text: "design"}
|
|
254
|
+
ListItem{label.text: "Write documentation" tag.text: "docs"}
|
|
255
|
+
ListItem{label.text: "Review pull requests" tag.text: "dev"}
|
|
256
|
+
ListItem{label.text: "Plan sprint retrospective" tag.text: "team"}
|
|
257
|
+
ListItem{label.text: "Update dependencies" tag.text: "maintenance"}
|
|
258
|
+
ListItem{label.text: "Deploy to staging" tag.text: "ops"}
|
|
259
|
+
ListItem{label.text: "User interview prep" tag.text: "research"}
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
// Footer (fixed)
|
|
263
|
+
SolidView{
|
|
264
|
+
width: Fill height: Fit
|
|
265
|
+
padding: Inset{top: 8 bottom: 8 left: 20 right: 20}
|
|
266
|
+
draw_bg.color: #1a1a28
|
|
267
|
+
new_batch: true
|
|
268
|
+
Label{text: "8 items" draw_text.color: #666 draw_text.text_style.font_size: 9}
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
**Key points:**
|
|
274
|
+
- Header and footer use `height: Fit` to shrink to content
|
|
275
|
+
- ScrollYView uses `height: Fill` to take all remaining vertical space
|
|
276
|
+
- The scroll viewport is automatically the space between header and footer
|
|
277
|
+
|
|
278
|
+
---
|
|
279
|
+
|
|
280
|
+
## 7. Centered Dialog
|
|
281
|
+
|
|
282
|
+
A dialog box centered in the viewport with a dimmed background.
|
|
283
|
+
|
|
284
|
+
```
|
|
285
|
+
use mod.prelude.widgets.*
|
|
286
|
+
|
|
287
|
+
View{
|
|
288
|
+
width: Fill height: Fill
|
|
289
|
+
flow: Overlay
|
|
290
|
+
|
|
291
|
+
// Dimmed background layer
|
|
292
|
+
SolidView{
|
|
293
|
+
width: Fill height: Fill
|
|
294
|
+
draw_bg.color: #0008
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
// Centered dialog
|
|
298
|
+
View{
|
|
299
|
+
width: Fill height: Fill
|
|
300
|
+
align: Center
|
|
301
|
+
|
|
302
|
+
RoundedView{
|
|
303
|
+
width: 360 height: Fit
|
|
304
|
+
padding: 24 flow: Down spacing: 16
|
|
305
|
+
draw_bg.color: #2c2c40
|
|
306
|
+
draw_bg.border_radius: 12.0
|
|
307
|
+
new_batch: true
|
|
308
|
+
|
|
309
|
+
Label{text: "Delete Project?" draw_text.color: #fff draw_text.text_style.font_size: 16}
|
|
310
|
+
Label{
|
|
311
|
+
width: Fill
|
|
312
|
+
text: "This action cannot be undone. All project data will be permanently removed."
|
|
313
|
+
draw_text.color: #aaa draw_text.text_style.font_size: 11
|
|
314
|
+
}
|
|
315
|
+
Hr{}
|
|
316
|
+
View{
|
|
317
|
+
width: Fill height: Fit
|
|
318
|
+
flow: Right spacing: 8
|
|
319
|
+
align: Align{x: 1.0 y: 0.5}
|
|
320
|
+
ButtonFlat{text: "Cancel"}
|
|
321
|
+
Button{text: "Delete"}
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
**Key points:**
|
|
329
|
+
- `flow: Overlay` stacks the dim background behind the dialog
|
|
330
|
+
- The inner View with `align: Center` positions the dialog in the center
|
|
331
|
+
- Dialog itself uses `width: 360` (fixed) with `height: Fit`
|
|
332
|
+
|
|
333
|
+
---
|
|
334
|
+
|
|
335
|
+
## 8. Grid-like Layout Using Nested Flows
|
|
336
|
+
|
|
337
|
+
Makepad has no CSS grid. Simulate a grid with nested flow: Right rows inside a flow: Down column.
|
|
338
|
+
|
|
339
|
+
```
|
|
340
|
+
use mod.prelude.widgets.*
|
|
341
|
+
|
|
342
|
+
let Cell = RoundedView{
|
|
343
|
+
width: Fill height: 80
|
|
344
|
+
padding: 10 flow: Down spacing: 4
|
|
345
|
+
draw_bg.color: #334
|
|
346
|
+
draw_bg.border_radius: 6.0
|
|
347
|
+
align: Center
|
|
348
|
+
new_batch: true
|
|
349
|
+
value := Label{text: "0" draw_text.color: #fff draw_text.text_style.font_size: 20}
|
|
350
|
+
label := Label{text: "Metric" draw_text.color: #888 draw_text.text_style.font_size: 9}
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
View{
|
|
354
|
+
width: Fill height: Fit
|
|
355
|
+
flow: Down spacing: 8 padding: 16
|
|
356
|
+
|
|
357
|
+
// Row 1
|
|
358
|
+
View{
|
|
359
|
+
width: Fill height: Fit
|
|
360
|
+
flow: Right spacing: 8
|
|
361
|
+
Cell{value.text: "142" label.text: "Users"}
|
|
362
|
+
Cell{value.text: "38" label.text: "Active"}
|
|
363
|
+
Cell{value.text: "97%" label.text: "Uptime"}
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
// Row 2
|
|
367
|
+
View{
|
|
368
|
+
width: Fill height: Fit
|
|
369
|
+
flow: Right spacing: 8
|
|
370
|
+
Cell{value.text: "2.4k" label.text: "Requests"}
|
|
371
|
+
Cell{value.text: "12ms" label.text: "Latency"}
|
|
372
|
+
Cell{value.text: "0" label.text: "Errors"}
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
**Key points:**
|
|
378
|
+
- Each row is a `flow: Right` container
|
|
379
|
+
- Cells use `width: Fill` to distribute evenly across the row
|
|
380
|
+
- Rows are stacked vertically with `flow: Down`
|
|
381
|
+
- This gives a 3-column, 2-row grid appearance
|
|
382
|
+
|
|
383
|
+
---
|
|
384
|
+
|
|
385
|
+
## 9. Navigation Bar Pattern
|
|
386
|
+
|
|
387
|
+
A horizontal navigation bar with logo, links, and action button.
|
|
388
|
+
|
|
389
|
+
```
|
|
390
|
+
use mod.prelude.widgets.*
|
|
391
|
+
|
|
392
|
+
SolidView{
|
|
393
|
+
width: Fill height: 48
|
|
394
|
+
flow: Right spacing: 0
|
|
395
|
+
padding: Inset{left: 16 right: 16}
|
|
396
|
+
align: Align{y: 0.5}
|
|
397
|
+
draw_bg.color: #1a1a2e
|
|
398
|
+
new_batch: true
|
|
399
|
+
|
|
400
|
+
// Logo / brand
|
|
401
|
+
Label{
|
|
402
|
+
text: "Makepad"
|
|
403
|
+
draw_text.color: #4a9eff
|
|
404
|
+
draw_text.text_style.font_size: 15
|
|
405
|
+
margin: Inset{right: 24}
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
// Navigation links
|
|
409
|
+
ButtonFlatter{text: "Home" margin: Inset{left: 4 right: 4}}
|
|
410
|
+
ButtonFlatter{text: "Docs" margin: Inset{left: 4 right: 4}}
|
|
411
|
+
ButtonFlatter{text: "Examples" margin: Inset{left: 4 right: 4}}
|
|
412
|
+
ButtonFlatter{text: "Community" margin: Inset{left: 4 right: 4}}
|
|
413
|
+
|
|
414
|
+
Filler{}
|
|
415
|
+
|
|
416
|
+
// Right-side action
|
|
417
|
+
Button{text: "Sign In"}
|
|
418
|
+
}
|
|
419
|
+
```
|
|
420
|
+
|
|
421
|
+
**Key points:**
|
|
422
|
+
- `height: 48` gives a fixed nav bar height
|
|
423
|
+
- `align: Align{y: 0.5}` vertically centers all children
|
|
424
|
+
- `Filler{}` pushes the Sign In button to the right
|
|
425
|
+
- All nav items use `width: Fit` (default for ButtonFlatter)
|
|
426
|
+
|
|
427
|
+
---
|
|
428
|
+
|
|
429
|
+
## 10. Tab-style Layout with PageFlip
|
|
430
|
+
|
|
431
|
+
PageFlip shows one page at a time based on `active_page`. Combine with buttons
|
|
432
|
+
for tab-style navigation.
|
|
433
|
+
|
|
434
|
+
```
|
|
435
|
+
use mod.prelude.widgets.*
|
|
436
|
+
|
|
437
|
+
View{
|
|
438
|
+
width: Fill height: Fill
|
|
439
|
+
flow: Down
|
|
440
|
+
|
|
441
|
+
// Tab bar
|
|
442
|
+
SolidView{
|
|
443
|
+
width: Fill height: Fit
|
|
444
|
+
flow: Right spacing: 0
|
|
445
|
+
draw_bg.color: #222
|
|
446
|
+
padding: Inset{left: 8 right: 8 top: 4 bottom: 0}
|
|
447
|
+
|
|
448
|
+
tab_home := ButtonFlatter{text: "Home" margin: Inset{right: 4}}
|
|
449
|
+
tab_settings := ButtonFlatter{text: "Settings" margin: Inset{right: 4}}
|
|
450
|
+
tab_about := ButtonFlatter{text: "About"}
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
// Page content
|
|
454
|
+
pages := PageFlip{
|
|
455
|
+
active_page := home_page
|
|
456
|
+
width: Fill height: Fill
|
|
457
|
+
|
|
458
|
+
home_page := ScrollYView{
|
|
459
|
+
width: Fill height: Fill
|
|
460
|
+
flow: Down padding: 20 spacing: 12
|
|
461
|
+
Label{text: "Home Page" draw_text.color: #fff draw_text.text_style.font_size: 18}
|
|
462
|
+
Label{text: "Welcome to the home page content." draw_text.color: #aaa}
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
settings_page := ScrollYView{
|
|
466
|
+
width: Fill height: Fill
|
|
467
|
+
flow: Down padding: 20 spacing: 12
|
|
468
|
+
Label{text: "Settings" draw_text.color: #fff draw_text.text_style.font_size: 18}
|
|
469
|
+
Label{text: "Configure your preferences here." draw_text.color: #aaa}
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
about_page := View{
|
|
473
|
+
width: Fill height: Fill
|
|
474
|
+
flow: Down padding: 20 spacing: 12
|
|
475
|
+
Label{text: "About" draw_text.color: #fff draw_text.text_style.font_size: 18}
|
|
476
|
+
Label{text: "Version 2.0" draw_text.color: #aaa}
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
```
|
|
481
|
+
|
|
482
|
+
**Key points:**
|
|
483
|
+
- `PageFlip` shows only one child at a time
|
|
484
|
+
- `active_page := home_page` sets the initially visible page
|
|
485
|
+
- Each page is a named child with `:=`
|
|
486
|
+
- Tab switching is done programmatically by changing `active_page`
|
|
487
|
+
|
|
488
|
+
---
|
|
489
|
+
|
|
490
|
+
## 11. Todo-style List Item with Right-aligned Tag
|
|
491
|
+
|
|
492
|
+
A pattern from the official Makepad Todo example: horizontal row with label, filler, and tag.
|
|
493
|
+
|
|
494
|
+
```
|
|
495
|
+
use mod.prelude.widgets.*
|
|
496
|
+
|
|
497
|
+
let TodoItem = RoundedView{
|
|
498
|
+
width: Fill height: Fit
|
|
499
|
+
padding: Inset{top: 8 bottom: 8 left: 12 right: 12}
|
|
500
|
+
flow: Right spacing: 10
|
|
501
|
+
align: Align{y: 0.5}
|
|
502
|
+
draw_bg.color: #2a2a3d
|
|
503
|
+
draw_bg.border_radius: 8.0
|
|
504
|
+
new_batch: true
|
|
505
|
+
|
|
506
|
+
check := CheckBox{text: ""}
|
|
507
|
+
label := Label{
|
|
508
|
+
width: Fill
|
|
509
|
+
text: "task"
|
|
510
|
+
draw_text.color: #ddd
|
|
511
|
+
draw_text.text_style.font_size: 11
|
|
512
|
+
}
|
|
513
|
+
tag := RoundedView{
|
|
514
|
+
width: Fit height: Fit
|
|
515
|
+
padding: Inset{top: 2 bottom: 2 left: 8 right: 8}
|
|
516
|
+
draw_bg.color: #335
|
|
517
|
+
draw_bg.border_radius: 4.0
|
|
518
|
+
new_batch: true
|
|
519
|
+
tag_label := Label{text: "" draw_text.color: #8af draw_text.text_style.font_size: 9}
|
|
520
|
+
}
|
|
521
|
+
}
|
|
522
|
+
|
|
523
|
+
View{
|
|
524
|
+
width: Fill height: Fit
|
|
525
|
+
flow: Down spacing: 4 padding: 12
|
|
526
|
+
TodoItem{label.text: "Walk the dog" tag.tag_label.text: "personal"}
|
|
527
|
+
TodoItem{label.text: "Fix login bug" tag.tag_label.text: "urgent"}
|
|
528
|
+
TodoItem{label.text: "Write unit tests" tag.tag_label.text: "dev"}
|
|
529
|
+
}
|
|
530
|
+
```
|
|
531
|
+
|
|
532
|
+
**Key points:**
|
|
533
|
+
- Label uses `width: Fill` to take remaining space, pushing tag to the right
|
|
534
|
+
- No Filler needed because `width: Fill` on the label does the job
|
|
535
|
+
- Tag has `width: Fit` so it shrinks to its content
|
|
536
|
+
- Nested override path: `tag.tag_label.text` reaches into the tag's inner label
|
|
537
|
+
|
|
538
|
+
---
|
|
539
|
+
|
|
540
|
+
## 12. Profile Card with Avatar and Stats Row
|
|
541
|
+
|
|
542
|
+
Combining horizontal and vertical layouts in a card.
|
|
543
|
+
|
|
544
|
+
```
|
|
545
|
+
use mod.prelude.widgets.*
|
|
546
|
+
|
|
547
|
+
let StatItem = View{
|
|
548
|
+
width: Fill height: Fit
|
|
549
|
+
flow: Down spacing: 2
|
|
550
|
+
align: HCenter
|
|
551
|
+
value := Label{text: "0" draw_text.color: #fff draw_text.text_style.font_size: 16}
|
|
552
|
+
label := Label{text: "Stat" draw_text.color: #888 draw_text.text_style.font_size: 9}
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
RoundedView{
|
|
556
|
+
width: Fill height: Fit
|
|
557
|
+
padding: 20 flow: Down spacing: 16
|
|
558
|
+
draw_bg.color: #2a2a3d
|
|
559
|
+
draw_bg.border_radius: 12.0
|
|
560
|
+
align: HCenter
|
|
561
|
+
new_batch: true
|
|
562
|
+
|
|
563
|
+
// Avatar placeholder
|
|
564
|
+
CircleView{
|
|
565
|
+
width: 64 height: 64
|
|
566
|
+
draw_bg.color: #4a9eff
|
|
567
|
+
align: Center
|
|
568
|
+
Label{text: "JD" draw_text.color: #fff draw_text.text_style.font_size: 18}
|
|
569
|
+
}
|
|
570
|
+
|
|
571
|
+
Label{text: "Jane Doe" draw_text.color: #fff draw_text.text_style.font_size: 16}
|
|
572
|
+
Label{text: "Software Engineer" draw_text.color: #888 draw_text.text_style.font_size: 11}
|
|
573
|
+
|
|
574
|
+
Hr{}
|
|
575
|
+
|
|
576
|
+
// Stats row
|
|
577
|
+
View{
|
|
578
|
+
width: Fill height: Fit
|
|
579
|
+
flow: Right spacing: 0
|
|
580
|
+
StatItem{value.text: "142" label.text: "Posts"}
|
|
581
|
+
StatItem{value.text: "1.2k" label.text: "Followers"}
|
|
582
|
+
StatItem{value.text: "89" label.text: "Following"}
|
|
583
|
+
}
|
|
584
|
+
}
|
|
585
|
+
```
|
|
586
|
+
|
|
587
|
+
---
|
|
588
|
+
|
|
589
|
+
## 13. Form Layout with Labels and Inputs
|
|
590
|
+
|
|
591
|
+
A vertical form with left-aligned labels and full-width inputs.
|
|
592
|
+
|
|
593
|
+
```
|
|
594
|
+
use mod.prelude.widgets.*
|
|
595
|
+
|
|
596
|
+
let FormField = View{
|
|
597
|
+
width: Fill height: Fit
|
|
598
|
+
flow: Down spacing: 4
|
|
599
|
+
label := Label{text: "Label" draw_text.color: #aaa draw_text.text_style.font_size: 10}
|
|
600
|
+
input := TextInput{width: Fill height: Fit empty_text: "Enter value"}
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
RoundedView{
|
|
604
|
+
width: Fill height: Fit
|
|
605
|
+
padding: 24 flow: Down spacing: 16
|
|
606
|
+
draw_bg.color: #2a2a3d
|
|
607
|
+
draw_bg.border_radius: 10.0
|
|
608
|
+
new_batch: true
|
|
609
|
+
|
|
610
|
+
Label{text: "Create Account" draw_text.color: #fff draw_text.text_style.font_size: 18}
|
|
611
|
+
|
|
612
|
+
FormField{label.text: "Full Name" input.empty_text: "John Doe"}
|
|
613
|
+
FormField{label.text: "Email" input.empty_text: "john@example.com"}
|
|
614
|
+
FormField{label.text: "Password" input.empty_text: "********" input.is_password: true}
|
|
615
|
+
|
|
616
|
+
View{
|
|
617
|
+
width: Fill height: Fit
|
|
618
|
+
flow: Right spacing: 10
|
|
619
|
+
align: Align{x: 1.0}
|
|
620
|
+
ButtonFlat{text: "Cancel"}
|
|
621
|
+
Button{text: "Sign Up"}
|
|
622
|
+
}
|
|
623
|
+
}
|
|
624
|
+
```
|
|
625
|
+
|
|
626
|
+
---
|
|
627
|
+
|
|
628
|
+
## Sizing Cheat Sheet
|
|
629
|
+
|
|
630
|
+
Quick reference for all sizing values.
|
|
631
|
+
|
|
632
|
+
### Width / Height Values
|
|
633
|
+
|
|
634
|
+
| Value | Behavior | Use When |
|
|
635
|
+
|-------|----------|----------|
|
|
636
|
+
| `Fill` | Take all remaining space | Main content areas, stretchy containers |
|
|
637
|
+
| `Fit` | Shrink to content size | Buttons, labels, cards, most containers |
|
|
638
|
+
| `200` | Fixed 200 pixels | Avatars, icons, sidebars, known dimensions |
|
|
639
|
+
| `Fill{min: 100 max: 500}` | Fill with constraints | Responsive containers |
|
|
640
|
+
| `Fit{max: Abs(300)}` | Fit with max cap | Text that should not exceed a width |
|
|
641
|
+
|
|
642
|
+
### Container Defaults
|
|
643
|
+
|
|
644
|
+
| Scenario | width | height |
|
|
645
|
+
|----------|-------|--------|
|
|
646
|
+
| Root container | `Fill` | `Fit` |
|
|
647
|
+
| Inner card | `Fill` | `Fit` |
|
|
648
|
+
| Sidebar | `220` (fixed) | `Fill` |
|
|
649
|
+
| ScrollYView | `Fill` | `Fill` |
|
|
650
|
+
| Button | `Fit` (default) | `Fit` (default) |
|
|
651
|
+
| Label | `Fit` (default) | `Fit` (default) |
|
|
652
|
+
| Avatar / Icon | fixed px | fixed px |
|
|
653
|
+
| Grid cell | `Fill` | fixed px or `Fit` |
|
|
654
|
+
|
|
655
|
+
### Flow Quick Reference
|
|
656
|
+
|
|
657
|
+
| Flow | Direction | Wrap | CSS Equivalent |
|
|
658
|
+
|------|-----------|------|----------------|
|
|
659
|
+
| `Right` | Horizontal | No | `flex-direction: row` |
|
|
660
|
+
| `Down` | Vertical | No | `flex-direction: column` |
|
|
661
|
+
| `Overlay` | Stacked (z-axis) | N/A | `position: absolute` stacking |
|
|
662
|
+
| `Flow.Right{wrap: true}` | Horizontal | Yes | `flex-direction: row; flex-wrap: wrap` |
|
|
663
|
+
| `Flow.Down{wrap: true}` | Vertical | Yes | Column wrap |
|
|
664
|
+
|
|
665
|
+
### Alignment Quick Reference
|
|
666
|
+
|
|
667
|
+
| Shorthand | x | y | CSS Equivalent |
|
|
668
|
+
|-----------|---|---|----------------|
|
|
669
|
+
| `Center` | 0.5 | 0.5 | `justify-content: center; align-items: center` |
|
|
670
|
+
| `HCenter` | 0.5 | 0.0 | `justify-content: center; align-items: flex-start` |
|
|
671
|
+
| `VCenter` | 0.0 | 0.5 | `justify-content: flex-start; align-items: center` |
|
|
672
|
+
| `TopLeft` | 0.0 | 0.0 | Default (no alignment) |
|
|
673
|
+
| `Align{x: 1.0 y: 0.0}` | 1.0 | 0.0 | Top-right |
|
|
674
|
+
| `Align{x: 1.0 y: 1.0}` | 1.0 | 1.0 | Bottom-right |
|
|
675
|
+
| `Align{x: 0.5 y: 1.0}` | 0.5 | 1.0 | Bottom-center |
|
|
676
|
+
|
|
677
|
+
---
|
|
678
|
+
|
|
679
|
+
## Troubleshooting
|
|
680
|
+
|
|
681
|
+
### UI is completely invisible (0px height)
|
|
682
|
+
|
|
683
|
+
**Cause:** Container is missing `height: Fit`.
|
|
684
|
+
|
|
685
|
+
**Fix:** Add `height: Fit` to every View, SolidView, RoundedView.
|
|
686
|
+
|
|
687
|
+
```
|
|
688
|
+
// BEFORE (invisible)
|
|
689
|
+
View{
|
|
690
|
+
width: Fill
|
|
691
|
+
flow: Down
|
|
692
|
+
Label{text: "Cannot see me"}
|
|
693
|
+
}
|
|
694
|
+
|
|
695
|
+
// AFTER (visible)
|
|
696
|
+
View{
|
|
697
|
+
width: Fill height: Fit
|
|
698
|
+
flow: Down
|
|
699
|
+
Label{text: "Now visible"}
|
|
700
|
+
}
|
|
701
|
+
```
|
|
702
|
+
|
|
703
|
+
### Text is invisible on a colored background
|
|
704
|
+
|
|
705
|
+
**Cause:** Missing `new_batch: true`. Text is drawn behind the background due to GPU draw batching.
|
|
706
|
+
|
|
707
|
+
**Fix:** Add `new_batch: true` to any container with `show_bg: true` (SolidView, RoundedView, etc.) that has text children.
|
|
708
|
+
|
|
709
|
+
```
|
|
710
|
+
// BEFORE (text behind background)
|
|
711
|
+
RoundedView{
|
|
712
|
+
width: Fill height: Fit
|
|
713
|
+
draw_bg.color: #334
|
|
714
|
+
Label{text: "Hidden" draw_text.color: #fff}
|
|
715
|
+
}
|
|
716
|
+
|
|
717
|
+
// AFTER (text on top)
|
|
718
|
+
RoundedView{
|
|
719
|
+
width: Fill height: Fit
|
|
720
|
+
draw_bg.color: #334
|
|
721
|
+
new_batch: true
|
|
722
|
+
Label{text: "Visible" draw_text.color: #fff}
|
|
723
|
+
}
|
|
724
|
+
```
|
|
725
|
+
|
|
726
|
+
### Text is clipped halfway in a horizontal row
|
|
727
|
+
|
|
728
|
+
**Cause:** Using `Filler{}` next to a `width: Fill` sibling. They split remaining space 50/50.
|
|
729
|
+
|
|
730
|
+
**Fix:** Remove the Filler. Use `width: Fill` on the text container instead -- it naturally takes remaining space.
|
|
731
|
+
|
|
732
|
+
```
|
|
733
|
+
// BEFORE (text clipped at 50%)
|
|
734
|
+
View{
|
|
735
|
+
flow: Right height: Fit
|
|
736
|
+
Label{width: Fill text: "Long title text"}
|
|
737
|
+
Filler{}
|
|
738
|
+
Label{text: "tag"}
|
|
739
|
+
}
|
|
740
|
+
|
|
741
|
+
// AFTER (text takes all remaining space)
|
|
742
|
+
View{
|
|
743
|
+
flow: Right height: Fit
|
|
744
|
+
Label{width: Fill text: "Long title text"}
|
|
745
|
+
Label{text: "tag"}
|
|
746
|
+
}
|
|
747
|
+
```
|
|
748
|
+
|
|
749
|
+
### Scrollable area does not scroll
|
|
750
|
+
|
|
751
|
+
**Cause:** ScrollYView has `height: Fit` instead of `height: Fill`. It expands to fit
|
|
752
|
+
all content, so there is nothing to scroll.
|
|
753
|
+
|
|
754
|
+
**Fix:** Use `height: Fill` on ScrollYView so it has a fixed viewport.
|
|
755
|
+
|
|
756
|
+
```
|
|
757
|
+
// BEFORE (no scrolling, expands to full content height)
|
|
758
|
+
ScrollYView{
|
|
759
|
+
width: Fill height: Fit
|
|
760
|
+
flow: Down
|
|
761
|
+
Label{text: "Item 1"}
|
|
762
|
+
Label{text: "Item 2"}
|
|
763
|
+
}
|
|
764
|
+
|
|
765
|
+
// AFTER (scrolls within the available space)
|
|
766
|
+
ScrollYView{
|
|
767
|
+
width: Fill height: Fill
|
|
768
|
+
flow: Down
|
|
769
|
+
Label{text: "Item 1"}
|
|
770
|
+
Label{text: "Item 2"}
|
|
771
|
+
}
|
|
772
|
+
```
|
|
773
|
+
|
|
774
|
+
### Root container is too narrow / does not fill the window
|
|
775
|
+
|
|
776
|
+
**Cause:** Using a fixed pixel width on the root container (e.g., `width: 400`).
|
|
777
|
+
|
|
778
|
+
**Fix:** Always use `width: Fill` on the outermost container.
|
|
779
|
+
|
|
780
|
+
```
|
|
781
|
+
// BEFORE (400px sliver)
|
|
782
|
+
RoundedView{
|
|
783
|
+
width: 400 height: Fit
|
|
784
|
+
Label{text: "Narrow"}
|
|
785
|
+
}
|
|
786
|
+
|
|
787
|
+
// AFTER (fills available width)
|
|
788
|
+
RoundedView{
|
|
789
|
+
width: Fill height: Fit
|
|
790
|
+
Label{text: "Full width"}
|
|
791
|
+
}
|
|
792
|
+
```
|
|
793
|
+
|
|
794
|
+
### Children are all stacked on top of each other
|
|
795
|
+
|
|
796
|
+
**Cause:** Using `flow: Overlay` unintentionally, or forgetting to set `flow` at all
|
|
797
|
+
and having children with `width: Fill height: Fill`.
|
|
798
|
+
|
|
799
|
+
**Fix:** Set `flow: Down` for vertical stacking or `flow: Right` for horizontal layout.
|
|
800
|
+
|
|
801
|
+
```
|
|
802
|
+
// Children stacked on top (Overlay behavior)
|
|
803
|
+
View{
|
|
804
|
+
width: Fill height: Fit
|
|
805
|
+
flow: Overlay
|
|
806
|
+
Label{text: "First"}
|
|
807
|
+
Label{text: "Second"}
|
|
808
|
+
}
|
|
809
|
+
|
|
810
|
+
// Children stacked vertically (correct)
|
|
811
|
+
View{
|
|
812
|
+
width: Fill height: Fit
|
|
813
|
+
flow: Down spacing: 8
|
|
814
|
+
Label{text: "First"}
|
|
815
|
+
Label{text: "Second"}
|
|
816
|
+
}
|
|
817
|
+
```
|
|
818
|
+
|
|
819
|
+
### Override text on a template child does not work
|
|
820
|
+
|
|
821
|
+
**Cause:** The child was declared with `:` instead of `:=`, or it is inside an
|
|
822
|
+
anonymous (unnamed) container.
|
|
823
|
+
|
|
824
|
+
**Fix:** Use `:=` for named children. Ensure every container in the override path
|
|
825
|
+
has a `:=` name.
|
|
826
|
+
|
|
827
|
+
```
|
|
828
|
+
// WRONG: label is unreachable (inside anonymous View)
|
|
829
|
+
let Item = View{
|
|
830
|
+
flow: Right
|
|
831
|
+
View{
|
|
832
|
+
flow: Down
|
|
833
|
+
label := Label{text: "default"}
|
|
834
|
+
}
|
|
835
|
+
}
|
|
836
|
+
Item{label.text: "new"} // Fails silently
|
|
837
|
+
|
|
838
|
+
// CORRECT: all containers in path are named with :=
|
|
839
|
+
let Item = View{
|
|
840
|
+
flow: Right
|
|
841
|
+
texts := View{
|
|
842
|
+
flow: Down
|
|
843
|
+
label := Label{text: "default"}
|
|
844
|
+
}
|
|
845
|
+
}
|
|
846
|
+
Item{texts.label.text: "new"} // Works
|
|
847
|
+
```
|
|
848
|
+
|
|
849
|
+
### Spacing appears between container edge and first child
|
|
850
|
+
|
|
851
|
+
**Cause:** `spacing` applies between ALL children, but you may be seeing `padding` issues.
|
|
852
|
+
|
|
853
|
+
**Fix:** `spacing` only creates gaps between siblings, not before the first or after the
|
|
854
|
+
last. If you see unwanted space at edges, check `padding` values.
|
|
855
|
+
|
|
856
|
+
```
|
|
857
|
+
// padding: 0 removes edge space, spacing: 10 only between children
|
|
858
|
+
View{
|
|
859
|
+
width: Fill height: Fit
|
|
860
|
+
flow: Down spacing: 10 padding: 0.
|
|
861
|
+
Label{text: "First (flush with container edge)"}
|
|
862
|
+
Label{text: "Second (10px gap above)"}
|
|
863
|
+
}
|
|
864
|
+
```
|
|
865
|
+
|
|
866
|
+
---
|
|
867
|
+
|
|
868
|
+
## Layout Decision Tree
|
|
869
|
+
|
|
870
|
+
Use this to pick the right layout approach:
|
|
871
|
+
|
|
872
|
+
1. **Need vertical stacking?** -> `flow: Down`
|
|
873
|
+
2. **Need horizontal row?** -> `flow: Right`
|
|
874
|
+
3. **Need children stacked on z-axis?** -> `flow: Overlay`
|
|
875
|
+
4. **Need wrapping tags/cards?** -> `flow: Flow.Right{wrap: true}`
|
|
876
|
+
5. **Need scrolling?** -> Wrap in `ScrollYView` (vertical) or `ScrollXView` (horizontal)
|
|
877
|
+
6. **Need resizable panels?** -> Use `Splitter` with `a :=` and `b :=`
|
|
878
|
+
7. **Need tab switching?** -> Use `PageFlip` with `active_page :=`
|
|
879
|
+
8. **Need grid?** -> Nest `flow: Right` rows inside a `flow: Down` container
|
|
880
|
+
9. **Need centering?** -> `align: Center` on the parent
|
|
881
|
+
10. **Need push-to-opposite-ends?** -> `Filler{}` between `width: Fit` siblings
|