SPB Git forge

spb/ka-macos

Public
3commits 1branches 0releases
6.1 MBsize
maindefault branch
1 mo agolast push
Swift 98.3% Shell 1.7%
3.2 KB · 81 lines swift
Raw Blame History
1// Auteur : Simon-Pierre Boucher — contact@spboucher.ai2// AboutView.swift — À propos de KA : marque, mission, contacts et légal du3// Groupe KA (repris d'Ecosystem.swift), liens vers le hub.4import SwiftUI56struct AboutView: View {7    @Environment(\.colorScheme) private var scheme89    private var version: String {10        let v = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as? String ?? "1.0.0"11        return "Version \(v)"12    }1314    var body: some View {15        VStack(alignment: .leading, spacing: 16) {16            HStack(spacing: 14) {17                GroupeKAMark(size: 26)18                VStack(alignment: .leading, spacing: 2) {19                    Text("KA pour macOS").font(.headline)20                    Text(version + " · l'app compagnon de l'écosystème")21                        .font(.caption).foregroundStyle(.secondary)22                }23            }2425            Text(Ecosystem.disclaimer)26                .font(.subheadline)27                .foregroundStyle(KATheme.ink2(scheme))28                .padding(13)29                .frame(maxWidth: .infinity, alignment: .leading)30                .kaCard()3132            VStack(alignment: .leading, spacing: 8) {33                Text("Contacts").font(.headline)34                ForEach(Ecosystem.contacts, id: \.email) { c in35                    Link(destination: URL(string: "mailto:\(c.email)")!) {36                        HStack {37                            Image(systemName: "envelope.fill").font(.caption)38                            Text(c.email).font(.subheadline.weight(.semibold))39                            Spacer()40                            Text(c.role).font(.caption).foregroundStyle(.secondary)41                        }42                        .padding(.horizontal, 12).padding(.vertical, 8)43                        .background(KATheme.green.opacity(0.08), in: RoundedRectangle(cornerRadius: 9, style: .continuous))44                    }45                    .foregroundStyle(KATheme.green)46                }47            }4849            VStack(alignment: .leading, spacing: 8) {50                Text("Légal").font(.headline)51                ForEach(Ecosystem.legal, id: \.path) { l in52                    Link(destination: Ecosystem.hubURL.appendingPathComponent(l.path)) {53                        HStack {54                            Image(systemName: "doc.text").font(.caption)55                            Text(l.label).font(.subheadline)56                            Spacer()57                            Image(systemName: "arrow.up.right").font(.caption2)58                        }59                    }60                    .foregroundStyle(.primary)61                }62            }63            .padding(13)64            .frame(maxWidth: .infinity, alignment: .leading)65            .kaCard()6667            HStack {68                Link("www.groupe-ka.com", destination: Ecosystem.hubURL)69                    .font(.caption.weight(.bold))70                    .foregroundStyle(KATheme.green)71                Spacer()72                Text("© Simon-Pierre Boucher — Groupe KA")73                    .font(.caption2).foregroundStyle(.tertiary)74            }75        }76        .padding(22)77        .frame(width: 470)78        .background(KATheme.paper(scheme))79    }80}81