Skip to contents

This function documents the structure of the dashboard, including layout and design elements such as proximity, dual-processing, and default effects. It supports modern layout approaches like breathable layouts and visual hierarchies, while ensuring accessibility considerations are properly documented.

Usage

bid_structure(previous_stage, layout, concepts = NULL, accessibility = NULL)

Arguments

previous_stage

A tibble or list output from an earlier BID stage function.

layout

A character string indicating the layout type (e.g., "dual_process", "grid", "card", "tabs", "breathable").

concepts

A character vector of BID concepts applied in this stage. Concepts can be provided in natural language (e.g., "Principle of Proximity") or with underscores (e.g., "principle_of_proximity"). The function uses fuzzy matching to identify the concepts. If NULL, will attempt to detect relevant concepts from previous stages.

accessibility

A list of accessibility considerations (optional). Common parameters include: color_contrast, keyboard_navigation, screen_reader, text_size, alternative_text, focus_indicators, semantic_markup, and aria_labels.

Value

A bid_stage object containing the documented information for the "Structure" stage.

Examples

interpret <- bid_notice(
  problem = "Users struggle with information overload",
  evidence = "Survey results indicate delays"
) |>
  bid_interpret(
    central_question = "How can we simplify data presentation?",
    data_story = list(
      hook = "Data is too complex",
      context = "Overloaded with charts",
      tension = "Confusing layout",
      resolution = "Introduce clear grouping"
    )
  )
#> Auto-suggested theory: Processing Fluency (confidence: 70%)
#> Stage 1 (Notice) completed. (20% complete)
#>   - Problem: Users struggle with information overload
#>   - Theory: Processing Fluency (auto-suggested)
#>   - Evidence: Survey results indicate delays
#>   - Theory confidence: 70%
#>   - Next: Use bid_interpret() for Stage 2 
#> Stage 2 (Interpret) completed.
#>   - Central question: How can we simplify data presentation?
#>   - Your data story has all key elements. Focus on making each component compelling and relevant.
#>   - Your central question is appropriately scoped.
#>   - No user personas defined 

# Basic usage with natural language concept names
bid_structure(
  previous_stage = interpret,
  layout = "dual_process",
  concepts = c("Principle of Proximity", "Default Effect")
)
#> Rows: 41 Columns: 7
#> ── Column specification ────────────────────────────────────────────────────────
#> Delimiter: ","
#> chr (7): concept, description, category, reference, example, implementation_...
#> 
#>  Use `spec()` to retrieve the full column specification for this data.
#>  Specify the column types or set `show_col_types = FALSE` to quiet this message.
#> Returning all 41 concepts
#> 
#> ── Implementation tips for selected concepts: 
#> Rows: 41 Columns: 7
#> ── Column specification ────────────────────────────────────────────────────────
#> Delimiter: ","
#> chr (7): concept, description, category, reference, example, implementation_...
#> 
#>  Use `spec()` to retrieve the full column specification for this data.
#>  Specify the column types or set `show_col_types = FALSE` to quiet this message.
#>Principle of Proximity: Place related controls and visualizations in
#> proximity to each other.
#> Rows: 41 Columns: 7
#> ── Column specification ────────────────────────────────────────────────────────
#> Delimiter: ","
#> chr (7): concept, description, category, reference, example, implementation_...
#> 
#>  Use `spec()` to retrieve the full column specification for this data.
#>  Specify the column types or set `show_col_types = FALSE` to quiet this message.
#>Default Effect: Pre-select the most useful timeframe or metrics for initial
#> view.
#> Stage 3 (Structure) completed.
#>   - Layout: dual_process
#>   - Concepts: Principle of Proximity, Default Effect
#>   - No accessibility considerations specified 
#> BID Framework - Structure Stage
#> Generated: 2025-06-21 00:15:32 
#> Progress: 60 % (3/5) 
#> 
#> Layout: dual_process 
#> Concepts: Principle of Proximity, Default Effect 
#> 
#>  Suggestions: For dual_process layout: Consider separating quick insights (System 1) from detailed analysis (System 2). Place summary metrics and KPIs at the top, with detailed tables and expanded visualizations below or in secondary views. Place related controls and visualizations in proximity to each other. Pre-select the most useful timeframe or metrics for initial view. Consider adding accessibility features such as: - Sufficient color contrast (WCAG AA requires 4.5:1 ratio) - Keyboard navigation for all interactive elements - Screen reader support with descriptive alt text for visuals - Minimum text size (16px for body text) - Focus indicators for keyboard users - Semantic markup for proper document structure 
#> 
#>  Use summary() for detailed information