← All courses
UI · Free course

Theming & Responsive Layouts

A great app looks right on every screen and matches your brand. This course shows you how to design adaptive themes and mobile-friendly layouts in Wisej.NET using the theme builder — no CSS gymnastics required. You'll craft and customize themes, build layouts that respond cleanly from desktop to phone, and apply consistent styling across an application.

Design adaptive themes and mobile-friendly layouts with the theme builder.

Start this free course

Also available in: DeutschFrançaisItalianoEspañol

Curriculum

Module 1: The Wisej.NET Visual System

Module 1 of Theming & Responsive Layouts — design adaptive themes and mobile-friendly layouts with the Theme Builder. Read the lesson guide and the lab / exam guide, watch the Where a control's look and layout really come from walkthrough, pass the knowledge check, then complete the hands-on lab in Adaptive Operations Console.

  1. ReadingLesson Guide · 14 min

    How server-side controls, client-side widgets, theme appearances, states, CSS classes and layout engines together produce what the user sees, which of the three customization layers owns each decision, and the Adaptive Operations Console shell that grows across the course. What this means for a Wisej.NET developer — and how to read this module.

    Read the lesson guide (PDF)

  2. ReadingLab / Exam Guide · 10 min

    What you'll build in the hands-on lab, the suggested approach, and the required deliverables.

    Read the lesson guide (PDF)

  3. Video lessonWhere a control's look and layout really come from · 14 min

    Where a control's look and layout really come from — a guided Module 1 walkthrough, built step by step in Adaptive Operations Console. Runs right here in the player.

    Narration transcript

    Build the Adaptive Operations Console by separating appearance from layout. In the Wisej.NET visual system, knowing which layer owns a decision helps you change the application consistently instead of fixing individual controls one at a time.

    Follow the appearance key from a server control to the theme and then to the browser widget. The key selects the visual definition, so one theme change can affect every control that uses that appearance.

    A theme describes colors, fonts, images, appearances, states, styles, and properties in one structured file. Named color and font tokens connect those definitions, making a visual choice reusable across controls, widget metrics, and designer previews.

    Distinguish theme decisions, server-control properties, and direct browser styling. Use the theme for shared appearance, control properties for the relevant behavior and layout, and scoped cascading style sheets only where a browser-specific rule is justified.

    A fixed button background describes only one visual value, leaving hover and pressed behavior unresolved. Choose an appearance key for those states, a class for the metric card, an inline style for a computed value, and docking for placement.

    Dock the toolbar above, status below, navigation left, details right, and workspace in the remaining area. Give the workspace a minimum size, and use the viewport-filling page's resize event to report the browser width for inspection.

    Inventory the visual decisions before editing a theme. Record the controls, ten color tokens, three font tokens, five regions, and six breakpoints, assigning each item an owner so later changes go to the appropriate layer.

    Narrow the browser to tablet width and watch the width indicator and docked regions. The details panel is pushed out, exposing the limit of this desktop shell: docking alone has not yet defined how the workflow adapts.

    For the first lab, deliver the five-region shell, recorded base theme, visual inventory, and browser-width status. This establishes a visible baseline whose current limitations can be compared with the responsive improvements in later modules.

  4. ReadingAI Coding Exercise · 20 min

    Build this module's AdaptiveOps sample with ChatGPT or Claude from a ready-made prompt that points the model at this module's specification, then review, run and extend what it gives you — including against our own reference build on GitHub.

    Read the lesson guide (PDF)

  5. Knowledge checkModule 1 Knowledge Check · 10 min · Pass mark 80%
  6. Hands-on labLab — Console Shell and Visual Inventory · 45 min

    Objective: Create the Adaptive Operations Console solution and its first desktop shell: a main Page with a top toolbar panel, a left navigation panel, a fill workspace, a right details panel and a bottom status panel built with Dock and nested Panels. Choose a built-in base theme and record the choice, write a VisualInventory.md that lists the controls needing custom appearances, the named color and font tokens, the layout regions and the desktop, tablet and phone breakpoints, and add a status label that reports the current browser width so later modules can verify profiles. Deliverables: Adaptive Operations Console solution with a docked desktop shell of toolbar, navigation, workspace, details and status panels; Base theme chosen and configured, with the reason recorded in the lab notes; VisualInventory.md listing controls that need appearances, theme tokens, layout regions and breakpoints; Status label that reports the current browser width; Desktop screenshot and a note explaining which layer owns each visual decision.

Module 2: Theme Builder and Theme JSON Internals

Module 2 of Theming & Responsive Layouts — design adaptive themes and mobile-friendly layouts with the Theme Builder. Read the lesson guide and the lab / exam guide, watch the Theme Builder walkthrough, pass the knowledge check, then complete the hands-on lab in the Adaptive Operations Console.

  1. ReadingLesson Guide · 14 min

    Creating a theme from a base theme in the Theme Builder, the JSON structure of colors, fonts, images, appearances, states, styles, properties and components, appearance inheritance and state order, and named color and font tokens as design assets. What this means for a Wisej.NET developer — and how to read this module.

    Read the lesson guide (PDF)

  2. ReadingLab / Exam Guide · 10 min

    What you'll build in the hands-on lab, the suggested approach, and the required deliverables.

    Read the lesson guide (PDF)

  3. Video lessonBuild the AdaptiveOps theme in the Theme Builder · 14 min

    Build the AdaptiveOps theme in the Theme Builder — a guided Module 2 walkthrough, built step by step in the Adaptive Operations Console. Runs right here in the player.

    Narration transcript

    Create AdaptiveOps from an existing base theme so the console inherits a complete visual foundation. The Theme Builder lets you express the application's identity centrally instead of rebuilding its appearance through scattered control-property assignments.

    Repeating a brand color across many local overrides makes each adjustment harder to coordinate and still misses interaction states. A central theme gives the color and its state behavior one maintained definition instead of tying them to internal browser structure.

    Inspect colors, images, fonts, and appearances as separate theme sections. Within an appearance, states and components define styles and widget properties; understanding that structure tells you where a change belongs and what the application may override.

    Click the preview to discover the appearance path through Last Clicked before editing it. Use the tree to locate structure and the property grid to change values, then check the live preview to confirm the intended control changed.

    Let action-button inherit the base button and override only the intended three states. Focused and disabled behavior remain inherited; inspect state order with default first before changing a color that may be coming from a later state.

    Define the ten named colors and three fonts once, then reference those names from appearances. The primary blue and accent amber become shared tokens, so future brand changes do not require finding repeated hexadecimal values across the theme.

    Select the startup theme in Default.json and use Application.Theme when changing only the current session. Assign action-button to the primary command and remove its fixed background, otherwise the local override can hide the theme's intended appearance.

    Switch the console to AdaptiveOps and inspect more than its default colors. Hover and press Save, check the invalid editor, and read the theme status so the demonstration verifies state behavior as well as successful theme selection.

    Build the tokenized theme and its requested appearances, including action-button, then test them in both preview and the console. Seeing the same definitions work in those two contexts helps catch overrides or missing states before handoff.

  4. ReadingAI Coding Exercise · 20 min

    Build this module's AdaptiveOps sample with ChatGPT or Claude from a ready-made prompt that points the model at this module's specification, then review, run and extend what it gives you — including against our own reference build on GitHub.

    Read the lesson guide (PDF)

  5. Knowledge checkModule 2 Knowledge Check · 10 min · Pass mark 80%
  6. Hands-on labLab — AdaptiveOps Theme · 45 min

    Objective: Create the AdaptiveOps theme from a built-in base theme in the Theme Builder. Define a named color palette with brandPrimary, brandAccent, surface, surfaceAlt, textMain, textMuted, danger, warning, success and focusFrame plus default, heading and mono fonts, then restyle the button, panel, tab, grid header, invalid editor and tooltip appearances using those tokens. Add an action-button appearance that inherits from button and overrides only its default, hovered and pressed states, verify every change in the Theme Builder preview and load the theme in the Adaptive Operations Console. Deliverables: AdaptiveOps.theme created from a base theme and loaded by the application; Named color tokens and default, heading and mono font tokens defined once and reused; Button, panel, tab, grid header, invalid editor and tooltip appearances restyled from the tokens; action-button appearance inheriting from button with overridden default, hovered and pressed states; Theme Builder preview screenshots and a note on state order and inheritance decisions.

Module 3: CSS, CssClass, CssStyle, States, and Runtime Theme Changes

Module 3 of Theming & Responsive Layouts — design adaptive themes and mobile-friendly layouts with the Theme Builder. Read the lesson guide and the lab / exam guide, watch the CssClass, CssStyle and session theme walkthrough, pass the knowledge check, then complete the hands-on lab in Adaptive Operations Console.

  1. ReadingLesson Guide · 14 min

    Adding targeted CSS safely with CssClass and a scoped application stylesheet, keeping CssStyle for one-off dynamic values, using AppearanceKey and custom states for semantic variants, and switching themes at startup or for one session at runtime. What this means for a Wisej.NET developer — and how to read this module.

    Read the lesson guide (PDF)

  2. ReadingLab / Exam Guide · 10 min

    What you'll build in the hands-on lab, the suggested approach, and the required deliverables.

    Read the lesson guide (PDF)

  3. Video lessonOne visual change, three ways: appearance, CssClass, CssStyle · 14 min

    One visual change, three ways: appearance, CssClass, CssStyle — a guided Module 3 walkthrough, built step by step in Adaptive Operations Console. Runs right here in the player.

    Narration transcript

    Compare three ways to style the same metric card by asking who will maintain the result. A theme appearance, a named class, and an inline style may look identical today while creating very different responsibilities for future changes.

    Use an appearance for a reusable visual variant and a class for a searchable application-specific rule. Repeated anonymous inline overrides have no shared definition, so every copied panel becomes another place that can drift when the design changes.

    Choose the owner before writing the style: theme for standard controls, appearance key for meaning, class for application-specific interface, and inline style for one computed value. Remove conflicting overrides that prevent the chosen owner from actually controlling the result.

    The Assign command expresses its role with action-button, while the theme supplies its states. Likewise, a stale-row state describes presentation; the application must still own the underlying business data instead of inferring it from a color.

    Replace four copied styles with the shared metric-card class. Keep the service-level agreement bar's computed seventy-two percent as the single inline value, and use a themed stale state to present data whose meaning remains in the model.

    Distinguish startup configuration, a session's selected theme, and mutation of a shared theme object. Editing the shared object changes what other sessions see, so a personal dark-mode choice must select a separate theme rather than alter the shared definition.

    Load the named dark theme, assign it to Application.Theme, and remember the preference in the current session. Handle a missing file explicitly; the startup configuration stays unchanged because this choice belongs to one session.

    Inspect cards, badges, the primary command, and the stale row, then compare two sessions side by side. Dana's dark selection should leave Priya's light theme intact, providing direct evidence that the switch is session-specific.

    Deliver the scoped stylesheet, one computed inline style, semantic command appearance, stale state, and session-only switch. Explain the owner of each choice so the review can verify both maintainability and isolation between users.

  4. ReadingAI Coding Exercise · 20 min

    Build this module's AdaptiveOps sample with ChatGPT or Claude from a ready-made prompt that points the model at this module's specification, then review, run and extend what it gives you — including against our own reference build on GitHub.

    Read the lesson guide (PDF)

  5. Knowledge checkModule 3 Knowledge Check · 10 min · Pass mark 80%
  6. Hands-on labLab — Scoped CSS and Session Theme Switch · 45 min

    Objective: Add a scoped AdaptiveOps.css stylesheet to the Adaptive Operations Console with classes for metric cards and compact badges, apply them through CssClass, and use CssStyle only for one computed value such as a progress width. Assign the action-button AppearanceKey to the primary command, add a custom stale state to the ticket grid rows or a status panel, and implement a light/dark theme switch in the toolbar that changes the theme for the current session only, without modifying the shared theme. Deliverables: Scoped AdaptiveOps.css with metric-card and compact-badge classes applied through CssClass; CssStyle used for exactly one computed one-off value, with the reason documented; Primary command using the action-button AppearanceKey; Custom stale state added through States and styled in the theme; Session-only light/dark theme switch that leaves the shared theme untouched.

Module 4: Layout Fundamentals: Docking, Anchoring, AutoSize, AutoScroll, and Shell Composition

Module 4 of Theming & Responsive Layouts — design adaptive themes and mobile-friendly layouts with the Theme Builder. Read the lesson guide and the lab / exam guide, watch the nested-shell walkthrough, pass the knowledge check, then complete the hands-on lab in Adaptive Operations Console.

  1. ReadingLesson Guide · 14 min

    The default layout engine, docking order and padding, anchoring for form-like regions, AutoSize and AutoScroll used safely, and composing the shell from nested containers and UserControls instead of resize handlers. What this means for a Wisej.NET developer — and how to read this module.

    Read the lesson guide (PDF)

  2. ReadingLab / Exam Guide · 10 min

    What you'll build in the hands-on lab, the suggested approach, and the required deliverables.

    Read the lesson guide (PDF)

  3. Video lessonFrom resize code to a nested container shell · 14 min

    From resize code to a nested container shell — a guided Module 4 walkthrough, built step by step in Adaptive Operations Console. Runs right here in the player.

    Narration transcript

    Replace the console's resize-coordinate calculations with container relationships. When the layout describes which region belongs against each edge and which fills the remainder, resizing no longer needs a new set of manual positions for every width.

    The desktop coordinates look correct until the viewport narrows. Anchored details overlap the fixed workspace and Save leaves view, showing that each extra coordinate patch treats one symptom without defining how the regions should share limited space.

    Dock children in the intended order so edge regions consume space before the workspace fills what remains. Padding reduces the available display rectangle; margin does not create docking gaps, so use the property the layout engine actually reads.

    Avoid a sizing loop where an automatically sized parent depends on children docked back to it. Let oversized content scroll instead, and use minimum and maximum sizes to express useful limits without forcing the whole hierarchy to resize around itself.

    Build the five docked regions with eight pixels of page padding and minimum sizes for workspace and grid. Once the container layout owns resizing, remove the old handler so two competing mechanisms no longer assign the same geometry.

    Encapsulate the details editor in a UserControl that owns scrolling and internal anchors. Expose the ticket and saved event to the shell; this keeps the outer layout independent of the editor's individual text boxes.

    Narrow the browser and inspect the resulting behavior: the rail becomes compact, details scroll, and the workspace respects its minimum dimensions. The point is that container rules produce this outcome without executing the removed resize-coordinate handler.

    Because the details region is a self-contained UserControl, the shell can relocate it without rebuilding its internals. Dock it below the grid for a tablet or host it in a modal form for a phone as later profiles require.

    Deliver a nested-container shell with deliberate docking order, padding, size limits, and a scrolling details editor. Extract the navigation and details controls, and remove manual bounds assignments so reviewers can see that the layout has one owner.

  4. ReadingAI Coding Exercise · 20 min

    Build this module's AdaptiveOps sample with ChatGPT or Claude from a ready-made prompt that points the model at this module's specification, then review, run and extend what it gives you — including against our own reference build on GitHub.

    Read the lesson guide (PDF)

  5. Knowledge checkModule 4 Knowledge Check · 10 min · Pass mark 80%
  6. Hands-on labLab — Nested Container Shell · 45 min

    Objective: Refactor the Adaptive Operations Console shell into nested containers: a top toolbar, a left navigation rail, a fill workspace, a right details panel and a status region, each a Panel or UserControl with its own local layout. Delete every Resize handler that sets Bounds, fix docking order in the designer, use Padding for gaps between docked regions, give the workspace and grid a MinimumSize, and make the details editor scroll with AutoScroll and hidden scrollbars at narrow widths. Deliverables: Shell rebuilt from nested containers with toolbar, navigation, workspace, details and status regions; All manual Resize code that set Bounds removed; Docking order, Padding and MinimumSize set intentionally on every region; Details editor scrolling through AutoScroll with hidden scrollbars at narrow widths; Navigation and details regions extracted into UserControls.

Module 5: FlowLayoutPanel, TableLayoutPanel, FlexLayoutPanel, and Extended Layout Properties

Module 5 of Theming & Responsive Layouts — design adaptive themes and mobile-friendly layouts with the Theme Builder. Read the lesson guide and the lab / exam guide, watch the layout containers walkthrough, pass the knowledge check, then complete the hands-on lab in Adaptive Operations Console.

  1. ReadingLesson Guide · 14 min

    Choosing flow, table or flex containers by content behaviour, the extended child properties FillWeight, FlowBreak, AlignX, AlignY, Row, Column, spans and styles, when layout engines honour margins, and fluent markup extensions for programmatic layouts. What this means for a Wisej.NET developer — and how to read this module.

    Read the lesson guide (PDF)

  2. ReadingLab / Exam Guide · 10 min

    What you'll build in the hands-on lab, the suggested approach, and the required deliverables.

    Read the lesson guide (PDF)

  3. Video lessonThe same region in Flow, Table and Flex · 14 min

    The same region in Flow, Table and Flex — a guided Module 5 walkthrough, built step by step in Adaptive Operations Console. Runs right here in the player.

    Narration transcript

    The outer shell now docks correctly, but the content inside each region still needs its own layout rules. Compare Flow, Table, and Flex by the behavior the content requires rather than choosing one container for every situation.

    Cards and fields still disappear at tablet width because they are positioned manually inside a responsive shell. Decide whether each region should wrap items, align fields, or share space proportionally before replacing those coordinates.

    Watch the same four cards under each engine as the viewport narrows. Flow wraps them, fixed table columns squeeze, and the shown flex setup clips the last card; those outcomes explain why wrapping cards, forms, and proportional regions need different choices.

    Extended properties describe a child's participation in its parent layout. Configure flow weights and breaks, table positions and spans, or flex weights and alignment through the container so the parent receives the instructions its engine understands.

    Check which engine interprets spacing before adjusting Margin. Flow and Flex enforce it, Table applies it inside a cell, and default docking ignores it; padding is the mechanism that changes available space around docked content.

    Let the filter bar wrap, give search the remaining width, and break after Apply. For the editor, use fixed labels beside a flexible field column and make each field fill its cell, keeping rows aligned while the available width changes.

    Give the dashboard regions weights of two to one, align them at the top, and retain a minimum size for each. The fluent Wisej.NET Markup version expresses the same relationships; use one notation consistently within a container.

    Resize from a wide desktop to a narrow viewport and follow all three behaviors. Cards should wrap, editor columns remain aligned, and details stop at their minimum size, demonstrating that each container is solving its assigned layout problem.

    Build the filter bar, ticket editor, and dashboard workspace with their appropriate containers, using fluent extensions for one example. Capture resized results and explain the choice for each region so the submission demonstrates reasoning as well as working layouts.

  4. ReadingAI Coding Exercise · 20 min

    Build this module's AdaptiveOps sample with ChatGPT or Claude from a ready-made prompt that points the model at this module's specification, then review, run and extend what it gives you — including against our own reference build on GitHub.

    Read the lesson guide (PDF)

  5. Knowledge checkModule 5 Knowledge Check · 10 min · Pass mark 80%
  6. Hands-on labLab — Flow, Table and Flex Regions · 45 min

    Objective: Build three versions of the Adaptive Operations Console content area: a FlowLayoutPanel filter and metric-card area that wraps and uses FillWeight and FlowBreak, a TableLayoutPanel ticket editor with aligned labels and editors driven by RowStyles and ColumnStyles, and a FlexLayoutPanel dashboard shell where the list and details regions share space by FillWeight with AlignX, AlignY, MinimumSize and MaximumSize set. Build one of the three in code with the Wisej.Web.Markup fluent extensions and compare how each survives a browser resize. Deliverables: FlowLayoutPanel filter and metric-card area using WrapContents, FillWeight and FlowBreak; TableLayoutPanel ticket editor with RowStyles, ColumnStyles and spans for aligned fields; FlexLayoutPanel dashboard shell with FillWeight, AlignX, AlignY, MinimumSize and MaximumSize; One region built in code with the Wisej.Web.Markup fluent extensions; Resize comparison screenshots and a note on which container fits each region.

Module 6: ClientProfile and Responsive Properties

Module 6 of Theming & Responsive Layouts — design adaptive themes and mobile-friendly layouts with the Theme Builder. Read the lesson guide and the lab / exam guide, watch the client profiles walkthrough, pass the knowledge check, then complete the hands-on lab in Adaptive Operations Console.

  1. ReadingLesson Guide · 14 min

    How ClientProfiles.json is matched top to bottom into Application.ActiveProfile, designer-assigned responsive property values per profile, ResponsiveProfileChanged for behaviour that responsive properties cannot express, and profile design and testing rules. What this means for a Wisej.NET developer — and how to read this module.

    Read the lesson guide (PDF)

  2. ReadingLab / Exam Guide · 10 min

    What you'll build in the hands-on lab, the suggested approach, and the required deliverables.

    Read the lesson guide (PDF)

  3. Video lessonProfiles that change behaviour, not just widths · 14 min

    Profiles that change behaviour, not just widths — a guided Module 6 walkthrough, built step by step in Adaptive Operations Console. Runs right here in the player.

    Narration transcript

    Give the console profile-aware behavior as well as flexible geometry. A phone needs a different way to reach navigation and editing, so this module connects client recognition to server-side presentation and workflow changes.

    The resizable shell still tries to fit desktop navigation, cards, grid, and details onto a phone. Browser media queries can affect styling, but they cannot perform the shown server-control visibility and form-opening decisions by themselves.

    Profiles are evaluated from top to bottom and the first match becomes active. They do not merge, so put narrow conditions before the broad desktop fallback; otherwise the broad rule can prevent later phone and tablet rules from ever being selected.

    Set per-profile responsive property values in the designer for visibility, display, docking, size, and font. Hiding phone regions or moving tablet details below the grid belongs in those declared values when no procedural behavior is needed.

    Use ResponsiveProfileChanged for behavior a property value cannot express, such as opening a modal editor or coordinating a delayed response. Choose the appropriate application or control event source, and keep this code focused on genuinely procedural changes.

    Subscribe once, apply the active profile at startup, and apply the event's current profile when it changes. Guard against opening a second editor and unsubscribe during disposal so repeated notifications do not create duplicate windows or lingering handlers.

    Compare a syntactically valid profile file with an incorrectly broad first rule against the narrow-to-broad version. The failure is ordering, not file syntax: phone and tablet variants must be tested before the general desktop rule.

    Resize through desktop, tablet, and phone while reading the status indicator. Confirm that each profile activates its designed values, and that reaching Phone opens the modal editor only once rather than once per resize notification.

    Deliver the six ordered profiles, designer-set phone and tablet values, and the profile-change handler with status reporting. Demonstrate the phone editor transition so the review verifies both declarative adaptation and the one behavior that requires code.

  4. ReadingAI Coding Exercise · 20 min

    Build this module's AdaptiveOps sample with ChatGPT or Claude from a ready-made prompt that points the model at this module's specification, then review, run and extend what it gives you — including against our own reference build on GitHub.

    Read the lesson guide (PDF)

  5. Knowledge checkModule 6 Knowledge Check · 10 min · Pass mark 80%
  6. Hands-on labLab — Client Profiles and Responsive Behaviour · 45 min

    Objective: Add a ClientProfiles.json to the Adaptive Operations Console with Phone, Phone Landscape, Tablet, Tablet Landscape, Small Desktop and Desktop profiles ordered narrow to broad. In the designer, use responsive properties to hide the navigation rail and details panel on phone, switch the toolbar buttons to icon-only Display, and re-dock the details region under the grid on tablet. Handle ResponsiveProfileChanged to show the active profile name in the status label, log each change and open the details editor as a modal form on phone instead of a side panel. Deliverables: ClientProfiles.json with Phone, Phone Landscape, Tablet, Tablet Landscape, Small Desktop and Desktop profiles in first-match order; Responsive property values assigned in the designer to hide the navigation rail and details panel on phone; Icon-only toolbar Display and re-docked details region for tablet set through responsive properties; ResponsiveProfileChanged handler that shows and logs the active profile name; Details editor opened as a modal form on phone through the profile handler.

Module 7: Mobile-Ready Capstone, Accessibility, Performance, and Production Governance

Module 7 of Theming & Responsive Layouts — design adaptive themes and mobile-friendly layouts with the Theme Builder. Read the lesson guide and the lab / exam guide, watch the Capstone review walkthrough, pass the knowledge check, then complete the hands-on lab in the Adaptive Operations Console.

  1. ReadingLesson Guide · 14 min

    Finishing the Adaptive Operations Console as a production-ready desktop, tablet and phone screen set, reviewing focus, contrast, invalid states and touch targets, keeping profile handlers cheap and idempotent, and governing the theme, CSS and ClientProfiles.json like code. What this means for a Wisej.NET developer — and how to read this module.

    Read the lesson guide (PDF)

  2. ReadingLab / Exam Guide · 10 min

    What you'll build in the hands-on lab, the suggested approach, and the required deliverables.

    Read the lesson guide (PDF)

  3. Video lessonCapstone review across every profile · 14 min

    Capstone review across every profile — a guided Module 7 walkthrough, built step by step in the Adaptive Operations Console. Runs right here in the player.

    Narration transcript

    Review the finished Adaptive Operations Console as a product that must remain usable after future changes. The capstone checks accessibility, resize cost, and ownership of visual rules, turning a working demonstration into a maintainable responsive system.

    The theme, semantic appearances, scoped styles, containers, and client profiles are already present. Now prove that they work together for every profile, with keyboard and touch access, reasonable resize work, and decisions another developer can explain.

    Start with the theme and its appearance variants. Use cascading style sheets only where needed, then consider containers and responsive properties. Add profile-change code or custom profiles when simpler options cannot express the requirement, and document that reason.

    ApplyProfile should return early for an unchanged profile and assign final values rather than toggling them. That makes repeated calls stable; cleanup removes subscriptions, while a shared focus frame preserves keyboard visibility across the theme's focused states.

    Compare desktop, tablet, and phone views using the test-mode profile indicator. Navigation changes from text to icons to a menu, while details move from the side to below the grid to a modal, preserving access through different presentations.

    Record six responsive test cases with expected profiles, screenshots, and checks for layout, scrolling, focus, invalid states, and touch. Repeat this matrix after theme changes and upgrades so regressions are compared against explicit expectations rather than memory.

    Keep visible focus, supplement error colors with icons or messages, label icon-only actions, and walk the tab order. Review size limits and automatic sizing, then version theme, styles, and profiles together so accessibility and layout changes receive code review.

    Make the grounding pack explain how to answer from course evidence and the ownership decision tree. Flag brittle internal document selectors and direct overrides, and request the actual profile and screen size when the responsive problem is not yet specific enough.

    Hand over the finished console with its repeatable profile handler, test indicator, accessibility review, orientation matrix, architecture note, and grounding pack. Together these show not only that the current layout works, but how the next change will be evaluated.

  4. ReadingAI Coding Exercise · 20 min

    Build this module's AdaptiveOps sample with ChatGPT or Claude from a ready-made prompt that points the model at this module's specification, then review, run and extend what it gives you — including against our own reference build on GitHub.

    Read the lesson guide (PDF)

  5. Knowledge checkModule 7 Knowledge Check · 10 min · Pass mark 80%
  6. Hands-on labLab — Adaptive Operations Console Capstone · 45 min

    Objective: Complete the Adaptive Operations Console capstone: a custom theme with named tokens and at least four semantic appearances, scoped CssClass usage, a desktop shell with Flow, Table and Flex regions, ClientProfiles.json with phone, tablet, small desktop and desktop behaviour, responsive properties plus an idempotent ResponsiveProfileChanged handler, and a profile indicator visible in test mode. Run the accessibility review for focus frames, invalid states, contrast, touch targets and tab order, fill in the responsive QA matrix with screenshots for every profile, and write the architecture note and grounding pack that explain each theme, layout and profile decision. Deliverables: Finished Adaptive Operations Console with custom theme, semantic appearances, scoped CSS and Flow, Table and Flex regions; ClientProfiles.json, responsive properties and an idempotent ResponsiveProfileChanged handler with a test-mode profile indicator; Accessibility review covering focus frames, invalid states, contrast, touch targets and tab order; Responsive QA matrix with desktop, tablet and phone screenshots in both orientations; Architecture note and AI grounding pack explaining every theme, layout and profile decision.