# Copyright 2013 The Flutter Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# See https://github.com/actions/labeler/blob/main/README.md for docs.
'a: accessibility':
  - '**/accessibility/*'
  - '**/*accessibility*'
  - '**/semantics/*'
  - '**/*semantics*'

'a: animation':
  - '**/animation/*'
  - '**/*animation*'

'a: internationalization':
  - packages/flutter_localizations/**/*

'a: tests':
  - packages/flutter_driver/**/*
  - packages/flutter_goldens/**/*
  - packages/flutter_goldens_client/**/*
  - packages/flutter_test/**/*

'a: text input':
  - '**/text/*'
  - '**/*text*'

'd: api docs':
  - examples/api/**/*

'd: examples':
  - examples/**/*

documentation:
  - examples/api/**/*

engine:
  - bin/internal/engine.version

'f: cupertino':
  - '**/cupertino/*'
  - '**/*cupertino*'

'f: focus':
  - '**/focus/*'
  - '**/*focus*'

'f: gestures':
  - '**/gestures/*'
  - '**/*gestures*'

'f: material design':
  - '**/material/*'
  - '**/*material*'

'f: routes':
  - '**/navigator/*'
  - '**/*navigator*'
  - '**/route/*'
  - '**/*route*'

'f: scrolling':
  - '**/*scroll*'
  - '**/scroll/*'
  - '**/*sliver*'
  - '**/sliver/*'
  - '**/*viewport*'
  - '**/viewport/*'

framework:
  - packages/flutter/**/*
  - packages/flutter_driver/**/*
  - packages/flutter_goldens/**/*
  - packages/flutter_goldens_client/**/*
  - packages/flutter_test/**/*
  - packages/integration_test/**/*

integration_test:
  - packages/integration_test/**/*

platform-ios:
  - packages/flutter_tools/lib/src/ios/**/*

team:
  - '**/pubspec.yaml'
  - '**/fix_data.yaml'
  - '**/*.expect'
  - '**/*test_fixes*'
  - .github/**/*
  - dev/**/*
  - examples/**/*
  - packages/flutter_goldens/**/*
  - packages/flutter_goldens_client/**/*

'gallery':
  - examples/flutter_gallery/**/*

tech-debt:
  - '**/fix_data.yaml'
  - '**/*.expect'
  - '**/*test_fixes*'

tool:
  - packages/flutter_tools/**/*
  - packages/fuchsia_remote_debug_protocol/**/*
