Skip to content

Commit 36e673a

Browse files
committed
Apply semantic variants to 15 existing accordions in case studies
Completes accordion component brand coherence by applying appropriate semantic variants based on content purpose across all existing usage. **Changes:** statsbomb.mdx (3 accordions → all status variant): - Line 598: "Year One: Finding the Core Partnership" - Line 606: "Years Two-Three: Scaling from Partnership to Distributed Team" - Line 666: "The External Constraint" - Rationale: Team building timeline milestones and achievements statsbomb-technical-appendix.mdx (12 accordions → 10 skill, 2 category): Skill variant (amber/gold - code implementations): - Line 64: "Example: Soccer Possession Rules (DSL Syntax)" - Line 106: "ANTLR Grammar Fragment" - Line 193: "Rule Engine Core Logic (TypeScript)" - Line 306: "Collection Flow State Machine (XState Configuration)" - Line 430: "Video Mode State Machine" - Line 566: "Pipeline Implementation (TypeScript)" - Line 788: "Graph Representation (TypeScript)" - Line 930: "Claims Model Implementation (TypeScript)" - Line 1094: "Implementation: Module-Scoped Keybindings (TypeScript)" - Line 1270: "Technical Implementation Notes" Category variant (sky blue - architectural categorizations): - Line 1067: "Keyboard Mapping Examples by Context" - Line 1249: "CV Pipeline Architecture" - Rationale: Organizational breakdowns and system classifications, NOT code **Visual Semantic Benefits:** Readers can now scan and instantly understand accordion content type: - 🟢 Green border (status) = Milestones/achievements (what happened) - 🟡 Amber border (skill) = Code implementations (how it's built) - 🔵 Blue border (category) = Architectural organization (how it's structured) **Impact:** - All 15 accordions now benefit from Egyptian semantic styling - Content type visually obvious before expansion - Consistent with Callout component pattern (left accent border + subtle bg) - Brand coherence complete: accordions feel native to Egyptian design system
1 parent e437b7c commit 36e673a

File tree

2 files changed

+14
-14
lines changed

2 files changed

+14
-14
lines changed

src/pages/portfolio/statsbomb-technical-appendix.mdx

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ import Accordion from '../../components/Accordion.astro';
6161
The DSL grammar separated three concerns: **entry validation** (dataspec), **sequencing logic** (rule definitions), and **aggregation rules** (grouping). Product managers wrote rules in readable syntax that compiled to execution logic.
6262
</Body>
6363

64-
<Accordion summary="Example: Soccer Possession Rules (DSL Syntax)">
64+
<Accordion variant="skill" summary="Example: Soccer Possession Rules (DSL Syntax)">
6565

6666
```antlr
6767
// Possession rule: Team has active carry, received fouls, or forced ball out
@@ -103,7 +103,7 @@ turnover_rule:
103103

104104
</Accordion>
105105

106-
<Accordion summary="ANTLR Grammar Fragment">
106+
<Accordion variant="skill" summary="ANTLR Grammar Fragment">
107107

108108
```antlr
109109
grammar Dataspec;
@@ -190,7 +190,7 @@ WS: [ \t\r\n]+ -> skip;
190190
The rule engine consumed parsed DSL rules and atomic events, emitting derived facts. It maintained three data structures: **event stream** (immutable log), **active states** (mutable phase tracker), and **derived facts** (computed aggregations).
191191
</Body>
192192

193-
<Accordion summary="Rule Engine Core Logic (TypeScript)">
193+
<Accordion variant="skill" summary="Rule Engine Core Logic (TypeScript)">
194194

195195
```typescript
196196
// Rule engine maintains event stream, phase state, and derived facts
@@ -303,7 +303,7 @@ function evaluateAggregations(
303303
<p>XState machines made illegal UI states impossible. Can't submit without required fields. Can't enter edit mode while video plays. State transitions became testable without rendering components.</p>
304304
</Callout>
305305

306-
<Accordion summary="Collection Flow State Machine (XState Configuration)">
306+
<Accordion variant="skill" summary="Collection Flow State Machine (XState Configuration)">
307307

308308
```typescript
309309
import { createMachine, assign } from 'xstate';
@@ -427,7 +427,7 @@ const collectionFlowMachine = createMachine({
427427

428428
</Accordion>
429429

430-
<Accordion summary="Video Mode State Machine">
430+
<Accordion variant="skill" summary="Video Mode State Machine">
431431

432432
```typescript
433433
// Video mode: Manual playback, loop mode, editing
@@ -563,7 +563,7 @@ graph TD
563563

564564
</MermaidDiagram>
565565

566-
<Accordion summary="Pipeline Implementation (TypeScript)">
566+
<Accordion variant="skill" summary="Pipeline Implementation (TypeScript)">
567567

568568
```typescript
569569
// Composable transformation functions
@@ -785,7 +785,7 @@ graph TD
785785

786786
</MermaidDiagram>
787787

788-
<Accordion summary="Graph Representation (TypeScript)">
788+
<Accordion variant="skill" summary="Graph Representation (TypeScript)">
789789

790790
```typescript
791791
// Event graph: Nodes are events, edges are relationships
@@ -927,7 +927,7 @@ graph TD
927927

928928
</MermaidDiagram>
929929

930-
<Accordion summary="Claims Model Implementation (TypeScript)">
930+
<Accordion variant="skill" summary="Claims Model Implementation (TypeScript)">
931931

932932
```typescript
933933
// Claim: Assertion about entity property with provenance
@@ -1064,7 +1064,7 @@ const getPendingConflicts = (entities: GoldenEntity[]): ConflictReview[] => {
10641064
Contextual keyboard mappings with module scoping meant the same key could trigger different actions depending on context. Collectors touch-typed events like Vim users touch-type code—hands stayed on keyboard, eyes stayed on video.
10651065
</Body>
10661066

1067-
<Accordion summary="Keyboard Mapping Examples by Context">
1067+
<Accordion variant="category" summary="Keyboard Mapping Examples by Context">
10681068

10691069
**Main Collection View:**
10701070
- `t` - Create new event (pass/shot/tackle)
@@ -1091,7 +1091,7 @@ const getPendingConflicts = (entities: GoldenEntity[]): ConflictReview[] => {
10911091

10921092
</Accordion>
10931093

1094-
<Accordion summary="Implementation: Module-Scoped Keybindings (TypeScript)">
1094+
<Accordion variant="skill" summary="Implementation: Module-Scoped Keybindings (TypeScript)">
10951095

10961096
```typescript
10971097
// Keyboard context: Active module determines key mappings
@@ -1246,7 +1246,7 @@ collectionFlowMachine.onTransition((state) => {
12461246
<p>Full automation would require 10x model complexity for diminishing returns. Edge cases (occlusion, unusual angles, poor lighting) failed ~10-20% of the time. Semi-automated approach: 30 seconds vs. 2-3 minutes manual, 99%+ accuracy with human verification.</p>
12471247
</Callout>
12481248

1249-
<Accordion summary="CV Pipeline Architecture">
1249+
<Accordion variant="category" summary="CV Pipeline Architecture">
12501250

12511251
**Pipeline Stages:**
12521252

@@ -1267,7 +1267,7 @@ collectionFlowMachine.onTransition((state) => {
12671267

12681268
</Accordion>
12691269

1270-
<Accordion summary="Technical Implementation Notes">
1270+
<Accordion variant="skill" summary="Technical Implementation Notes">
12711271

12721272
```typescript
12731273
// CV service API contract

src/pages/portfolio/statsbomb.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -603,7 +603,7 @@ Month one backend: a single Go endpoint called `sync`—batch, offline. We start
603603

604604
</Accordion>
605605

606-
<Accordion summary="Years Two-Three: Scaling from Partnership to Distributed Team" class="mb-6">
606+
<Accordion variant="status" summary="Years Two-Three: Scaling from Partnership to Distributed Team" class="mb-6">
607607

608608
Adham and I could execute together, but the domain kept expanding. The transition from two-person partnership to distributed team took longer than it needed—I was learning how to lead engineers while building production systems. The tension: we were protective of architectural integrity while the domain kept expanding, and limiting that thinking to just us became a bottleneck. Every new subsystem, every architectural decision, required our direct involvement.
609609

@@ -663,7 +663,7 @@ By year three, we had built the hiring and mentoring systems needed to scale bey
663663
They took the foundational concepts and applied them to contexts we hadn't explored yet.
664664
</Body>
665665

666-
<Accordion summary="The External Constraint" class="mb-6">
666+
<Accordion variant="status" summary="The External Constraint" class="mb-6">
667667

668668
In 2022, I left Egypt. By then: 1000+ collectors, internal DSLs shipped, American football expansion worked. The customer-facing DSL that would let clients define their own derived facts remained unfinished when I left—team scaling became the bottleneck, not the architecture.
669669

0 commit comments

Comments
 (0)