Skip to content

Commit d51feb3

Browse files
committed
Redesign team page with card-based layout
Replace the long-text AsciiDoc team page with a custom Vue component featuring categorized contributor cards, organization cards, and a publications reference table. - 3 contributor categories: Standards Leadership, Research & Engineering, Industry & Systems Engineering - Each contributor gets a card with initials avatar, role, highlights, and linked publications - Test case contributors shown in a compact grid - Contributing organizations shown as linked cards - Reference publications shown as a styled table with external links
1 parent 548eb5c commit d51feb3

2 files changed

Lines changed: 393 additions & 1 deletion

File tree

src/pages/about/team.vue

Lines changed: 392 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,392 @@
1+
<script setup lang="ts">
2+
import AnimatedSection from '@/components/ui/AnimatedSection.vue'
3+
import BaseCard from '@/components/ui/BaseCard.vue'
4+
import Breadcrumbs from '@/components/content/Breadcrumbs.vue'
5+
6+
interface Contributor {
7+
name: string
8+
role: string
9+
affiliation: string
10+
highlights: string[]
11+
publications?: { label: string; url: string }[]
12+
}
13+
14+
interface ContributorGroup {
15+
category: string
16+
description: string
17+
people: Contributor[]
18+
}
19+
20+
const contributors: ContributorGroup[] = [
21+
{
22+
category: 'Standards Leadership',
23+
description: 'Led the development, editorial work, and strategic direction of AP 210 across all four editions.',
24+
people: [
25+
{
26+
name: 'Thomas Thurman',
27+
role: 'AP 210 Project Leader',
28+
affiliation: 'PDES Inc. / Rockwell Collins',
29+
highlights: [
30+
'Led editorial development of all four editions of ISO 10303-210',
31+
'Authored the ARM and MIM EXPRESS schemas (38 modules)',
32+
'Created the AP 210 Training CD (July 2003)',
33+
'Directed the AP 210 Rules Model design process',
34+
'Authored multiple PDES test cases and annotated STEP examples',
35+
],
36+
publications: [
37+
{ label: 'NIST AMS 100-51', url: 'https://tsapps.nist.gov/publication/get_pdf.cfm?pub_id=935394' },
38+
{ label: 'Thermal Resistor Network (GCR 15-990)', url: 'https://www.nist.gov/publications/representation-thermal-resistor-network-model-packaged-component-step-ap210-edition-2' },
39+
{ label: 'PLM Requirements', url: 'https://tsapps.nist.gov/publication/get_pdf.cfm?pub_id=822191' },
40+
{ label: 'MBSE (INCOSE)', url: 'https://tsapps.nist.gov/publication/get_pdf.cfm?pub_id=824653' },
41+
{ label: 'Multi-Domain Component Models (IR 7717)', url: 'https://tsapps.nist.gov/publication/get_pdf.cfm?pub_id=906355' },
42+
],
43+
},
44+
{
45+
name: 'Allison Barnard Feeney',
46+
role: 'NIST Research Leader',
47+
affiliation: 'National Institute of Standards and Technology',
48+
highlights: [
49+
'Led NIST research on product manufacturing information (PMI) in STEP',
50+
'Co-authored research on migrating PMI models to a common core',
51+
'Advanced standards methodology for STEP interoperability',
52+
'Guided NIST research partnerships with PDES Inc. and industry',
53+
],
54+
publications: [
55+
{ label: 'NIST AMS 100-51', url: 'https://tsapps.nist.gov/publication/get_pdf.cfm?pub_id=935394' },
56+
],
57+
},
58+
{
59+
name: 'Kevin Brady',
60+
role: 'NIST Strategic Direction',
61+
affiliation: 'National Institute of Standards and Technology',
62+
highlights: [
63+
'Provided strategic direction for STEP standards at NIST',
64+
'Co-authored AP210 Ed2 Concept of Operations (NISTIR 7677)',
65+
'Co-authored thermal resistor network model research (GCR 15-990)',
66+
'Directed NIST programs supporting STEP implementation',
67+
],
68+
publications: [
69+
{ label: 'Concept of Operations (IR 7677)', url: 'https://tsapps.nist.gov/publication/get_pdf.cfm?pub_id=905123' },
70+
{ label: 'Thermal Resistor Network (GCR 15-990)', url: 'https://www.nist.gov/publications/representation-thermal-resistor-network-model-packaged-component-step-ap210-edition-2' },
71+
],
72+
},
73+
],
74+
},
75+
{
76+
category: 'Research & Engineering',
77+
description: 'Developed reference implementations, analytical models, and research foundations for AP 210.',
78+
people: [
79+
{
80+
name: 'Peter Denno',
81+
role: 'Computer Scientist',
82+
affiliation: 'National Institute of Standards and Technology',
83+
highlights: [
84+
'Co-authored PLM requirements analysis for product lifecycle management',
85+
'Co-authored MBSE research connecting AP210 with systems engineering',
86+
'Developed process-aware integration schema concepts',
87+
'Contributed to EXPRESS-X mapping language (ISO 10303-14)',
88+
'Advanced AP233/SysML integration with STEP data',
89+
],
90+
publications: [
91+
{ label: 'PLM Requirements', url: 'https://tsapps.nist.gov/publication/get_pdf.cfm?pub_id=822191' },
92+
{ label: 'MBSE (INCOSE)', url: 'https://tsapps.nist.gov/publication/get_pdf.cfm?pub_id=824653' },
93+
],
94+
},
95+
{
96+
name: 'Michael Keenan',
97+
role: 'Research Engineer',
98+
affiliation: 'NIST / Boeing',
99+
highlights: [
100+
'Developed the NIST JSDAI reference implementation for AP210',
101+
'Built the MIMqueries interface and model traversal APIs',
102+
'Created validation tools and test infrastructure',
103+
'Contributed to test case development for PDES Test Cases Project',
104+
],
105+
},
106+
{
107+
name: 'Jamie Stori',
108+
role: 'AP210 Conceptual Framework',
109+
affiliation: 'SFM Technology, Inc.',
110+
highlights: [
111+
'Authored AP210 Edition 2 Concept of Operations (NISTIR 7677)',
112+
'Co-authored thermal resistor network model for packaged components',
113+
'Defined the operational framework for the standard',
114+
],
115+
publications: [
116+
{ label: 'Concept of Operations (IR 7677)', url: 'https://tsapps.nist.gov/publication/get_pdf.cfm?pub_id=905123' },
117+
{ label: 'Thermal Resistor Network (GCR 15-990)', url: 'https://www.nist.gov/publications/representation-thermal-resistor-network-model-packaged-component-step-ap210-edition-2' },
118+
],
119+
},
120+
],
121+
},
122+
{
123+
category: 'Industry & Systems Engineering',
124+
description: 'Applied AP 210 in real-world engineering environments and advanced model-based systems engineering.',
125+
people: [
126+
{
127+
name: 'John Mettenburg',
128+
role: 'Principal Systems Engineer',
129+
affiliation: 'Rockwell Collins (now Collins Aerospace)',
130+
highlights: [
131+
'Co-authored MBSE research demonstrating AP210 in systems engineering workflows',
132+
'Bridged AP210 data standards with MBSE practices at Rockwell Collins',
133+
'Contributed to practical validation of AP210 in aerospace environments',
134+
],
135+
publications: [
136+
{ label: 'MBSE (INCOSE)', url: 'https://tsapps.nist.gov/publication/get_pdf.cfm?pub_id=824653' },
137+
],
138+
},
139+
{
140+
name: 'Dwayne Hardy',
141+
role: 'Systems Engineer',
142+
affiliation: 'American Systems',
143+
highlights: [
144+
'Co-authored MBSE research connecting STEP standards with systems engineering',
145+
'Contributed to analysis of AP210 support for SE data integration',
146+
],
147+
publications: [
148+
{ label: 'MBSE (INCOSE)', url: 'https://tsapps.nist.gov/publication/get_pdf.cfm?pub_id=824653' },
149+
],
150+
},
151+
{
152+
name: 'Gregory L. Smith',
153+
role: 'Design Rule Formalism',
154+
affiliation: 'The Boeing Company',
155+
highlights: [
156+
'Chaired AP210 design rule formalism discussions with Thurman and Bajaj',
157+
'Advanced constraint representation for electronic assembly design rules',
158+
],
159+
},
160+
{
161+
name: 'Manas Bajaj',
162+
role: 'DFM Research',
163+
affiliation: 'Georgia Tech',
164+
highlights: [
165+
'Contributed to design-for-manufacturability frameworks via AP210',
166+
'Participated in design rule formalism discussions',
167+
],
168+
},
169+
],
170+
},
171+
]
172+
173+
const testContributors = [
174+
{ name: 'James F. Adams', affiliation: 'The Boeing Company', note: 'PDES-181 Complex Multi-layer PCA' },
175+
{ name: 'Steve Waterbury', affiliation: 'NASA', note: 'Test cases and PLM research' },
176+
{ name: 'Mike Benda', affiliation: '', note: 'Recommended practices' },
177+
{ name: 'Jim Evans', affiliation: '', note: 'PDES test cases' },
178+
{ name: 'Kevin Cline', affiliation: '', note: 'PDES test cases' },
179+
{ name: 'Craig Lanning', affiliation: '', note: 'PDES test cases' },
180+
{ name: 'Paul Monson', affiliation: '', note: 'PDES test cases' },
181+
]
182+
183+
const organizations = [
184+
{
185+
name: 'NIST',
186+
full: 'National Institute of Standards and Technology',
187+
url: 'https://www.nist.gov',
188+
contributions: [
189+
'CFD analysis for thermal management',
190+
'Geometric Dimensioning and Tolerancing (GDT) for connectors and packages',
191+
'SPICE integration with AP210 mechanical design models',
192+
'JSDAI reference implementation and validation test cases',
193+
],
194+
},
195+
{
196+
name: 'PDES Inc.',
197+
full: 'PDES Inc.',
198+
url: 'https://pdesinc.org',
199+
contributions: [
200+
'AP210 Viewer development and testing',
201+
'IDF-to-AP210 conversion tools',
202+
'Training materials and educational resources',
203+
'Standards validation and test case development',
204+
],
205+
},
206+
{
207+
name: 'ISO TC 184/SC 4',
208+
full: 'ISO Technical Committee 184, Subcommittee 4',
209+
url: '',
210+
contributions: [
211+
'Governs the entire STEP (ISO 10303) family of standards',
212+
'Develops and maintains AP 210 under the Industrial data subcommittee',
213+
],
214+
},
215+
]
216+
217+
const publications = [
218+
{ id: 'NIST AMS 100-51', title: 'On Migrating ISO 10303 PMI Models to a Common Core', authors: 'Feeney & Thurman', url: 'https://tsapps.nist.gov/publication/get_pdf.cfm?pub_id=935394' },
219+
{ id: 'NIST AMS 300-12', title: 'Research Results and Recommendations for Universally Unique Identifiers', authors: 'NIST', url: 'https://nvlpubs.nist.gov/nistpubs/ams/NIST.AMS.300-12.pdf' },
220+
{ id: 'NIST GCR 15-990', title: 'Representation of Thermal Resistor Network Model in STEP AP210 Ed2', authors: 'Stori, Brady & Thurman', url: 'https://www.nist.gov/publications/representation-thermal-resistor-network-model-packaged-component-step-ap210-edition-2' },
221+
{ id: 'NIST GCR 15-991', title: 'Extensions of Recommended Practices for GD&T in STEP-AP210', authors: 'NIST', url: 'https://www.nist.gov/publications/extensions-recommended-practices-gdt-step-ap210-context-packaged-electronic-components' },
222+
{ id: 'NIST IR 6991', title: 'Thermal Resistor Network Model for a Packaged Component for Use in STEP AP210', authors: 'NIST', url: 'https://tsapps.nist.gov/publication/get_pdf.cfm?pub_id=903903' },
223+
{ id: 'NIST IR 7648', title: 'NIST IR 7648', authors: 'NIST', url: 'https://doi.org/10.6028/NIST.IR.7648' },
224+
{ id: 'PLM Requirements', title: 'Requirements on Information Technology for Product Lifecycle Management', authors: 'Denno & Thurman', url: 'https://tsapps.nist.gov/publication/get_pdf.cfm?pub_id=822191' },
225+
{ id: 'INCOSE MBSE', title: 'On Enabling a Model-Based Systems Engineering Discipline', authors: 'Denno, Thurman, Mettenburg & Hardy', url: 'https://tsapps.nist.gov/publication/get_pdf.cfm?pub_id=824653' },
226+
{ id: 'NIST IR 7677', title: 'AP210 Edition 2 Concept of Operations', authors: 'Stori & Brady', url: 'https://tsapps.nist.gov/publication/get_pdf.cfm?pub_id=905123' },
227+
{ id: 'NIST IR 7717', title: 'Use Cases for Management and Maintenance of Multi-Domain AP210 Component Models', authors: 'NIST', url: 'https://tsapps.nist.gov/publication/get_pdf.cfm?pub_id=906355' },
228+
]
229+
</script>
230+
231+
<template>
232+
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-12">
233+
<Breadcrumbs />
234+
235+
<!-- Header -->
236+
<AnimatedSection>
237+
<div class="text-center mb-16">
238+
<p class="font-mono text-xs tracking-[0.2em] uppercase text-elf-blue dark:text-elf-blue mb-3">People & Organizations</p>
239+
<h1 class="text-3xl sm:text-4xl font-serif font-bold text-gray-900 dark:text-white">Team & Acknowledgments</h1>
240+
<p class="mt-4 text-gray-500 dark:text-gray-400 max-w-2xl mx-auto leading-relaxed">
241+
AP 210 is the product of decades of collaborative work by researchers, engineers, and standards professionals
242+
from industry, government, and academia.
243+
</p>
244+
</div>
245+
</AnimatedSection>
246+
247+
<!-- Key Contributors — grouped by category -->
248+
<section v-for="(group, gi) in contributors" :key="group.category" class="mb-20">
249+
<AnimatedSection>
250+
<div class="mb-8">
251+
<h2 class="text-2xl font-serif font-bold text-gray-900 dark:text-white">{{ group.category }}</h2>
252+
<p class="mt-2 text-sm text-gray-500 dark:text-gray-400 max-w-2xl">{{ group.description }}</p>
253+
</div>
254+
</AnimatedSection>
255+
256+
<div class="grid md:grid-cols-2 lg:grid-cols-3 gap-5">
257+
<AnimatedSection v-for="(person, pi) in group.people" :key="person.name" :style="{ transitionDelay: `${(gi * 3 + pi) * 60}ms` }">
258+
<BaseCard :padding="'lg'" :hover="false">
259+
<div class="flex items-start gap-4 mb-4">
260+
<div class="w-12 h-12 rounded-full bg-elf-blue/10 dark:bg-elf-blue/15 flex items-center justify-center shrink-0">
261+
<span class="text-lg font-serif font-bold text-elf-blue dark:text-elf-blue">{{ person.name.split(' ').map(w => w[0]).join('') }}</span>
262+
</div>
263+
<div class="min-w-0">
264+
<h3 class="font-serif font-bold text-gray-900 dark:text-white text-lg leading-tight">{{ person.name }}</h3>
265+
<p class="text-sm text-elf-blue dark:text-elf-blue font-medium">{{ person.role }}</p>
266+
<p class="text-xs text-gray-400 dark:text-gray-500 mt-0.5">{{ person.affiliation }}</p>
267+
</div>
268+
</div>
269+
270+
<ul class="space-y-1.5 mb-4">
271+
<li v-for="h in person.highlights" :key="h" class="text-sm text-gray-600 dark:text-gray-300 flex items-start gap-2 leading-snug">
272+
<span class="w-1.5 h-1.5 rounded-full bg-elf-blue/40 dark:bg-elf-blue/30 shrink-0 mt-1.5" />
273+
{{ h }}
274+
</li>
275+
</ul>
276+
277+
<div v-if="person.publications?.length" class="pt-3 border-t border-gray-100 dark:border-gray-700/40">
278+
<p class="text-[0.65rem] font-mono uppercase tracking-wider text-gray-400 dark:text-gray-500 mb-2">Publications</p>
279+
<div class="flex flex-wrap gap-1.5">
280+
<a
281+
v-for="pub in person.publications"
282+
:key="pub.label"
283+
:href="pub.url"
284+
target="_blank"
285+
rel="noopener"
286+
class="inline-flex items-center text-xs px-2 py-1 rounded-md bg-gray-50 dark:bg-gray-800/60 text-gray-600 dark:text-gray-400 hover:text-elf-blue dark:hover:text-elf-blue hover:bg-elf-blue/5 dark:hover:bg-elf-blue/10 transition-colors"
287+
>
288+
{{ pub.label }}
289+
<svg class="w-3 h-3 ml-1 opacity-50" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"/></svg>
290+
</a>
291+
</div>
292+
</div>
293+
</BaseCard>
294+
</AnimatedSection>
295+
</div>
296+
</section>
297+
298+
<!-- Test Case & Training Contributors -->
299+
<section class="mb-20">
300+
<AnimatedSection>
301+
<div class="mb-8">
302+
<h2 class="text-2xl font-serif font-bold text-gray-900 dark:text-white">Test Cases & Training</h2>
303+
<p class="mt-2 text-sm text-gray-500 dark:text-gray-400 max-w-2xl">Contributors to PDES test cases, recommended practices, and training materials.</p>
304+
</div>
305+
</AnimatedSection>
306+
307+
<AnimatedSection>
308+
<div class="grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-4 gap-3">
309+
<div
310+
v-for="tc in testContributors"
311+
:key="tc.name"
312+
class="rounded-xl border border-gray-200/80 dark:border-gray-700/60 bg-white dark:bg-navy-light p-4"
313+
>
314+
<p class="font-semibold text-gray-900 dark:text-white text-sm">{{ tc.name }}</p>
315+
<p v-if="tc.affiliation" class="text-xs text-gray-400 dark:text-gray-500 mt-0.5">{{ tc.affiliation }}</p>
316+
<p class="text-xs text-gray-500 dark:text-gray-400 mt-1">{{ tc.note }}</p>
317+
</div>
318+
</div>
319+
</AnimatedSection>
320+
</section>
321+
322+
<!-- Contributing Organizations -->
323+
<section class="mb-20">
324+
<AnimatedSection>
325+
<div class="mb-8">
326+
<h2 class="text-2xl font-serif font-bold text-gray-900 dark:text-white">Contributing Organizations</h2>
327+
</div>
328+
</AnimatedSection>
329+
330+
<div class="grid md:grid-cols-3 gap-5">
331+
<AnimatedSection v-for="(org, i) in organizations" :key="org.name" :style="{ transitionDelay: `${i * 80}ms` }">
332+
<BaseCard :href="org.url || undefined" :padding="'lg'" :hover="!!org.url">
333+
<h3 class="font-serif font-bold text-xl text-gray-900 dark:text-white mb-1">{{ org.name }}</h3>
334+
<p class="text-xs text-gray-400 dark:text-gray-500 mb-4">{{ org.full }}</p>
335+
<ul class="space-y-2">
336+
<li v-for="c in org.contributions" :key="c" class="text-sm text-gray-600 dark:text-gray-300 flex items-start gap-2">
337+
<span class="w-1.5 h-1.5 rounded-full bg-elf-salmon/60 dark:bg-elf-salmon/40 shrink-0 mt-1.5" />
338+
{{ c }}
339+
</li>
340+
</ul>
341+
</BaseCard>
342+
</AnimatedSection>
343+
</div>
344+
</section>
345+
346+
<!-- Reference Publications -->
347+
<section class="mb-12">
348+
<AnimatedSection>
349+
<div class="mb-8">
350+
<h2 class="text-2xl font-serif font-bold text-gray-900 dark:text-white">Reference Publications</h2>
351+
<p class="mt-2 text-sm text-gray-500 dark:text-gray-400">Key NIST and INCOSE publications documenting AP 210 research and methodology.</p>
352+
</div>
353+
</AnimatedSection>
354+
355+
<AnimatedSection>
356+
<div class="rounded-xl border border-gray-200/80 dark:border-gray-700/60 bg-white dark:bg-navy-light overflow-hidden">
357+
<div class="divide-y divide-gray-100 dark:divide-gray-700/40">
358+
<a
359+
v-for="pub in publications"
360+
:key="pub.id"
361+
:href="pub.url"
362+
target="_blank"
363+
rel="noopener"
364+
class="flex items-start gap-4 px-5 py-3.5 hover:bg-elf-blue/[0.03] dark:hover:bg-elf-blue/[0.05] transition-colors group"
365+
>
366+
<span class="shrink-0 mt-0.5 font-mono text-[0.65rem] tracking-wider text-gray-400 dark:text-gray-500 bg-gray-50 dark:bg-gray-800/60 px-2 py-1 rounded-md">{{ pub.id }}</span>
367+
<div class="min-w-0 flex-1">
368+
<p class="text-sm font-medium text-gray-900 dark:text-white group-hover:text-elf-blue transition-colors leading-snug">{{ pub.title }}</p>
369+
<p class="text-xs text-gray-400 dark:text-gray-500 mt-0.5">{{ pub.authors }}</p>
370+
</div>
371+
<svg class="w-4 h-4 text-gray-300 dark:text-gray-600 group-hover:text-elf-blue shrink-0 mt-1 transition-colors" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"/></svg>
372+
</a>
373+
</div>
374+
</div>
375+
</AnimatedSection>
376+
377+
<AnimatedSection>
378+
<div class="mt-10 pt-8 border-t border-gray-100 dark:border-gray-700/40">
379+
<h2 class="text-xl font-serif font-bold text-gray-900 dark:text-white mb-3">Open Source Maintenance</h2>
380+
<p class="text-sm text-gray-500 dark:text-gray-400 leading-relaxed">
381+
The AP 210 online resources, including this website, the research data archive, and educational materials,
382+
are maintained by the <a href="https://expresslang.org" target="_blank" rel="noopener" class="text-elf-blue dark:text-elf-blue hover:underline">EXPRESS Language Foundation</a>
383+
and the open source community at <a href="https://github.com/expresslang" target="_blank" rel="noopener" class="text-elf-blue dark:text-elf-blue hover:underline">GitHub</a>.
384+
</p>
385+
<p class="text-sm text-gray-400 dark:text-gray-500 mt-3">
386+
The research datasets are released under Creative Commons Attribution 4.0 International License (CC-BY 4.0) to support open science and reproducible research.
387+
</p>
388+
</div>
389+
</AnimatedSection>
390+
</section>
391+
</div>
392+
</template>

0 commit comments

Comments
 (0)