# 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: desktop':
  - '**/linux/**/*'
  - '**/macos/**/*'
  - '**/windows/**/*'

'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/**/*

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/**/*

'f: integration_test':
  - packages/integration_test/**/*

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

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

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

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