Follow

Telekom design system demos

Heritage: component and template documentation for a telco brand

Two live demos from the early design-system work for Telekom: a component and template lab — navigation with and without the brand bar, key-visual placements, text and list sections, overlays, sliders, product teasers — and the introduction that explains the system behind it.

Both are still up, which is more than most demos of that era manage.


FactDetail
Demo 1Component / template lab (VC)
Demo 2Introduction and documentation
ScopeNavigation variants, templates, product teasers
Period2014–2016

What's in it

Variants, explicitly

Navigation with brand bar, without it, logged-in state, in front of the key visual — the variants were the documentation.

Templates, not just components

The lab showed composed pages, which is how stakeholders judge a design system.

In detail

What is actually inside it

Variants *are* the documentation

Showing navigation in four states — brand bar, no brand bar, logged in, in front of the key visual — communicates the rules faster than any prose page.

Templates, not just components

The lab showed composed pages. Stakeholders judge a design system by pages, so pages were what it demonstrated.

DetailValue
Demo 1Component / template lab (VC)
Demo 2Introduction and documentation
Period2014–2016

Technical notes

The decisions behind it

Why do these still matter?
Because they are the earliest recorded version of the argument this whole portfolio keeps making: components are the easy half, the composition rules are the product. Both demos are still online, which is more than most work from 2012 survives.

Inside the lab

Eight template pages and a live configurator

8
template pages
Navigation in three states, text elements, text sections, content lists, overlays and sliders — each a standalone page with the real brand bar, mega navigation and three-level footer around it.
4
key visuals
Four key-visual demos (#keyvisual-demo-1 … -4), each a background image and a transparent content PNG moving on separate data-throttleSpeed values.
88
icon classes
One class per glyph across two icon fonts, TeleIconUi and Telekom-Icon, shipped as eot, woff, ttf and svg for the IE-era font stack.
4
breakpoints
col-s-12 col-m-6 col-l-3 with offsets on a 12-column grid at 320 / 640 / 1024 / 1500 px; the fixed container is 1009 px wide, 1297 px above 1500.

Eight pages, each a whole template rather than a component gallery: navigation-with-brandbar, navigation-without-brandbar, navigation-before-keyvisual, text-elements, text-sections, list-elements, overlay and slider.

Navigation is the largest of them. .l-navigation.nav-main holds up to seven mega-dropdown columns, with separate top-level trees for private and business audiences (Privatkunden / Geschäftskunden) next to a DE/EN toggle. Under 640 px the whole thing becomes a drill-down — .nav-mobile-container#drilldown-root with js-drilldown-back, walking one level at a time instead of stacking an accordion. The brand bar is a logo SVG plus a slogan SVG; the logged-in variant is the same page with the entire l-brandbar-wrap block deleted and <body class="l-without-brandbar"> set. That is the whole difference between the two files.

Key visuals are treated as a placement problem, so there are four of them: each .keyvisual pairs a background image with a content PNG, with data-throttleSpeed="2" on one layer and "4" on the other driving the parallax. The three navigation templates exist again under /configurator/, with a control panel beside the live page — nav style (ULTRA / Regular), 21 px or 18 px navigation type, light/dark theme, sub-navigation, icons, call-to-action, product name, private/business, dropdown type (normal / mega / none), key-visual behaviour (fixed, fixed + parallax, movable, hidden) and footer size (large dark / medium dark / small light). The panel is part of the demo: a stakeholder can flip the rules and watch the page answer.

The rest is the section vocabulary: a three-step headline scale plus a separate product headline, an eyebrow kicker and text-intro lead, two-column text/image blocks that flip with has-image-left, two-column tariff teasers (.c-text-image-product), content lists that expand in place (is-expandable, has-expandable-section), overlays in small / large / fullscreen, and Slick sliders in a dots and a title-navigation flavour. Sticky navigation gets an explicit .l-navigation-sticky-spacer element rather than a sticky-position trick.

How it was built

Two layers, Grunt, and no public repository

Two style layers, intentionally kept apart. components.min.css (81 KB) is the brand base — fonts, buttons, forms, tables, icons, the 12-column grid — and a second sheet, rm-visual_consistensy.css (70 KB), owns everything the templates add: brand bar, navigation, footers, sections, teasers and the configurator. The same split holds in JavaScript (components.min.js 68 KB, rm-visual_consistensy.js 110 KB). The rm- prefix is the project's internal name, Ruhmesmeile; the demo pages title themselves "VC" for visual consistency.

The conventions are readable in the class names and they never drift: l- for layout (.l-section, .l-footer, .l-navigation), c- for components (.c-brandbar, .c-text-image-wrap), is- / has- for state (.is-dark, .is-sticky, .is-expandable, .has-dropdown), and js- for behaviour hooks (.js-drilldown-back, .js-open-mobile-menu) so script and style never share a selector. Responsive helpers are classes too: hidden-m, hidden-l, hidden-xl, text-s-left.

The build is documented in the introduction, and it is a Grunt build. npm install pulls the devDependencies; grunt tests then distributes, with --force carrying it past a known csslint false positive on @-moz-document; dist-css, dist-js, dist-html and dist split the outputs; grunt watch rebuilds on change with livereload. CSS is compiled by Ruby Sass (grunt-contrib-sass, Sass 3.4.10 on Ruby 2.0.0p247), checked by scss-lint 0.33.0, JavaScript is unit-tested with QUnit under PhantomJS, and the 17-page documentation is generated by Jekyll 2.2.0 from Markdown. jQuery 1.11.2 loads from Google's CDN, and html5shiv and Respond.js sit behind an <!--[if lte IE 8]> conditional — IE8 was a supported target, not a footnote.

The published versions read like the tooling era they come from. The release notes run from 2.0.0-alpha [12.06.2014] through 2.0.0-beta.10 [01.06.2015], 2.0.0 [08.06.2015] and 2.0.1 [26.06.2015] — twelve dated prereleases in a year — alongside pinned dependency versions (npm 1.3.11, DevKit 4.7.2 built 2013-02-24, Jekyll 2.2.0). That is Grunt tasks, Ruby Sass, Jekyll and PhantomJS: before bundlers, PostCSS, ES modules and token pipelines were the default. The deployed files carry their own stamps — the lab serves Telekom Components v2.1.0 [2016-10-17], the introduction v2.0.1 [2015-06-25], both "Copyright 2014–2016 Deutsche Telekom AG" — so the system kept shipping after the introduction documented it.

The repository is not public. Nothing here was read from a source tree; there is none to point at. The evidence is the two deployments and the files they serve: the eight lab pages and three configurator twins, components.min.*, rm-visual_consistensy.*, the optional theme-bevel, theme-dark and theme-debug sheets the documentation site loads, and the introduction's own installation and release notes.