Mental Health Awareness: Free database of services available in SA
/* ===== Scope all styles to this embed ===== */
#mh-sa * font-family: system-ui, -apple-system, BlinkMacSystemFont, “Segoe UI”, Roboto, “Helvetica Neue”, Arial, sans-serif;
#mh-sa .mh-container max-width: 900px; margin: 0 auto; padding: 16px;
@media (min-width: 640px) #mh-sa .mh-container padding: 24px;
/* Header */
#mh-sa .mh-header text-align: center; margin-bottom: 40px;
#mh-sa .mh-title font-size: 2rem; font-weight: 800; color: #1e40af; margin: 0 0 8px;
@media (min-width: 640px) #mh-sa .mh-title font-size: 2.25rem;
#mh-sa .mh-subtitle font-size: 1.125rem; color: #4b5563; margin: 0;
#mh-sa .mh-crisis background-color: #fee2e2; color: #b91c1c; font-weight: 600; padding: 8px 12px; border-radius: 8px; margin-top: 12px; font-size: 0.875rem; display: inline-block;
/* Controls */
#mh-sa .mh-controls background: #ffffff; padding: 16px; border-radius: 12px; border: 1px solid #f3f4f6;
position: sticky; top: 0; z-index: 10;
box-shadow: 0 10px 15px -3px rgba(0,0,0,0.1), 0 4px 6px -4px rgba(0,0,0,0.1);
margin-bottom: 32px;
#mh-sa .mh-search width: 100%; padding: 12px; border: 2px solid #d1d5db; border-radius: 8px; margin-bottom: 12px; box-sizing: border-box; font-size: 1rem;
#mh-sa .mh-search:focus outline: none; border-color: #1d4ed8; box-shadow: 0 0 0 1px #1d4ed8;
#mh-sa .mh-filters display: flex; flex-wrap: wrap; gap: 8px; justify-content: center;
#mh-sa .mh-filter-btn padding: 8px 14px; border-radius: 9999px; font-size: 0.875rem; font-weight: 600; border: none; cursor: pointer; white-space: nowrap; background: #f3f4f6; color: #4b5563;
#mh-sa .mh-filter-btn:not(.is-active):hover background: #e5e7eb;
#mh-sa .mh-filter-btn.is-active background: #1d4ed8; color: #ffffff;
/* List + cards */
#mh-sa .mh-list display: flex; flex-direction: column; gap: 24px;
#mh-sa .mh-card background: #ffffff; border-radius: 12px; padding: 20px;
box-shadow: 0 4px 6px -1px rgba(0,0,0,0.1), 0 2px 4px -2px rgba(0,0,0,0.06);
border-left: 4px solid #e5e7eb;
#mh-sa .mh-head display: flex; flex-direction: column; align-items: flex-start; justify-content: space-between; gap: 8px; margin-bottom: 12px;
@media (min-width: 640px) #mh-sa .mh-head flex-direction: row; align-items: center;
#mh-sa .mh-name font-size: 1.25rem; font-weight: 700; color: #1f2937; margin: 0;
#mh-sa .mh-tag font-size: 0.75rem; font-weight: 700; padding: 4px 12px; border-radius: 9999px; display: inline-block; white-space: nowrap;
#mh-sa .mh-focus color: #4b5563; margin: 0;
#mh-sa .mh-focus strong color: #6b7280;
#mh-sa .mh-foot display: flex; flex-direction: column; gap: 12px; margin-top: 12px; padding-top: 12px; border-top: 1px solid #f3f4f6; font-size: 0.95rem;
@media (min-width: 640px) #mh-sa .mh-foot flex-direction: row; align-items: center; gap: 20px;
#mh-sa .mh-row display: flex; align-items: center; gap: 8px; font-weight: 600;
#mh-sa .mh-contact color: #16a34a;
#mh-sa .mh-province color: #6b7280;
#mh-sa .mh-link color: #1d4ed8; font-weight: 600; text-decoration: none; display: inline-flex; align-items: center; gap: 4px;
#mh-sa .mh-link:hover color: #1e40af; text-decoration: underline;
/* Category colours (tags + left borders) */
#mh-sa .is-crisis border-left-color: #f59e0b;
#mh-sa .is-crisis .mh-tag background: #fef3c7; color: #92400e;
#mh-sa .is-ngo border-left-color: #10b981;
#mh-sa .is-ngo .mh-tag background: #d1fae5; color: #065f46;
#mh-sa .is-public border-left-color: #ef4444;
#mh-sa .is-public .mh-tag background: #fee2e2; color: #991b1b;
#mh-sa .is-substance border-left-color: #a855f7;
#mh-sa .is-substance .mh-tag background: #ede9fe; color: #6b21a8;
/* Public-sector info box */
#mh-sa .mh-public margin-top: 40px; padding: 20px; background: #eff6ff; border-left: 4px solid #3b82f6; border-radius: 8px;
#mh-sa .mh-public h3 font-size: 1.25rem; font-weight: 700; color: #1e40af; margin: 0 0 10px;
#mh-sa .mh-public p color: #374151; font-size: 0.95rem; margin: 0 0 8px;
#mh-sa .mh-public ul list-style: disc; margin: 10px 0 0 20px; color: #374151; font-size: 0.95rem; padding-left: 0;
#mh-sa .mh-public li margin: 4px 0;
#mh-sa .mh-public li span font-weight: 700;
Mental Health Support SA
Free and subsidised resources for South Africans without medical aid.
🚨 Crisis? Call 0800 567 567 (SADAG 24/7 Suicide Helpline).
(function ()
/* Keep variables function-scoped to avoid global collisions in CMS/LLM reruns */
var root = document.getElementById(‘mh-sa’);
if (!root) return;
var listEl = root.querySelector(‘#mh-list’);
var searchEl = root.querySelector(‘#mh-search’);
var filterBtns = root.querySelectorAll(‘.mh-filter-btn’);
var activeCategory = ‘All’;
/* Data */
var resources = [
// Crisis Lines
category: “Crisis Line”, name: “SADAG Suicide Crisis Helpline”, contact: “0800 567 567”, focus: “24/7 Crisis Intervention, Suicide Prevention”, province: “National”, link: “https://www.sadag.org/” ,
category: “Crisis Line”, name: “Adcock Ingram Depression & Anxiety Helpline”, contact: “0800 70 80 90”, focus: “24/7 Toll-Free Support Line”, province: “National”, link: “https://blog.opencounseling.com/hotlines-za/” ,
category: “Crisis Line”, name: “Lifeline South Africa”, contact: “0861 322 322”, focus: “24-hour Crisis Intervention and Counselling”, province: “National”, link: “https://blog.opencounseling.com/hotlines-za/” ,
category: “Crisis Line”, name: “Childline South Africa”, contact: “0800 055 555”, focus: “For children and adolescents in distress”, province: “National”, link: “https://blog.opencounseling.com/hotlines-za/” ,
// Substance Abuse
category: “Substance Abuse”, name: “Dept of Social Development Substance Abuse Line”, contact: “0800 12 13 14”, focus: “24/7 Rehabilitation and Helpline”, province: “National”, link: “https://blog.opencounseling.com/hotlines-za/” ,
category: “Substance Abuse”, name: “Alcoholics Anonymous SA (AA)”, contact: “0861 HELPAA (435 722)”, focus: “Fellowship support for alcohol issues”, province: “National”, link: “https://blog.opencounseling.com/hotlines-za/” ,
category: “Substance Abuse”, name: “Narcotics Anonymous SA (NA)”, contact: “0881 30 03 27”, focus: “Fellowship support for drug addiction”, province: “National”, link: “https://blog.opencounseling.com/hotlines-za/” ,
// NGO / Low-Cost
category: “NGO/Low-Cost”, name: “SADAG (Support Groups and Referrals)”, contact: “011 234 4837 (08:00–20:00)”, focus: “Largest mental health NGO; free support groups, referrals, national resources”, province: “National”, link: “https://www.sadag.org/” ,
category: “NGO/Low-Cost”, name: “The Counselling Hub”, contact: “021 462 3902 / 067 235 0019”, focus: “Donation-based counselling (suggested R50) and online options”, province: “Western Cape (Cape Town)”, link: “https://counsellinghub.org.za/” ,
category: “NGO/Low-Cost”, name: “HEAL SA”, contact: “WhatsApp via website/socials”, focus: “Culturally appropriate, free online services for Black women and youth”, province: “Gauteng (Online-first)”, link: “https://heal-sa.org.za/” ,
category: “NGO/Low-Cost”, name: “Cape Mental Health”, contact: “+27 21 447 9040”, focus: “Community-based services; assessment, treatment, rehabilitation”, province: “Western Cape”, link: “https://capementalhealth.co.za/” ,
category: “NGO/Low-Cost”, name: “Central Gauteng Mental Health”, contact: “+27 11 614 6855/6”, focus: “Frontline community services (Johannesburg/Gauteng)”, province: “Gauteng”, link: “https://www.safmh.org/help-desk/” ,
category: “NGO/Low-Cost”, name: “Durban and Coastal Mental Health”, contact: “+27 31 207 2717”, focus: “Frontline community services (Durban/KZN)”, province: “KwaZulu-Natal”, link: “https://www.safmh.org/help-desk/” ,
category: “NGO/Low-Cost”, name: “Southern Free State Mental Health”, contact: “+27 51 444 0212/3”, focus: “Frontline community services (Bloemfontein/Free State)”, province: “Free State”, link: “https://www.safmh.org/help-desk/” ,
// Public Hospitals (Referral)
category: “Public Hospital”, name: “Valkenberg Hospital”, contact: “021 826 5805”, focus: “Tertiary Psychiatric Hospital (Referral required). Cost income-based”, province: “Western Cape (Cape Town)”, link: “https://d7.westerncape.gov.za/service/mental-health-hospital-services” ,
category: “Public Hospital”, name: “Stikland Hospital”, contact: “021 940 4400”, focus: “Tertiary Psychiatric Hospital (Referral required). Cost income-based”, province: “Western Cape (Cape Town)”, link: “https://d7.westerncape.gov.za/service/mental-health-hospital-services” ,
category: “Public Hospital”, name: “Groote Schuur Hospital (Psychiatry)”, contact: “021 404 9111”, focus: “Psychiatric Outpatient/Inpatient services (Referral required)”, province: “Western Cape (Cape Town)”, link: “https://health.uct.ac.za/department-psychiatry/clinical-services/groote-schuur-hospital”
];
function categoryClass(cat)
if (cat === ‘Crisis Line’) return ‘is-crisis’;
if (cat === ‘NGO/Low-Cost’) return ‘is-ngo’;
if (cat === ‘Public Hospital’) return ‘is-public’;
if (cat === ‘Substance Abuse’) return ‘is-substance’;
return ”;
function render() ”).toLowerCase();
var filtered = resources.filter(function (r) r.category === activeCategory;
var okSearch = !term );
if (!filtered.length)
listEl.innerHTML = ‘
No resources found matching your search and filters.
‘;
return;
listEl.innerHTML = filtered.map(function (r)
var cClass = categoryClass(r.category);
return (
‘
‘
‘
‘ + r.name + ‘
‘ +
‘‘ + r.category + ‘‘ +
‘
‘ +
‘
Focus: ‘ + r.focus + ‘
‘ +
‘
‘ +
‘
‘
);
).join(”);
function setActive(button)
filterBtns.forEach(function (b) b.classList.remove(‘is-active’); b.setAttribute(‘aria-selected’, ‘false’); );
button.classList.add(‘is-active’);
button.setAttribute(‘aria-selected’, ‘true’);
/* Events */
filterBtns.forEach(function (btn)
btn.addEventListener(‘click’, function ()
activeCategory = btn.getAttribute(‘data-category’) );
);
if (searchEl)
searchEl.addEventListener(‘input’, function () render(); );
/* Initialise */
var first = root.querySelector(‘.mh-filter-btn[data-category=”All”]’) )();