@@ -59,6 +59,37 @@ <h2 class="font-serif text-2xl text-gray-900 dark:text-slate-50 mb-4">Preamble</
59
59
< div id ="articles " class ="space-y-6 ">
60
60
</ div >
61
61
62
+ < section id ="pledged-orgs " class ="my-16 ">
63
+ < h2 class ="font-serif text-2xl text-gray-900 dark:text-slate-50 mb-6 "> Organizations That Have Pledged</ h2 >
64
+ < div class ="grid grid-cols-1 md:grid-cols-2 gap-4 " id ="org-grid ">
65
+ < div class ="bg-white dark:bg-slate-900 rounded-lg p-4 shadow-sm border border-gray-200 dark:border-slate-800 ">
66
+ < div class ="flex items-start justify-between ">
67
+ < div >
68
+ < h3 class ="font-semibold text-gray-900 dark:text-slate-200 "> Pixelfed</ h3 >
69
+ < p class ="text-sm text-gray-600 "> Pledged on Jan 11, 2025</ p >
70
+ </ div >
71
+ < a
72
+ class ="inline-flex items-center gap-x-1.5 rounded-full px-2 py-1 text-xs font-medium text-gray-900 dark:text-slate-200 dark:hover:text-slate-400 dark:hover:ring-slate-800 ring-1 ring-inset ring-gray-200 dark:ring-slate-600 "
73
+ href ="https://pixelfed.org "
74
+ target ="_blank ">
75
+ Website
76
+ </ a >
77
+ </ div >
78
+ < p class ="text-gray-700 dark:text-slate-500 text-sm mt-2 ">
79
+ "As a founding signatory, Pixelfed built these principles directly into our federated photo-sharing platform's architecture, with privacy-first design, no tracking, and federation at its core."
80
+ </ p >
81
+ </ div >
82
+ </ div >
83
+ </ section >
84
+
85
+ < section id ="pledge-form " class ="bg-white dark:bg-slate-900 rounded-lg shadow-md p-8 border-l-4 border-slate-600 ">
86
+ < h2 class ="text-2xl font-bold mb-6 dark:text-slate-50 "> Take the Pledge</ h2 >
87
+ < p class ="text-sm text-gray-600 dark:text-slate-300 mb-6 ">
88
+ By pledging, your organization commits to implementing and upholding these principles.
89
+ To apply, please send an email from your ethical organization with your website, and a statement about the pledge to
< a href ="
mailto:[email protected] "
target ="
_blank "
class ="
font-bold "
> [email protected] </ a > . All pledges are reviewed before being publicly listed.
90
+ </ p >
91
+ </ section >
92
+
62
93
< footer class ="mt-12 pt-8 border-t border-gray-200 dark:border-slate-800 ">
63
94
< p class ="text-center text-gray-600 dark:text-slate-300 text-sm ">
64
95
This Charter is a living document, subject to regular review and amendment
@@ -239,7 +270,11 @@ <h2 class="font-serif text-2xl text-gray-900 dark:text-slate-50 mb-4">Preamble</
239
270
}
240
271
]
241
272
}
242
- ] ;
273
+ ] ;
274
+
275
+ const pledges = [
276
+ // add here
277
+ ] ;
243
278
244
279
function createArticleElement ( article , index ) {
245
280
const articleElement = document . createElement ( 'div' ) ;
@@ -283,14 +318,41 @@ <h4 class="text-xl font-semibold text-gray-800 dark:text-slate-50 mb-2">${princi
283
318
return articleElement ;
284
319
}
285
320
321
+ function displayPledges ( ) {
322
+ const grid = document . getElementById ( 'org-grid' ) ;
323
+ pledges . forEach ( pledge => {
324
+ const pledgeEl = document . createElement ( 'div' ) ;
325
+ pledgeEl . className = 'bg-white dark:bg-slate-900 rounded-lg p-4 shadow-sm border border-gray-200 dark:border-slate-800' ;
326
+ pledgeEl . innerHTML = `
327
+ <div class="flex items-start justify-between">
328
+ <div>
329
+ <h3 class="font-semibold text-gray-900 dark:text-slate-200">${ pledge . name } </h3>
330
+ <p class="text-sm text-gray-600">Pledged on ${ pledge . date } </p>
331
+ </div>
332
+ <a
333
+ class="inline-flex items-center gap-x-1.5 rounded-full px-2 py-1 text-xs font-medium text-gray-900 dark:text-slate-200 dark:hover:text-slate-400 dark:hover:ring-slate-800 ring-1 ring-inset ring-gray-200 dark:ring-slate-600"
334
+ href="${ pledge . website } "
335
+ target="_blank">
336
+ Website
337
+ </a>
338
+ </div>
339
+ <p class="text-gray-700 dark:text-slate-500 text-sm mt-2">${ pledge . statement } </p>
340
+ ` ;
341
+ grid . appendChild ( pledgeEl ) ;
342
+ } ) ;
343
+ }
344
+
286
345
function initializeCharter ( ) {
287
346
const articlesContainer = document . getElementById ( 'articles' ) ;
288
347
articles . forEach ( ( article , index ) => {
289
348
articlesContainer . appendChild ( createArticleElement ( article , index ) ) ;
290
349
} ) ;
291
350
}
292
351
293
- document . addEventListener ( 'DOMContentLoaded' , initializeCharter ) ;
352
+ document . addEventListener ( 'DOMContentLoaded' , function ( ) {
353
+ initializeCharter ( ) ;
354
+ displayPledges ( ) ;
355
+ } ) ;
294
356
</ script >
295
357
</ body >
296
358
</ html >
0 commit comments