-
Notifications
You must be signed in to change notification settings - Fork 333
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Co-authored-by: Asaad Mahmood <asaadmahmood@users.noreply.github.com> Co-authored-by: MirzaBabarBaig <mirza.babar35@gmail.com> Co-authored-by: Cuihtlauac Alvarado <cuihtlauac@tarides.com> Co-authored-by: Sabine Schmaltz <sabineschmaltz@gmail.com> Co-authored-by: Thibaut Mattio <thibaut.mattio@gmail.com>
- Loading branch information
1 parent
2c85b71
commit 0395408
Showing
18 changed files
with
966 additions
and
5 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
.governance-contrast-section { | ||
background: linear-gradient(270deg, #0B1528 0%, rgba(11, 21, 40, 0.958333) 53.65%, #0B1528 100%); | ||
} | ||
|
||
.governance-contrast-section button { | ||
border: 1px solid #fff; | ||
color: #fff; | ||
opacity: 0.6; | ||
} | ||
|
||
.governance-contrast-section .gradient { | ||
background: -webkit-linear-gradient(left, #EFA4F2,#0076ff, #62A8FF); | ||
-webkit-background-clip: text; | ||
-webkit-text-fill-color: transparent; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,94 @@ | ||
module MemberSet = Set.Make (Data.Governance.Member) | ||
|
||
let count_members (team : Data.Governance.team) = | ||
MemberSet.cardinal (MemberSet.of_list (team.members @ List.concat (List.map (fun (team : Data.Governance.team) -> team.members) team.subteams))) | ||
|
||
let render_team_card (team : Data.Governance.team) member_label btn_class = | ||
<div class="flex-col"> | ||
<div class="text-2xl mb-5 font-semibold flex items-center"> | ||
<span><%s team.name %></span> | ||
<svg xmlns="http://www.w3.org/2000/svg" class="h-8 w-8 ml-2" fill="none" viewBox="0 0 24 24" | ||
stroke="currentColor" stroke-width="2"> | ||
<path stroke-linecap="round" stroke-linejoin="round" | ||
d="M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z" /> | ||
</svg> | ||
</div> | ||
<div class="opacity-70 mb-4 text-lg"><%s team.description %></div> | ||
<div class="font-semibold mb-6"><%i count_members team %> <%s member_label %></div> | ||
<a href="<%s Url.governance_team team.id %>" class="btn <%s btn_class %>"> | ||
<span>Details</span> | ||
<svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4" fill="none" viewBox="0 0 24 24" | ||
stroke="currentColor"> | ||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" /> | ||
</svg> | ||
</a> | ||
</div> | ||
|
||
let render ~teams ~working_groups = | ||
Layout.render | ||
~title:"Governance" | ||
~description:"OCaml is a mature, statically-typed, functional programming language. Learn more about its rich history | ||
and what makes it unique." @@ | ||
<div class="intro-section-simple"> | ||
<div class="container-fluid"> | ||
<div class="mx-auto px-4 sm:px-6"> | ||
<div class=""> | ||
<div class="sm:text-center lg:col-span-8 lg:text-center"> | ||
<h1 class="font-bold pb-6 text-[56px]">Governance</h1> | ||
<div class="text-2xl text-body-400 pb-10">The projects running under OCaml and the awesome people | ||
behind it | ||
</div> | ||
<a href="<%s Url.governance_policy %>"><button class="btn btn-lg mb-4 lg:mb-0">Read the Governance Policy</button></a> | ||
</div> | ||
</div> | ||
</div> | ||
</div> | ||
</div> | ||
|
||
<div class="governance-contrast-section"> | ||
<div class="py-10 lg:py-28"> | ||
<div class="container-fluid text-white"> | ||
<h2 class="font-bold gradient mb-6 text-[40px]">Teams</h2> | ||
<div class="text-lg"> | ||
See who the maintainers of the various OCaml projects are. We present a comprehensive list structured by project / purpose. | ||
</div> | ||
<div class="grid grid-cols-1 md:grid-cols-2 gap-20 mt-16"> | ||
<% teams |> List.iter (fun (team : Data.Governance.team) -> %> | ||
<%s! render_team_card team "maintainers" "btn-tertiary" %> | ||
<% );%> | ||
</div> | ||
</div> | ||
</div> | ||
</div> | ||
<svg width="100%" height="auto" viewBox="0 0 1600 128" fill="none" class='bg-white' xmlns="http://www.w3.org/2000/svg"> | ||
<rect width="1600" height="121" transform="translate(0 0.000244141)" fill="white" /> | ||
<circle cx="268.5" cy="68.5002" r="27.5" fill="#EE6A1A" fill-opacity="0.48" /> | ||
<path fill-rule="evenodd" clip-rule="evenodd" | ||
d="M0 106L133 87.1667C267 68.3333 533 30.6667 800 30.6667C1067 30.6667 1333 68.3333 1467 87.1667L1600 106V0H1467C1333 0 1067 0 800 0C533 0 267 0 133 0H0V106Z" | ||
fill="url(#paint0_linear_2087_13206)" /> | ||
<circle cx="200" cy="80" r="48" fill="#CC4D00" /> | ||
<defs> | ||
<linearGradient id="paint0_linear_2087_13206" x1="1600" y1="44.6059" x2="-2.29315e-07" y2="44.6059" | ||
gradientUnits="userSpaceOnUse"> | ||
<stop stop-color="#0B1528" /> | ||
<stop offset="0.536458" stop-color="#0B1528" stop-opacity="0.958333" /> | ||
<stop offset="1" stop-color="#0B1528" /> | ||
</linearGradient> | ||
</defs> | ||
</svg> | ||
|
||
<div class="bg-white"> | ||
<div class="py-10 lg:py-28"> | ||
<div class="container-fluid"> | ||
<h2 class="font-bold text-body-600 mb-6 text-[40px]">Working groups</h2> | ||
<div class="text-body-400 text-lg prose"> | ||
Working groups are community initiatives that gather around certain topics or a shared purpose. | ||
The <a href="<%s Url.governance_policy %>">OCaml Governance Policy</a> does not apply to them. Participation is welcome and encouraged.</div> | ||
<div class="grid grid-cols-1 md:grid-cols-2 gap-20 mt-16"> | ||
<% working_groups |> List.iter (fun (wg : Data.Governance.team) -> %> | ||
<%s! render_team_card wg "organiser(s)" "btn-secondary" %> | ||
<% ); %> | ||
</div> | ||
</div> | ||
</div> | ||
</div> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,144 @@ | ||
let contact_icon (kind : Data.Governance.contact_kind) = match kind with | ||
| GitHub -> Icons.github | ||
| Email -> Icons.email | ||
| Discord -> Icons.discord | ||
| Chat -> Icons.chat | ||
|
||
let render_team_member (member : Data.Governance.Member.t) = | ||
<div class="flex space-x-2"> | ||
<img src="https://github.com/<%s member.github %>.png" alt="" class="h-32 w-32 mr-3 inline-block rounded-xl" /> | ||
<div> | ||
<div class="text-white text-lg font-semibold mt-3"><%s member.name %></div> | ||
<div class="text-sm text-white text-opacity-60"><%s member.role %></div> | ||
<div class="mt-8 text-white text-opacity-60 items-center flex gap-1"> | ||
<%s! Icons.github "h-6 w-6" %> | ||
<a href="https://github.com/<%s member.github %>"><%s member.github %></a> | ||
</div> | ||
</div> | ||
</div> | ||
|
||
let render_dev_meeting (dev_meeting : Data.Governance.dev_meeting) _class = | ||
<div class="gap-4 <%s _class %>"> | ||
<div class="flex gap-1"><%s dev_meeting.date %> - <%s dev_meeting.time %></div> | ||
<div class="flex gap-4"> | ||
<a class="underline flex gap-1 py-2 font-semibold" href="<%s dev_meeting.notes %>"> | ||
<%s! Icons.document "w-6 h-6" %> | ||
Notes | ||
</a> | ||
<a class="underline flex gap-1 py-2 font-semibold" href="<%s dev_meeting.link %>"> | ||
<%s! Icons.community "w-6 h-6" %> | ||
Meeting Link | ||
</a> | ||
<a class="underline flex gap-1 py-2 font-semibold" href="<%s dev_meeting.invite %>"> | ||
<%s! Icons.calendar "w-6 h-6" %> | ||
Calendar Invite | ||
</a> | ||
</div> | ||
</div> | ||
|
||
let render (t : Data.Governance.team) = | ||
Layout.render | ||
~title:(Printf.sprintf "%s · OCaml Governance" t.name) | ||
~description:t.description @@ | ||
<div class="intro-section-simple"> | ||
<div class="container-fluid"> | ||
<div class="mx-auto px-4 sm:px-6"> | ||
<div class=""> | ||
<div class="sm:text-center lg:col-span-8 lg:text-left"> | ||
<div | ||
class="flex justify-start space-x-3 items-center text-primary-600 hover:underline font-semibold mb-4 h-12"> | ||
<svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" fill="none" viewBox="0 0 24 24" | ||
stroke="currentColor"> | ||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 19l-7-7m0 0l7-7m-7 7h18"> | ||
</path> | ||
</svg> | ||
<a href="<%s Url.governance %>" class="hover:underline">Back to Governance</a> | ||
</div> | ||
<h1 class="font-bold pb-6"><%s t.name %> Governance</h1> | ||
<div class="text-2xl text-body-400"> | ||
<%s t.description%> | ||
</div> | ||
<div class="space-x-4"> | ||
<% t.contacts |> List.iter (fun (contact : Data.Governance.contact) -> %> | ||
<a class="btn btn-secondary btn-lg mt-6 gap-2" href="<%s contact.link %>" target="_blank"> | ||
<%s! contact_icon contact.kind "w-6 h-6" %> | ||
<%s contact.name %> | ||
</a> | ||
<% ); %> | ||
</div> | ||
</div> | ||
</div> | ||
</div> | ||
</div> | ||
</div> | ||
<div class="governance-contrast-section"> | ||
<div class="py-8"> | ||
<div class="container-fluid"> | ||
<% (match t.dev_meeting with | None -> () | Some dev_meeting -> %> | ||
<h2 class="font-bold gradient mb-6 mt-12 md:mt-16 text-4xl">Dev Meeting</h2> | ||
<%s! render_dev_meeting dev_meeting "text-white mb-6" %> | ||
<% ); %> | ||
|
||
<h2 class="font-bold gradient mb-6 mt-12 md:mt-16 text-4xl">People</h2> | ||
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-12"> | ||
<%s! t.members |> List.map (fun (member : Data.Governance.Member.t) -> render_team_member member ) |> String.concat "\n" %> | ||
</div> | ||
|
||
<% (match List.length t.subteams with | 0 -> () | _ -> %> | ||
<h2 class="font-bold gradient mb-6 mt-12 md:mt-16 text-4xl">Teams</h2> | ||
<% ); %> | ||
<div class="flex flex-col gap-12"> | ||
<% t.subteams |> List.iter (fun (team : Data.Governance.team) -> %> | ||
<div> | ||
<h3 class="gradient font-semibold text-3xl mb-4"><%s team.name %></h3> | ||
<% (if List.length t.contacts > 0 then %> | ||
<div class="flex gap-x-8"> | ||
<% team.contacts |> List.iter (fun (contact : Data.Governance.contact) -> %> | ||
<a class="btn btn-tertiary gap-1" href="<%s contact.link %>" target="_blank"> | ||
<%s! contact_icon contact.kind "w-6 h-6" %> | ||
<%s contact.name %> | ||
</a> | ||
<% ); %> | ||
</div> | ||
<% ); %> | ||
<% (match team.dev_meeting with | None -> () | Some dev_meeting -> %> | ||
<div class="py-4 px-6 mt-6 bg-white inline-block rounded-xl"> | ||
<h4 class="font-semibold mb-4 text-2xl">Dev Meeting</h3> | ||
<%s! render_dev_meeting dev_meeting "" %> | ||
</div> | ||
<% ); %> | ||
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-12 mt-6"> | ||
<%s! team.members |> List.map (fun (member : Data.Governance.Member.t) -> render_team_member member ) |> String.concat "\n" %> | ||
</div> | ||
</div> | ||
<% ); %> | ||
</div> | ||
</div> | ||
</div> | ||
</div> | ||
|
||
<svg width="100%" height="auto" viewBox="0 0 1600 290" fill="none" | ||
xmlns="http://www.w3.org/2000/svg"> | ||
<g clip-path="url(#clip0_2155_13483)"> | ||
<rect width="1600" height="290" fill="white" /> | ||
<circle cx="1467.5" cy="161.5" r="27.5" fill="#EE6A1A" fill-opacity="0.48" /> | ||
<path fill-rule="evenodd" clip-rule="evenodd" | ||
d="M-197.883 348.583C-256.706 318.298 -243.028 211.404 -236.431 120.668C-229.671 27.6854 -231.887 -77.8672 -160.394 -167.018C-90.5503 -254.114 0.696877 -256.036 81.5626 -275.871C142.463 -290.808 195.859 -289.719 238.964 -264.971C285.481 -238.263 331.333 -204.686 330.34 -133.039C329.284 -56.8512 291.867 36.2961 233.716 113.587C177.662 188.092 104.669 221.961 34.5125 260.16C-47.0471 304.567 -140.846 377.947 -197.883 348.583Z" | ||
fill="#EE6A1A" fill-opacity="0.1" /> | ||
<path fill-rule="evenodd" clip-rule="evenodd" | ||
d="M0 52.9655L67 48.5517C133 44.1379 267 35.3103 400 44.1379C533 52.9655 667 79.4484 800 114.759C933 150.069 1067 194.208 1200 198.621C1333 203.035 1467 167.725 1533 150.069L1600 132.414V-0.000243594H1533C1467 -0.000243594 1333 -0.000243594 1200 -0.000243594C1067 -0.000243594 933 -0.000243594 800 -0.000243594C667 -0.000243594 533 -0.000243594 400 -0.000243594C267 -0.000243594 133 -0.000243594 67 -0.000243594H0V52.9655Z" | ||
fill="url(#paint0_linear_2155_13483)" /> | ||
<circle cx="1523" cy="148" r="48" fill="#CC4D00" /> | ||
</g> | ||
<defs> | ||
<linearGradient id="paint0_linear_2155_13483" x1="1600" y1="115.259" x2="-2.29315e-07" y2="115.259" | ||
gradientUnits="userSpaceOnUse"> | ||
<stop stop-color="#0B1528" /> | ||
<stop offset="0.536458" stop-color="#0B1528" stop-opacity="0.958333" /> | ||
<stop offset="1" stop-color="#0B1528" /> | ||
</linearGradient> | ||
<clipPath id="clip0_2155_13483"> | ||
<rect width="1600" height="290" fill="white" /> | ||
</clipPath> | ||
</defs> | ||
</svg> |
Oops, something went wrong.