Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
06f6a40
feat(repo): add poc of button and gallery (#28)
renefloor Jan 15, 2026
0c6d7b9
chore(repo): Upgrade Flutter to `>=3.38.1` and enable new lints (#29)
xsahil03x Jan 16, 2026
068c806
feat(ui): Introduce Stream Design System foundations and gallery app …
xsahil03x Jan 22, 2026
92c6863
feat(repo): Add design system primitives showcase to gallery (#33)
xsahil03x Jan 22, 2026
17d0f99
chore(repo): Add workflow to publish design system gallery (#34)
renefloor Jan 22, 2026
c1cfb94
add swatch from single color (#36)
renefloor Jan 23, 2026
8f016cb
fix scrollbar issue (#40)
renefloor Jan 29, 2026
1648966
feat(ui): button component (#37)
renefloor Jan 30, 2026
3acc381
feat(ui): Added themeable stream icons (#35)
renefloor Jan 30, 2026
fe857ee
feat(ui): filetype icons (#41)
renefloor Feb 3, 2026
b4b8ae2
feat(ui): add StreamAvatarGroup and StreamBadgeCount (#43)
xsahil03x Feb 3, 2026
c066cb4
chore(repo): Remove Git LFS for golden images (#45)
xsahil03x Feb 4, 2026
22d1a34
feat(ui): gallery on mobile (#38)
renefloor Feb 4, 2026
97a34d2
feat(ui): update tokens (#46)
renefloor Feb 4, 2026
983218e
refactor(ui): decouple StreamComponentFactory from StreamTheme (#47)
xsahil03x Feb 6, 2026
2065478
feat(ui): message composer structure (#42)
renefloor Feb 10, 2026
be002d2
feat(UI): composer attachment reply (#48)
renefloor Feb 11, 2026
6ac7fc1
feat(ui): composer attachment link preview (#49)
renefloor Feb 11, 2026
236ff7c
remove expands on inputfield (#50)
renefloor Feb 11, 2026
861b3e2
feat(ui): add StreamReactionPickerSheet (#51)
xsahil03x Feb 13, 2026
22dfc26
feat(ui): refactor message theme (#52)
renefloor Feb 13, 2026
0d06cf5
feat(ui): add StreamContextMenu and StreamContextMenuItem (#53)
xsahil03x Feb 18, 2026
23e8af5
feat(ui): add StreamProgressBar and StreamCheckBox (#54)
xsahil03x Feb 19, 2026
aa5d032
feat(ui): composer attachments (#55)
renefloor Feb 20, 2026
5b95b48
refactor(ui): rename StreamContextMenuItem to StreamContextMenuAction…
xsahil03x Feb 24, 2026
da18aa0
Update and add icons (#57)
renefloor Feb 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
3 changes: 2 additions & 1 deletion .github/workflows/pr_title.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ on:
- synchronize
branches:
- main
- main-design-system # Remove this once the design system is merged into main

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
Expand All @@ -20,13 +21,13 @@ jobs:
with:
scopes: |
llc
ui
repo
requireScope: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

semantic_changelog_update:
if: ${{ false }} # TODO: Enable after the first release
needs: conventional_pr_title # Trigger after the [conventional_pr_title] completes
runs-on: ubuntu-latest
steps:
Expand Down
40 changes: 40 additions & 0 deletions .github/workflows/publish_gallery.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: Publish Design System Gallery

on:
push:
branches:
- main-design-system
workflow_dispatch:

env:
FLUTTER_CHANNEL: stable

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
build_and_deploy_gallery:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Checkout code
uses: actions/checkout@v6

- name: config git
run: |
git config --global user.email "$(git log --format='%ae' HEAD^!)"
git config --global user.name "$(git log --format='%an' HEAD^!)"

- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
cache: true
channel: ${{ env.FLUTTER_CHANNEL }}
flutter-version: ${{ env.FLUTTER_VERSION }}

- name: Build and Deploy
uses: bluefireteam/flutter-gh-pages@v9
with:
baseHref: /stream-core-flutter/
workingDir: apps/design_system_gallery
4 changes: 3 additions & 1 deletion .github/workflows/stream_core_flutter_workflow.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,11 @@ jobs:
analyze:
timeout-minutes: 15
runs-on: ubuntu-latest
env:
IS_CI: 'true'
steps:
- name: Git Checkout
uses: actions/checkout@v3
uses: actions/checkout@v6
with:
fetch-depth: 0

Expand Down
38 changes: 38 additions & 0 deletions .github/workflows/update_goldens.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: update_goldens

on: workflow_dispatch

jobs:
update_goldens:
runs-on: ubuntu-latest
steps:
- name: 📚 Checkout branch
uses: actions/checkout@v6
with:
ssh-key: ${{ secrets.BOT_SSH_PRIVATE_KEY }}

- name: 🐦 Install Flutter
uses: subosito/flutter-action@v2
with:
flutter-version: "3.x"
channel: stable
cache: true
cache-key: flutter-:os:-:channel:-:version:-:arch:-:hash:-${{ hashFiles('**/pubspec.lock') }}

- name: 📦 Install Tools
run: flutter pub global activate melos

- name: 🔧 Bootstrap Workspace
run: melos bootstrap --verbose

- name: 🖼️ Update Goldens
continue-on-error: true
run: melos run update:goldens

- name: 📤 Commit Changes
uses: stefanzweifel/git-auto-commit-action@v7
with:
commit_message: "chore: Update Goldens"
file_pattern: "**/test/**/goldens/*.png"
commit_user_name: "Stream SDK Bot"
commit_user_email: "60655709+Stream-SDK-Bot@users.noreply.github.com"
45 changes: 36 additions & 9 deletions all_lint_rules.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@ linter:
- always_declare_return_types
- always_put_control_body_on_new_line
- always_put_required_named_parameters_first
- always_require_non_null_named_parameters
- always_specify_types
- always_use_package_imports
- annotate_overrides
- annotate_redeclares
- avoid_annotating_with_dynamic
- avoid_bool_literals_in_conditional_expressions
- avoid_catches_without_on_clauses
Expand All @@ -20,6 +20,7 @@ linter:
- avoid_field_initializers_in_const_classes
- avoid_final_parameters
- avoid_function_literals_in_foreach_calls
- avoid_futureor_void
- avoid_implementing_value_types
- avoid_init_to_null
- avoid_js_rounded_ints
Expand All @@ -32,8 +33,6 @@ linter:
- avoid_relative_lib_imports
- avoid_renaming_method_parameters
- avoid_return_types_on_setters
- avoid_returning_null
- avoid_returning_null_for_future
- avoid_returning_null_for_void
- avoid_returning_this
- avoid_setters_without_getters
Expand Down Expand Up @@ -61,12 +60,15 @@ linter:
- constant_identifier_names
- control_flow_in_finally
- curly_braces_in_flow_control_structures
- dangling_library_doc_comments
- depend_on_referenced_packages
- deprecated_consistency
- deprecated_member_use_from_same_package
- diagnostic_describe_all_properties
- directives_ordering
- discarded_futures
- do_not_use_environment
- document_ignores
- empty_catches
- empty_constructor_bodies
- empty_statements
Expand All @@ -76,32 +78,41 @@ linter:
- flutter_style_todos
- hash_and_equals
- implementation_imports
- iterable_contains_unrelated_type
- implicit_call_tearoffs
- implicit_reopen
- invalid_case_patterns
- invalid_runtime_check_with_js_interop_types
- join_return_with_assignment
- leading_newlines_in_multiline_strings
- library_annotations
- library_names
- library_prefixes
- library_private_types_in_public_api
- lines_longer_than_80_chars
- list_remove_unrelated_type
- literal_only_boolean_expressions
- matching_super_parameters
- missing_code_block_language_in_doc_comment
- missing_whitespace_between_adjacent_strings
- no_adjacent_strings_in_list
- no_default_cases
- no_duplicate_case_values
- no_leading_underscores_for_library_prefixes
- no_leading_underscores_for_local_identifiers
- no_literal_bool_comparisons
- no_logic_in_create_state
- no_runtimeType_toString
- no_self_assignments
- no_wildcard_variable_uses
- non_constant_identifier_names
- noop_primitive_operations
- null_check_on_nullable_type_parameter
- null_closures
- omit_local_variable_types
- omit_obvious_local_variable_types
- omit_obvious_property_types
- one_member_abstracts
- only_throw_errors
- overridden_fields
- package_api_docs
- package_names
- package_prefixed_library_names
- parameter_assignments
Expand All @@ -117,7 +128,6 @@ linter:
- prefer_constructors_over_static_methods
- prefer_contains
- prefer_double_quotes
- prefer_equal_for_default_values
- prefer_expression_function_bodies
- prefer_final_fields
- prefer_final_in_for_each
Expand Down Expand Up @@ -148,29 +158,42 @@ linter:
- provide_deprecation_message
- public_member_api_docs
- recursive_getters
- remove_deprecations_in_breaking_versions
- require_trailing_commas
- secure_pubspec_urls
- simplify_variable_pattern
- sized_box_for_whitespace
- sized_box_shrink_expand
- slash_for_doc_comments
- sort_child_properties_last
- sort_constructors_first
- sort_pub_dependencies
- sort_unnamed_constructors_first
- specify_nonobvious_local_variable_types
- specify_nonobvious_property_types
- strict_top_level_inference
- switch_on_type
- test_types_in_equals
- throw_in_finally
- tighten_type_of_initializing_formals
- type_annotate_public_apis
- type_init_formals
- type_literal_in_constant_pattern
- unawaited_futures
- unintended_html_in_doc_comment
- unnecessary_async
- unnecessary_await_in_return
- unnecessary_brace_in_string_interps
- unnecessary_breaks
- unnecessary_const
- unnecessary_constructor_name
- unnecessary_final
- unnecessary_getters_setters
- unnecessary_ignore
- unnecessary_lambdas
- unnecessary_late
- unnecessary_library_directive
- unnecessary_library_name
- unnecessary_new
- unnecessary_null_aware_assignments
- unnecessary_null_aware_operator_on_extension_on_nullable
Expand All @@ -185,9 +208,11 @@ linter:
- unnecessary_string_interpolations
- unnecessary_this
- unnecessary_to_list_in_spreads
- unnecessary_unawaited
- unnecessary_underscores
- unreachable_from_main
- unrelated_type_equality_checks
- unsafe_html
- unsafe_variance
- use_build_context_synchronously
- use_colored_box
- use_decorated_box
Expand All @@ -199,6 +224,7 @@ linter:
- use_key_in_widget_constructors
- use_late_for_private_fields_and_variables
- use_named_constants
- use_null_aware_elements
- use_raw_strings
- use_rethrow_when_possible
- use_setters_to_change_properties
Expand All @@ -207,5 +233,6 @@ linter:
- use_super_parameters
- use_test_throws_matchers
- use_to_and_as_if_applicable
- use_truncating_division
- valid_regexps
- void_checks
- void_checks
20 changes: 18 additions & 2 deletions analysis_options.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,20 @@ analyzer:
# We explicitly enabled even conflicting rules and are fixing the conflict
# in this file.
included_file_warning: ignore

todo: ignore
exclude:
# exclude all the generated files
- packages/*/lib/**/*.*.dart

formatter:
page_width: 120
trailing_commas: preserve

linter:
rules:
## Disabled rules because the repository doesn't respect them (yet)
avoid_setters_without_getters: false
discarded_futures: false
comment_references: false

#############

Expand Down Expand Up @@ -93,6 +96,19 @@ linter:
# There are situations where we use default in enums on purpose
no_default_cases: false

# Sometimes static methods are more readable
prefer_constructors_over_static_methods: false

# Conflicts with `omit_local_variable_types`
specify_nonobvious_local_variable_types: false
specify_nonobvious_property_types: false

# Makes the code more verbose without adding much value
document_ignores: false

# False positives
unsafe_variance: false

# Temporarily disabled to find more important issues
public_member_api_docs: false
avoid_print: false
45 changes: 45 additions & 0 deletions apps/design_system_gallery/.metadata
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc.
#
# This file should be version controlled and should not be manually edited.

version:
revision: "05db9689081f091050f01aed79f04dce0c750154"
channel: "stable"

project_type: app

# Tracks metadata for the flutter migrate command
migration:
platforms:
- platform: root
create_revision: 05db9689081f091050f01aed79f04dce0c750154
base_revision: 05db9689081f091050f01aed79f04dce0c750154
- platform: android
create_revision: 05db9689081f091050f01aed79f04dce0c750154
base_revision: 05db9689081f091050f01aed79f04dce0c750154
- platform: ios
create_revision: 05db9689081f091050f01aed79f04dce0c750154
base_revision: 05db9689081f091050f01aed79f04dce0c750154
- platform: linux
create_revision: 05db9689081f091050f01aed79f04dce0c750154
base_revision: 05db9689081f091050f01aed79f04dce0c750154
- platform: macos
create_revision: 05db9689081f091050f01aed79f04dce0c750154
base_revision: 05db9689081f091050f01aed79f04dce0c750154
- platform: web
create_revision: 05db9689081f091050f01aed79f04dce0c750154
base_revision: 05db9689081f091050f01aed79f04dce0c750154
- platform: windows
create_revision: 05db9689081f091050f01aed79f04dce0c750154
base_revision: 05db9689081f091050f01aed79f04dce0c750154

# User provided section

# List of Local paths (relative to this file) that should be
# ignored by the migrate tool.
#
# Files that are not part of the templates will be ignored by default.
unmanaged_files:
- 'lib/main.dart'
- 'ios/Runner.xcodeproj/project.pbxproj'
Loading