(project: dict)
| 1075 | |
| 1076 | |
| 1077 | def source_section(project: dict) -> str: |
| 1078 | return f"""<div class="source-callout"> |
| 1079 | <strong>Use the guide first.</strong> |
| 1080 | <p> |
| 1081 | The full learning flow stays on this page. Open GitHub only when a step |
| 1082 | asks you to inspect code, fork the lab, or download source assets. |
| 1083 | </p> |
| 1084 | <div class="button-row"> |
| 1085 | <a class="portal-button primary" href="{site_path('/runbooks/credentials-and-cost-safety/')}"> |
| 1086 | Read safety guide |
| 1087 | </a> |
| 1088 | <a class="portal-button utility" href="{GITHUB_TREE}/{project['dir']}" target="_blank" rel="noopener noreferrer"> |
| 1089 | Open project source |
| 1090 | </a> |
| 1091 | </div> |
| 1092 | </div>""" |
| 1093 | |
| 1094 | |
| 1095 | def write_project_pages(projects: list[dict]) -> None: |
no test coverage detected