Use-cases Navigation Path

By default, use-cases have a navigation path in Widgetbook that is based on where their component file is located. There are multiple ways to customize the navigation path either globally or locally.

The component name (e.g. Button) and the use-case name (e.g. Primary) are concatenated at the end of the path.

[ Nav Path ] / [ Component Name ] / [ Use-case Name ]

Using nav_path_mode option

You can globally change the behavior of the navigation path generation for all use-cases by providing a nav_path_mode option in build.yaml as follows:

Option ValueNavigation Path Based on
component (default)The component (i.e. Widget) file.
use-caseThe use-case file (i.e. where the @UseCase annotation is used)
build.yaml
targets:
  $default:
    builders:
      widgetbook_generator:use_case_builder:
        options:
          nav_path_mode: use-case

Using @UseCase.path parameter

To provide a custom navigation path for a single use-case, you can use the path parameter in the @UseCase annotation.

import 'package:your_app/widgets/button.dart';

// Navigation path: `widgets/Button/Primary`
@widgetbook.UseCase(
  name: 'Primary',
  type: Button
)
Widget buildPrimaryButton() {
  return Button();
}

If you wrap a folder name in square brackets, it will be treated as a category in the navigation path.

import 'package:your_app/components/button.dart';

// Navigation path: `[Interactions]/buttons/Button/Primary`
@widgetbook.UseCase(
  name: 'Primary',
  type: Button,
  path: '[Interactions]/buttons',
)
Widget buildPrimaryButton() {
  return Button();
}