8000 feat(UX-1454): Empty State Widget by thelukewalton · Pull Request #361 · ZebraDevs/zeta_flutter · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

feat(UX-1454): Empty State Widget #361

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Jul 3, 2025
Merged

feat(UX-1454): Empty State Widget #361

merged 4 commits into from
Jul 3, 2025

Conversation

thelukewalton
Copy link
Collaborator
@thelukewalton thelukewalton commented Jul 2, 2025

fix: Update text themes with line height 0
test: Add tests for empty state widget

@thelukewalton thelukewalton requested review from DE7924 and Copilot July 2, 2025 11:03
@thelukewalton thelukewalton requested a review from a team as a code owner July 2, 2025 11:03
Copy link
@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR introduces a new ZetaEmptyState component with its story, tests, and example, adds a utility for formatting camelCase labels, and updates all text styles to include explicit letterSpacing: 0.

  • Add sentencer helper to split camelCase strings into human-readable labels.
  • Implement ZetaEmptyState widget, register it in widgetbook, export it, and cover it with tests and an example.
  • Update typography definitions to set letterSpacing: 0 for all text styles.

Reviewed Changes

Copilot reviewed 9 out of 15 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
widgetbook/lib/src/utils/utils.dart Add sentencer function for camelCase splitting
widgetbook/lib/src/components/empty_state.widgetbook.dart Register the Empty State use case in widgetbook
widgetbook/lib/main.directories.g.dart Update generated structure to include EmptyState
packages/zeta_flutter_theme/lib/src/typography.dart Set letterSpacing: 0 on all text style definitions
packages/zeta_flutter/test/src/components/empty_state/empty_state_test.dart Add golden, accessibility, content, dimensions, styling, and ordering tests for ZetaEmptyState
packages/zeta_flutter/lib/zeta_components.dart Export the new empty_state.dart component
packages/zeta_flutter/lib/src/components/empty_state/empty_state.dart Implement the ZetaEmptyState widget
example/lib/pages/components/empty_state_example.dart Provide a live example of the Empty State component
example/lib/home.dart Register EmptyStateExample in the example app
Comments suppressed due to low confidence (3)

widgetbook/lib/src/utils/utils.dart:15

  • [nitpick] The function name 'sentencer' is ambiguous—consider renaming it to something like 'toSentence' or 'splitCamelCase' for clarity.
String sentencer(String? value) {

widgetbook/lib/src/utils/utils.dart:15

  • Consider adding unit tests for 'sentencer' to verify correct behavior on various camelCase and edge-case inputs.
String sentencer(String? value) {

packages/zeta_flutter/test/src/components/empty_state/empty_state_test.dart:123

  • The 'Interaction Tests' group is empty—either implement relevant interactions or remove the unused group.
  group('Interaction Tests', () {});

Copy link
Contributor
github-actions bot commented Jul 2, 2025

Visit the preview URL for this PR (updated for commit 6a565a6):

https://zeta-flutter-main--pr-361-ux-1454-is90zmsu.web.app

(expires Wed, 09 Jul 2025 13:48:38 GMT)

🔥 via Firebase Hosting GitHub Action 🌎

Sign: 5ca681de0a0ad9185b252304c113355d5ee04ca6

Copy link
Contributor
github-actions bot commented Jul 2, 2025

PR Checks complete

  • ✅ - Linting / Formatting
  • ✅ - Static analysis passed
  • ✅ - All tests passed
  • ✅ - Branch is not behind
  • 📈 - Code coverage: 52.56%
    See details
    File Name%Passing?
    packages/zeta_flutter/lib/src/components/accordion/accordion.dart100%
    packages/zeta_flutter/lib/src/components/avatar_rail/avatar_rail.dart53.7%⛔️
    packages/zeta_flutter/lib/src/components/avatars/avatar.dart94.6%
    packages/zeta_flutter/lib/src/components/badges/indicator.dart100%
    packages/zeta_flutter/lib/src/components/badges/label.dart100%
    packages/zeta_flutter/lib/src/components/badges/priority_pill.dart96.8%
    packages/zeta_flutter/lib/src/components/badges/status_label.dart100%
    packages/zeta_flutter/lib/src/components/badges/tag.dart98.6%
    packages/zeta_flutter/lib/src/components/bottom sheets/bottom_sheet.dart0%⛔️
    packages/zeta_flutter/lib/src/components/bottom sheets/menu_items.dart0%⛔️
    packages/zeta_flutter/lib/src/components/breadcrumb/breadcrumb.dart86.3%
    packages/zeta_flutter/lib/src/components/button_group/button_group.dart0%⛔️
    packages/zeta_flutter/lib/src/components/buttons/button.dart94.3%
    packages/zeta_flutter/lib/src/components/buttons/button_style.dart96.8%
    packages/zeta_flutter/lib/src/components/buttons/icon_button.dart51.2%⛔️
    packages/zeta_flutter/lib/src/components/buttons/input_icon_button.dart72.7%⛔️
    packages/zeta_flutter/lib/src/components/chat_item/chat_item.dart98.2%
    packages/zeta_flutter/lib/src/components/chat_item/contact_item.dart0%⛔️
    packages/zeta_flutter/lib/src/components/checkbox/checkbox.dart99%
    packages/zeta_flutter/lib/src/components/chips/assist_chip.dart0%⛔️
    packages/zeta_flutter/lib/src/components/chips/chip.dart81.7%
    packages/zeta_flutter/lib/src/components/chips/filter_chip.dart0%⛔️
    packages/zeta_flutter/lib/src/components/chips/input_chip.dart0%⛔️
    packages/zeta_flutter/lib/src/components/chips/status_chip.dart90.9%
    packages/zeta_flutter/lib/src/components/comms_button/comms_button.dart82%
    packages/zeta_flutter/lib/src/components/date_input/date_input.dart0%⛔️
    packages/zeta_flutter/lib/src/components/dial_pad/dial_pad.dart100%
    packages/zeta_flutter/lib/src/components/dialog/dialog.dart0%⛔️
    packages/zeta_flutter/lib/src/components/dropdown/dropdown.dart0%⛔️
    packages/zeta_flutter/lib/src/components 8000 /empty_state/empty_state.dart100%
    packages/zeta_flutter/lib/src/components/fabs/fab.dart100%
    packages/zeta_flutter/lib/src/components/filter_selection/filter_selection.dart0%⛔️
    packages/zeta_flutter/lib/src/components/global_header/global_header.dart0%⛔️
    packages/zeta_flutter/lib/src/components/global_header/header_tab_item.dart0%⛔️
    packages/zeta_flutter/lib/src/components/icon/icon.dart100%
    packages/zeta_flutter/lib/src/components/in_page_banner/in_page_banner.dart98.6%
    packages/zeta_flutter/lib/src/components/list_item/dropdown_list_item.dart0%⛔️
    packages/zeta_flutter/lib/src/components/list_item/list_item.dart0%⛔️
    packages/zeta_flutter/lib/src/components/list_item/list_scope.dart0%⛔️
    packages/zeta_flutter/lib/src/components/list_item/notification_list_item.dart0%⛔️
    packages/zeta_flutter/lib/src/components/navigation bar/navigation_bar.dart94.5%
    packages/zeta_flutter/lib/src/components/navigation_rail/navigation_rail.dart0%⛔️
    packages/zeta_flutter/lib/src/components/pagination/pagination.dart0.6%⛔️
    packages/zeta_flutter/lib/src/components/password/password_input.dart100%
    packages/zeta_flutter/lib/src/components/phone_input/phone_input.dart0%⛔️
    packages/zeta_flutter/lib/src/components/progress/progress.dart0%⛔️
    packages/zeta_flutter/lib/src/components/progress/progress_bar.dart0%⛔️
    packages/zeta_flutter/lib/src/components/progress/progress_circle.dart0%⛔️
    packages/zeta_flutter/lib/src/components/radio/radio.dart0%⛔️
    packages/zeta_flutter/lib/src/components/range_selector/range_selector.dart84.5%
    packages/zeta_flutter/lib/src/components/screen_header_bar/screen_header_bar.dart0%⛔️
    packages/zeta_flutter/lib/src/components/search_bar/search_bar.dart98.3%
    packages/zeta_flutter/lib/src/components/segmented_control/segmented_control.dart0%⛔️
    packages/zeta_flutter/lib/src/components/select_input/select_input.dart0%⛔️
    packages/zeta_flutter/lib/src/components/slider/slider.dart82.3%
    packages/zeta_flutter/lib/src/components/snack_bar/snack_bar.dart0%⛔️
    packages/zeta_flutter/lib/src/components/stepper/stepper.dart95.1%
    packages/zeta_flutter/lib/src/components/stepper_input/stepper_input.dart71.9%⛔️
    packages/zeta_flutter/lib/src/components/switch/material_switch.dart0%⛔️
    packages/zeta_flutter/lib/src/components/switch/zeta_switch.dart0%⛔️
    packages/zeta_flutter/lib/src/components/system_banner/system_banner.dart85.4%
    packages/zeta_flutter/lib/src/components/tabs/tab.dart0%⛔️
    packages/zeta_flutter/lib/src/components/tabs/tab_bar.dart0%⛔️
    packages/zeta_flutter/lib/src/components/text_input/hint_text.dart75.9%⛔️
    packages/zeta_flutter/lib/src/components/text_input/input_label.dart0%⛔️
    packages/zeta_flutter/lib/src/components/text_input/internal_text_input.dart73.1%⛔️
    packages/zeta_flutter/lib/src/components/text_input/text_input.dart0%⛔️
    packages/zeta_flutter/lib/src/components/time_input/time_input.dart0%⛔️
    packages/zeta_flutter/lib/src/components/tooltip/tooltip.dart98.9%
    packages/zeta_flutter/lib/src/components/top_app_bar/extended_top_app_bar.dart93.9%
    packages/zeta_flutter/lib/src/components/top_app_bar/search_top_app_bar.dart86.6%
    packages/zeta_flutter/lib/src/components/top_app_bar/top_app_bar.dart98.1%
    packages/zeta_flutter/lib/src/interfaces/countries.dart10%⛔️
    packages/zeta_flutter/lib/src/interfaces/form_field.dart81.4%
    packages/zeta_flutter/lib/src/interfaces/phone_number.dart0%⛔️
    packages/zeta_flutter/lib/src/utils/enums.dart100%
    packages/zeta_flutter/lib/src/utils/widget.dart100%
    packages/zeta_flutter_theme/lib/src/breakpoints.dart81.8%
    packages/zeta_flutter_theme/lib/src/color_extensions.dart86.1%
    packages/zeta_flutter_theme/lib/src/color_swatch.dart57.3%⛔️
    packages/zeta_flutter_theme/lib/src/contrast.dart50%⛔️
    packages/zeta_flutter_theme/lib/src/custom_theme.dart55.6%⛔️
    packages/zeta_flutter_theme/lib/src/generated/tokens/primitives.g.dart64.5%⛔️
    packages/zeta_flutter_theme/lib/src/generated/tokens/semantics.g.dart90.5%
    packages/zeta_flutter_theme/lib/src/rounded.dart83.3%
    packages/zeta_flutter_theme/lib/src/theme_service.dart17.9%⛔️
    packages/zeta_flutter_theme/lib/src/tokens.dart0%⛔️
    packages/zeta_flutter_theme/lib/src/typography.dart85.7%
    packages/zeta_flutter_theme/lib/src/zeta.dart97.5%
    packages/zeta_flutter_theme/lib/src/zeta_provider.dart93%
    packages/zeta_flutter_utils/lib/src/debounce.dart100%
    packages/zeta_flutter_utils/lib/src/extensions.dart97.1%
    packages/zeta_flutter_utils/lib/src/nothing.dart50%⛔️
    packages/zeta_flutter_utils/lib/src/platform/platform_is.dart0%⛔️
    packages/zeta_flutter_utils/lib/src/platform/universal_platform_vm.dart7.1%⛔️
    packages/zeta_icons/lib/src/illustrations.dart0%⛔️

Created with Flutter code quality action

@thelukewalton thelukewalton merged commit b167ee6 into main Jul 3, 2025
2 checks passed
@thelukewalton thelukewalton deleted the UX-1454 branch July 3, 2025 10:59
thelukewalton added a commit that referenced this pull request Jul 3, 2025
🤖 I have created a release *beep* *boop*
---


##
[1.2.0](zeta_flutter_theme-v1.1.2...zeta_flutter_theme-v1.2.0)
(2025-07-03)


### ✨ New Features

* **UX-1454:** Empty State Widget
([#361](#361))
([b167ee6](b167ee6))


### 🪲 Bug Fixes

* Update text themes with line height 0
([b167ee6](b167ee6))
* **UX-1460:** Update badges to latest designs
([#355](#355))
([c0c61fc](c0c61fc))


### ⛓️ Dependencies

* **automated:** Update theme tokens
([#354](#354))
([6d3585e](6d3585e))


### 🧪 Tests

* Add more thorough accessibility and styling tests
([c0c61fc](c0c61fc))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
thelukewalton added a commit that referenced this pull request Jul 4, 2025
🤖 I have created a release *beep* *boop*
---


##
[1.2.0](zeta_flutter-v1.1.3...zeta_flutter-v1.2.0)
(2025-07-04)


### ✨ New Features

* **UX-1454:** Empty State Widget
([#361](#361))
([b167ee6](b167ee6))


### 🪲 Bug Fixes

* Update text themes with line height 0
([b167ee6](b167ee6))
* **UX-1460:** Update badges to latest designs
([#355](#355))
([c0c61fc](c0c61fc))


### 🧪 Tests

* Add more thorough accessibility and styling tests
([c0c61fc](c0c61fc))


### 🧹 Miscellaneous Chores

* ** zeta_flutter_theme:** release 1.2.0
([#360](#360))
([8cea819](8cea819))
* ** zeta_flutter_utils:** release 1.1.2
([#359](#359))
([4cfd329](4cfd329))
* ** zeta_icons:** release 1.1.3
([#357](#357))
([39aa872](39aa872))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants
0