# 🎨 REC Directory to MyUIbrix Conversion Guide

## 📋 Overview

This document describes the conversion of HTML/CSS elements from the `rec` directory into MyUIbrix page element structure.

---

## 🔍 Identified Elements from splitted.html

### 1. **Navigation / Header**
**HTML Classes:** `layout_NavbarContainer__R81Mg`, `Navbar_Container__zz5qI`
**CSS Files:** 1.css (Shaka player), 2.css (fonts + AnnounceBar), 3.css (general layout)
**Element Name:** `header`
**Variant:** `sparta_navbar`

**Features:**
- Logo with image (AC Sparta Praha)
- Burger menu button with animated icon
- Navigation links with buttons (Tickets, Fanzone)
- Separator between links
- Search functionality
- User authentication area

**CSS Styling:**
```css
.Navbar_Container__zz5qI {
  /* Main navbar styling */
}
.Navbar_Toggle__cO4vN {
  /* Burger button */
}
.Navbar_Brand__mfC75 {
  /* Logo area */
}
.Navbar_Links__Ce4_T {
  /* Navigation links */
}
```

---

### 2. **Hero Section - Homepage Header**
**HTML Classes:** `HomepageHeader_Container__8kG2y`
**CSS Files:** 6.css (HomepageHeader)
**Element Name:** `hero`
**Variant:** `sparta_featured_carousel`

**Features:**
- Full-width background image (absolute positioned)
- Article with categories badges
- H2 title and description text
- Primary button with "Play" action and chevron icon
- Navigation carousel at bottom with thumbnails
- Active state indicators
- Responsive design (mobile/desktop)

**Structure:**
```
<header class="HomepageHeader_Container__8kG2y">
  <picture> [Background Image] </picture>
  <article>
    <span class="HomepageHeader_Categories__QbuVC">
      [Category badges with separators]
    </span>
    <h2>HIGHLIGHTS: Sparta - Slavia</h2>
    <p>Key moments from the 315th derby</p>
    <a [Button]>Play</a>
  </article>
  <nav>
    [Thumbnail carousel with pagination]
  </nav>
</header>
```

**CSS Styling:**
- Height: 42.375rem (mobile), 50rem (tablet), 53rem (desktop)
- Flexbox layout with flex-end alignment
- Gradient overlay at bottom
- Article animation: `animateInArticle` 0.5s cubic-bezier
- Responsive font sizes

---

### 3. **Videos Section - Sparta TV**
**HTML Classes:** `Container_Container__Hb4bC`, `page_Tv__iWJ5P`, `HorizontalSlider_Container__fAULW`, `HomepageTvSlider_Slider__VQQkt`
**CSS Files:** 3.css (Container), 8.css (page styles), 10.css (Headline)
**Element Name:** `videos`
**Variant:** `sparta_horizontal_slider`

**Features:**
- Section heading with link and arrow icon
- Horizontal scrolling slider with controls
- Prev/Next buttons
- Article preview cards with:
  - Picture with responsive images
  - Meta info (UNLIMITED badge, categories)
  - Video duration
  - Play button overlay
- Draggable slides
- Transform-based animation

**Structure:**
```
<section class="Container_Container__Hb4bC page_Tv__iWJ5P">
  <h2 class="Headline_Container__4_M_i">
    <a href="/en/sparta-tv">Videos <i [arrow-right]></i></a>
  </h2>
  <div class="HorizontalSlider_Container__fAULW">
    <div data-context="controls">
      [Prev/Next buttons]
    </div>
    <div>
      <div class="HorizontalSlider_DataContainer__6Yydh" style="transform: translate3d(...)">
        [Slide items with articles]
      </div>
    </div>
  </div>
</section>
```

**CSS Highlights:**
- Gap: 2.5rem (mobile), 3rem (desktop)
- Slider buttons with disabled states
- Transform3d for smooth scrolling
- Responsive image sizing

---

### 4. **Teams Section with Tabs**
**HTML Classes:** `Container_Container__Hb4bC`, `HomepageTeams_Container__hklP0`, `TabsList_Container__0GSWS`, `TeamStatsTabs_Content__eEnaR`
**CSS Files:** 9.css (TeamStatsTabs)
**Element Name:** `team`
**Variant:** `sparta_tabs_stats`

**Features:**
- Tablist with team categories (Men A, Women A, Men B)
- Tab selection indicator with animation
- Team stats content area with:
  - Team photo
  - Call-to-action buttons ("Buy jersey", "Team details")
  - Squad tables
  - Statistics display
- Responsive column layout

**Structure:**
```
<section class="Container_Container__Hb4bC">
  <h2 class="Headline_Container__4_M_i">
    <a href="/en/tymy">Teams <i [arrow-right]></i></a>
  </h2>
  <div class="HomepageTeams_Container__hklP0">
    <main>
      <div class="TabsList_Container__0GSWS">
        <div class="TabsList_TablistContainer__vFD4P">
          <span class="TabsList_TabSelection__1FqGJ" [moving indicator]></span>
          <div role="tablist">
            <div role="tab">Men A</div>
            <div role="tab">Women A</div>
            <div role="tab">Men B</div>
          </div>
        </div>
        <div role="tabpanel">
          <div class="TeamStatsTabs_Content__eEnaR">
            [Team image and buttons]
          </div>
        </div>
      </div>
    </main>
  </div>
</section>
```

**CSS Highlights:**
- Background: `var(--colorBgSecondary, #1e1e1e)`
- Padding: 1.625rem 1.25rem (mobile), 2.5rem (desktop)
- Flexbox: column (mobile), row (desktop)
- Tab selection animation with transform

---

### 5. **Fanshop Section - Product Slider**
**HTML Classes:** `Container_Container__Hb4bC`, `page_Fanshop__7Bwng`, `HorizontalSlider_Container__fAULW`, `ShopSlider_Item__aRdi2`
**CSS Files:** Similar to Videos section
**Element Name:** `merch`
**Variant:** `sparta_product_slider`

**Features:**
- Section heading with external link and arrow-up-right icon
- Horizontal slider similar to Videos
- Product cards with:
  - Product image
  - Product name (bold)
  - Price display
  - "Buy" button with external link icon
- Prev/Next navigation
- Draggable slides

**Structure:**
```
<section class="Container_Container__Hb4bC page_Fanshop__7Bwng">
  <h2 class="Headline_Container__4_M_i">
    <a target="_blank" href="https://...">Fanshop <i [arrow-up-right]></i></a>
  </h2>
  <div class="HorizontalSlider_Container__fAULW">
    [Similar structure to Videos slider]
    <a class="ShopSlider_Item__aRdi2" href="...">
      <picture>[Product image]</picture>
      <div>
        <strong>Product name</strong>
        <div>
          <div class="ShopSlider_Prices__BJZI_">
            <var>1 999 Kč</var>
          </div>
          <button>Buy <i [arrow-up-right]></i></button>
        </div>
      </div>
    </a>
  </div>
</section>
```

---

### 6. **Footer with Partners Pyramid**
**HTML Classes:** `Footer_Container__nn9Ow`, `Footer_Partners__yESEU`, `Footer_PyramindTop__YcpaB`, `Footer_PyramindMid__ohJGg`, `Footer_PyramindDown__PDpgx`
**CSS Files:** 3.css, 8.css
**Element Name:** `footer`
**Variant:** `sparta_partners_pyramid`

**Features:**
- Three-tier pyramid structure for partners:
  - Top tier: 1 main partner (Betano)
  - Middle tier: 4 medium partners (EPET, Adidas, T-Mobile, Chance Liga)
  - Bottom tier: Multiple smaller partners
- Each partner with:
  - Logo image (SVG)
  - External link
  - Hover effects
- Footer sections with:
  - Navigation links
  - Social media
  - Newsletter signup
  - Legal information

**Structure:**
```
<footer class="Footer_Container__nn9Ow" data-full="true">
  <section class="Footer_Partners__yESEU">
    <div class="Container_Container__Hb4bC Footer_PyramindTop__YcpaB">
      [Main partner logo]
    </div>
    <div class="Container_Container__Hb4bC Footer_PyramindMid__ohJGg">
      [4 medium partner logos]
    </div>
    <div class="Container_Container__Hb4bC Footer_PyramindDown__PDpgx">
      [Multiple smaller partner logos]
    </div>
  </section>
  [Additional footer content sections]
</footer>
```

---

## 🎨 Common Design Patterns

### Color Variables
```css
--colorAccent: [Accent color]
--colorBgSecondary: #1e1e1e
--colorBgSemiTransparent8: hsla(0,0%,100%,.08)
--colorTextSecondary: [Secondary text color]
```

### Typography
- **Font Family:** `__zeleznaFont_39190a` (Custom Zelezna font)
- **Weights:** 100, 400, 500
- **Heading Sizes:**
  - H1: 2.25rem (mobile), 4rem (desktop)
  - H2: 1.75rem (mobile), 2.25rem (desktop)
  - H2 Headline: 1.75rem (mobile), 2rem (desktop)

### Responsive Breakpoints
- Mobile: < 1024px
- Tablet: 1024px - 1279px
- Desktop: ≥ 1280px

### Common Animations
- Cubic-bezier transitions: `cubic-bezier(.4,0,.6,1)`
- Transform3d for hardware acceleration
- Opacity fade-ins: 0 → 1 over 0.6s

### Icons
- Material Icons Round: `font-family: Material Icons Round`
- Custom icon implementation with `<i>` tags
- Icon sizes: 24px (default), 2rem (headlines)

---

## 📦 MyUIbrix Element Mappings

### Suggested New Elements/Variants

1. **header → sparta_navbar**
   - Full navigation bar with burger menu
   - Logo, links, search, authentication

2. **hero → sparta_featured_carousel**
   - Hero header with background image
   - Featured article with categories
   - Thumbnail navigation carousel

3. **videos → sparta_horizontal_slider**
   - Horizontal scrolling video cards
   - Prev/Next controls
   - UNLIMITED badges

4. **team → sparta_tabs_stats**
   - Tabbed team selector
   - Team photos and stats
   - CTA buttons for jersey and details

5. **merch → sparta_product_slider**
   - Product carousel
   - Price display
   - Buy buttons with external links

6. **footer → sparta_partners_pyramid**
   - Three-tier partner pyramid
   - Footer navigation
   - Newsletter and social

---

## 🛠️ Implementation Steps

### Step 1: Create Element Configurations

Add to `defaultElements.ts`:

```typescript
export const SPARTA_STYLE_ELEMENTS: PageElementConfig[] = [
  {
    page_type: 'homepage',
    element_name: 'header',
    variant: 'sparta_navbar',
    visible: true,
    display_order: 0,
    settings: {
      logo: '/images/sparta-logo.svg',
      searchEnabled: true,
      authEnabled: true,
    },
  },
  {
    page_type: 'homepage',
    element_name: 'hero',
    variant: 'sparta_featured_carousel',
    visible: true,
    display_order: 1,
    settings: {
      autoSwap: true,
      swapInterval: 5000,
      showThumbnails: true,
    },
  },
  {
    page_type: 'homepage',
    element_name: 'videos',
    variant: 'sparta_horizontal_slider',
    visible: true,
    display_order: 2,
    settings: {
      itemsPerView: 3,
      showUnlimitedBadge: true,
    },
  },
  {
    page_type: 'homepage',
    element_name: 'team',
    variant: 'sparta_tabs_stats',
    visible: true,
    display_order: 3,
    settings: {
      tabs: ['Men A', 'Women A', 'Men B'],
      showBuyJersey: true,
    },
  },
  {
    page_type: 'homepage',
    element_name: 'merch',
    variant: 'sparta_product_slider',
    visible: true,
    display_order: 4,
    settings: {
      itemsPerView: 4,
      currency: 'Kč',
    },
  },
  {
    page_type: 'homepage',
    element_name: 'footer',
    variant: 'sparta_partners_pyramid',
    visible: true,
    display_order: 5,
    settings: {
      pyramidTiers: 3,
      showNewsletter: true,
    },
  },
];
```

### Step 2: Add Variants to pageElements.ts

```typescript
export const ELEMENT_VARIANTS: Record<string, ElementVariant[]> = {
  // ... existing variants ...
  
  header: [
    // ... existing variants ...
    { 
      value: 'sparta_navbar', 
      label: 'Sparta Navbar', 
      description: 'AC Sparta Praha style navigation with burger menu, logo, links, and search' 
    },
  ],
  
  hero: [
    // ... existing variants ...
    { 
      value: 'sparta_featured_carousel', 
      label: 'Sparta Featured Carousel', 
      description: 'Hero header with background image, featured article, and thumbnail navigation' 
    },
  ],
  
  videos: [
    // ... existing variants ...
    { 
      value: 'sparta_horizontal_slider', 
      label: 'Sparta Horizontal Slider', 
      description: 'Horizontal scrolling video cards with UNLIMITED badges and controls' 
    },
  ],
  
  team: [
    // ... existing variants ...
    { 
      value: 'sparta_tabs_stats', 
      label: 'Sparta Tabs & Stats', 
      description: 'Tabbed team selector with photos, stats, and CTA buttons' 
    },
  ],
  
  merch: [
    // ... existing variants ...
    { 
      value: 'sparta_product_slider', 
      label: 'Sparta Product Slider', 
      description: 'Product carousel with prices and buy buttons' 
    },
  ],
  
  footer: [
    // ... existing variants ...
    { 
      value: 'sparta_partners_pyramid', 
      label: 'Sparta Partners Pyramid', 
      description: 'Three-tier partner pyramid layout with footer sections' 
    },
  ],
};
```

### Step 3: Create Component Files

Create the following React component files:

1. `frontend/src/components/elements/SpartaNavbar.tsx`
2. `frontend/src/components/elements/SpartaFeaturedCarousel.tsx`
3. `frontend/src/components/elements/SpartaHorizontalSlider.tsx`
4. `frontend/src/components/elements/SpartaTabsStats.tsx`
5. `frontend/src/components/elements/SpartaProductSlider.tsx`
6. `frontend/src/components/elements/SpartaPartnersFooter.tsx`

### Step 4: Extract and Convert CSS

Create modular CSS files for each component:

1. `frontend/src/styles/sparta-navbar.css`
2. `frontend/src/styles/sparta-hero.css`
3. `frontend/src/styles/sparta-slider.css`
4. `frontend/src/styles/sparta-team-tabs.css`
5. `frontend/src/styles/sparta-product-slider.css`
6. `frontend/src/styles/sparta-footer.css`

### Step 5: Copy Assets

Copy required assets from `rec` directory:
- Fonts (Zelezna font family)
- Icons (Material Icons Round)
- Any SVG/image assets

---

## 📝 CSS Classes Reference

### Navigation Classes
- `layout_NavbarContainer__R81Mg` - Container wrapper
- `Navbar_Container__zz5qI` - Main navbar
- `Navbar_Toggle__cO4vN` - Burger button
- `Navbar_Brand__mfC75` - Logo area
- `Navbar_Links__Ce4_T` - Navigation links
- `BurgerButton_Container__0gYhA` - Burger icon container
- `Button_Button__qQTgU` - Generic button
- `Separator_Container__x7nNU` - Separator element

### Hero Classes
- `HomepageHeader_Container__8kG2y` - Hero container
- `HomepageHeader_Categories__QbuVC` - Category badges area
- `Icon_Icon__uZZKy` - Icon base class
- `Icon_chevron-right__6riuc` - Chevron right icon
- `Icon_arrow-right__eVJh7` - Arrow right icon
- `Icon_arrow-up-right__tiMr_` - Arrow up-right icon

### Slider Classes
- `Container_Container__Hb4bC` - Generic container
- `HorizontalSlider_Container__fAULW` - Slider container
- `HorizontalSlider_Buttons__PsOev` - Button controls
- `HorizontalSlider_DataContainer__6Yydh` - Slide data container
- `HorizontalSlider_Slide__rALdW` - Individual slide
- `ArticlePreviewItem_Container__uRp20` - Article preview card
- `ArticlePreviewItem_MetaInfo__5gcGd` - Meta info overlay

### Team Tab Classes
- `HomepageTeams_Container__hklP0` - Teams container
- `TabsList_Container__0GSWS` - Tabs list container
- `TabsList_TablistContainer__vFD4P` - Tab list wrapper
- `TabsList_TabSelection__1FqGJ` - Active tab indicator
- `TeamStatsTabs_Content__eEnaR` - Tab content area
- `TeamStatsTabs_ContentButtons___3Q2j` - CTA buttons area

### Product/Shop Classes
- `page_Fanshop__7Bwng` - Fanshop section
- `ShopSlider_Item__aRdi2` - Product item
- `ShopSlider_Prices__BJZI_` - Price display

### Footer Classes
- `Footer_Container__nn9Ow` - Footer container
- `Footer_Partners__yESEU` - Partners section
- `Footer_PyramindTop__YcpaB` - Top tier (1 partner)
- `Footer_PyramindMid__ohJGg` - Middle tier (4 partners)
- `Footer_PyramindDown__PDpgx` - Bottom tier (multiple)

### Common Classes
- `Headline_Container__4_M_i` - Section headline
- `page_Container__ey6AU` - Generic page container
- `page_Tv__iWJ5P` - TV/Video page specific
- `page_Wrapper__UbSC1` - Page wrapper

---

## 🎯 Key Features to Implement

### 1. Horizontal Sliders
- Transform3d-based scrolling
- Prev/Next button controls
- Disabled state handling
- Drag support with `data-dragging` attribute
- Smooth animations

### 2. Tabs System
- Active tab indicator with transform animation
- ARIA-compliant tablist/tabpanel
- Keyboard navigation support
- Tab selection animation

### 3. Category Badges
- Inline badges with separators
- Different types: category, sparta-id, etc.
- Responsive sizing

### 4. Button System
- Multiple variants: primary, secondary, tertiary
- Icon support (left/right)
- Size options: default, small, large
- Square variant for icon-only buttons
- Pressed and disabled states

### 5. Responsive Images
- `<picture>` element with sources
- Loading strategies (lazy, eager, high priority)
- Decoding: async
- Object-fit: cover
- Responsive srcset

### 6. Animations
- Fade in/out with cubic-bezier
- Transform-based movements
- Backdrop-filter blur effects
- Hover transitions

---

## 🔗 Integration with MyUIbrix

### Using in MyUIbrix Editor

1. Open MyUIbrix Editor (`/?myuibrix=edit`)
2. Click "Add Element" (A key)
3. Select element category
4. Choose Sparta-style variant
5. Configure settings in Style Panel
6. Save changes (Ctrl+S)

### Customization Options

Each Sparta element should support:
- **Visibility toggle** - Show/hide element
- **Display order** - Change position in page
- **Settings object** - Element-specific configuration
- **Color scheme** - Match club colors
- **Responsive behavior** - Mobile/tablet/desktop

### Settings Schema Examples

**sparta_navbar settings:**
```json
{
  "logo": "/images/club-logo.svg",
  "logoWidth": 48,
  "logoHeight": 48,
  "searchEnabled": true,
  "authEnabled": true,
  "links": [
    { "label": "Tickets", "url": "/vstupenky", "variant": "tertiary" },
    { "label": "Fanzone", "url": "/fanzone", "variant": "tertiary" }
  ]
}
```

**sparta_featured_carousel settings:**
```json
{
  "autoSwap": true,
  "swapInterval": 5000,
  "showThumbnails": true,
  "thumbnailCount": 4,
  "showCategories": true,
  "buttonLabel": "Play",
  "buttonVariant": "primary"
}
```

**sparta_horizontal_slider settings:**
```json
{
  "itemsPerView": { "mobile": 1, "tablet": 2, "desktop": 3 },
  "gap": 16,
  "showControls": true,
  "enableDrag": true,
  "showUnlimitedBadge": true
}
```

---

## ✅ Testing Checklist

- [ ] All elements render correctly
- [ ] Responsive behavior works on mobile/tablet/desktop
- [ ] Animations are smooth (60fps)
- [ ] Hover effects work as expected
- [ ] Click/touch interactions function properly
- [ ] Keyboard navigation is accessible
- [ ] ARIA attributes are correct
- [ ] Images load with proper lazy loading
- [ ] Sliders scroll smoothly
- [ ] Tab system switches correctly
- [ ] External links open in new tabs
- [ ] Icons display properly
- [ ] Fonts load correctly
- [ ] Colors match design
- [ ] Settings are saved and loaded
- [ ] Element visibility toggle works
- [ ] Element reordering works
- [ ] MyUIbrix editor integration complete

---

## 📚 Additional Resources

### CSS Files Breakdown

- **1.css** - Shaka Player (video player library)
- **2.css** - Fonts (@font-face for Zelezna) + AnnounceBar
- **3.css** - General page layout, Container, Footer base
- **4.css** - (Not analyzed - likely more components)
- **5.css** - (Not analyzed - likely more components)
- **6.css** - HomepageHeader (Hero section)
- **7.css** - LastMatches, PosessionProgressBar
- **8.css** - Page specific styles, matches, versus, stats
- **9.css** - TeamStatsTabs
- **10.css** - ContestsCarousel, Headline

### Key Dependencies

- **React** - Component framework
- **Chakra UI** - UI component library (used in MyUIbrix)
- **Material Icons Round** - Icon font
- **Custom Zelezna Font** - Typography

### Browser Support

Ensure compatibility with:
- Chrome/Edge (latest)
- Firefox (latest)
- Safari (latest)
- Mobile browsers (iOS Safari, Chrome Mobile)

---

**Created:** October 15, 2025  
**Version:** 1.0.0  
**Status:** ✅ Documentation Complete - Ready for Implementation
