From 3012e02e5f7f6cf2fbc3a799985840ccd362ca38 Mon Sep 17 00:00:00 2001 From: Luke Walton Date: Fri, 24 Jan 2025 12:07:30 +0000 Subject: [PATCH] chore(UX-1182): Make a monorepo (#260) docs: Update documentation for zeta_flutter, zeta_flutter_utils, zeta_flutter_theme and zeta_flutter_icons docs: Update example app and widgetbook chore: Update licenses ci: Update CI actions --- .github/workflows/pull-request.yml | 9 +- .gitignore | 1 + .pubignore | 4 +- .release-please-manifest.json | 6 +- LICENSE-3RD-PARTY | 10 +- README.md | 191 +- test/TESTING_README.md => TESTING_README.md | 0 analysis_options.yaml | 3 +- dartdoc_options.yaml | 18 - doc/Assets.md | 5 - doc/Components.md | 3 - doc/Theme.md | 3 - doc/Utils.md | 3 - example/example.md | 49 - example/lib/main.dart | 2 - example/lib/pages/assets/icons_example.dart | 2 +- example/lib/pages/theme/radius_example.dart | 2 +- .../flutter/generated_plugin_registrant.cc | 4 + example/linux/flutter/generated_plugins.cmake | 1 + .../Flutter/GeneratedPluginRegistrant.swift | 2 + example/macos/Podfile.lock | 6 + example/pubspec.yaml | 12 +- .../flutter/generated_plugin_registrant.cc | 3 + .../windows/flutter/generated_plugins.cmake | 1 + lib/src/components/components.dart | 58 - lib/src/theme/theme.dart | 9 - lib/src/utils/debounce.dart | 40 - lib/src/utils/utils.dart | 8 - lib/zeta_flutter.dart | 8 - melos.yaml | 15 + packages/zeta_flutter/.metadata | 10 + packages/zeta_flutter/CHANGELOG.md | 2340 +++++++++++++++++ LICENSE => packages/zeta_flutter/LICENSE | 2 +- packages/zeta_flutter/LICENSE-3RD-PARTY | 38 + packages/zeta_flutter/README.md | 173 ++ packages/zeta_flutter/analysis_options.yaml | 1 + .../zeta_flutter}/assets/flags/ad.png | Bin .../zeta_flutter}/assets/flags/ae.png | Bin .../zeta_flutter}/assets/flags/af.png | Bin .../zeta_flutter}/assets/flags/ag.png | Bin .../zeta_flutter}/assets/flags/ai.png | Bin .../zeta_flutter}/assets/flags/al.png | Bin .../zeta_flutter}/assets/flags/am.png | Bin .../zeta_flutter}/assets/flags/an.png | Bin .../zeta_flutter}/assets/flags/ao.png | Bin .../zeta_flutter}/assets/flags/aq.png | Bin .../zeta_flutter}/assets/flags/ar.png | Bin .../zeta_flutter}/assets/flags/as.png | Bin .../zeta_flutter}/assets/flags/at.png | Bin .../zeta_flutter}/assets/flags/au.png | Bin .../zeta_flutter}/assets/flags/aw.png | Bin .../zeta_flutter}/assets/flags/ax.png | Bin .../zeta_flutter}/assets/flags/az.png | Bin .../zeta_flutter}/assets/flags/ba.png | Bin .../zeta_flutter}/assets/flags/bb.png | Bin .../zeta_flutter}/assets/flags/bd.png | Bin .../zeta_flutter}/assets/flags/be.png | Bin .../zeta_flutter}/assets/flags/bf.png | Bin .../zeta_flutter}/assets/flags/bg.png | Bin .../zeta_flutter}/assets/flags/bh.png | Bin .../zeta_flutter}/assets/flags/bi.png | Bin .../zeta_flutter}/assets/flags/bj.png | Bin .../zeta_flutter}/assets/flags/bl.png | Bin .../zeta_flutter}/assets/flags/bm.png | Bin .../zeta_flutter}/assets/flags/bn.png | Bin .../zeta_flutter}/assets/flags/bo.png | Bin .../zeta_flutter}/assets/flags/bq.png | Bin .../zeta_flutter}/assets/flags/br.png | Bin .../zeta_flutter}/assets/flags/bs.png | Bin .../zeta_flutter}/assets/flags/bt.png | Bin .../zeta_flutter}/assets/flags/bv.png | Bin .../zeta_flutter}/assets/flags/bw.png | Bin .../zeta_flutter}/assets/flags/by.png | Bin .../zeta_flutter}/assets/flags/bz.png | Bin .../zeta_flutter}/assets/flags/ca.png | Bin .../zeta_flutter}/assets/flags/cc.png | Bin .../zeta_flutter}/assets/flags/cd.png | Bin .../zeta_flutter}/assets/flags/cf.png | Bin .../zeta_flutter}/assets/flags/cg.png | Bin .../zeta_flutter}/assets/flags/ch.png | Bin .../zeta_flutter}/assets/flags/ci.png | Bin .../zeta_flutter}/assets/flags/ck.png | Bin .../zeta_flutter}/assets/flags/cl.png | Bin .../zeta_flutter}/assets/flags/cm.png | Bin .../zeta_flutter}/assets/flags/cn.png | Bin .../zeta_flutter}/assets/flags/co.png | Bin .../zeta_flutter}/assets/flags/cr.png | Bin .../zeta_flutter}/assets/flags/cu.png | Bin .../zeta_flutter}/assets/flags/cv.png | Bin .../zeta_flutter}/assets/flags/cw.png | Bin .../zeta_flutter}/assets/flags/cx.png | Bin .../zeta_flutter}/assets/flags/cy.png | Bin .../zeta_flutter}/assets/flags/cz.png | Bin .../zeta_flutter}/assets/flags/de.png | Bin .../zeta_flutter}/assets/flags/dj.png | Bin .../zeta_flutter}/assets/flags/dk.png | Bin .../zeta_flutter}/assets/flags/dm.png | Bin .../zeta_flutter}/assets/flags/do.png | Bin .../zeta_flutter}/assets/flags/dz.png | Bin .../zeta_flutter}/assets/flags/ec.png | Bin .../zeta_flutter}/assets/flags/ee.png | Bin .../zeta_flutter}/assets/flags/eg.png | Bin .../zeta_flutter}/assets/flags/eh.png | Bin .../zeta_flutter}/assets/flags/er.png | Bin .../zeta_flutter}/assets/flags/es.png | Bin .../zeta_flutter}/assets/flags/et.png | Bin .../zeta_flutter}/assets/flags/eu.png | Bin .../zeta_flutter}/assets/flags/fi.png | Bin .../zeta_flutter}/assets/flags/fj.png | Bin .../zeta_flutter}/assets/flags/fk.png | Bin .../zeta_flutter}/assets/flags/fm.png | Bin .../zeta_flutter}/assets/flags/fo.png | Bin .../zeta_flutter}/assets/flags/fr.png | Bin .../zeta_flutter}/assets/flags/ga.png | Bin .../zeta_flutter}/assets/flags/gb-eng.png | Bin .../zeta_flutter}/assets/flags/gb-nir.png | Bin .../zeta_flutter}/assets/flags/gb-sct.png | Bin .../zeta_flutter}/assets/flags/gb-wls.png | Bin .../zeta_flutter}/assets/flags/gb.png | Bin .../zeta_flutter}/assets/flags/gd.png | Bin .../zeta_flutter}/assets/flags/ge.png | Bin .../zeta_flutter}/assets/flags/gf.png | Bin .../zeta_flutter}/assets/flags/gg.png | Bin .../zeta_flutter}/assets/flags/gh.png | Bin .../zeta_flutter}/assets/flags/gi.png | Bin .../zeta_flutter}/assets/flags/gl.png | Bin .../zeta_flutter}/assets/flags/gm.png | Bin .../zeta_flutter}/assets/flags/gn.png | Bin .../zeta_flutter}/assets/flags/gp.png | Bin .../zeta_flutter}/assets/flags/gq.png | Bin .../zeta_flutter}/assets/flags/gr.png | Bin .../zeta_flutter}/assets/flags/gs.png | Bin .../zeta_flutter}/assets/flags/gt.png | Bin .../zeta_flutter}/assets/flags/gu.png | Bin .../zeta_flutter}/assets/flags/gw.png | Bin .../zeta_flutter}/assets/flags/gy.png | Bin .../zeta_flutter}/assets/flags/hk.png | Bin .../zeta_flutter}/assets/flags/hm.png | Bin .../zeta_flutter}/assets/flags/hn.png | Bin .../zeta_flutter}/assets/flags/hr.png | Bin .../zeta_flutter}/assets/flags/ht.png | Bin .../zeta_flutter}/assets/flags/hu.png | Bin .../zeta_flutter}/assets/flags/id.png | Bin .../zeta_flutter}/assets/flags/ie.png | Bin .../zeta_flutter}/assets/flags/il.png | Bin .../zeta_flutter}/assets/flags/im.png | Bin .../zeta_flutter}/assets/flags/in.png | Bin .../zeta_flutter}/assets/flags/io.png | Bin .../zeta_flutter}/assets/flags/iq.png | Bin .../zeta_flutter}/assets/flags/ir.png | Bin .../zeta_flutter}/assets/flags/is.png | Bin .../zeta_flutter}/assets/flags/it.png | Bin .../zeta_flutter}/assets/flags/je.png | Bin .../zeta_flutter}/assets/flags/jm.png | Bin .../zeta_flutter}/assets/flags/jo.png | Bin .../zeta_flutter}/assets/flags/jp.png | Bin .../zeta_flutter}/assets/flags/ke.png | Bin .../zeta_flutter}/assets/flags/kg.png | Bin .../zeta_flutter}/assets/flags/kh.png | Bin .../zeta_flutter}/assets/flags/ki.png | Bin .../zeta_flutter}/assets/flags/km.png | Bin .../zeta_flutter}/assets/flags/kn.png | Bin .../zeta_flutter}/assets/flags/kp.png | Bin .../zeta_flutter}/assets/flags/kr.png | Bin .../zeta_flutter}/assets/flags/kw.png | Bin .../zeta_flutter}/assets/flags/ky.png | Bin .../zeta_flutter}/assets/flags/kz.png | Bin .../zeta_flutter}/assets/flags/la.png | Bin .../zeta_flutter}/assets/flags/lb.png | Bin .../zeta_flutter}/assets/flags/lc.png | Bin .../zeta_flutter}/assets/flags/li.png | Bin .../zeta_flutter}/assets/flags/lk.png | Bin .../zeta_flutter}/assets/flags/lr.png | Bin .../zeta_flutter}/assets/flags/ls.png | Bin .../zeta_flutter}/assets/flags/lt.png | Bin .../zeta_flutter}/assets/flags/lu.png | Bin .../zeta_flutter}/assets/flags/lv.png | Bin .../zeta_flutter}/assets/flags/ly.png | Bin .../zeta_flutter}/assets/flags/ma.png | Bin .../zeta_flutter}/assets/flags/mc.png | Bin .../zeta_flutter}/assets/flags/md.png | Bin .../zeta_flutter}/assets/flags/me.png | Bin .../zeta_flutter}/assets/flags/mf.png | Bin .../zeta_flutter}/assets/flags/mg.png | Bin .../zeta_flutter}/assets/flags/mh.png | Bin .../zeta_flutter}/assets/flags/mk.png | Bin .../zeta_flutter}/assets/flags/ml.png | Bin .../zeta_flutter}/assets/flags/mm.png | Bin .../zeta_flutter}/assets/flags/mn.png | Bin .../zeta_flutter}/assets/flags/mo.png | Bin .../zeta_flutter}/assets/flags/mp.png | Bin .../zeta_flutter}/assets/flags/mq.png | Bin .../zeta_flutter}/assets/flags/mr.png | Bin .../zeta_flutter}/assets/flags/ms.png | Bin .../zeta_flutter}/assets/flags/mt.png | Bin .../zeta_flutter}/assets/flags/mu.png | Bin .../zeta_flutter}/assets/flags/mv.png | Bin .../zeta_flutter}/assets/flags/mw.png | Bin .../zeta_flutter}/assets/flags/mx.png | Bin .../zeta_flutter}/assets/flags/my.png | Bin .../zeta_flutter}/assets/flags/mz.png | Bin .../zeta_flutter}/assets/flags/na.png | Bin .../zeta_flutter}/assets/flags/nc.png | Bin .../zeta_flutter}/assets/flags/ne.png | Bin .../zeta_flutter}/assets/flags/nf.png | Bin .../zeta_flutter}/assets/flags/ng.png | Bin .../zeta_flutter}/assets/flags/ni.png | Bin .../zeta_flutter}/assets/flags/nl.png | Bin .../zeta_flutter}/assets/flags/no.png | Bin .../zeta_flutter}/assets/flags/np.png | Bin .../zeta_flutter}/assets/flags/nr.png | Bin .../zeta_flutter}/assets/flags/nu.png | Bin .../zeta_flutter}/assets/flags/nz.png | Bin .../zeta_flutter}/assets/flags/om.png | Bin .../zeta_flutter}/assets/flags/pa.png | Bin .../zeta_flutter}/assets/flags/pe.png | Bin .../zeta_flutter}/assets/flags/pf.png | Bin .../zeta_flutter}/assets/flags/pg.png | Bin .../zeta_flutter}/assets/flags/ph.png | Bin .../zeta_flutter}/assets/flags/pk.png | Bin .../zeta_flutter}/assets/flags/pl.png | Bin .../zeta_flutter}/assets/flags/pm.png | Bin .../zeta_flutter}/assets/flags/pn.png | Bin .../zeta_flutter}/assets/flags/pr.png | Bin .../zeta_flutter}/assets/flags/ps.png | Bin .../zeta_flutter}/assets/flags/pt.png | Bin .../zeta_flutter}/assets/flags/pw.png | Bin .../zeta_flutter}/assets/flags/py.png | Bin .../zeta_flutter}/assets/flags/qa.png | Bin .../zeta_flutter}/assets/flags/re.png | Bin .../zeta_flutter}/assets/flags/ro.png | Bin .../zeta_flutter}/assets/flags/rs.png | Bin .../zeta_flutter}/assets/flags/ru.png | Bin .../zeta_flutter}/assets/flags/rw.png | Bin .../zeta_flutter}/assets/flags/sa.png | Bin .../zeta_flutter}/assets/flags/sb.png | Bin .../zeta_flutter}/assets/flags/sc.png | Bin .../zeta_flutter}/assets/flags/sd.png | Bin .../zeta_flutter}/assets/flags/se.png | Bin .../zeta_flutter}/assets/flags/sg.png | Bin .../zeta_flutter}/assets/flags/sh.png | Bin .../zeta_flutter}/assets/flags/si.png | Bin .../zeta_flutter}/assets/flags/sj.png | Bin .../zeta_flutter}/assets/flags/sk.png | Bin .../zeta_flutter}/assets/flags/sl.png | Bin .../zeta_flutter}/assets/flags/sm.png | Bin .../zeta_flutter}/assets/flags/sn.png | Bin .../zeta_flutter}/assets/flags/so.png | Bin .../zeta_flutter}/assets/flags/sr.png | Bin .../zeta_flutter}/assets/flags/ss.png | Bin .../zeta_flutter}/assets/flags/st.png | Bin .../zeta_flutter}/assets/flags/sv.png | Bin .../zeta_flutter}/assets/flags/sx.png | Bin .../zeta_flutter}/assets/flags/sy.png | Bin .../zeta_flutter}/assets/flags/sz.png | Bin .../zeta_flutter}/assets/flags/tc.png | Bin .../zeta_flutter}/assets/flags/td.png | Bin .../zeta_flutter}/assets/flags/tf.png | Bin .../zeta_flutter}/assets/flags/tg.png | Bin .../zeta_flutter}/assets/flags/th.png | Bin .../zeta_flutter}/assets/flags/tj.png | Bin .../zeta_flutter}/assets/flags/tk.png | Bin .../zeta_flutter}/assets/flags/tl.png | Bin .../zeta_flutter}/assets/flags/tm.png | Bin .../zeta_flutter}/assets/flags/tn.png | Bin .../zeta_flutter}/assets/flags/to.png | Bin .../zeta_flutter}/assets/flags/tr.png | Bin .../zeta_flutter}/assets/flags/tt.png | Bin .../zeta_flutter}/assets/flags/tv.png | Bin .../zeta_flutter}/assets/flags/tw.png | Bin .../zeta_flutter}/assets/flags/tz.png | Bin .../zeta_flutter}/assets/flags/ua.png | Bin .../zeta_flutter}/assets/flags/ug.png | Bin .../zeta_flutter}/assets/flags/um.png | Bin .../zeta_flutter}/assets/flags/us.png | Bin .../zeta_flutter}/assets/flags/uy.png | Bin .../zeta_flutter}/assets/flags/uz.png | Bin .../zeta_flutter}/assets/flags/va.png | Bin .../zeta_flutter}/assets/flags/vc.png | Bin .../zeta_flutter}/assets/flags/ve.png | Bin .../zeta_flutter}/assets/flags/vg.png | Bin .../zeta_flutter}/assets/flags/vi.png | Bin .../zeta_flutter}/assets/flags/vn.png | Bin .../zeta_flutter}/assets/flags/vu.png | Bin .../zeta_flutter}/assets/flags/wf.png | Bin .../zeta_flutter}/assets/flags/ws.png | Bin .../zeta_flutter}/assets/flags/xk.png | Bin .../zeta_flutter}/assets/flags/ye.png | Bin .../zeta_flutter}/assets/flags/yt.png | Bin .../zeta_flutter}/assets/flags/za.png | Bin .../zeta_flutter}/assets/flags/zm.png | Bin .../zeta_flutter}/assets/flags/zw.png | Bin .../assets/logos/zebra-logo-head.svg | 0 packages/zeta_flutter/example/example.md | 33 + .../src/components/accordion/accordion.dart | 2 +- .../components/avatar_rail/avatar_rail.dart | 1 - .../lib}/src/components/avatars/avatar.dart | 4 - .../lib}/src/components/badges/indicator.dart | 1 - .../lib}/src/components/badges/label.dart | 1 - .../src/components/badges/priority_pill.dart | 7 +- .../src/components/badges/status_label.dart | 1 - .../lib}/src/components/badges/tag.dart | 1 - .../bottom sheets/bottom_sheet.dart | 2 - .../components/bottom sheets/menu_items.dart | 1 - .../src/components/breadcrumb/breadcrumb.dart | 3 - .../components/button_group/button_group.dart | 2 - .../lib}/src/components/buttons/button.dart | 2 +- .../src/components/buttons/button_style.dart | 0 .../src/components/buttons/icon_button.dart | 2 +- .../components/buttons/input_icon_button.dart | 0 .../src/components/chat_item/chat_item.dart | 3 - .../components/chat_item/contact_item.dart | 2 - .../src/components/checkbox/checkbox.dart | 3 - .../src/components/chips/assist_chip.dart | 1 - .../lib}/src/components/chips/chip.dart | 2 - .../src/components/chips/filter_chip.dart | 1 - .../lib}/src/components/chips/input_chip.dart | 1 - .../src/components/chips/status_chip.dart | 2 - .../components/comms_button/comms_button.dart | 1 - .../src/components/date_input/date_input.dart | 2 +- .../src/components/dial_pad/dial_pad.dart | 8 +- .../lib}/src/components/dialog/dialog.dart | 1 - .../src/components/dropdown/dropdown.dart | 5 +- .../dropdown/dropdown_controller.dart | 0 .../lib}/src/components/fabs/fab.dart | 1 - .../filter_selection/filter_selection.dart | 1 - .../global_header/global_header.dart | 1 - .../global_header/header_tab_item.dart | 1 - .../lib}/src/components/icon/icon.dart | 2 +- .../in_page_banner/in_page_banner.dart | 1 - .../list_item/dropdown_list_item.dart | 2 +- .../src/components/list_item/list_item.dart | 3 +- .../src/components/list_item/list_scope.dart | 0 .../list_item/notification_list_item.dart | 4 - .../navigation bar/navigation_bar.dart | 3 - .../navigation_rail/navigation_rail.dart | 3 - .../src/components/pagination/pagination.dart | 1 - .../components/password/password_input.dart | 2 +- .../components/phone_input/phone_input.dart | 3 +- .../src/components/progress/progress.dart | 0 .../src/components/progress/progress_bar.dart | 2 +- .../components/progress/progress_circle.dart | 2 +- .../lib}/src/components/radio/radio.dart | 1 - .../range_selector/range_selector.dart | 2 - .../screen_header_bar/screen_header_bar.dart | 2 - .../src/components/search_bar/search_bar.dart | 2 +- .../segmented_control/segmented_control.dart | 1 - .../components/select_input/select_input.dart | 2 +- .../lib}/src/components/slider/slider.dart | 2 - .../src/components/snack_bar/snack_bar.dart | 1 - .../lib}/src/components/stepper/stepper.dart | 3 - .../stepper_input/stepper_input.dart | 1 - .../components/switch/material_switch.dart | 0 .../src/components/switch/zeta_switch.dart | 2 +- .../system_banner/system_banner.dart | 2 - .../lib}/src/components/tabs/tab.dart | 1 - .../lib}/src/components/tabs/tab_bar.dart | 1 - .../src/components/text_input/hint_text.dart | 0 .../components/text_input/input_label.dart | 0 .../text_input/internal_text_input.dart | 1 + .../src/components/text_input/text_input.dart | 3 +- .../src/components/time_input/time_input.dart | 2 +- .../lib}/src/components/tooltip/tooltip.dart | 1 - .../top_app_bar/extended_top_app_bar.dart | 1 - .../top_app_bar/search_top_app_bar.dart | 3 - .../components/top_app_bar/top_app_bar.dart | 2 +- .../lib}/src/interfaces/countries.dart | 4 - .../lib}/src/interfaces/form_field.dart | 2 - .../lib}/src/interfaces/interfaces.dart | 0 .../lib}/src/interfaces/phone_number.dart | 2 - .../zeta_flutter/lib}/src/utils/enums.dart | 0 .../zeta_flutter/lib/src/utils/utils.dart | 2 + .../zeta_flutter/lib/src/utils/widget.dart | 32 + .../zeta_flutter/lib/zeta_components.dart | 63 + packages/zeta_flutter/lib/zeta_flutter.dart | 15 + packages/zeta_flutter/lib/zeta_icons.dart | 8 + packages/zeta_flutter/lib/zeta_theme.dart | 6 + packages/zeta_flutter/lib/zeta_utils.dart | 6 + packages/zeta_flutter/pubspec.yaml | 38 + .../components/accordion/accordion_test.dart | 3 +- .../avatar/assets/maxresdefault.jpg | Bin .../components/avatar/avatar_rail_test.dart | 4 +- .../test}/components/avatar/avatar_test.dart | 4 +- .../avatar/golden/avatar_default_l.png | Bin .../avatar/golden/avatar_default_m.png | Bin .../avatar/golden/avatar_default_s.png | Bin .../avatar/golden/avatar_default_xl.png | Bin .../avatar/golden/avatar_default_xs.png | Bin .../avatar/golden/avatar_default_xxl.png | Bin .../avatar/golden/avatar_default_xxs.png | Bin .../avatar/golden/avatar_default_xxxl.png | Bin .../avatar/golden/avatar_default_xxxs.png | Bin .../avatar/golden/avatar_from_name_l.png | Bin .../avatar/golden/avatar_from_name_m.png | Bin .../avatar/golden/avatar_from_name_s.png | Bin .../avatar/golden/avatar_from_name_xl.png | Bin .../avatar/golden/avatar_from_name_xs.png | Bin .../avatar/golden/avatar_from_name_xxl.png | Bin .../avatar/golden/avatar_from_name_xxs.png | Bin .../avatar/golden/avatar_from_name_xxxl.png | Bin .../avatar/golden/avatar_from_name_xxxs.png | Bin .../avatar/golden/avatar_image_l.png | Bin .../avatar/golden/avatar_image_m.png | Bin .../avatar/golden/avatar_image_s.png | Bin .../avatar/golden/avatar_image_xl.png | Bin .../avatar/golden/avatar_image_xs.png | Bin .../avatar/golden/avatar_image_xxl.png | Bin .../avatar/golden/avatar_image_xxs.png | Bin .../avatar/golden/avatar_image_xxxl.png | Bin .../avatar/golden/avatar_image_xxxs.png | Bin .../avatar/golden/avatar_initials_l.png | Bin .../avatar/golden/avatar_initials_m.png | Bin .../avatar/golden/avatar_initials_s.png | Bin .../avatar/golden/avatar_initials_xl.png | Bin .../avatar/golden/avatar_initials_xs.png | Bin .../avatar/golden/avatar_initials_xxl.png | Bin .../avatar/golden/avatar_initials_xxs.png | Bin .../avatar/golden/avatar_initials_xxxl.png | Bin .../avatar/golden/avatar_initials_xxxs.png | Bin .../avatar/golden/avatar_lower_badge_l.png | Bin .../avatar/golden/avatar_lower_badge_m.png | Bin .../avatar/golden/avatar_lower_badge_s.png | Bin .../avatar/golden/avatar_lower_badge_xl.png | Bin .../avatar/golden/avatar_lower_badge_xs.png | Bin .../avatar/golden/avatar_lower_badge_xxl.png | Bin .../avatar/golden/avatar_lower_badge_xxs.png | Bin .../avatar/golden/avatar_lower_badge_xxxl.png | Bin .../avatar/golden/avatar_lower_badge_xxxs.png | Bin .../avatar/golden/avatar_upper_badge_l.png | Bin .../avatar/golden/avatar_upper_badge_m.png | Bin .../avatar/golden/avatar_upper_badge_s.png | Bin .../avatar/golden/avatar_upper_badge_xl.png | Bin .../avatar/golden/avatar_upper_badge_xs.png | Bin .../avatar/golden/avatar_upper_badge_xxl.png | Bin .../avatar/golden/avatar_upper_badge_xxs.png | Bin .../avatar/golden/avatar_upper_badge_xxxl.png | Bin .../avatar/golden/avatar_upper_badge_xxxs.png | Bin .../golden/zeta_avatar_rail_default.png | Bin .../test}/components/badge/golden/badge.png | Bin .../components/badge/golden/badge_dark.png | Bin .../components/badge/golden/badge_default.png | Bin .../badge/golden/badge_negative.png | Bin .../components/badge/golden/badge_neutral.png | Bin .../badge/golden/badge_positive.png | Bin .../components/badge/golden/badge_warning.png | Bin .../badge/golden/indicator_default.png | Bin .../badge/golden/indicator_icon_default.png | Bin .../badge/golden/indicator_icon_values.png | Bin .../golden/indicator_notification_default.png | Bin .../golden/indicator_notification_values.png | Bin .../indicator_notification_with_value.png | Bin .../components/badge/golden/label_dark.png | Bin .../components/badge/golden/label_default.png | Bin .../badge/golden/label_negative.png | Bin .../components/badge/golden/label_neutral.png | Bin .../badge/golden/label_positive.png | Bin .../components/badge/golden/label_sharp.png | Bin .../components/badge/golden/label_warning.png | Bin .../badge/golden/priority_pill_default.png | Bin .../badge/golden/priority_pill_high.png | Bin .../badge/golden/priority_pill_low.png | Bin .../badge/golden/priority_pill_medium.png | Bin .../badge/golden/status_label_custom.png | Bin .../badge/golden/status_label_default.png | Bin .../components/badge/golden/tag_left.png | Bin .../components/badge/golden/tag_right.png | Bin .../components/badge/indicator_test.dart | 5 +- .../test}/components/badge/label_test.dart | 4 +- .../components/badge/priority_pill_test.dart | 4 +- .../components/badge/status_label_test.dart | 4 +- .../test}/components/badge/tag_test.dart | 4 +- .../test}/components/banner/banner_test.dart | 4 +- .../banner/golden/banner_negative.png | Bin .../banner/golden/banner_positive.png | Bin .../banner/golden/banner_primary.png | Bin .../banner/golden/banner_warning.png | Bin .../breadcrumb/breadcrumb_test.dart | 4 +- .../test}/components/button/button_test.dart | 5 +- .../button/golden/button_disabled.png | Bin .../button/golden/button_negative.png | Bin .../button/golden/button_outline.png | Bin .../button/golden/button_outline_subtle.png | Bin .../button/golden/button_positive.png | Bin .../button/golden/button_primary.png | Bin .../button/golden/button_secondary.png | Bin .../components/button/golden/button_text.png | Bin .../components/chat_item/chat_item_test.dart | 4 +- .../golden/chat_item_custom_leading.png | Bin .../chat_item_custom_slidable_buttons.png | Bin .../chat_item/golden/chat_item_default.png | Bin .../golden/chat_item_highlighted.png | Bin .../chat_item_pale_and_regular_buttons.png | Bin .../chat_item_pale_slidable_buttons.png | Bin .../golden/chat_item_slidable_actions.png | Bin ...chat_item_small_screen_slidable_button.png | Bin .../components/checkbox/checkbox_test.dart | 4 +- .../checkbox/golden/checkbox_disabled.png | Bin .../checkbox/golden/checkbox_enabled.png | Bin .../checkbox/golden/checkbox_hover.png | Bin .../test}/components/chips/chip_test.dart | 4 +- .../chips/golden/status_chip_default.png | Bin .../chips/golden/status_chip_long.png | Bin .../chips/golden/status_chip_sharp.png | Bin .../components/chips/status_chip_test.dart | 4 +- .../comms_button/comms_button_test.dart | 4 +- .../golden/CommsButton_negative.png | Bin .../comms_button/golden/CommsButton_off.png | Bin .../comms_button/golden/CommsButton_on.png | Bin .../golden/CommsButton_positive.png | Bin .../golden/CommsButton_warning.png | Bin .../components/dialpad/dialpad_test.dart | 4 +- .../dialpad/golden/dialpad_disabled.png | Bin .../dialpad/golden/dialpad_enabled.png | Bin .../dialpad/golden/dialpadbutton.png | Bin .../test}/components/fab/fab_test.dart | 4 +- .../components/fab/golden/FAB_default.png | Bin .../components/fab/golden/FAB_disabled.png | Bin .../components/fab/golden/FAB_inverse.png | Bin .../components/fab/golden/FAB_pressed.png | Bin .../components/fab/golden/FAB_secondary.png | Bin .../test}/components/icon/icon_test.dart | 4 +- .../golden/in_page_banner_buttons.png | Bin .../golden/in_page_banner_default.png | Bin .../golden/in_page_banner_negative.png | Bin .../golden/in_page_banner_positive.png | Bin .../in_page_banner/in_page_banner_test.dart | 4 +- .../golden/navigation_bar_action.png | Bin .../golden/navigation_bar_current_index_0.png | Bin .../golden/navigation_bar_current_index_1.png | Bin .../golden/navigation_bar_current_index_2.png | Bin .../golden/navigation_bar_current_index_3.png | Bin .../golden/navigation_bar_default.png | Bin .../golden/navigation_bar_divider.png | Bin .../golden/navigation_bar_divider_at_0.png | Bin .../golden/navigation_bar_divider_at_1.png | Bin .../golden/navigation_bar_divider_at_2.png | Bin .../golden/navigation_bar_divider_at_3.png | Bin .../golden/navigation_bar_shrink_items.png | Bin .../golden/navigation_bar_split.png | Bin .../navigation_bar/navigation_bar_test.dart | 4 +- .../password/golden/password_default.png | Bin .../password/golden/password_error.png | Bin .../password/password_input_test.dart | 4 +- .../range_selector_rounded_continuous.png | Bin .../range_selector_rounded_disabled.png | Bin .../golden/range_selector_rounded_stepped.png | Bin .../range_selector_sharp_continuous.png | Bin .../golden/range_selector_sharp_disabled.png | Bin .../golden/range_selector_sharp_stepped.png | Bin .../range_slider_rounded_continuous.png | Bin .../golden/range_slider_rounded_disabled.png | Bin .../golden/range_slider_rounded_stepped.png | Bin .../golden/range_slider_sharp_continuous.png | Bin .../golden/range_slider_sharp_disabled.png | Bin .../golden/range_slider_sharp_stepped.png | Bin .../range_selector/range_selector_test.dart | 6 +- .../search_bar/golden/search_bar_default.png | Bin .../search_bar/golden/search_bar_full.png | Bin .../search_bar/golden/search_bar_large.png | Bin .../search_bar/golden/search_bar_medium.png | Bin .../search_bar/golden/search_bar_sharp.png | Bin .../search_bar/golden/search_bar_small.png | Bin .../search_bar/search_bar_test.dart | 4 +- .../search_bar/search_bar_test.mocks.dart | 17 +- .../test}/components/slider/slider_test.dart | 4 +- .../golden/stepper_horizontal_complete.png | Bin .../golden/stepper_horizontal_incomplete.png | Bin .../stepper_horizontal_step_disabled.png | Bin .../golden/stepper_vertical_complete.png | Bin .../golden/stepper_vertical_incomplete.png | Bin .../golden/stepper_vertical_step_disabled.png | Bin .../components/stepper/stepper_test.dart | 4 +- .../stepper_input/stepper_input_test.dart | 4 +- .../components/tooltip/golden/arrow_down.png | Bin .../components/tooltip/golden/arrow_left.png | Bin .../components/tooltip/golden/arrow_right.png | Bin .../components/tooltip/golden/arrow_up.png | Bin .../components/tooltip/tooltip_test.dart | 4 +- .../tooltip/tooltip_test.mocks.dart | 431 +++ .../extended_top_app_bar_test.dart | 4 +- .../golden/extended_app_bar_shrinks.png | Bin ...tended_app_bar_shrinks_with_no_leading.png | Bin .../golden/top_app_bar_centered.png | Bin .../golden/top_app_bar_centered_actions.png | Bin .../golden/top_app_bar_default.png | Bin .../golden/top_app_bar_default_actions.png | Bin .../golden/top_app_bar_extended.png | Bin .../golden/top_app_bar_extended_actions.png | Bin .../top_app_bar/golden/top_app_bar_search.png | Bin .../golden/top_app_bar_search_active.png | Bin .../golden/top_app_bar_search_centered.png | Bin .../top_app_bar/top_app_bar_test.dart | 4 +- .../avatar/golden/avatar_default_l.png | Bin 0 -> 4714 bytes .../avatar/golden/avatar_default_m.png | Bin 0 -> 4420 bytes .../avatar/golden/avatar_default_s.png | Bin 0 -> 4168 bytes .../avatar/golden/avatar_default_xl.png | Bin 0 -> 4995 bytes .../avatar/golden/avatar_default_xs.png | Bin 0 -> 4060 bytes .../avatar/golden/avatar_default_xxl.png | Bin 0 -> 5845 bytes .../avatar/golden/avatar_default_xxs.png | Bin 0 -> 4022 bytes .../avatar/golden/avatar_default_xxxl.png | Bin 0 -> 7364 bytes .../avatar/golden/avatar_default_xxxs.png | Bin 0 -> 3818 bytes .../avatar/golden/avatar_from_name_l.png | Bin 0 -> 4045 bytes .../avatar/golden/avatar_from_name_m.png | Bin 0 -> 3942 bytes .../avatar/golden/avatar_from_name_s.png | Bin 0 -> 3822 bytes .../avatar/golden/avatar_from_name_xl.png | Bin 0 -> 4264 bytes .../avatar/golden/avatar_from_name_xs.png | Bin 0 -> 3744 bytes .../avatar/golden/avatar_from_name_xxl.png | Bin 0 -> 4561 bytes .../avatar/golden/avatar_from_name_xxs.png | Bin 0 -> 3700 bytes .../avatar/golden/avatar_from_name_xxxl.png | Bin 0 -> 5215 bytes .../avatar/golden/avatar_from_name_xxxs.png | Bin 0 -> 3632 bytes .../avatar/golden/avatar_image_l.png | Bin 0 -> 3918 bytes .../avatar/golden/avatar_image_m.png | Bin 0 -> 3804 bytes .../avatar/golden/avatar_image_s.png | Bin 0 -> 3693 bytes .../avatar/golden/avatar_image_xl.png | Bin 0 -> 4104 bytes .../avatar/golden/avatar_image_xs.png | Bin 0 -> 3643 bytes .../avatar/golden/avatar_image_xxl.png | Bin 0 -> 4403 bytes .../avatar/golden/avatar_image_xxs.png | Bin 0 -> 3590 bytes .../avatar/golden/avatar_image_xxxl.png | Bin 0 -> 5069 bytes .../avatar/golden/avatar_image_xxxs.png | Bin 0 -> 3536 bytes .../avatar/golden/avatar_initials_l.png | Bin 0 -> 4045 bytes .../avatar/golden/avatar_initials_m.png | Bin 0 -> 3942 bytes .../avatar/golden/avatar_initials_s.png | Bin 0 -> 3822 bytes .../avatar/golden/avatar_initials_xl.png | Bin 0 -> 4264 bytes .../avatar/golden/avatar_initials_xs.png | Bin 0 -> 3744 bytes .../avatar/golden/avatar_initials_xxl.png | Bin 0 -> 4561 bytes .../avatar/golden/avatar_initials_xxs.png | Bin 0 -> 3700 bytes .../avatar/golden/avatar_initials_xxxl.png | Bin 0 -> 5215 bytes .../avatar/golden/avatar_initials_xxxs.png | Bin 0 -> 3632 bytes .../avatar/golden/avatar_lower_badge_l.png | Bin 0 -> 5193 bytes .../avatar/golden/avatar_lower_badge_m.png | Bin 0 -> 4765 bytes .../avatar/golden/avatar_lower_badge_s.png | Bin 0 -> 4508 bytes .../avatar/golden/avatar_lower_badge_xl.png | Bin 0 -> 5749 bytes .../avatar/golden/avatar_lower_badge_xs.png | Bin 0 -> 4322 bytes .../avatar/golden/avatar_lower_badge_xxl.png | Bin 0 -> 6923 bytes .../avatar/golden/avatar_lower_badge_xxs.png | Bin 0 -> 4264 bytes .../avatar/golden/avatar_lower_badge_xxxl.png | Bin 0 -> 9096 bytes .../avatar/golden/avatar_lower_badge_xxxs.png | Bin 0 -> 3980 bytes .../avatar/golden/avatar_upper_badge_l.png | Bin 0 -> 5131 bytes .../avatar/golden/avatar_upper_badge_m.png | Bin 0 -> 4735 bytes .../avatar/golden/avatar_upper_badge_s.png | Bin 0 -> 4498 bytes .../avatar/golden/avatar_upper_badge_xl.png | Bin 0 -> 5546 bytes .../avatar/golden/avatar_upper_badge_xs.png | Bin 0 -> 4309 bytes .../avatar/golden/avatar_upper_badge_xxl.png | Bin 0 -> 6549 bytes .../avatar/golden/avatar_upper_badge_xxs.png | Bin 0 -> 4277 bytes .../avatar/golden/avatar_upper_badge_xxxl.png | Bin 0 -> 8563 bytes .../avatar/golden/avatar_upper_badge_xxxs.png | Bin 0 -> 3965 bytes .../golden/zeta_avatar_rail_default.png | Bin 0 -> 5867 bytes .../badge/golden/indicator_default.png | Bin 0 -> 3788 bytes .../badge/golden/indicator_icon_default.png | Bin 0 -> 4153 bytes .../badge/golden/indicator_icon_values.png | Bin 0 -> 3791 bytes .../golden/indicator_notification_default.png | Bin 0 -> 3788 bytes .../golden/indicator_notification_values.png | Bin 0 -> 3435 bytes .../indicator_notification_with_value.png | Bin 0 -> 3472 bytes .../components/badge/golden/label_dark.png | Bin 0 -> 3679 bytes .../components/badge/golden/label_default.png | Bin 0 -> 3621 bytes .../badge/golden/label_negative.png | Bin 0 -> 3662 bytes .../components/badge/golden/label_neutral.png | Bin 0 -> 3615 bytes .../badge/golden/label_positive.png | Bin 0 -> 3678 bytes .../components/badge/golden/label_sharp.png | Bin 0 -> 3460 bytes .../components/badge/golden/label_warning.png | Bin 0 -> 3664 bytes .../badge/golden/priority_pill_default.png | Bin 0 -> 4505 bytes .../badge/golden/priority_pill_high.png | Bin 0 -> 3682 bytes .../badge/golden/priority_pill_low.png | Bin 0 -> 3869 bytes .../badge/golden/priority_pill_medium.png | Bin 0 -> 4055 bytes .../badge/golden/status_label_custom.png | Bin 0 -> 4680 bytes .../badge/golden/status_label_default.png | Bin 0 -> 4614 bytes .../src/components/badge/golden/tag_left.png | Bin 0 -> 3813 bytes .../src/components/badge/golden/tag_right.png | Bin 0 -> 3652 bytes .../banner/golden/banner_negative.png | Bin 0 -> 3557 bytes .../banner/golden/banner_positive.png | Bin 0 -> 3567 bytes .../banner/golden/banner_primary.png | Bin 0 -> 3545 bytes .../banner/golden/banner_warning.png | Bin 0 -> 3568 bytes .../button/golden/button_disabled.png | Bin 0 -> 4235 bytes .../button/golden/button_negative.png | Bin 0 -> 3976 bytes .../button/golden/button_outline.png | Bin 0 -> 4180 bytes .../button/golden/button_outline_subtle.png | Bin 0 -> 3564 bytes .../button/golden/button_positive.png | Bin 0 -> 4172 bytes .../button/golden/button_primary.png | Bin 0 -> 3977 bytes .../button/golden/button_secondary.png | Bin 0 -> 4072 bytes .../components/button/golden/button_text.png | Bin 0 -> 3929 bytes .../golden/chat_item_custom_leading.png | Bin 0 -> 2486 bytes .../chat_item_custom_slidable_buttons.png | Bin 0 -> 3035 bytes .../chat_item/golden/chat_item_default.png | Bin 0 -> 3899 bytes .../golden/chat_item_highlighted.png | Bin 0 -> 4009 bytes .../chat_item_pale_and_regular_buttons.png | Bin 0 -> 2972 bytes .../chat_item_pale_slidable_buttons.png | Bin 0 -> 3238 bytes .../golden/chat_item_slidable_actions.png | Bin 0 -> 3424 bytes ...chat_item_small_screen_slidable_button.png | Bin 0 -> 2953 bytes .../checkbox/golden/checkbox_disabled.png | Bin 0 -> 3574 bytes .../checkbox/golden/checkbox_enabled.png | Bin 0 -> 3616 bytes .../checkbox/golden/checkbox_hover.png | Bin 0 -> 4217 bytes .../chips/golden/status_chip_default.png | Bin 0 -> 3409 bytes .../chips/golden/status_chip_long.png | Bin 0 -> 3573 bytes .../chips/golden/status_chip_sharp.png | Bin 0 -> 3409 bytes .../golden/CommsButton_negative.png | Bin 0 -> 6340 bytes .../comms_button/golden/CommsButton_off.png | Bin 0 -> 6486 bytes .../comms_button/golden/CommsButton_on.png | Bin 0 -> 5586 bytes .../golden/CommsButton_positive.png | Bin 0 -> 6412 bytes .../golden/CommsButton_warning.png | Bin 0 -> 6436 bytes .../dialpad/golden/dialpad_disabled.png | Bin 0 -> 9392 bytes .../dialpad/golden/dialpad_enabled.png | Bin 0 -> 9392 bytes .../dialpad/golden/dialpadbutton.png | Bin 0 -> 4380 bytes .../src/components/fab/golden/FAB_default.png | Bin 0 -> 4751 bytes .../components/fab/golden/FAB_disabled.png | Bin 0 -> 4454 bytes .../src/components/fab/golden/FAB_inverse.png | Bin 0 -> 3902 bytes .../src/components/fab/golden/FAB_pressed.png | Bin 0 -> 4848 bytes .../components/fab/golden/FAB_secondary.png | Bin 0 -> 3568 bytes .../golden/in_page_banner_buttons.png | Bin 0 -> 4654 bytes .../golden/in_page_banner_default.png | Bin 0 -> 3959 bytes .../golden/in_page_banner_negative.png | Bin 0 -> 3938 bytes .../golden/in_page_banner_positive.png | Bin 0 -> 3839 bytes .../golden/navigation_bar_action.png | Bin 0 -> 5053 bytes .../golden/navigation_bar_current_index_0.png | Bin 0 -> 4165 bytes .../golden/navigation_bar_current_index_1.png | Bin 0 -> 4171 bytes .../golden/navigation_bar_current_index_2.png | Bin 0 -> 4105 bytes .../golden/navigation_bar_current_index_3.png | Bin 0 -> 4099 bytes .../golden/navigation_bar_default.png | Bin 0 -> 3948 bytes .../golden/navigation_bar_divider_at_0.png | Bin 0 -> 4576 bytes .../golden/navigation_bar_divider_at_1.png | Bin 0 -> 4684 bytes .../golden/navigation_bar_divider_at_2.png | Bin 0 -> 4689 bytes .../golden/navigation_bar_divider_at_3.png | Bin 0 -> 4670 bytes .../golden/navigation_bar_shrink_items.png | Bin 0 -> 3948 bytes .../golden/navigation_bar_split.png | Bin 0 -> 4024 bytes .../password/golden/password_default.png | Bin 0 -> 3637 bytes .../password/golden/password_error.png | Bin 0 -> 3850 bytes .../range_selector_rounded_continuous.png | Bin 0 -> 4777 bytes .../range_selector_rounded_disabled.png | Bin 0 -> 4765 bytes .../golden/range_selector_rounded_stepped.png | Bin 0 -> 4853 bytes .../range_selector_sharp_continuous.png | Bin 0 -> 3760 bytes .../golden/range_selector_sharp_disabled.png | Bin 0 -> 3810 bytes .../golden/range_selector_sharp_stepped.png | Bin 0 -> 3845 bytes .../range_slider_rounded_continuous.png | Bin 0 -> 3856 bytes .../golden/range_slider_rounded_disabled.png | Bin 0 -> 3842 bytes .../golden/range_slider_rounded_stepped.png | Bin 0 -> 3990 bytes .../golden/range_slider_sharp_continuous.png | Bin 0 -> 3343 bytes .../golden/range_slider_sharp_disabled.png | Bin 0 -> 3349 bytes .../golden/range_slider_sharp_stepped.png | Bin 0 -> 3498 bytes .../search_bar/golden/search_bar_default.png | Bin 0 -> 3889 bytes .../search_bar/golden/search_bar_full.png | Bin 0 -> 4929 bytes .../search_bar/golden/search_bar_medium.png | Bin 0 -> 3889 bytes .../search_bar/golden/search_bar_sharp.png | Bin 0 -> 3695 bytes .../search_bar/golden/search_bar_small.png | Bin 0 -> 3833 bytes .../golden/stepper_horizontal_complete.png | Bin 0 -> 4654 bytes .../golden/stepper_horizontal_incomplete.png | Bin 0 -> 4552 bytes .../stepper_horizontal_step_disabled.png | Bin 0 -> 5360 bytes .../golden/stepper_vertical_complete.png | Bin 0 -> 7045 bytes .../golden/stepper_vertical_incomplete.png | Bin 0 -> 6685 bytes .../golden/stepper_vertical_step_disabled.png | Bin 0 -> 6764 bytes .../components/tooltip/golden/arrow_down.png | Bin 0 -> 3649 bytes .../components/tooltip/golden/arrow_left.png | Bin 0 -> 3653 bytes .../components/tooltip/golden/arrow_right.png | Bin 0 -> 3641 bytes .../components/tooltip/golden/arrow_up.png | Bin 0 -> 3668 bytes .../golden/extended_app_bar_shrinks.png | Bin 0 -> 2218 bytes ...tended_app_bar_shrinks_with_no_leading.png | Bin 0 -> 2194 bytes .../golden/top_app_bar_centered.png | Bin 0 -> 3363 bytes .../golden/top_app_bar_centered_actions.png | Bin 0 -> 3507 bytes .../golden/top_app_bar_default.png | Bin 0 -> 3347 bytes .../golden/top_app_bar_default_actions.png | Bin 0 -> 3509 bytes .../golden/top_app_bar_extended.png | Bin 0 -> 2296 bytes .../golden/top_app_bar_extended_actions.png | Bin 0 -> 2413 bytes .../top_app_bar/golden/top_app_bar_search.png | Bin 0 -> 3345 bytes .../golden/top_app_bar_search_active.png | Bin 0 -> 3667 bytes .../golden/top_app_bar_search_centered.png | Bin 0 -> 3362 bytes .../zeta_flutter/test/src}/rounded_test.dart | 2 +- .../test/src/rounded_test.mocks.dart | 431 +++ .../test}/test_utils/test_app.dart | 15 + .../test/test_utils/test_utils.dart | 34 +- .../test}/test_utils/tolerant_comparator.dart | 11 +- .../test_utils/tolerant_comparator.dart | 77 + packages/zeta_flutter_theme/.metadata | 10 + packages/zeta_flutter_theme/CHANGELOG.md | 3 + packages/zeta_flutter_theme/LICENSE | 21 + packages/zeta_flutter_theme/LICENSE-3RD-PARTY | 120 + packages/zeta_flutter_theme/README.md | 52 + .../zeta_flutter_theme/analysis_options.yaml | 1 + .../assets/fonts/IBMPlexSans-Light.otf | Bin .../assets/fonts/IBMPlexSans-Medium.otf | Bin .../assets/fonts/IBMPlexSans-Regular.otf | Bin .../zeta_flutter_theme/example/example.md | 33 + .../lib/src}/breakpoints.dart | 0 .../lib/src}/color_extensions.dart | 3 +- .../lib/src}/color_swatch.dart | 6 +- .../lib/src}/constants.dart | 2 +- .../zeta_flutter_theme/lib/src}/contrast.dart | 0 .../lib/src}/custom_theme.dart | 2 - .../lib}/src/generated/generated.dart | 1 - .../src/generated/tokens/primitives.g.dart | 2 +- .../src/generated/tokens/semantics.g.dart | 14 +- .../zeta_flutter_theme/lib/src}/rounded.dart | 38 +- .../lib/src}/theme_service.dart | 7 +- .../zeta_flutter_theme/lib/src}/tokens.dart | 4 - .../lib/src}/typography.dart | 8 +- .../zeta_flutter_theme/lib/src}/zeta.dart | 8 +- .../lib/src}/zeta_provider.dart | 12 +- .../lib/zeta_flutter_theme.dart | 14 + packages/zeta_flutter_theme/pubspec.yaml | 36 + .../test}/breakpoints_test.dart | 100 +- .../test}/color_extensions_test.dart | 2 +- .../test}/zeta_provider_test.dart | 82 +- .../test}/zeta_provider_test.mocks.dart | 45 +- .../zeta_flutter_theme/test}/zeta_test.dart | 4 +- packages/zeta_flutter_utils/.metadata | 10 + packages/zeta_flutter_utils/CHANGELOG.md | 3 + packages/zeta_flutter_utils/LICENSE | 21 + packages/zeta_flutter_utils/LICENSE-3RD-PARTY | 33 + packages/zeta_flutter_utils/README.md | 52 + .../zeta_flutter_utils/analysis_options.yaml | 1 + .../zeta_flutter_utils/example/example.md | 87 + .../lib/src/platform/debounce.dart | 69 + .../lib/src/platform}/extensions.dart | 5 +- .../lib/src/platform}/nothing.dart | 2 +- .../lib/src}/platform/platform_is.dart | 2 + .../src}/platform/universal_platform_vm.dart | 0 .../src}/platform/universal_platform_web.dart | 0 .../lib/zeta_flutter_utils.dart | 7 + packages/zeta_flutter_utils/pubspec.yaml | 27 + .../scripts/output/test_table.md | 0 .../scripts/test_counter.dart | 5 +- .../scripts/utils/utils.dart | 9 +- .../test}/debounce_test.dart | 14 +- .../test}/extensions_test.dart | 68 +- .../test}/extensions_test.mocks.dart | 529 +++- packages/zeta_icons/.metadata | 10 + packages/zeta_icons/CHANGELOG.md | 3 + packages/zeta_icons/LICENSE | 21 + packages/zeta_icons/README.md | 40 + packages/zeta_icons/analysis_options.yaml | 2 + .../zeta_icons/assets}/zeta-icons-round.ttf | Bin .../zeta_icons/assets}/zeta-icons-sharp.ttf | Bin packages/zeta_icons/example/example.md | 34 + .../zeta_icons/lib/src}/icons.g.dart | 3 +- packages/zeta_icons/lib/zeta_icons.dart | 9 + packages/zeta_icons/pubspec.yaml | 34 + packages/zeta_icons/test/zeta_icons_test.dart | 17 + pubspec.yaml | 73 +- release-please-config.json | 22 +- scripts/cov_move.sh | 6 + coverage.sh => scripts/coverage.sh | 8 +- scripts/lcov_combine.sh | 48 + .../tooltip/tooltip_test.mocks.dart | 305 --- test/src/utils/rounded_test.mocks.dart | 305 --- tmpfile | Bin 0 -> 102 bytes .../lib/src/components/badges.widgetbook.dart | 6 +- widgetbook/lib/src/utils/utils.dart | 2 +- .../Flutter/GeneratedPluginRegistrant.swift | 2 + widgetbook/pubspec.yaml | 6 + 846 files changed, 5371 insertions(+), 1683 deletions(-) rename test/TESTING_README.md => TESTING_README.md (100%) delete mode 100644 dartdoc_options.yaml delete mode 100644 doc/Assets.md delete mode 100644 doc/Components.md delete mode 100644 doc/Theme.md delete mode 100644 doc/Utils.md delete mode 100644 example/example.md delete mode 100644 lib/src/components/components.dart delete mode 100644 lib/src/theme/theme.dart delete mode 100644 lib/src/utils/debounce.dart delete mode 100644 lib/src/utils/utils.dart delete mode 100644 lib/zeta_flutter.dart create mode 100644 melos.yaml create mode 100644 packages/zeta_flutter/.metadata create mode 100644 packages/zeta_flutter/CHANGELOG.md rename LICENSE => packages/zeta_flutter/LICENSE (99%) create mode 100644 packages/zeta_flutter/LICENSE-3RD-PARTY create mode 100644 packages/zeta_flutter/README.md create mode 100644 packages/zeta_flutter/analysis_options.yaml rename {lib => packages/zeta_flutter}/assets/flags/ad.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/ae.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/af.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/ag.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/ai.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/al.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/am.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/an.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/ao.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/aq.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/ar.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/as.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/at.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/au.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/aw.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/ax.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/az.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/ba.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/bb.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/bd.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/be.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/bf.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/bg.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/bh.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/bi.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/bj.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/bl.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/bm.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/bn.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/bo.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/bq.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/br.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/bs.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/bt.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/bv.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/bw.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/by.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/bz.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/ca.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/cc.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/cd.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/cf.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/cg.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/ch.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/ci.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/ck.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/cl.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/cm.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/cn.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/co.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/cr.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/cu.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/cv.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/cw.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/cx.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/cy.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/cz.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/de.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/dj.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/dk.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/dm.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/do.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/dz.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/ec.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/ee.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/eg.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/eh.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/er.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/es.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/et.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/eu.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/fi.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/fj.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/fk.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/fm.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/fo.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/fr.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/ga.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/gb-eng.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/gb-nir.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/gb-sct.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/gb-wls.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/gb.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/gd.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/ge.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/gf.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/gg.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/gh.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/gi.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/gl.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/gm.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/gn.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/gp.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/gq.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/gr.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/gs.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/gt.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/gu.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/gw.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/gy.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/hk.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/hm.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/hn.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/hr.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/ht.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/hu.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/id.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/ie.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/il.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/im.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/in.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/io.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/iq.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/ir.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/is.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/it.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/je.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/jm.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/jo.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/jp.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/ke.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/kg.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/kh.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/ki.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/km.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/kn.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/kp.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/kr.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/kw.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/ky.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/kz.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/la.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/lb.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/lc.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/li.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/lk.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/lr.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/ls.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/lt.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/lu.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/lv.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/ly.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/ma.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/mc.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/md.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/me.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/mf.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/mg.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/mh.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/mk.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/ml.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/mm.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/mn.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/mo.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/mp.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/mq.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/mr.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/ms.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/mt.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/mu.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/mv.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/mw.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/mx.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/my.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/mz.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/na.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/nc.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/ne.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/nf.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/ng.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/ni.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/nl.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/no.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/np.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/nr.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/nu.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/nz.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/om.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/pa.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/pe.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/pf.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/pg.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/ph.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/pk.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/pl.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/pm.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/pn.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/pr.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/ps.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/pt.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/pw.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/py.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/qa.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/re.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/ro.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/rs.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/ru.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/rw.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/sa.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/sb.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/sc.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/sd.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/se.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/sg.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/sh.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/si.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/sj.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/sk.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/sl.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/sm.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/sn.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/so.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/sr.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/ss.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/st.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/sv.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/sx.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/sy.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/sz.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/tc.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/td.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/tf.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/tg.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/th.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/tj.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/tk.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/tl.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/tm.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/tn.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/to.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/tr.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/tt.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/tv.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/tw.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/tz.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/ua.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/ug.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/um.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/us.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/uy.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/uz.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/va.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/vc.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/ve.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/vg.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/vi.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/vn.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/vu.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/wf.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/ws.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/xk.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/ye.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/yt.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/za.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/zm.png (100%) rename {lib => packages/zeta_flutter}/assets/flags/zw.png (100%) rename {lib => packages/zeta_flutter}/assets/logos/zebra-logo-head.svg (100%) create mode 100644 packages/zeta_flutter/example/example.md rename {lib => packages/zeta_flutter/lib}/src/components/accordion/accordion.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/components/avatar_rail/avatar_rail.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/components/avatars/avatar.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/components/badges/indicator.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/components/badges/label.dart (98%) rename {lib => packages/zeta_flutter/lib}/src/components/badges/priority_pill.dart (96%) rename {lib => packages/zeta_flutter/lib}/src/components/badges/status_label.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/components/badges/tag.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/components/bottom sheets/bottom_sheet.dart (98%) rename {lib => packages/zeta_flutter/lib}/src/components/bottom sheets/menu_items.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/components/breadcrumb/breadcrumb.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/components/button_group/button_group.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/components/buttons/button.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/components/buttons/button_style.dart (100%) rename {lib => packages/zeta_flutter/lib}/src/components/buttons/icon_button.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/components/buttons/input_icon_button.dart (100%) rename {lib => packages/zeta_flutter/lib}/src/components/chat_item/chat_item.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/components/chat_item/contact_item.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/components/checkbox/checkbox.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/components/chips/assist_chip.dart (96%) rename {lib => packages/zeta_flutter/lib}/src/components/chips/chip.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/components/chips/filter_chip.dart (97%) rename {lib => packages/zeta_flutter/lib}/src/components/chips/input_chip.dart (96%) rename {lib => packages/zeta_flutter/lib}/src/components/chips/status_chip.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/components/comms_button/comms_button.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/components/date_input/date_input.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/components/dial_pad/dial_pad.dart (97%) rename {lib => packages/zeta_flutter/lib}/src/components/dialog/dialog.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/components/dropdown/dropdown.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/components/dropdown/dropdown_controller.dart (100%) rename {lib => packages/zeta_flutter/lib}/src/components/fabs/fab.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/components/filter_selection/filter_selection.dart (98%) rename {lib => packages/zeta_flutter/lib}/src/components/global_header/global_header.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/components/global_header/header_tab_item.dart (98%) rename {lib => packages/zeta_flutter/lib}/src/components/icon/icon.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/components/in_page_banner/in_page_banner.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/components/list_item/dropdown_list_item.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/components/list_item/list_item.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/components/list_item/list_scope.dart (100%) rename {lib => packages/zeta_flutter/lib}/src/components/list_item/notification_list_item.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/components/navigation bar/navigation_bar.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/components/navigation_rail/navigation_rail.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/components/pagination/pagination.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/components/password/password_input.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/components/phone_input/phone_input.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/components/progress/progress.dart (100%) rename {lib => packages/zeta_flutter/lib}/src/components/progress/progress_bar.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/components/progress/progress_circle.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/components/radio/radio.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/components/range_selector/range_selector.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/components/screen_header_bar/screen_header_bar.dart (98%) rename {lib => packages/zeta_flutter/lib}/src/components/search_bar/search_bar.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/components/segmented_control/segmented_control.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/components/select_input/select_input.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/components/slider/slider.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/components/snack_bar/snack_bar.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/components/stepper/stepper.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/components/stepper_input/stepper_input.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/components/switch/material_switch.dart (100%) rename {lib => packages/zeta_flutter/lib}/src/components/switch/zeta_switch.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/components/system_banner/system_banner.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/components/tabs/tab.dart (98%) rename {lib => packages/zeta_flutter/lib}/src/components/tabs/tab_bar.dart (98%) rename {lib => packages/zeta_flutter/lib}/src/components/text_input/hint_text.dart (100%) rename {lib => packages/zeta_flutter/lib}/src/components/text_input/input_label.dart (100%) rename {lib => packages/zeta_flutter/lib}/src/components/text_input/internal_text_input.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/components/text_input/text_input.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/components/time_input/time_input.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/components/tooltip/tooltip.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/components/top_app_bar/extended_top_app_bar.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/components/top_app_bar/search_top_app_bar.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/components/top_app_bar/top_app_bar.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/interfaces/countries.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/interfaces/form_field.dart (99%) rename {lib => packages/zeta_flutter/lib}/src/interfaces/interfaces.dart (100%) rename {lib => packages/zeta_flutter/lib}/src/interfaces/phone_number.dart (90%) rename {lib => packages/zeta_flutter/lib}/src/utils/enums.dart (100%) create mode 100644 packages/zeta_flutter/lib/src/utils/utils.dart create mode 100644 packages/zeta_flutter/lib/src/utils/widget.dart create mode 100644 packages/zeta_flutter/lib/zeta_components.dart create mode 100644 packages/zeta_flutter/lib/zeta_flutter.dart create mode 100644 packages/zeta_flutter/lib/zeta_icons.dart create mode 100644 packages/zeta_flutter/lib/zeta_theme.dart create mode 100644 packages/zeta_flutter/lib/zeta_utils.dart create mode 100644 packages/zeta_flutter/pubspec.yaml rename {test/src => packages/zeta_flutter/test}/components/accordion/accordion_test.dart (98%) rename {test/src => packages/zeta_flutter/test}/components/avatar/assets/maxresdefault.jpg (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/avatar_rail_test.dart (98%) rename {test/src => packages/zeta_flutter/test}/components/avatar/avatar_test.dart (98%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_default_l.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_default_m.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_default_s.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_default_xl.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_default_xs.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_default_xxl.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_default_xxs.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_default_xxxl.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_default_xxxs.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_from_name_l.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_from_name_m.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_from_name_s.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_from_name_xl.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_from_name_xs.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_from_name_xxl.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_from_name_xxs.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_from_name_xxxl.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_from_name_xxxs.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_image_l.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_image_m.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_image_s.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_image_xl.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_image_xs.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_image_xxl.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_image_xxs.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_image_xxxl.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_image_xxxs.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_initials_l.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_initials_m.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_initials_s.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_initials_xl.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_initials_xs.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_initials_xxl.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_initials_xxs.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_initials_xxxl.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_initials_xxxs.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_lower_badge_l.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_lower_badge_m.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_lower_badge_s.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_lower_badge_xl.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_lower_badge_xs.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_lower_badge_xxl.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_lower_badge_xxs.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_lower_badge_xxxl.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_lower_badge_xxxs.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_upper_badge_l.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_upper_badge_m.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_upper_badge_s.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_upper_badge_xl.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_upper_badge_xs.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_upper_badge_xxl.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_upper_badge_xxs.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_upper_badge_xxxl.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/avatar_upper_badge_xxxs.png (100%) rename {test/src => packages/zeta_flutter/test}/components/avatar/golden/zeta_avatar_rail_default.png (100%) rename {test/src => packages/zeta_flutter/test}/components/badge/golden/badge.png (100%) rename {test/src => packages/zeta_flutter/test}/components/badge/golden/badge_dark.png (100%) rename {test/src => packages/zeta_flutter/test}/components/badge/golden/badge_default.png (100%) rename {test/src => packages/zeta_flutter/test}/components/badge/golden/badge_negative.png (100%) rename {test/src => packages/zeta_flutter/test}/components/badge/golden/badge_neutral.png (100%) rename {test/src => packages/zeta_flutter/test}/components/badge/golden/badge_positive.png (100%) rename {test/src => packages/zeta_flutter/test}/components/badge/golden/badge_warning.png (100%) rename {test/src => packages/zeta_flutter/test}/components/badge/golden/indicator_default.png (100%) rename {test/src => packages/zeta_flutter/test}/components/badge/golden/indicator_icon_default.png (100%) rename {test/src => packages/zeta_flutter/test}/components/badge/golden/indicator_icon_values.png (100%) rename {test/src => packages/zeta_flutter/test}/components/badge/golden/indicator_notification_default.png (100%) rename {test/src => packages/zeta_flutter/test}/components/badge/golden/indicator_notification_values.png (100%) rename {test/src => packages/zeta_flutter/test}/components/badge/golden/indicator_notification_with_value.png (100%) rename {test/src => packages/zeta_flutter/test}/components/badge/golden/label_dark.png (100%) rename {test/src => packages/zeta_flutter/test}/components/badge/golden/label_default.png (100%) rename {test/src => packages/zeta_flutter/test}/components/badge/golden/label_negative.png (100%) rename {test/src => packages/zeta_flutter/test}/components/badge/golden/label_neutral.png (100%) rename {test/src => packages/zeta_flutter/test}/components/badge/golden/label_positive.png (100%) rename {test/src => packages/zeta_flutter/test}/components/badge/golden/label_sharp.png (100%) rename {test/src => packages/zeta_flutter/test}/components/badge/golden/label_warning.png (100%) rename {test/src => packages/zeta_flutter/test}/components/badge/golden/priority_pill_default.png (100%) rename {test/src => packages/zeta_flutter/test}/components/badge/golden/priority_pill_high.png (100%) rename {test/src => packages/zeta_flutter/test}/components/badge/golden/priority_pill_low.png (100%) rename {test/src => packages/zeta_flutter/test}/components/badge/golden/priority_pill_medium.png (100%) rename {test/src => packages/zeta_flutter/test}/components/badge/golden/status_label_custom.png (100%) rename {test/src => packages/zeta_flutter/test}/components/badge/golden/status_label_default.png (100%) rename {test/src => packages/zeta_flutter/test}/components/badge/golden/tag_left.png (100%) rename {test/src => packages/zeta_flutter/test}/components/badge/golden/tag_right.png (100%) rename {test/src => packages/zeta_flutter/test}/components/badge/indicator_test.dart (98%) rename {test/src => packages/zeta_flutter/test}/components/badge/label_test.dart (96%) rename {test/src => packages/zeta_flutter/test}/components/badge/priority_pill_test.dart (97%) rename {test/src => packages/zeta_flutter/test}/components/badge/status_label_test.dart (93%) rename {test/src => packages/zeta_flutter/test}/components/badge/tag_test.dart (91%) rename {test/src => packages/zeta_flutter/test}/components/banner/banner_test.dart (98%) rename {test/src => packages/zeta_flutter/test}/components/banner/golden/banner_negative.png (100%) rename {test/src => packages/zeta_flutter/test}/components/banner/golden/banner_positive.png (100%) rename {test/src => packages/zeta_flutter/test}/components/banner/golden/banner_primary.png (100%) rename {test/src => packages/zeta_flutter/test}/components/banner/golden/banner_warning.png (100%) rename {test/src => packages/zeta_flutter/test}/components/breadcrumb/breadcrumb_test.dart (97%) rename {test/src => packages/zeta_flutter/test}/components/button/button_test.dart (98%) rename {test/src => packages/zeta_flutter/test}/components/button/golden/button_disabled.png (100%) rename {test/src => packages/zeta_flutter/test}/components/button/golden/button_negative.png (100%) rename {test/src => packages/zeta_flutter/test}/components/button/golden/button_outline.png (100%) rename {test/src => packages/zeta_flutter/test}/components/button/golden/button_outline_subtle.png (100%) rename {test/src => packages/zeta_flutter/test}/components/button/golden/button_positive.png (100%) rename {test/src => packages/zeta_flutter/test}/components/button/golden/button_primary.png (100%) rename {test/src => packages/zeta_flutter/test}/components/button/golden/button_secondary.png (100%) rename {test/src => packages/zeta_flutter/test}/components/button/golden/button_text.png (100%) rename {test/src => packages/zeta_flutter/test}/components/chat_item/chat_item_test.dart (99%) rename {test/src => packages/zeta_flutter/test}/components/chat_item/golden/chat_item_custom_leading.png (100%) rename {test/src => packages/zeta_flutter/test}/components/chat_item/golden/chat_item_custom_slidable_buttons.png (100%) rename {test/src => packages/zeta_flutter/test}/components/chat_item/golden/chat_item_default.png (100%) rename {test/src => packages/zeta_flutter/test}/components/chat_item/golden/chat_item_highlighted.png (100%) rename {test/src => packages/zeta_flutter/test}/components/chat_item/golden/chat_item_pale_and_regular_buttons.png (100%) rename {test/src => packages/zeta_flutter/test}/components/chat_item/golden/chat_item_pale_slidable_buttons.png (100%) rename {test/src => packages/zeta_flutter/test}/components/chat_item/golden/chat_item_slidable_actions.png (100%) rename {test/src => packages/zeta_flutter/test}/components/chat_item/golden/chat_item_small_screen_slidable_button.png (100%) rename {test/src => packages/zeta_flutter/test}/components/checkbox/checkbox_test.dart (97%) rename {test/src => packages/zeta_flutter/test}/components/checkbox/golden/checkbox_disabled.png (100%) rename {test/src => packages/zeta_flutter/test}/components/checkbox/golden/checkbox_enabled.png (100%) rename {test/src => packages/zeta_flutter/test}/components/checkbox/golden/checkbox_hover.png (100%) rename {test/src => packages/zeta_flutter/test}/components/chips/chip_test.dart (96%) rename {test/src => packages/zeta_flutter/test}/components/chips/golden/status_chip_default.png (100%) rename {test/src => packages/zeta_flutter/test}/components/chips/golden/status_chip_long.png (100%) rename {test/src => packages/zeta_flutter/test}/components/chips/golden/status_chip_sharp.png (100%) rename {test/src => packages/zeta_flutter/test}/components/chips/status_chip_test.dart (97%) rename {test/src => packages/zeta_flutter/test}/components/comms_button/comms_button_test.dart (98%) rename {test/src => packages/zeta_flutter/test}/components/comms_button/golden/CommsButton_negative.png (100%) rename {test/src => packages/zeta_flutter/test}/components/comms_button/golden/CommsButton_off.png (100%) rename {test/src => packages/zeta_flutter/test}/components/comms_button/golden/CommsButton_on.png (100%) rename {test/src => packages/zeta_flutter/test}/components/comms_button/golden/CommsButton_positive.png (100%) rename {test/src => packages/zeta_flutter/test}/components/comms_button/golden/CommsButton_warning.png (100%) rename {test/src => packages/zeta_flutter/test}/components/dialpad/dialpad_test.dart (98%) rename {test/src => packages/zeta_flutter/test}/components/dialpad/golden/dialpad_disabled.png (100%) rename {test/src => packages/zeta_flutter/test}/components/dialpad/golden/dialpad_enabled.png (100%) rename {test/src => packages/zeta_flutter/test}/components/dialpad/golden/dialpadbutton.png (100%) rename {test/src => packages/zeta_flutter/test}/components/fab/fab_test.dart (98%) rename {test/src => packages/zeta_flutter/test}/components/fab/golden/FAB_default.png (100%) rename {test/src => packages/zeta_flutter/test}/components/fab/golden/FAB_disabled.png (100%) rename {test/src => packages/zeta_flutter/test}/components/fab/golden/FAB_inverse.png (100%) rename {test/src => packages/zeta_flutter/test}/components/fab/golden/FAB_pressed.png (100%) rename {test/src => packages/zeta_flutter/test}/components/fab/golden/FAB_secondary.png (100%) rename {test/src => packages/zeta_flutter/test}/components/icon/icon_test.dart (97%) rename {test/src => packages/zeta_flutter/test}/components/in_page_banner/golden/in_page_banner_buttons.png (100%) rename {test/src => packages/zeta_flutter/test}/components/in_page_banner/golden/in_page_banner_default.png (100%) rename {test/src => packages/zeta_flutter/test}/components/in_page_banner/golden/in_page_banner_negative.png (100%) rename {test/src => packages/zeta_flutter/test}/components/in_page_banner/golden/in_page_banner_positive.png (100%) rename {test/src => packages/zeta_flutter/test}/components/in_page_banner/in_page_banner_test.dart (97%) rename {test/src => packages/zeta_flutter/test}/components/navigation_bar/golden/navigation_bar_action.png (100%) rename {test/src => packages/zeta_flutter/test}/components/navigation_bar/golden/navigation_bar_current_index_0.png (100%) rename {test/src => packages/zeta_flutter/test}/components/navigation_bar/golden/navigation_bar_current_index_1.png (100%) rename {test/src => packages/zeta_flutter/test}/components/navigation_bar/golden/navigation_bar_current_index_2.png (100%) rename {test/src => packages/zeta_flutter/test}/components/navigation_bar/golden/navigation_bar_current_index_3.png (100%) rename {test/src => packages/zeta_flutter/test}/components/navigation_bar/golden/navigation_bar_default.png (100%) rename {test/src => packages/zeta_flutter/test}/components/navigation_bar/golden/navigation_bar_divider.png (100%) rename {test/src => packages/zeta_flutter/test}/components/navigation_bar/golden/navigation_bar_divider_at_0.png (100%) rename {test/src => packages/zeta_flutter/test}/components/navigation_bar/golden/navigation_bar_divider_at_1.png (100%) rename {test/src => packages/zeta_flutter/test}/components/navigation_bar/golden/navigation_bar_divider_at_2.png (100%) rename {test/src => packages/zeta_flutter/test}/components/navigation_bar/golden/navigation_bar_divider_at_3.png (100%) rename {test/src => packages/zeta_flutter/test}/components/navigation_bar/golden/navigation_bar_shrink_items.png (100%) rename {test/src => packages/zeta_flutter/test}/components/navigation_bar/golden/navigation_bar_split.png (100%) rename {test/src => packages/zeta_flutter/test}/components/navigation_bar/navigation_bar_test.dart (99%) rename {test/src => packages/zeta_flutter/test}/components/password/golden/password_default.png (100%) rename {test/src => packages/zeta_flutter/test}/components/password/golden/password_error.png (100%) rename {test/src => packages/zeta_flutter/test}/components/password/password_input_test.dart (96%) rename {test/src => packages/zeta_flutter/test}/components/range_selector/golden/range_selector_rounded_continuous.png (100%) rename {test/src => packages/zeta_flutter/test}/components/range_selector/golden/range_selector_rounded_disabled.png (100%) rename {test/src => packages/zeta_flutter/test}/components/range_selector/golden/range_selector_rounded_stepped.png (100%) rename {test/src => packages/zeta_flutter/test}/components/range_selector/golden/range_selector_sharp_continuous.png (100%) rename {test/src => packages/zeta_flutter/test}/components/range_selector/golden/range_selector_sharp_disabled.png (100%) rename {test/src => packages/zeta_flutter/test}/components/range_selector/golden/range_selector_sharp_stepped.png (100%) rename {test/src => packages/zeta_flutter/test}/components/range_selector/golden/range_slider_rounded_continuous.png (100%) rename {test/src => packages/zeta_flutter/test}/components/range_selector/golden/range_slider_rounded_disabled.png (100%) rename {test/src => packages/zeta_flutter/test}/components/range_selector/golden/range_slider_rounded_stepped.png (100%) rename {test/src => packages/zeta_flutter/test}/components/range_selector/golden/range_slider_sharp_continuous.png (100%) rename {test/src => packages/zeta_flutter/test}/components/range_selector/golden/range_slider_sharp_disabled.png (100%) rename {test/src => packages/zeta_flutter/test}/components/range_selector/golden/range_slider_sharp_stepped.png (100%) rename {test/src => packages/zeta_flutter/test}/components/range_selector/range_selector_test.dart (98%) rename {test/src => packages/zeta_flutter/test}/components/search_bar/golden/search_bar_default.png (100%) rename {test/src => packages/zeta_flutter/test}/components/search_bar/golden/search_bar_full.png (100%) rename {test/src => packages/zeta_flutter/test}/components/search_bar/golden/search_bar_large.png (100%) rename {test/src => packages/zeta_flutter/test}/components/search_bar/golden/search_bar_medium.png (100%) rename {test/src => packages/zeta_flutter/test}/components/search_bar/golden/search_bar_sharp.png (100%) rename {test/src => packages/zeta_flutter/test}/components/search_bar/golden/search_bar_small.png (100%) rename {test/src => packages/zeta_flutter/test}/components/search_bar/search_bar_test.dart (97%) rename {test/src => packages/zeta_flutter/test}/components/search_bar/search_bar_test.mocks.dart (83%) rename {test/src => packages/zeta_flutter/test}/components/slider/slider_test.dart (92%) rename {test/src => packages/zeta_flutter/test}/components/stepper/golden/stepper_horizontal_complete.png (100%) rename {test/src => packages/zeta_flutter/test}/components/stepper/golden/stepper_horizontal_incomplete.png (100%) rename {test/src => packages/zeta_flutter/test}/components/stepper/golden/stepper_horizontal_step_disabled.png (100%) rename {test/src => packages/zeta_flutter/test}/components/stepper/golden/stepper_vertical_complete.png (100%) rename {test/src => packages/zeta_flutter/test}/components/stepper/golden/stepper_vertical_incomplete.png (100%) rename {test/src => packages/zeta_flutter/test}/components/stepper/golden/stepper_vertical_step_disabled.png (100%) rename {test/src => packages/zeta_flutter/test}/components/stepper/stepper_test.dart (99%) rename {test/src => packages/zeta_flutter/test}/components/stepper_input/stepper_input_test.dart (94%) rename {test/src => packages/zeta_flutter/test}/components/tooltip/golden/arrow_down.png (100%) rename {test/src => packages/zeta_flutter/test}/components/tooltip/golden/arrow_left.png (100%) rename {test/src => packages/zeta_flutter/test}/components/tooltip/golden/arrow_right.png (100%) rename {test/src => packages/zeta_flutter/test}/components/tooltip/golden/arrow_up.png (100%) rename {test/src => packages/zeta_flutter/test}/components/tooltip/tooltip_test.dart (97%) create mode 100644 packages/zeta_flutter/test/components/tooltip/tooltip_test.mocks.dart rename {test/src => packages/zeta_flutter/test}/components/top_app_bar/extended_top_app_bar_test.dart (97%) rename {test/src => packages/zeta_flutter/test}/components/top_app_bar/golden/extended_app_bar_shrinks.png (100%) rename {test/src => packages/zeta_flutter/test}/components/top_app_bar/golden/extended_app_bar_shrinks_with_no_leading.png (100%) rename {test/src => packages/zeta_flutter/test}/components/top_app_bar/golden/top_app_bar_centered.png (100%) rename {test/src => packages/zeta_flutter/test}/components/top_app_bar/golden/top_app_bar_centered_actions.png (100%) rename {test/src => packages/zeta_flutter/test}/components/top_app_bar/golden/top_app_bar_default.png (100%) rename {test/src => packages/zeta_flutter/test}/components/top_app_bar/golden/top_app_bar_default_actions.png (100%) rename {test/src => packages/zeta_flutter/test}/components/top_app_bar/golden/top_app_bar_extended.png (100%) rename {test/src => packages/zeta_flutter/test}/components/top_app_bar/golden/top_app_bar_extended_actions.png (100%) rename {test/src => packages/zeta_flutter/test}/components/top_app_bar/golden/top_app_bar_search.png (100%) rename {test/src => packages/zeta_flutter/test}/components/top_app_bar/golden/top_app_bar_search_active.png (100%) rename {test/src => packages/zeta_flutter/test}/components/top_app_bar/golden/top_app_bar_search_centered.png (100%) rename {test/src => packages/zeta_flutter/test}/components/top_app_bar/top_app_bar_test.dart (99%) create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_default_l.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_default_m.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_default_s.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_default_xl.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_default_xs.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_default_xxl.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_default_xxs.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_default_xxxl.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_default_xxxs.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_from_name_l.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_from_name_m.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_from_name_s.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_from_name_xl.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_from_name_xs.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_from_name_xxl.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_from_name_xxs.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_from_name_xxxl.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_from_name_xxxs.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_image_l.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_image_m.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_image_s.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_image_xl.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_image_xs.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_image_xxl.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_image_xxs.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_image_xxxl.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_image_xxxs.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_initials_l.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_initials_m.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_initials_s.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_initials_xl.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_initials_xs.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_initials_xxl.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_initials_xxs.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_initials_xxxl.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_initials_xxxs.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_lower_badge_l.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_lower_badge_m.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_lower_badge_s.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_lower_badge_xl.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_lower_badge_xs.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_lower_badge_xxl.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_lower_badge_xxs.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_lower_badge_xxxl.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_lower_badge_xxxs.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_upper_badge_l.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_upper_badge_m.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_upper_badge_s.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_upper_badge_xl.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_upper_badge_xs.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_upper_badge_xxl.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_upper_badge_xxs.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_upper_badge_xxxl.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/avatar_upper_badge_xxxs.png create mode 100644 packages/zeta_flutter/test/src/components/avatar/golden/zeta_avatar_rail_default.png create mode 100644 packages/zeta_flutter/test/src/components/badge/golden/indicator_default.png create mode 100644 packages/zeta_flutter/test/src/components/badge/golden/indicator_icon_default.png create mode 100644 packages/zeta_flutter/test/src/components/badge/golden/indicator_icon_values.png create mode 100644 packages/zeta_flutter/test/src/components/badge/golden/indicator_notification_default.png create mode 100644 packages/zeta_flutter/test/src/components/badge/golden/indicator_notification_values.png create mode 100644 packages/zeta_flutter/test/src/components/badge/golden/indicator_notification_with_value.png create mode 100644 packages/zeta_flutter/test/src/components/badge/golden/label_dark.png create mode 100644 packages/zeta_flutter/test/src/components/badge/golden/label_default.png create mode 100644 packages/zeta_flutter/test/src/components/badge/golden/label_negative.png create mode 100644 packages/zeta_flutter/test/src/components/badge/golden/label_neutral.png create mode 100644 packages/zeta_flutter/test/src/components/badge/golden/label_positive.png create mode 100644 packages/zeta_flutter/test/src/components/badge/golden/label_sharp.png create mode 100644 packages/zeta_flutter/test/src/components/badge/golden/label_warning.png create mode 100644 packages/zeta_flutter/test/src/components/badge/golden/priority_pill_default.png create mode 100644 packages/zeta_flutter/test/src/components/badge/golden/priority_pill_high.png create mode 100644 packages/zeta_flutter/test/src/components/badge/golden/priority_pill_low.png create mode 100644 packages/zeta_flutter/test/src/components/badge/golden/priority_pill_medium.png create mode 100644 packages/zeta_flutter/test/src/components/badge/golden/status_label_custom.png create mode 100644 packages/zeta_flutter/test/src/components/badge/golden/status_label_default.png create mode 100644 packages/zeta_flutter/test/src/components/badge/golden/tag_left.png create mode 100644 packages/zeta_flutter/test/src/components/badge/golden/tag_right.png create mode 100644 packages/zeta_flutter/test/src/components/banner/golden/banner_negative.png create mode 100644 packages/zeta_flutter/test/src/components/banner/golden/banner_positive.png create mode 100644 packages/zeta_flutter/test/src/components/banner/golden/banner_primary.png create mode 100644 packages/zeta_flutter/test/src/components/banner/golden/banner_warning.png create mode 100644 packages/zeta_flutter/test/src/components/button/golden/button_disabled.png create mode 100644 packages/zeta_flutter/test/src/components/button/golden/button_negative.png create mode 100644 packages/zeta_flutter/test/src/components/button/golden/button_outline.png create mode 100644 packages/zeta_flutter/test/src/components/button/golden/button_outline_subtle.png create mode 100644 packages/zeta_flutter/test/src/components/button/golden/button_positive.png create mode 100644 packages/zeta_flutter/test/src/components/button/golden/button_primary.png create mode 100644 packages/zeta_flutter/test/src/components/button/golden/button_secondary.png create mode 100644 packages/zeta_flutter/test/src/components/button/golden/button_text.png create mode 100644 packages/zeta_flutter/test/src/components/chat_item/golden/chat_item_custom_leading.png create mode 100644 packages/zeta_flutter/test/src/components/chat_item/golden/chat_item_custom_slidable_buttons.png create mode 100644 packages/zeta_flutter/test/src/components/chat_item/golden/chat_item_default.png create mode 100644 packages/zeta_flutter/test/src/components/chat_item/golden/chat_item_highlighted.png create mode 100644 packages/zeta_flutter/test/src/components/chat_item/golden/chat_item_pale_and_regular_buttons.png create mode 100644 packages/zeta_flutter/test/src/components/chat_item/golden/chat_item_pale_slidable_buttons.png create mode 100644 packages/zeta_flutter/test/src/components/chat_item/golden/chat_item_slidable_actions.png create mode 100644 packages/zeta_flutter/test/src/components/chat_item/golden/chat_item_small_screen_slidable_button.png create mode 100644 packages/zeta_flutter/test/src/components/checkbox/golden/checkbox_disabled.png create mode 100644 packages/zeta_flutter/test/src/components/checkbox/golden/checkbox_enabled.png create mode 100644 packages/zeta_flutter/test/src/components/checkbox/golden/checkbox_hover.png create mode 100644 packages/zeta_flutter/test/src/components/chips/golden/status_chip_default.png create mode 100644 packages/zeta_flutter/test/src/components/chips/golden/status_chip_long.png create mode 100644 packages/zeta_flutter/test/src/components/chips/golden/status_chip_sharp.png create mode 100644 packages/zeta_flutter/test/src/components/comms_button/golden/CommsButton_negative.png create mode 100644 packages/zeta_flutter/test/src/components/comms_button/golden/CommsButton_off.png create mode 100644 packages/zeta_flutter/test/src/components/comms_button/golden/CommsButton_on.png create mode 100644 packages/zeta_flutter/test/src/components/comms_button/golden/CommsButton_positive.png create mode 100644 packages/zeta_flutter/test/src/components/comms_button/golden/CommsButton_warning.png create mode 100644 packages/zeta_flutter/test/src/components/dialpad/golden/dialpad_disabled.png create mode 100644 packages/zeta_flutter/test/src/components/dialpad/golden/dialpad_enabled.png create mode 100644 packages/zeta_flutter/test/src/components/dialpad/golden/dialpadbutton.png create mode 100644 packages/zeta_flutter/test/src/components/fab/golden/FAB_default.png create mode 100644 packages/zeta_flutter/test/src/components/fab/golden/FAB_disabled.png create mode 100644 packages/zeta_flutter/test/src/components/fab/golden/FAB_inverse.png create mode 100644 packages/zeta_flutter/test/src/components/fab/golden/FAB_pressed.png create mode 100644 packages/zeta_flutter/test/src/components/fab/golden/FAB_secondary.png create mode 100644 packages/zeta_flutter/test/src/components/in_page_banner/golden/in_page_banner_buttons.png create mode 100644 packages/zeta_flutter/test/src/components/in_page_banner/golden/in_page_banner_default.png create mode 100644 packages/zeta_flutter/test/src/components/in_page_banner/golden/in_page_banner_negative.png create mode 100644 packages/zeta_flutter/test/src/components/in_page_banner/golden/in_page_banner_positive.png create mode 100644 packages/zeta_flutter/test/src/components/navigation_bar/golden/navigation_bar_action.png create mode 100644 packages/zeta_flutter/test/src/components/navigation_bar/golden/navigation_bar_current_index_0.png create mode 100644 packages/zeta_flutter/test/src/components/navigation_bar/golden/navigation_bar_current_index_1.png create mode 100644 packages/zeta_flutter/test/src/components/navigation_bar/golden/navigation_bar_current_index_2.png create mode 100644 packages/zeta_flutter/test/src/components/navigation_bar/golden/navigation_bar_current_index_3.png create mode 100644 packages/zeta_flutter/test/src/components/navigation_bar/golden/navigation_bar_default.png create mode 100644 packages/zeta_flutter/test/src/components/navigation_bar/golden/navigation_bar_divider_at_0.png create mode 100644 packages/zeta_flutter/test/src/components/navigation_bar/golden/navigation_bar_divider_at_1.png create mode 100644 packages/zeta_flutter/test/src/components/navigation_bar/golden/navigation_bar_divider_at_2.png create mode 100644 packages/zeta_flutter/test/src/components/navigation_bar/golden/navigation_bar_divider_at_3.png create mode 100644 packages/zeta_flutter/test/src/components/navigation_bar/golden/navigation_bar_shrink_items.png create mode 100644 packages/zeta_flutter/test/src/components/navigation_bar/golden/navigation_bar_split.png create mode 100644 packages/zeta_flutter/test/src/components/password/golden/password_default.png create mode 100644 packages/zeta_flutter/test/src/components/password/golden/password_error.png create mode 100644 packages/zeta_flutter/test/src/components/range_selector/golden/range_selector_rounded_continuous.png create mode 100644 packages/zeta_flutter/test/src/components/range_selector/golden/range_selector_rounded_disabled.png create mode 100644 packages/zeta_flutter/test/src/components/range_selector/golden/range_selector_rounded_stepped.png create mode 100644 packages/zeta_flutter/test/src/components/range_selector/golden/range_selector_sharp_continuous.png create mode 100644 packages/zeta_flutter/test/src/components/range_selector/golden/range_selector_sharp_disabled.png create mode 100644 packages/zeta_flutter/test/src/components/range_selector/golden/range_selector_sharp_stepped.png create mode 100644 packages/zeta_flutter/test/src/components/range_selector/golden/range_slider_rounded_continuous.png create mode 100644 packages/zeta_flutter/test/src/components/range_selector/golden/range_slider_rounded_disabled.png create mode 100644 packages/zeta_flutter/test/src/components/range_selector/golden/range_slider_rounded_stepped.png create mode 100644 packages/zeta_flutter/test/src/components/range_selector/golden/range_slider_sharp_continuous.png create mode 100644 packages/zeta_flutter/test/src/components/range_selector/golden/range_slider_sharp_disabled.png create mode 100644 packages/zeta_flutter/test/src/components/range_selector/golden/range_slider_sharp_stepped.png create mode 100644 packages/zeta_flutter/test/src/components/search_bar/golden/search_bar_default.png create mode 100644 packages/zeta_flutter/test/src/components/search_bar/golden/search_bar_full.png create mode 100644 packages/zeta_flutter/test/src/components/search_bar/golden/search_bar_medium.png create mode 100644 packages/zeta_flutter/test/src/components/search_bar/golden/search_bar_sharp.png create mode 100644 packages/zeta_flutter/test/src/components/search_bar/golden/search_bar_small.png create mode 100644 packages/zeta_flutter/test/src/components/stepper/golden/stepper_horizontal_complete.png create mode 100644 packages/zeta_flutter/test/src/components/stepper/golden/stepper_horizontal_incomplete.png create mode 100644 packages/zeta_flutter/test/src/components/stepper/golden/stepper_horizontal_step_disabled.png create mode 100644 packages/zeta_flutter/test/src/components/stepper/golden/stepper_vertical_complete.png create mode 100644 packages/zeta_flutter/test/src/components/stepper/golden/stepper_vertical_incomplete.png create mode 100644 packages/zeta_flutter/test/src/components/stepper/golden/stepper_vertical_step_disabled.png create mode 100644 packages/zeta_flutter/test/src/components/tooltip/golden/arrow_down.png create mode 100644 packages/zeta_flutter/test/src/components/tooltip/golden/arrow_left.png create mode 100644 packages/zeta_flutter/test/src/components/tooltip/golden/arrow_right.png create mode 100644 packages/zeta_flutter/test/src/components/tooltip/golden/arrow_up.png create mode 100644 packages/zeta_flutter/test/src/components/top_app_bar/golden/extended_app_bar_shrinks.png create mode 100644 packages/zeta_flutter/test/src/components/top_app_bar/golden/extended_app_bar_shrinks_with_no_leading.png create mode 100644 packages/zeta_flutter/test/src/components/top_app_bar/golden/top_app_bar_centered.png create mode 100644 packages/zeta_flutter/test/src/components/top_app_bar/golden/top_app_bar_centered_actions.png create mode 100644 packages/zeta_flutter/test/src/components/top_app_bar/golden/top_app_bar_default.png create mode 100644 packages/zeta_flutter/test/src/components/top_app_bar/golden/top_app_bar_default_actions.png create mode 100644 packages/zeta_flutter/test/src/components/top_app_bar/golden/top_app_bar_extended.png create mode 100644 packages/zeta_flutter/test/src/components/top_app_bar/golden/top_app_bar_extended_actions.png create mode 100644 packages/zeta_flutter/test/src/components/top_app_bar/golden/top_app_bar_search.png create mode 100644 packages/zeta_flutter/test/src/components/top_app_bar/golden/top_app_bar_search_active.png create mode 100644 packages/zeta_flutter/test/src/components/top_app_bar/golden/top_app_bar_search_centered.png rename {test/src/utils => packages/zeta_flutter/test/src}/rounded_test.dart (99%) create mode 100644 packages/zeta_flutter/test/src/rounded_test.mocks.dart rename {test => packages/zeta_flutter/test}/test_utils/test_app.dart (83%) rename test/test_utils/utils.dart => packages/zeta_flutter/test/test_utils/test_utils.dart (79%) rename {test => packages/zeta_flutter/test}/test_utils/tolerant_comparator.dart (82%) create mode 100644 packages/zeta_flutter/test_utils/tolerant_comparator.dart create mode 100644 packages/zeta_flutter_theme/.metadata create mode 100644 packages/zeta_flutter_theme/CHANGELOG.md create mode 100644 packages/zeta_flutter_theme/LICENSE create mode 100644 packages/zeta_flutter_theme/LICENSE-3RD-PARTY create mode 100644 packages/zeta_flutter_theme/README.md create mode 100644 packages/zeta_flutter_theme/analysis_options.yaml rename {lib => packages/zeta_flutter_theme}/assets/fonts/IBMPlexSans-Light.otf (100%) rename {lib => packages/zeta_flutter_theme}/assets/fonts/IBMPlexSans-Medium.otf (100%) rename {lib => packages/zeta_flutter_theme}/assets/fonts/IBMPlexSans-Regular.otf (100%) create mode 100644 packages/zeta_flutter_theme/example/example.md rename {lib/src/theme => packages/zeta_flutter_theme/lib/src}/breakpoints.dart (100%) rename {lib/src/theme => packages/zeta_flutter_theme/lib/src}/color_extensions.dart (99%) rename {lib/src/theme => packages/zeta_flutter_theme/lib/src}/color_swatch.dart (98%) rename {lib/src/theme => packages/zeta_flutter_theme/lib/src}/constants.dart (87%) rename {lib/src/theme => packages/zeta_flutter_theme/lib/src}/contrast.dart (100%) rename {lib/src/theme => packages/zeta_flutter_theme/lib/src}/custom_theme.dart (98%) rename {lib => packages/zeta_flutter_theme/lib}/src/generated/generated.dart (70%) rename {lib => packages/zeta_flutter_theme/lib}/src/generated/tokens/primitives.g.dart (99%) rename {lib => packages/zeta_flutter_theme/lib}/src/generated/tokens/semantics.g.dart (99%) rename {lib/src/utils => packages/zeta_flutter_theme/lib/src}/rounded.dart (50%) rename {lib/src/theme => packages/zeta_flutter_theme/lib/src}/theme_service.dart (98%) rename {lib/src/theme => packages/zeta_flutter_theme/lib/src}/tokens.dart (93%) rename {lib/src/theme => packages/zeta_flutter_theme/lib/src}/typography.dart (98%) rename {lib/src/utils => packages/zeta_flutter_theme/lib/src}/zeta.dart (97%) rename {lib/src/utils => packages/zeta_flutter_theme/lib/src}/zeta_provider.dart (98%) create mode 100644 packages/zeta_flutter_theme/lib/zeta_flutter_theme.dart create mode 100644 packages/zeta_flutter_theme/pubspec.yaml rename {test/src/theme => packages/zeta_flutter_theme/test}/breakpoints_test.dart (55%) rename {test/src/theme => packages/zeta_flutter_theme/test}/color_extensions_test.dart (98%) rename {test/src/utils => packages/zeta_flutter_theme/test}/zeta_provider_test.dart (88%) rename {test/src/utils => packages/zeta_flutter_theme/test}/zeta_provider_test.mocks.dart (70%) rename {test/src/utils => packages/zeta_flutter_theme/test}/zeta_test.dart (98%) create mode 100644 packages/zeta_flutter_utils/.metadata create mode 100644 packages/zeta_flutter_utils/CHANGELOG.md create mode 100644 packages/zeta_flutter_utils/LICENSE create mode 100644 packages/zeta_flutter_utils/LICENSE-3RD-PARTY create mode 100644 packages/zeta_flutter_utils/README.md create mode 100644 packages/zeta_flutter_utils/analysis_options.yaml create mode 100644 packages/zeta_flutter_utils/example/example.md create mode 100644 packages/zeta_flutter_utils/lib/src/platform/debounce.dart rename {lib/src/utils => packages/zeta_flutter_utils/lib/src/platform}/extensions.dart (95%) rename {lib/src/utils => packages/zeta_flutter_utils/lib/src/platform}/nothing.dart (75%) rename {lib/src/utils => packages/zeta_flutter_utils/lib/src}/platform/platform_is.dart (97%) rename {lib/src/utils => packages/zeta_flutter_utils/lib/src}/platform/universal_platform_vm.dart (100%) rename {lib/src/utils => packages/zeta_flutter_utils/lib/src}/platform/universal_platform_web.dart (100%) create mode 100644 packages/zeta_flutter_utils/lib/zeta_flutter_utils.dart create mode 100644 packages/zeta_flutter_utils/pubspec.yaml rename {test => packages/zeta_flutter_utils}/scripts/output/test_table.md (100%) rename {test => packages/zeta_flutter_utils}/scripts/test_counter.dart (97%) rename {test => packages/zeta_flutter_utils}/scripts/utils/utils.dart (96%) rename {test/src/utils => packages/zeta_flutter_utils/test}/debounce_test.dart (79%) rename {test/src/utils => packages/zeta_flutter_utils/test}/extensions_test.dart (81%) rename {test/src/utils => packages/zeta_flutter_utils/test}/extensions_test.mocks.dart (80%) create mode 100644 packages/zeta_icons/.metadata create mode 100644 packages/zeta_icons/CHANGELOG.md create mode 100644 packages/zeta_icons/LICENSE create mode 100644 packages/zeta_icons/README.md create mode 100644 packages/zeta_icons/analysis_options.yaml rename {lib/src/generated/icons => packages/zeta_icons/assets}/zeta-icons-round.ttf (100%) rename {lib/src/generated/icons => packages/zeta_icons/assets}/zeta-icons-sharp.ttf (100%) create mode 100644 packages/zeta_icons/example/example.md rename {lib/src/generated/icons => packages/zeta_icons/lib/src}/icons.g.dart (99%) create mode 100644 packages/zeta_icons/lib/zeta_icons.dart create mode 100644 packages/zeta_icons/pubspec.yaml create mode 100644 packages/zeta_icons/test/zeta_icons_test.dart create mode 100644 scripts/cov_move.sh rename coverage.sh => scripts/coverage.sh (71%) create mode 100644 scripts/lcov_combine.sh delete mode 100644 test/src/components/tooltip/tooltip_test.mocks.dart delete mode 100644 test/src/utils/rounded_test.mocks.dart create mode 100644 tmpfile diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index 1bf38b48..04bc39ef 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -1,6 +1,7 @@ name: CI - Pull Request on: - pull_request_target: + pull_request: + # pull_request_target: # Pull Request Runs on the same branch will be cancelled concurrency: @@ -25,10 +26,14 @@ jobs: - run: | cd widgetbook flutter pub get - - uses: ZebraDevs/flutter-code-quality@main + - name: Setup LCOV + uses: hrishikesh-kadam/setup-lcov@v1 + - run: dart pub global activate melos + - uses: ZebraDevs/flutter-code-quality@change-test-command with: token: ${{secrets.GITHUB_TOKEN}} coverage-pass-score: "80" + test-command: melos test check-secret: runs-on: ubuntu-latest diff --git a/.gitignore b/.gitignore index 51608908..7f6a732e 100644 --- a/.gitignore +++ b/.gitignore @@ -148,3 +148,4 @@ package-lock.json /coverage /.coverage .fvm/ +pubspec_overrides.yaml diff --git a/.pubignore b/.pubignore index 60fd5c17..d124fe89 100644 --- a/.pubignore +++ b/.pubignore @@ -10,8 +10,8 @@ example/widgetbook appium/ test/ build/ -coverage/ -coverage.sh +.coverage/ +scripts/ example/example.iml example/assets/ example/lib/ diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 0b06fef6..2e1d8786 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,7 @@ { - ".": "0.20.2" + "packages/zeta_flutter": "0.20.1", + "packages/zeta_flutter_theme": "0.20.1", + "packages/zeta_flutter_utils": "0.20.1", + "packages/zeta_icons": "0.20.1", + ".": "0.20.1" } \ No newline at end of file diff --git a/LICENSE-3RD-PARTY b/LICENSE-3RD-PARTY index cee51f99..e72a8996 100644 --- a/LICENSE-3RD-PARTY +++ b/LICENSE-3RD-PARTY @@ -152,15 +152,15 @@ DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. - +--- ## Mike Rydstrom Applies to: -* platform_is.dart -* universal_platform_vm.dart -* universal_platform_web.dart +- platform_is.dart +- universal_platform_vm.dart +- universal_platform_web.dart https://gist.github.com/rydmike/1771fe24c050ebfe792fa309371154d8 @@ -184,4 +184,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file +SOFTWARE. diff --git a/README.md b/README.md index e68c8f0b..d2940f4d 100644 --- a/README.md +++ b/README.md @@ -1,170 +1,33 @@ -# Zeta Flutter +# Zeta Flutter monorepo Zeta is the new, formal, standardized Zebra Design System based off the successes of ZDS (Zebra Design System). -> 🚧 **Note**: This package is in pre-release, and so many aspects are incomplete. - -### Prerequisites - -``` -dart sdk: ">=3.2.0 <4.0.0" -flutter: ">=3.16.0" -``` - -## Installation - -To install `zeta_flutter`, follow the instructions [here](https://pub.dev/packages/zeta_flutter/install). - -## Example - -An example app can be found in this repo under `/example`. This shows all components in an example app, as well as a widgetbook instance. - -## Previewing the components - -To view examples of all the components in the library, you can pull this repo and run either the example app or widgetbook instance. - -You can also view the latest release at [Zeta](https://zeta-ds.web.app/) or the latest commits to main [here](https://zeta-flutter-main.web.app/). - -## Template - -If you are starting a new project using Zeta, we recommend starting with [Zeta Flutter Template](https://github.com/zebradevs/zeta_flutter_template). This template project handles the basic app setup, but these steps can also be followed [below](#Usage). - -## Usage - -Zeta offers flexibility in theming through its `ZetaProvider` widget. Here's a breakdown of its features: - -### Setting the Initial Theme Mode - -Zeta allows you to specify an initial theme mode for your app, which can be one of the following: - -- `ThemeMode.system`: Adheres to the system's theme. -- `ThemeMode.light`: Uses the light theme mode. -- `ThemeMode.dark`: Uses the dark theme mode. - -By default, the theme mode is set to `ThemeMode.system`. - -```dart -initialThemeMode: ThemeMode.system -``` - -### Providing Initial Theme Data - -You can provide the initial theme data for the app which contains all the theming information. If you don't specify one, it will default to a basic instance of `ZetaThemeData`. - -```dart -initialThemeData: ZetaThemeData() -``` - -### Setting the Initial Contrast - -Zeta also lets you define the initial contrast setting for your app. By default, it's set to `ZetaContrast.aa`. - -```dart -initialContrast: ZetaContrast.aa -``` - -### Building Your App with Zeta Theming - -The `builder` function is used to construct the widget tree with the provided theming information. This function is expected to receive a `BuildContext`, `ZetaThemeData`, and `ThemeMode` as arguments, and it should return a `Widget`. - -```dart -builder: (context, themeData, themeMode) { - // Your app's widget tree here -} -``` - -### Constructing the ZetaProvider - -To tie everything together, use the `ZetaProvider` constructor. The `builder` argument is mandatory, while the others are optional but allow you to set initial values: - -```dart - @override - Widget build(BuildContext context) { - return ZetaProvider( - builder: (context, themeData, themeMode) { - final dark = themeData.colorsDark.toScheme(); - final light = themeData.colorsLight.toScheme(); - return MaterialApp.router( - routerConfig: router, - themeMode: themeMode, - theme: ThemeData( - fontFamily: themeData.fontFamily, - scaffoldBackgroundColor: light.surfaceTertiary, - colorScheme: light, - ), - darkTheme: ThemeData( - fontFamily: themeData.fontFamily, - scaffoldBackgroundColor: dark.surfaceTertiary, - colorScheme: dark, - ), - ); - }, - ); - } -``` - -### Customization - -#### Creating custom themes - -Custom themes can be made by creating `ZetaCustomTheme` objects. `ZetaCustomTheme` can be constructed by passing in a primary or secondary color and, optionally, their dark variants: - -```dart -ZetaCustomTheme( - id: 'custom-theme-red', - primary: Colors.red, - primaryDark : // Dark variant here, - secondary: Colors.blue, - secondaryDark: // Dark variant here, -) -``` - -Color arguments can be of type `ZetaColorSwatch`, `MaterialColor`, or `Color`. If only a `Color` is provided, Zeta will generate a `ZetaColorSwatch`. To have control over every shade of a given color, we reccomend providing either a `ZetaColorSwatch` or a `MaterialColor`. - -If a dark variant of a color is not provided, Zeta generate one by inverting the corresponding color swatch. - -#### Adding custom themes - -Once you have defined the custom themes for your app, give them to the ZetaProvider by passing them through the construtor. You can also initialize the custom theme by setting the `initialTheme` argument to the id of the desired theme. - -```dart - ZetaProvider( - initialTheme: 'custom-theme-red' - customThemes: [ - ZetaCustomTheme( - id: 'custom-theme-red', - primary: Colors.red, - secondary: Colors.purple - ), - ZetaCustomTheme( - id: 'custom-theme-purple', - primary: Colors.purple, - secondary: Colors.green - ), - ] - ) -``` - -You can also get and set the custom themes via the `ZetaProvider`: - -`ZetaProvider.of(context).customThemes` -`ZetaProvider.of(context).setCustomThemes(newCustomThemes)` - -#### Changing the custom theme - -To change the custom theme, call the `updateCustomTheme` function on `ZetaProvider` with an id corresponding to a `ZetaCustomTheme` object: - -`ZetaProvider.of(context).updateCustomTheme('custom-theme-purple')` - -If the id provided does not correspond to a given theme, Zeta will fall back to its default theme. - -You can fetch the id of the currently applied custom theme via the `Zeta` object: - -`Zeta.of(context).customThemeId` - -This will return null if no custom theme is in use. - -With these configurations, Zeta makes it easy to achieve consistent theming throughout your Flutter application. +This repo contains the source code for all Zeta Flutter packages. + +## Packages + + + + + + + + + + + + + + + + + + + + + + +
CodeLink
zeta_flutter (components)pub.dev
zeta_flutter_themepub.dev
zeta_flutter_themepub.dev
zeta_flutter_iconspub.dev
## Licensing diff --git a/test/TESTING_README.md b/TESTING_README.md similarity index 100% rename from test/TESTING_README.md rename to TESTING_README.md diff --git a/analysis_options.yaml b/analysis_options.yaml index 22d452be..278d8434 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -1,2 +1 @@ -# include: package:zds_analysis/analysis_options_lib_all_files.yaml -include: package:zds_analysis/analysis_options_lib.yaml +include: package:zds_analysis/analysis_options_lib_all_files.yaml diff --git a/dartdoc_options.yaml b/dartdoc_options.yaml deleted file mode 100644 index 79a2a6c8..00000000 --- a/dartdoc_options.yaml +++ /dev/null @@ -1,18 +0,0 @@ -dartdoc: - categories: - "Components": - markdown: doc/Components.md - name: Components - "Assets": - markdown: doc/Assets.md - name: Assets - "Theme": - markdown: doc/Theme.md - name: Theme - "Utils": - markdown: doc/Utils.md - name: Utils - "Interfaces": - name: Interfaces - categoryOrder: ["Components", "Assets", "Theme", "Utils", "Interfaces"] - showUndocumentedCategories: true diff --git a/doc/Assets.md b/doc/Assets.md deleted file mode 100644 index 0d16e071..00000000 --- a/doc/Assets.md +++ /dev/null @@ -1,5 +0,0 @@ -# Assets - -## Icons - -A full list of icons can be found at [Zeta Icons](https://zeta-icons.web.app). \ No newline at end of file diff --git a/doc/Components.md b/doc/Components.md deleted file mode 100644 index 19fc03b9..00000000 --- a/doc/Components.md +++ /dev/null @@ -1,3 +0,0 @@ -# Zeta Components - -To view the designs for these components, see [Figma](https://www.figma.com/design/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components). \ No newline at end of file diff --git a/doc/Theme.md b/doc/Theme.md deleted file mode 100644 index 3732a213..00000000 --- a/doc/Theme.md +++ /dev/null @@ -1,3 +0,0 @@ -# Theme - -To see details on the theme, see [Figma](https://www.figma.com/design/REjc5TauZb2EXYouaEKTYa/Zeta-Foundations) diff --git a/doc/Utils.md b/doc/Utils.md deleted file mode 100644 index faf2d66c..00000000 --- a/doc/Utils.md +++ /dev/null @@ -1,3 +0,0 @@ -# Utils - -These utils are needed to facilitate Zeta within applications. \ No newline at end of file diff --git a/example/example.md b/example/example.md deleted file mode 100644 index 55e651ae..00000000 --- a/example/example.md +++ /dev/null @@ -1,49 +0,0 @@ -## Template - -To quickly set up a new project to use zeta_flutter, clone [zeta_flutter_template](https://github.com/zebradevs/zeta_flutter_template) to get started. - -## Set up - -To use Zeta components in you app, first the whole app must be wrapped with `ZetaProvider`. The easiest way to do this is with the custom builder `ZetaProvider.custom`. -You can provide initial values for `ThemeData`, `ThemeMode`, `contrast` and `ZetaThemeData`. - -* `initialThemeData` (optional) allows you to extend an existing Flutter themeData to use alongside the `Zeta` theme. -* `initialThemeMode` (optional) sets whether the app starts in light or dark mode, or uses the device default. -* `initialContrast` (optional) sets whether the app starts with standard (WCAG AA) contrast, or if it attempts to use the more accessible contrast (WCAG AAA). -* `initialZetaThemeData` (optional) allows you to override the Zeta theme with a custom theme. -* `initialLightThemeData` and `initialDarkThemeData` (optional) allows you to use existing ThemeData objects withing zeta -* `builder` (required) is used to construct the app with all Zeta themes injected. - - -```dart -return ZetaProvider.base( - initialThemeData: initialThemeData, - initialThemeMode: initialThemeMode, - initialContrast: initialContrast, - initialZetaThemeData: initialZetaThemeData, - initialRounded: initialRounded, - builder: (context, lightTheme, darkTheme, themeMode) { - return MaterialApp.router( - routerConfig: router, - themeMode: themeMode, - theme: lightTheme, - darkTheme: darkTheme, - ); - }, -); -``` - -## Using the components - -Once Zeta is configured, Zeta components can be used as any other componenent, and will inherit theme and other information from `Zeta`. - -```dart -Column( - children:[ - ZetaButton(label: 'Button', onPressed: (){}), - ZetaAvatar(), - ZetaStatusLabel(), - // etc... - ] -) -``` \ No newline at end of file diff --git a/example/lib/main.dart b/example/lib/main.dart index f713dc16..3664a4a4 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -14,8 +14,6 @@ class ZetaExample extends StatelessWidget { @override Widget build(BuildContext context) { return ZetaProvider( - // initialContrast: ZetaContrast.aa, - // initialThemeMode: ThemeMode.system, customThemes: [ ZetaCustomTheme( id: 'teal', diff --git a/example/lib/pages/assets/icons_example.dart b/example/lib/pages/assets/icons_example.dart index a257ee9a..08f2e82c 100644 --- a/example/lib/pages/assets/icons_example.dart +++ b/example/lib/pages/assets/icons_example.dart @@ -34,7 +34,7 @@ class _IconsExampleState extends State { runSpacing: Zeta.of(context).spacing.xl_4, children: icons.entries.map( (e) { - final nameArr = (e.key.split('_')).join(' ').capitalize(); + final nameArr = (e.key.split('_')).join(' ').capitalize; return Container( width: 120, height: 120, diff --git a/example/lib/pages/theme/radius_example.dart b/example/lib/pages/theme/radius_example.dart index 944a7bf4..30ec6c28 100644 --- a/example/lib/pages/theme/radius_example.dart +++ b/example/lib/pages/theme/radius_example.dart @@ -43,7 +43,7 @@ class RadiusExample extends StatelessWidget { ), padding: EdgeInsets.all(Zeta.of(context).spacing.large), child: Text( - rad.radiusString.split('.').last.capitalize(), + rad.radiusString.split('.').last.capitalize, style: ZetaTextStyles.titleMedium.apply( color: Zeta.of(context).colors.mainDefault, fontStyle: FontStyle.normal, diff --git a/example/linux/flutter/generated_plugin_registrant.cc b/example/linux/flutter/generated_plugin_registrant.cc index e71a16d2..f6f23bfe 100644 --- a/example/linux/flutter/generated_plugin_registrant.cc +++ b/example/linux/flutter/generated_plugin_registrant.cc @@ -6,6 +6,10 @@ #include "generated_plugin_registrant.h" +#include void fl_register_plugins(FlPluginRegistry* registry) { + g_autoptr(FlPluginRegistrar) url_launcher_linux_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "UrlLauncherPlugin"); + url_launcher_plugin_register_with_registrar(url_launcher_linux_registrar); } diff --git a/example/linux/flutter/generated_plugins.cmake b/example/linux/flutter/generated_plugins.cmake index 2e1de87a..f16b4c34 100644 --- a/example/linux/flutter/generated_plugins.cmake +++ b/example/linux/flutter/generated_plugins.cmake @@ -3,6 +3,7 @@ # list(APPEND FLUTTER_PLUGIN_LIST + url_launcher_linux ) list(APPEND FLUTTER_FFI_PLUGIN_LIST diff --git a/example/macos/Flutter/GeneratedPluginRegistrant.swift b/example/macos/Flutter/GeneratedPluginRegistrant.swift index d0e7d180..8c72a8c7 100644 --- a/example/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/example/macos/Flutter/GeneratedPluginRegistrant.swift @@ -8,9 +8,11 @@ import Foundation import path_provider_foundation import shared_preferences_foundation import sqflite_darwin +import url_launcher_macos func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin")) + UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) } diff --git a/example/macos/Podfile.lock b/example/macos/Podfile.lock index 2894a1a8..0878796e 100644 --- a/example/macos/Podfile.lock +++ b/example/macos/Podfile.lock @@ -9,12 +9,15 @@ PODS: - sqflite_darwin (0.0.4): - Flutter - FlutterMacOS + - url_launcher_macos (0.0.1): + - FlutterMacOS DEPENDENCIES: - FlutterMacOS (from `Flutter/ephemeral`) - path_provider_foundation (from `Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin`) - shared_preferences_foundation (from `Flutter/ephemeral/.symlinks/plugins/shared_preferences_foundation/darwin`) - sqflite_darwin (from `Flutter/ephemeral/.symlinks/plugins/sqflite_darwin/darwin`) + - url_launcher_macos (from `Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos`) EXTERNAL SOURCES: FlutterMacOS: @@ -25,12 +28,15 @@ EXTERNAL SOURCES: :path: Flutter/ephemeral/.symlinks/plugins/shared_preferences_foundation/darwin sqflite_darwin: :path: Flutter/ephemeral/.symlinks/plugins/sqflite_darwin/darwin + url_launcher_macos: + :path: Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos SPEC CHECKSUMS: FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24 path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46 shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78 sqflite_darwin: 5a7236e3b501866c1c9befc6771dfd73ffb8702d + url_launcher_macos: c82c93949963e55b228a30115bd219499a6fe404 PODFILE CHECKSUM: 353c8bcc5d5b0994e508d035b5431cfe18c1dea7 diff --git a/example/pubspec.yaml b/example/pubspec.yaml index 126ee03d..e6cb4a9a 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -1,11 +1,13 @@ name: zeta_example description: Demonstrates how to use zeta -version: 0.0.1 +version: 1.0.0-alpha publish_to: "none" environment: - sdk: ">=3.2.0 <4.0.0" - flutter: ">=3.16.0" + sdk: ^3.6.0 + flutter: ^3.27.0 + +resolution: workspace dependencies: cached_network_image: ^3.3.1 @@ -14,9 +16,7 @@ dependencies: go_router: ^14.1.2 path_drawing: ^1.0.1 zeta_flutter: - path: ../ + path: ../packages/zeta_flutter flutter: uses-material-design: true - assets: - - assets/ diff --git a/example/windows/flutter/generated_plugin_registrant.cc b/example/windows/flutter/generated_plugin_registrant.cc index 8b6d4680..4f788487 100644 --- a/example/windows/flutter/generated_plugin_registrant.cc +++ b/example/windows/flutter/generated_plugin_registrant.cc @@ -6,6 +6,9 @@ #include "generated_plugin_registrant.h" +#include void RegisterPlugins(flutter::PluginRegistry* registry) { + UrlLauncherWindowsRegisterWithRegistrar( + registry->GetRegistrarForPlugin("UrlLauncherWindows")); } diff --git a/example/windows/flutter/generated_plugins.cmake b/example/windows/flutter/generated_plugins.cmake index b93c4c30..88b22e5c 100644 --- a/example/windows/flutter/generated_plugins.cmake +++ b/example/windows/flutter/generated_plugins.cmake @@ -3,6 +3,7 @@ # list(APPEND FLUTTER_PLUGIN_LIST + url_launcher_windows ) list(APPEND FLUTTER_FFI_PLUGIN_LIST diff --git a/lib/src/components/components.dart b/lib/src/components/components.dart deleted file mode 100644 index fe04dc3e..00000000 --- a/lib/src/components/components.dart +++ /dev/null @@ -1,58 +0,0 @@ -export 'accordion/accordion.dart'; -export 'avatar_rail/avatar_rail.dart'; -export 'avatars/avatar.dart'; -export 'badges/indicator.dart'; -export 'badges/label.dart'; -export 'badges/priority_pill.dart'; -export 'badges/status_label.dart'; -export 'badges/tag.dart'; -export 'bottom sheets/bottom_sheet.dart'; -export 'bottom sheets/menu_items.dart'; -export 'breadcrumb/breadcrumb.dart' hide TruncatedItem; -export 'button_group/button_group.dart'; -export 'buttons/button.dart'; -export 'buttons/button_style.dart' show ZetaButtonType; -export 'buttons/icon_button.dart'; -export 'chat_item/chat_item.dart'; -export 'chat_item/contact_item.dart'; -export 'checkbox/checkbox.dart' hide ZetaInternalCheckbox; -export 'chips/chip.dart'; -export 'comms_button/comms_button.dart'; -export 'date_input/date_input.dart'; -export 'dial_pad/dial_pad.dart'; -export 'dialog/dialog.dart'; -export 'dropdown/dropdown.dart'; -export 'fabs/fab.dart'; -export 'filter_selection/filter_selection.dart'; -export 'global_header/global_header.dart'; -export 'global_header/header_tab_item.dart'; -export 'icon/icon.dart'; -export 'in_page_banner/in_page_banner.dart'; -export 'list_item/dropdown_list_item.dart'; -export 'list_item/list_item.dart'; -export 'list_item/notification_list_item.dart'; -export 'navigation bar/navigation_bar.dart' hide NavigationItem; -export 'navigation_rail/navigation_rail.dart'; -export 'pagination/pagination.dart'; -export 'password/password_input.dart'; -export 'phone_input/phone_input.dart'; -export 'progress/progress_bar.dart'; -export 'progress/progress_circle.dart'; -export 'radio/radio.dart'; -export 'range_selector/range_selector.dart'; -export 'screen_header_bar/screen_header_bar.dart'; -export 'search_bar/search_bar.dart'; -export 'segmented_control/segmented_control.dart'; -export 'select_input/select_input.dart'; -export 'slider/slider.dart'; -export 'snack_bar/snack_bar.dart'; -export 'stepper/stepper.dart' hide HorizontalStep, StepDivider, StepIcon, VerticalStep; -export 'stepper_input/stepper_input.dart' hide ZetaStepperInputState; -export 'switch/zeta_switch.dart'; -export 'system_banner/system_banner.dart'; -export 'tabs/tab.dart'; -export 'tabs/tab_bar.dart'; -export 'text_input/text_input.dart'; -export 'time_input/time_input.dart'; -export 'tooltip/tooltip.dart'; -export 'top_app_bar/top_app_bar.dart'; diff --git a/lib/src/theme/theme.dart b/lib/src/theme/theme.dart deleted file mode 100644 index a9cabf84..00000000 --- a/lib/src/theme/theme.dart +++ /dev/null @@ -1,9 +0,0 @@ -export 'breakpoints.dart'; -export 'color_extensions.dart'; -export 'color_swatch.dart'; -export 'constants.dart'; -export 'contrast.dart'; -export 'custom_theme.dart'; -export 'theme_service.dart'; -export 'tokens.dart'; -export 'typography.dart'; diff --git a/lib/src/utils/debounce.dart b/lib/src/utils/debounce.dart deleted file mode 100644 index cd6db0b9..00000000 --- a/lib/src/utils/debounce.dart +++ /dev/null @@ -1,40 +0,0 @@ -import 'dart:async'; - -export 'extensions.dart'; - -const Duration _debounceDuration = Duration(milliseconds: 500); - -/// Debounce utility -/// {@category Utils} -class ZetaDebounce { - /// Constructs and starts the debouncer. - factory ZetaDebounce(void Function() callback, {Duration duration = _debounceDuration}) { - return ZetaDebounce._(callback, duration)..debounce(); - } - - /// Constructs debouncer but does not initialize the timer. - ZetaDebounce.stopped(this.callback, {this.duration = _debounceDuration}); - - ZetaDebounce._(this.callback, this.duration); - - /// Function called after [Duration] has elapsed. - final void Function() callback; - - /// Duration to wait for function to be ready to send. - /// - /// Defaults to 500 milliseconds. - final Duration duration; - - Timer? _timer; - - /// Starts the debouncer. - /// - /// This function is called automatically when default factory constructor is used. - void debounce({void Function()? newCallback}) { - _timer?.cancel(); - _timer = Timer(duration, newCallback ?? callback); - } - - /// Cancels the debouncer. - void cancel() => _timer?.cancel(); -} diff --git a/lib/src/utils/utils.dart b/lib/src/utils/utils.dart deleted file mode 100644 index 24e64784..00000000 --- a/lib/src/utils/utils.dart +++ /dev/null @@ -1,8 +0,0 @@ -export 'debounce.dart'; -export 'enums.dart'; -export 'extensions.dart'; -export 'nothing.dart'; -export 'platform/platform_is.dart' show PlatformIs; -export 'rounded.dart'; -export 'zeta.dart'; -export 'zeta_provider.dart' hide InternalProvider, InternalProviderState, generateZetaTheme; diff --git a/lib/zeta_flutter.dart b/lib/zeta_flutter.dart deleted file mode 100644 index d17db81d..00000000 --- a/lib/zeta_flutter.dart +++ /dev/null @@ -1,8 +0,0 @@ -/// Zebra Design System (Zeta) - Flutter Component Library -library; - -export 'src/components/components.dart'; -export 'src/generated/generated.dart'; -export 'src/interfaces/interfaces.dart'; -export 'src/theme/theme.dart'; -export 'src/utils/utils.dart'; diff --git a/melos.yaml b/melos.yaml new file mode 100644 index 00000000..1eb97fd9 --- /dev/null +++ b/melos.yaml @@ -0,0 +1,15 @@ +name: zeta_flutter_workspace + +packages: + - packages/** + - example/* + - widgetbook/* + +scripts: + doc: dart doc packages/zeta_flutter + build_runner: + exec: dart run build_runner build -d + test: | + rm -rf .coverage + melos exec -- bash ../../scripts/cov_move.sh + bash scripts/lcov_combine.sh diff --git a/packages/zeta_flutter/.metadata b/packages/zeta_flutter/.metadata new file mode 100644 index 00000000..f5be3bc8 --- /dev/null +++ b/packages/zeta_flutter/.metadata @@ -0,0 +1,10 @@ +# 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: "8495dee1fd4aacbe9de707e7581203232f591b2f" + channel: "stable" + +project_type: package diff --git a/packages/zeta_flutter/CHANGELOG.md b/packages/zeta_flutter/CHANGELOG.md new file mode 100644 index 00000000..57016348 --- /dev/null +++ b/packages/zeta_flutter/CHANGELOG.md @@ -0,0 +1,2340 @@ +# Changelog + +## [1.0.0-alpha.1] - Initial alpha release + +## [0.20.2](https://github.com/ZebraDevs/zeta_flutter/compare/v0.20.1...v0.20.2) (2024-12-20) + +### ⛓️ Dependencies + +- **automated:** Update icons ([#225](https://github.com/ZebraDevs/zeta_flutter/issues/225)) ([b1729e3](https://github.com/ZebraDevs/zeta_flutter/commit/b1729e3a99e74b5eaf0c81b2003c10229bf83b59)) + +## [0.20.1](https://github.com/ZebraDevs/zeta_flutter/compare/v0.20.0...v0.20.1) (2024-12-13) + +### 🪲 Bug Fixes + +- Fab icon color ([#222](https://github.com/ZebraDevs/zeta_flutter/issues/222)) ([58b9222](https://github.com/ZebraDevs/zeta_flutter/commit/58b9222446e47d976761ffd347546717b043aa23)) + +## [0.20.0](https://github.com/ZebraDevs/zeta_flutter/compare/v0.19.0...v0.20.0) (2024-12-12) + +### ✨ New Features + +- Created Range Selector ([7257c40](https://github.com/ZebraDevs/zeta_flutter/commit/7257c409afaaf10b51a577856ab9623510d43e70)) +- **UX-881:** Range Selector ([#217](https://github.com/ZebraDevs/zeta_flutter/issues/217)) ([7257c40](https://github.com/ZebraDevs/zeta_flutter/commit/7257c409afaaf10b51a577856ab9623510d43e70)) + +### 🪲 Bug Fixes + +- Fixed issue where avatar lower badge was not showing ([#218](https://github.com/ZebraDevs/zeta_flutter/issues/218)) ([a1742a3](https://github.com/ZebraDevs/zeta_flutter/commit/a1742a3cabb9aad03d2f79ee4bf832a54cec928f)) +- removed defaults to true on showValues ([7257c40](https://github.com/ZebraDevs/zeta_flutter/commit/7257c409afaaf10b51a577856ab9623510d43e70)) +- removed large thumbs ([7257c40](https://github.com/ZebraDevs/zeta_flutter/commit/7257c409afaaf10b51a577856ab9623510d43e70)) +- removed rounded from widgetbook ([7257c40](https://github.com/ZebraDevs/zeta_flutter/commit/7257c409afaaf10b51a577856ab9623510d43e70)) +- Top app bar padding ([#215](https://github.com/ZebraDevs/zeta_flutter/issues/215)) ([7b374b7](https://github.com/ZebraDevs/zeta_flutter/commit/7b374b7e929c07d20220d9ab8e9ee09a12206442)) + +### 📈 Documentation + +- widgetbook and example for range selector ([7257c40](https://github.com/ZebraDevs/zeta_flutter/commit/7257c409afaaf10b51a577856ab9623510d43e70)) + +### ⛓️ Dependencies + +- **automated:** Update icons ([#219](https://github.com/ZebraDevs/zeta_flutter/issues/219)) ([1bd8bfa](https://github.com/ZebraDevs/zeta_flutter/commit/1bd8bfa0a8a6fda8782860779fa02e1d195f67ea)) +- **automated:** Update icons ([#221](https://github.com/ZebraDevs/zeta_flutter/issues/221)) ([10cc97c](https://github.com/ZebraDevs/zeta_flutter/commit/10cc97c225e6644099b10b8fefa537546d842408)) + +### 🧪 Tests + +- adjusted golden tolerance ([7257c40](https://github.com/ZebraDevs/zeta_flutter/commit/7257c409afaaf10b51a577856ab9623510d43e70)) +- created interaction tests ([7257c40](https://github.com/ZebraDevs/zeta_flutter/commit/7257c409afaaf10b51a577856ab9623510d43e70)) +- testing range selector ([7257c40](https://github.com/ZebraDevs/zeta_flutter/commit/7257c409afaaf10b51a577856ab9623510d43e70)) +- wrote 1 test for range selector ([7257c40](https://github.com/ZebraDevs/zeta_flutter/commit/7257c409afaaf10b51a577856ab9623510d43e70)) + +## [0.19.0](https://github.com/ZebraDevs/zeta_flutter/compare/v0.18.0...v0.19.0) (2024-11-18) + +### ✨ New Features + +- Added shrink items to navigation bar so the items can expand to fill the space and shrink ([5a785f0](https://github.com/ZebraDevs/zeta_flutter/commit/5a785f0cd35a827297ca2d8b96a7f96cf45215cc)) +- **UX-1096:** Added shrink items to navigation bar so the items can expand or shrink. To match web ([#210](https://github.com/ZebraDevs/zeta_flutter/issues/210)) ([5a785f0](https://github.com/ZebraDevs/zeta_flutter/commit/5a785f0cd35a827297ca2d8b96a7f96cf45215cc)) + +### 🪲 Bug Fixes + +- add SafeArea to ZetaNavigationBar ([#211](https://github.com/ZebraDevs/zeta_flutter/issues/211)) ([aa7a1e4](https://github.com/ZebraDevs/zeta_flutter/commit/aa7a1e4eff10274f4fb11111a825e21a496522a6)) +- added shrink items to widgetbook ([5a785f0](https://github.com/ZebraDevs/zeta_flutter/commit/5a785f0cd35a827297ca2d8b96a7f96cf45215cc)) +- breadcrumb now removes the items after the one that is clicked ([d97440b](https://github.com/ZebraDevs/zeta_flutter/commit/d97440b6acde461ed615b1ea827064b4b53af351)) +- breadcrumb select index ([d97440b](https://github.com/ZebraDevs/zeta_flutter/commit/d97440b6acde461ed615b1ea827064b4b53af351)) +- Changed font size of medium indicator from 12 to 11 ([9f6ed48](https://github.com/ZebraDevs/zeta_flutter/commit/9f6ed48a91d5a0f681d7c3df43da49dc40852f1d)) +- Extra verbose semantic label ([9f6ed48](https://github.com/ZebraDevs/zeta_flutter/commit/9f6ed48a91d5a0f681d7c3df43da49dc40852f1d)) +- hover color on navigation item ([9f6ed48](https://github.com/ZebraDevs/zeta_flutter/commit/9f6ed48a91d5a0f681d7c3df43da49dc40852f1d)) +- indicator semantic labels ([9f6ed48](https://github.com/ZebraDevs/zeta_flutter/commit/9f6ed48a91d5a0f681d7c3df43da49dc40852f1d)) +- intruduced a value listenable builder to handle hover and pressed states on breadcrumb item ([d97440b](https://github.com/ZebraDevs/zeta_flutter/commit/d97440b6acde461ed615b1ea827064b4b53af351)) +- made NavigationItem visible for testing ([9f6ed48](https://github.com/ZebraDevs/zeta_flutter/commit/9f6ed48a91d5a0f681d7c3df43da49dc40852f1d)) +- navigation bar semantic labels ([9f6ed48](https://github.com/ZebraDevs/zeta_flutter/commit/9f6ed48a91d5a0f681d7c3df43da49dc40852f1d)) +- removed active icon prop ([d97440b](https://github.com/ZebraDevs/zeta_flutter/commit/d97440b6acde461ed615b1ea827064b4b53af351)) +- rounded now affects breadcrumb icons ([d97440b](https://github.com/ZebraDevs/zeta_flutter/commit/d97440b6acde461ed615b1ea827064b4b53af351)) +- set navigation item highlight shape to rectangle ([9f6ed48](https://github.com/ZebraDevs/zeta_flutter/commit/9f6ed48a91d5a0f681d7c3df43da49dc40852f1d)) +- The icon that was passed in now shows on breadcrumb ([d97440b](https://github.com/ZebraDevs/zeta_flutter/commit/d97440b6acde461ed615b1ea827064b4b53af351)) +- truncated only hides any breadcrumbs over the maxItemsShown number ([d97440b](https://github.com/ZebraDevs/zeta_flutter/commit/d97440b6acde461ed615b1ea827064b4b53af351)) +- typo ";abel" => "label" ([d97440b](https://github.com/ZebraDevs/zeta_flutter/commit/d97440b6acde461ed615b1ea827064b4b53af351)) +- **UX-1232:** Breadcrumb Issues ([#214](https://github.com/ZebraDevs/zeta_flutter/issues/214)) ([d97440b](https://github.com/ZebraDevs/zeta_flutter/commit/d97440b6acde461ed615b1ea827064b4b53af351)) +- **UX-1315:** Update license ([#208](https://github.com/ZebraDevs/zeta_flutter/issues/208)) ([bfbfa23](https://github.com/ZebraDevs/zeta_flutter/commit/bfbfa238f3356368d1f36d32d15ba8de4706646e)) +- **UX-1316:** Update macro desciption ([bfbfa23](https://github.com/ZebraDevs/zeta_flutter/commit/bfbfa238f3356368d1f36d32d15ba8de4706646e)) + +### ⛓️ Dependencies + +- Update example app android dependencies ([#212](https://github.com/ZebraDevs/zeta_flutter/issues/212)) ([179c2cb](https://github.com/ZebraDevs/zeta_flutter/commit/179c2cba6ef0f65523d273d8dad2399f8292e220)) + +### 🧪 Tests + +- added more tests for navigation bar ([9f6ed48](https://github.com/ZebraDevs/zeta_flutter/commit/9f6ed48a91d5a0f681d7c3df43da49dc40852f1d)) +- breadcrumb items are spaced equally ([d97440b](https://github.com/ZebraDevs/zeta_flutter/commit/d97440b6acde461ed615b1ea827064b4b53af351)) +- breadcrumb label and icon default colors ([d97440b](https://github.com/ZebraDevs/zeta_flutter/commit/d97440b6acde461ed615b1ea827064b4b53af351)) +- edited test to pass after merge ([9f6ed48](https://github.com/ZebraDevs/zeta_flutter/commit/9f6ed48a91d5a0f681d7c3df43da49dc40852f1d)) +- fixed debug fill props avatar ([9f6ed48](https://github.com/ZebraDevs/zeta_flutter/commit/9f6ed48a91d5a0f681d7c3df43da49dc40852f1d)) +- hardcoded offset ([9f6ed48](https://github.com/ZebraDevs/zeta_flutter/commit/9f6ed48a91d5a0f681d7c3df43da49dc40852f1d)) +- Navigation Bar ([#213](https://github.com/ZebraDevs/zeta_flutter/issues/213)) ([9f6ed48](https://github.com/ZebraDevs/zeta_flutter/commit/9f6ed48a91d5a0f681d7c3df43da49dc40852f1d)) +- navigation item calls onTap when an item is tapped off center ([9f6ed48](https://github.com/ZebraDevs/zeta_flutter/commit/9f6ed48a91d5a0f681d7c3df43da49dc40852f1d)) +- ran test counter ([9f6ed48](https://github.com/ZebraDevs/zeta_flutter/commit/9f6ed48a91d5a0f681d7c3df43da49dc40852f1d)) +- Uncommented text contrast tests ([9f6ed48](https://github.com/ZebraDevs/zeta_flutter/commit/9f6ed48a91d5a0f681d7c3df43da49dc40852f1d)) +- writing tests for navigation bar ([9f6ed48](https://github.com/ZebraDevs/zeta_flutter/commit/9f6ed48a91d5a0f681d7c3df43da49dc40852f1d)) +- wrote content and accessibility tests ([d97440b](https://github.com/ZebraDevs/zeta_flutter/commit/d97440b6acde461ed615b1ea827064b4b53af351)) + +### 🧹 Miscellaneous Chores + +- **automated:** Lint commit and format ([9f6ed48](https://github.com/ZebraDevs/zeta_flutter/commit/9f6ed48a91d5a0f681d7c3df43da49dc40852f1d)) +- **automated:** Lint commit and format ([9f6ed48](https://github.com/ZebraDevs/zeta_flutter/commit/9f6ed48a91d5a0f681d7c3df43da49dc40852f1d)) + +## [0.18.0](https://github.com/ZebraDevs/zeta_flutter/compare/v0.17.0...v0.18.0) (2024-11-11) + +### ✨ New Features + +- Added disabled variant to chip ([321b57d](https://github.com/ZebraDevs/zeta_flutter/commit/321b57de1cfc39cc940d28716fa1a49efc577d84)) +- Added label prop to progress circle which overrides default percentage label ([e035a47](https://github.com/ZebraDevs/zeta_flutter/commit/e035a47178efd5b1528c86fc4f5c46bd7ad179f5)) +- added maxValue to progress circle ([e035a47](https://github.com/ZebraDevs/zeta_flutter/commit/e035a47178efd5b1528c86fc4f5c46bd7ad179f5)) +- Added mouse region to avatar for give click pointer ([37b0f8e](https://github.com/ZebraDevs/zeta_flutter/commit/37b0f8e284d0b734a1ca9b3e17fccbbca6c60fa5)) +- Added NavRail focus state ([39c5cdf](https://github.com/ZebraDevs/zeta_flutter/commit/39c5cdf4a150b6aae1c57cfc4a7daa1c70f09883)) +- Added NavRail hover state ([#204](https://github.com/ZebraDevs/zeta_flutter/issues/204)) ([39c5cdf](https://github.com/ZebraDevs/zeta_flutter/commit/39c5cdf4a150b6aae1c57cfc4a7daa1c70f09883)) +- added onTap to widgetbook ([321b57d](https://github.com/ZebraDevs/zeta_flutter/commit/321b57de1cfc39cc940d28716fa1a49efc577d84)) +- Added onTaps to chips in example app ([321b57d](https://github.com/ZebraDevs/zeta_flutter/commit/321b57de1cfc39cc940d28716fa1a49efc577d84)) +- added rounded to widgetbook ([321b57d](https://github.com/ZebraDevs/zeta_flutter/commit/321b57de1cfc39cc940d28716fa1a49efc577d84)) +- created status chip ([c69d3b7](https://github.com/ZebraDevs/zeta_flutter/commit/c69d3b76afcd14a8ffa5777483687f818ac70876)) +- implemented status chip widgetbook use case ([c69d3b7](https://github.com/ZebraDevs/zeta_flutter/commit/c69d3b76afcd14a8ffa5777483687f818ac70876)) +- **UX-1233:** Added disabled variant to chip ([#203](https://github.com/ZebraDevs/zeta_flutter/issues/203)) ([321b57d](https://github.com/ZebraDevs/zeta_flutter/commit/321b57de1cfc39cc940d28716fa1a49efc577d84)) +- **UX-1234:** Status Chip ([#201](https://github.com/ZebraDevs/zeta_flutter/issues/201)) ([c69d3b7](https://github.com/ZebraDevs/zeta_flutter/commit/c69d3b76afcd14a8ffa5777483687f818ac70876)) +- **UX-1247:** extend ZetaProgressCircle ([#199](https://github.com/ZebraDevs/zeta_flutter/issues/199)) ([e035a47](https://github.com/ZebraDevs/zeta_flutter/commit/e035a47178efd5b1528c86fc4f5c46bd7ad179f5)) +- **UX-1310:** Added more customization options to ZetaListItem ([#205](https://github.com/ZebraDevs/zeta_flutter/issues/205)) ([6e13502](https://github.com/ZebraDevs/zeta_flutter/commit/6e135020cbddcf7e448abdfadd7eaca127acff56)) + +### 🪲 Bug Fixes + +- Banner title alignment when centered ([044ed2e](https://github.com/ZebraDevs/zeta_flutter/commit/044ed2ea47ae9e82ce7433ff251582a2fc861271)) +- changed \_updateControllerState to \_handleDisabledState ([321b57d](https://github.com/ZebraDevs/zeta_flutter/commit/321b57de1cfc39cc940d28716fa1a49efc577d84)) +- converted child widget function to a stateless widget class in status chip ([c69d3b7](https://github.com/ZebraDevs/zeta_flutter/commit/c69d3b76afcd14a8ffa5777483687f818ac70876)) +- Removed hit test behavior from avatar rail ([37b0f8e](https://github.com/ZebraDevs/zeta_flutter/commit/37b0f8e284d0b734a1ca9b3e17fccbbca6c60fa5)) +- removed hit test behaviour from avatar rail ([#197](https://github.com/ZebraDevs/zeta_flutter/issues/197)) ([37b0f8e](https://github.com/ZebraDevs/zeta_flutter/commit/37b0f8e284d0b734a1ca9b3e17fccbbca6c60fa5)) +- set rounded to default to true ([c69d3b7](https://github.com/ZebraDevs/zeta_flutter/commit/c69d3b76afcd14a8ffa5777483687f818ac70876)) +- used variable ([321b57d](https://github.com/ZebraDevs/zeta_flutter/commit/321b57de1cfc39cc940d28716fa1a49efc577d84)) +- **UX-1161:** banner title alignment when centered ([#200](https://github.com/ZebraDevs/zeta_flutter/issues/200)) ([044ed2e](https://github.com/ZebraDevs/zeta_flutter/commit/044ed2ea47ae9e82ce7433ff251582a2fc861271)) +- **UX-1298:** ZetaDialog button overflow ([51b4172](https://github.com/ZebraDevs/zeta_flutter/commit/51b4172d3e926e9fa2c87fd1be4f2c2ec5b4a71b)) +- **UX-1303:** Update avatar boarder width ([#202](https://github.com/ZebraDevs/zeta_flutter/issues/202)) ([51b4172](https://github.com/ZebraDevs/zeta_flutter/commit/51b4172d3e926e9fa2c87fd1be4f2c2ec5b4a71b)) +- **UX-1309:** Wrapped initials with FittedBox inside ZetaAvatar so that the text scales correctly with device text scaling ([6e13502](https://github.com/ZebraDevs/zeta_flutter/commit/6e135020cbddcf7e448abdfadd7eaca127acff56)) + +### 📈 Documentation + +- added description for status chip ([c69d3b7](https://github.com/ZebraDevs/zeta_flutter/commit/c69d3b76afcd14a8ffa5777483687f818ac70876)) +- added more info to global header. Info about where to use the header ([#206](https://github.com/ZebraDevs/zeta_flutter/issues/206)) ([c9c84c0](https://github.com/ZebraDevs/zeta_flutter/commit/c9c84c0d7b80934e59b76ba3501639d6de37f35a)) + +### ⛓️ Dependencies + +- **automated:** Update icons ([#207](https://github.com/ZebraDevs/zeta_flutter/issues/207)) ([87a5df1](https://github.com/ZebraDevs/zeta_flutter/commit/87a5df158653a7623f09894961fe985635362d95)) + +### 🧪 Tests + +- Add a log on debugFillPropertiesTest if it fails ([51b4172](https://github.com/ZebraDevs/zeta_flutter/commit/51b4172d3e926e9fa2c87fd1be4f2c2ec5b4a71b)) +- Added debugfillproperties test to chip_test ([321b57d](https://github.com/ZebraDevs/zeta_flutter/commit/321b57de1cfc39cc940d28716fa1a49efc577d84)) +- **UX-1305:** Update avatar test ([51b4172](https://github.com/ZebraDevs/zeta_flutter/commit/51b4172d3e926e9fa2c87fd1be4f2c2ec5b4a71b)) +- wrote tests for status chip ([c69d3b7](https://github.com/ZebraDevs/zeta_flutter/commit/c69d3b76afcd14a8ffa5777483687f818ac70876)) + +## [0.17.0](https://github.com/ZebraDevs/zeta_flutter/compare/v0.16.0...v0.17.0) (2024-10-28) + +### ✨ New Features + +- added label to avatar ([823370e](https://github.com/ZebraDevs/zeta_flutter/commit/823370e161dd753abd22060d8dd862752dc8a34f)) +- created avatar rail ([823370e](https://github.com/ZebraDevs/zeta_flutter/commit/823370e161dd753abd22060d8dd862752dc8a34f)) +- **UX-1231:** created avatar rail ([#196](https://github.com/ZebraDevs/zeta_flutter/issues/196)) ([823370e](https://github.com/ZebraDevs/zeta_flutter/commit/823370e161dd753abd22060d8dd862752dc8a34f)) + +### 🪲 Bug Fixes + +- added MainAxisSize.min to avatar column to regulate height ([823370e](https://github.com/ZebraDevs/zeta_flutter/commit/823370e161dd753abd22060d8dd862752dc8a34f)) +- widgetbook max lines avatar rail ([823370e](https://github.com/ZebraDevs/zeta_flutter/commit/823370e161dd753abd22060d8dd862752dc8a34f)) + +### 🧪 Tests + +- changed the word 'Dimension' to 'Dimensions' ([#194](https://github.com/ZebraDevs/zeta_flutter/issues/194)) ([17a6995](https://github.com/ZebraDevs/zeta_flutter/commit/17a69951628d17edc635408d1b026abbf3dc92c5)) +- created tests for avatar rail ([823370e](https://github.com/ZebraDevs/zeta_flutter/commit/823370e161dd753abd22060d8dd862752dc8a34f)) +- fixed parent folder for stepper ([823370e](https://github.com/ZebraDevs/zeta_flutter/commit/823370e161dd753abd22060d8dd862752dc8a34f)) + +### 🧹 Miscellaneous Chores + +- **automated:** Lint commit and format ([823370e](https://github.com/ZebraDevs/zeta_flutter/commit/823370e161dd753abd22060d8dd862752dc8a34f)) + +## [0.16.0](https://github.com/ZebraDevs/zeta_flutter/compare/v0.15.2...v0.16.0) (2024-10-22) + +### ✨ New Features + +- added swipe-able actions to notification list item ([057defd](https://github.com/ZebraDevs/zeta_flutter/commit/057defd5a945382826ae8746416473943304da32)) +- comms buttons ([af95815](https://github.com/ZebraDevs/zeta_flutter/commit/af958159b3e4f3fad06c24e64983aff5861a9482)) +- updated notification list item to match latest design ([057defd](https://github.com/ZebraDevs/zeta_flutter/commit/057defd5a945382826ae8746416473943304da32)) +- **UX-1064:** Comms Buttons ([#182](https://github.com/ZebraDevs/zeta_flutter/issues/182)) ([af95815](https://github.com/ZebraDevs/zeta_flutter/commit/af958159b3e4f3fad06c24e64983aff5861a9482)) +- **UX-1073:** List Item notification ([#172](https://github.com/ZebraDevs/zeta_flutter/issues/172)) ([057defd](https://github.com/ZebraDevs/zeta_flutter/commit/057defd5a945382826ae8746416473943304da32)) + +### 🪲 Bug Fixes + +- \_getSlidableExtend() now won't return over 1.0 ([057defd](https://github.com/ZebraDevs/zeta_flutter/commit/057defd5a945382826ae8746416473943304da32)) +- A variety of small bug fixes ([#168](https://github.com/ZebraDevs/zeta_flutter/issues/168)) ([cb37705](https://github.com/ZebraDevs/zeta_flutter/commit/cb3770520d21b6e1de4f0bb928d800b12fc49042)) +- Add PlatformIs to not use dart:io ([cb37705](https://github.com/ZebraDevs/zeta_flutter/commit/cb3770520d21b6e1de4f0bb928d800b12fc49042)) +- added different constructors to zetacommsbutton ([af95815](https://github.com/ZebraDevs/zeta_flutter/commit/af958159b3e4f3fad06c24e64983aff5861a9482)) +- added golden group to testing_conventions.mdx ([7fba9b2](https://github.com/ZebraDevs/zeta_flutter/commit/7fba9b27e399fc3ac5ebc0c09908ae4c3be92e3c)) +- added some commas ([ef050af](https://github.com/ZebraDevs/zeta_flutter/commit/ef050af9af8caf9552aa2b7aa1a4465320e4c870)) +- added styles to banner text ([7fba9b2](https://github.com/ZebraDevs/zeta_flutter/commit/7fba9b27e399fc3ac5ebc0c09908ae4c3be92e3c)) +- Border sizes ([cb37705](https://github.com/ZebraDevs/zeta_flutter/commit/cb3770520d21b6e1de4f0bb928d800b12fc49042)) +- changed avatar xs so it shows two initals ([ef050af](https://github.com/ZebraDevs/zeta_flutter/commit/ef050af9af8caf9552aa2b7aa1a4465320e4c870)) +- changed Colors.transparent to Zeta.of(context).colors.surfaceDefault ([af95815](https://github.com/ZebraDevs/zeta_flutter/commit/af958159b3e4f3fad06c24e64983aff5861a9482)) +- changed example back ([ef050af](https://github.com/ZebraDevs/zeta_flutter/commit/ef050af9af8caf9552aa2b7aa1a4465320e4c870)) +- changed storybook to widgetbook in name of deploy preview in pull request github action ([ba4901d](https://github.com/ZebraDevs/zeta_flutter/commit/ba4901d74fff20d6319050f331c5f6d60f99b438)) +- chat item ([#174](https://github.com/ZebraDevs/zeta_flutter/issues/174)) ([3ac64a7](https://github.com/ZebraDevs/zeta_flutter/commit/3ac64a7fa68de77d865c0f95745fdbac760d0984)) +- chat item actions \_getSlidableExtend now won't return over 1.0 ([3ac64a7](https://github.com/ZebraDevs/zeta_flutter/commit/3ac64a7fa68de77d865c0f95745fdbac760d0984)) +- Components using the internal text input are now sized correctly ([38b865b](https://github.com/ZebraDevs/zeta_flutter/commit/38b865b8460fe0b8543bab3fa8245750ac2d3d6d)) +- get initials now returns the first and last name initials rather than first and second names. ([ef050af](https://github.com/ZebraDevs/zeta_flutter/commit/ef050af9af8caf9552aa2b7aa1a4465320e4c870)) +- moved analyzer package from dependencies to dev dependencies ([5987c21](https://github.com/ZebraDevs/zeta_flutter/commit/5987c211f79ff6357a47b462a654ca191f64498b)) +- put dev dependencies in alphabetical order ([5987c21](https://github.com/ZebraDevs/zeta_flutter/commit/5987c211f79ff6357a47b462a654ca191f64498b)) +- removed '$componentName' from all test files ([ba4901d](https://github.com/ZebraDevs/zeta_flutter/commit/ba4901d74fff20d6319050f331c5f6d60f99b438)) +- removed analyzer from dependencies ([ba4901d](https://github.com/ZebraDevs/zeta_flutter/commit/ba4901d74fff20d6319050f331c5f6d60f99b438)) +- set toggle related properties on non-toggle constructors to null ([af95815](https://github.com/ZebraDevs/zeta_flutter/commit/af958159b3e4f3fad06c24e64983aff5861a9482)) +- Spacings in example app ([cb37705](https://github.com/ZebraDevs/zeta_flutter/commit/cb3770520d21b6e1de4f0bb928d800b12fc49042)) +- **UX-1105:** Updated search bar to use internal text field ([#186](https://github.com/ZebraDevs/zeta_flutter/issues/186)) ([38b865b](https://github.com/ZebraDevs/zeta_flutter/commit/38b865b8460fe0b8543bab3fa8245750ac2d3d6d)) +- **UX-1141:** Update Spacing tokens ([#159](https://github.com/ZebraDevs/zeta_flutter/issues/159)) ([d22898f](https://github.com/ZebraDevs/zeta_flutter/commit/d22898f7e77704b5a4dd628320662530f1c2a1b4)) +- **UX-1207:** The search box on the search app bar now gets closed when the back button is pressed. ([58fc7f5](https://github.com/ZebraDevs/zeta_flutter/commit/58fc7f5c3e40888ade19a30a5592e70f5340585a)) +- **UX-1241:** Fixed inkwell on ZetaStepper ([#190](https://github.com/ZebraDevs/zeta_flutter/issues/190)) ([60a137f](https://github.com/ZebraDevs/zeta_flutter/commit/60a137f17dbeb989cf2a9f0b0dc3ee4b78ebb488)) +- **UX-1242:** Fixed extended app bar alignment ([#189](https://github.com/ZebraDevs/zeta_flutter/issues/189)) ([58fc7f5](https://github.com/ZebraDevs/zeta_flutter/commit/58fc7f5c3e40888ade19a30a5592e70f5340585a)) +- **UX-922:** FAB-redesign ([#181](https://github.com/ZebraDevs/zeta_flutter/issues/181)) ([11f266b](https://github.com/ZebraDevs/zeta_flutter/commit/11f266bbd955df2ef993f7edee2989bc9be60655)) + +### 📈 Documentation + +- abstracted functions in test_counter ([5987c21](https://github.com/ZebraDevs/zeta_flutter/commit/5987c211f79ff6357a47b462a654ca191f64498b)) +- added brief docs for fontSize function in avatar ([ef050af](https://github.com/ZebraDevs/zeta_flutter/commit/ef050af9af8caf9552aa2b7aa1a4465320e4c870)) +- added comments to the class about named constructors ([af95815](https://github.com/ZebraDevs/zeta_flutter/commit/af958159b3e4f3fad06c24e64983aff5861a9482)) +- added doc comments to test_counter script and utils file ([5987c21](https://github.com/ZebraDevs/zeta_flutter/commit/5987c211f79ff6357a47b462a654ca191f64498b)) +- added figma and widgetbook links to all components ([#180](https://github.com/ZebraDevs/zeta_flutter/issues/180)) ([e1d2ba0](https://github.com/ZebraDevs/zeta_flutter/commit/e1d2ba04bfae99f7f383566b483c6558d9a91ec5)) +- added helper function section to TESTING_README ([ba4901d](https://github.com/ZebraDevs/zeta_flutter/commit/ba4901d74fff20d6319050f331c5f6d60f99b438)) +- added info about how to run the script to testing read me ([5987c21](https://github.com/ZebraDevs/zeta_flutter/commit/5987c211f79ff6357a47b462a654ca191f64498b)) +- added link to excel sheet in TESTING_README ([ba4901d](https://github.com/ZebraDevs/zeta_flutter/commit/ba4901d74fff20d6319050f331c5f6d60f99b438)) +- added testing_conventions.mdx to keep track how we are testing in flutter ([7fba9b2](https://github.com/ZebraDevs/zeta_flutter/commit/7fba9b27e399fc3ac5ebc0c09908ae4c3be92e3c)) +- changed comms button example to use assorted constructors ([af95815](https://github.com/ZebraDevs/zeta_flutter/commit/af958159b3e4f3fad06c24e64983aff5861a9482)) +- created test counter script ([ba4901d](https://github.com/ZebraDevs/zeta_flutter/commit/ba4901d74fff20d6319050f331c5f6d60f99b438)) +- moved helper functions from test_counter to utils file ([5987c21](https://github.com/ZebraDevs/zeta_flutter/commit/5987c211f79ff6357a47b462a654ca191f64498b)) +- set initial values for comms button on widgetbook ([af95815](https://github.com/ZebraDevs/zeta_flutter/commit/af958159b3e4f3fad06c24e64983aff5861a9482)) +- test counter ([#187](https://github.com/ZebraDevs/zeta_flutter/issues/187)) ([5987c21](https://github.com/ZebraDevs/zeta_flutter/commit/5987c211f79ff6357a47b462a654ca191f64498b)) +- test_counter script improvements ([ba4901d](https://github.com/ZebraDevs/zeta_flutter/commit/ba4901d74fff20d6319050f331c5f6d60f99b438)) +- testing counter script ([5987c21](https://github.com/ZebraDevs/zeta_flutter/commit/5987c211f79ff6357a47b462a654ca191f64498b)) + +### ⛓️ Dependencies + +- **automated:** Update icons ([#191](https://github.com/ZebraDevs/zeta_flutter/issues/191)) ([0c09633](https://github.com/ZebraDevs/zeta_flutter/commit/0c09633b330594cb66457604ff684ab082ab2a4b)) +- **automated:** Update icons 2024-10-14 ([18ea9a2](https://github.com/ZebraDevs/zeta_flutter/commit/18ea9a2b123182f6da3382b9ee042297a4d721ae)) +- **automated:** Update tokens - 2024-08-27 ([#163](https://github.com/ZebraDevs/zeta_flutter/issues/163)) ([b499e22](https://github.com/ZebraDevs/zeta_flutter/commit/b499e221c58327ac6e6d18851986d3a503464de6)) +- **automated:** Update tokens ([#170](https://github.com/ZebraDevs/zeta_flutter/issues/170)) ([361b1c7](https://github.com/ZebraDevs/zeta_flutter/commit/361b1c7b7a271a990994ce35ac5d800315e7a753)) +- **automated:** Update tokens ([#176](https://github.com/ZebraDevs/zeta_flutter/issues/176)) ([2bd38de](https://github.com/ZebraDevs/zeta_flutter/commit/2bd38de3454f7544c0e19f9b60f1c2ce9e8e310c)) +- Update widgetbook dep for text scale addon ([#193](https://github.com/ZebraDevs/zeta_flutter/issues/193)) ([1852502](https://github.com/ZebraDevs/zeta_flutter/commit/185250206e151ce46e8311fd752bdeb23c82b6b6)) + +### 🧪 Tests + +- Add new GoldenFiles class to simplify generating golden file Uris ([a77211a](https://github.com/ZebraDevs/zeta_flutter/commit/a77211a9fd33dfee170605a33098e9df6d634be2)) +- added background color test ([7fba9b2](https://github.com/ZebraDevs/zeta_flutter/commit/7fba9b27e399fc3ac5ebc0c09908ae4c3be92e3c)) +- added debugFillProperties test helper function ([ba4901d](https://github.com/ZebraDevs/zeta_flutter/commit/ba4901d74fff20d6319050f331c5f6d60f99b438)) +- added loop for zetaavatar with border color for $size ([ef050af](https://github.com/ZebraDevs/zeta_flutter/commit/ef050af9af8caf9552aa2b7aa1a4465320e4c870)) +- added test count script ([ba4901d](https://github.com/ZebraDevs/zeta_flutter/commit/ba4901d74fff20d6319050f331c5f6d60f99b438)) +- avatar ([#183](https://github.com/ZebraDevs/zeta_flutter/issues/183)) ([ef050af](https://github.com/ZebraDevs/zeta_flutter/commit/ef050af9af8caf9552aa2b7aa1a4465320e4c870)) +- banner ([#184](https://github.com/ZebraDevs/zeta_flutter/issues/184)) ([7fba9b2](https://github.com/ZebraDevs/zeta_flutter/commit/7fba9b27e399fc3ac5ebc0c09908ae4c3be92e3c)) +- banner tests ([7fba9b2](https://github.com/ZebraDevs/zeta_flutter/commit/7fba9b27e399fc3ac5ebc0c09908ae4c3be92e3c)) +- changed extension test to reflect changes ([ef050af](https://github.com/ZebraDevs/zeta_flutter/commit/ef050af9af8caf9552aa2b7aa1a4465320e4c870)) +- changed the iconbutton to a ZetaIcon for golden tests ([7fba9b2](https://github.com/ZebraDevs/zeta_flutter/commit/7fba9b27e399fc3ac5ebc0c09908ae4c3be92e3c)) +- comms goldens ([af95815](https://github.com/ZebraDevs/zeta_flutter/commit/af958159b3e4f3fad06c24e64983aff5861a9482)) +- Fix bug in golden tests that meant they failed on windows ([#177](https://github.com/ZebraDevs/zeta_flutter/issues/177)) ([a77211a](https://github.com/ZebraDevs/zeta_flutter/commit/a77211a9fd33dfee170605a33098e9df6d634be2)) +- implemented helper function in avatar and banner tests ([ba4901d](https://github.com/ZebraDevs/zeta_flutter/commit/ba4901d74fff20d6319050f331c5f6d60f99b438)) +- improved banner tests ([7fba9b2](https://github.com/ZebraDevs/zeta_flutter/commit/7fba9b27e399fc3ac5ebc0c09908ae4c3be92e3c)) +- moved script files to different PR ([ba4901d](https://github.com/ZebraDevs/zeta_flutter/commit/ba4901d74fff20d6319050f331c5f6d60f99b438)) +- organizing tests into groups ([#188](https://github.com/ZebraDevs/zeta_flutter/issues/188)) ([ba4901d](https://github.com/ZebraDevs/zeta_flutter/commit/ba4901d74fff20d6319050f331c5f6d60f99b438)) +- removed comment that was cause github action to fail ([ef050af](https://github.com/ZebraDevs/zeta_flutter/commit/ef050af9af8caf9552aa2b7aa1a4465320e4c870)) +- removed unused import ([7fba9b2](https://github.com/ZebraDevs/zeta_flutter/commit/7fba9b27e399fc3ac5ebc0c09908ae4c3be92e3c)) +- replaced IconButton with Icon from golden tests ([7fba9b2](https://github.com/ZebraDevs/zeta_flutter/commit/7fba9b27e399fc3ac5ebc0c09908ae4c3be92e3c)) +- standardizing tests for badges ([ba4901d](https://github.com/ZebraDevs/zeta_flutter/commit/ba4901d74fff20d6319050f331c5f6d60f99b438)) +- started making banner tests ([7fba9b2](https://github.com/ZebraDevs/zeta_flutter/commit/7fba9b27e399fc3ac5ebc0c09908ae4c3be92e3c)) +- Wrote tests for ZetaStepper ([60a137f](https://github.com/ZebraDevs/zeta_flutter/commit/60a137f17dbeb989cf2a9f0b0dc3ee4b78ebb488)) +- Wrote tests for ZetaTopAppbar ([58fc7f5](https://github.com/ZebraDevs/zeta_flutter/commit/58fc7f5c3e40888ade19a30a5592e70f5340585a)) + +### 🧹 Miscellaneous Chores + +- **automated:** Lint commit and format ([ba4901d](https://github.com/ZebraDevs/zeta_flutter/commit/ba4901d74fff20d6319050f331c5f6d60f99b438)) +- **automated:** Lint commit and format ([ef050af](https://github.com/ZebraDevs/zeta_flutter/commit/ef050af9af8caf9552aa2b7aa1a4465320e4c870)) +- **automated:** Lint commit and format ([7fba9b2](https://github.com/ZebraDevs/zeta_flutter/commit/7fba9b27e399fc3ac5ebc0c09908ae4c3be92e3c)) +- **automated:** Lint commit and format ([af95815](https://github.com/ZebraDevs/zeta_flutter/commit/af958159b3e4f3fad06c24e64983aff5861a9482)) +- **automated:** Lint commit and format ([3ac64a7](https://github.com/ZebraDevs/zeta_flutter/commit/3ac64a7fa68de77d865c0f95745fdbac760d0984)) +- Merged goldenTest and goldenTestWithCallbacks. Also made the widgetType parameter optional and defaulted it to the type of widget. ([58fc7f5](https://github.com/ZebraDevs/zeta_flutter/commit/58fc7f5c3e40888ade19a30a5592e70f5340585a)) +- Update third party licenses ([cb37705](https://github.com/ZebraDevs/zeta_flutter/commit/cb3770520d21b6e1de4f0bb928d800b12fc49042)) + +## [0.15.2](https://github.com/ZebraDevs/zeta_flutter/compare/v0.15.1...v0.15.2) (2024-08-23) + +### 🪲 Bug Fixes + +- **UX-1141:** Integrating ZetaSemanticRadii ([#158](https://github.com/ZebraDevs/zeta_flutter/issues/158)) ([d2c57db](https://github.com/ZebraDevs/zeta_flutter/commit/d2c57db208184bdcb40631447661ff846ff6c447)) +- **UX-1171:** ExtendedTopAppBar padding without leading ([#157](https://github.com/ZebraDevs/zeta_flutter/issues/157)) ([280c63d](https://github.com/ZebraDevs/zeta_flutter/commit/280c63d53a9fbdc172617306c65effd3c2e7ad56)) +- **UX-1201:** Update Slidable button colors in ZetaChatItem ([#156](https://github.com/ZebraDevs/zeta_flutter/issues/156)) ([0b18961](https://github.com/ZebraDevs/zeta_flutter/commit/0b18961211b4f03c66f365d229616c3942a1f93a)) + +### ⛓️ Dependencies + +- **automated:** Update icons 2024-08-20 ([#153](https://github.com/ZebraDevs/zeta_flutter/issues/153)) ([6ed3978](https://github.com/ZebraDevs/zeta_flutter/commit/6ed397837b37df34fa3a59cd597a4909b09e56f4)) + +### 🧪 Tests + +- Add basic tests for ExtendedTopAppBar ([280c63d](https://github.com/ZebraDevs/zeta_flutter/commit/280c63d53a9fbdc172617306c65effd3c2e7ad56)) +- Added basic test cases for ZetaChatItem ([0b18961](https://github.com/ZebraDevs/zeta_flutter/commit/0b18961211b4f03c66f365d229616c3942a1f93a)) + +## [0.15.1](https://github.com/ZebraDevs/zeta_flutter/compare/v0.15.0...v0.15.1) (2024-08-19) + +### 🪲 Bug Fixes + +- Allow custom icons in ZetaFilterSelection ([#152](https://github.com/ZebraDevs/zeta_flutter/issues/152)) ([a493129](https://github.com/ZebraDevs/zeta_flutter/commit/a4931291504613d71a09584b442e28d34c71d4a6)) + +### ⛓️ Dependencies + +- Update pubspec ([faaa6fe](https://github.com/ZebraDevs/zeta_flutter/commit/faaa6fe5a77953e7b318386a0244f1e98cb88772)) + +### 🧹 Miscellaneous Chores + +- Remve support for deprecated buttonBarTheme in ThemeData ([a493129](https://github.com/ZebraDevs/zeta_flutter/commit/a4931291504613d71a09584b442e28d34c71d4a6)) + +## [0.15.0](https://github.com/ZebraDevs/zeta_flutter/compare/v0.14.1...v0.15.0) (2024-07-30) + +### ✨ New Features + +- Added focus node and keyboard type properties to ZetaTextInput ([d99d40c](https://github.com/ZebraDevs/zeta_flutter/commit/d99d40c0121fa5f323f1dc9dd85652f23e2dd845)) + +### 🪲 Bug Fixes + +- Add min/max values in slider ([7905388](https://github.com/ZebraDevs/zeta_flutter/commit/7905388e1aeffbc5e59bdfca4a7c5f53a18cd6cd)) +- Dropdown menus now scroll ([d99d40c](https://github.com/ZebraDevs/zeta_flutter/commit/d99d40c0121fa5f323f1dc9dd85652f23e2dd845)) +- FAB expanded state ([7905388](https://github.com/ZebraDevs/zeta_flutter/commit/7905388e1aeffbc5e59bdfca4a7c5f53a18cd6cd)) +- Make Navigation rail and list item stateless ([7905388](https://github.com/ZebraDevs/zeta_flutter/commit/7905388e1aeffbc5e59bdfca4a7c5f53a18cd6cd)) +- **UX-1129:** Accordion, Chip, StepperInput didUpdateState ([7905388](https://github.com/ZebraDevs/zeta_flutter/commit/7905388e1aeffbc5e59bdfca4a7c5f53a18cd6cd)) +- **UX-1129:** Add didUpdateStates to StatefulWidgets ([#138](https://github.com/ZebraDevs/zeta_flutter/issues/138)) ([7905388](https://github.com/ZebraDevs/zeta_flutter/commit/7905388e1aeffbc5e59bdfca4a7c5f53a18cd6cd)) + +### 📈 Documentation + +- **UX-1130:** Add dartdoc categories to classes ([#134](https://github.com/ZebraDevs/zeta_flutter/issues/134)) ([cdbd1d1](https://github.com/ZebraDevs/zeta_flutter/commit/cdbd1d1b38ea609dee852e98b9375b5e4e0c6878)) + +### ⛓️ Dependencies + +- Update flutter-code-quality to v1.0.6 ([074e11a](https://github.com/ZebraDevs/zeta_flutter/commit/074e11a0843e5db8eec0ea708b1ef5f2ac7ea8b4)) + +### 🧪 Tests + +- Accordion, Chip, StepperInput didUpdateState, ([7905388](https://github.com/ZebraDevs/zeta_flutter/commit/7905388e1aeffbc5e59bdfca4a7c5f53a18cd6cd)) +- FAB expanded state ([7905388](https://github.com/ZebraDevs/zeta_flutter/commit/7905388e1aeffbc5e59bdfca4a7c5f53a18cd6cd)) +- Improve existing accordion tests ([7905388](https://github.com/ZebraDevs/zeta_flutter/commit/7905388e1aeffbc5e59bdfca4a7c5f53a18cd6cd)) +- Min/max values in slider ([7905388](https://github.com/ZebraDevs/zeta_flutter/commit/7905388e1aeffbc5e59bdfca4a7c5f53a18cd6cd)) + +### 🧹 Miscellaneous Chores + +- Make some classes private that we don't need to export([#134](https://github.com/ZebraDevs/zeta_flutter/issues/134)) ([cdbd1d1](https://github.com/ZebraDevs/zeta_flutter/commit/cdbd1d1b38ea609dee852e98b9375b5e4e0c6878)) +- Refactor existing didUpdateWidgets to best practices - remove setStates and put super call first ([7905388](https://github.com/ZebraDevs/zeta_flutter/commit/7905388e1aeffbc5e59bdfca4a7c5f53a18cd6cd)) + +## [0.14.1](https://github.com/ZebraDevs/zeta_flutter/compare/v0.14.0...v0.14.1) (2024-07-15) + +### ✨ New Features + +- Add FocusNode to ZetaSearchBar ([#132](https://github.com/ZebraDevs/zeta_flutter/issues/132)) ([02f5d4c](https://github.com/ZebraDevs/zeta_flutter/commit/02f5d4cd3dcb5dd05039e945748b08cffd15a80e)) +- **UX-1118:** Add basic semantics for all components ([#131](https://github.com/ZebraDevs/zeta_flutter/issues/131)) ([9c26ef1](https://github.com/ZebraDevs/zeta_flutter/commit/9c26ef1e776476f3ba83d28dc02eb8db60650865)) + +### 🪲 Bug Fixes + +- Update size of thumb on slider ([9c26ef1](https://github.com/ZebraDevs/zeta_flutter/commit/9c26ef1e776476f3ba83d28dc02eb8db60650865)) + +### 🧪 Tests + +- adds tests for ZetaSearchBar ([02f5d4c](https://github.com/ZebraDevs/zeta_flutter/commit/02f5d4cd3dcb5dd05039e945748b08cffd15a80e)) +- Update tests for recently changed files ([9c26ef1](https://github.com/ZebraDevs/zeta_flutter/commit/9c26ef1e776476f3ba83d28dc02eb8db60650865)) + +### 🧹 Miscellaneous Chores + +- release 0.14.1 ([1b06765](https://github.com/ZebraDevs/zeta_flutter/commit/1b06765a4621ad813aab3f7448b51b50d1582e3d)) + +## [0.14.0](https://github.com/ZebraDevs/zeta_flutter/compare/v0.13.0...v0.14.0) (2024-07-08) + +### ✨ New Features + +- **UX-1121:** Added ZetaProvider.base to allow for better developer experience ([#123](https://github.com/ZebraDevs/zeta_flutter/issues/123)) ([3cc79b0](https://github.com/ZebraDevs/zeta_flutter/commit/3cc79b04366dedddb2551ef46d1bf1aa5391b5ea)) +- ZetaIcon component added ([#121](https://github.com/ZebraDevs/zeta_flutter/issues/121)) ([3b2ddef](https://github.com/ZebraDevs/zeta_flutter/commit/3b2ddefe37a79b0191cbe87910f398097dd93f89)) + +### 🪲 Bug Fixes + +- Improve semantics for ChatListItem ([#128](https://github.com/ZebraDevs/zeta_flutter/issues/128)) ([1690a30](https://github.com/ZebraDevs/zeta_flutter/commit/1690a30422567f650f9d31deab8bbfbde0274406)) + +### 📈 Documentation + +- Update widget book theme ([#126](https://github.com/ZebraDevs/zeta_flutter/issues/126)) ([8d9d429](https://github.com/ZebraDevs/zeta_flutter/commit/8d9d429f7f7fa91d5225b8ce8ec4d91426d27aca)) + +### ⛓️ Dependencies + +- Update zeta-icon library ([#129](https://github.com/ZebraDevs/zeta_flutter/issues/129)) ([a6f72d8](https://github.com/ZebraDevs/zeta_flutter/commit/a6f72d8cbe47394733603f402bb978f640612e90)) + +### 🧪 Tests + +- Added test for ZetaIcon ([3b2ddef](https://github.com/ZebraDevs/zeta_flutter/commit/3b2ddefe37a79b0191cbe87910f398097dd93f89)) +- Update golden tests for rounded state change ([3cc79b0](https://github.com/ZebraDevs/zeta_flutter/commit/3cc79b04366dedddb2551ef46d1bf1aa5391b5ea)) + +### 🧹 Miscellaneous Chores + +- Add rounded switch to example app ([3cc79b0](https://github.com/ZebraDevs/zeta_flutter/commit/3cc79b04366dedddb2551ef46d1bf1aa5391b5ea)) +- typos ([ff7ecd8](https://github.com/ZebraDevs/zeta_flutter/commit/ff7ecd8e80264a3aca47abaefe79c3f2c04c5e93)) +- Update android app ([ff7ecd8](https://github.com/ZebraDevs/zeta_flutter/commit/ff7ecd8e80264a3aca47abaefe79c3f2c04c5e93)) + +## [0.13.0](https://github.com/ZebraDevs/zeta_flutter/compare/v0.12.0...v0.13.0) (2024-06-28) + +### ✨ New Features + +- **UX-1117:** Semantic tags for SYNC ([#119](https://github.com/ZebraDevs/zeta_flutter/issues/119)) ([1177222](https://github.com/ZebraDevs/zeta_flutter/commit/1177222bb50904dd5a17c12ccf77994239c4f881)) + +### 🪲 Bug Fixes + +- add braces to fab color ([#110](https://github.com/ZebraDevs/zeta_flutter/issues/110)) ([82c5feb](https://github.com/ZebraDevs/zeta_flutter/commit/82c5febf32a0529493d886e3f8c3290071bbce53)) +- Changed the functionality of dropdown sizes. Mini now sets the width of the menu to its largest child, and standard will set the minimum width to the width of the dropdown's parent. ([d9bfe19](https://github.com/ZebraDevs/zeta_flutter/commit/d9bfe19f7b32daac5963e628e7d3499d07ff17c1)) +- Removed the default offest from dropdown and added an offest. ([d9bfe19](https://github.com/ZebraDevs/zeta_flutter/commit/d9bfe19f7b32daac5963e628e7d3499d07ff17c1)) +- syntax error in action ([#118](https://github.com/ZebraDevs/zeta_flutter/issues/118)) ([a5fee0b](https://github.com/ZebraDevs/zeta_flutter/commit/a5fee0b4b30db040b400c86db1acd217a10ddc76)) +- **UX-1006:** Gave dropdown functionality to dropdown buttons in button groups ([#115](https://github.com/ZebraDevs/zeta_flutter/issues/115)) ([d9bfe19](https://github.com/ZebraDevs/zeta_flutter/commit/d9bfe19f7b32daac5963e628e7d3499d07ff17c1)) + +## [0.12.0](https://github.com/ZebraDevs/zeta_flutter/compare/v0.11.2...v0.12.0) (2024-06-24) + +### ✨ New Features + +- added inkwells to checkbox and radio button ([a8b31d3](https://github.com/ZebraDevs/zeta_flutter/commit/a8b31d32fbe0f0ea3943bd8f03478d3bb4b6d4b5)) +- create slider component ([#53](https://github.com/ZebraDevs/zeta_flutter/issues/53)) ([6394ef6](https://github.com/ZebraDevs/zeta_flutter/commit/6394ef6b2a96bd919149e0d9e139815615ddf715)) +- Created dropdown list item ([#101](https://github.com/ZebraDevs/zeta_flutter/issues/101)) ([868b26c](https://github.com/ZebraDevs/zeta_flutter/commit/868b26cfbd64a521d6726e3271421a052257ec06)) +- Created list item variants ([#98](https://github.com/ZebraDevs/zeta_flutter/issues/98)) ([a8b31d3](https://github.com/ZebraDevs/zeta_flutter/commit/a8b31d32fbe0f0ea3943bd8f03478d3bb4b6d4b5)) +- Created ZetaAnimationDuration tokens ([868b26c](https://github.com/ZebraDevs/zeta_flutter/commit/868b26cfbd64a521d6726e3271421a052257ec06)) +- created ZetaList to add borders to list items ([a8b31d3](https://github.com/ZebraDevs/zeta_flutter/commit/a8b31d32fbe0f0ea3943bd8f03478d3bb4b6d4b5)) + +### 🪲 Bug Fixes + +- minor bugs on ZetaChatItem ([#105](https://github.com/ZebraDevs/zeta_flutter/issues/105)) ([c37e51d](https://github.com/ZebraDevs/zeta_flutter/commit/c37e51d1b2be40e03d35f63db79939247315696c)) +- removed hover color on disabled radio buttons ([a8b31d3](https://github.com/ZebraDevs/zeta_flutter/commit/a8b31d32fbe0f0ea3943bd8f03478d3bb4b6d4b5)) +- **UX-1078:** fixed button group disabled color. ([88d82d8](https://github.com/ZebraDevs/zeta_flutter/commit/88d82d8ae85340cc4c32025c478b25bb955fe8e2)) +- **UX-1080:** Add snackbar action bold text ([88d82d8](https://github.com/ZebraDevs/zeta_flutter/commit/88d82d8ae85340cc4c32025c478b25bb955fe8e2)) +- **UX-1081:** Change snackbar action color ([88d82d8](https://github.com/ZebraDevs/zeta_flutter/commit/88d82d8ae85340cc4c32025c478b25bb955fe8e2)) +- **UX-977:** change indicator border color ([88d82d8](https://github.com/ZebraDevs/zeta_flutter/commit/88d82d8ae85340cc4c32025c478b25bb955fe8e2)) + +### 📈 Documentation + +- Added guides for golden and unit testing ([4b41f73](https://github.com/ZebraDevs/zeta_flutter/commit/4b41f738da8d9c45783159a0b8e36299f9cf6df3)) +- Fix documentation macros ([c37e51d](https://github.com/ZebraDevs/zeta_flutter/commit/c37e51d1b2be40e03d35f63db79939247315696c)) + +### ⛓️ Dependencies + +- Update zeta-icon library ([#107](https://github.com/ZebraDevs/zeta_flutter/issues/107)) ([ccaf8a9](https://github.com/ZebraDevs/zeta_flutter/commit/ccaf8a98123c46f3415f02fad5df655a91b3ac63)) + +### 🧪 Tests + +- 100% test coverage for theme, utils, Zeta and ZetaProvider ([4b41f73](https://github.com/ZebraDevs/zeta_flutter/commit/4b41f738da8d9c45783159a0b8e36299f9cf6df3)) +- Added ZetaTooltip test ([4b41f73](https://github.com/ZebraDevs/zeta_flutter/commit/4b41f738da8d9c45783159a0b8e36299f9cf6df3)) +- Organise tests folder, and increase code coverage and add goldens for existing tests ([0e2d8be](https://github.com/ZebraDevs/zeta_flutter/commit/0e2d8be214c499cb547fb49da3791a606ec839b7)) + +### 🧹 Miscellaneous Chores + +- organise existing tests ([#108](https://github.com/ZebraDevs/zeta_flutter/issues/108)) ([0e2d8be](https://github.com/ZebraDevs/zeta_flutter/commit/0e2d8be214c499cb547fb49da3791a606ec839b7)) +- rename debounce file ([c37e51d](https://github.com/ZebraDevs/zeta_flutter/commit/c37e51d1b2be40e03d35f63db79939247315696c)) +- Update widgetbook to pull readme from github ([c37e51d](https://github.com/ZebraDevs/zeta_flutter/commit/c37e51d1b2be40e03d35f63db79939247315696c)) + +## [0.11.2](https://github.com/ZebraDevs/zeta_flutter/compare/v0.11.1...v0.11.2) (2024-06-11) + +### 🪲 Bug Fixes + +- revert avatar size enum change ([b387a1b](https://github.com/ZebraDevs/zeta_flutter/commit/b387a1b22642dd5f23bed00e756badb272d5d420)) + +## [0.11.1](https://github.com/ZebraDevs/zeta_flutter/compare/v0.11.0...v0.11.1) (2024-06-10) + +### 🪲 Bug Fixes + +- amend token-names ([9430ca1](https://github.com/ZebraDevs/zeta_flutter/commit/9430ca13f4694034c94a619ccaa3b6d48dfa9243)) + +## [0.11.0](https://github.com/ZebraDevs/zeta_flutter/compare/v0.10.0...v0.11.0) (2024-06-10) + +### ✨ New Features + +- Created Select input ([#89](https://github.com/ZebraDevs/zeta_flutter/issues/89)) ([6ac8c4d](https://github.com/ZebraDevs/zeta_flutter/commit/6ac8c4deb449e247cc2dddee4fa98b921c9a16d9)) +- Dropdown now has a builder function to allow building custom children ([6ac8c4d](https://github.com/ZebraDevs/zeta_flutter/commit/6ac8c4deb449e247cc2dddee4fa98b921c9a16d9)) +- Notification list item ([#45](https://github.com/ZebraDevs/zeta_flutter/issues/45)) ([a89c615](https://github.com/ZebraDevs/zeta_flutter/commit/a89c6155866f7418f72f7099b3c7309df7bf5184)) + +### 🪲 Bug Fixes + +- avatar icon badge background color null fallback ([2dc8fe4](https://github.com/ZebraDevs/zeta_flutter/commit/2dc8fe4ea5f7c4b919845c55b6355af2ecaaa594)) +- breadcrumb rounded icon ([2dc8fe4](https://github.com/ZebraDevs/zeta_flutter/commit/2dc8fe4ea5f7c4b919845c55b6355af2ecaaa594)) +- default avatar size in chip ([2dc8fe4](https://github.com/ZebraDevs/zeta_flutter/commit/2dc8fe4ea5f7c4b919845c55b6355af2ecaaa594)) +- Dropdown focused behavior ([#46](https://github.com/ZebraDevs/zeta_flutter/issues/46)) ([1930723](https://github.com/ZebraDevs/zeta_flutter/commit/1930723269049092703cfbe7ffd0dd55236647f3)) +- Dropdown rendering direction ([#50](https://github.com/ZebraDevs/zeta_flutter/issues/50)) ([4b5c568](https://github.com/ZebraDevs/zeta_flutter/commit/4b5c568d84f42b89926b012e218eba16202907a4)) +- navigation bar text color ([2dc8fe4](https://github.com/ZebraDevs/zeta_flutter/commit/2dc8fe4ea5f7c4b919845c55b6355af2ecaaa594)) +- Select input menu appears in the correct position below the input ([6ac8c4d](https://github.com/ZebraDevs/zeta_flutter/commit/6ac8c4deb449e247cc2dddee4fa98b921c9a16d9)) +- Spacings + Radii tokens ([#48](https://github.com/ZebraDevs/zeta_flutter/issues/48)) ([7db99a9](https://github.com/ZebraDevs/zeta_flutter/commit/7db99a939fcde9a22886f3ae5e88b457423b2480)) +- Updating checkbox to match designs ([#83](https://github.com/ZebraDevs/zeta_flutter/issues/83)) ([05a32ac](https://github.com/ZebraDevs/zeta_flutter/commit/05a32ac386424c881c63d4f97e6a9ab3b4bb0df0)) + +### 📈 Documentation + +- adding link to template repo ([c0a9668](https://github.com/ZebraDevs/zeta_flutter/commit/c0a9668a1c6b99aa5d45075aebddf0ea4d8f640f)) +- remove default size in widgetbook ([2dc8fe4](https://github.com/ZebraDevs/zeta_flutter/commit/2dc8fe4ea5f7c4b919845c55b6355af2ecaaa594)) +- update widgetbook organization and styling ([2dc8fe4](https://github.com/ZebraDevs/zeta_flutter/commit/2dc8fe4ea5f7c4b919845c55b6355af2ecaaa594)) +- widgetbook hide addons panel ([2dc8fe4](https://github.com/ZebraDevs/zeta_flutter/commit/2dc8fe4ea5f7c4b919845c55b6355af2ecaaa594)) + +### 🧹 Miscellaneous Chores + +- Add deprecation warnings to old tokens ([c0a9668](https://github.com/ZebraDevs/zeta_flutter/commit/c0a9668a1c6b99aa5d45075aebddf0ea4d8f640f)) +- organise ([#49](https://github.com/ZebraDevs/zeta_flutter/issues/49)) ([2dc8fe4](https://github.com/ZebraDevs/zeta_flutter/commit/2dc8fe4ea5f7c4b919845c55b6355af2ecaaa594)) +- rename ZetaBadge to ZetaLabel to match designs ([2dc8fe4](https://github.com/ZebraDevs/zeta_flutter/commit/2dc8fe4ea5f7c4b919845c55b6355af2ecaaa594)) +- rename ZetaSystemBanner to ZetaBanner to match designs ([2dc8fe4](https://github.com/ZebraDevs/zeta_flutter/commit/2dc8fe4ea5f7c4b919845c55b6355af2ecaaa594)) +- reorganise directories to match designs ([2dc8fe4](https://github.com/ZebraDevs/zeta_flutter/commit/2dc8fe4ea5f7c4b919845c55b6355af2ecaaa594)) + +## [0.10.0](https://github.com/ZebraDevs/zeta_flutter/compare/v0.9.1...v0.10.0) (2024-05-24) + +### ✨ New Features + +- Created text input ([#78](https://github.com/ZebraDevs/zeta_flutter/issues/78)) ([57c72f4](https://github.com/ZebraDevs/zeta_flutter/commit/57c72f4f4037e46327a21183ccd87a2daf03b704)) +- Update colors tokens ([#81](https://github.com/ZebraDevs/zeta_flutter/issues/81)) ([418cc1d](https://github.com/ZebraDevs/zeta_flutter/commit/418cc1d16e2be4a2f4e28cbf44f507f000be469a)) + +### 📈 Documentation + +- Add introduction page to widgetbook ([f1eb918](https://github.com/ZebraDevs/zeta_flutter/commit/f1eb9181971368059393e94fe298b7580c27009b)) +- Add new addons to widgetbook ([f1eb918](https://github.com/ZebraDevs/zeta_flutter/commit/f1eb9181971368059393e94fe298b7580c27009b)) + +### ⛓️ Dependencies + +- Update example app / widgetbook deps ([f1eb918](https://github.com/ZebraDevs/zeta_flutter/commit/f1eb9181971368059393e94fe298b7580c27009b)) + +### 🧹 Miscellaneous Chores + +- Add deprecation warning on breaking colors ([418cc1d](https://github.com/ZebraDevs/zeta_flutter/commit/418cc1d16e2be4a2f4e28cbf44f507f000be469a)) +- Add version to example app and widgetbook ([#79](https://github.com/ZebraDevs/zeta_flutter/issues/79)) ([f1eb918](https://github.com/ZebraDevs/zeta_flutter/commit/f1eb9181971368059393e94fe298b7580c27009b)) +- update example app web implementation ([f1eb918](https://github.com/ZebraDevs/zeta_flutter/commit/f1eb9181971368059393e94fe298b7580c27009b)) + +## [0.9.1](https://github.com/ZebraDevs/zeta_flutter/compare/v0.9.0...v0.9.1) (2024-05-20) + +### Bug Fixes + +- dependencies ([#76](https://github.com/ZebraDevs/zeta_flutter/issues/76)) ([db8345a](https://github.com/ZebraDevs/zeta_flutter/commit/db8345a2c0452c014dd8869a9df52c89c828b757)) + +## [0.9.0](https://github.com/ZebraDevs/zeta_flutter/compare/v0.8.2...v0.9.0) (2024-05-16) + +### Features + +- Created stepper input ([#67](https://github.com/ZebraDevs/zeta_flutter/issues/67)) ([ca51b1f](https://github.com/ZebraDevs/zeta_flutter/commit/ca51b1f71b4b0df621d1ce6038e3725d6e85432f)) +- Created Time Input ([#75](https://github.com/ZebraDevs/zeta_flutter/issues/75)) ([fb7b629](https://github.com/ZebraDevs/zeta_flutter/commit/fb7b6295dfc507a0a94de28cc7b0d11f338db13e)) +- Global Header (zebrafed[#38](https://github.com/ZebraDevs/zeta_flutter/issues/38)) ([0822d4f](https://github.com/ZebraDevs/zeta_flutter/commit/0822d4f070c6997a6599442e5ce3391a8f26e002)) + +### Bug Fixes + +- breadcrumb rounded icon ([c46788d](https://github.com/ZebraDevs/zeta_flutter/commit/c46788d46b77d785fa023954219c53d51fa7952b)) +- Button update (zebrafed[#42](https://github.com/ZebraDevs/zeta_flutter/issues/42)) ([0822d4f](https://github.com/ZebraDevs/zeta_flutter/commit/0822d4f070c6997a6599442e5ce3391a8f26e002)) +- Correct colors on Radio button hover / focus states ([c46788d](https://github.com/ZebraDevs/zeta_flutter/commit/c46788d46b77d785fa023954219c53d51fa7952b)) +- enable mouse region on desktop for selectable areas ([c46788d](https://github.com/ZebraDevs/zeta_flutter/commit/c46788d46b77d785fa023954219c53d51fa7952b)) +- navigation bar text color ([c46788d](https://github.com/ZebraDevs/zeta_flutter/commit/c46788d46b77d785fa023954219c53d51fa7952b)) +- Remove calls to zeta in button that are not needed ([c46788d](https://github.com/ZebraDevs/zeta_flutter/commit/c46788d46b77d785fa023954219c53d51fa7952b)) +- UX-1090 - Add expansion option for TopAppBar ([#73](https://github.com/ZebraDevs/zeta_flutter/issues/73)) ([ab36e8e](https://github.com/ZebraDevs/zeta_flutter/commit/ab36e8e35566835711cc88e7b05b6460ef9453ea)) + +## [0.8.2](https://github.com/ZebraDevs/zeta_flutter/compare/v0.8.1...v0.8.2) (2024-05-08) + +### Bug Fixes + +- revert intl to 0.18.1 for wider compatibility ([#66](https://github.com/ZebraDevs/zeta_flutter/issues/66)) ([6831c2f](https://github.com/ZebraDevs/zeta_flutter/commit/6831c2fa017457414339f12ec81b302e231d4496)) + +## [0.8.1](https://github.com/ZebraDevs/zeta_flutter/compare/v0.8.0...v0.8.1) (2024-05-07) + +### Bug Fixes + +- Remove FirstWhereOrNull as it causes conflicts with dart:collection ([#62](https://github.com/ZebraDevs/zeta_flutter/issues/62)) ([7b9a737](https://github.com/ZebraDevs/zeta_flutter/commit/7b9a737956b43b4566e3909060d588baae79b50b)) + +## [0.8.0](https://github.com/ZebraDevs/zeta_flutter/compare/v0.7.0...v0.8.0) (2024-05-02) + +### Features + +- Chat Item ([#37](https://github.com/ZebraDevs/zeta_flutter/issues/37)) ([c2dd630](https://github.com/ZebraDevs/zeta_flutter/commit/c2dd6308d57ebda6f715bef1225ad326ab4ea64b)) +- Filter Selection ([#36](https://github.com/ZebraDevs/zeta_flutter/issues/36)) ([53af9e7](https://github.com/ZebraDevs/zeta_flutter/commit/53af9e77f6909236a968aa5d3c6a32ba04712fda)) +- Select input ([#35](https://github.com/ZebraDevs/zeta_flutter/issues/35)) ([07ddba1](https://github.com/ZebraDevs/zeta_flutter/commit/07ddba1550d0a201477ef738064a2a251ecdfdeb)) +- ZetaScreenHeaderBar ([#39](https://github.com/ZebraDevs/zeta_flutter/issues/39)) ([e07fc48](https://github.com/ZebraDevs/zeta_flutter/commit/e07fc482e8a4ed06a33b8aa22388456f7e1cf5fc)) + +### Bug Fixes + +- Avatar update ([#30](https://github.com/ZebraDevs/zeta_flutter/issues/30)) ([3f51508](https://github.com/ZebraDevs/zeta_flutter/commit/3f5150814a2372381a91816fb4e0300c91965421)) +- Update banners ([#41](https://github.com/ZebraDevs/zeta_flutter/issues/41)) ([0a881b5](https://github.com/ZebraDevs/zeta_flutter/commit/0a881b580f1f52402ae15b55cc72b8c26027254b)) + +## [0.7.0](https://github.com/ZebraDevs/zeta_flutter/compare/v0.6.0...v0.7.0) (2024-04-25) + +### Features + +- AppBar ([#19](https://github.com/ZebraDevs/zeta_flutter/issues/19)) ([96f4aad](https://github.com/ZebraDevs/zeta_flutter/commit/96f4aad15d5ba90956860a32b63e63b7dffd9ba7)) +- Component dialog ([#18](https://github.com/ZebraDevs/zeta_flutter/issues/18)) ([7b762e6](https://github.com/ZebraDevs/zeta_flutter/commit/7b762e6c258057d5e3f07db0381cb48a631a7299)) +- Component dialog ([#22](https://github.com/ZebraDevs/zeta_flutter/issues/22)) ([8dc5be2](https://github.com/ZebraDevs/zeta_flutter/commit/8dc5be2898883a6eee751f8f1ad3372a25aaa222)) +- Component phone input ([#25](https://github.com/ZebraDevs/zeta_flutter/issues/25)) ([a4f7b89](https://github.com/ZebraDevs/zeta_flutter/commit/a4f7b899ef8919c12962a716281be985d929dd24)) +- Component phone input ([#34](https://github.com/ZebraDevs/zeta_flutter/issues/34)) ([d19547b](https://github.com/ZebraDevs/zeta_flutter/commit/d19547b15ce4687927d22ac1667250806178dcbc)) +- Component search bar ([#29](https://github.com/ZebraDevs/zeta_flutter/issues/29)) ([837f482](https://github.com/ZebraDevs/zeta_flutter/commit/837f4822f26430ce126787f90f814a2925a6a045)) +- Component tooltip ([#33](https://github.com/ZebraDevs/zeta_flutter/issues/33)) ([85cab8e](https://github.com/ZebraDevs/zeta_flutter/commit/85cab8ed440dde3a1d088ba9f2dcf9c901b60b97)) +- **main:** AppBar ([#19](https://github.com/ZebraDevs/zeta_flutter/issues/19)) ([eefcb61](https://github.com/ZebraDevs/zeta_flutter/commit/eefcb616044975605ea36e19c9fb9d314c05ee4c)) +- **main:** Segmented control ([#26](https://github.com/ZebraDevs/zeta_flutter/issues/26)) ([adb93ff](https://github.com/ZebraDevs/zeta_flutter/commit/adb93ffbf291d8ac915c6cf651f485d9f72488cb)) +- Navigation rail ([#27](https://github.com/ZebraDevs/zeta_flutter/issues/27)) ([8d57df3](https://github.com/ZebraDevs/zeta_flutter/commit/8d57df3236179c6bbdde72bb814e00a4cd6c954c)) +- Pagination ([#46](https://github.com/ZebraDevs/zeta_flutter/issues/46)) ([d782481](https://github.com/ZebraDevs/zeta_flutter/commit/d7824815e7d94ca9b9eeaaba2858fcfa14085e0e)) +- Segmented control ([#26](https://github.com/ZebraDevs/zeta_flutter/issues/26)) ([090ffc7](https://github.com/ZebraDevs/zeta_flutter/commit/090ffc7cb32471a7522e134b37747fb5336fe230)) + +## [0.6.0](https://github.com/ZebraDevs/zeta_flutter/compare/v0.5.0...v0.6.0) (2024-04-12) + +### Features + +- Add List Item ([#5](https://github.com/ZebraDevs/zeta_flutter/issues/5)) ([64879e1](https://github.com/ZebraDevs/zeta_flutter/commit/64879e1756b1031c416861216dc0199b33a78827)) +- **main:** SnackBar ([#10](https://github.com/ZebraDevs/zeta_flutter/issues/10)) ([cbf46d9](https://github.com/ZebraDevs/zeta_flutter/commit/cbf46d97acf2a5533d73456f142b01b9ed6352d1)) +- **main:** Stepper ([#17](https://github.com/ZebraDevs/zeta_flutter/issues/17)) ([cab9f85](https://github.com/ZebraDevs/zeta_flutter/commit/cab9f859f288aa21769d6783e70aa2525fdaf0cd)) +- **main:** Tabs ([#11](https://github.com/ZebraDevs/zeta_flutter/issues/11)) ([31bc20a](https://github.com/ZebraDevs/zeta_flutter/commit/31bc20a7ee22844bf272b633f44994e1d6e50bc4)) + +### Bug Fixes + +- Fix button group immutability ([#1](https://github.com/ZebraDevs/zeta_flutter/issues/1)) ([0fdf9da](https://github.com/ZebraDevs/zeta_flutter/commit/0fdf9da2520d65decd80cfb3a976daff74af38b0)) +- **main:** ListItem disabled color ([#8](https://github.com/ZebraDevs/zeta_flutter/issues/8)) ([ac996d9](https://github.com/ZebraDevs/zeta_flutter/commit/ac996d942450e8004d920c2a93b8009d0b5960ee)) +- switch on web ([#14](https://github.com/ZebraDevs/zeta_flutter/issues/14)) ([554fe7f](https://github.com/ZebraDevs/zeta_flutter/commit/554fe7f54fc3099f140bf7648fe78ce5e15d5b0f)) +- Widgetbook icons and reusable snippets ([#35](https://github.com/ZebraDevs/zeta_flutter/issues/35)) ([0d23f7c](https://github.com/ZebraDevs/zeta_flutter/commit/0d23f7cbb9fdbb6114b47837b99b83829e74c79a)) + +## [0.5.0](https://github.com/ZebraDevs/zeta_flutter/compare/v0.4.0...v0.5.0) (2024-03-05) + +### Features + +- Dial Pad ([#30](https://github.com/ZebraDevs/zeta_flutter/issues/30)) ([f16df26](https://github.com/ZebraDevs/zeta_flutter/commit/f16df261feb703b20147c4ba406ed1fa3450348b)) +- Icon button ([#26](https://github.com/ZebraDevs/zeta_flutter/issues/26)) ([88cd90a](https://github.com/ZebraDevs/zeta_flutter/commit/88cd90a8180df39e3e44c168ca028055333643a6)) +- Navigation bar ([#32](https://github.com/ZebraDevs/zeta_flutter/issues/32)) ([36a60e7](https://github.com/ZebraDevs/zeta_flutter/commit/36a60e7087af7d38bfd64578009056d85b0f1e56)) +- Progress Bar ([#29](https://github.com/ZebraDevs/zeta_flutter/issues/29)) ([d18dbd2](https://github.com/ZebraDevs/zeta_flutter/commit/d18dbd276177c368e5d5cf80e482ea11564270a9)) +- update icons/0.1.65 ([#24](https://github.com/ZebraDevs/zeta_flutter/issues/24)) ([9f0e7f2](https://github.com/ZebraDevs/zeta_flutter/commit/9f0e7f286470c99722e928e726b5a9eb1b0b7b8b)) +- Widgetbook hot reload ([#33](https://github.com/ZebraDevs/zeta_flutter/issues/33)) ([44b8f98](https://github.com/ZebraDevs/zeta_flutter/commit/44b8f989850aaa1a6d862526bad26a01ffad361a)) + +## [0.4.0](https://github.com/ZebraDevs/zeta_flutter/compare/v0.3.0...v0.4.0) (2024-02-14) + +### Features + +- **type:** Add xSmall and conform to latest figma designs. ([17b2299](https://github.com/ZebraDevs/zeta_flutter/commit/17b22994ae27d0abd1da7f756f49b46248b8b4b7)) + +### Bug Fixes + +- **actions:** Updated actions to push changelog to zeta. ([#6](https://github.com/ZebraDevs/zeta_flutter/issues/6)) ([f7a8d9a](https://github.com/ZebraDevs/zeta_flutter/commit/f7a8d9a2ba078bf08fe80de07f6e9c871af9e451)) +- Widgetbook run / build ([#15](https://github.com/ZebraDevs/zeta_flutter/issues/15)) ([a2347ad](https://github.com/ZebraDevs/zeta_flutter/commit/a2347ad7a43a77e398571f3be26948585e22c068)) +- WIdgetbook theme ([#16](https://github.com/ZebraDevs/zeta_flutter/issues/16)) ([5e1c48a](https://github.com/ZebraDevs/zeta_flutter/commit/5e1c48aca84bbe49233deca10f64dcd6e8b8eb59)) + +## [0.3.0](https://github.com/ZebraDevs/zeta_flutter/compare/zeta_flutter-v0.2.0...zeta_flutter-v0.3.0) (2024-02-05) + +### Features + +- **type:** Add xSmall and conform to latest figma designs. ([17b2299](https://github.com/ZebraDevs/zeta_flutter/commit/17b22994ae27d0abd1da7f756f49b46248b8b4b7)) + +### Bug Fixes + +- **actions:** Updated actions to push changelog to zeta. ([#6](https://github.com/ZebraDevs/zeta_flutter/issues/6)) ([f7a8d9a](https://github.com/ZebraDevs/zeta_flutter/commit/f7a8d9a2ba078bf08fe80de07f6e9c871af9e451)) + +## [0.1.1+22] - 2024-01-19 + +### :boom: BREAKING CHANGES + +- due to [`7b543ac`](https://github.com/zebratechnologies/zeta-flutter/commit/7b543ac7b92dc53a866af4de313c36b5728e912e) - Remove legacy code _(PR [#51](https://github.com/zebratechnologies/zeta-flutter/pull/51) by [@thelukewalton](https://github.com/thelukewalton))_: + + Removed ZetaGrid and ZetaSpacing components, renamed widget padding extensions + https://jira.zebra.com/browse/UX-910 + Remove ZetaGrid, ZetaSpacing and ZetaText widgets as these are no longer + part of the library. Functionality is retained in some cases (text + styles, padding extensions) but widgets themselves are removed. + + *** + +### :sparkles: New Features + +- [`7b543ac`](https://github.com/zebratechnologies/zeta-flutter/commit/7b543ac7b92dc53a866af4de313c36b5728e912e) - Remove legacy code _(PR [#51](https://github.com/zebratechnologies/zeta-flutter/pull/51) by [@thelukewalton](https://github.com/thelukewalton))_ + +### :wrench: Chores + +- [`ccbdeb9`](https://github.com/zebratechnologies/zeta-flutter/commit/ccbdeb93b6995eb3a3ff66562d957bc7e2470432) - Update Widgetbook to correct functionality _(PR [#52](https://github.com/zebratechnologies/zeta-flutter/pull/52) by [@thelukewalton](https://github.com/thelukewalton))_ + +## [0.1.1+21] - 2024-01-18 + +### :sparkles: New Features + +- [`6ae1269`](https://github.com/zebratechnologies/zeta-flutter/commit/6ae1269422180bbf2ecbfd05814969bfcbb725f1) - Update text styles to match latest designs _(PR [#50](https://github.com/zebratechnologies/zeta-flutter/pull/50) by [@thelukewalton](https://github.com/thelukewalton))_ +- [`977d7e6`](https://github.com/zebratechnologies/zeta-flutter/commit/977d7e6f7cb0c2b67085ab40f5cf1d410e5680c8) - Remove legacy code _(PR [#51](https://github.com/zebratechnologies/zeta-flutter/pull/51) by [@thelukewalton](https://github.com/thelukewalton))_ + +## [0.1.1+20] - 2024-01-17 + +### :sparkles: New Features + +- [`35d1d7e`](https://github.com/zebratechnologies/zeta-flutter/commit/35d1d7eed509d4b89593c17e2a48a4a2c79a6ce4) - Update text styles to match latest designs _(PR [#50](https://github.com/zebratechnologies/zeta-flutter/pull/50) by [@thelukewalton](https://github.com/thelukewalton))_ + +### :wrench: Chores + +- [`6787220`](https://github.com/zebratechnologies/zeta-flutter/commit/67872203f0dc96de02e6945f0ac4409f95872262) - Organize ilb/ to match web _(PR [#49](https://github.com/zebratechnologies/zeta-flutter/pull/49) by [@thelukewalton](https://github.com/thelukewalton))_ + +## [0.1.1+19] - 2024-01-17 + +### :wrench: Chores + +- [`d1c0125`](https://github.com/zebratechnologies/zeta-flutter/commit/d1c012523e16ebbf3f38c7028598660cfc7b7ea9) - Organize ilb/ to match web _(PR [#49](https://github.com/zebratechnologies/zeta-flutter/pull/49) by [@thelukewalton](https://github.com/thelukewalton))_ + +### :flying_saucer: Other Changes + +- [`aff41a3`](https://github.com/zebratechnologies/zeta-flutter/commit/aff41a372a2e3ba7eef06e1d69dc3e57b423c3dd) - chore(deps): bump tj-actions/changed-files from 35 to 41 in /.github/workflows ([#48](https://github.com/zebratechnologies/zeta-flutter/pull/48)) + +Bumps +[tj-actions/changed-files](https://github.com/tj-actions/changed-files) +from 35 to 41. + +
+Release notes +

Sourced from tj-actions/changed-files's +releases.

+
+

v41

+

Changes in v41.0.1

+

What's Changed

+ +

Full Changelog: https://github.com/tj-actions/changed-files/compare/v41...v41.0.1

+
+

Changes in v41.0.0

+

🔥 🔥 BREAKING CHANGE 🔥 🔥

+

A new safe_output input is now available to prevent +outputting unsafe filename characters (Enabled by default). This would +escape characters in the filename that could be used for command +injection.

+
+

[!NOTE] +This can be disabled by setting the safe_output to false +this comes with a recommendation to store all outputs generated in an +environment variable first before using them.

+
+

Example

+
...
+    - name: Get changed files
+      id: changed-files
+      uses: tj-actions/changed-files@v40
+      with:
+safe_output: false # set to false because we are using an environment
+variable to store the output and avoid command injection.
+
- name: List all added files
+  env:
+    ADDED_FILES: ${{ steps.changed-files.outputs.added_files }}
+  run: |
+    for file in &quot;$ADDED_FILES&quot;; do
+      echo &quot;$file was added&quot;
+    done
+
+

... +

+

What's Changed

+ + +
+

... (truncated)

+
+
+Changelog +

Sourced from tj-actions/changed-files's +changelog.

+
+

Changelog

+

41.0.1 +- (2023-12-24)

+

🐛 Bug Fixes

+ +

⚙️ Miscellaneous Tasks

+
    +
  • deps: Update dependency eslint-plugin-prettier to +v5.1.2 (7aaf10d) +- (renovate[bot])
  • +
+

⬆️ Upgrades

+ +

Co-authored-by: jackton1 jackton1@users.noreply.github.com +(cc08e17) +- (tj-actions[bot])

+

41.0.0 +- (2023-12-23)

+

🐛 Bug Fixes

+ +

⏪ Reverts

+ +

(4f573fe) +- (Tonye Jack)

+

🔄 Update

+ +

Co-authored-by: renovate[bot] (1864078) +- (tj-actions[bot])

+ +

(47371c5) +- (Tonye Jack)

+

📝 Other

+
    +
  • Merge pull request from GHSA-mcph-m25j-8j63
  • +
+
    +
  • +

    feat: add safe_output input enabled by default

    +
  • +
  • +

    fix: migrate README to safe uses of interpolation

    +
  • +
+ +
+

... (truncated)

+
+
+Commits + +
+
+ +[![Dependabot compatibility +score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=tj-actions/changed-files&package-manager=github_actions&previous-version=35&new-version=41)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) + +Dependabot will resolve any conflicts with this PR as long as you don't +alter it yourself. You can also trigger a rebase manually by commenting +`@dependabot rebase`. + +[//]: # "dependabot-automerge-start" +[//]: # "dependabot-automerge-end" + +--- + +
+Dependabot commands and options +
+ +You can trigger Dependabot actions by commenting on this PR: + +- `@dependabot rebase` will rebase this PR +- `@dependabot recreate` will recreate this PR, overwriting any edits + that have been made to it +- `@dependabot merge` will merge this PR after your CI passes on it +- `@dependabot squash and merge` will squash and merge this PR after + your CI passes on it +- `@dependabot cancel merge` will cancel a previously requested merge + and block automerging +- `@dependabot reopen` will reopen this PR if it is closed +- `@dependabot close` will close this PR and stop Dependabot recreating + it. You can achieve the same result by closing it manually +- `@dependabot show ignore conditions` will show all + of the ignore conditions of the specified dependency +- `@dependabot ignore this major version` will close this PR and stop + Dependabot creating any more for this major version (unless you reopen + the PR or upgrade to it yourself) +- `@dependabot ignore this minor version` will close this PR and stop + Dependabot creating any more for this minor version (unless you reopen + the PR or upgrade to it yourself) +- `@dependabot ignore this dependency` will close this PR and stop + Dependabot creating any more for this dependency (unless you reopen the + PR or upgrade to it yourself) + You can disable automated security fix PRs for this repo from the + [Security Alerts + page](https://github.com/zebratechnologies/zeta-flutter/network/alerts). + +
+ +Signed-off-by: dependabot[bot] +Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> _(commit by [@dependabot[bot]](https://github.com/apps/dependabot))_ + +## [0.1.1+18] - 2024-01-10 + +### :flying_saucer: Other Changes + +- [`caea7bd`](https://github.com/zebratechnologies/zeta-flutter/commit/caea7bdc061149db64344526bd16cd5232a219c2) - chore(deps): bump tj-actions/changed-files from 35 to 41 in /.github/workflows ([#48](https://github.com/zebratechnologies/zeta-flutter/pull/48)) + +Bumps +[tj-actions/changed-files](https://github.com/tj-actions/changed-files) +from 35 to 41. + +
+Release notes +

Sourced from tj-actions/changed-files's +releases.

+
+

v41

+

Changes in v41.0.1

+

What's Changed

+ +

Full Changelog: https://github.com/tj-actions/changed-files/compare/v41...v41.0.1

+
+

Changes in v41.0.0

+

🔥 🔥 BREAKING CHANGE 🔥 🔥

+

A new safe_output input is now available to prevent +outputting unsafe filename characters (Enabled by default). This would +escape characters in the filename that could be used for command +injection.

+
+

[!NOTE] +This can be disabled by setting the safe_output to false +this comes with a recommendation to store all outputs generated in an +environment variable first before using them.

+
+

Example

+
...
+    - name: Get changed files
+      id: changed-files
+      uses: tj-actions/changed-files@v40
+      with:
+safe_output: false # set to false because we are using an environment
+variable to store the output and avoid command injection.
+
- name: List all added files
+  env:
+    ADDED_FILES: ${{ steps.changed-files.outputs.added_files }}
+  run: |
+    for file in &quot;$ADDED_FILES&quot;; do
+      echo &quot;$file was added&quot;
+    done
+
+

... +

+

What's Changed

+ + +
+

... (truncated)

+
+
+Changelog +

Sourced from tj-actions/changed-files's +changelog.

+
+

Changelog

+

41.0.1 +- (2023-12-24)

+

🐛 Bug Fixes

+ +

⚙️ Miscellaneous Tasks

+
    +
  • deps: Update dependency eslint-plugin-prettier to +v5.1.2 (7aaf10d) +- (renovate[bot])
  • +
+

⬆️ Upgrades

+ +

Co-authored-by: jackton1 jackton1@users.noreply.github.com +(cc08e17) +- (tj-actions[bot])

+

41.0.0 +- (2023-12-23)

+

🐛 Bug Fixes

+ +

⏪ Reverts

+ +

(4f573fe) +- (Tonye Jack)

+

🔄 Update

+ +

Co-authored-by: renovate[bot] (1864078) +- (tj-actions[bot])

+ +

(47371c5) +- (Tonye Jack)

+

📝 Other

+
    +
  • Merge pull request from GHSA-mcph-m25j-8j63
  • +
+
    +
  • +

    feat: add safe_output input enabled by default

    +
  • +
  • +

    fix: migrate README to safe uses of interpolation

    +
  • +
+ +
+

... (truncated)

+
+
+Commits + +
+
+ +[![Dependabot compatibility +score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=tj-actions/changed-files&package-manager=github_actions&previous-version=35&new-version=41)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) + +Dependabot will resolve any conflicts with this PR as long as you don't +alter it yourself. You can also trigger a rebase manually by commenting +`@dependabot rebase`. + +[//]: # "dependabot-automerge-start" +[//]: # "dependabot-automerge-end" + +--- + +
+Dependabot commands and options +
+ +You can trigger Dependabot actions by commenting on this PR: + +- `@dependabot rebase` will rebase this PR +- `@dependabot recreate` will recreate this PR, overwriting any edits + that have been made to it +- `@dependabot merge` will merge this PR after your CI passes on it +- `@dependabot squash and merge` will squash and merge this PR after + your CI passes on it +- `@dependabot cancel merge` will cancel a previously requested merge + and block automerging +- `@dependabot reopen` will reopen this PR if it is closed +- `@dependabot close` will close this PR and stop Dependabot recreating + it. You can achieve the same result by closing it manually +- `@dependabot show ignore conditions` will show all + of the ignore conditions of the specified dependency +- `@dependabot ignore this major version` will close this PR and stop + Dependabot creating any more for this major version (unless you reopen + the PR or upgrade to it yourself) +- `@dependabot ignore this minor version` will close this PR and stop + Dependabot creating any more for this minor version (unless you reopen + the PR or upgrade to it yourself) +- `@dependabot ignore this dependency` will close this PR and stop + Dependabot creating any more for this dependency (unless you reopen the + PR or upgrade to it yourself) + You can disable automated security fix PRs for this repo from the + [Security Alerts + page](https://github.com/zebratechnologies/zeta-flutter/network/alerts). + +
+ +Signed-off-by: dependabot[bot] +Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> _(commit by [@dependabot[bot]](https://github.com/apps/dependabot))_ + +## [0.1.1+16] - 2024-01-02 + +### :flying_saucer: Other Changes + +- [`225a059`](https://github.com/zebratechnologies/zeta-flutter/commit/225a059aa191f595db4982960c854c2e94c5bdc4) - create bottom sheet ([#45](https://github.com/zebratechnologies/zeta-flutter/pull/45)) + +Co-authored-by: Atanas Yordanov +Co-authored-by: github-actions _(commit by [@atanasyordanov21](https://github.com/atanasyordanov21))_ + +- [`656ca24`](https://github.com/zebratechnologies/zeta-flutter/commit/656ca2470112a171064f0d2d7477bf087a4f98bd) - Password input ([#47](https://github.com/zebratechnologies/zeta-flutter/pull/47)) + +Co-authored-by: github-actions +Co-authored-by: Atanas Yordanov _(commit by [@genovevageorgieva](https://github.com/genovevageorgieva))_ + +## [0.1.1+15] - 2024-01-02 + +### :flying_saucer: Other Changes + +- [`36b9808`](https://github.com/zebratechnologies/zeta-flutter/commit/36b980896602320114c845b68a99a1c4c2e03ecb) - Page banner ([#40](https://github.com/zebratechnologies/zeta-flutter/pull/40)) + +Co-authored-by: github-actions _(commit by [@genovevageorgieva](https://github.com/genovevageorgieva))_ + +- [`03f2ed7`](https://github.com/zebratechnologies/zeta-flutter/commit/03f2ed7fb7f34dd995cb850f67582b76a2132111) - create bottom sheet ([#45](https://github.com/zebratechnologies/zeta-flutter/pull/45)) + +Co-authored-by: Atanas Yordanov +Co-authored-by: github-actions _(commit by [@atanasyordanov21](https://github.com/atanasyordanov21))_ + +## [0.1.1+14] - 2023-12-21 + +### :flying_saucer: Other Changes + +- [`be7cf58`](https://github.com/zebratechnologies/zeta-flutter/commit/be7cf587995ef4a51c57fc497d91abfccf82c65b) - component floating action button ([#41](https://github.com/zebratechnologies/zeta-flutter/pull/41)) + +Co-authored-by: github-actions _(commit by [@genovevageorgieva](https://github.com/genovevageorgieva))_ + +- [`a5d7181`](https://github.com/zebratechnologies/zeta-flutter/commit/a5d71816ff9d6aa9426cda38ee9d6f1116a36496) - Page banner ([#40](https://github.com/zebratechnologies/zeta-flutter/pull/40)) + +Co-authored-by: github-actions _(commit by [@genovevageorgieva](https://github.com/genovevageorgieva))_ + +## [0.1.1+13] - 2023-12-21 + +### :flying_saucer: Other Changes + +- [`51caca7`](https://github.com/zebratechnologies/zeta-flutter/commit/51caca71fce57681cabeb82e979499da9a16f4c1) - Menu Items - horizontal & vertical ([#44](https://github.com/zebratechnologies/zeta-flutter/pull/44)) + +* Menu Items - horizontal & vertical + +The ZetaDefaults class was updated to Zeta inheriting from InheritedWidget. This change allows easy access to the Zeta theme settings (contrast, theme mode, theme data, color set) from anywhere in the widget tree. The ZetaAppBuilder function was updated to take in ThemeData and ThemeMode. The ZetaProvider was added to provide Zeta theming and contrast data down the widget tree. The code for the color and typography examples was adjusted to use the new Zeta context extension, instead of using Theme.of(context) to get colorScheme. This change was crucial to simplify the process of adapting the application visuals to different themes." + +--- + +Co-authored-by: Atanas Yordanov +Co-authored-by: github-actions _(commit by [@atanasyordanov21](https://github.com/atanasyordanov21))_ + +- [`8fe8750`](https://github.com/zebratechnologies/zeta-flutter/commit/8fe87502764834cdbdcc7580bddaa5def36ae518) - component floating action button ([#41](https://github.com/zebratechnologies/zeta-flutter/pull/41)) + +Co-authored-by: github-actions _(commit by [@genovevageorgieva](https://github.com/genovevageorgieva))_ + +## [0.1.1+12] - 2023-12-20 + +### :flying_saucer: Other Changes + +- [`dcafe1f`](https://github.com/zebratechnologies/zeta-flutter/commit/dcafe1f2f0436adf75e9cb36e0c4dd1bb8015def) - fix sizings and replace icons with zeta icons ([#43](https://github.com/zebratechnologies/zeta-flutter/pull/43)) + +* fix sizings and replace icons with zeta icons + +- Refactor color swatch generation to utilize zeta + +--- + +Co-authored-by: github-actions _(commit by [@genovevageorgieva](https://github.com/genovevageorgieva))_ + +- [`231fa4b`](https://github.com/zebratechnologies/zeta-flutter/commit/231fa4b860d4ecbb551ba7ec65b783d26fed43a0) - Menu Items - horizontal & vertical ([#44](https://github.com/zebratechnologies/zeta-flutter/pull/44)) + +* Menu Items - horizontal & vertical + +* [automated commit] lint format and import sort + +--- + +Co-authored-by: Atanas Yordanov +Co-authored-by: github-actions _(commit by [@atanasyordanov21](https://github.com/atanasyordanov21))_ + +## [0.1.1+11] - 2023-12-19 + +### :flying_saucer: Other Changes + +- [`c506b81`](https://github.com/zebratechnologies/zeta-flutter/commit/c506b81c0f00b23192ddef4e484dabf8a0f36890) - Component accordion ([#39](https://github.com/zebratechnologies/zeta-flutter/pull/39)) + +* first draft of the ZetaAccordion + +* create ZetaAccordion component + +* add icon padding + +* add list separator & margin + +* Tag component ([#37](https://github.com/zebratechnologies/zeta-flutter/pull/37)) + +* initial + +* inital + +* initial + +* tag component + +* tag component + +* [automated commit] lint format and import sort + +--- + +Co-authored-by: github-actions +Co-authored-by: Atanas Yordanov + +- add comments and more examples + +- pubspec + +- [automated commit] lint format and import sort + +--- + +Co-authored-by: Atanas Yordanov +Co-authored-by: Genoveva Georgieva <151932404+genovevageorgieva@users.noreply.github.com> +Co-authored-by: github-actions _(commit by [@atanasyordanov21](https://github.com/atanasyordanov21))_ + +- [`10a075e`](https://github.com/zebratechnologies/zeta-flutter/commit/10a075ed9dc7aac6021ccc08fde574f520b2fc9e) - fix sizings and replace icons with zeta icons ([#43](https://github.com/zebratechnologies/zeta-flutter/pull/43)) + +* fix sizings and replace icons with zeta icons + +* [automated commit] lint format and import sort + +--- + +Co-authored-by: github-actions _(commit by [@genovevageorgieva](https://github.com/genovevageorgieva))_ + +## [0.1.1+10] - 2023-12-19 + +### :flying_saucer: Other Changes + +- [`c79686a`](https://github.com/zebratechnologies/zeta-flutter/commit/c79686a8221a029280332e144da3fdb6eca0ead8) - Tag component ([#37](https://github.com/zebratechnologies/zeta-flutter/pull/37)) + +* initial + +* inital + +* initial + +* tag component + +* tag component + +* [automated commit] lint format and import sort + +--- + +Co-authored-by: github-actions +Co-authored-by: Atanas Yordanov _(commit by [@genovevageorgieva](https://github.com/genovevageorgieva))_ + +- [`df9eb66`](https://github.com/zebratechnologies/zeta-flutter/commit/df9eb66803c2f005099aa67a9394e520626401d3) - Component accordion ([#39](https://github.com/zebratechnologies/zeta-flutter/pull/39)) + +* first draft of the ZetaAccordion + +* create ZetaAccordion component + +* add icon padding + +* add list separator & margin + +* Tag component ([#37](https://github.com/zebratechnologies/zeta-flutter/pull/37)) + +* initial + +* inital + +* initial + +* tag component + +* tag component + +* [automated commit] lint format and import sort + +--- + +Co-authored-by: github-actions +Co-authored-by: Atanas Yordanov + +- add comments and more examples + +- pubspec + +- [automated commit] lint format and import sort + +--- + +Co-authored-by: Atanas Yordanov +Co-authored-by: Genoveva Georgieva <151932404+genovevageorgieva@users.noreply.github.com> +Co-authored-by: github-actions _(commit by [@atanasyordanov21](https://github.com/atanasyordanov21))_ + +## [0.1.1+9] - 2023-12-18 + +### :flying_saucer: Other Changes + +- [`541ec63`](https://github.com/zebratechnologies/zeta-flutter/commit/541ec633f31f117b685671a33342e57c89823434) - force Material 3 ([#38](https://github.com/zebratechnologies/zeta-flutter/pull/38)) + +* force Material 3 + +* [automated commit] lint format and import sort + +--- + +Co-authored-by: Atanas Yordanov +Co-authored-by: github-actions _(commit by [@atanasyordanov21](https://github.com/atanasyordanov21))_ + +- [`0be43ac`](https://github.com/zebratechnologies/zeta-flutter/commit/0be43acce7c8f3b69a778f95420f542f92e725cf) - Tag component ([#37](https://github.com/zebratechnologies/zeta-flutter/pull/37)) + +* initial + +* inital + +* initial + +* tag component + +* tag component + +* [automated commit] lint format and import sort + +--- + +Co-authored-by: github-actions +Co-authored-by: Atanas Yordanov _(commit by [@genovevageorgieva](https://github.com/genovevageorgieva))_ + +## [0.1.1+8] - 2023-12-18 + +### :flying_saucer: Other Changes + +- [`4ca71f3`](https://github.com/zebratechnologies/zeta-flutter/commit/4ca71f3f83535e55c3af36961a5332fced0ecdbf) - Button component ([#36](https://github.com/zebratechnologies/zeta-flutter/pull/36)) + +* initial + +* format_error + +* [automated commit] lint format and import sort + +* button component optimizations + +* [automated commit] lint format and import sort + +* [automated commit] lint format and import sort + +* colors change + +* colors change + +* [automated commit] lint format and import sort + +--- + +Co-authored-by: github-actions _(commit by [@genovevageorgieva](https://github.com/genovevageorgieva))_ + +- [`ba9062b`](https://github.com/zebratechnologies/zeta-flutter/commit/ba9062bb2268310a8c22d5230227c04afa178166) - force Material 3 ([#38](https://github.com/zebratechnologies/zeta-flutter/pull/38)) + +* force Material 3 + +* [automated commit] lint format and import sort + +--- + +Co-authored-by: Atanas Yordanov +Co-authored-by: github-actions _(commit by [@atanasyordanov21](https://github.com/atanasyordanov21))_ + +## [0.1.1+7] - 2023-12-18 + +### :flying_saucer: Other Changes + +- [`ac2b269`](https://github.com/zebratechnologies/zeta-flutter/commit/ac2b269c5806d2af310a063231abc1e412aea1a1) - fix the border of the indicator component ([#31](https://github.com/zebratechnologies/zeta-flutter/pull/31)) + +* fix the border of the component + +* [automated commit] lint format and import sort + +* inverseBorder + +* [automated commit] lint format and import sort + +* rounded = true by default + +* running on iPhone + +* try to adjust font height + +* horizontal alignment + +* try to remove the line height + +* stick to Material 2 for now + +--- + +Co-authored-by: Atanas Yordanov +Co-authored-by: github-actions _(commit by [@atanasyordanov21](https://github.com/atanasyordanov21))_ + +- [`cb330c7`](https://github.com/zebratechnologies/zeta-flutter/commit/cb330c7c1952ca2493b5d6c9272e2ade1050f53b) - Button component ([#36](https://github.com/zebratechnologies/zeta-flutter/pull/36)) + +* initial + +* format_error + +* [automated commit] lint format and import sort + +* button component optimizations + +* [automated commit] lint format and import sort + +* [automated commit] lint format and import sort + +* colors change + +* colors change + +* [automated commit] lint format and import sort + +--- + +Co-authored-by: github-actions _(commit by [@genovevageorgieva](https://github.com/genovevageorgieva))_ + +## [0.1.1+6] - 2023-12-18 + +### :flying_saucer: Other Changes + +- [`354040c`](https://github.com/zebratechnologies/zeta-flutter/commit/354040c91731f53f9186ce0cbce341706dc30b3a) - Workcloud indicators ([#34](https://github.com/zebratechnologies/zeta-flutter/pull/34)) + +* initial + +* workcloud indicator + +* typo + +* . + +* [automated commit] lint format and import sort + +* . + +* . + +* . + +* [automated commit] lint format and import sort + +* [automated commit] lint format and import sort + +* add default values + +* [automated commit] lint format and import sort + +--- + +Co-authored-by: github-actions _(commit by [@genovevageorgieva](https://github.com/genovevageorgieva))_ + +- [`88080ad`](https://github.com/zebratechnologies/zeta-flutter/commit/88080ada71811b47fe20f73dfba23c52e5223d38) - fix the border of the indicator component ([#31](https://github.com/zebratechnologies/zeta-flutter/pull/31)) + +* fix the border of the component + +* [automated commit] lint format and import sort + +* inverseBorder + +* [automated commit] lint format and import sort + +* rounded = true by default + +* running on iPhone + +* try to adjust font height + +* horizontal alignment + +* try to remove the line height + +* stick to Material 2 for now + +--- + +Co-authored-by: Atanas Yordanov +Co-authored-by: github-actions _(commit by [@atanasyordanov21](https://github.com/atanasyordanov21))_ + +## [0.1.1+5] - 2023-12-18 + +### :flying_saucer: Other Changes + +- [`1268c92`](https://github.com/zebratechnologies/zeta-flutter/commit/1268c92c7e0057cd166c40bc9ccd53ccf80c2fef) - App bar ([#35](https://github.com/zebratechnologies/zeta-flutter/pull/35)) + +* create ZetaAppBar in four variants with example screens + +* [automated commit] lint format and import sort + +* remove Flexible + +* rename + +* titleIcon should be of type Icon instead of Widget + +--- + +Co-authored-by: Atanas Yordanov +Co-authored-by: github-actions _(commit by [@atanasyordanov21](https://github.com/atanasyordanov21))_ + +- [`077d161`](https://github.com/zebratechnologies/zeta-flutter/commit/077d16138d5d3f579fbc2bfcba3048b1c5d28afc) - Workcloud indicators ([#34](https://github.com/zebratechnologies/zeta-flutter/pull/34)) + +* initial + +* workcloud indicator + +* typo + +* . + +* [automated commit] lint format and import sort + +* . + +* . + +* . + +* [automated commit] lint format and import sort + +* [automated commit] lint format and import sort + +* add default values + +* [automated commit] lint format and import sort + +--- + +Co-authored-by: github-actions _(commit by [@genovevageorgieva](https://github.com/genovevageorgieva))_ + +## [0.1.1+4] - 2023-12-15 + +### :flying_saucer: Other Changes + +- [`8f621dc`](https://github.com/zebratechnologies/zeta-flutter/commit/8f621dc82bd58ace9c994057420cdb1f41a74200) - Component ZetaAvatar ([#32](https://github.com/zebratechnologies/zeta-flutter/pull/32)) + +* add empty avatar example page; upgrade packages + +* add icons + +* [automated commit] lint format and import sort + +* create avatar component with examples + +* create ZetaIndicator component with examples + +* fix value + +* fix & improve; add badges (indicators) + +* add more comments + +* add factory constructors for the different types + +* add widgetbook + +* add avatar to widgetbook + +* [automated commit] lint format and import sort + +* Badge ([#29](https://github.com/zebratechnologies/zeta-flutter/pull/29)) + +* initial + +* Badge + +* fix test + +* [automated commit] lint format and import sort + +* change default border type + +* fix test + +* [automated commit] lint format and import sort + +* [automated commit] lint format and import sort + +* [automated commit] lint format and import sort + +* fix example + +* fix sizing + +* add foreground colors + +* [automated commit] lint format and import sort + +--- + +Co-authored-by: github-actions + +- [automated commit] lint format and import sort + +- replace photo with image + +- [automated commit] lint format and import sort + +--- + +Co-authored-by: Atanas Yordanov +Co-authored-by: github-actions +Co-authored-by: Genoveva Georgieva <151932404+genovevageorgieva@users.noreply.github.com> _(commit by [@atanasyordanov21](https://github.com/atanasyordanov21))_ + +- [`350adec`](https://github.com/zebratechnologies/zeta-flutter/commit/350adecf4b0498afc6a476a653d2223a7cb74e0f) - App bar ([#35](https://github.com/zebratechnologies/zeta-flutter/pull/35)) + +* create ZetaAppBar in four variants with example screens + +* [automated commit] lint format and import sort + +* remove Flexible + +* rename + +* titleIcon should be of type Icon instead of Widget + +--- + +Co-authored-by: Atanas Yordanov +Co-authored-by: github-actions _(commit by [@atanasyordanov21](https://github.com/atanasyordanov21))_ + +## [0.1.1+3] - 2023-12-15 + +### :flying_saucer: Other Changes + +- [`5f0a33e`](https://github.com/zebratechnologies/zeta-flutter/commit/5f0a33e8e3b92de83d83170f267e6cd3f5fca068) - Merge from zebradevs ([#27](https://github.com/zebratechnologies/zeta-flutter/pull/27)) + +* Merge from zebradevs + +* spelling and finals + +* [automated commit] lint format and import sort + +--- + +Co-authored-by: github-actions _(commit by [@thelukewalton](https://github.com/thelukewalton))_ + +- [`b20aef1`](https://github.com/zebratechnologies/zeta-flutter/commit/b20aef109944e6cfc02db9b0041e7a6009c9e52e) - Component ZetaAvatar ([#32](https://github.com/zebratechnologies/zeta-flutter/pull/32)) + +* add empty avatar example page; upgrade packages + +* add icons + +* [automated commit] lint format and import sort + +* create avatar component with examples + +* create ZetaIndicator component with examples + +* fix value + +* fix & improve; add badges (indicators) + +* add more comments + +* add factory constructors for the different types + +* add widgetbook + +* add avatar to widgetbook + +* [automated commit] lint format and import sort + +* Badge ([#29](https://github.com/zebratechnologies/zeta-flutter/pull/29)) + +* initial + +* Badge + +* fix test + +* [automated commit] lint format and import sort + +* change default border type + +* fix test + +* [automated commit] lint format and import sort + +* [automated commit] lint format and import sort + +* [automated commit] lint format and import sort + +* fix example + +* fix sizing + +* add foreground colors + +* [automated commit] lint format and import sort + +--- + +Co-authored-by: github-actions + +- [automated commit] lint format and import sort + +- replace photo with image + +- [automated commit] lint format and import sort + +--- + +Co-authored-by: Atanas Yordanov +Co-authored-by: github-actions +Co-authored-by: Genoveva Georgieva <151932404+genovevageorgieva@users.noreply.github.com> _(commit by [@atanasyordanov21](https://github.com/atanasyordanov21))_ + +## [0.1.1+2] - 2023-12-13 + +### :flying_saucer: Other Changes + +- [`063386f`](https://github.com/zebratechnologies/zeta-flutter/commit/063386f83490bf3bfb6d26fc6a95dd445006d656) - some sizings were not exactly as shown in Figma ([#33](https://github.com/zebratechnologies/zeta-flutter/pull/33)) + +* . + +* [automated commit] lint format and import sort + +--- + +Co-authored-by: github-actions _(commit by [@genovevageorgieva](https://github.com/genovevageorgieva))_ + +- [`1c8ca4c`](https://github.com/zebratechnologies/zeta-flutter/commit/1c8ca4c4b5dbd8378710a18765303a6d37472cf0) - Merge from zebradevs ([#27](https://github.com/zebratechnologies/zeta-flutter/pull/27)) + +* Merge from zebradevs + +* spelling and finals + +* [automated commit] lint format and import sort + +--- + +Co-authored-by: github-actions _(commit by [@thelukewalton](https://github.com/thelukewalton))_ + +## [0.1.1+1] - 2023-12-01 + +- feature: Refactor theme declaration and introduce theme service + +Theme extensions were deleted and its contents were moved to colors.dart to consolidate all color-related codes in one file for easier navigation and editing. Additional enhancements include optimizing color assignments and making ZetaColors immutable for more robust color management. + +## [0.1.0+9] - 2023-12-12 + +### :flying_saucer: Other Changes + +- [`b97fd3b`](https://github.com/zebratechnologies/zeta-flutter/commit/b97fd3bd881a85c8d4ee4f5ea5856e7a8ebf2d09) - Badge ([#29](https://github.com/zebratechnologies/zeta-flutter/pull/29)) + +* initial + +* Badge + +* fix test + +* [automated commit] lint format and import sort + +* change default border type + +* fix test + +* [automated commit] lint format and import sort + +* [automated commit] lint format and import sort + +* [automated commit] lint format and import sort + +* fix example + +* fix sizing + +* add foreground colors + +* [automated commit] lint format and import sort + +--- + +Co-authored-by: github-actions _(commit by [@genovevageorgieva](https://github.com/genovevageorgieva))_ + +- [`30fd121`](https://github.com/zebratechnologies/zeta-flutter/commit/30fd12131af2549c0b5b31bf89e12553557a009b) - some sizings were not exactly as shown in Figma ([#33](https://github.com/zebratechnologies/zeta-flutter/pull/33)) + +* . + +* [automated commit] lint format and import sort + +--- + +Co-authored-by: github-actions _(commit by [@genovevageorgieva](https://github.com/genovevageorgieva))_ + +## [0.1.0+8] - 2023-12-11 + +### :flying_saucer: Other Changes + +- [`36f72c1`](https://github.com/zebratechnologies/zeta-flutter/commit/36f72c1df09fecc9d3eeb6dbf1bbf889493529c0) - Component indicator ([#30](https://github.com/zebratechnologies/zeta-flutter/pull/30)) + +* add icons + +* [automated commit] lint format and import sort + +* create ZetaIndicator component with examples + +* fix value + +* add more comments + +* add widgetbook + +* [automated commit] lint format and import sort + +--- + +Co-authored-by: Atanas Yordanov +Co-authored-by: github-actions _(commit by [@atanasyordanov21](https://github.com/atanasyordanov21))_ + +- [`895bbfa`](https://github.com/zebratechnologies/zeta-flutter/commit/895bbfa876c7fea331d6bdb14c77e25632aab28d) - Badge ([#29](https://github.com/zebratechnologies/zeta-flutter/pull/29)) + +* initial + +* Badge + +* fix test + +* [automated commit] lint format and import sort + +* change default border type + +* fix test + +* [automated commit] lint format and import sort + +* [automated commit] lint format and import sort + +* [automated commit] lint format and import sort + +* fix example + +* fix sizing + +* add foreground colors + +* [automated commit] lint format and import sort + +--- + +Co-authored-by: github-actions _(commit by [@genovevageorgieva](https://github.com/genovevageorgieva))_ + +## [0.1.0+7] - 2023-12-11 + +### :flying_saucer: Other Changes + +- [`19e7d93`](https://github.com/zebratechnologies/zeta-flutter/commit/19e7d933456938d473f1f5c6ef2696e02349e196) - Priority Pill ([#28](https://github.com/zebratechnologies/zeta-flutter/pull/28)) + +* Priority Pill + +* [automated commit] lint format and import sort + +* remove unnecessary param + +* [automated commit] lint format and import sort + +--- + +Co-authored-by: github-actions _(commit by [@genovevageorgieva](https://github.com/genovevageorgieva))_ + +- [`fe4fe8d`](https://github.com/zebratechnologies/zeta-flutter/commit/fe4fe8d088fddf9443ce5810a1d2c068b13c75d9) - Component indicator ([#30](https://github.com/zebratechnologies/zeta-flutter/pull/30)) + +* add icons + +* [automated commit] lint format and import sort + +* create ZetaIndicator component with examples + +* fix value + +* add more comments + +* add widgetbook + +* [automated commit] lint format and import sort + +--- + +Co-authored-by: Atanas Yordanov +Co-authored-by: github-actions _(commit by [@atanasyordanov21](https://github.com/atanasyordanov21))_ + +## [0.1.0+6] - 2023-12-08 + +### :flying_saucer: Other Changes + +- [`2f21a18`](https://github.com/zebratechnologies/zeta-flutter/commit/2f21a18e30425fe91fe7bb0ee3c4df7ab8baca35) - add icons ([#24](https://github.com/zebratechnologies/zeta-flutter/pull/24)) + +* add icons + +* [automated commit] lint format and import sort + +* [automated commit] lint format and import sort + +--- + +Co-authored-by: Atanas Yordanov +Co-authored-by: github-actions _(commit by [@atanasyordanov21](https://github.com/atanasyordanov21))_ + +- [`2442420`](https://github.com/zebratechnologies/zeta-flutter/commit/2442420da15739e538d50e14c2a18c63de8d6f96) - Priority Pill ([#28](https://github.com/zebratechnologies/zeta-flutter/pull/28)) + +* Priority Pill + +* [automated commit] lint format and import sort + +* remove unnecessary param + +* [automated commit] lint format and import sort + +--- + +Co-authored-by: github-actions _(commit by [@genovevageorgieva](https://github.com/genovevageorgieva))_ + +## [0.1.0+5] - 2023-12-08 + +### :flying_saucer: Other Changes + +- [`ef44d24`](https://github.com/zebratechnologies/zeta-flutter/commit/ef44d244589a7cc652a934f25a5122bbd1657c05) - status_label ([#25](https://github.com/zebratechnologies/zeta-flutter/pull/25)) + +* status_label + +* [automated commit] lint format and import sort + +* spacing changes + +* extract BorderType in utils + +* chore(deps): bump tj-actions/branch-names in /.github/workflows ([#26](https://github.com/zebratechnologies/zeta-flutter/pull/26)) + +Bumps [tj-actions/branch-names](https://github.com/tj-actions/branch-names) from 5.1 to 7.0.7. + +- [Release notes](https://github.com/tj-actions/branch-names/releases) +- [Changelog](https://github.com/tj-actions/branch-names/blob/main/HISTORY.md) +- [Commits](https://github.com/tj-actions/branch-names/compare/v5.1...v7.0.7) + +--- + +updated-dependencies: + +- dependency-name: tj-actions/branch-names + dependency-type: direct:production + ... + +Signed-off-by: dependabot[bot] +Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> + +- [automated commit] lint format and import sort + +--- + +Signed-off-by: dependabot[bot] +Co-authored-by: github-actions +Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> _(commit by [@genovevageorgieva](https://github.com/genovevageorgieva))_ + +- [`c90349b`](https://github.com/zebratechnologies/zeta-flutter/commit/c90349b104f3000956f821934b01dfd74f37a5e2) - add icons ([#24](https://github.com/zebratechnologies/zeta-flutter/pull/24)) + +* add icons + +* [automated commit] lint format and import sort + +* [automated commit] lint format and import sort + +--- + +Co-authored-by: Atanas Yordanov +Co-authored-by: github-actions _(commit by [@atanasyordanov21](https://github.com/atanasyordanov21))_ + +## [0.1.0+4] - 2023-12-06 + +### :wrench: Chores + +- [`0794b08`](https://github.com/zebratechnologies/zeta-flutter/commit/0794b08d029e9954457dbfac56bd576aaf8f0e82) - **deps**: bump tj-actions/branch-names in /.github/workflows _(PR [#26](https://github.com/zebratechnologies/zeta-flutter/pull/26) by [@dependabot[bot]](https://github.com/apps/dependabot))_ + +### :flying_saucer: Other Changes + +- [`65bf57f`](https://github.com/zebratechnologies/zeta-flutter/commit/65bf57fc1d7f13d4017b0e21f5f52d62552b502c) - status_label ([#25](https://github.com/zebratechnologies/zeta-flutter/pull/25)) + +* status_label + +* [automated commit] lint format and import sort + +* spacing changes + +* extract BorderType in utils + +* chore(deps): bump tj-actions/branch-names in /.github/workflows ([#26](https://github.com/zebratechnologies/zeta-flutter/pull/26)) + +Bumps [tj-actions/branch-names](https://github.com/tj-actions/branch-names) from 5.1 to 7.0.7. + +- [Release notes](https://github.com/tj-actions/branch-names/releases) +- [Changelog](https://github.com/tj-actions/branch-names/blob/main/HISTORY.md) +- [Commits](https://github.com/tj-actions/branch-names/compare/v5.1...v7.0.7) + +--- + +updated-dependencies: + +- dependency-name: tj-actions/branch-names + dependency-type: direct:production + ... + +Signed-off-by: dependabot[bot] +Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> + +- [automated commit] lint format and import sort + +--- + +Signed-off-by: dependabot[bot] +Co-authored-by: github-actions +Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> _(commit by [@genovevageorgieva](https://github.com/genovevageorgieva))_ + +## [0.1.0+3] - 2023-12-06 + +### :wrench: Chores + +- [`63b94a6`](https://github.com/zebratechnologies/zeta-flutter/commit/63b94a60da570ce3848aa9c1af7a129a2c952399) - **deps**: bump tj-actions/branch-names in /.github/workflows _(PR [#26](https://github.com/zebratechnologies/zeta-flutter/pull/26) by [@dependabot[bot]](https://github.com/apps/dependabot))_ + +### :flying_saucer: Other Changes + +- [`f333429`](https://github.com/zebratechnologies/zeta-flutter/commit/f333429083f0cf790627211788e69285bcff3a37) - Cleanup dart warnings; fix text scale ([#23](https://github.com/zebratechnologies/zeta-flutter/pull/23)) + +* fix endtemplate in comments; upgrade flutter packages + +* remove unnecessary text scaling + +* [automated commit] lint format and import sort + +--- + +Co-authored-by: Atanas Yordanov +Co-authored-by: github-actions _(commit by [@atanasyordanov21](https://github.com/atanasyordanov21))_ + +## [0.1.0+2] - 2023-12-01 + +### :wrench: Chores + +- [`d22dd29`](https://github.com/zebratechnologies/zeta-flutter/commit/d22dd29b506affccc8cdc7ecfb15a57fcf330646) - Tidy, reorganise and prepare repo _(commit by [@thelukewalton](https://github.com/thelukewalton))_ + +### :flying_saucer: Other Changes + +- [`199328c`](https://github.com/zebratechnologies/zeta-flutter/commit/199328c28ccfa8a05a1494c08ad93aaf13dd3b28) - Update to mirror 0.1.0+1 from ZebraDevs _(commit by [@thelukewalton](https://github.com/thelukewalton))_ +- [`0ee6171`](https://github.com/zebratechnologies/zeta-flutter/commit/0ee6171e779c6db9995308aa35f2f598b9db372c) - Cleanup dart warnings; fix text scale ([#23](https://github.com/zebratechnologies/zeta-flutter/pull/23)) + +* fix endtemplate in comments; upgrade flutter packages + +* remove unnecessary text scaling + +* [automated commit] lint format and import sort + +--- + +Co-authored-by: Atanas Yordanov +Co-authored-by: github-actions _(commit by [@atanasyordanov21](https://github.com/atanasyordanov21))_ + +- [`f91e8ef`](https://github.com/zebratechnologies/zeta-flutter/commit/f91e8ef85c0a1670227d66bd441513bc33e6242c) - Feature/color ([#21](https://github.com/zebratechnologies/zeta-flutter/pull/21)) + +* feat(color): Adding color defs + +* feat(color): starting colorswatch util + +* bug(quality): updating lint rules + +* feat(color): adding widgetbook and tests + +* bug(platforms): adding windows into example + +* bug(type): Fixing reset height and tests failing _(commit by [@thelukewalton](https://github.com/thelukewalton))_ + +## [0.0.1+11] - 2023-08-09 + +### :sparkles: New Features + +- [`193dc42`](https://github.com/zebratechnologies/zeta-flutter/commit/193dc42c8e7419d9087afdffce0eae915af12819) - Color ([#21](https://github.com/zebratechnologies/zeta-flutter/pull/21)) _(commit by [@thelukewalton](https://github.com/thelukewalton))_ + +- [`a605819`](https://github.com/zebratechnologies/zeta-flutter/commit/a60581973764b5d06711fe6470f9963af934b7ad) - Adding color defs by [@thelukewalton](https://github.com/thelukewalton) +- [`f519cd8`](https://github.com/zebratechnologies/zeta-flutter/commit/f519cd856c7b4793ea7e24dc16f3abba0cffcf66) - starting colorswatch util by [@thelukewalton](https://github.com/thelukewalton) +- [`7445db0`](https://github.com/zebratechnologies/zeta-flutter/commit/7445db0b7da2434f5a55d3067369b3bd35df363b) - adding widgetbook and tests by [@thelukewalton](https://github.com/thelukewalton) + +### :bug: Bug Fixes + +- [`7529402`](https://github.com/zebratechnologies/zeta-flutter/commit/75294029f65d2a23cd41b5604165987fe434ea2e) - bug(quality): updating lint rules by [@thelukewalton](https://github.com/thelukewalton) +- [`3479adb`](https://github.com/zebratechnologies/zeta-flutter/commit/3479adb574c9ec1073552f888631f7cee12fe4cb) -bug(platforms): adding windows into example by [@thelukewalton](https://github.com/thelukewalton) +- [`70a6144`](https://github.com/zebratechnologies/zeta-flutter/commit/70a614446c4d526315eb3229478d89dbd1c031de) - bug(type): Fixing reset height and tests failing by [@thelukewalton](https://github.com/thelukewalton) + +## [0.0.1+10] - 2023-07-11 + +### :sparkles: New Features + +- [`546739c`](https://github.com/zebratechnologies/zeta-flutter/commit/546739c888e026b46546e22b3e1ea59c69e992d3) - Dimensions by [@thelukewalton](https://github.com/thelukewalton) + +### :bug: Bug Fixes + +- [`6638e94`](https://github.com/zebratechnologies/zeta-flutter/commit/6638e941b4027136c293c403c5c00e051fee5c97) - bug: Refactoring tokens by [@thelukewalton](https://github.com/thelukewalton) +- [`133a7ac`](https://github.com/zebratechnologies/zeta-flutter/commit/133a7acb3286af77a728479f8fafe9cef532130e) - bug: grid widgetbook hybrid example fix by [@thelukewalton](https://github.com/thelukewalton) + +- [`988964e`](https://github.com/zebratechnologies/zeta-flutter/commit/988964e122128c4f9e4423fd849b70b6283ccea7) - removing unused dependency; by [@thelukewalton](https://github.com/thelukewalton) + +## [0.0.1+9]- 2023-03-28 + +### :sparkles: New Features + +- [`ffb9596`](https://github.com/zebratechnologies/zeta-flutter/commit/ffb9596ee04456147b87c2c35b3a08e8763bf7c2) - Typography _(commit by [@thelukewalton](https://github.com/thelukewalton))_ + +### :memo: Documentation Changes + +- [`fb835a4`](https://github.com/zebratechnologies/zeta-flutter/commit/fb835a43a94945989d5b0793d61894ea807bc745) - Updated spacing and grid documentation and edge cases _(PR [#11](https://github.com/zebratechnologies/zeta-flutter/pull/11) by [@thelukewalton](https://github.com/thelukewalton))_ +- [`2a1cea3`](https://github.com/zebratechnologies/zeta-flutter/commit/2a1cea32d40c324cf36517cf05b5bb705d6eadb3) - Update typography documentation _(PR [#16](https://github.com/zebratechnologies/zeta-flutter/pull/16) by [@thelukewalton](https://github.com/thelukewalton))_ +- [`709f771`](https://github.com/zebratechnologies/zeta-flutter/commit/709f77185be705507475d90f044f94b2908fa5bb) - update docs _(PR [#17](https://github.com/zebratechnologies/zeta-flutter/pull/17) by [@thelukewalton](https://github.com/thelukewalton))_ + +- [`5a50e46`](https://github.com/zebratechnologies/zeta-flutter/commit/5a50e46f3500a9b186515305514839651576a444) - Update README.md ([#12](https://github.com/zebratechnologies/zeta-flutter/pull/12)), Update README.md, adding in tag to pass the CodeQL enablement exeption, - [automated commit] lint format and import sort. Co-authored-by: github-actions _(commit by [@knxp34](https://github.com/knxp34))_ + +### :bug: Bug Fixes + +- [`591b757`](https://github.com/zebratechnologies/zeta-flutter/commit/591b7572ebf85da7510a8b6a3f9f8451dc93535a) - inject token to action; _(PR [#15](https://github.com/zebratechnologies/zeta-flutter/pull/15) by [@thelukewalton](https://github.com/thelukewalton))_ +- [`d591856`](https://github.com/zebratechnologies/zeta-flutter/commit/d59185680879bf2f938c4f2a6bd2328f29a3ddd2) - test _(commit by [@thelukewalton](https://github.com/thelukewalton))_ +- [`1dcbcae`](https://github.com/zebratechnologies/zeta-flutter/commit/1dcbcaec2600210efcefc80861c29aaa7e44c27e) - removing hardcoded shas _(PR [#19](https://github.com/zebratechnologies/zeta-flutter/pull/19) by [@thelukewalton](https://github.com/thelukewalton))_ + +## [0.0.1+6]- Spacing - 2023-03-06 + +### :sparkles: New Features + +- [`a2ca78e`](https://github.com/zebratechnologies/zeta-flutter/commit/a2ca78e863405f70b8199a889be3bc4f9c61ab1a) - Spacing ([#9](https://github.com/zebratechnologies/zeta-flutter/pull/9)) + _(commit by [@thelukewalton](https://github.com/thelukewalton))_ + +### :bug: Bug Fixes + +- [`e29e53b`](https://github.com/zebratechnologies/zeta-flutter/commit/e29e53ba132cd155f2d40f4cfa6f6c3060558b4e) - another attempt at fixing actions checkout _(PR [#8](https://github.com/zebratechnologies/zeta-flutter/pull/8) by [@thelukewalton](https://github.com/thelukewalton))_ + +### :memo: Documentation Changes + +- [`1dc0e1b`](https://github.com/zebratechnologies/zeta-flutter/commit/1dc0e1b64cb870685110516c5159b20fb903f2c3) - Update README.md _(commit by [@benken](https://github.com/benken))_ + +## [0.0.1+5] - Grid - 2023-02-17 + +### :sparkles: New Features + +- [`60527e8`](https://github.com/zebratechnologies/zeta-flutter/commit/60527e86da15b4a804990c7e67bae5c46d25dc7f) - Grid ([#1](https://github.com/zebratechnologies/zeta-flutter/pull/1)) + +### :bug: Bug Fixes + +- [`f7a8d9a`](https://github.com/zebratechnologies/zeta-flutter/commit/f7a8d9a2ba078bf08fe80de07f6e9c871af9e451) - **actions**: Updated actions to push changelog to zeta. _(PR [#6](https://github.com/zebratechnologies/zeta-flutter/pull/6) by [@thelukewalton](https://github.com/thelukewalton))_ - actions _(commit by [@thelukewalton](https://github.com/thelukewalton))_ + +- [`0340212`](https://github.com/zebratechnologies/zeta-flutter/commit/0340212963606fbe755aa94cbb98d38d663a5854) - fixing action ([#4](https://github.com/zebratechnologies/zeta-flutter/pull/4)) + +- [`b0ad7f1`](https://github.com/zebratechnologies/zeta-flutter/commit/b0ad7f12b8b583fb928d225ce9d1c1f3244046e5) - No ticket/code examples ([#5](https://github.com/zebratechnologies/zeta-flutter/pull/5))- adding code example _(commit by [@thelukewalton](https://github.com/thelukewalton))_ + +- [`4acf3c1`](https://github.com/zebratechnologies/zeta-flutter/commit/4acf3c1134b6c8d17827d8e2c665250d6f6ead1d) - fix(actions) Fix action refs _(PR [#7](https://github.com/zebratechnologies/zeta-flutter/pull/7) by [@thelukewalton](https://github.com/thelukewalton))_ +- [`83e073b`](https://github.com/zebratechnologies/zeta-flutter/commit/83e073b16808d89373a74dba35172bb7a978e765) - fix(actions) another attempt at fixing actions checkout _(PR [#8](https://github.com/zebratechnologies/zeta-flutter/pull/8) by [@thelukewalton](https://github.com/thelukewalton))_ + +## [0.0.1+1] - Initial setup + +- Initial setup + +[0.1.1+2]: https://github.com/zebratechnologies/zeta-flutter/compare/0.1.0+9...0.1.1+2 +[0.1.1+3]: https://github.com/zebratechnologies/zeta-flutter/compare/0.1.1+2...0.1.1+3 +[0.1.1+4]: https://github.com/zebratechnologies/zeta-flutter/compare/0.1.1+3...0.1.1+4 +[0.1.1+5]: https://github.com/zebratechnologies/zeta-flutter/compare/0.1.1+4...0.1.1+5 +[0.1.1+6]: https://github.com/zebratechnologies/zeta-flutter/compare/0.1.1+5...0.1.1+6 +[0.1.1+7]: https://github.com/zebratechnologies/zeta-flutter/compare/0.1.1+6...0.1.1+7 +[0.1.1+8]: https://github.com/zebratechnologies/zeta-flutter/compare/0.1.1+7...0.1.1+8 +[0.1.1+9]: https://github.com/zebratechnologies/zeta-flutter/compare/0.1.1+8...0.1.1+9 +[0.1.1+10]: https://github.com/zebratechnologies/zeta-flutter/compare/0.1.1+9...0.1.1+10 +[0.1.1+11]: https://github.com/zebratechnologies/zeta-flutter/compare/0.1.1+10...0.1.1+11 +[0.1.1+12]: https://github.com/zebratechnologies/zeta-flutter/compare/0.1.1+11...0.1.1+12 +[0.1.1+13]: https://github.com/zebratechnologies/zeta-flutter/compare/0.1.1+12...0.1.1+13 +[0.1.1+14]: https://github.com/zebratechnologies/zeta-flutter/compare/0.1.1+13...0.1.1+14 +[0.1.1+15]: https://github.com/zebratechnologies/zeta-flutter/compare/0.1.1+14...0.1.1+15 +[0.1.1+16]: https://github.com/zebratechnologies/zeta-flutter/compare/0.1.1+15...0.1.1+16 +[0.1.1+18]: https://github.com/zebratechnologies/zeta-flutter/compare/0.1.1+17...0.1.1+18 +[0.1.1+19]: https://github.com/zebratechnologies/zeta-flutter/compare/0.1.1+18...0.1.1+19 +[0.1.1+20]: https://github.com/zebratechnologies/zeta-flutter/compare/0.1.1+19...0.1.1+20 +[0.1.1+21]: https://github.com/zebratechnologies/zeta-flutter/compare/0.1.1+20...0.1.1+21 +[0.1.1+22]: https://github.com/zebratechnologies/zeta-flutter/compare/0.1.1+21...0.1.1+22 +[0.1.1+23]: https://github.com/zebratechnologies/zeta-flutter/compare/0.1.1+22...0.1.1+23 diff --git a/LICENSE b/packages/zeta_flutter/LICENSE similarity index 99% rename from LICENSE rename to packages/zeta_flutter/LICENSE index ced46520..2ecb76a1 100644 --- a/LICENSE +++ b/packages/zeta_flutter/LICENSE @@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file +SOFTWARE. diff --git a/packages/zeta_flutter/LICENSE-3RD-PARTY b/packages/zeta_flutter/LICENSE-3RD-PARTY new file mode 100644 index 00000000..a3539727 --- /dev/null +++ b/packages/zeta_flutter/LICENSE-3RD-PARTY @@ -0,0 +1,38 @@ +# THIRD PARTY LICENSES + +--- + +## Flutter + +Applies to: + +- material_switch.dart +- icon.dart + +Copyright 2014 The Flutter Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of Google Inc. nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +--- diff --git a/packages/zeta_flutter/README.md b/packages/zeta_flutter/README.md new file mode 100644 index 00000000..e68c8f0b --- /dev/null +++ b/packages/zeta_flutter/README.md @@ -0,0 +1,173 @@ +# Zeta Flutter + +Zeta is the new, formal, standardized Zebra Design System based off the successes of ZDS (Zebra Design System). + +> 🚧 **Note**: This package is in pre-release, and so many aspects are incomplete. + +### Prerequisites + +``` +dart sdk: ">=3.2.0 <4.0.0" +flutter: ">=3.16.0" +``` + +## Installation + +To install `zeta_flutter`, follow the instructions [here](https://pub.dev/packages/zeta_flutter/install). + +## Example + +An example app can be found in this repo under `/example`. This shows all components in an example app, as well as a widgetbook instance. + +## Previewing the components + +To view examples of all the components in the library, you can pull this repo and run either the example app or widgetbook instance. + +You can also view the latest release at [Zeta](https://zeta-ds.web.app/) or the latest commits to main [here](https://zeta-flutter-main.web.app/). + +## Template + +If you are starting a new project using Zeta, we recommend starting with [Zeta Flutter Template](https://github.com/zebradevs/zeta_flutter_template). This template project handles the basic app setup, but these steps can also be followed [below](#Usage). + +## Usage + +Zeta offers flexibility in theming through its `ZetaProvider` widget. Here's a breakdown of its features: + +### Setting the Initial Theme Mode + +Zeta allows you to specify an initial theme mode for your app, which can be one of the following: + +- `ThemeMode.system`: Adheres to the system's theme. +- `ThemeMode.light`: Uses the light theme mode. +- `ThemeMode.dark`: Uses the dark theme mode. + +By default, the theme mode is set to `ThemeMode.system`. + +```dart +initialThemeMode: ThemeMode.system +``` + +### Providing Initial Theme Data + +You can provide the initial theme data for the app which contains all the theming information. If you don't specify one, it will default to a basic instance of `ZetaThemeData`. + +```dart +initialThemeData: ZetaThemeData() +``` + +### Setting the Initial Contrast + +Zeta also lets you define the initial contrast setting for your app. By default, it's set to `ZetaContrast.aa`. + +```dart +initialContrast: ZetaContrast.aa +``` + +### Building Your App with Zeta Theming + +The `builder` function is used to construct the widget tree with the provided theming information. This function is expected to receive a `BuildContext`, `ZetaThemeData`, and `ThemeMode` as arguments, and it should return a `Widget`. + +```dart +builder: (context, themeData, themeMode) { + // Your app's widget tree here +} +``` + +### Constructing the ZetaProvider + +To tie everything together, use the `ZetaProvider` constructor. The `builder` argument is mandatory, while the others are optional but allow you to set initial values: + +```dart + @override + Widget build(BuildContext context) { + return ZetaProvider( + builder: (context, themeData, themeMode) { + final dark = themeData.colorsDark.toScheme(); + final light = themeData.colorsLight.toScheme(); + return MaterialApp.router( + routerConfig: router, + themeMode: themeMode, + theme: ThemeData( + fontFamily: themeData.fontFamily, + scaffoldBackgroundColor: light.surfaceTertiary, + colorScheme: light, + ), + darkTheme: ThemeData( + fontFamily: themeData.fontFamily, + scaffoldBackgroundColor: dark.surfaceTertiary, + colorScheme: dark, + ), + ); + }, + ); + } +``` + +### Customization + +#### Creating custom themes + +Custom themes can be made by creating `ZetaCustomTheme` objects. `ZetaCustomTheme` can be constructed by passing in a primary or secondary color and, optionally, their dark variants: + +```dart +ZetaCustomTheme( + id: 'custom-theme-red', + primary: Colors.red, + primaryDark : // Dark variant here, + secondary: Colors.blue, + secondaryDark: // Dark variant here, +) +``` + +Color arguments can be of type `ZetaColorSwatch`, `MaterialColor`, or `Color`. If only a `Color` is provided, Zeta will generate a `ZetaColorSwatch`. To have control over every shade of a given color, we reccomend providing either a `ZetaColorSwatch` or a `MaterialColor`. + +If a dark variant of a color is not provided, Zeta generate one by inverting the corresponding color swatch. + +#### Adding custom themes + +Once you have defined the custom themes for your app, give them to the ZetaProvider by passing them through the construtor. You can also initialize the custom theme by setting the `initialTheme` argument to the id of the desired theme. + +```dart + ZetaProvider( + initialTheme: 'custom-theme-red' + customThemes: [ + ZetaCustomTheme( + id: 'custom-theme-red', + primary: Colors.red, + secondary: Colors.purple + ), + ZetaCustomTheme( + id: 'custom-theme-purple', + primary: Colors.purple, + secondary: Colors.green + ), + ] + ) +``` + +You can also get and set the custom themes via the `ZetaProvider`: + +`ZetaProvider.of(context).customThemes` +`ZetaProvider.of(context).setCustomThemes(newCustomThemes)` + +#### Changing the custom theme + +To change the custom theme, call the `updateCustomTheme` function on `ZetaProvider` with an id corresponding to a `ZetaCustomTheme` object: + +`ZetaProvider.of(context).updateCustomTheme('custom-theme-purple')` + +If the id provided does not correspond to a given theme, Zeta will fall back to its default theme. + +You can fetch the id of the currently applied custom theme via the `Zeta` object: + +`Zeta.of(context).customThemeId` + +This will return null if no custom theme is in use. + +With these configurations, Zeta makes it easy to achieve consistent theming throughout your Flutter application. + +## Licensing + +This software is licensed with the MIT license (see [LICENSE](./LICENSE) and [THIRD PARTY LICENSES](./LICENSE-3RD-PARTY)). + +--- diff --git a/packages/zeta_flutter/analysis_options.yaml b/packages/zeta_flutter/analysis_options.yaml new file mode 100644 index 00000000..278d8434 --- /dev/null +++ b/packages/zeta_flutter/analysis_options.yaml @@ -0,0 +1 @@ +include: package:zds_analysis/analysis_options_lib_all_files.yaml diff --git a/lib/assets/flags/ad.png b/packages/zeta_flutter/assets/flags/ad.png similarity index 100% rename from lib/assets/flags/ad.png rename to packages/zeta_flutter/assets/flags/ad.png diff --git a/lib/assets/flags/ae.png b/packages/zeta_flutter/assets/flags/ae.png similarity index 100% rename from lib/assets/flags/ae.png rename to packages/zeta_flutter/assets/flags/ae.png diff --git a/lib/assets/flags/af.png b/packages/zeta_flutter/assets/flags/af.png similarity index 100% rename from lib/assets/flags/af.png rename to packages/zeta_flutter/assets/flags/af.png diff --git a/lib/assets/flags/ag.png b/packages/zeta_flutter/assets/flags/ag.png similarity index 100% rename from lib/assets/flags/ag.png rename to packages/zeta_flutter/assets/flags/ag.png diff --git a/lib/assets/flags/ai.png b/packages/zeta_flutter/assets/flags/ai.png similarity index 100% rename from lib/assets/flags/ai.png rename to packages/zeta_flutter/assets/flags/ai.png diff --git a/lib/assets/flags/al.png b/packages/zeta_flutter/assets/flags/al.png similarity index 100% rename from lib/assets/flags/al.png rename to packages/zeta_flutter/assets/flags/al.png diff --git a/lib/assets/flags/am.png b/packages/zeta_flutter/assets/flags/am.png similarity index 100% rename from lib/assets/flags/am.png rename to packages/zeta_flutter/assets/flags/am.png diff --git a/lib/assets/flags/an.png b/packages/zeta_flutter/assets/flags/an.png similarity index 100% rename from lib/assets/flags/an.png rename to packages/zeta_flutter/assets/flags/an.png diff --git a/lib/assets/flags/ao.png b/packages/zeta_flutter/assets/flags/ao.png similarity index 100% rename from lib/assets/flags/ao.png rename to packages/zeta_flutter/assets/flags/ao.png diff --git a/lib/assets/flags/aq.png b/packages/zeta_flutter/assets/flags/aq.png similarity index 100% rename from lib/assets/flags/aq.png rename to packages/zeta_flutter/assets/flags/aq.png diff --git a/lib/assets/flags/ar.png b/packages/zeta_flutter/assets/flags/ar.png similarity index 100% rename from lib/assets/flags/ar.png rename to packages/zeta_flutter/assets/flags/ar.png diff --git a/lib/assets/flags/as.png b/packages/zeta_flutter/assets/flags/as.png similarity index 100% rename from lib/assets/flags/as.png rename to packages/zeta_flutter/assets/flags/as.png diff --git a/lib/assets/flags/at.png b/packages/zeta_flutter/assets/flags/at.png similarity index 100% rename from lib/assets/flags/at.png rename to packages/zeta_flutter/assets/flags/at.png diff --git a/lib/assets/flags/au.png b/packages/zeta_flutter/assets/flags/au.png similarity index 100% rename from lib/assets/flags/au.png rename to packages/zeta_flutter/assets/flags/au.png diff --git a/lib/assets/flags/aw.png b/packages/zeta_flutter/assets/flags/aw.png similarity index 100% rename from lib/assets/flags/aw.png rename to packages/zeta_flutter/assets/flags/aw.png diff --git a/lib/assets/flags/ax.png b/packages/zeta_flutter/assets/flags/ax.png similarity index 100% rename from lib/assets/flags/ax.png rename to packages/zeta_flutter/assets/flags/ax.png diff --git a/lib/assets/flags/az.png b/packages/zeta_flutter/assets/flags/az.png similarity index 100% rename from lib/assets/flags/az.png rename to packages/zeta_flutter/assets/flags/az.png diff --git a/lib/assets/flags/ba.png b/packages/zeta_flutter/assets/flags/ba.png similarity index 100% rename from lib/assets/flags/ba.png rename to packages/zeta_flutter/assets/flags/ba.png diff --git a/lib/assets/flags/bb.png b/packages/zeta_flutter/assets/flags/bb.png similarity index 100% rename from lib/assets/flags/bb.png rename to packages/zeta_flutter/assets/flags/bb.png diff --git a/lib/assets/flags/bd.png b/packages/zeta_flutter/assets/flags/bd.png similarity index 100% rename from lib/assets/flags/bd.png rename to packages/zeta_flutter/assets/flags/bd.png diff --git a/lib/assets/flags/be.png b/packages/zeta_flutter/assets/flags/be.png similarity index 100% rename from lib/assets/flags/be.png rename to packages/zeta_flutter/assets/flags/be.png diff --git a/lib/assets/flags/bf.png b/packages/zeta_flutter/assets/flags/bf.png similarity index 100% rename from lib/assets/flags/bf.png rename to packages/zeta_flutter/assets/flags/bf.png diff --git a/lib/assets/flags/bg.png b/packages/zeta_flutter/assets/flags/bg.png similarity index 100% rename from lib/assets/flags/bg.png rename to packages/zeta_flutter/assets/flags/bg.png diff --git a/lib/assets/flags/bh.png b/packages/zeta_flutter/assets/flags/bh.png similarity index 100% rename from lib/assets/flags/bh.png rename to packages/zeta_flutter/assets/flags/bh.png diff --git a/lib/assets/flags/bi.png b/packages/zeta_flutter/assets/flags/bi.png similarity index 100% rename from lib/assets/flags/bi.png rename to packages/zeta_flutter/assets/flags/bi.png diff --git a/lib/assets/flags/bj.png b/packages/zeta_flutter/assets/flags/bj.png similarity index 100% rename from lib/assets/flags/bj.png rename to packages/zeta_flutter/assets/flags/bj.png diff --git a/lib/assets/flags/bl.png b/packages/zeta_flutter/assets/flags/bl.png similarity index 100% rename from lib/assets/flags/bl.png rename to packages/zeta_flutter/assets/flags/bl.png diff --git a/lib/assets/flags/bm.png b/packages/zeta_flutter/assets/flags/bm.png similarity index 100% rename from lib/assets/flags/bm.png rename to packages/zeta_flutter/assets/flags/bm.png diff --git a/lib/assets/flags/bn.png b/packages/zeta_flutter/assets/flags/bn.png similarity index 100% rename from lib/assets/flags/bn.png rename to packages/zeta_flutter/assets/flags/bn.png diff --git a/lib/assets/flags/bo.png b/packages/zeta_flutter/assets/flags/bo.png similarity index 100% rename from lib/assets/flags/bo.png rename to packages/zeta_flutter/assets/flags/bo.png diff --git a/lib/assets/flags/bq.png b/packages/zeta_flutter/assets/flags/bq.png similarity index 100% rename from lib/assets/flags/bq.png rename to packages/zeta_flutter/assets/flags/bq.png diff --git a/lib/assets/flags/br.png b/packages/zeta_flutter/assets/flags/br.png similarity index 100% rename from lib/assets/flags/br.png rename to packages/zeta_flutter/assets/flags/br.png diff --git a/lib/assets/flags/bs.png b/packages/zeta_flutter/assets/flags/bs.png similarity index 100% rename from lib/assets/flags/bs.png rename to packages/zeta_flutter/assets/flags/bs.png diff --git a/lib/assets/flags/bt.png b/packages/zeta_flutter/assets/flags/bt.png similarity index 100% rename from lib/assets/flags/bt.png rename to packages/zeta_flutter/assets/flags/bt.png diff --git a/lib/assets/flags/bv.png b/packages/zeta_flutter/assets/flags/bv.png similarity index 100% rename from lib/assets/flags/bv.png rename to packages/zeta_flutter/assets/flags/bv.png diff --git a/lib/assets/flags/bw.png b/packages/zeta_flutter/assets/flags/bw.png similarity index 100% rename from lib/assets/flags/bw.png rename to packages/zeta_flutter/assets/flags/bw.png diff --git a/lib/assets/flags/by.png b/packages/zeta_flutter/assets/flags/by.png similarity index 100% rename from lib/assets/flags/by.png rename to packages/zeta_flutter/assets/flags/by.png diff --git a/lib/assets/flags/bz.png b/packages/zeta_flutter/assets/flags/bz.png similarity index 100% rename from lib/assets/flags/bz.png rename to packages/zeta_flutter/assets/flags/bz.png diff --git a/lib/assets/flags/ca.png b/packages/zeta_flutter/assets/flags/ca.png similarity index 100% rename from lib/assets/flags/ca.png rename to packages/zeta_flutter/assets/flags/ca.png diff --git a/lib/assets/flags/cc.png b/packages/zeta_flutter/assets/flags/cc.png similarity index 100% rename from lib/assets/flags/cc.png rename to packages/zeta_flutter/assets/flags/cc.png diff --git a/lib/assets/flags/cd.png b/packages/zeta_flutter/assets/flags/cd.png similarity index 100% rename from lib/assets/flags/cd.png rename to packages/zeta_flutter/assets/flags/cd.png diff --git a/lib/assets/flags/cf.png b/packages/zeta_flutter/assets/flags/cf.png similarity index 100% rename from lib/assets/flags/cf.png rename to packages/zeta_flutter/assets/flags/cf.png diff --git a/lib/assets/flags/cg.png b/packages/zeta_flutter/assets/flags/cg.png similarity index 100% rename from lib/assets/flags/cg.png rename to packages/zeta_flutter/assets/flags/cg.png diff --git a/lib/assets/flags/ch.png b/packages/zeta_flutter/assets/flags/ch.png similarity index 100% rename from lib/assets/flags/ch.png rename to packages/zeta_flutter/assets/flags/ch.png diff --git a/lib/assets/flags/ci.png b/packages/zeta_flutter/assets/flags/ci.png similarity index 100% rename from lib/assets/flags/ci.png rename to packages/zeta_flutter/assets/flags/ci.png diff --git a/lib/assets/flags/ck.png b/packages/zeta_flutter/assets/flags/ck.png similarity index 100% rename from lib/assets/flags/ck.png rename to packages/zeta_flutter/assets/flags/ck.png diff --git a/lib/assets/flags/cl.png b/packages/zeta_flutter/assets/flags/cl.png similarity index 100% rename from lib/assets/flags/cl.png rename to packages/zeta_flutter/assets/flags/cl.png diff --git a/lib/assets/flags/cm.png b/packages/zeta_flutter/assets/flags/cm.png similarity index 100% rename from lib/assets/flags/cm.png rename to packages/zeta_flutter/assets/flags/cm.png diff --git a/lib/assets/flags/cn.png b/packages/zeta_flutter/assets/flags/cn.png similarity index 100% rename from lib/assets/flags/cn.png rename to packages/zeta_flutter/assets/flags/cn.png diff --git a/lib/assets/flags/co.png b/packages/zeta_flutter/assets/flags/co.png similarity index 100% rename from lib/assets/flags/co.png rename to packages/zeta_flutter/assets/flags/co.png diff --git a/lib/assets/flags/cr.png b/packages/zeta_flutter/assets/flags/cr.png similarity index 100% rename from lib/assets/flags/cr.png rename to packages/zeta_flutter/assets/flags/cr.png diff --git a/lib/assets/flags/cu.png b/packages/zeta_flutter/assets/flags/cu.png similarity index 100% rename from lib/assets/flags/cu.png rename to packages/zeta_flutter/assets/flags/cu.png diff --git a/lib/assets/flags/cv.png b/packages/zeta_flutter/assets/flags/cv.png similarity index 100% rename from lib/assets/flags/cv.png rename to packages/zeta_flutter/assets/flags/cv.png diff --git a/lib/assets/flags/cw.png b/packages/zeta_flutter/assets/flags/cw.png similarity index 100% rename from lib/assets/flags/cw.png rename to packages/zeta_flutter/assets/flags/cw.png diff --git a/lib/assets/flags/cx.png b/packages/zeta_flutter/assets/flags/cx.png similarity index 100% rename from lib/assets/flags/cx.png rename to packages/zeta_flutter/assets/flags/cx.png diff --git a/lib/assets/flags/cy.png b/packages/zeta_flutter/assets/flags/cy.png similarity index 100% rename from lib/assets/flags/cy.png rename to packages/zeta_flutter/assets/flags/cy.png diff --git a/lib/assets/flags/cz.png b/packages/zeta_flutter/assets/flags/cz.png similarity index 100% rename from lib/assets/flags/cz.png rename to packages/zeta_flutter/assets/flags/cz.png diff --git a/lib/assets/flags/de.png b/packages/zeta_flutter/assets/flags/de.png similarity index 100% rename from lib/assets/flags/de.png rename to packages/zeta_flutter/assets/flags/de.png diff --git a/lib/assets/flags/dj.png b/packages/zeta_flutter/assets/flags/dj.png similarity index 100% rename from lib/assets/flags/dj.png rename to packages/zeta_flutter/assets/flags/dj.png diff --git a/lib/assets/flags/dk.png b/packages/zeta_flutter/assets/flags/dk.png similarity index 100% rename from lib/assets/flags/dk.png rename to packages/zeta_flutter/assets/flags/dk.png diff --git a/lib/assets/flags/dm.png b/packages/zeta_flutter/assets/flags/dm.png similarity index 100% rename from lib/assets/flags/dm.png rename to packages/zeta_flutter/assets/flags/dm.png diff --git a/lib/assets/flags/do.png b/packages/zeta_flutter/assets/flags/do.png similarity index 100% rename from lib/assets/flags/do.png rename to packages/zeta_flutter/assets/flags/do.png diff --git a/lib/assets/flags/dz.png b/packages/zeta_flutter/assets/flags/dz.png similarity index 100% rename from lib/assets/flags/dz.png rename to packages/zeta_flutter/assets/flags/dz.png diff --git a/lib/assets/flags/ec.png b/packages/zeta_flutter/assets/flags/ec.png similarity index 100% rename from lib/assets/flags/ec.png rename to packages/zeta_flutter/assets/flags/ec.png diff --git a/lib/assets/flags/ee.png b/packages/zeta_flutter/assets/flags/ee.png similarity index 100% rename from lib/assets/flags/ee.png rename to packages/zeta_flutter/assets/flags/ee.png diff --git a/lib/assets/flags/eg.png b/packages/zeta_flutter/assets/flags/eg.png similarity index 100% rename from lib/assets/flags/eg.png rename to packages/zeta_flutter/assets/flags/eg.png diff --git a/lib/assets/flags/eh.png b/packages/zeta_flutter/assets/flags/eh.png similarity index 100% rename from lib/assets/flags/eh.png rename to packages/zeta_flutter/assets/flags/eh.png diff --git a/lib/assets/flags/er.png b/packages/zeta_flutter/assets/flags/er.png similarity index 100% rename from lib/assets/flags/er.png rename to packages/zeta_flutter/assets/flags/er.png diff --git a/lib/assets/flags/es.png b/packages/zeta_flutter/assets/flags/es.png similarity index 100% rename from lib/assets/flags/es.png rename to packages/zeta_flutter/assets/flags/es.png diff --git a/lib/assets/flags/et.png b/packages/zeta_flutter/assets/flags/et.png similarity index 100% rename from lib/assets/flags/et.png rename to packages/zeta_flutter/assets/flags/et.png diff --git a/lib/assets/flags/eu.png b/packages/zeta_flutter/assets/flags/eu.png similarity index 100% rename from lib/assets/flags/eu.png rename to packages/zeta_flutter/assets/flags/eu.png diff --git a/lib/assets/flags/fi.png b/packages/zeta_flutter/assets/flags/fi.png similarity index 100% rename from lib/assets/flags/fi.png rename to packages/zeta_flutter/assets/flags/fi.png diff --git a/lib/assets/flags/fj.png b/packages/zeta_flutter/assets/flags/fj.png similarity index 100% rename from lib/assets/flags/fj.png rename to packages/zeta_flutter/assets/flags/fj.png diff --git a/lib/assets/flags/fk.png b/packages/zeta_flutter/assets/flags/fk.png similarity index 100% rename from lib/assets/flags/fk.png rename to packages/zeta_flutter/assets/flags/fk.png diff --git a/lib/assets/flags/fm.png b/packages/zeta_flutter/assets/flags/fm.png similarity index 100% rename from lib/assets/flags/fm.png rename to packages/zeta_flutter/assets/flags/fm.png diff --git a/lib/assets/flags/fo.png b/packages/zeta_flutter/assets/flags/fo.png similarity index 100% rename from lib/assets/flags/fo.png rename to packages/zeta_flutter/assets/flags/fo.png diff --git a/lib/assets/flags/fr.png b/packages/zeta_flutter/assets/flags/fr.png similarity index 100% rename from lib/assets/flags/fr.png rename to packages/zeta_flutter/assets/flags/fr.png diff --git a/lib/assets/flags/ga.png b/packages/zeta_flutter/assets/flags/ga.png similarity index 100% rename from lib/assets/flags/ga.png rename to packages/zeta_flutter/assets/flags/ga.png diff --git a/lib/assets/flags/gb-eng.png b/packages/zeta_flutter/assets/flags/gb-eng.png similarity index 100% rename from lib/assets/flags/gb-eng.png rename to packages/zeta_flutter/assets/flags/gb-eng.png diff --git a/lib/assets/flags/gb-nir.png b/packages/zeta_flutter/assets/flags/gb-nir.png similarity index 100% rename from lib/assets/flags/gb-nir.png rename to packages/zeta_flutter/assets/flags/gb-nir.png diff --git a/lib/assets/flags/gb-sct.png b/packages/zeta_flutter/assets/flags/gb-sct.png similarity index 100% rename from lib/assets/flags/gb-sct.png rename to packages/zeta_flutter/assets/flags/gb-sct.png diff --git a/lib/assets/flags/gb-wls.png b/packages/zeta_flutter/assets/flags/gb-wls.png similarity index 100% rename from lib/assets/flags/gb-wls.png rename to packages/zeta_flutter/assets/flags/gb-wls.png diff --git a/lib/assets/flags/gb.png b/packages/zeta_flutter/assets/flags/gb.png similarity index 100% rename from lib/assets/flags/gb.png rename to packages/zeta_flutter/assets/flags/gb.png diff --git a/lib/assets/flags/gd.png b/packages/zeta_flutter/assets/flags/gd.png similarity index 100% rename from lib/assets/flags/gd.png rename to packages/zeta_flutter/assets/flags/gd.png diff --git a/lib/assets/flags/ge.png b/packages/zeta_flutter/assets/flags/ge.png similarity index 100% rename from lib/assets/flags/ge.png rename to packages/zeta_flutter/assets/flags/ge.png diff --git a/lib/assets/flags/gf.png b/packages/zeta_flutter/assets/flags/gf.png similarity index 100% rename from lib/assets/flags/gf.png rename to packages/zeta_flutter/assets/flags/gf.png diff --git a/lib/assets/flags/gg.png b/packages/zeta_flutter/assets/flags/gg.png similarity index 100% rename from lib/assets/flags/gg.png rename to packages/zeta_flutter/assets/flags/gg.png diff --git a/lib/assets/flags/gh.png b/packages/zeta_flutter/assets/flags/gh.png similarity index 100% rename from lib/assets/flags/gh.png rename to packages/zeta_flutter/assets/flags/gh.png diff --git a/lib/assets/flags/gi.png b/packages/zeta_flutter/assets/flags/gi.png similarity index 100% rename from lib/assets/flags/gi.png rename to packages/zeta_flutter/assets/flags/gi.png diff --git a/lib/assets/flags/gl.png b/packages/zeta_flutter/assets/flags/gl.png similarity index 100% rename from lib/assets/flags/gl.png rename to packages/zeta_flutter/assets/flags/gl.png diff --git a/lib/assets/flags/gm.png b/packages/zeta_flutter/assets/flags/gm.png similarity index 100% rename from lib/assets/flags/gm.png rename to packages/zeta_flutter/assets/flags/gm.png diff --git a/lib/assets/flags/gn.png b/packages/zeta_flutter/assets/flags/gn.png similarity index 100% rename from lib/assets/flags/gn.png rename to packages/zeta_flutter/assets/flags/gn.png diff --git a/lib/assets/flags/gp.png b/packages/zeta_flutter/assets/flags/gp.png similarity index 100% rename from lib/assets/flags/gp.png rename to packages/zeta_flutter/assets/flags/gp.png diff --git a/lib/assets/flags/gq.png b/packages/zeta_flutter/assets/flags/gq.png similarity index 100% rename from lib/assets/flags/gq.png rename to packages/zeta_flutter/assets/flags/gq.png diff --git a/lib/assets/flags/gr.png b/packages/zeta_flutter/assets/flags/gr.png similarity index 100% rename from lib/assets/flags/gr.png rename to packages/zeta_flutter/assets/flags/gr.png diff --git a/lib/assets/flags/gs.png b/packages/zeta_flutter/assets/flags/gs.png similarity index 100% rename from lib/assets/flags/gs.png rename to packages/zeta_flutter/assets/flags/gs.png diff --git a/lib/assets/flags/gt.png b/packages/zeta_flutter/assets/flags/gt.png similarity index 100% rename from lib/assets/flags/gt.png rename to packages/zeta_flutter/assets/flags/gt.png diff --git a/lib/assets/flags/gu.png b/packages/zeta_flutter/assets/flags/gu.png similarity index 100% rename from lib/assets/flags/gu.png rename to packages/zeta_flutter/assets/flags/gu.png diff --git a/lib/assets/flags/gw.png b/packages/zeta_flutter/assets/flags/gw.png similarity index 100% rename from lib/assets/flags/gw.png rename to packages/zeta_flutter/assets/flags/gw.png diff --git a/lib/assets/flags/gy.png b/packages/zeta_flutter/assets/flags/gy.png similarity index 100% rename from lib/assets/flags/gy.png rename to packages/zeta_flutter/assets/flags/gy.png diff --git a/lib/assets/flags/hk.png b/packages/zeta_flutter/assets/flags/hk.png similarity index 100% rename from lib/assets/flags/hk.png rename to packages/zeta_flutter/assets/flags/hk.png diff --git a/lib/assets/flags/hm.png b/packages/zeta_flutter/assets/flags/hm.png similarity index 100% rename from lib/assets/flags/hm.png rename to packages/zeta_flutter/assets/flags/hm.png diff --git a/lib/assets/flags/hn.png b/packages/zeta_flutter/assets/flags/hn.png similarity index 100% rename from lib/assets/flags/hn.png rename to packages/zeta_flutter/assets/flags/hn.png diff --git a/lib/assets/flags/hr.png b/packages/zeta_flutter/assets/flags/hr.png similarity index 100% rename from lib/assets/flags/hr.png rename to packages/zeta_flutter/assets/flags/hr.png diff --git a/lib/assets/flags/ht.png b/packages/zeta_flutter/assets/flags/ht.png similarity index 100% rename from lib/assets/flags/ht.png rename to packages/zeta_flutter/assets/flags/ht.png diff --git a/lib/assets/flags/hu.png b/packages/zeta_flutter/assets/flags/hu.png similarity index 100% rename from lib/assets/flags/hu.png rename to packages/zeta_flutter/assets/flags/hu.png diff --git a/lib/assets/flags/id.png b/packages/zeta_flutter/assets/flags/id.png similarity index 100% rename from lib/assets/flags/id.png rename to packages/zeta_flutter/assets/flags/id.png diff --git a/lib/assets/flags/ie.png b/packages/zeta_flutter/assets/flags/ie.png similarity index 100% rename from lib/assets/flags/ie.png rename to packages/zeta_flutter/assets/flags/ie.png diff --git a/lib/assets/flags/il.png b/packages/zeta_flutter/assets/flags/il.png similarity index 100% rename from lib/assets/flags/il.png rename to packages/zeta_flutter/assets/flags/il.png diff --git a/lib/assets/flags/im.png b/packages/zeta_flutter/assets/flags/im.png similarity index 100% rename from lib/assets/flags/im.png rename to packages/zeta_flutter/assets/flags/im.png diff --git a/lib/assets/flags/in.png b/packages/zeta_flutter/assets/flags/in.png similarity index 100% rename from lib/assets/flags/in.png rename to packages/zeta_flutter/assets/flags/in.png diff --git a/lib/assets/flags/io.png b/packages/zeta_flutter/assets/flags/io.png similarity index 100% rename from lib/assets/flags/io.png rename to packages/zeta_flutter/assets/flags/io.png diff --git a/lib/assets/flags/iq.png b/packages/zeta_flutter/assets/flags/iq.png similarity index 100% rename from lib/assets/flags/iq.png rename to packages/zeta_flutter/assets/flags/iq.png diff --git a/lib/assets/flags/ir.png b/packages/zeta_flutter/assets/flags/ir.png similarity index 100% rename from lib/assets/flags/ir.png rename to packages/zeta_flutter/assets/flags/ir.png diff --git a/lib/assets/flags/is.png b/packages/zeta_flutter/assets/flags/is.png similarity index 100% rename from lib/assets/flags/is.png rename to packages/zeta_flutter/assets/flags/is.png diff --git a/lib/assets/flags/it.png b/packages/zeta_flutter/assets/flags/it.png similarity index 100% rename from lib/assets/flags/it.png rename to packages/zeta_flutter/assets/flags/it.png diff --git a/lib/assets/flags/je.png b/packages/zeta_flutter/assets/flags/je.png similarity index 100% rename from lib/assets/flags/je.png rename to packages/zeta_flutter/assets/flags/je.png diff --git a/lib/assets/flags/jm.png b/packages/zeta_flutter/assets/flags/jm.png similarity index 100% rename from lib/assets/flags/jm.png rename to packages/zeta_flutter/assets/flags/jm.png diff --git a/lib/assets/flags/jo.png b/packages/zeta_flutter/assets/flags/jo.png similarity index 100% rename from lib/assets/flags/jo.png rename to packages/zeta_flutter/assets/flags/jo.png diff --git a/lib/assets/flags/jp.png b/packages/zeta_flutter/assets/flags/jp.png similarity index 100% rename from lib/assets/flags/jp.png rename to packages/zeta_flutter/assets/flags/jp.png diff --git a/lib/assets/flags/ke.png b/packages/zeta_flutter/assets/flags/ke.png similarity index 100% rename from lib/assets/flags/ke.png rename to packages/zeta_flutter/assets/flags/ke.png diff --git a/lib/assets/flags/kg.png b/packages/zeta_flutter/assets/flags/kg.png similarity index 100% rename from lib/assets/flags/kg.png rename to packages/zeta_flutter/assets/flags/kg.png diff --git a/lib/assets/flags/kh.png b/packages/zeta_flutter/assets/flags/kh.png similarity index 100% rename from lib/assets/flags/kh.png rename to packages/zeta_flutter/assets/flags/kh.png diff --git a/lib/assets/flags/ki.png b/packages/zeta_flutter/assets/flags/ki.png similarity index 100% rename from lib/assets/flags/ki.png rename to packages/zeta_flutter/assets/flags/ki.png diff --git a/lib/assets/flags/km.png b/packages/zeta_flutter/assets/flags/km.png similarity index 100% rename from lib/assets/flags/km.png rename to packages/zeta_flutter/assets/flags/km.png diff --git a/lib/assets/flags/kn.png b/packages/zeta_flutter/assets/flags/kn.png similarity index 100% rename from lib/assets/flags/kn.png rename to packages/zeta_flutter/assets/flags/kn.png diff --git a/lib/assets/flags/kp.png b/packages/zeta_flutter/assets/flags/kp.png similarity index 100% rename from lib/assets/flags/kp.png rename to packages/zeta_flutter/assets/flags/kp.png diff --git a/lib/assets/flags/kr.png b/packages/zeta_flutter/assets/flags/kr.png similarity index 100% rename from lib/assets/flags/kr.png rename to packages/zeta_flutter/assets/flags/kr.png diff --git a/lib/assets/flags/kw.png b/packages/zeta_flutter/assets/flags/kw.png similarity index 100% rename from lib/assets/flags/kw.png rename to packages/zeta_flutter/assets/flags/kw.png diff --git a/lib/assets/flags/ky.png b/packages/zeta_flutter/assets/flags/ky.png similarity index 100% rename from lib/assets/flags/ky.png rename to packages/zeta_flutter/assets/flags/ky.png diff --git a/lib/assets/flags/kz.png b/packages/zeta_flutter/assets/flags/kz.png similarity index 100% rename from lib/assets/flags/kz.png rename to packages/zeta_flutter/assets/flags/kz.png diff --git a/lib/assets/flags/la.png b/packages/zeta_flutter/assets/flags/la.png similarity index 100% rename from lib/assets/flags/la.png rename to packages/zeta_flutter/assets/flags/la.png diff --git a/lib/assets/flags/lb.png b/packages/zeta_flutter/assets/flags/lb.png similarity index 100% rename from lib/assets/flags/lb.png rename to packages/zeta_flutter/assets/flags/lb.png diff --git a/lib/assets/flags/lc.png b/packages/zeta_flutter/assets/flags/lc.png similarity index 100% rename from lib/assets/flags/lc.png rename to packages/zeta_flutter/assets/flags/lc.png diff --git a/lib/assets/flags/li.png b/packages/zeta_flutter/assets/flags/li.png similarity index 100% rename from lib/assets/flags/li.png rename to packages/zeta_flutter/assets/flags/li.png diff --git a/lib/assets/flags/lk.png b/packages/zeta_flutter/assets/flags/lk.png similarity index 100% rename from lib/assets/flags/lk.png rename to packages/zeta_flutter/assets/flags/lk.png diff --git a/lib/assets/flags/lr.png b/packages/zeta_flutter/assets/flags/lr.png similarity index 100% rename from lib/assets/flags/lr.png rename to packages/zeta_flutter/assets/flags/lr.png diff --git a/lib/assets/flags/ls.png b/packages/zeta_flutter/assets/flags/ls.png similarity index 100% rename from lib/assets/flags/ls.png rename to packages/zeta_flutter/assets/flags/ls.png diff --git a/lib/assets/flags/lt.png b/packages/zeta_flutter/assets/flags/lt.png similarity index 100% rename from lib/assets/flags/lt.png rename to packages/zeta_flutter/assets/flags/lt.png diff --git a/lib/assets/flags/lu.png b/packages/zeta_flutter/assets/flags/lu.png similarity index 100% rename from lib/assets/flags/lu.png rename to packages/zeta_flutter/assets/flags/lu.png diff --git a/lib/assets/flags/lv.png b/packages/zeta_flutter/assets/flags/lv.png similarity index 100% rename from lib/assets/flags/lv.png rename to packages/zeta_flutter/assets/flags/lv.png diff --git a/lib/assets/flags/ly.png b/packages/zeta_flutter/assets/flags/ly.png similarity index 100% rename from lib/assets/flags/ly.png rename to packages/zeta_flutter/assets/flags/ly.png diff --git a/lib/assets/flags/ma.png b/packages/zeta_flutter/assets/flags/ma.png similarity index 100% rename from lib/assets/flags/ma.png rename to packages/zeta_flutter/assets/flags/ma.png diff --git a/lib/assets/flags/mc.png b/packages/zeta_flutter/assets/flags/mc.png similarity index 100% rename from lib/assets/flags/mc.png rename to packages/zeta_flutter/assets/flags/mc.png diff --git a/lib/assets/flags/md.png b/packages/zeta_flutter/assets/flags/md.png similarity index 100% rename from lib/assets/flags/md.png rename to packages/zeta_flutter/assets/flags/md.png diff --git a/lib/assets/flags/me.png b/packages/zeta_flutter/assets/flags/me.png similarity index 100% rename from lib/assets/flags/me.png rename to packages/zeta_flutter/assets/flags/me.png diff --git a/lib/assets/flags/mf.png b/packages/zeta_flutter/assets/flags/mf.png similarity index 100% rename from lib/assets/flags/mf.png rename to packages/zeta_flutter/assets/flags/mf.png diff --git a/lib/assets/flags/mg.png b/packages/zeta_flutter/assets/flags/mg.png similarity index 100% rename from lib/assets/flags/mg.png rename to packages/zeta_flutter/assets/flags/mg.png diff --git a/lib/assets/flags/mh.png b/packages/zeta_flutter/assets/flags/mh.png similarity index 100% rename from lib/assets/flags/mh.png rename to packages/zeta_flutter/assets/flags/mh.png diff --git a/lib/assets/flags/mk.png b/packages/zeta_flutter/assets/flags/mk.png similarity index 100% rename from lib/assets/flags/mk.png rename to packages/zeta_flutter/assets/flags/mk.png diff --git a/lib/assets/flags/ml.png b/packages/zeta_flutter/assets/flags/ml.png similarity index 100% rename from lib/assets/flags/ml.png rename to packages/zeta_flutter/assets/flags/ml.png diff --git a/lib/assets/flags/mm.png b/packages/zeta_flutter/assets/flags/mm.png similarity index 100% rename from lib/assets/flags/mm.png rename to packages/zeta_flutter/assets/flags/mm.png diff --git a/lib/assets/flags/mn.png b/packages/zeta_flutter/assets/flags/mn.png similarity index 100% rename from lib/assets/flags/mn.png rename to packages/zeta_flutter/assets/flags/mn.png diff --git a/lib/assets/flags/mo.png b/packages/zeta_flutter/assets/flags/mo.png similarity index 100% rename from lib/assets/flags/mo.png rename to packages/zeta_flutter/assets/flags/mo.png diff --git a/lib/assets/flags/mp.png b/packages/zeta_flutter/assets/flags/mp.png similarity index 100% rename from lib/assets/flags/mp.png rename to packages/zeta_flutter/assets/flags/mp.png diff --git a/lib/assets/flags/mq.png b/packages/zeta_flutter/assets/flags/mq.png similarity index 100% rename from lib/assets/flags/mq.png rename to packages/zeta_flutter/assets/flags/mq.png diff --git a/lib/assets/flags/mr.png b/packages/zeta_flutter/assets/flags/mr.png similarity index 100% rename from lib/assets/flags/mr.png rename to packages/zeta_flutter/assets/flags/mr.png diff --git a/lib/assets/flags/ms.png b/packages/zeta_flutter/assets/flags/ms.png similarity index 100% rename from lib/assets/flags/ms.png rename to packages/zeta_flutter/assets/flags/ms.png diff --git a/lib/assets/flags/mt.png b/packages/zeta_flutter/assets/flags/mt.png similarity index 100% rename from lib/assets/flags/mt.png rename to packages/zeta_flutter/assets/flags/mt.png diff --git a/lib/assets/flags/mu.png b/packages/zeta_flutter/assets/flags/mu.png similarity index 100% rename from lib/assets/flags/mu.png rename to packages/zeta_flutter/assets/flags/mu.png diff --git a/lib/assets/flags/mv.png b/packages/zeta_flutter/assets/flags/mv.png similarity index 100% rename from lib/assets/flags/mv.png rename to packages/zeta_flutter/assets/flags/mv.png diff --git a/lib/assets/flags/mw.png b/packages/zeta_flutter/assets/flags/mw.png similarity index 100% rename from lib/assets/flags/mw.png rename to packages/zeta_flutter/assets/flags/mw.png diff --git a/lib/assets/flags/mx.png b/packages/zeta_flutter/assets/flags/mx.png similarity index 100% rename from lib/assets/flags/mx.png rename to packages/zeta_flutter/assets/flags/mx.png diff --git a/lib/assets/flags/my.png b/packages/zeta_flutter/assets/flags/my.png similarity index 100% rename from lib/assets/flags/my.png rename to packages/zeta_flutter/assets/flags/my.png diff --git a/lib/assets/flags/mz.png b/packages/zeta_flutter/assets/flags/mz.png similarity index 100% rename from lib/assets/flags/mz.png rename to packages/zeta_flutter/assets/flags/mz.png diff --git a/lib/assets/flags/na.png b/packages/zeta_flutter/assets/flags/na.png similarity index 100% rename from lib/assets/flags/na.png rename to packages/zeta_flutter/assets/flags/na.png diff --git a/lib/assets/flags/nc.png b/packages/zeta_flutter/assets/flags/nc.png similarity index 100% rename from lib/assets/flags/nc.png rename to packages/zeta_flutter/assets/flags/nc.png diff --git a/lib/assets/flags/ne.png b/packages/zeta_flutter/assets/flags/ne.png similarity index 100% rename from lib/assets/flags/ne.png rename to packages/zeta_flutter/assets/flags/ne.png diff --git a/lib/assets/flags/nf.png b/packages/zeta_flutter/assets/flags/nf.png similarity index 100% rename from lib/assets/flags/nf.png rename to packages/zeta_flutter/assets/flags/nf.png diff --git a/lib/assets/flags/ng.png b/packages/zeta_flutter/assets/flags/ng.png similarity index 100% rename from lib/assets/flags/ng.png rename to packages/zeta_flutter/assets/flags/ng.png diff --git a/lib/assets/flags/ni.png b/packages/zeta_flutter/assets/flags/ni.png similarity index 100% rename from lib/assets/flags/ni.png rename to packages/zeta_flutter/assets/flags/ni.png diff --git a/lib/assets/flags/nl.png b/packages/zeta_flutter/assets/flags/nl.png similarity index 100% rename from lib/assets/flags/nl.png rename to packages/zeta_flutter/assets/flags/nl.png diff --git a/lib/assets/flags/no.png b/packages/zeta_flutter/assets/flags/no.png similarity index 100% rename from lib/assets/flags/no.png rename to packages/zeta_flutter/assets/flags/no.png diff --git a/lib/assets/flags/np.png b/packages/zeta_flutter/assets/flags/np.png similarity index 100% rename from lib/assets/flags/np.png rename to packages/zeta_flutter/assets/flags/np.png diff --git a/lib/assets/flags/nr.png b/packages/zeta_flutter/assets/flags/nr.png similarity index 100% rename from lib/assets/flags/nr.png rename to packages/zeta_flutter/assets/flags/nr.png diff --git a/lib/assets/flags/nu.png b/packages/zeta_flutter/assets/flags/nu.png similarity index 100% rename from lib/assets/flags/nu.png rename to packages/zeta_flutter/assets/flags/nu.png diff --git a/lib/assets/flags/nz.png b/packages/zeta_flutter/assets/flags/nz.png similarity index 100% rename from lib/assets/flags/nz.png rename to packages/zeta_flutter/assets/flags/nz.png diff --git a/lib/assets/flags/om.png b/packages/zeta_flutter/assets/flags/om.png similarity index 100% rename from lib/assets/flags/om.png rename to packages/zeta_flutter/assets/flags/om.png diff --git a/lib/assets/flags/pa.png b/packages/zeta_flutter/assets/flags/pa.png similarity index 100% rename from lib/assets/flags/pa.png rename to packages/zeta_flutter/assets/flags/pa.png diff --git a/lib/assets/flags/pe.png b/packages/zeta_flutter/assets/flags/pe.png similarity index 100% rename from lib/assets/flags/pe.png rename to packages/zeta_flutter/assets/flags/pe.png diff --git a/lib/assets/flags/pf.png b/packages/zeta_flutter/assets/flags/pf.png similarity index 100% rename from lib/assets/flags/pf.png rename to packages/zeta_flutter/assets/flags/pf.png diff --git a/lib/assets/flags/pg.png b/packages/zeta_flutter/assets/flags/pg.png similarity index 100% rename from lib/assets/flags/pg.png rename to packages/zeta_flutter/assets/flags/pg.png diff --git a/lib/assets/flags/ph.png b/packages/zeta_flutter/assets/flags/ph.png similarity index 100% rename from lib/assets/flags/ph.png rename to packages/zeta_flutter/assets/flags/ph.png diff --git a/lib/assets/flags/pk.png b/packages/zeta_flutter/assets/flags/pk.png similarity index 100% rename from lib/assets/flags/pk.png rename to packages/zeta_flutter/assets/flags/pk.png diff --git a/lib/assets/flags/pl.png b/packages/zeta_flutter/assets/flags/pl.png similarity index 100% rename from lib/assets/flags/pl.png rename to packages/zeta_flutter/assets/flags/pl.png diff --git a/lib/assets/flags/pm.png b/packages/zeta_flutter/assets/flags/pm.png similarity index 100% rename from lib/assets/flags/pm.png rename to packages/zeta_flutter/assets/flags/pm.png diff --git a/lib/assets/flags/pn.png b/packages/zeta_flutter/assets/flags/pn.png similarity index 100% rename from lib/assets/flags/pn.png rename to packages/zeta_flutter/assets/flags/pn.png diff --git a/lib/assets/flags/pr.png b/packages/zeta_flutter/assets/flags/pr.png similarity index 100% rename from lib/assets/flags/pr.png rename to packages/zeta_flutter/assets/flags/pr.png diff --git a/lib/assets/flags/ps.png b/packages/zeta_flutter/assets/flags/ps.png similarity index 100% rename from lib/assets/flags/ps.png rename to packages/zeta_flutter/assets/flags/ps.png diff --git a/lib/assets/flags/pt.png b/packages/zeta_flutter/assets/flags/pt.png similarity index 100% rename from lib/assets/flags/pt.png rename to packages/zeta_flutter/assets/flags/pt.png diff --git a/lib/assets/flags/pw.png b/packages/zeta_flutter/assets/flags/pw.png similarity index 100% rename from lib/assets/flags/pw.png rename to packages/zeta_flutter/assets/flags/pw.png diff --git a/lib/assets/flags/py.png b/packages/zeta_flutter/assets/flags/py.png similarity index 100% rename from lib/assets/flags/py.png rename to packages/zeta_flutter/assets/flags/py.png diff --git a/lib/assets/flags/qa.png b/packages/zeta_flutter/assets/flags/qa.png similarity index 100% rename from lib/assets/flags/qa.png rename to packages/zeta_flutter/assets/flags/qa.png diff --git a/lib/assets/flags/re.png b/packages/zeta_flutter/assets/flags/re.png similarity index 100% rename from lib/assets/flags/re.png rename to packages/zeta_flutter/assets/flags/re.png diff --git a/lib/assets/flags/ro.png b/packages/zeta_flutter/assets/flags/ro.png similarity index 100% rename from lib/assets/flags/ro.png rename to packages/zeta_flutter/assets/flags/ro.png diff --git a/lib/assets/flags/rs.png b/packages/zeta_flutter/assets/flags/rs.png similarity index 100% rename from lib/assets/flags/rs.png rename to packages/zeta_flutter/assets/flags/rs.png diff --git a/lib/assets/flags/ru.png b/packages/zeta_flutter/assets/flags/ru.png similarity index 100% rename from lib/assets/flags/ru.png rename to packages/zeta_flutter/assets/flags/ru.png diff --git a/lib/assets/flags/rw.png b/packages/zeta_flutter/assets/flags/rw.png similarity index 100% rename from lib/assets/flags/rw.png rename to packages/zeta_flutter/assets/flags/rw.png diff --git a/lib/assets/flags/sa.png b/packages/zeta_flutter/assets/flags/sa.png similarity index 100% rename from lib/assets/flags/sa.png rename to packages/zeta_flutter/assets/flags/sa.png diff --git a/lib/assets/flags/sb.png b/packages/zeta_flutter/assets/flags/sb.png similarity index 100% rename from lib/assets/flags/sb.png rename to packages/zeta_flutter/assets/flags/sb.png diff --git a/lib/assets/flags/sc.png b/packages/zeta_flutter/assets/flags/sc.png similarity index 100% rename from lib/assets/flags/sc.png rename to packages/zeta_flutter/assets/flags/sc.png diff --git a/lib/assets/flags/sd.png b/packages/zeta_flutter/assets/flags/sd.png similarity index 100% rename from lib/assets/flags/sd.png rename to packages/zeta_flutter/assets/flags/sd.png diff --git a/lib/assets/flags/se.png b/packages/zeta_flutter/assets/flags/se.png similarity index 100% rename from lib/assets/flags/se.png rename to packages/zeta_flutter/assets/flags/se.png diff --git a/lib/assets/flags/sg.png b/packages/zeta_flutter/assets/flags/sg.png similarity index 100% rename from lib/assets/flags/sg.png rename to packages/zeta_flutter/assets/flags/sg.png diff --git a/lib/assets/flags/sh.png b/packages/zeta_flutter/assets/flags/sh.png similarity index 100% rename from lib/assets/flags/sh.png rename to packages/zeta_flutter/assets/flags/sh.png diff --git a/lib/assets/flags/si.png b/packages/zeta_flutter/assets/flags/si.png similarity index 100% rename from lib/assets/flags/si.png rename to packages/zeta_flutter/assets/flags/si.png diff --git a/lib/assets/flags/sj.png b/packages/zeta_flutter/assets/flags/sj.png similarity index 100% rename from lib/assets/flags/sj.png rename to packages/zeta_flutter/assets/flags/sj.png diff --git a/lib/assets/flags/sk.png b/packages/zeta_flutter/assets/flags/sk.png similarity index 100% rename from lib/assets/flags/sk.png rename to packages/zeta_flutter/assets/flags/sk.png diff --git a/lib/assets/flags/sl.png b/packages/zeta_flutter/assets/flags/sl.png similarity index 100% rename from lib/assets/flags/sl.png rename to packages/zeta_flutter/assets/flags/sl.png diff --git a/lib/assets/flags/sm.png b/packages/zeta_flutter/assets/flags/sm.png similarity index 100% rename from lib/assets/flags/sm.png rename to packages/zeta_flutter/assets/flags/sm.png diff --git a/lib/assets/flags/sn.png b/packages/zeta_flutter/assets/flags/sn.png similarity index 100% rename from lib/assets/flags/sn.png rename to packages/zeta_flutter/assets/flags/sn.png diff --git a/lib/assets/flags/so.png b/packages/zeta_flutter/assets/flags/so.png similarity index 100% rename from lib/assets/flags/so.png rename to packages/zeta_flutter/assets/flags/so.png diff --git a/lib/assets/flags/sr.png b/packages/zeta_flutter/assets/flags/sr.png similarity index 100% rename from lib/assets/flags/sr.png rename to packages/zeta_flutter/assets/flags/sr.png diff --git a/lib/assets/flags/ss.png b/packages/zeta_flutter/assets/flags/ss.png similarity index 100% rename from lib/assets/flags/ss.png rename to packages/zeta_flutter/assets/flags/ss.png diff --git a/lib/assets/flags/st.png b/packages/zeta_flutter/assets/flags/st.png similarity index 100% rename from lib/assets/flags/st.png rename to packages/zeta_flutter/assets/flags/st.png diff --git a/lib/assets/flags/sv.png b/packages/zeta_flutter/assets/flags/sv.png similarity index 100% rename from lib/assets/flags/sv.png rename to packages/zeta_flutter/assets/flags/sv.png diff --git a/lib/assets/flags/sx.png b/packages/zeta_flutter/assets/flags/sx.png similarity index 100% rename from lib/assets/flags/sx.png rename to packages/zeta_flutter/assets/flags/sx.png diff --git a/lib/assets/flags/sy.png b/packages/zeta_flutter/assets/flags/sy.png similarity index 100% rename from lib/assets/flags/sy.png rename to packages/zeta_flutter/assets/flags/sy.png diff --git a/lib/assets/flags/sz.png b/packages/zeta_flutter/assets/flags/sz.png similarity index 100% rename from lib/assets/flags/sz.png rename to packages/zeta_flutter/assets/flags/sz.png diff --git a/lib/assets/flags/tc.png b/packages/zeta_flutter/assets/flags/tc.png similarity index 100% rename from lib/assets/flags/tc.png rename to packages/zeta_flutter/assets/flags/tc.png diff --git a/lib/assets/flags/td.png b/packages/zeta_flutter/assets/flags/td.png similarity index 100% rename from lib/assets/flags/td.png rename to packages/zeta_flutter/assets/flags/td.png diff --git a/lib/assets/flags/tf.png b/packages/zeta_flutter/assets/flags/tf.png similarity index 100% rename from lib/assets/flags/tf.png rename to packages/zeta_flutter/assets/flags/tf.png diff --git a/lib/assets/flags/tg.png b/packages/zeta_flutter/assets/flags/tg.png similarity index 100% rename from lib/assets/flags/tg.png rename to packages/zeta_flutter/assets/flags/tg.png diff --git a/lib/assets/flags/th.png b/packages/zeta_flutter/assets/flags/th.png similarity index 100% rename from lib/assets/flags/th.png rename to packages/zeta_flutter/assets/flags/th.png diff --git a/lib/assets/flags/tj.png b/packages/zeta_flutter/assets/flags/tj.png similarity index 100% rename from lib/assets/flags/tj.png rename to packages/zeta_flutter/assets/flags/tj.png diff --git a/lib/assets/flags/tk.png b/packages/zeta_flutter/assets/flags/tk.png similarity index 100% rename from lib/assets/flags/tk.png rename to packages/zeta_flutter/assets/flags/tk.png diff --git a/lib/assets/flags/tl.png b/packages/zeta_flutter/assets/flags/tl.png similarity index 100% rename from lib/assets/flags/tl.png rename to packages/zeta_flutter/assets/flags/tl.png diff --git a/lib/assets/flags/tm.png b/packages/zeta_flutter/assets/flags/tm.png similarity index 100% rename from lib/assets/flags/tm.png rename to packages/zeta_flutter/assets/flags/tm.png diff --git a/lib/assets/flags/tn.png b/packages/zeta_flutter/assets/flags/tn.png similarity index 100% rename from lib/assets/flags/tn.png rename to packages/zeta_flutter/assets/flags/tn.png diff --git a/lib/assets/flags/to.png b/packages/zeta_flutter/assets/flags/to.png similarity index 100% rename from lib/assets/flags/to.png rename to packages/zeta_flutter/assets/flags/to.png diff --git a/lib/assets/flags/tr.png b/packages/zeta_flutter/assets/flags/tr.png similarity index 100% rename from lib/assets/flags/tr.png rename to packages/zeta_flutter/assets/flags/tr.png diff --git a/lib/assets/flags/tt.png b/packages/zeta_flutter/assets/flags/tt.png similarity index 100% rename from lib/assets/flags/tt.png rename to packages/zeta_flutter/assets/flags/tt.png diff --git a/lib/assets/flags/tv.png b/packages/zeta_flutter/assets/flags/tv.png similarity index 100% rename from lib/assets/flags/tv.png rename to packages/zeta_flutter/assets/flags/tv.png diff --git a/lib/assets/flags/tw.png b/packages/zeta_flutter/assets/flags/tw.png similarity index 100% rename from lib/assets/flags/tw.png rename to packages/zeta_flutter/assets/flags/tw.png diff --git a/lib/assets/flags/tz.png b/packages/zeta_flutter/assets/flags/tz.png similarity index 100% rename from lib/assets/flags/tz.png rename to packages/zeta_flutter/assets/flags/tz.png diff --git a/lib/assets/flags/ua.png b/packages/zeta_flutter/assets/flags/ua.png similarity index 100% rename from lib/assets/flags/ua.png rename to packages/zeta_flutter/assets/flags/ua.png diff --git a/lib/assets/flags/ug.png b/packages/zeta_flutter/assets/flags/ug.png similarity index 100% rename from lib/assets/flags/ug.png rename to packages/zeta_flutter/assets/flags/ug.png diff --git a/lib/assets/flags/um.png b/packages/zeta_flutter/assets/flags/um.png similarity index 100% rename from lib/assets/flags/um.png rename to packages/zeta_flutter/assets/flags/um.png diff --git a/lib/assets/flags/us.png b/packages/zeta_flutter/assets/flags/us.png similarity index 100% rename from lib/assets/flags/us.png rename to packages/zeta_flutter/assets/flags/us.png diff --git a/lib/assets/flags/uy.png b/packages/zeta_flutter/assets/flags/uy.png similarity index 100% rename from lib/assets/flags/uy.png rename to packages/zeta_flutter/assets/flags/uy.png diff --git a/lib/assets/flags/uz.png b/packages/zeta_flutter/assets/flags/uz.png similarity index 100% rename from lib/assets/flags/uz.png rename to packages/zeta_flutter/assets/flags/uz.png diff --git a/lib/assets/flags/va.png b/packages/zeta_flutter/assets/flags/va.png similarity index 100% rename from lib/assets/flags/va.png rename to packages/zeta_flutter/assets/flags/va.png diff --git a/lib/assets/flags/vc.png b/packages/zeta_flutter/assets/flags/vc.png similarity index 100% rename from lib/assets/flags/vc.png rename to packages/zeta_flutter/assets/flags/vc.png diff --git a/lib/assets/flags/ve.png b/packages/zeta_flutter/assets/flags/ve.png similarity index 100% rename from lib/assets/flags/ve.png rename to packages/zeta_flutter/assets/flags/ve.png diff --git a/lib/assets/flags/vg.png b/packages/zeta_flutter/assets/flags/vg.png similarity index 100% rename from lib/assets/flags/vg.png rename to packages/zeta_flutter/assets/flags/vg.png diff --git a/lib/assets/flags/vi.png b/packages/zeta_flutter/assets/flags/vi.png similarity index 100% rename from lib/assets/flags/vi.png rename to packages/zeta_flutter/assets/flags/vi.png diff --git a/lib/assets/flags/vn.png b/packages/zeta_flutter/assets/flags/vn.png similarity index 100% rename from lib/assets/flags/vn.png rename to packages/zeta_flutter/assets/flags/vn.png diff --git a/lib/assets/flags/vu.png b/packages/zeta_flutter/assets/flags/vu.png similarity index 100% rename from lib/assets/flags/vu.png rename to packages/zeta_flutter/assets/flags/vu.png diff --git a/lib/assets/flags/wf.png b/packages/zeta_flutter/assets/flags/wf.png similarity index 100% rename from lib/assets/flags/wf.png rename to packages/zeta_flutter/assets/flags/wf.png diff --git a/lib/assets/flags/ws.png b/packages/zeta_flutter/assets/flags/ws.png similarity index 100% rename from lib/assets/flags/ws.png rename to packages/zeta_flutter/assets/flags/ws.png diff --git a/lib/assets/flags/xk.png b/packages/zeta_flutter/assets/flags/xk.png similarity index 100% rename from lib/assets/flags/xk.png rename to packages/zeta_flutter/assets/flags/xk.png diff --git a/lib/assets/flags/ye.png b/packages/zeta_flutter/assets/flags/ye.png similarity index 100% rename from lib/assets/flags/ye.png rename to packages/zeta_flutter/assets/flags/ye.png diff --git a/lib/assets/flags/yt.png b/packages/zeta_flutter/assets/flags/yt.png similarity index 100% rename from lib/assets/flags/yt.png rename to packages/zeta_flutter/assets/flags/yt.png diff --git a/lib/assets/flags/za.png b/packages/zeta_flutter/assets/flags/za.png similarity index 100% rename from lib/assets/flags/za.png rename to packages/zeta_flutter/assets/flags/za.png diff --git a/lib/assets/flags/zm.png b/packages/zeta_flutter/assets/flags/zm.png similarity index 100% rename from lib/assets/flags/zm.png rename to packages/zeta_flutter/assets/flags/zm.png diff --git a/lib/assets/flags/zw.png b/packages/zeta_flutter/assets/flags/zw.png similarity index 100% rename from lib/assets/flags/zw.png rename to packages/zeta_flutter/assets/flags/zw.png diff --git a/lib/assets/logos/zebra-logo-head.svg b/packages/zeta_flutter/assets/logos/zebra-logo-head.svg similarity index 100% rename from lib/assets/logos/zebra-logo-head.svg rename to packages/zeta_flutter/assets/logos/zebra-logo-head.svg diff --git a/packages/zeta_flutter/example/example.md b/packages/zeta_flutter/example/example.md new file mode 100644 index 00000000..efca3129 --- /dev/null +++ b/packages/zeta_flutter/example/example.md @@ -0,0 +1,33 @@ +# zeta_flutter_theme + +Theme resources for zeta_flutter. + +## Template + +To quickly set up a new project to use zeta_flutter, clone [zeta_flutter_template](https://github.com/zebradevs/zeta_flutter_template) to get started. + +## Set up + +To use Zeta components in you app, first the whole app must be wrapped with `ZetaProvider`. The easiest way to do this is with the `ZetaProvider`. + +There are various values that can be passed in; the most commonly used are: + +- `initialThemeMode` (optional) sets whether the app starts in light or dark mode, or uses the device default. +- `initialContrast` (optional) sets whether the app starts with standard (WCAG AA) contrast, or if it attempts to use the more accessible contrast (WCAG AAA). +- `builder` (required) is used to construct the app with all Zeta themes injected. + +```dart +return ZetaProvider( + initialThemeMode: initialThemeMode, + initialContrast: initialContrast, + builder: (context, lightTheme, darkTheme, themeMode) { + /// The following is just an example of how you can use the theme in your app. + return MaterialApp.router( + routerConfig: router, + themeMode: themeMode, + theme: lightTheme, + darkTheme: darkTheme, + ); + }, +); +``` diff --git a/lib/src/components/accordion/accordion.dart b/packages/zeta_flutter/lib/src/components/accordion/accordion.dart similarity index 99% rename from lib/src/components/accordion/accordion.dart rename to packages/zeta_flutter/lib/src/components/accordion/accordion.dart index d281a6d5..b64c4b8e 100644 --- a/lib/src/components/accordion/accordion.dart +++ b/packages/zeta_flutter/lib/src/components/accordion/accordion.dart @@ -1,12 +1,12 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; + import '../../../zeta_flutter.dart'; /// The accordion is a control element comprising a vertically stacked list of items, /// such as labels or thumbnails. Each item can be "expanded" or "collapsed" to reveal /// the content associated with that item. There can be zero expanded items, exactly one, /// or more than one item expanded at a time, depending on the configuration. -/// {@category Components} /// /// Figma: https://www.figma.com/file/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?type=design&node-id=3427-67874 /// diff --git a/lib/src/components/avatar_rail/avatar_rail.dart b/packages/zeta_flutter/lib/src/components/avatar_rail/avatar_rail.dart similarity index 99% rename from lib/src/components/avatar_rail/avatar_rail.dart rename to packages/zeta_flutter/lib/src/components/avatar_rail/avatar_rail.dart index bc0bf753..981519e2 100644 --- a/lib/src/components/avatar_rail/avatar_rail.dart +++ b/packages/zeta_flutter/lib/src/components/avatar_rail/avatar_rail.dart @@ -42,7 +42,6 @@ import '../../../zeta_flutter.dart'; /// /// * [StatelessWidget], which is the superclass of this widget. /// * [ZetaAvatar], which is used within this rail to represent individual avatars. -/// {@category Components} /// /// Figma: https://www.figma.com/file/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?type=design&node-id=20816-388 /// diff --git a/lib/src/components/avatars/avatar.dart b/packages/zeta_flutter/lib/src/components/avatars/avatar.dart similarity index 99% rename from lib/src/components/avatars/avatar.dart rename to packages/zeta_flutter/lib/src/components/avatars/avatar.dart index 5fa59f57..cd6ff3d0 100644 --- a/lib/src/components/avatars/avatar.dart +++ b/packages/zeta_flutter/lib/src/components/avatars/avatar.dart @@ -67,8 +67,6 @@ enum ZetaAvatarSize { /// /// It is recommended to use [ZetaAvatar] with [ZetaAvatarBadge] for status and notification badges, but any widget can be used. /// -/// {@category Components} -/// /// Figma: https://www.figma.com/file/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?type=design&node-id=20816-388 /// /// Widgetbook: https://zeta-ds.web.app/flutter/widgetbook/index.html#/?path=components/avatar/avatar @@ -438,8 +436,6 @@ enum ZetaAvatarBadgeType { /// Badge component used with [ZetaAvatar] as either [ZetaAvatar.upperBadge] or [ZetaAvatar.lowerBadge]. /// -/// {@category Components} -/// /// Sizes and styles are managed by the parent [ZetaAvatar]. class ZetaAvatarBadge extends StatelessWidget { /// Constructor for [ZetaAvatarBadge] diff --git a/lib/src/components/badges/indicator.dart b/packages/zeta_flutter/lib/src/components/badges/indicator.dart similarity index 99% rename from lib/src/components/badges/indicator.dart rename to packages/zeta_flutter/lib/src/components/badges/indicator.dart index 8c903fca..10a10ca5 100644 --- a/lib/src/components/badges/indicator.dart +++ b/packages/zeta_flutter/lib/src/components/badges/indicator.dart @@ -12,7 +12,6 @@ enum ZetaIndicatorType { } /// Indicators are used to show the status of a user or any messages/notifications they might have. -/// {@category Components} /// /// Figma: https://www.figma.com/file/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?type=design&node-id=22000-10045&mode=design&t=6mhOcUUr3tgxxFdd-0 /// diff --git a/lib/src/components/badges/label.dart b/packages/zeta_flutter/lib/src/components/badges/label.dart similarity index 98% rename from lib/src/components/badges/label.dart rename to packages/zeta_flutter/lib/src/components/badges/label.dart index 5c473f73..7f7e74b0 100644 --- a/lib/src/components/badges/label.dart +++ b/packages/zeta_flutter/lib/src/components/badges/label.dart @@ -4,7 +4,6 @@ import 'package:flutter/material.dart'; import '../../../zeta_flutter.dart'; /// Text badges notify users of line items that need attention. -/// {@category Components} /// /// Figma: https://www.figma.com/file/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?type=design&node-id=21926-2099 /// diff --git a/lib/src/components/badges/priority_pill.dart b/packages/zeta_flutter/lib/src/components/badges/priority_pill.dart similarity index 96% rename from lib/src/components/badges/priority_pill.dart rename to packages/zeta_flutter/lib/src/components/badges/priority_pill.dart index 6be9c9d2..a404e00c 100644 --- a/lib/src/components/badges/priority_pill.dart +++ b/packages/zeta_flutter/lib/src/components/badges/priority_pill.dart @@ -42,7 +42,6 @@ enum ZetaPriorityPillSize { } /// This badge is used to indicate the order of importance. -/// {@category Components} /// /// Figma: https://www.figma.com/file/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?type=design&node-id=22000-15955 /// @@ -104,7 +103,7 @@ class ZetaPriorityPill extends ZetaStatelessWidget { final Color lozengeColor = customColor?.shade10 ?? type._lozengeColor(context); final size = this.size == ZetaPriorityPillSize.small ? Zeta.of(context).spacing.xl : Zeta.of(context).spacing.xl_3; - final label = this.label ?? type.name.capitalize(); + final label = this.label ?? type.name.capitalize; final rounded = context.rounded; return Semantics( @@ -128,9 +127,9 @@ class ZetaPriorityPill extends ZetaStatelessWidget { child: Text( (index?.isEmpty ?? true) ? (type == ZetaPriorityPillType.urgent - ? type.name.substring(0, 1).capitalize() + ? type.name.substring(0, 1).capitalize : type.index.toString()) - : index!.substring(0, 1).capitalize(), + : index!.substring(0, 1).capitalize, style: this.size == ZetaPriorityPillSize.small ? ZetaTextStyles.labelSmall.copyWith( fontSize: 10, diff --git a/lib/src/components/badges/status_label.dart b/packages/zeta_flutter/lib/src/components/badges/status_label.dart similarity index 99% rename from lib/src/components/badges/status_label.dart rename to packages/zeta_flutter/lib/src/components/badges/status_label.dart index 0292e048..18313bea 100644 --- a/lib/src/components/badges/status_label.dart +++ b/packages/zeta_flutter/lib/src/components/badges/status_label.dart @@ -4,7 +4,6 @@ import '../../../zeta_flutter.dart'; /// To help some information, labels, or errors stand out, we present them with badges. /// They can look like buttons, but users can’t select them. They just guide users to things they should pay attention to. -/// {@category Components} /// /// Figma: https://www.figma.com/file/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?type=design&node-id=21836-37274 /// diff --git a/lib/src/components/badges/tag.dart b/packages/zeta_flutter/lib/src/components/badges/tag.dart similarity index 99% rename from lib/src/components/badges/tag.dart rename to packages/zeta_flutter/lib/src/components/badges/tag.dart index 36dddca3..817859b7 100644 --- a/lib/src/components/badges/tag.dart +++ b/packages/zeta_flutter/lib/src/components/badges/tag.dart @@ -14,7 +14,6 @@ enum ZetaTagDirection { /// Tags are used to draw attention to a specific area or information. /// The arrow shape helps direct the users attention to the desired place. -/// {@category Components} /// /// Figma: https://www.figma.com/file/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?type=design&node-id=22000-13170 /// diff --git a/lib/src/components/bottom sheets/bottom_sheet.dart b/packages/zeta_flutter/lib/src/components/bottom sheets/bottom_sheet.dart similarity index 98% rename from lib/src/components/bottom sheets/bottom_sheet.dart rename to packages/zeta_flutter/lib/src/components/bottom sheets/bottom_sheet.dart index fe97eb87..aaeb59a7 100644 --- a/lib/src/components/bottom sheets/bottom_sheet.dart +++ b/packages/zeta_flutter/lib/src/components/bottom sheets/bottom_sheet.dart @@ -8,7 +8,6 @@ import '../../../zeta_flutter.dart'; /// To display a [ZetaBottomSheet], use the [showZetaBottomSheet] function. /// /// Content should typically consist of a [List] of [ZetaMenuItem]s. -/// {@category Components} /// /// Figma: https://www.figma.com/file/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=21541-2225 /// @@ -109,7 +108,6 @@ class ZetaBottomSheet extends ZetaStatelessWidget { /// /// Uses [showModalBottomSheet] for functionality, but with Zeta styling and simplified functionality. /// -/// {@category Components} Future showZetaBottomSheet({ required BuildContext context, String? title, diff --git a/lib/src/components/bottom sheets/menu_items.dart b/packages/zeta_flutter/lib/src/components/bottom sheets/menu_items.dart similarity index 99% rename from lib/src/components/bottom sheets/menu_items.dart rename to packages/zeta_flutter/lib/src/components/bottom sheets/menu_items.dart index c42a92e0..c8da8ed2 100644 --- a/lib/src/components/bottom sheets/menu_items.dart +++ b/packages/zeta_flutter/lib/src/components/bottom sheets/menu_items.dart @@ -12,7 +12,6 @@ enum ZetaMenuItemType { } /// Menu Item component, typically used as body of [ZetaBottomSheet]. -/// {@category Components} /// /// Figma: https://www.figma.com/file/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=21541-2225 /// diff --git a/lib/src/components/breadcrumb/breadcrumb.dart b/packages/zeta_flutter/lib/src/components/breadcrumb/breadcrumb.dart similarity index 99% rename from lib/src/components/breadcrumb/breadcrumb.dart rename to packages/zeta_flutter/lib/src/components/breadcrumb/breadcrumb.dart index 1820370d..7c16ccf5 100644 --- a/lib/src/components/breadcrumb/breadcrumb.dart +++ b/packages/zeta_flutter/lib/src/components/breadcrumb/breadcrumb.dart @@ -6,8 +6,6 @@ import '../../../zeta_flutter.dart'; /// /// [children] should consist of [ZetaBreadcrumbItem]s. /// -/// {@category Components} -/// /// Figma: https://www.figma.com/design/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=229-5&node-type=canvas&m=dev /// /// Widgetbook: https://zeta-ds.web.app/flutter/widgetbook/index.html#/?path=components/breadcrumbs @@ -139,7 +137,6 @@ class _ZetaBreadcrumbsState extends State { /// /// Should be a child of [ZetaBreadcrumb]. /// -/// {@category Components} class ZetaBreadcrumbItem extends ZetaStatelessWidget { ///Constructor for [ZetaBreadcrumbItem] ZetaBreadcrumbItem({ diff --git a/lib/src/components/button_group/button_group.dart b/packages/zeta_flutter/lib/src/components/button_group/button_group.dart similarity index 99% rename from lib/src/components/button_group/button_group.dart rename to packages/zeta_flutter/lib/src/components/button_group/button_group.dart index e9cc637a..37618eb7 100644 --- a/lib/src/components/button_group/button_group.dart +++ b/packages/zeta_flutter/lib/src/components/button_group/button_group.dart @@ -4,7 +4,6 @@ import 'package:flutter/material.dart'; import '../../../zeta_flutter.dart'; /// Zeta Button Group -/// {@category Components} /// /// Figma: https://www.figma.com/design/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=229-45&node-type=canvas&m=dev /// @@ -72,7 +71,6 @@ class ZetaButtonGroup extends ZetaStatelessWidget { /// Group Button item. /// -/// {@category Components} class ZetaGroupButton extends ZetaStatefulWidget { /// Public Constructor for [ZetaGroupButton] const ZetaGroupButton({ diff --git a/lib/src/components/buttons/button.dart b/packages/zeta_flutter/lib/src/components/buttons/button.dart similarity index 99% rename from lib/src/components/buttons/button.dart rename to packages/zeta_flutter/lib/src/components/buttons/button.dart index 0121460e..7e770737 100644 --- a/lib/src/components/buttons/button.dart +++ b/packages/zeta_flutter/lib/src/components/buttons/button.dart @@ -2,10 +2,10 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import '../../../zeta_flutter.dart'; + import 'button_style.dart'; /// Zeta Button -/// {@category Components} /// /// Figma: https://www.figma.com/file/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=23126-110945 /// diff --git a/lib/src/components/buttons/button_style.dart b/packages/zeta_flutter/lib/src/components/buttons/button_style.dart similarity index 100% rename from lib/src/components/buttons/button_style.dart rename to packages/zeta_flutter/lib/src/components/buttons/button_style.dart diff --git a/lib/src/components/buttons/icon_button.dart b/packages/zeta_flutter/lib/src/components/buttons/icon_button.dart similarity index 99% rename from lib/src/components/buttons/icon_button.dart rename to packages/zeta_flutter/lib/src/components/buttons/icon_button.dart index 1fe3a866..5a176ee2 100644 --- a/lib/src/components/buttons/icon_button.dart +++ b/packages/zeta_flutter/lib/src/components/buttons/icon_button.dart @@ -2,10 +2,10 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import '../../../zeta_flutter.dart'; + import 'button_style.dart'; /// Component [ZetaIconButton] -/// {@category Components} /// /// Figma: https://www.figma.com/file/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=23126-110314 /// diff --git a/lib/src/components/buttons/input_icon_button.dart b/packages/zeta_flutter/lib/src/components/buttons/input_icon_button.dart similarity index 100% rename from lib/src/components/buttons/input_icon_button.dart rename to packages/zeta_flutter/lib/src/components/buttons/input_icon_button.dart diff --git a/lib/src/components/chat_item/chat_item.dart b/packages/zeta_flutter/lib/src/components/chat_item/chat_item.dart similarity index 99% rename from lib/src/components/chat_item/chat_item.dart rename to packages/zeta_flutter/lib/src/components/chat_item/chat_item.dart index 0c3ea886..39ba4711 100644 --- a/lib/src/components/chat_item/chat_item.dart +++ b/packages/zeta_flutter/lib/src/components/chat_item/chat_item.dart @@ -5,7 +5,6 @@ import 'package:intl/intl.dart'; import '../../../zeta_flutter.dart'; /// Chat item widget that can be dragged to reveal contextual actions. -/// {@category Components} /// /// Figma: https://www.figma.com/design/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=24828-46282&node-type=canvas&m=dev /// @@ -384,8 +383,6 @@ enum _ZetaSlidableActionType { } /// Slidable action widget for [ZetaChatItem]. -/// -/// {@category Components} class ZetaSlidableAction extends StatelessWidget { /// Constructs a [ZetaSlidableAction]. const ZetaSlidableAction({ diff --git a/lib/src/components/chat_item/contact_item.dart b/packages/zeta_flutter/lib/src/components/chat_item/contact_item.dart similarity index 99% rename from lib/src/components/chat_item/contact_item.dart rename to packages/zeta_flutter/lib/src/components/chat_item/contact_item.dart index fa49ed42..c24aaea4 100644 --- a/lib/src/components/chat_item/contact_item.dart +++ b/packages/zeta_flutter/lib/src/components/chat_item/contact_item.dart @@ -4,8 +4,6 @@ import '../../../zeta_flutter.dart'; /// A single row that contains avatar, title and subtitle. /// -/// {@category Components} -/// /// Figma: https://www.figma.com/design/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=24828-46282&node-type=canvas&m=dev /// /// Widgetbook: https://zeta-ds.web.app/flutter/widgetbook/index.html#/?path=components/list-items/contact-item diff --git a/lib/src/components/checkbox/checkbox.dart b/packages/zeta_flutter/lib/src/components/checkbox/checkbox.dart similarity index 99% rename from lib/src/components/checkbox/checkbox.dart rename to packages/zeta_flutter/lib/src/components/checkbox/checkbox.dart index 1ff7cf8f..e937f096 100644 --- a/lib/src/components/checkbox/checkbox.dart +++ b/packages/zeta_flutter/lib/src/components/checkbox/checkbox.dart @@ -10,8 +10,6 @@ import '../../../zeta_flutter.dart'; /// rebuild the checkbox with a new [value] to update the visual appearance of /// the checkbox. /// -/// {@category Components} -/// /// Figma: https://www.figma.com/file/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=21510-54003 /// /// Widgetbook: https://zeta-ds.web.app/flutter/widgetbook/index.html#/?path=components/checkbox @@ -97,7 +95,6 @@ class ZetaCheckbox extends FormField { /// [FormFieldState] for [ZetaCheckbox]. /// -/// {@category Components} class ZetaCheckboxFormFieldState extends FormFieldState { @override ZetaCheckbox get widget => super.widget as ZetaCheckbox; diff --git a/lib/src/components/chips/assist_chip.dart b/packages/zeta_flutter/lib/src/components/chips/assist_chip.dart similarity index 96% rename from lib/src/components/chips/assist_chip.dart rename to packages/zeta_flutter/lib/src/components/chips/assist_chip.dart index 343bba38..9fdaf0b9 100644 --- a/lib/src/components/chips/assist_chip.dart +++ b/packages/zeta_flutter/lib/src/components/chips/assist_chip.dart @@ -5,7 +5,6 @@ import '../../../zeta_flutter.dart'; /// Leading widget should typically be an icon. /// /// These chips use [Draggable] and can be dragged around the screen and placed in new locations using [DragTarget]. -/// {@category Components} /// /// Figma: https://www.figma.com/file/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=21265-14215 /// diff --git a/lib/src/components/chips/chip.dart b/packages/zeta_flutter/lib/src/components/chips/chip.dart similarity index 99% rename from lib/src/components/chips/chip.dart rename to packages/zeta_flutter/lib/src/components/chips/chip.dart index ac091a97..ad23269b 100644 --- a/lib/src/components/chips/chip.dart +++ b/packages/zeta_flutter/lib/src/components/chips/chip.dart @@ -11,8 +11,6 @@ export 'status_chip.dart'; /// This covers the broad functionality of [ZetaAssistChip], [ZetaFilterChip] and [ZetaInputChip]. /// /// If [selected] is not null, the chip will have the toggle behavior of [ZetaFilterChip]. -/// -/// {@category Components} class ZetaChip extends ZetaStatefulWidget { /// Constructs a [ZetaChip]. const ZetaChip({ diff --git a/lib/src/components/chips/filter_chip.dart b/packages/zeta_flutter/lib/src/components/chips/filter_chip.dart similarity index 97% rename from lib/src/components/chips/filter_chip.dart rename to packages/zeta_flutter/lib/src/components/chips/filter_chip.dart index c6f8c22c..9e424820 100644 --- a/lib/src/components/chips/filter_chip.dart +++ b/packages/zeta_flutter/lib/src/components/chips/filter_chip.dart @@ -7,7 +7,6 @@ import '../../../zeta_flutter.dart'; /// The chips are commonly used within a [ZetaFilterSelection]. /// /// These chips use [Draggable] and can be dragged around the screen and placed in new locations using [DragTarget]. -/// {@category Components} /// /// Figma: https://www.figma.com/file/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=21265-14112 /// diff --git a/lib/src/components/chips/input_chip.dart b/packages/zeta_flutter/lib/src/components/chips/input_chip.dart similarity index 96% rename from lib/src/components/chips/input_chip.dart rename to packages/zeta_flutter/lib/src/components/chips/input_chip.dart index c079a67f..f3f3a758 100644 --- a/lib/src/components/chips/input_chip.dart +++ b/packages/zeta_flutter/lib/src/components/chips/input_chip.dart @@ -3,7 +3,6 @@ import '../../../zeta_flutter.dart'; /// Zeta Input Chip typically is used to associate some content or action with a user. /// /// Leading widget should typically be a [ZetaAvatar]. -/// {@category Components} /// /// Figma: https://www.figma.com/file/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=21265-2159 /// diff --git a/lib/src/components/chips/status_chip.dart b/packages/zeta_flutter/lib/src/components/chips/status_chip.dart similarity index 99% rename from lib/src/components/chips/status_chip.dart rename to packages/zeta_flutter/lib/src/components/chips/status_chip.dart index 1e1b5f0a..98e59d5d 100644 --- a/lib/src/components/chips/status_chip.dart +++ b/packages/zeta_flutter/lib/src/components/chips/status_chip.dart @@ -6,8 +6,6 @@ import '../../../zeta_flutter.dart'; /// The [ZetaStatusChip] is a chip that displays a status/label. /// It can be dragged around the screen and placed in new locations using [DragTarget]. /// -/// {@category Components} -/// /// Figma: https://www.figma.com/file/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=21265-2159 /// /// Widgetbook: https://zeta-ds.web.app/flutter/widgetbook/index.html#/?path=components/chips/input-chip diff --git a/lib/src/components/comms_button/comms_button.dart b/packages/zeta_flutter/lib/src/components/comms_button/comms_button.dart similarity index 99% rename from lib/src/components/comms_button/comms_button.dart rename to packages/zeta_flutter/lib/src/components/comms_button/comms_button.dart index cfd4afdf..647e8247 100644 --- a/lib/src/components/comms_button/comms_button.dart +++ b/packages/zeta_flutter/lib/src/components/comms_button/comms_button.dart @@ -28,7 +28,6 @@ enum ZetaCommsButtonType { /// /// `ZetaCommsButton.answer()`, `ZetaCommsButton.reject()`, `ZetaCommsButton.mute()`, /// `ZetaCommsButton.hold()`, `ZetaCommsButton.speaker()`, `ZetaCommsButton.record()`, etc. -/// {@category Components} /// /// Figma: https://www.figma.com/design/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=20816-7765&node-type=canvas&t=nc1YR061CeZRr6IJ-0 /// diff --git a/lib/src/components/date_input/date_input.dart b/packages/zeta_flutter/lib/src/components/date_input/date_input.dart similarity index 99% rename from lib/src/components/date_input/date_input.dart rename to packages/zeta_flutter/lib/src/components/date_input/date_input.dart index 02170ca6..4219c323 100644 --- a/lib/src/components/date_input/date_input.dart +++ b/packages/zeta_flutter/lib/src/components/date_input/date_input.dart @@ -5,13 +5,13 @@ import 'package:intl/intl.dart'; import 'package:mask_text_input_formatter/mask_text_input_formatter.dart'; import '../../../zeta_flutter.dart'; + import '../buttons/input_icon_button.dart'; import '../text_input/internal_text_input.dart'; /// A form field used to input dates. /// /// Can be used and validated the same way as a [TextFormField]. -/// {@category Components} /// /// Figma: https://www.figma.com/design/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=229-36&node-type=canvas&m=dev /// diff --git a/lib/src/components/dial_pad/dial_pad.dart b/packages/zeta_flutter/lib/src/components/dial_pad/dial_pad.dart similarity index 97% rename from lib/src/components/dial_pad/dial_pad.dart rename to packages/zeta_flutter/lib/src/components/dial_pad/dial_pad.dart index ae790eda..4ca5a555 100644 --- a/lib/src/components/dial_pad/dial_pad.dart +++ b/packages/zeta_flutter/lib/src/components/dial_pad/dial_pad.dart @@ -6,8 +6,6 @@ import '../../../zeta_flutter.dart'; /// Dial pad gives the user the ability to dial a number and start a call. It also has a quick dial security action and a delete entry action. /// -/// {@category Components} -/// /// Figma: https://www.figma.com/design/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=21156-16370&node-type=canvas&m=dev /// /// Widgetbook: https://zeta-ds.web.app/flutter/widgetbook/index.html#/?path=components/dial-pad @@ -82,14 +80,14 @@ class _ZetaDialPadState extends State { String? _lastTapped; int _tapCounter = 0; - ZetaDebounce? _debounce; + Debounce? _debounce; void onTap(String tapped) { widget.onNumber?.call(tapped); if (tapped != _lastTapped) { if (_lastTapped == null) { - _debounce = ZetaDebounce(() => _fireChar(tapped, _tapCounter)); + _debounce = Debounce(() => _fireChar(tapped, _tapCounter)); } else { _debounce?.debounce(newCallback: () => _fireChar(tapped, 1)); _fireChar(_lastTapped!, _tapCounter); @@ -149,8 +147,6 @@ class _ZetaDialPadState extends State { } /// Individual button for [ZetaDialPad]. -/// -/// {@category Components} class ZetaDialPadButton extends StatelessWidget { /// Constructs a [ZetaDialPadButton] const ZetaDialPadButton({ diff --git a/lib/src/components/dialog/dialog.dart b/packages/zeta_flutter/lib/src/components/dialog/dialog.dart similarity index 99% rename from lib/src/components/dialog/dialog.dart rename to packages/zeta_flutter/lib/src/components/dialog/dialog.dart index 051c7046..dd47be38 100644 --- a/lib/src/components/dialog/dialog.dart +++ b/packages/zeta_flutter/lib/src/components/dialog/dialog.dart @@ -52,7 +52,6 @@ Future showZetaDialog( ); /// The Zeta Dialog component. -/// {@category Components} /// /// Figma: https://www.figma.com/design/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=23954-93337&node-type=frame&m=dev /// diff --git a/lib/src/components/dropdown/dropdown.dart b/packages/zeta_flutter/lib/src/components/dropdown/dropdown.dart similarity index 99% rename from lib/src/components/dropdown/dropdown.dart rename to packages/zeta_flutter/lib/src/components/dropdown/dropdown.dart index 51296177..79325cc7 100644 --- a/lib/src/components/dropdown/dropdown.dart +++ b/packages/zeta_flutter/lib/src/components/dropdown/dropdown.dart @@ -4,6 +4,7 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import '../../../zeta_flutter.dart'; + import 'dropdown_controller.dart'; class _DropdownControllerImpl implements ZetaDropdownController { @@ -26,7 +27,6 @@ class _DropdownControllerImpl implements ZetaDropdownController { } /// An item used in a [ZetaDropdown] or a [ZetaSelectInput]. -/// {@category Components} /// /// Figma: https://www.figma.com/file/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=22391-10146 /// @@ -54,7 +54,6 @@ class ZetaDropdownItem { } /// Class for [ZetaDropdown] -/// {@category Components} /// /// Figma: https://www.figma.com/file/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=22391-10146 /// @@ -172,8 +171,6 @@ enum _MenuPosition { } /// The state for a [ZetaDropdown]. -/// -/// {@category Components} class ZetaDropDownState extends State> { late final _DropdownControllerImpl _dropdownController; final OverlayPortalController _overlayPortalController = OverlayPortalController(); diff --git a/lib/src/components/dropdown/dropdown_controller.dart b/packages/zeta_flutter/lib/src/components/dropdown/dropdown_controller.dart similarity index 100% rename from lib/src/components/dropdown/dropdown_controller.dart rename to packages/zeta_flutter/lib/src/components/dropdown/dropdown_controller.dart diff --git a/lib/src/components/fabs/fab.dart b/packages/zeta_flutter/lib/src/components/fabs/fab.dart similarity index 99% rename from lib/src/components/fabs/fab.dart rename to packages/zeta_flutter/lib/src/components/fabs/fab.dart index b8019166..aeb77133 100644 --- a/lib/src/components/fabs/fab.dart +++ b/packages/zeta_flutter/lib/src/components/fabs/fab.dart @@ -92,7 +92,6 @@ enum ZetaFabSize { } /// Zeta Floating Action Button Component. -/// {@category Components} /// /// Figma: https://www.figma.com/file/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=21816-4283&m=dev /// diff --git a/lib/src/components/filter_selection/filter_selection.dart b/packages/zeta_flutter/lib/src/components/filter_selection/filter_selection.dart similarity index 98% rename from lib/src/components/filter_selection/filter_selection.dart rename to packages/zeta_flutter/lib/src/components/filter_selection/filter_selection.dart index e3db9a29..baec0b97 100644 --- a/lib/src/components/filter_selection/filter_selection.dart +++ b/packages/zeta_flutter/lib/src/components/filter_selection/filter_selection.dart @@ -4,7 +4,6 @@ import 'package:flutter/material.dart'; import '../../../zeta_flutter.dart'; /// Component [ZetaFilterSelection] -/// {@category Components} /// /// Figma: https://www.figma.com/design/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=24607-737&node-type=canvas&m=dev /// diff --git a/lib/src/components/global_header/global_header.dart b/packages/zeta_flutter/lib/src/components/global_header/global_header.dart similarity index 99% rename from lib/src/components/global_header/global_header.dart rename to packages/zeta_flutter/lib/src/components/global_header/global_header.dart index 72af7a3f..080294c9 100644 --- a/lib/src/components/global_header/global_header.dart +++ b/packages/zeta_flutter/lib/src/components/global_header/global_header.dart @@ -35,7 +35,6 @@ import '../../../zeta_flutter.dart'; /// ]), /// ), /// ``` -/// {@category Components} /// /// Figma: https://www.figma.com/design/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=1120-26358&node-type=canvas&m=dev /// diff --git a/lib/src/components/global_header/header_tab_item.dart b/packages/zeta_flutter/lib/src/components/global_header/header_tab_item.dart similarity index 98% rename from lib/src/components/global_header/header_tab_item.dart rename to packages/zeta_flutter/lib/src/components/global_header/header_tab_item.dart index d040691b..7b30f969 100644 --- a/lib/src/components/global_header/header_tab_item.dart +++ b/packages/zeta_flutter/lib/src/components/global_header/header_tab_item.dart @@ -4,7 +4,6 @@ import 'package:flutter/material.dart'; import '../../../zeta_flutter.dart'; /// Tab item to be used in [ZetaGlobalHeader]. -/// {@category Components} /// /// Figma: https://www.figma.com/design/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=1120-26358&node-type=canvas&m=dev /// diff --git a/lib/src/components/icon/icon.dart b/packages/zeta_flutter/lib/src/components/icon/icon.dart similarity index 99% rename from lib/src/components/icon/icon.dart rename to packages/zeta_flutter/lib/src/components/icon/icon.dart index 95cf997d..10c3bb88 100644 --- a/lib/src/components/icon/icon.dart +++ b/packages/zeta_flutter/lib/src/components/icon/icon.dart @@ -12,7 +12,6 @@ import 'package:flutter/rendering.dart'; import '../../../zeta_flutter.dart'; /// Custom wrapper for [Icon] that applies the Zeta icon family. -/// {@category Components} /// /// Widgetbook: https://zeta-ds.web.app/flutter/widgetbook/index.html#/?path=assets/icons class ZetaIcon extends ZetaStatelessWidget { @@ -240,6 +239,7 @@ extension IconExtensions on IconData { } /// Returns a copy of the icon with the correct font family. + @visibleForTesting IconData apply(BuildContext context, {bool? rounded}) { if (fontFamily == ZetaIcons.family) { return _copyWith((rounded ?? context.rounded) ? ZetaIcons.familyRound : ZetaIcons.familySharp); diff --git a/lib/src/components/in_page_banner/in_page_banner.dart b/packages/zeta_flutter/lib/src/components/in_page_banner/in_page_banner.dart similarity index 99% rename from lib/src/components/in_page_banner/in_page_banner.dart rename to packages/zeta_flutter/lib/src/components/in_page_banner/in_page_banner.dart index fbb4c75d..6c5ede86 100644 --- a/lib/src/components/in_page_banner/in_page_banner.dart +++ b/packages/zeta_flutter/lib/src/components/in_page_banner/in_page_banner.dart @@ -4,7 +4,6 @@ import 'package:flutter/material.dart'; import '../../../zeta_flutter.dart'; /// In page banners display an important, succinct message, and may provide actions for users to address. Banners should be displayed at the top of the screen,below a top app bar. Only one banner should be shown at a time. -/// {@category Components} /// /// Figma: https://www.figma.com/design/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=21156-20085&node-type=canvas&m=dev /// diff --git a/lib/src/components/list_item/dropdown_list_item.dart b/packages/zeta_flutter/lib/src/components/list_item/dropdown_list_item.dart similarity index 99% rename from lib/src/components/list_item/dropdown_list_item.dart rename to packages/zeta_flutter/lib/src/components/list_item/dropdown_list_item.dart index 1ec49467..3b6c6b65 100644 --- a/lib/src/components/list_item/dropdown_list_item.dart +++ b/packages/zeta_flutter/lib/src/components/list_item/dropdown_list_item.dart @@ -2,10 +2,10 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import '../../../zeta_flutter.dart'; + import 'list_scope.dart'; /// An expandable list item containing other [ZetaListItem]s within it. -/// {@category Components} /// /// Figma: https://www.figma.com/design/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=229-17&node-type=canvas&m=dev /// diff --git a/lib/src/components/list_item/list_item.dart b/packages/zeta_flutter/lib/src/components/list_item/list_item.dart similarity index 99% rename from lib/src/components/list_item/list_item.dart rename to packages/zeta_flutter/lib/src/components/list_item/list_item.dart index 0345d399..f9ba7744 100644 --- a/lib/src/components/list_item/list_item.dart +++ b/packages/zeta_flutter/lib/src/components/list_item/list_item.dart @@ -1,6 +1,7 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import '../../../zeta_flutter.dart'; + import 'list_scope.dart'; /// Used to apply dividers to a group of [ZetaListItem]s. @@ -8,7 +9,6 @@ import 'list_scope.dart'; /// Dividers on individual list items can be hidden or shown by setting their [showDivider] property. /// /// This wraps [ListView.builder] so it needs to be used in a widget with a constrained height. -/// {@category Components} /// /// Figma: https://www.figma.com/design/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=229-17&node-type=canvas&m=dev /// @@ -53,7 +53,6 @@ class ZetaList extends ZetaStatelessWidget { /// A single row that typically contains some text as well as a leading or trailing widgets. /// /// To create list items with a [ZetaSwitch], [ZetaCheckbox], or [ZetaRadio], use the [ZetaListItem.toggle], [ZetaListItem.checkbox] or the [ZetaListItem.radio] named constructors respectively. -/// {@category Components} /// /// Figma: https://www.figma.com/design/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=229-17&node-type=canvas&m=dev /// diff --git a/lib/src/components/list_item/list_scope.dart b/packages/zeta_flutter/lib/src/components/list_item/list_scope.dart similarity index 100% rename from lib/src/components/list_item/list_scope.dart rename to packages/zeta_flutter/lib/src/components/list_item/list_scope.dart diff --git a/lib/src/components/list_item/notification_list_item.dart b/packages/zeta_flutter/lib/src/components/list_item/notification_list_item.dart similarity index 99% rename from lib/src/components/list_item/notification_list_item.dart rename to packages/zeta_flutter/lib/src/components/list_item/notification_list_item.dart index 869b9803..e7ae19ff 100644 --- a/lib/src/components/list_item/notification_list_item.dart +++ b/packages/zeta_flutter/lib/src/components/list_item/notification_list_item.dart @@ -6,8 +6,6 @@ import '../../../zeta_flutter.dart'; /// Notification list items are used in notification lists. /// -/// {@category Components} -/// /// Figma: https://www.figma.com/design/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=25043-100110&node-type=canvas&m=dev /// /// Widgetbook: https://zeta-ds.web.app/flutter/widgetbook/index.html#/?path=components/list-items/notification-list-item @@ -273,8 +271,6 @@ extension on Image { // TODO(UX-1138): Can this be refactored to use ZetaIndicator? /// Badge item for notification list items. Can be an avatar, icon or image -/// -/// {@category Components} class ZetaNotificationBadge extends StatelessWidget { /// Constructs a notification badge with an avatar. const ZetaNotificationBadge.avatar({ diff --git a/lib/src/components/navigation bar/navigation_bar.dart b/packages/zeta_flutter/lib/src/components/navigation bar/navigation_bar.dart similarity index 99% rename from lib/src/components/navigation bar/navigation_bar.dart rename to packages/zeta_flutter/lib/src/components/navigation bar/navigation_bar.dart index cbd0c789..a6bd9b09 100644 --- a/lib/src/components/navigation bar/navigation_bar.dart +++ b/packages/zeta_flutter/lib/src/components/navigation bar/navigation_bar.dart @@ -7,7 +7,6 @@ const double _navigationItemBorderWidth = 1; /// An item to be used in a [ZetaNavigationBar]. /// -/// {@category Components} class ZetaNavigationBarItem { /// Creates a new [ZetaNavigationBarItem] const ZetaNavigationBarItem({ @@ -28,8 +27,6 @@ class ZetaNavigationBarItem { /// Navigation Bars (Bottom navigation) allow movement between primary destinations in an app. /// -/// {@category Components} -/// /// Figma: https://www.figma.com/design/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=1052-24751&node-type=canvas&m=dev /// /// Widgetbook: https://zeta-ds.web.app/flutter/widgetbook/index.html#/?path=components/navigation-bar diff --git a/lib/src/components/navigation_rail/navigation_rail.dart b/packages/zeta_flutter/lib/src/components/navigation_rail/navigation_rail.dart similarity index 99% rename from lib/src/components/navigation_rail/navigation_rail.dart rename to packages/zeta_flutter/lib/src/components/navigation_rail/navigation_rail.dart index 7189a980..abe7437a 100644 --- a/lib/src/components/navigation_rail/navigation_rail.dart +++ b/packages/zeta_flutter/lib/src/components/navigation_rail/navigation_rail.dart @@ -11,8 +11,6 @@ import '../../../zeta_flutter.dart'; /// /// Should be used with [ZetaNavigationRailItem]. /// -/// {@category Components} -/// /// Figma: https://www.figma.com/design/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=229-43&node-type=canvas&m=dev /// /// Widgetbook: https://zeta-ds.web.app/flutter/widgetbook/index.html#/?path=components/navigation-rail @@ -265,7 +263,6 @@ class _ZetaNavigationRailItemContentState extends State<_ZetaNavigationRailItemC /// Represents an item in the [ZetaNavigationRail]. -/// {@category Components} class ZetaNavigationRailItem { /// Constructor for [ZetaNavigationRailItem]. const ZetaNavigationRailItem({ diff --git a/lib/src/components/pagination/pagination.dart b/packages/zeta_flutter/lib/src/components/pagination/pagination.dart similarity index 99% rename from lib/src/components/pagination/pagination.dart rename to packages/zeta_flutter/lib/src/components/pagination/pagination.dart index fe52d4e7..4ab621a0 100644 --- a/lib/src/components/pagination/pagination.dart +++ b/packages/zeta_flutter/lib/src/components/pagination/pagination.dart @@ -15,7 +15,6 @@ enum ZetaPaginationType { } /// Pagination is used to switch between pages. -/// {@category Components} /// /// Figma: https://www.figma.com/design/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=229-24&node-type=canvas&m=dev /// diff --git a/lib/src/components/password/password_input.dart b/packages/zeta_flutter/lib/src/components/password/password_input.dart similarity index 99% rename from lib/src/components/password/password_input.dart rename to packages/zeta_flutter/lib/src/components/password/password_input.dart index c0e69772..9f4e7cea 100644 --- a/lib/src/components/password/password_input.dart +++ b/packages/zeta_flutter/lib/src/components/password/password_input.dart @@ -2,10 +2,10 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import '../../../zeta_flutter.dart'; + import '../text_input/internal_text_input.dart'; /// Zeta Password Input -/// {@category Components} /// /// Figma: https://www.figma.com/design/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=948-13002&node-type=canvas&m=dev /// diff --git a/lib/src/components/phone_input/phone_input.dart b/packages/zeta_flutter/lib/src/components/phone_input/phone_input.dart similarity index 99% rename from lib/src/components/phone_input/phone_input.dart rename to packages/zeta_flutter/lib/src/components/phone_input/phone_input.dart index ad72843a..50e0bc88 100644 --- a/lib/src/components/phone_input/phone_input.dart +++ b/packages/zeta_flutter/lib/src/components/phone_input/phone_input.dart @@ -4,12 +4,11 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import '../../../zeta_flutter.dart'; + import '../text_input/internal_text_input.dart'; /// ZetaPhoneInput allows entering phone numbers. /// -/// {@category Components} -/// /// Figma: https://www.figma.com/design/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=916-10934&node-type=canvas&m=dev /// /// Widgetbook: https://zeta-ds.web.app/flutter/widgetbook/index.html#/?path=components/phone-input diff --git a/lib/src/components/progress/progress.dart b/packages/zeta_flutter/lib/src/components/progress/progress.dart similarity index 100% rename from lib/src/components/progress/progress.dart rename to packages/zeta_flutter/lib/src/components/progress/progress.dart diff --git a/lib/src/components/progress/progress_bar.dart b/packages/zeta_flutter/lib/src/components/progress/progress_bar.dart similarity index 99% rename from lib/src/components/progress/progress_bar.dart rename to packages/zeta_flutter/lib/src/components/progress/progress_bar.dart index 35b6d08a..394da012 100644 --- a/lib/src/components/progress/progress_bar.dart +++ b/packages/zeta_flutter/lib/src/components/progress/progress_bar.dart @@ -1,6 +1,7 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import '../../../zeta_flutter.dart'; + import 'progress.dart'; /// Enum for types of progress bar. @@ -18,7 +19,6 @@ enum ZetaProgressBarType { /// Progress indicators express an unspecified wait time or display the length of a process. /// /// Linear progress bar. Uses progress percentage value to fill bar. -/// {@category Components} /// /// Figma: https://www.figma.com/design/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=229-22&node-type=canvas&m=dev /// diff --git a/lib/src/components/progress/progress_circle.dart b/packages/zeta_flutter/lib/src/components/progress/progress_circle.dart similarity index 99% rename from lib/src/components/progress/progress_circle.dart rename to packages/zeta_flutter/lib/src/components/progress/progress_circle.dart index de56d070..9eaa91c8 100644 --- a/lib/src/components/progress/progress_circle.dart +++ b/packages/zeta_flutter/lib/src/components/progress/progress_circle.dart @@ -3,6 +3,7 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import '../../../zeta_flutter.dart'; + import 'progress.dart'; /// Sizes for [ZetaProgressCircle] @@ -24,7 +25,6 @@ enum ZetaCircleSizes { } /// Progress indicators express an unspecified wait time or display the length of a process. -/// {@category Components} /// /// Figma: https://www.figma.com/design/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=229-22&node-type=canvas&m=dev /// diff --git a/lib/src/components/radio/radio.dart b/packages/zeta_flutter/lib/src/components/radio/radio.dart similarity index 99% rename from lib/src/components/radio/radio.dart rename to packages/zeta_flutter/lib/src/components/radio/radio.dart index 075fe666..714960fc 100644 --- a/lib/src/components/radio/radio.dart +++ b/packages/zeta_flutter/lib/src/components/radio/radio.dart @@ -4,7 +4,6 @@ import 'package:flutter/material.dart'; import '../../../zeta_flutter.dart'; /// Radio buttons are used for mutually exclusive choices, not for multiple choices. Only one radio button can be selected at a time. When a user chooses a new item, the previous choice is automatically deselected. -/// {@category Components} /// /// Figma: https://www.figma.com/design/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=229-7&node-type=canvas&m=dev /// diff --git a/lib/src/components/range_selector/range_selector.dart b/packages/zeta_flutter/lib/src/components/range_selector/range_selector.dart similarity index 99% rename from lib/src/components/range_selector/range_selector.dart rename to packages/zeta_flutter/lib/src/components/range_selector/range_selector.dart index e08e6de2..caa8683a 100644 --- a/lib/src/components/range_selector/range_selector.dart +++ b/packages/zeta_flutter/lib/src/components/range_selector/range_selector.dart @@ -8,8 +8,6 @@ import '../../../zeta_flutter.dart'; /// allows users to select a range of values within a specified minimum /// and maximum range. It provides a visual representation of the selected /// range and allows for precise adjustments through both dragging and direct input. -/// -/// {@category Components} class ZetaRangeSelector extends ZetaStatefulWidget { /// Creates a new [ZetaRangeSelector] ZetaRangeSelector({ diff --git a/lib/src/components/screen_header_bar/screen_header_bar.dart b/packages/zeta_flutter/lib/src/components/screen_header_bar/screen_header_bar.dart similarity index 98% rename from lib/src/components/screen_header_bar/screen_header_bar.dart rename to packages/zeta_flutter/lib/src/components/screen_header_bar/screen_header_bar.dart index 63878876..b1926d54 100644 --- a/lib/src/components/screen_header_bar/screen_header_bar.dart +++ b/packages/zeta_flutter/lib/src/components/screen_header_bar/screen_header_bar.dart @@ -4,8 +4,6 @@ import '../../../zeta_flutter.dart'; /// A screen header bar that contains a back button, title and an optional action button. /// -/// {@category Components} -/// /// Figma: https://www.figma.com/design/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=24601-6781&node-type=canvas&m=dev /// /// Widgetbook: https://zeta-ds.web.app/flutter/widgetbook/index.html#/?path=components/screen-header-bar diff --git a/lib/src/components/search_bar/search_bar.dart b/packages/zeta_flutter/lib/src/components/search_bar/search_bar.dart similarity index 99% rename from lib/src/components/search_bar/search_bar.dart rename to packages/zeta_flutter/lib/src/components/search_bar/search_bar.dart index fdab6b25..7e68186d 100644 --- a/lib/src/components/search_bar/search_bar.dart +++ b/packages/zeta_flutter/lib/src/components/search_bar/search_bar.dart @@ -1,11 +1,11 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import '../../../zeta_flutter.dart'; + import '../buttons/input_icon_button.dart'; import '../text_input/internal_text_input.dart'; /// ZetaSearchBar provides input field for searching. -/// {@category Components} /// /// Figma: https://www.figma.com/design/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=875-17463&node-type=canvas&m=dev /// diff --git a/lib/src/components/segmented_control/segmented_control.dart b/packages/zeta_flutter/lib/src/components/segmented_control/segmented_control.dart similarity index 99% rename from lib/src/components/segmented_control/segmented_control.dart rename to packages/zeta_flutter/lib/src/components/segmented_control/segmented_control.dart index 00edc334..14c243f9 100644 --- a/lib/src/components/segmented_control/segmented_control.dart +++ b/packages/zeta_flutter/lib/src/components/segmented_control/segmented_control.dart @@ -8,7 +8,6 @@ import '../../../zeta_flutter.dart'; /// A segmented control is a linear set of two or more segments, each of which /// functions as a mutually exclusive button. Like buttons, segments can contain /// text or images. Segmented controls are often used to display different views. -/// {@category Components} /// /// Figma: https://www.figma.com/design/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=1046-20148&node-type=canvas&m=dev /// diff --git a/lib/src/components/select_input/select_input.dart b/packages/zeta_flutter/lib/src/components/select_input/select_input.dart similarity index 99% rename from lib/src/components/select_input/select_input.dart rename to packages/zeta_flutter/lib/src/components/select_input/select_input.dart index b8b0aefb..1fc82a56 100644 --- a/lib/src/components/select_input/select_input.dart +++ b/packages/zeta_flutter/lib/src/components/select_input/select_input.dart @@ -3,12 +3,12 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import '../../../zeta_flutter.dart'; + import '../buttons/input_icon_button.dart'; import '../dropdown/dropdown_controller.dart'; import '../text_input/internal_text_input.dart'; /// Class for [ZetaSelectInput]. -/// {@category Components} /// /// Figma: https://www.figma.com/design/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=229-39&node-type=canvas&m=dev /// diff --git a/lib/src/components/slider/slider.dart b/packages/zeta_flutter/lib/src/components/slider/slider.dart similarity index 99% rename from lib/src/components/slider/slider.dart rename to packages/zeta_flutter/lib/src/components/slider/slider.dart index 9df6d07a..e7a979c3 100644 --- a/lib/src/components/slider/slider.dart +++ b/packages/zeta_flutter/lib/src/components/slider/slider.dart @@ -7,8 +7,6 @@ import '../../../zeta_flutter.dart'; /// Slider component with customized styling. /// -/// {@category Components} -/// /// Figma: https://zeta-ds.web.app/flutter/widgetbook/index.html#/?path=components/slider /// /// Widgetbook: https://www.figma.com/design/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=875-11860&node-type=canvas&m=dev diff --git a/lib/src/components/snack_bar/snack_bar.dart b/packages/zeta_flutter/lib/src/components/snack_bar/snack_bar.dart similarity index 99% rename from lib/src/components/snack_bar/snack_bar.dart rename to packages/zeta_flutter/lib/src/components/snack_bar/snack_bar.dart index 6da9eea9..8e860795 100644 --- a/lib/src/components/snack_bar/snack_bar.dart +++ b/packages/zeta_flutter/lib/src/components/snack_bar/snack_bar.dart @@ -33,7 +33,6 @@ enum ZetaSnackBarType { /// bottom of the screen. /// /// Different styles can be applied to [ZetaSnackBar] with [ZetaSnackBarType]. -/// {@category Components} /// /// Figma: https://www.figma.com/design/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=229-13&node-type=canvas&m=dev /// diff --git a/lib/src/components/stepper/stepper.dart b/packages/zeta_flutter/lib/src/components/stepper/stepper.dart similarity index 99% rename from lib/src/components/stepper/stepper.dart rename to packages/zeta_flutter/lib/src/components/stepper/stepper.dart index 79ed2327..896637ff 100644 --- a/lib/src/components/stepper/stepper.dart +++ b/packages/zeta_flutter/lib/src/components/stepper/stepper.dart @@ -26,7 +26,6 @@ import '../../../zeta_flutter.dart'; /// }, /// ) /// ``` -/// {@category Components} /// /// Figma: https://www.figma.com/design/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=3420-67488&node-type=canvas&m=dev /// @@ -490,8 +489,6 @@ class VerticalStep extends StatelessWidget { /// Zeta step used in [ZetaStepper]. The step can have a title and subtitle, /// an icon within its circle, some content and a state that governs its /// styling. -/// -/// {@category Components} class ZetaStep { /// Creates a step for a [ZetaStepper]. const ZetaStep({ diff --git a/lib/src/components/stepper_input/stepper_input.dart b/packages/zeta_flutter/lib/src/components/stepper_input/stepper_input.dart similarity index 99% rename from lib/src/components/stepper_input/stepper_input.dart rename to packages/zeta_flutter/lib/src/components/stepper_input/stepper_input.dart index 282d212b..32fb03b9 100644 --- a/lib/src/components/stepper_input/stepper_input.dart +++ b/packages/zeta_flutter/lib/src/components/stepper_input/stepper_input.dart @@ -16,7 +16,6 @@ enum ZetaStepperInputSize { /// A stepper input, also called numeric stepper, is a common UI element that /// allows users to input a number or value simply by clicking the plus and /// minus buttons. -/// {@category Components} /// /// Figma: https://www.figma.com/design/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=229-47&node-type=canvas&m=dev /// diff --git a/lib/src/components/switch/material_switch.dart b/packages/zeta_flutter/lib/src/components/switch/material_switch.dart similarity index 100% rename from lib/src/components/switch/material_switch.dart rename to packages/zeta_flutter/lib/src/components/switch/material_switch.dart diff --git a/lib/src/components/switch/zeta_switch.dart b/packages/zeta_flutter/lib/src/components/switch/zeta_switch.dart similarity index 99% rename from lib/src/components/switch/zeta_switch.dart rename to packages/zeta_flutter/lib/src/components/switch/zeta_switch.dart index 76d2433a..d90d98e9 100644 --- a/lib/src/components/switch/zeta_switch.dart +++ b/packages/zeta_flutter/lib/src/components/switch/zeta_switch.dart @@ -2,6 +2,7 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import '../../../zeta_flutter.dart'; + import 'material_switch.dart'; const _sizeAndroid = Size(48, 24); @@ -25,7 +26,6 @@ enum ZetaSwitchType { /// Switch can turn an option on or off. /// /// Switch has styles for Android, iOS and Web. -/// {@category Components} /// /// Figma: https://www.figma.com/design/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=229-41&node-type=canvas&m=dev /// diff --git a/lib/src/components/system_banner/system_banner.dart b/packages/zeta_flutter/lib/src/components/system_banner/system_banner.dart similarity index 99% rename from lib/src/components/system_banner/system_banner.dart rename to packages/zeta_flutter/lib/src/components/system_banner/system_banner.dart index 9cbb84f1..1e61e400 100644 --- a/lib/src/components/system_banner/system_banner.dart +++ b/packages/zeta_flutter/lib/src/components/system_banner/system_banner.dart @@ -22,8 +22,6 @@ enum ZetaSystemBannerStatus { /// /// To display on screen use `ScaffoldMessenger.of(context).showMaterialBanner(ZetaSystemBanner())`. This will display the banner at the top of the page, below the AppBar. /// -/// {@category Components} -/// /// Figma: https://www.figma.com/file/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=22195-43965 /// /// Widgetbook: https://zeta-ds.web.app/flutter/widgetbook/index.html#/?path=components/banners diff --git a/lib/src/components/tabs/tab.dart b/packages/zeta_flutter/lib/src/components/tabs/tab.dart similarity index 98% rename from lib/src/components/tabs/tab.dart rename to packages/zeta_flutter/lib/src/components/tabs/tab.dart index 759d4aac..88b611a5 100644 --- a/lib/src/components/tabs/tab.dart +++ b/packages/zeta_flutter/lib/src/components/tabs/tab.dart @@ -3,7 +3,6 @@ import '../../../zeta_flutter.dart'; /// Defines how the bounds of the selected tab indicator are computed. /// Intended to be used with [ZetaTabBar]. -/// {@category Components} /// /// Figma: https://www.figma.com/design/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=229-18&node-type=canvas&m=dev /// diff --git a/lib/src/components/tabs/tab_bar.dart b/packages/zeta_flutter/lib/src/components/tabs/tab_bar.dart similarity index 98% rename from lib/src/components/tabs/tab_bar.dart rename to packages/zeta_flutter/lib/src/components/tabs/tab_bar.dart index 784727d1..72da80f1 100644 --- a/lib/src/components/tabs/tab_bar.dart +++ b/packages/zeta_flutter/lib/src/components/tabs/tab_bar.dart @@ -2,7 +2,6 @@ import 'package:flutter/material.dart'; import '../../../zeta_flutter.dart'; /// A Zeta Design primary tab bar. -/// {@category Components} /// /// Figma: https://www.figma.com/design/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=229-18&node-type=canvas&m=dev /// diff --git a/lib/src/components/text_input/hint_text.dart b/packages/zeta_flutter/lib/src/components/text_input/hint_text.dart similarity index 100% rename from lib/src/components/text_input/hint_text.dart rename to packages/zeta_flutter/lib/src/components/text_input/hint_text.dart diff --git a/lib/src/components/text_input/input_label.dart b/packages/zeta_flutter/lib/src/components/text_input/input_label.dart similarity index 100% rename from lib/src/components/text_input/input_label.dart rename to packages/zeta_flutter/lib/src/components/text_input/input_label.dart diff --git a/lib/src/components/text_input/internal_text_input.dart b/packages/zeta_flutter/lib/src/components/text_input/internal_text_input.dart similarity index 99% rename from lib/src/components/text_input/internal_text_input.dart rename to packages/zeta_flutter/lib/src/components/text_input/internal_text_input.dart index efc71072..8f3805e9 100644 --- a/lib/src/components/text_input/internal_text_input.dart +++ b/packages/zeta_flutter/lib/src/components/text_input/internal_text_input.dart @@ -3,6 +3,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import '../../../zeta_flutter.dart'; + import 'hint_text.dart'; import 'input_label.dart'; diff --git a/lib/src/components/text_input/text_input.dart b/packages/zeta_flutter/lib/src/components/text_input/text_input.dart similarity index 99% rename from lib/src/components/text_input/text_input.dart rename to packages/zeta_flutter/lib/src/components/text_input/text_input.dart index 716cfd62..fabc4087 100644 --- a/lib/src/components/text_input/text_input.dart +++ b/packages/zeta_flutter/lib/src/components/text_input/text_input.dart @@ -3,6 +3,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import '../../../zeta_flutter.dart'; + import 'internal_text_input.dart'; // TODO(UX-895): Text Input connected left @@ -13,8 +14,6 @@ import 'internal_text_input.dart'; /// To show error messages on the text input, use the [validator]. The string returned from this function will be displayed as the error message. /// Error messages can also be managed outside the text input by setting [errorText]. /// -/// {@category Components} -/// /// Figma: https://www.figma.com/design/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=229-38&node-type=canvas&m=dev /// /// Widgetbook: https://zeta-ds.web.app/flutter/widgetbook/index.html#/?path=components/text-input diff --git a/lib/src/components/time_input/time_input.dart b/packages/zeta_flutter/lib/src/components/time_input/time_input.dart similarity index 99% rename from lib/src/components/time_input/time_input.dart rename to packages/zeta_flutter/lib/src/components/time_input/time_input.dart index 616e29a3..45444027 100644 --- a/lib/src/components/time_input/time_input.dart +++ b/packages/zeta_flutter/lib/src/components/time_input/time_input.dart @@ -4,6 +4,7 @@ import 'package:flutter/services.dart'; import 'package:mask_text_input_formatter/mask_text_input_formatter.dart'; import '../../../zeta_flutter.dart'; + import '../buttons/input_icon_button.dart'; import '../text_input/internal_text_input.dart'; @@ -13,7 +14,6 @@ const _max12HrValue = 12; /// A form field used to input time. /// /// Can be used and validated the same way as a [TextFormField]. -/// {@category Components} /// /// Figma: https://www.figma.com/design/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=724-6821&node-type=canvas&m=dev /// diff --git a/lib/src/components/tooltip/tooltip.dart b/packages/zeta_flutter/lib/src/components/tooltip/tooltip.dart similarity index 99% rename from lib/src/components/tooltip/tooltip.dart rename to packages/zeta_flutter/lib/src/components/tooltip/tooltip.dart index 7333847a..47d0a5f0 100644 --- a/lib/src/components/tooltip/tooltip.dart +++ b/packages/zeta_flutter/lib/src/components/tooltip/tooltip.dart @@ -22,7 +22,6 @@ enum ZetaTooltipArrowDirection { } /// Tooltips display informative text when users hover over, focus on, or tap an element. -/// {@category Components} /// /// Figma: https://www.figma.com/design/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=229-16&node-type=canvas&m=dev /// diff --git a/lib/src/components/top_app_bar/extended_top_app_bar.dart b/packages/zeta_flutter/lib/src/components/top_app_bar/extended_top_app_bar.dart similarity index 99% rename from lib/src/components/top_app_bar/extended_top_app_bar.dart rename to packages/zeta_flutter/lib/src/components/top_app_bar/extended_top_app_bar.dart index 54fa3f7a..ffce59e0 100644 --- a/lib/src/components/top_app_bar/extended_top_app_bar.dart +++ b/packages/zeta_flutter/lib/src/components/top_app_bar/extended_top_app_bar.dart @@ -3,7 +3,6 @@ import 'package:flutter/material.dart'; import '../../../zeta_flutter.dart'; /// Delegate for creating an extended app bar, that grows and shrinks when scrolling. -/// {@category Components} /// /// Figma: https://www.figma.com/design/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=229-37&node-type=canvas&m=dev /// diff --git a/lib/src/components/top_app_bar/search_top_app_bar.dart b/packages/zeta_flutter/lib/src/components/top_app_bar/search_top_app_bar.dart similarity index 99% rename from lib/src/components/top_app_bar/search_top_app_bar.dart rename to packages/zeta_flutter/lib/src/components/top_app_bar/search_top_app_bar.dart index f24b008a..e71325e0 100644 --- a/lib/src/components/top_app_bar/search_top_app_bar.dart +++ b/packages/zeta_flutter/lib/src/components/top_app_bar/search_top_app_bar.dart @@ -4,7 +4,6 @@ import 'package:flutter/material.dart'; import '../../../zeta_flutter.dart'; /// Creates a search field used on a [ZetaTopAppBar]. -/// {@category Components} /// /// Figma: https://www.figma.com/design/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=229-37&node-type=canvas&m=dev /// @@ -188,8 +187,6 @@ class _ZetaTopAppBarSearchFieldState extends State wit } /// A controller used to control the search field in the app bar. -/// -/// {@category Utils} class ZetaSearchController extends ChangeNotifier { bool _enabled = false; diff --git a/lib/src/components/top_app_bar/top_app_bar.dart b/packages/zeta_flutter/lib/src/components/top_app_bar/top_app_bar.dart similarity index 99% rename from lib/src/components/top_app_bar/top_app_bar.dart rename to packages/zeta_flutter/lib/src/components/top_app_bar/top_app_bar.dart index 89bcfe08..37b9d67a 100644 --- a/lib/src/components/top_app_bar/top_app_bar.dart +++ b/packages/zeta_flutter/lib/src/components/top_app_bar/top_app_bar.dart @@ -2,6 +2,7 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import '../../../zeta_flutter.dart'; + import 'extended_top_app_bar.dart'; import 'search_top_app_bar.dart'; @@ -10,7 +11,6 @@ export 'search_top_app_bar.dart' hide ZetaTopAppBarSearchField; /// Top app bars provide content and actions related to the current screen. /// /// To create Extended, Centered, or Search app bars, use the respective constructors. -/// {@category Components} /// /// Figma: https://www.figma.com/design/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=229-37&node-type=canvas&m=dev /// diff --git a/lib/src/interfaces/countries.dart b/packages/zeta_flutter/lib/src/interfaces/countries.dart similarity index 99% rename from lib/src/interfaces/countries.dart rename to packages/zeta_flutter/lib/src/interfaces/countries.dart index e38bc64b..8b54d0ca 100644 --- a/lib/src/interfaces/countries.dart +++ b/packages/zeta_flutter/lib/src/interfaces/countries.dart @@ -1,6 +1,4 @@ /// Class definition for a country with its name, dial code, and ISO code. -/// -/// {@category Components} class Country { /// Constructor for [Country] const Country({ @@ -30,8 +28,6 @@ class Country { } /// Class definition for a list of countries. -/// -/// {@category Interfaces} class Countries { /// List of [Country] for most countries around the world. static List get list => _countriesList; diff --git a/lib/src/interfaces/form_field.dart b/packages/zeta_flutter/lib/src/interfaces/form_field.dart similarity index 99% rename from lib/src/interfaces/form_field.dart rename to packages/zeta_flutter/lib/src/interfaces/form_field.dart index c1364c4b..353468e1 100644 --- a/lib/src/interfaces/form_field.dart +++ b/packages/zeta_flutter/lib/src/interfaces/form_field.dart @@ -42,8 +42,6 @@ abstract class ZetaFormField extends FormField { } /// A text form field used in Zeta -/// -/// {@category Interfaces} abstract class ZetaTextFormField extends ZetaFormField { /// Creates a new [ZetaTextFormField] ZetaTextFormField({ diff --git a/lib/src/interfaces/interfaces.dart b/packages/zeta_flutter/lib/src/interfaces/interfaces.dart similarity index 100% rename from lib/src/interfaces/interfaces.dart rename to packages/zeta_flutter/lib/src/interfaces/interfaces.dart diff --git a/lib/src/interfaces/phone_number.dart b/packages/zeta_flutter/lib/src/interfaces/phone_number.dart similarity index 90% rename from lib/src/interfaces/phone_number.dart rename to packages/zeta_flutter/lib/src/interfaces/phone_number.dart index dda3fd84..f3525e4f 100644 --- a/lib/src/interfaces/phone_number.dart +++ b/packages/zeta_flutter/lib/src/interfaces/phone_number.dart @@ -1,6 +1,4 @@ /// A phone number. -/// -/// {@category Interfaces} class PhoneNumber { /// Creates a new [PhoneNumber]. const PhoneNumber({ diff --git a/lib/src/utils/enums.dart b/packages/zeta_flutter/lib/src/utils/enums.dart similarity index 100% rename from lib/src/utils/enums.dart rename to packages/zeta_flutter/lib/src/utils/enums.dart diff --git a/packages/zeta_flutter/lib/src/utils/utils.dart b/packages/zeta_flutter/lib/src/utils/utils.dart new file mode 100644 index 00000000..46fb07e2 --- /dev/null +++ b/packages/zeta_flutter/lib/src/utils/utils.dart @@ -0,0 +1,2 @@ +export 'enums.dart'; +export 'widget.dart'; diff --git a/packages/zeta_flutter/lib/src/utils/widget.dart b/packages/zeta_flutter/lib/src/utils/widget.dart new file mode 100644 index 00000000..744b20b2 --- /dev/null +++ b/packages/zeta_flutter/lib/src/utils/widget.dart @@ -0,0 +1,32 @@ +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; + +/// Zeta Extension of [StatelessWidget] which adds [rounded] super parameter. Always use `context.rounded` to ensure correct value for [rounded] is used. +abstract class ZetaStatelessWidget extends StatelessWidget { + /// Constructs a [ZetaStatelessWidget]. + const ZetaStatelessWidget({super.key, this.rounded}); + + /// {@macro zeta-component-rounded} + final bool? rounded; + + @override + void debugFillProperties(DiagnosticPropertiesBuilder properties) { + super.debugFillProperties(properties); + properties.add(DiagnosticsProperty('rounded', rounded)); + } +} + +/// Zeta Extension of [StatefulWidget] which adds [rounded] super parameter. Always use `context.rounded` to ensure correct value for [rounded] is used. +abstract class ZetaStatefulWidget extends StatefulWidget { + /// Constructs a [ZetaStatefulWidget]. + const ZetaStatefulWidget({super.key, this.rounded}); + + /// {@macro zeta-component-rounded} + final bool? rounded; + + @override + void debugFillProperties(DiagnosticPropertiesBuilder properties) { + super.debugFillProperties(properties); + properties.add(DiagnosticsProperty('rounded', rounded)); + } +} diff --git a/packages/zeta_flutter/lib/zeta_components.dart b/packages/zeta_flutter/lib/zeta_components.dart new file mode 100644 index 00000000..d42b8ecb --- /dev/null +++ b/packages/zeta_flutter/lib/zeta_components.dart @@ -0,0 +1,63 @@ +/// Zeta Flutter components. +/// +/// See [Figma](https://www.figma.com/design/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?m=auto&node-id=229-2). +library; + +export 'src/components/accordion/accordion.dart'; +export 'src/components/avatar_rail/avatar_rail.dart'; +export 'src/components/avatars/avatar.dart'; +export 'src/components/badges/indicator.dart'; +export 'src/components/badges/label.dart'; +export 'src/components/badges/priority_pill.dart'; +export 'src/components/badges/status_label.dart'; +export 'src/components/badges/tag.dart'; +export 'src/components/bottom sheets/bottom_sheet.dart'; +export 'src/components/bottom sheets/menu_items.dart'; +export 'src/components/breadcrumb/breadcrumb.dart' hide TruncatedItem; +export 'src/components/button_group/button_group.dart'; +export 'src/components/buttons/button.dart'; +export 'src/components/buttons/button_style.dart' show ZetaButtonType; +export 'src/components/buttons/icon_button.dart'; +export 'src/components/chat_item/chat_item.dart'; +export 'src/components/chat_item/contact_item.dart'; +export 'src/components/checkbox/checkbox.dart' hide ZetaInternalCheckbox; +export 'src/components/chips/chip.dart'; +export 'src/components/comms_button/comms_button.dart'; +export 'src/components/date_input/date_input.dart'; +export 'src/components/dial_pad/dial_pad.dart'; +export 'src/components/dialog/dialog.dart'; +export 'src/components/dropdown/dropdown.dart'; +export 'src/components/fabs/fab.dart'; +export 'src/components/filter_selection/filter_selection.dart'; +export 'src/components/global_header/global_header.dart'; +export 'src/components/global_header/header_tab_item.dart'; +export 'src/components/icon/icon.dart'; +export 'src/components/in_page_banner/in_page_banner.dart'; +export 'src/components/list_item/dropdown_list_item.dart'; +export 'src/components/list_item/list_item.dart'; +export 'src/components/list_item/notification_list_item.dart'; +export 'src/components/navigation bar/navigation_bar.dart' hide NavigationItem; +export 'src/components/navigation_rail/navigation_rail.dart'; +export 'src/components/pagination/pagination.dart'; +export 'src/components/password/password_input.dart'; +export 'src/components/phone_input/phone_input.dart'; +export 'src/components/progress/progress_bar.dart'; +export 'src/components/progress/progress_circle.dart'; +export 'src/components/radio/radio.dart'; +export 'src/components/range_selector/range_selector.dart'; +export 'src/components/screen_header_bar/screen_header_bar.dart'; +export 'src/components/search_bar/search_bar.dart'; +export 'src/components/segmented_control/segmented_control.dart'; +export 'src/components/select_input/select_input.dart'; +export 'src/components/slider/slider.dart'; +export 'src/components/snack_bar/snack_bar.dart'; +export 'src/components/stepper/stepper.dart' hide HorizontalStep, StepDivider, StepIcon, VerticalStep; +export 'src/components/stepper_input/stepper_input.dart' hide ZetaStepperInputState; +export 'src/components/switch/zeta_switch.dart'; +export 'src/components/system_banner/system_banner.dart'; +export 'src/components/tabs/tab.dart'; +export 'src/components/tabs/tab_bar.dart'; +export 'src/components/text_input/text_input.dart'; +export 'src/components/time_input/time_input.dart'; +export 'src/components/tooltip/tooltip.dart'; +export 'src/components/top_app_bar/top_app_bar.dart'; diff --git a/packages/zeta_flutter/lib/zeta_flutter.dart b/packages/zeta_flutter/lib/zeta_flutter.dart new file mode 100644 index 00000000..5dff7e3b --- /dev/null +++ b/packages/zeta_flutter/lib/zeta_flutter.dart @@ -0,0 +1,15 @@ +/// This library combines all the Zeta Flutter packages: +/// * [Zeta Components](https://pub.dev/packages/zeta_flutter) +/// * [Zeta Utils](https://pub.dev/packages/zeta_flutter_utils) +/// * [Zeta Theme](https://pub.dev/packages/zeta_flutter_theme) +/// * [Zeta Icons](https://pub.dev/packages/zeta_icons) +library; + +export 'package:zeta_flutter_theme/zeta_flutter_theme.dart'; +export 'package:zeta_flutter_utils/zeta_flutter_utils.dart'; +export 'package:zeta_icons/zeta_icons.dart'; + +export 'src/interfaces/interfaces.dart'; +export 'src/utils/utils.dart'; +export 'zeta_components.dart'; +export 'zeta_utils.dart'; diff --git a/packages/zeta_flutter/lib/zeta_icons.dart b/packages/zeta_flutter/lib/zeta_icons.dart new file mode 100644 index 00000000..72b7ddbc --- /dev/null +++ b/packages/zeta_flutter/lib/zeta_icons.dart @@ -0,0 +1,8 @@ +/// Zeta Icons. +/// +/// See [Zeta Icons package](https://pub.dev/packages/zeta_icons) for details. +/// +/// For a list of all icons, visit [Zeta Icons](https://design.zebra.com/icons). +library; + +export 'package:zeta_icons/zeta_icons.dart'; diff --git a/packages/zeta_flutter/lib/zeta_theme.dart b/packages/zeta_flutter/lib/zeta_theme.dart new file mode 100644 index 00000000..860a6514 --- /dev/null +++ b/packages/zeta_flutter/lib/zeta_theme.dart @@ -0,0 +1,6 @@ +/// Zeta Flutter Theme. +/// +/// See [Zeta Flutter Utils package](https://pub.dev/packages/zeta_flutter_utils) for details. +library; + +export 'package:zeta_flutter_theme/zeta_flutter_theme.dart'; diff --git a/packages/zeta_flutter/lib/zeta_utils.dart b/packages/zeta_flutter/lib/zeta_utils.dart new file mode 100644 index 00000000..6c7bf8d6 --- /dev/null +++ b/packages/zeta_flutter/lib/zeta_utils.dart @@ -0,0 +1,6 @@ +/// Zeta Flutter Utils. +/// +/// See [Zeta Flutter Utils package](https://pub.dev/packages/zeta_flutter_utils) for details. +library; + +export 'package:zeta_flutter_utils/zeta_flutter_utils.dart'; diff --git a/packages/zeta_flutter/pubspec.yaml b/packages/zeta_flutter/pubspec.yaml new file mode 100644 index 00000000..d7ca5511 --- /dev/null +++ b/packages/zeta_flutter/pubspec.yaml @@ -0,0 +1,38 @@ +name: zeta_flutter +version: 1.0.0-alpha.1 +description: Zeta is the new, formal, standardized Zebra Design System based off + the successes of ZDS (Zebra Design System). This package is in pre-release, + and so many aspects are incomplete. +homepage: https://design.zebra.com +repository: https://github.com/ZebraDevs/zeta_flutter/tree/develop/packages/zeta_flutter # TODO: Luke Update develop to +issue_tracker: https://github.com/zebradevs/zeta_flutter/issues +documentation: https://design.zebra.com/flutter/dartdoc/index.html + +environment: + sdk: ^3.6.0 + flutter: ">=3.27.0" + +resolution: workspace + +dependencies: + collection: ^1.19.0 + flutter: + sdk: flutter + flutter_slidable: ^3.1.2 + intl: ^0.20.1 + mask_text_input_formatter: ^2.9.0 + zeta_flutter_theme: ^1.0.0-alpha.1 + zeta_flutter_utils: ^1.0.0-alpha.1 + zeta_icons: ^1.0.0-alpha.1 + +dev_dependencies: + flutter_test: + sdk: flutter + image: ^4.5.2 + mockito: ^5.4.5 + path: ^1.9.0 + zds_analysis: ^1.1.1 + +flutter: + assets: + - assets/ diff --git a/test/src/components/accordion/accordion_test.dart b/packages/zeta_flutter/test/components/accordion/accordion_test.dart similarity index 98% rename from test/src/components/accordion/accordion_test.dart rename to packages/zeta_flutter/test/components/accordion/accordion_test.dart index c170b53a..2ecfda85 100644 --- a/test/src/components/accordion/accordion_test.dart +++ b/packages/zeta_flutter/test/components/accordion/accordion_test.dart @@ -4,8 +4,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:zeta_flutter/zeta_flutter.dart'; -import '../../../test_utils/test_app.dart'; -import '../../../test_utils/utils.dart'; +import '../../test_utils/test_utils.dart'; void main() { group('Accessibility Tests', () {}); diff --git a/test/src/components/avatar/assets/maxresdefault.jpg b/packages/zeta_flutter/test/components/avatar/assets/maxresdefault.jpg similarity index 100% rename from test/src/components/avatar/assets/maxresdefault.jpg rename to packages/zeta_flutter/test/components/avatar/assets/maxresdefault.jpg diff --git a/test/src/components/avatar/avatar_rail_test.dart b/packages/zeta_flutter/test/components/avatar/avatar_rail_test.dart similarity index 98% rename from test/src/components/avatar/avatar_rail_test.dart rename to packages/zeta_flutter/test/components/avatar/avatar_rail_test.dart index 3906ba51..cb2f297c 100644 --- a/test/src/components/avatar/avatar_rail_test.dart +++ b/packages/zeta_flutter/test/components/avatar/avatar_rail_test.dart @@ -2,9 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:zeta_flutter/zeta_flutter.dart'; -import '../../../test_utils/test_app.dart'; -import '../../../test_utils/tolerant_comparator.dart'; -import '../../../test_utils/utils.dart'; +import '../../test_utils/test_utils.dart'; void main() { final avatarList = [ diff --git a/test/src/components/avatar/avatar_test.dart b/packages/zeta_flutter/test/components/avatar/avatar_test.dart similarity index 98% rename from test/src/components/avatar/avatar_test.dart rename to packages/zeta_flutter/test/components/avatar/avatar_test.dart index 25459f90..34bed1e9 100644 --- a/test/src/components/avatar/avatar_test.dart +++ b/packages/zeta_flutter/test/components/avatar/avatar_test.dart @@ -4,9 +4,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:zeta_flutter/zeta_flutter.dart'; -import '../../../test_utils/test_app.dart'; -import '../../../test_utils/tolerant_comparator.dart'; -import '../../../test_utils/utils.dart'; +import '../../test_utils/test_utils.dart'; void main() { const String parentFolder = 'avatar'; diff --git a/test/src/components/avatar/golden/avatar_default_l.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_default_l.png similarity index 100% rename from test/src/components/avatar/golden/avatar_default_l.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_default_l.png diff --git a/test/src/components/avatar/golden/avatar_default_m.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_default_m.png similarity index 100% rename from test/src/components/avatar/golden/avatar_default_m.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_default_m.png diff --git a/test/src/components/avatar/golden/avatar_default_s.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_default_s.png similarity index 100% rename from test/src/components/avatar/golden/avatar_default_s.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_default_s.png diff --git a/test/src/components/avatar/golden/avatar_default_xl.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_default_xl.png similarity index 100% rename from test/src/components/avatar/golden/avatar_default_xl.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_default_xl.png diff --git a/test/src/components/avatar/golden/avatar_default_xs.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_default_xs.png similarity index 100% rename from test/src/components/avatar/golden/avatar_default_xs.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_default_xs.png diff --git a/test/src/components/avatar/golden/avatar_default_xxl.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_default_xxl.png similarity index 100% rename from test/src/components/avatar/golden/avatar_default_xxl.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_default_xxl.png diff --git a/test/src/components/avatar/golden/avatar_default_xxs.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_default_xxs.png similarity index 100% rename from test/src/components/avatar/golden/avatar_default_xxs.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_default_xxs.png diff --git a/test/src/components/avatar/golden/avatar_default_xxxl.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_default_xxxl.png similarity index 100% rename from test/src/components/avatar/golden/avatar_default_xxxl.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_default_xxxl.png diff --git a/test/src/components/avatar/golden/avatar_default_xxxs.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_default_xxxs.png similarity index 100% rename from test/src/components/avatar/golden/avatar_default_xxxs.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_default_xxxs.png diff --git a/test/src/components/avatar/golden/avatar_from_name_l.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_from_name_l.png similarity index 100% rename from test/src/components/avatar/golden/avatar_from_name_l.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_from_name_l.png diff --git a/test/src/components/avatar/golden/avatar_from_name_m.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_from_name_m.png similarity index 100% rename from test/src/components/avatar/golden/avatar_from_name_m.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_from_name_m.png diff --git a/test/src/components/avatar/golden/avatar_from_name_s.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_from_name_s.png similarity index 100% rename from test/src/components/avatar/golden/avatar_from_name_s.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_from_name_s.png diff --git a/test/src/components/avatar/golden/avatar_from_name_xl.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_from_name_xl.png similarity index 100% rename from test/src/components/avatar/golden/avatar_from_name_xl.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_from_name_xl.png diff --git a/test/src/components/avatar/golden/avatar_from_name_xs.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_from_name_xs.png similarity index 100% rename from test/src/components/avatar/golden/avatar_from_name_xs.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_from_name_xs.png diff --git a/test/src/components/avatar/golden/avatar_from_name_xxl.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_from_name_xxl.png similarity index 100% rename from test/src/components/avatar/golden/avatar_from_name_xxl.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_from_name_xxl.png diff --git a/test/src/components/avatar/golden/avatar_from_name_xxs.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_from_name_xxs.png similarity index 100% rename from test/src/components/avatar/golden/avatar_from_name_xxs.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_from_name_xxs.png diff --git a/test/src/components/avatar/golden/avatar_from_name_xxxl.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_from_name_xxxl.png similarity index 100% rename from test/src/components/avatar/golden/avatar_from_name_xxxl.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_from_name_xxxl.png diff --git a/test/src/components/avatar/golden/avatar_from_name_xxxs.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_from_name_xxxs.png similarity index 100% rename from test/src/components/avatar/golden/avatar_from_name_xxxs.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_from_name_xxxs.png diff --git a/test/src/components/avatar/golden/avatar_image_l.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_image_l.png similarity index 100% rename from test/src/components/avatar/golden/avatar_image_l.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_image_l.png diff --git a/test/src/components/avatar/golden/avatar_image_m.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_image_m.png similarity index 100% rename from test/src/components/avatar/golden/avatar_image_m.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_image_m.png diff --git a/test/src/components/avatar/golden/avatar_image_s.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_image_s.png similarity index 100% rename from test/src/components/avatar/golden/avatar_image_s.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_image_s.png diff --git a/test/src/components/avatar/golden/avatar_image_xl.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_image_xl.png similarity index 100% rename from test/src/components/avatar/golden/avatar_image_xl.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_image_xl.png diff --git a/test/src/components/avatar/golden/avatar_image_xs.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_image_xs.png similarity index 100% rename from test/src/components/avatar/golden/avatar_image_xs.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_image_xs.png diff --git a/test/src/components/avatar/golden/avatar_image_xxl.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_image_xxl.png similarity index 100% rename from test/src/components/avatar/golden/avatar_image_xxl.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_image_xxl.png diff --git a/test/src/components/avatar/golden/avatar_image_xxs.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_image_xxs.png similarity index 100% rename from test/src/components/avatar/golden/avatar_image_xxs.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_image_xxs.png diff --git a/test/src/components/avatar/golden/avatar_image_xxxl.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_image_xxxl.png similarity index 100% rename from test/src/components/avatar/golden/avatar_image_xxxl.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_image_xxxl.png diff --git a/test/src/components/avatar/golden/avatar_image_xxxs.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_image_xxxs.png similarity index 100% rename from test/src/components/avatar/golden/avatar_image_xxxs.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_image_xxxs.png diff --git a/test/src/components/avatar/golden/avatar_initials_l.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_initials_l.png similarity index 100% rename from test/src/components/avatar/golden/avatar_initials_l.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_initials_l.png diff --git a/test/src/components/avatar/golden/avatar_initials_m.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_initials_m.png similarity index 100% rename from test/src/components/avatar/golden/avatar_initials_m.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_initials_m.png diff --git a/test/src/components/avatar/golden/avatar_initials_s.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_initials_s.png similarity index 100% rename from test/src/components/avatar/golden/avatar_initials_s.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_initials_s.png diff --git a/test/src/components/avatar/golden/avatar_initials_xl.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_initials_xl.png similarity index 100% rename from test/src/components/avatar/golden/avatar_initials_xl.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_initials_xl.png diff --git a/test/src/components/avatar/golden/avatar_initials_xs.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_initials_xs.png similarity index 100% rename from test/src/components/avatar/golden/avatar_initials_xs.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_initials_xs.png diff --git a/test/src/components/avatar/golden/avatar_initials_xxl.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_initials_xxl.png similarity index 100% rename from test/src/components/avatar/golden/avatar_initials_xxl.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_initials_xxl.png diff --git a/test/src/components/avatar/golden/avatar_initials_xxs.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_initials_xxs.png similarity index 100% rename from test/src/components/avatar/golden/avatar_initials_xxs.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_initials_xxs.png diff --git a/test/src/components/avatar/golden/avatar_initials_xxxl.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_initials_xxxl.png similarity index 100% rename from test/src/components/avatar/golden/avatar_initials_xxxl.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_initials_xxxl.png diff --git a/test/src/components/avatar/golden/avatar_initials_xxxs.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_initials_xxxs.png similarity index 100% rename from test/src/components/avatar/golden/avatar_initials_xxxs.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_initials_xxxs.png diff --git a/test/src/components/avatar/golden/avatar_lower_badge_l.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_lower_badge_l.png similarity index 100% rename from test/src/components/avatar/golden/avatar_lower_badge_l.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_lower_badge_l.png diff --git a/test/src/components/avatar/golden/avatar_lower_badge_m.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_lower_badge_m.png similarity index 100% rename from test/src/components/avatar/golden/avatar_lower_badge_m.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_lower_badge_m.png diff --git a/test/src/components/avatar/golden/avatar_lower_badge_s.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_lower_badge_s.png similarity index 100% rename from test/src/components/avatar/golden/avatar_lower_badge_s.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_lower_badge_s.png diff --git a/test/src/components/avatar/golden/avatar_lower_badge_xl.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_lower_badge_xl.png similarity index 100% rename from test/src/components/avatar/golden/avatar_lower_badge_xl.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_lower_badge_xl.png diff --git a/test/src/components/avatar/golden/avatar_lower_badge_xs.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_lower_badge_xs.png similarity index 100% rename from test/src/components/avatar/golden/avatar_lower_badge_xs.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_lower_badge_xs.png diff --git a/test/src/components/avatar/golden/avatar_lower_badge_xxl.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_lower_badge_xxl.png similarity index 100% rename from test/src/components/avatar/golden/avatar_lower_badge_xxl.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_lower_badge_xxl.png diff --git a/test/src/components/avatar/golden/avatar_lower_badge_xxs.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_lower_badge_xxs.png similarity index 100% rename from test/src/components/avatar/golden/avatar_lower_badge_xxs.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_lower_badge_xxs.png diff --git a/test/src/components/avatar/golden/avatar_lower_badge_xxxl.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_lower_badge_xxxl.png similarity index 100% rename from test/src/components/avatar/golden/avatar_lower_badge_xxxl.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_lower_badge_xxxl.png diff --git a/test/src/components/avatar/golden/avatar_lower_badge_xxxs.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_lower_badge_xxxs.png similarity index 100% rename from test/src/components/avatar/golden/avatar_lower_badge_xxxs.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_lower_badge_xxxs.png diff --git a/test/src/components/avatar/golden/avatar_upper_badge_l.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_upper_badge_l.png similarity index 100% rename from test/src/components/avatar/golden/avatar_upper_badge_l.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_upper_badge_l.png diff --git a/test/src/components/avatar/golden/avatar_upper_badge_m.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_upper_badge_m.png similarity index 100% rename from test/src/components/avatar/golden/avatar_upper_badge_m.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_upper_badge_m.png diff --git a/test/src/components/avatar/golden/avatar_upper_badge_s.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_upper_badge_s.png similarity index 100% rename from test/src/components/avatar/golden/avatar_upper_badge_s.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_upper_badge_s.png diff --git a/test/src/components/avatar/golden/avatar_upper_badge_xl.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_upper_badge_xl.png similarity index 100% rename from test/src/components/avatar/golden/avatar_upper_badge_xl.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_upper_badge_xl.png diff --git a/test/src/components/avatar/golden/avatar_upper_badge_xs.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_upper_badge_xs.png similarity index 100% rename from test/src/components/avatar/golden/avatar_upper_badge_xs.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_upper_badge_xs.png diff --git a/test/src/components/avatar/golden/avatar_upper_badge_xxl.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_upper_badge_xxl.png similarity index 100% rename from test/src/components/avatar/golden/avatar_upper_badge_xxl.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_upper_badge_xxl.png diff --git a/test/src/components/avatar/golden/avatar_upper_badge_xxs.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_upper_badge_xxs.png similarity index 100% rename from test/src/components/avatar/golden/avatar_upper_badge_xxs.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_upper_badge_xxs.png diff --git a/test/src/components/avatar/golden/avatar_upper_badge_xxxl.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_upper_badge_xxxl.png similarity index 100% rename from test/src/components/avatar/golden/avatar_upper_badge_xxxl.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_upper_badge_xxxl.png diff --git a/test/src/components/avatar/golden/avatar_upper_badge_xxxs.png b/packages/zeta_flutter/test/components/avatar/golden/avatar_upper_badge_xxxs.png similarity index 100% rename from test/src/components/avatar/golden/avatar_upper_badge_xxxs.png rename to packages/zeta_flutter/test/components/avatar/golden/avatar_upper_badge_xxxs.png diff --git a/test/src/components/avatar/golden/zeta_avatar_rail_default.png b/packages/zeta_flutter/test/components/avatar/golden/zeta_avatar_rail_default.png similarity index 100% rename from test/src/components/avatar/golden/zeta_avatar_rail_default.png rename to packages/zeta_flutter/test/components/avatar/golden/zeta_avatar_rail_default.png diff --git a/test/src/components/badge/golden/badge.png b/packages/zeta_flutter/test/components/badge/golden/badge.png similarity index 100% rename from test/src/components/badge/golden/badge.png rename to packages/zeta_flutter/test/components/badge/golden/badge.png diff --git a/test/src/components/badge/golden/badge_dark.png b/packages/zeta_flutter/test/components/badge/golden/badge_dark.png similarity index 100% rename from test/src/components/badge/golden/badge_dark.png rename to packages/zeta_flutter/test/components/badge/golden/badge_dark.png diff --git a/test/src/components/badge/golden/badge_default.png b/packages/zeta_flutter/test/components/badge/golden/badge_default.png similarity index 100% rename from test/src/components/badge/golden/badge_default.png rename to packages/zeta_flutter/test/components/badge/golden/badge_default.png diff --git a/test/src/components/badge/golden/badge_negative.png b/packages/zeta_flutter/test/components/badge/golden/badge_negative.png similarity index 100% rename from test/src/components/badge/golden/badge_negative.png rename to packages/zeta_flutter/test/components/badge/golden/badge_negative.png diff --git a/test/src/components/badge/golden/badge_neutral.png b/packages/zeta_flutter/test/components/badge/golden/badge_neutral.png similarity index 100% rename from test/src/components/badge/golden/badge_neutral.png rename to packages/zeta_flutter/test/components/badge/golden/badge_neutral.png diff --git a/test/src/components/badge/golden/badge_positive.png b/packages/zeta_flutter/test/components/badge/golden/badge_positive.png similarity index 100% rename from test/src/components/badge/golden/badge_positive.png rename to packages/zeta_flutter/test/components/badge/golden/badge_positive.png diff --git a/test/src/components/badge/golden/badge_warning.png b/packages/zeta_flutter/test/components/badge/golden/badge_warning.png similarity index 100% rename from test/src/components/badge/golden/badge_warning.png rename to packages/zeta_flutter/test/components/badge/golden/badge_warning.png diff --git a/test/src/components/badge/golden/indicator_default.png b/packages/zeta_flutter/test/components/badge/golden/indicator_default.png similarity index 100% rename from test/src/components/badge/golden/indicator_default.png rename to packages/zeta_flutter/test/components/badge/golden/indicator_default.png diff --git a/test/src/components/badge/golden/indicator_icon_default.png b/packages/zeta_flutter/test/components/badge/golden/indicator_icon_default.png similarity index 100% rename from test/src/components/badge/golden/indicator_icon_default.png rename to packages/zeta_flutter/test/components/badge/golden/indicator_icon_default.png diff --git a/test/src/components/badge/golden/indicator_icon_values.png b/packages/zeta_flutter/test/components/badge/golden/indicator_icon_values.png similarity index 100% rename from test/src/components/badge/golden/indicator_icon_values.png rename to packages/zeta_flutter/test/components/badge/golden/indicator_icon_values.png diff --git a/test/src/components/badge/golden/indicator_notification_default.png b/packages/zeta_flutter/test/components/badge/golden/indicator_notification_default.png similarity index 100% rename from test/src/components/badge/golden/indicator_notification_default.png rename to packages/zeta_flutter/test/components/badge/golden/indicator_notification_default.png diff --git a/test/src/components/badge/golden/indicator_notification_values.png b/packages/zeta_flutter/test/components/badge/golden/indicator_notification_values.png similarity index 100% rename from test/src/components/badge/golden/indicator_notification_values.png rename to packages/zeta_flutter/test/components/badge/golden/indicator_notification_values.png diff --git a/test/src/components/badge/golden/indicator_notification_with_value.png b/packages/zeta_flutter/test/components/badge/golden/indicator_notification_with_value.png similarity index 100% rename from test/src/components/badge/golden/indicator_notification_with_value.png rename to packages/zeta_flutter/test/components/badge/golden/indicator_notification_with_value.png diff --git a/test/src/components/badge/golden/label_dark.png b/packages/zeta_flutter/test/components/badge/golden/label_dark.png similarity index 100% rename from test/src/components/badge/golden/label_dark.png rename to packages/zeta_flutter/test/components/badge/golden/label_dark.png diff --git a/test/src/components/badge/golden/label_default.png b/packages/zeta_flutter/test/components/badge/golden/label_default.png similarity index 100% rename from test/src/components/badge/golden/label_default.png rename to packages/zeta_flutter/test/components/badge/golden/label_default.png diff --git a/test/src/components/badge/golden/label_negative.png b/packages/zeta_flutter/test/components/badge/golden/label_negative.png similarity index 100% rename from test/src/components/badge/golden/label_negative.png rename to packages/zeta_flutter/test/components/badge/golden/label_negative.png diff --git a/test/src/components/badge/golden/label_neutral.png b/packages/zeta_flutter/test/components/badge/golden/label_neutral.png similarity index 100% rename from test/src/components/badge/golden/label_neutral.png rename to packages/zeta_flutter/test/components/badge/golden/label_neutral.png diff --git a/test/src/components/badge/golden/label_positive.png b/packages/zeta_flutter/test/components/badge/golden/label_positive.png similarity index 100% rename from test/src/components/badge/golden/label_positive.png rename to packages/zeta_flutter/test/components/badge/golden/label_positive.png diff --git a/test/src/components/badge/golden/label_sharp.png b/packages/zeta_flutter/test/components/badge/golden/label_sharp.png similarity index 100% rename from test/src/components/badge/golden/label_sharp.png rename to packages/zeta_flutter/test/components/badge/golden/label_sharp.png diff --git a/test/src/components/badge/golden/label_warning.png b/packages/zeta_flutter/test/components/badge/golden/label_warning.png similarity index 100% rename from test/src/components/badge/golden/label_warning.png rename to packages/zeta_flutter/test/components/badge/golden/label_warning.png diff --git a/test/src/components/badge/golden/priority_pill_default.png b/packages/zeta_flutter/test/components/badge/golden/priority_pill_default.png similarity index 100% rename from test/src/components/badge/golden/priority_pill_default.png rename to packages/zeta_flutter/test/components/badge/golden/priority_pill_default.png diff --git a/test/src/components/badge/golden/priority_pill_high.png b/packages/zeta_flutter/test/components/badge/golden/priority_pill_high.png similarity index 100% rename from test/src/components/badge/golden/priority_pill_high.png rename to packages/zeta_flutter/test/components/badge/golden/priority_pill_high.png diff --git a/test/src/components/badge/golden/priority_pill_low.png b/packages/zeta_flutter/test/components/badge/golden/priority_pill_low.png similarity index 100% rename from test/src/components/badge/golden/priority_pill_low.png rename to packages/zeta_flutter/test/components/badge/golden/priority_pill_low.png diff --git a/test/src/components/badge/golden/priority_pill_medium.png b/packages/zeta_flutter/test/components/badge/golden/priority_pill_medium.png similarity index 100% rename from test/src/components/badge/golden/priority_pill_medium.png rename to packages/zeta_flutter/test/components/badge/golden/priority_pill_medium.png diff --git a/test/src/components/badge/golden/status_label_custom.png b/packages/zeta_flutter/test/components/badge/golden/status_label_custom.png similarity index 100% rename from test/src/components/badge/golden/status_label_custom.png rename to packages/zeta_flutter/test/components/badge/golden/status_label_custom.png diff --git a/test/src/components/badge/golden/status_label_default.png b/packages/zeta_flutter/test/components/badge/golden/status_label_default.png similarity index 100% rename from test/src/components/badge/golden/status_label_default.png rename to packages/zeta_flutter/test/components/badge/golden/status_label_default.png diff --git a/test/src/components/badge/golden/tag_left.png b/packages/zeta_flutter/test/components/badge/golden/tag_left.png similarity index 100% rename from test/src/components/badge/golden/tag_left.png rename to packages/zeta_flutter/test/components/badge/golden/tag_left.png diff --git a/test/src/components/badge/golden/tag_right.png b/packages/zeta_flutter/test/components/badge/golden/tag_right.png similarity index 100% rename from test/src/components/badge/golden/tag_right.png rename to packages/zeta_flutter/test/components/badge/golden/tag_right.png diff --git a/test/src/components/badge/indicator_test.dart b/packages/zeta_flutter/test/components/badge/indicator_test.dart similarity index 98% rename from test/src/components/badge/indicator_test.dart rename to packages/zeta_flutter/test/components/badge/indicator_test.dart index 74f35924..6cd1578a 100644 --- a/test/src/components/badge/indicator_test.dart +++ b/packages/zeta_flutter/test/components/badge/indicator_test.dart @@ -1,9 +1,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:zeta_flutter/zeta_flutter.dart'; -import '../../../test_utils/test_app.dart'; -import '../../../test_utils/tolerant_comparator.dart'; -import '../../../test_utils/utils.dart'; + +import '../../test_utils/test_utils.dart'; void main() { const String parentFolder = 'badge'; diff --git a/test/src/components/badge/label_test.dart b/packages/zeta_flutter/test/components/badge/label_test.dart similarity index 96% rename from test/src/components/badge/label_test.dart rename to packages/zeta_flutter/test/components/badge/label_test.dart index 24d1e99b..152e42c4 100644 --- a/test/src/components/badge/label_test.dart +++ b/packages/zeta_flutter/test/components/badge/label_test.dart @@ -2,9 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:zeta_flutter/zeta_flutter.dart'; -import '../../../test_utils/test_app.dart'; -import '../../../test_utils/tolerant_comparator.dart'; -import '../../../test_utils/utils.dart'; +import '../../test_utils/test_utils.dart'; void main() { const String parentFolder = 'badge'; diff --git a/test/src/components/badge/priority_pill_test.dart b/packages/zeta_flutter/test/components/badge/priority_pill_test.dart similarity index 97% rename from test/src/components/badge/priority_pill_test.dart rename to packages/zeta_flutter/test/components/badge/priority_pill_test.dart index 04bf9ee0..94887110 100644 --- a/test/src/components/badge/priority_pill_test.dart +++ b/packages/zeta_flutter/test/components/badge/priority_pill_test.dart @@ -1,9 +1,7 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:zeta_flutter/zeta_flutter.dart'; -import '../../../test_utils/test_app.dart'; -import '../../../test_utils/tolerant_comparator.dart'; -import '../../../test_utils/utils.dart'; +import '../../test_utils/test_utils.dart'; void main() { const String parentFolder = 'badge'; diff --git a/test/src/components/badge/status_label_test.dart b/packages/zeta_flutter/test/components/badge/status_label_test.dart similarity index 93% rename from test/src/components/badge/status_label_test.dart rename to packages/zeta_flutter/test/components/badge/status_label_test.dart index 992f6bad..30032af3 100644 --- a/test/src/components/badge/status_label_test.dart +++ b/packages/zeta_flutter/test/components/badge/status_label_test.dart @@ -2,9 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:zeta_flutter/zeta_flutter.dart'; -import '../../../test_utils/test_app.dart'; -import '../../../test_utils/tolerant_comparator.dart'; -import '../../../test_utils/utils.dart'; +import '../../test_utils/test_utils.dart'; void main() { const String parentFolder = 'badge'; diff --git a/test/src/components/badge/tag_test.dart b/packages/zeta_flutter/test/components/badge/tag_test.dart similarity index 91% rename from test/src/components/badge/tag_test.dart rename to packages/zeta_flutter/test/components/badge/tag_test.dart index dc1cdba5..33a5bcd8 100644 --- a/test/src/components/badge/tag_test.dart +++ b/packages/zeta_flutter/test/components/badge/tag_test.dart @@ -1,9 +1,7 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:zeta_flutter/zeta_flutter.dart'; -import '../../../test_utils/test_app.dart'; -import '../../../test_utils/tolerant_comparator.dart'; -import '../../../test_utils/utils.dart'; +import '../../test_utils/test_utils.dart'; void main() { const String parentFolder = 'badge'; diff --git a/test/src/components/banner/banner_test.dart b/packages/zeta_flutter/test/components/banner/banner_test.dart similarity index 98% rename from test/src/components/banner/banner_test.dart rename to packages/zeta_flutter/test/components/banner/banner_test.dart index 6333215b..4bc78bb0 100644 --- a/test/src/components/banner/banner_test.dart +++ b/packages/zeta_flutter/test/components/banner/banner_test.dart @@ -3,9 +3,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:zeta_flutter/zeta_flutter.dart'; -import '../../../test_utils/test_app.dart'; -import '../../../test_utils/tolerant_comparator.dart'; -import '../../../test_utils/utils.dart'; +import '../../test_utils/test_utils.dart'; ZetaColorSwatch _colorFromType(BuildContext context, ZetaSystemBannerStatus type) { final zeta = Zeta.of(context); diff --git a/test/src/components/banner/golden/banner_negative.png b/packages/zeta_flutter/test/components/banner/golden/banner_negative.png similarity index 100% rename from test/src/components/banner/golden/banner_negative.png rename to packages/zeta_flutter/test/components/banner/golden/banner_negative.png diff --git a/test/src/components/banner/golden/banner_positive.png b/packages/zeta_flutter/test/components/banner/golden/banner_positive.png similarity index 100% rename from test/src/components/banner/golden/banner_positive.png rename to packages/zeta_flutter/test/components/banner/golden/banner_positive.png diff --git a/test/src/components/banner/golden/banner_primary.png b/packages/zeta_flutter/test/components/banner/golden/banner_primary.png similarity index 100% rename from test/src/components/banner/golden/banner_primary.png rename to packages/zeta_flutter/test/components/banner/golden/banner_primary.png diff --git a/test/src/components/banner/golden/banner_warning.png b/packages/zeta_flutter/test/components/banner/golden/banner_warning.png similarity index 100% rename from test/src/components/banner/golden/banner_warning.png rename to packages/zeta_flutter/test/components/banner/golden/banner_warning.png diff --git a/test/src/components/breadcrumb/breadcrumb_test.dart b/packages/zeta_flutter/test/components/breadcrumb/breadcrumb_test.dart similarity index 97% rename from test/src/components/breadcrumb/breadcrumb_test.dart rename to packages/zeta_flutter/test/components/breadcrumb/breadcrumb_test.dart index be5269a5..6fe7850b 100644 --- a/test/src/components/breadcrumb/breadcrumb_test.dart +++ b/packages/zeta_flutter/test/components/breadcrumb/breadcrumb_test.dart @@ -3,9 +3,7 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:zeta_flutter/src/components/breadcrumb/breadcrumb.dart'; import 'package:zeta_flutter/zeta_flutter.dart'; -import '../../../test_utils/test_app.dart'; -import '../../../test_utils/tolerant_comparator.dart'; -import '../../../test_utils/utils.dart'; +import '../../test_utils/test_utils.dart'; void main() { const String parentFolder = 'breadcrumb'; diff --git a/test/src/components/button/button_test.dart b/packages/zeta_flutter/test/components/button/button_test.dart similarity index 98% rename from test/src/components/button/button_test.dart rename to packages/zeta_flutter/test/components/button/button_test.dart index 9def46a9..a1c1f5a2 100644 --- a/test/src/components/button/button_test.dart +++ b/packages/zeta_flutter/test/components/button/button_test.dart @@ -1,11 +1,10 @@ import 'dart:ui'; + import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:zeta_flutter/zeta_flutter.dart'; -import '../../../test_utils/test_app.dart'; -import '../../../test_utils/tolerant_comparator.dart'; -import '../../../test_utils/utils.dart'; +import '../../test_utils/test_utils.dart'; void main() { const String parentFolder = 'button'; diff --git a/test/src/components/button/golden/button_disabled.png b/packages/zeta_flutter/test/components/button/golden/button_disabled.png similarity index 100% rename from test/src/components/button/golden/button_disabled.png rename to packages/zeta_flutter/test/components/button/golden/button_disabled.png diff --git a/test/src/components/button/golden/button_negative.png b/packages/zeta_flutter/test/components/button/golden/button_negative.png similarity index 100% rename from test/src/components/button/golden/button_negative.png rename to packages/zeta_flutter/test/components/button/golden/button_negative.png diff --git a/test/src/components/button/golden/button_outline.png b/packages/zeta_flutter/test/components/button/golden/button_outline.png similarity index 100% rename from test/src/components/button/golden/button_outline.png rename to packages/zeta_flutter/test/components/button/golden/button_outline.png diff --git a/test/src/components/button/golden/button_outline_subtle.png b/packages/zeta_flutter/test/components/button/golden/button_outline_subtle.png similarity index 100% rename from test/src/components/button/golden/button_outline_subtle.png rename to packages/zeta_flutter/test/components/button/golden/button_outline_subtle.png diff --git a/test/src/components/button/golden/button_positive.png b/packages/zeta_flutter/test/components/button/golden/button_positive.png similarity index 100% rename from test/src/components/button/golden/button_positive.png rename to packages/zeta_flutter/test/components/button/golden/button_positive.png diff --git a/test/src/components/button/golden/button_primary.png b/packages/zeta_flutter/test/components/button/golden/button_primary.png similarity index 100% rename from test/src/components/button/golden/button_primary.png rename to packages/zeta_flutter/test/components/button/golden/button_primary.png diff --git a/test/src/components/button/golden/button_secondary.png b/packages/zeta_flutter/test/components/button/golden/button_secondary.png similarity index 100% rename from test/src/components/button/golden/button_secondary.png rename to packages/zeta_flutter/test/components/button/golden/button_secondary.png diff --git a/test/src/components/button/golden/button_text.png b/packages/zeta_flutter/test/components/button/golden/button_text.png similarity index 100% rename from test/src/components/button/golden/button_text.png rename to packages/zeta_flutter/test/components/button/golden/button_text.png diff --git a/test/src/components/chat_item/chat_item_test.dart b/packages/zeta_flutter/test/components/chat_item/chat_item_test.dart similarity index 99% rename from test/src/components/chat_item/chat_item_test.dart rename to packages/zeta_flutter/test/components/chat_item/chat_item_test.dart index 70330ee8..d15508ab 100644 --- a/test/src/components/chat_item/chat_item_test.dart +++ b/packages/zeta_flutter/test/components/chat_item/chat_item_test.dart @@ -3,9 +3,7 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:intl/intl.dart'; import 'package:zeta_flutter/zeta_flutter.dart'; -import '../../../test_utils/test_app.dart'; -import '../../../test_utils/tolerant_comparator.dart'; -import '../../../test_utils/utils.dart'; +import '../../test_utils/test_utils.dart'; void main() { const goldenFile = GoldenFiles(component: 'chat_item'); diff --git a/test/src/components/chat_item/golden/chat_item_custom_leading.png b/packages/zeta_flutter/test/components/chat_item/golden/chat_item_custom_leading.png similarity index 100% rename from test/src/components/chat_item/golden/chat_item_custom_leading.png rename to packages/zeta_flutter/test/components/chat_item/golden/chat_item_custom_leading.png diff --git a/test/src/components/chat_item/golden/chat_item_custom_slidable_buttons.png b/packages/zeta_flutter/test/components/chat_item/golden/chat_item_custom_slidable_buttons.png similarity index 100% rename from test/src/components/chat_item/golden/chat_item_custom_slidable_buttons.png rename to packages/zeta_flutter/test/components/chat_item/golden/chat_item_custom_slidable_buttons.png diff --git a/test/src/components/chat_item/golden/chat_item_default.png b/packages/zeta_flutter/test/components/chat_item/golden/chat_item_default.png similarity index 100% rename from test/src/components/chat_item/golden/chat_item_default.png rename to packages/zeta_flutter/test/components/chat_item/golden/chat_item_default.png diff --git a/test/src/components/chat_item/golden/chat_item_highlighted.png b/packages/zeta_flutter/test/components/chat_item/golden/chat_item_highlighted.png similarity index 100% rename from test/src/components/chat_item/golden/chat_item_highlighted.png rename to packages/zeta_flutter/test/components/chat_item/golden/chat_item_highlighted.png diff --git a/test/src/components/chat_item/golden/chat_item_pale_and_regular_buttons.png b/packages/zeta_flutter/test/components/chat_item/golden/chat_item_pale_and_regular_buttons.png similarity index 100% rename from test/src/components/chat_item/golden/chat_item_pale_and_regular_buttons.png rename to packages/zeta_flutter/test/components/chat_item/golden/chat_item_pale_and_regular_buttons.png diff --git a/test/src/components/chat_item/golden/chat_item_pale_slidable_buttons.png b/packages/zeta_flutter/test/components/chat_item/golden/chat_item_pale_slidable_buttons.png similarity index 100% rename from test/src/components/chat_item/golden/chat_item_pale_slidable_buttons.png rename to packages/zeta_flutter/test/components/chat_item/golden/chat_item_pale_slidable_buttons.png diff --git a/test/src/components/chat_item/golden/chat_item_slidable_actions.png b/packages/zeta_flutter/test/components/chat_item/golden/chat_item_slidable_actions.png similarity index 100% rename from test/src/components/chat_item/golden/chat_item_slidable_actions.png rename to packages/zeta_flutter/test/components/chat_item/golden/chat_item_slidable_actions.png diff --git a/test/src/components/chat_item/golden/chat_item_small_screen_slidable_button.png b/packages/zeta_flutter/test/components/chat_item/golden/chat_item_small_screen_slidable_button.png similarity index 100% rename from test/src/components/chat_item/golden/chat_item_small_screen_slidable_button.png rename to packages/zeta_flutter/test/components/chat_item/golden/chat_item_small_screen_slidable_button.png diff --git a/test/src/components/checkbox/checkbox_test.dart b/packages/zeta_flutter/test/components/checkbox/checkbox_test.dart similarity index 97% rename from test/src/components/checkbox/checkbox_test.dart rename to packages/zeta_flutter/test/components/checkbox/checkbox_test.dart index 12c0534b..0c00847f 100644 --- a/test/src/components/checkbox/checkbox_test.dart +++ b/packages/zeta_flutter/test/components/checkbox/checkbox_test.dart @@ -5,9 +5,7 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:zeta_flutter/src/components/checkbox/checkbox.dart'; import 'package:zeta_flutter/zeta_flutter.dart'; -import '../../../test_utils/test_app.dart'; -import '../../../test_utils/tolerant_comparator.dart'; -import '../../../test_utils/utils.dart'; +import '../../test_utils/test_utils.dart'; void main() { const String parentFolder = 'checkbox'; diff --git a/test/src/components/checkbox/golden/checkbox_disabled.png b/packages/zeta_flutter/test/components/checkbox/golden/checkbox_disabled.png similarity index 100% rename from test/src/components/checkbox/golden/checkbox_disabled.png rename to packages/zeta_flutter/test/components/checkbox/golden/checkbox_disabled.png diff --git a/test/src/components/checkbox/golden/checkbox_enabled.png b/packages/zeta_flutter/test/components/checkbox/golden/checkbox_enabled.png similarity index 100% rename from test/src/components/checkbox/golden/checkbox_enabled.png rename to packages/zeta_flutter/test/components/checkbox/golden/checkbox_enabled.png diff --git a/test/src/components/checkbox/golden/checkbox_hover.png b/packages/zeta_flutter/test/components/checkbox/golden/checkbox_hover.png similarity index 100% rename from test/src/components/checkbox/golden/checkbox_hover.png rename to packages/zeta_flutter/test/components/checkbox/golden/checkbox_hover.png diff --git a/test/src/components/chips/chip_test.dart b/packages/zeta_flutter/test/components/chips/chip_test.dart similarity index 96% rename from test/src/components/chips/chip_test.dart rename to packages/zeta_flutter/test/components/chips/chip_test.dart index aa324ae7..66f6fe26 100644 --- a/test/src/components/chips/chip_test.dart +++ b/packages/zeta_flutter/test/components/chips/chip_test.dart @@ -2,9 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:zeta_flutter/zeta_flutter.dart'; -import '../../../test_utils/test_app.dart'; -import '../../../test_utils/tolerant_comparator.dart'; -import '../../../test_utils/utils.dart'; +import '../../test_utils/test_utils.dart'; void main() { const String parentFolder = 'chips'; diff --git a/test/src/components/chips/golden/status_chip_default.png b/packages/zeta_flutter/test/components/chips/golden/status_chip_default.png similarity index 100% rename from test/src/components/chips/golden/status_chip_default.png rename to packages/zeta_flutter/test/components/chips/golden/status_chip_default.png diff --git a/test/src/components/chips/golden/status_chip_long.png b/packages/zeta_flutter/test/components/chips/golden/status_chip_long.png similarity index 100% rename from test/src/components/chips/golden/status_chip_long.png rename to packages/zeta_flutter/test/components/chips/golden/status_chip_long.png diff --git a/test/src/components/chips/golden/status_chip_sharp.png b/packages/zeta_flutter/test/components/chips/golden/status_chip_sharp.png similarity index 100% rename from test/src/components/chips/golden/status_chip_sharp.png rename to packages/zeta_flutter/test/components/chips/golden/status_chip_sharp.png diff --git a/test/src/components/chips/status_chip_test.dart b/packages/zeta_flutter/test/components/chips/status_chip_test.dart similarity index 97% rename from test/src/components/chips/status_chip_test.dart rename to packages/zeta_flutter/test/components/chips/status_chip_test.dart index fc735b93..59ea4a33 100644 --- a/test/src/components/chips/status_chip_test.dart +++ b/packages/zeta_flutter/test/components/chips/status_chip_test.dart @@ -2,9 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:zeta_flutter/zeta_flutter.dart'; -import '../../../test_utils/test_app.dart'; -import '../../../test_utils/tolerant_comparator.dart'; -import '../../../test_utils/utils.dart'; +import '../../test_utils/test_utils.dart'; void main() { const String parentFolder = 'chips'; diff --git a/test/src/components/comms_button/comms_button_test.dart b/packages/zeta_flutter/test/components/comms_button/comms_button_test.dart similarity index 98% rename from test/src/components/comms_button/comms_button_test.dart rename to packages/zeta_flutter/test/components/comms_button/comms_button_test.dart index 67ace1d5..454cab8f 100644 --- a/test/src/components/comms_button/comms_button_test.dart +++ b/packages/zeta_flutter/test/components/comms_button/comms_button_test.dart @@ -2,9 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:zeta_flutter/zeta_flutter.dart'; -import '../../../test_utils/test_app.dart'; -import '../../../test_utils/tolerant_comparator.dart'; -import '../../../test_utils/utils.dart'; +import '../../test_utils/test_utils.dart'; void main() { const String parentFolder = 'comms_button'; diff --git a/test/src/components/comms_button/golden/CommsButton_negative.png b/packages/zeta_flutter/test/components/comms_button/golden/CommsButton_negative.png similarity index 100% rename from test/src/components/comms_button/golden/CommsButton_negative.png rename to packages/zeta_flutter/test/components/comms_button/golden/CommsButton_negative.png diff --git a/test/src/components/comms_button/golden/CommsButton_off.png b/packages/zeta_flutter/test/components/comms_button/golden/CommsButton_off.png similarity index 100% rename from test/src/components/comms_button/golden/CommsButton_off.png rename to packages/zeta_flutter/test/components/comms_button/golden/CommsButton_off.png diff --git a/test/src/components/comms_button/golden/CommsButton_on.png b/packages/zeta_flutter/test/components/comms_button/golden/CommsButton_on.png similarity index 100% rename from test/src/components/comms_button/golden/CommsButton_on.png rename to packages/zeta_flutter/test/components/comms_button/golden/CommsButton_on.png diff --git a/test/src/components/comms_button/golden/CommsButton_positive.png b/packages/zeta_flutter/test/components/comms_button/golden/CommsButton_positive.png similarity index 100% rename from test/src/components/comms_button/golden/CommsButton_positive.png rename to packages/zeta_flutter/test/components/comms_button/golden/CommsButton_positive.png diff --git a/test/src/components/comms_button/golden/CommsButton_warning.png b/packages/zeta_flutter/test/components/comms_button/golden/CommsButton_warning.png similarity index 100% rename from test/src/components/comms_button/golden/CommsButton_warning.png rename to packages/zeta_flutter/test/components/comms_button/golden/CommsButton_warning.png diff --git a/test/src/components/dialpad/dialpad_test.dart b/packages/zeta_flutter/test/components/dialpad/dialpad_test.dart similarity index 98% rename from test/src/components/dialpad/dialpad_test.dart rename to packages/zeta_flutter/test/components/dialpad/dialpad_test.dart index 7634c674..dbf3fb9c 100644 --- a/test/src/components/dialpad/dialpad_test.dart +++ b/packages/zeta_flutter/test/components/dialpad/dialpad_test.dart @@ -4,9 +4,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:zeta_flutter/zeta_flutter.dart'; -import '../../../test_utils/test_app.dart'; -import '../../../test_utils/tolerant_comparator.dart'; -import '../../../test_utils/utils.dart'; +import '../../test_utils/test_utils.dart'; void main() { const String parentFolder = 'dialpad'; diff --git a/test/src/components/dialpad/golden/dialpad_disabled.png b/packages/zeta_flutter/test/components/dialpad/golden/dialpad_disabled.png similarity index 100% rename from test/src/components/dialpad/golden/dialpad_disabled.png rename to packages/zeta_flutter/test/components/dialpad/golden/dialpad_disabled.png diff --git a/test/src/components/dialpad/golden/dialpad_enabled.png b/packages/zeta_flutter/test/components/dialpad/golden/dialpad_enabled.png similarity index 100% rename from test/src/components/dialpad/golden/dialpad_enabled.png rename to packages/zeta_flutter/test/components/dialpad/golden/dialpad_enabled.png diff --git a/test/src/components/dialpad/golden/dialpadbutton.png b/packages/zeta_flutter/test/components/dialpad/golden/dialpadbutton.png similarity index 100% rename from test/src/components/dialpad/golden/dialpadbutton.png rename to packages/zeta_flutter/test/components/dialpad/golden/dialpadbutton.png diff --git a/test/src/components/fab/fab_test.dart b/packages/zeta_flutter/test/components/fab/fab_test.dart similarity index 98% rename from test/src/components/fab/fab_test.dart rename to packages/zeta_flutter/test/components/fab/fab_test.dart index 4058ffc3..d65cca7f 100644 --- a/test/src/components/fab/fab_test.dart +++ b/packages/zeta_flutter/test/components/fab/fab_test.dart @@ -4,9 +4,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:zeta_flutter/zeta_flutter.dart'; -import '../../../test_utils/test_app.dart'; -import '../../../test_utils/tolerant_comparator.dart'; -import '../../../test_utils/utils.dart'; +import '../../test_utils/test_utils.dart'; void main() { const String parentFolder = 'fab'; diff --git a/test/src/components/fab/golden/FAB_default.png b/packages/zeta_flutter/test/components/fab/golden/FAB_default.png similarity index 100% rename from test/src/components/fab/golden/FAB_default.png rename to packages/zeta_flutter/test/components/fab/golden/FAB_default.png diff --git a/test/src/components/fab/golden/FAB_disabled.png b/packages/zeta_flutter/test/components/fab/golden/FAB_disabled.png similarity index 100% rename from test/src/components/fab/golden/FAB_disabled.png rename to packages/zeta_flutter/test/components/fab/golden/FAB_disabled.png diff --git a/test/src/components/fab/golden/FAB_inverse.png b/packages/zeta_flutter/test/components/fab/golden/FAB_inverse.png similarity index 100% rename from test/src/components/fab/golden/FAB_inverse.png rename to packages/zeta_flutter/test/components/fab/golden/FAB_inverse.png diff --git a/test/src/components/fab/golden/FAB_pressed.png b/packages/zeta_flutter/test/components/fab/golden/FAB_pressed.png similarity index 100% rename from test/src/components/fab/golden/FAB_pressed.png rename to packages/zeta_flutter/test/components/fab/golden/FAB_pressed.png diff --git a/test/src/components/fab/golden/FAB_secondary.png b/packages/zeta_flutter/test/components/fab/golden/FAB_secondary.png similarity index 100% rename from test/src/components/fab/golden/FAB_secondary.png rename to packages/zeta_flutter/test/components/fab/golden/FAB_secondary.png diff --git a/test/src/components/icon/icon_test.dart b/packages/zeta_flutter/test/components/icon/icon_test.dart similarity index 97% rename from test/src/components/icon/icon_test.dart rename to packages/zeta_flutter/test/components/icon/icon_test.dart index 3afa42bd..289c8520 100644 --- a/test/src/components/icon/icon_test.dart +++ b/packages/zeta_flutter/test/components/icon/icon_test.dart @@ -2,9 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:zeta_flutter/zeta_flutter.dart'; -import '../../../test_utils/test_app.dart'; -import '../../../test_utils/tolerant_comparator.dart'; -import '../../../test_utils/utils.dart'; +import '../../test_utils/test_utils.dart'; void main() { const String parentFolder = 'icon'; diff --git a/test/src/components/in_page_banner/golden/in_page_banner_buttons.png b/packages/zeta_flutter/test/components/in_page_banner/golden/in_page_banner_buttons.png similarity index 100% rename from test/src/components/in_page_banner/golden/in_page_banner_buttons.png rename to packages/zeta_flutter/test/components/in_page_banner/golden/in_page_banner_buttons.png diff --git a/test/src/components/in_page_banner/golden/in_page_banner_default.png b/packages/zeta_flutter/test/components/in_page_banner/golden/in_page_banner_default.png similarity index 100% rename from test/src/components/in_page_banner/golden/in_page_banner_default.png rename to packages/zeta_flutter/test/components/in_page_banner/golden/in_page_banner_default.png diff --git a/test/src/components/in_page_banner/golden/in_page_banner_negative.png b/packages/zeta_flutter/test/components/in_page_banner/golden/in_page_banner_negative.png similarity index 100% rename from test/src/components/in_page_banner/golden/in_page_banner_negative.png rename to packages/zeta_flutter/test/components/in_page_banner/golden/in_page_banner_negative.png diff --git a/test/src/components/in_page_banner/golden/in_page_banner_positive.png b/packages/zeta_flutter/test/components/in_page_banner/golden/in_page_banner_positive.png similarity index 100% rename from test/src/components/in_page_banner/golden/in_page_banner_positive.png rename to packages/zeta_flutter/test/components/in_page_banner/golden/in_page_banner_positive.png diff --git a/test/src/components/in_page_banner/in_page_banner_test.dart b/packages/zeta_flutter/test/components/in_page_banner/in_page_banner_test.dart similarity index 97% rename from test/src/components/in_page_banner/in_page_banner_test.dart rename to packages/zeta_flutter/test/components/in_page_banner/in_page_banner_test.dart index e6275999..b0f778c7 100644 --- a/test/src/components/in_page_banner/in_page_banner_test.dart +++ b/packages/zeta_flutter/test/components/in_page_banner/in_page_banner_test.dart @@ -2,9 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:zeta_flutter/zeta_flutter.dart'; -import '../../../test_utils/test_app.dart'; -import '../../../test_utils/tolerant_comparator.dart'; -import '../../../test_utils/utils.dart'; +import '../../test_utils/test_utils.dart'; void main() { const String parentFolder = 'in_page_banner'; diff --git a/test/src/components/navigation_bar/golden/navigation_bar_action.png b/packages/zeta_flutter/test/components/navigation_bar/golden/navigation_bar_action.png similarity index 100% rename from test/src/components/navigation_bar/golden/navigation_bar_action.png rename to packages/zeta_flutter/test/components/navigation_bar/golden/navigation_bar_action.png diff --git a/test/src/components/navigation_bar/golden/navigation_bar_current_index_0.png b/packages/zeta_flutter/test/components/navigation_bar/golden/navigation_bar_current_index_0.png similarity index 100% rename from test/src/components/navigation_bar/golden/navigation_bar_current_index_0.png rename to packages/zeta_flutter/test/components/navigation_bar/golden/navigation_bar_current_index_0.png diff --git a/test/src/components/navigation_bar/golden/navigation_bar_current_index_1.png b/packages/zeta_flutter/test/components/navigation_bar/golden/navigation_bar_current_index_1.png similarity index 100% rename from test/src/components/navigation_bar/golden/navigation_bar_current_index_1.png rename to packages/zeta_flutter/test/components/navigation_bar/golden/navigation_bar_current_index_1.png diff --git a/test/src/components/navigation_bar/golden/navigation_bar_current_index_2.png b/packages/zeta_flutter/test/components/navigation_bar/golden/navigation_bar_current_index_2.png similarity index 100% rename from test/src/components/navigation_bar/golden/navigation_bar_current_index_2.png rename to packages/zeta_flutter/test/components/navigation_bar/golden/navigation_bar_current_index_2.png diff --git a/test/src/components/navigation_bar/golden/navigation_bar_current_index_3.png b/packages/zeta_flutter/test/components/navigation_bar/golden/navigation_bar_current_index_3.png similarity index 100% rename from test/src/components/navigation_bar/golden/navigation_bar_current_index_3.png rename to packages/zeta_flutter/test/components/navigation_bar/golden/navigation_bar_current_index_3.png diff --git a/test/src/components/navigation_bar/golden/navigation_bar_default.png b/packages/zeta_flutter/test/components/navigation_bar/golden/navigation_bar_default.png similarity index 100% rename from test/src/components/navigation_bar/golden/navigation_bar_default.png rename to packages/zeta_flutter/test/components/navigation_bar/golden/navigation_bar_default.png diff --git a/test/src/components/navigation_bar/golden/navigation_bar_divider.png b/packages/zeta_flutter/test/components/navigation_bar/golden/navigation_bar_divider.png similarity index 100% rename from test/src/components/navigation_bar/golden/navigation_bar_divider.png rename to packages/zeta_flutter/test/components/navigation_bar/golden/navigation_bar_divider.png diff --git a/test/src/components/navigation_bar/golden/navigation_bar_divider_at_0.png b/packages/zeta_flutter/test/components/navigation_bar/golden/navigation_bar_divider_at_0.png similarity index 100% rename from test/src/components/navigation_bar/golden/navigation_bar_divider_at_0.png rename to packages/zeta_flutter/test/components/navigation_bar/golden/navigation_bar_divider_at_0.png diff --git a/test/src/components/navigation_bar/golden/navigation_bar_divider_at_1.png b/packages/zeta_flutter/test/components/navigation_bar/golden/navigation_bar_divider_at_1.png similarity index 100% rename from test/src/components/navigation_bar/golden/navigation_bar_divider_at_1.png rename to packages/zeta_flutter/test/components/navigation_bar/golden/navigation_bar_divider_at_1.png diff --git a/test/src/components/navigation_bar/golden/navigation_bar_divider_at_2.png b/packages/zeta_flutter/test/components/navigation_bar/golden/navigation_bar_divider_at_2.png similarity index 100% rename from test/src/components/navigation_bar/golden/navigation_bar_divider_at_2.png rename to packages/zeta_flutter/test/components/navigation_bar/golden/navigation_bar_divider_at_2.png diff --git a/test/src/components/navigation_bar/golden/navigation_bar_divider_at_3.png b/packages/zeta_flutter/test/components/navigation_bar/golden/navigation_bar_divider_at_3.png similarity index 100% rename from test/src/components/navigation_bar/golden/navigation_bar_divider_at_3.png rename to packages/zeta_flutter/test/components/navigation_bar/golden/navigation_bar_divider_at_3.png diff --git a/test/src/components/navigation_bar/golden/navigation_bar_shrink_items.png b/packages/zeta_flutter/test/components/navigation_bar/golden/navigation_bar_shrink_items.png similarity index 100% rename from test/src/components/navigation_bar/golden/navigation_bar_shrink_items.png rename to packages/zeta_flutter/test/components/navigation_bar/golden/navigation_bar_shrink_items.png diff --git a/test/src/components/navigation_bar/golden/navigation_bar_split.png b/packages/zeta_flutter/test/components/navigation_bar/golden/navigation_bar_split.png similarity index 100% rename from test/src/components/navigation_bar/golden/navigation_bar_split.png rename to packages/zeta_flutter/test/components/navigation_bar/golden/navigation_bar_split.png diff --git a/test/src/components/navigation_bar/navigation_bar_test.dart b/packages/zeta_flutter/test/components/navigation_bar/navigation_bar_test.dart similarity index 99% rename from test/src/components/navigation_bar/navigation_bar_test.dart rename to packages/zeta_flutter/test/components/navigation_bar/navigation_bar_test.dart index 217fc870..51eede6d 100644 --- a/test/src/components/navigation_bar/navigation_bar_test.dart +++ b/packages/zeta_flutter/test/components/navigation_bar/navigation_bar_test.dart @@ -4,9 +4,7 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:zeta_flutter/src/components/navigation%20bar/navigation_bar.dart'; import 'package:zeta_flutter/zeta_flutter.dart'; -import '../../../test_utils/test_app.dart'; -import '../../../test_utils/tolerant_comparator.dart'; -import '../../../test_utils/utils.dart'; +import '../../test_utils/test_utils.dart'; void main() { const String parentFolder = 'navigation_bar'; diff --git a/test/src/components/password/golden/password_default.png b/packages/zeta_flutter/test/components/password/golden/password_default.png similarity index 100% rename from test/src/components/password/golden/password_default.png rename to packages/zeta_flutter/test/components/password/golden/password_default.png diff --git a/test/src/components/password/golden/password_error.png b/packages/zeta_flutter/test/components/password/golden/password_error.png similarity index 100% rename from test/src/components/password/golden/password_error.png rename to packages/zeta_flutter/test/components/password/golden/password_error.png diff --git a/test/src/components/password/password_input_test.dart b/packages/zeta_flutter/test/components/password/password_input_test.dart similarity index 96% rename from test/src/components/password/password_input_test.dart rename to packages/zeta_flutter/test/components/password/password_input_test.dart index d31f0479..24ebc272 100644 --- a/test/src/components/password/password_input_test.dart +++ b/packages/zeta_flutter/test/components/password/password_input_test.dart @@ -2,9 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:zeta_flutter/zeta_flutter.dart'; -import '../../../test_utils/test_app.dart'; -import '../../../test_utils/tolerant_comparator.dart'; -import '../../../test_utils/utils.dart'; +import '../../test_utils/test_utils.dart'; void main() { const String parentFolder = 'password'; diff --git a/test/src/components/range_selector/golden/range_selector_rounded_continuous.png b/packages/zeta_flutter/test/components/range_selector/golden/range_selector_rounded_continuous.png similarity index 100% rename from test/src/components/range_selector/golden/range_selector_rounded_continuous.png rename to packages/zeta_flutter/test/components/range_selector/golden/range_selector_rounded_continuous.png diff --git a/test/src/components/range_selector/golden/range_selector_rounded_disabled.png b/packages/zeta_flutter/test/components/range_selector/golden/range_selector_rounded_disabled.png similarity index 100% rename from test/src/components/range_selector/golden/range_selector_rounded_disabled.png rename to packages/zeta_flutter/test/components/range_selector/golden/range_selector_rounded_disabled.png diff --git a/test/src/components/range_selector/golden/range_selector_rounded_stepped.png b/packages/zeta_flutter/test/components/range_selector/golden/range_selector_rounded_stepped.png similarity index 100% rename from test/src/components/range_selector/golden/range_selector_rounded_stepped.png rename to packages/zeta_flutter/test/components/range_selector/golden/range_selector_rounded_stepped.png diff --git a/test/src/components/range_selector/golden/range_selector_sharp_continuous.png b/packages/zeta_flutter/test/components/range_selector/golden/range_selector_sharp_continuous.png similarity index 100% rename from test/src/components/range_selector/golden/range_selector_sharp_continuous.png rename to packages/zeta_flutter/test/components/range_selector/golden/range_selector_sharp_continuous.png diff --git a/test/src/components/range_selector/golden/range_selector_sharp_disabled.png b/packages/zeta_flutter/test/components/range_selector/golden/range_selector_sharp_disabled.png similarity index 100% rename from test/src/components/range_selector/golden/range_selector_sharp_disabled.png rename to packages/zeta_flutter/test/components/range_selector/golden/range_selector_sharp_disabled.png diff --git a/test/src/components/range_selector/golden/range_selector_sharp_stepped.png b/packages/zeta_flutter/test/components/range_selector/golden/range_selector_sharp_stepped.png similarity index 100% rename from test/src/components/range_selector/golden/range_selector_sharp_stepped.png rename to packages/zeta_flutter/test/components/range_selector/golden/range_selector_sharp_stepped.png diff --git a/test/src/components/range_selector/golden/range_slider_rounded_continuous.png b/packages/zeta_flutter/test/components/range_selector/golden/range_slider_rounded_continuous.png similarity index 100% rename from test/src/components/range_selector/golden/range_slider_rounded_continuous.png rename to packages/zeta_flutter/test/components/range_selector/golden/range_slider_rounded_continuous.png diff --git a/test/src/components/range_selector/golden/range_slider_rounded_disabled.png b/packages/zeta_flutter/test/components/range_selector/golden/range_slider_rounded_disabled.png similarity index 100% rename from test/src/components/range_selector/golden/range_slider_rounded_disabled.png rename to packages/zeta_flutter/test/components/range_selector/golden/range_slider_rounded_disabled.png diff --git a/test/src/components/range_selector/golden/range_slider_rounded_stepped.png b/packages/zeta_flutter/test/components/range_selector/golden/range_slider_rounded_stepped.png similarity index 100% rename from test/src/components/range_selector/golden/range_slider_rounded_stepped.png rename to packages/zeta_flutter/test/components/range_selector/golden/range_slider_rounded_stepped.png diff --git a/test/src/components/range_selector/golden/range_slider_sharp_continuous.png b/packages/zeta_flutter/test/components/range_selector/golden/range_slider_sharp_continuous.png similarity index 100% rename from test/src/components/range_selector/golden/range_slider_sharp_continuous.png rename to packages/zeta_flutter/test/components/range_selector/golden/range_slider_sharp_continuous.png diff --git a/test/src/components/range_selector/golden/range_slider_sharp_disabled.png b/packages/zeta_flutter/test/components/range_selector/golden/range_slider_sharp_disabled.png similarity index 100% rename from test/src/components/range_selector/golden/range_slider_sharp_disabled.png rename to packages/zeta_flutter/test/components/range_selector/golden/range_slider_sharp_disabled.png diff --git a/test/src/components/range_selector/golden/range_slider_sharp_stepped.png b/packages/zeta_flutter/test/components/range_selector/golden/range_slider_sharp_stepped.png similarity index 100% rename from test/src/components/range_selector/golden/range_slider_sharp_stepped.png rename to packages/zeta_flutter/test/components/range_selector/golden/range_slider_sharp_stepped.png diff --git a/test/src/components/range_selector/range_selector_test.dart b/packages/zeta_flutter/test/components/range_selector/range_selector_test.dart similarity index 98% rename from test/src/components/range_selector/range_selector_test.dart rename to packages/zeta_flutter/test/components/range_selector/range_selector_test.dart index 168cc81e..0560ed0e 100644 --- a/test/src/components/range_selector/range_selector_test.dart +++ b/packages/zeta_flutter/test/components/range_selector/range_selector_test.dart @@ -2,9 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:zeta_flutter/zeta_flutter.dart'; -import '../../../test_utils/test_app.dart'; -import '../../../test_utils/tolerant_comparator.dart'; -import '../../../test_utils/utils.dart'; +import '../../test_utils/test_utils.dart'; void main() { const String parentFolder = 'range_selector'; @@ -15,7 +13,7 @@ void main() { }); group('Accessibility Tests', () { - meetsAccessbilityGuidelinesTest( + meetsAccessabilityGuidelinesTest( ZetaRangeSelector( onChange: (value) {}, initialValues: const RangeValues(20, 80), diff --git a/test/src/components/search_bar/golden/search_bar_default.png b/packages/zeta_flutter/test/components/search_bar/golden/search_bar_default.png similarity index 100% rename from test/src/components/search_bar/golden/search_bar_default.png rename to packages/zeta_flutter/test/components/search_bar/golden/search_bar_default.png diff --git a/test/src/components/search_bar/golden/search_bar_full.png b/packages/zeta_flutter/test/components/search_bar/golden/search_bar_full.png similarity index 100% rename from test/src/components/search_bar/golden/search_bar_full.png rename to packages/zeta_flutter/test/components/search_bar/golden/search_bar_full.png diff --git a/test/src/components/search_bar/golden/search_bar_large.png b/packages/zeta_flutter/test/components/search_bar/golden/search_bar_large.png similarity index 100% rename from test/src/components/search_bar/golden/search_bar_large.png rename to packages/zeta_flutter/test/components/search_bar/golden/search_bar_large.png diff --git a/test/src/components/search_bar/golden/search_bar_medium.png b/packages/zeta_flutter/test/components/search_bar/golden/search_bar_medium.png similarity index 100% rename from test/src/components/search_bar/golden/search_bar_medium.png rename to packages/zeta_flutter/test/components/search_bar/golden/search_bar_medium.png diff --git a/test/src/components/search_bar/golden/search_bar_sharp.png b/packages/zeta_flutter/test/components/search_bar/golden/search_bar_sharp.png similarity index 100% rename from test/src/components/search_bar/golden/search_bar_sharp.png rename to packages/zeta_flutter/test/components/search_bar/golden/search_bar_sharp.png diff --git a/test/src/components/search_bar/golden/search_bar_small.png b/packages/zeta_flutter/test/components/search_bar/golden/search_bar_small.png similarity index 100% rename from test/src/components/search_bar/golden/search_bar_small.png rename to packages/zeta_flutter/test/components/search_bar/golden/search_bar_small.png diff --git a/test/src/components/search_bar/search_bar_test.dart b/packages/zeta_flutter/test/components/search_bar/search_bar_test.dart similarity index 97% rename from test/src/components/search_bar/search_bar_test.dart rename to packages/zeta_flutter/test/components/search_bar/search_bar_test.dart index a445cca4..86f97dbe 100644 --- a/test/src/components/search_bar/search_bar_test.dart +++ b/packages/zeta_flutter/test/components/search_bar/search_bar_test.dart @@ -7,9 +7,7 @@ import 'package:mockito/annotations.dart'; import 'package:mockito/mockito.dart'; import 'package:zeta_flutter/zeta_flutter.dart'; -import '../../../test_utils/test_app.dart'; -import '../../../test_utils/tolerant_comparator.dart'; -import '../../../test_utils/utils.dart'; +import '../../test_utils/test_utils.dart'; import 'search_bar_test.mocks.dart'; abstract class ISearchBarEvents { diff --git a/test/src/components/search_bar/search_bar_test.mocks.dart b/packages/zeta_flutter/test/components/search_bar/search_bar_test.mocks.dart similarity index 83% rename from test/src/components/search_bar/search_bar_test.mocks.dart rename to packages/zeta_flutter/test/components/search_bar/search_bar_test.mocks.dart index 0050135e..81c5bc86 100644 --- a/test/src/components/search_bar/search_bar_test.mocks.dart +++ b/packages/zeta_flutter/test/components/search_bar/search_bar_test.mocks.dart @@ -1,5 +1,5 @@ // Mocks generated by Mockito 5.4.5 from annotations -// in zeta_flutter/test/src/components/search_bar/search_bar_test.dart. +// in zeta_flutter/test/components/search_bar/search_bar_test.dart. // Do not manually edit this file. // ignore_for_file: no_leading_underscores_for_library_prefixes @@ -29,19 +29,28 @@ import 'search_bar_test.dart' as _i2; class MockISearchBarEvents extends _i1.Mock implements _i2.ISearchBarEvents { @override void onChange(String? text) => super.noSuchMethod( - Invocation.method(#onChange, [text]), + Invocation.method( + #onChange, + [text], + ), returnValueForMissingStub: null, ); @override void onSubmit(String? text) => super.noSuchMethod( - Invocation.method(#onSubmit, [text]), + Invocation.method( + #onSubmit, + [text], + ), returnValueForMissingStub: null, ); @override _i3.Future onSpeech() => (super.noSuchMethod( - Invocation.method(#onSpeech, []), + Invocation.method( + #onSpeech, + [], + ), returnValue: _i3.Future.value(), returnValueForMissingStub: _i3.Future.value(), ) as _i3.Future); diff --git a/test/src/components/slider/slider_test.dart b/packages/zeta_flutter/test/components/slider/slider_test.dart similarity index 92% rename from test/src/components/slider/slider_test.dart rename to packages/zeta_flutter/test/components/slider/slider_test.dart index 5c11e203..0af02ac9 100644 --- a/test/src/components/slider/slider_test.dart +++ b/packages/zeta_flutter/test/components/slider/slider_test.dart @@ -2,9 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:zeta_flutter/zeta_flutter.dart'; -import '../../../test_utils/test_app.dart'; -import '../../../test_utils/tolerant_comparator.dart'; -import '../../../test_utils/utils.dart'; +import '../../test_utils/test_utils.dart'; void main() { const String parentFolder = 'slider'; diff --git a/test/src/components/stepper/golden/stepper_horizontal_complete.png b/packages/zeta_flutter/test/components/stepper/golden/stepper_horizontal_complete.png similarity index 100% rename from test/src/components/stepper/golden/stepper_horizontal_complete.png rename to packages/zeta_flutter/test/components/stepper/golden/stepper_horizontal_complete.png diff --git a/test/src/components/stepper/golden/stepper_horizontal_incomplete.png b/packages/zeta_flutter/test/components/stepper/golden/stepper_horizontal_incomplete.png similarity index 100% rename from test/src/components/stepper/golden/stepper_horizontal_incomplete.png rename to packages/zeta_flutter/test/components/stepper/golden/stepper_horizontal_incomplete.png diff --git a/test/src/components/stepper/golden/stepper_horizontal_step_disabled.png b/packages/zeta_flutter/test/components/stepper/golden/stepper_horizontal_step_disabled.png similarity index 100% rename from test/src/components/stepper/golden/stepper_horizontal_step_disabled.png rename to packages/zeta_flutter/test/components/stepper/golden/stepper_horizontal_step_disabled.png diff --git a/test/src/components/stepper/golden/stepper_vertical_complete.png b/packages/zeta_flutter/test/components/stepper/golden/stepper_vertical_complete.png similarity index 100% rename from test/src/components/stepper/golden/stepper_vertical_complete.png rename to packages/zeta_flutter/test/components/stepper/golden/stepper_vertical_complete.png diff --git a/test/src/components/stepper/golden/stepper_vertical_incomplete.png b/packages/zeta_flutter/test/components/stepper/golden/stepper_vertical_incomplete.png similarity index 100% rename from test/src/components/stepper/golden/stepper_vertical_incomplete.png rename to packages/zeta_flutter/test/components/stepper/golden/stepper_vertical_incomplete.png diff --git a/test/src/components/stepper/golden/stepper_vertical_step_disabled.png b/packages/zeta_flutter/test/components/stepper/golden/stepper_vertical_step_disabled.png similarity index 100% rename from test/src/components/stepper/golden/stepper_vertical_step_disabled.png rename to packages/zeta_flutter/test/components/stepper/golden/stepper_vertical_step_disabled.png diff --git a/test/src/components/stepper/stepper_test.dart b/packages/zeta_flutter/test/components/stepper/stepper_test.dart similarity index 99% rename from test/src/components/stepper/stepper_test.dart rename to packages/zeta_flutter/test/components/stepper/stepper_test.dart index fa6436ff..9f93ff5c 100644 --- a/test/src/components/stepper/stepper_test.dart +++ b/packages/zeta_flutter/test/components/stepper/stepper_test.dart @@ -3,9 +3,7 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:zeta_flutter/src/components/stepper/stepper.dart'; import 'package:zeta_flutter/zeta_flutter.dart'; -import '../../../test_utils/test_app.dart'; -import '../../../test_utils/tolerant_comparator.dart'; -import '../../../test_utils/utils.dart'; +import '../../test_utils/test_utils.dart'; void main() { const String parentFolder = 'stepper'; diff --git a/test/src/components/stepper_input/stepper_input_test.dart b/packages/zeta_flutter/test/components/stepper_input/stepper_input_test.dart similarity index 94% rename from test/src/components/stepper_input/stepper_input_test.dart rename to packages/zeta_flutter/test/components/stepper_input/stepper_input_test.dart index 95b97b06..119c4553 100644 --- a/test/src/components/stepper_input/stepper_input_test.dart +++ b/packages/zeta_flutter/test/components/stepper_input/stepper_input_test.dart @@ -3,9 +3,7 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:zeta_flutter/src/components/stepper_input/stepper_input.dart'; import 'package:zeta_flutter/zeta_flutter.dart'; -import '../../../test_utils/test_app.dart'; -import '../../../test_utils/tolerant_comparator.dart'; -import '../../../test_utils/utils.dart'; +import '../../test_utils/test_utils.dart'; void main() { const String parentFolder = 'stepper_input'; diff --git a/test/src/components/tooltip/golden/arrow_down.png b/packages/zeta_flutter/test/components/tooltip/golden/arrow_down.png similarity index 100% rename from test/src/components/tooltip/golden/arrow_down.png rename to packages/zeta_flutter/test/components/tooltip/golden/arrow_down.png diff --git a/test/src/components/tooltip/golden/arrow_left.png b/packages/zeta_flutter/test/components/tooltip/golden/arrow_left.png similarity index 100% rename from test/src/components/tooltip/golden/arrow_left.png rename to packages/zeta_flutter/test/components/tooltip/golden/arrow_left.png diff --git a/test/src/components/tooltip/golden/arrow_right.png b/packages/zeta_flutter/test/components/tooltip/golden/arrow_right.png similarity index 100% rename from test/src/components/tooltip/golden/arrow_right.png rename to packages/zeta_flutter/test/components/tooltip/golden/arrow_right.png diff --git a/test/src/components/tooltip/golden/arrow_up.png b/packages/zeta_flutter/test/components/tooltip/golden/arrow_up.png similarity index 100% rename from test/src/components/tooltip/golden/arrow_up.png rename to packages/zeta_flutter/test/components/tooltip/golden/arrow_up.png diff --git a/test/src/components/tooltip/tooltip_test.dart b/packages/zeta_flutter/test/components/tooltip/tooltip_test.dart similarity index 97% rename from test/src/components/tooltip/tooltip_test.dart rename to packages/zeta_flutter/test/components/tooltip/tooltip_test.dart index 84a0294b..63311c06 100644 --- a/test/src/components/tooltip/tooltip_test.dart +++ b/packages/zeta_flutter/test/components/tooltip/tooltip_test.dart @@ -4,9 +4,7 @@ import 'package:mockito/annotations.dart'; import 'package:mockito/mockito.dart'; import 'package:zeta_flutter/zeta_flutter.dart'; -import '../../../test_utils/test_app.dart'; -import '../../../test_utils/tolerant_comparator.dart'; -import '../../../test_utils/utils.dart'; +import '../../test_utils/test_utils.dart'; import 'tooltip_test.mocks.dart'; @GenerateNiceMocks([ diff --git a/packages/zeta_flutter/test/components/tooltip/tooltip_test.mocks.dart b/packages/zeta_flutter/test/components/tooltip/tooltip_test.mocks.dart new file mode 100644 index 00000000..a7904e18 --- /dev/null +++ b/packages/zeta_flutter/test/components/tooltip/tooltip_test.mocks.dart @@ -0,0 +1,431 @@ +// Mocks generated by Mockito 5.4.5 from annotations +// in zeta_flutter/test/components/tooltip/tooltip_test.dart. +// Do not manually edit this file. + +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:ui' as _i8; + +import 'package:flutter/foundation.dart' as _i5; +import 'package:flutter/material.dart' as _i4; +import 'package:mockito/mockito.dart' as _i1; +import 'package:mockito/src/dummies.dart' as _i9; +import 'package:zeta_flutter_theme/src/contrast.dart' as _i7; +import 'package:zeta_flutter_theme/src/generated/tokens/primitives.g.dart' as _i2; +import 'package:zeta_flutter_theme/src/generated/tokens/semantics.g.dart' as _i3; +import 'package:zeta_flutter_theme/src/zeta.dart' as _i6; + +// ignore_for_file: type=lint +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: avoid_setters_without_getters +// ignore_for_file: comment_references +// ignore_for_file: deprecated_member_use +// ignore_for_file: deprecated_member_use_from_same_package +// ignore_for_file: implementation_imports +// ignore_for_file: invalid_use_of_visible_for_testing_member +// ignore_for_file: must_be_immutable +// ignore_for_file: prefer_const_constructors +// ignore_for_file: unnecessary_parenthesis +// ignore_for_file: camel_case_types +// ignore_for_file: subtype_of_sealed_class + +class _FakeZetaPrimitives_0 extends _i1.SmartFake implements _i2.ZetaPrimitives { + _FakeZetaPrimitives_0( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + +class _FakeZetaSemantics_1 extends _i1.SmartFake implements _i3.ZetaSemantics { + _FakeZetaSemantics_1( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + +class _FakeZetaColors_2 extends _i1.SmartFake implements _i3.ZetaColors { + _FakeZetaColors_2( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + +class _FakeZetaRadius_3 extends _i1.SmartFake implements _i3.ZetaRadius { + _FakeZetaRadius_3( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + +class _FakeZetaSpacing_4 extends _i1.SmartFake implements _i3.ZetaSpacing { + _FakeZetaSpacing_4( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + +class _FakeWidget_5 extends _i1.SmartFake implements _i4.Widget { + _FakeWidget_5( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); + + @override + String toString({_i5.DiagnosticLevel? minLevel = _i5.DiagnosticLevel.info}) => super.toString(); +} + +class _FakeInheritedElement_6 extends _i1.SmartFake implements _i4.InheritedElement { + _FakeInheritedElement_6( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); + + @override + String toString({_i5.DiagnosticLevel? minLevel = _i5.DiagnosticLevel.info}) => super.toString(); +} + +class _FakeDiagnosticsNode_7 extends _i1.SmartFake implements _i5.DiagnosticsNode { + _FakeDiagnosticsNode_7( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); + + @override + String toString({ + _i5.TextTreeConfiguration? parentConfiguration, + _i5.DiagnosticLevel? minLevel = _i5.DiagnosticLevel.info, + }) => + super.toString(); +} + +/// A class which mocks [Zeta]. +/// +/// See the documentation for Mockito's code generation for more information. +class MockZeta extends _i1.Mock implements _i6.Zeta { + @override + bool get rounded => (super.noSuchMethod( + Invocation.getter(#rounded), + returnValue: false, + returnValueForMissingStub: false, + ) as bool); + + @override + _i7.ZetaContrast get contrast => (super.noSuchMethod( + Invocation.getter(#contrast), + returnValue: _i7.ZetaContrast.aa, + returnValueForMissingStub: _i7.ZetaContrast.aa, + ) as _i7.ZetaContrast); + + @override + _i4.ThemeMode get themeMode => (super.noSuchMethod( + Invocation.getter(#themeMode), + returnValue: _i4.ThemeMode.system, + returnValueForMissingStub: _i4.ThemeMode.system, + ) as _i4.ThemeMode); + + @override + _i2.ZetaPrimitives get primitives => (super.noSuchMethod( + Invocation.getter(#primitives), + returnValue: _FakeZetaPrimitives_0( + this, + Invocation.getter(#primitives), + ), + returnValueForMissingStub: _FakeZetaPrimitives_0( + this, + Invocation.getter(#primitives), + ), + ) as _i2.ZetaPrimitives); + + @override + _i3.ZetaSemantics get semantics => (super.noSuchMethod( + Invocation.getter(#semantics), + returnValue: _FakeZetaSemantics_1( + this, + Invocation.getter(#semantics), + ), + returnValueForMissingStub: _FakeZetaSemantics_1( + this, + Invocation.getter(#semantics), + ), + ) as _i3.ZetaSemantics); + + @override + _i3.ZetaColors get colors => (super.noSuchMethod( + Invocation.getter(#colors), + returnValue: _FakeZetaColors_2( + this, + Invocation.getter(#colors), + ), + returnValueForMissingStub: _FakeZetaColors_2( + this, + Invocation.getter(#colors), + ), + ) as _i3.ZetaColors); + + @override + _i8.Brightness get brightness => (super.noSuchMethod( + Invocation.getter(#brightness), + returnValue: _i8.Brightness.dark, + returnValueForMissingStub: _i8.Brightness.dark, + ) as _i8.Brightness); + + @override + _i3.ZetaRadius get radius => (super.noSuchMethod( + Invocation.getter(#radius), + returnValue: _FakeZetaRadius_3( + this, + Invocation.getter(#radius), + ), + returnValueForMissingStub: _FakeZetaRadius_3( + this, + Invocation.getter(#radius), + ), + ) as _i3.ZetaRadius); + + @override + _i3.ZetaSpacing get spacing => (super.noSuchMethod( + Invocation.getter(#spacing), + returnValue: _FakeZetaSpacing_4( + this, + Invocation.getter(#spacing), + ), + returnValueForMissingStub: _FakeZetaSpacing_4( + this, + Invocation.getter(#spacing), + ), + ) as _i3.ZetaSpacing); + + @override + _i4.Widget get child => (super.noSuchMethod( + Invocation.getter(#child), + returnValue: _FakeWidget_5( + this, + Invocation.getter(#child), + ), + returnValueForMissingStub: _FakeWidget_5( + this, + Invocation.getter(#child), + ), + ) as _i4.Widget); + + @override + bool updateShouldNotify(_i4.InheritedWidget? oldWidget) => (super.noSuchMethod( + Invocation.method( + #updateShouldNotify, + [oldWidget], + ), + returnValue: false, + returnValueForMissingStub: false, + ) as bool); + + @override + void debugFillProperties(_i5.DiagnosticPropertiesBuilder? properties) => super.noSuchMethod( + Invocation.method( + #debugFillProperties, + [properties], + ), + returnValueForMissingStub: null, + ); + + @override + _i4.InheritedElement createElement() => (super.noSuchMethod( + Invocation.method( + #createElement, + [], + ), + returnValue: _FakeInheritedElement_6( + this, + Invocation.method( + #createElement, + [], + ), + ), + returnValueForMissingStub: _FakeInheritedElement_6( + this, + Invocation.method( + #createElement, + [], + ), + ), + ) as _i4.InheritedElement); + + @override + String toStringShort() => (super.noSuchMethod( + Invocation.method( + #toStringShort, + [], + ), + returnValue: _i9.dummyValue( + this, + Invocation.method( + #toStringShort, + [], + ), + ), + returnValueForMissingStub: _i9.dummyValue( + this, + Invocation.method( + #toStringShort, + [], + ), + ), + ) as String); + + @override + String toStringShallow({ + String? joiner = ', ', + _i5.DiagnosticLevel? minLevel = _i5.DiagnosticLevel.debug, + }) => + (super.noSuchMethod( + Invocation.method( + #toStringShallow, + [], + { + #joiner: joiner, + #minLevel: minLevel, + }, + ), + returnValue: _i9.dummyValue( + this, + Invocation.method( + #toStringShallow, + [], + { + #joiner: joiner, + #minLevel: minLevel, + }, + ), + ), + returnValueForMissingStub: _i9.dummyValue( + this, + Invocation.method( + #toStringShallow, + [], + { + #joiner: joiner, + #minLevel: minLevel, + }, + ), + ), + ) as String); + + @override + String toStringDeep({ + String? prefixLineOne = '', + String? prefixOtherLines, + _i5.DiagnosticLevel? minLevel = _i5.DiagnosticLevel.debug, + int? wrapWidth = 65, + }) => + (super.noSuchMethod( + Invocation.method( + #toStringDeep, + [], + { + #prefixLineOne: prefixLineOne, + #prefixOtherLines: prefixOtherLines, + #minLevel: minLevel, + #wrapWidth: wrapWidth, + }, + ), + returnValue: _i9.dummyValue( + this, + Invocation.method( + #toStringDeep, + [], + { + #prefixLineOne: prefixLineOne, + #prefixOtherLines: prefixOtherLines, + #minLevel: minLevel, + #wrapWidth: wrapWidth, + }, + ), + ), + returnValueForMissingStub: _i9.dummyValue( + this, + Invocation.method( + #toStringDeep, + [], + { + #prefixLineOne: prefixLineOne, + #prefixOtherLines: prefixOtherLines, + #minLevel: minLevel, + #wrapWidth: wrapWidth, + }, + ), + ), + ) as String); + + @override + _i5.DiagnosticsNode toDiagnosticsNode({ + String? name, + _i5.DiagnosticsTreeStyle? style, + }) => + (super.noSuchMethod( + Invocation.method( + #toDiagnosticsNode, + [], + { + #name: name, + #style: style, + }, + ), + returnValue: _FakeDiagnosticsNode_7( + this, + Invocation.method( + #toDiagnosticsNode, + [], + { + #name: name, + #style: style, + }, + ), + ), + returnValueForMissingStub: _FakeDiagnosticsNode_7( + this, + Invocation.method( + #toDiagnosticsNode, + [], + { + #name: name, + #style: style, + }, + ), + ), + ) as _i5.DiagnosticsNode); + + @override + List<_i5.DiagnosticsNode> debugDescribeChildren() => (super.noSuchMethod( + Invocation.method( + #debugDescribeChildren, + [], + ), + returnValue: <_i5.DiagnosticsNode>[], + returnValueForMissingStub: <_i5.DiagnosticsNode>[], + ) as List<_i5.DiagnosticsNode>); + + @override + String toString({_i5.DiagnosticLevel? minLevel = _i5.DiagnosticLevel.info}) => super.toString(); +} diff --git a/test/src/components/top_app_bar/extended_top_app_bar_test.dart b/packages/zeta_flutter/test/components/top_app_bar/extended_top_app_bar_test.dart similarity index 97% rename from test/src/components/top_app_bar/extended_top_app_bar_test.dart rename to packages/zeta_flutter/test/components/top_app_bar/extended_top_app_bar_test.dart index 5f8b85a3..1b52bf4a 100644 --- a/test/src/components/top_app_bar/extended_top_app_bar_test.dart +++ b/packages/zeta_flutter/test/components/top_app_bar/extended_top_app_bar_test.dart @@ -2,9 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:zeta_flutter/zeta_flutter.dart'; -import '../../../test_utils/test_app.dart'; -import '../../../test_utils/tolerant_comparator.dart'; -import '../../../test_utils/utils.dart'; +import '../../test_utils/test_utils.dart'; void main() { const goldenFile = GoldenFiles(component: 'top_app_bar'); diff --git a/test/src/components/top_app_bar/golden/extended_app_bar_shrinks.png b/packages/zeta_flutter/test/components/top_app_bar/golden/extended_app_bar_shrinks.png similarity index 100% rename from test/src/components/top_app_bar/golden/extended_app_bar_shrinks.png rename to packages/zeta_flutter/test/components/top_app_bar/golden/extended_app_bar_shrinks.png diff --git a/test/src/components/top_app_bar/golden/extended_app_bar_shrinks_with_no_leading.png b/packages/zeta_flutter/test/components/top_app_bar/golden/extended_app_bar_shrinks_with_no_leading.png similarity index 100% rename from test/src/components/top_app_bar/golden/extended_app_bar_shrinks_with_no_leading.png rename to packages/zeta_flutter/test/components/top_app_bar/golden/extended_app_bar_shrinks_with_no_leading.png diff --git a/test/src/components/top_app_bar/golden/top_app_bar_centered.png b/packages/zeta_flutter/test/components/top_app_bar/golden/top_app_bar_centered.png similarity index 100% rename from test/src/components/top_app_bar/golden/top_app_bar_centered.png rename to packages/zeta_flutter/test/components/top_app_bar/golden/top_app_bar_centered.png diff --git a/test/src/components/top_app_bar/golden/top_app_bar_centered_actions.png b/packages/zeta_flutter/test/components/top_app_bar/golden/top_app_bar_centered_actions.png similarity index 100% rename from test/src/components/top_app_bar/golden/top_app_bar_centered_actions.png rename to packages/zeta_flutter/test/components/top_app_bar/golden/top_app_bar_centered_actions.png diff --git a/test/src/components/top_app_bar/golden/top_app_bar_default.png b/packages/zeta_flutter/test/components/top_app_bar/golden/top_app_bar_default.png similarity index 100% rename from test/src/components/top_app_bar/golden/top_app_bar_default.png rename to packages/zeta_flutter/test/components/top_app_bar/golden/top_app_bar_default.png diff --git a/test/src/components/top_app_bar/golden/top_app_bar_default_actions.png b/packages/zeta_flutter/test/components/top_app_bar/golden/top_app_bar_default_actions.png similarity index 100% rename from test/src/components/top_app_bar/golden/top_app_bar_default_actions.png rename to packages/zeta_flutter/test/components/top_app_bar/golden/top_app_bar_default_actions.png diff --git a/test/src/components/top_app_bar/golden/top_app_bar_extended.png b/packages/zeta_flutter/test/components/top_app_bar/golden/top_app_bar_extended.png similarity index 100% rename from test/src/components/top_app_bar/golden/top_app_bar_extended.png rename to packages/zeta_flutter/test/components/top_app_bar/golden/top_app_bar_extended.png diff --git a/test/src/components/top_app_bar/golden/top_app_bar_extended_actions.png b/packages/zeta_flutter/test/components/top_app_bar/golden/top_app_bar_extended_actions.png similarity index 100% rename from test/src/components/top_app_bar/golden/top_app_bar_extended_actions.png rename to packages/zeta_flutter/test/components/top_app_bar/golden/top_app_bar_extended_actions.png diff --git a/test/src/components/top_app_bar/golden/top_app_bar_search.png b/packages/zeta_flutter/test/components/top_app_bar/golden/top_app_bar_search.png similarity index 100% rename from test/src/components/top_app_bar/golden/top_app_bar_search.png rename to packages/zeta_flutter/test/components/top_app_bar/golden/top_app_bar_search.png diff --git a/test/src/components/top_app_bar/golden/top_app_bar_search_active.png b/packages/zeta_flutter/test/components/top_app_bar/golden/top_app_bar_search_active.png similarity index 100% rename from test/src/components/top_app_bar/golden/top_app_bar_search_active.png rename to packages/zeta_flutter/test/components/top_app_bar/golden/top_app_bar_search_active.png diff --git a/test/src/components/top_app_bar/golden/top_app_bar_search_centered.png b/packages/zeta_flutter/test/components/top_app_bar/golden/top_app_bar_search_centered.png similarity index 100% rename from test/src/components/top_app_bar/golden/top_app_bar_search_centered.png rename to packages/zeta_flutter/test/components/top_app_bar/golden/top_app_bar_search_centered.png diff --git a/test/src/components/top_app_bar/top_app_bar_test.dart b/packages/zeta_flutter/test/components/top_app_bar/top_app_bar_test.dart similarity index 99% rename from test/src/components/top_app_bar/top_app_bar_test.dart rename to packages/zeta_flutter/test/components/top_app_bar/top_app_bar_test.dart index 921ab1cb..12b6d87f 100644 --- a/test/src/components/top_app_bar/top_app_bar_test.dart +++ b/packages/zeta_flutter/test/components/top_app_bar/top_app_bar_test.dart @@ -2,9 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:zeta_flutter/zeta_flutter.dart'; -import '../../../test_utils/test_app.dart'; -import '../../../test_utils/tolerant_comparator.dart'; -import '../../../test_utils/utils.dart'; +import '../../test_utils/test_utils.dart'; void main() { const String parentFolder = 'top_app_bar'; diff --git a/packages/zeta_flutter/test/src/components/avatar/golden/avatar_default_l.png b/packages/zeta_flutter/test/src/components/avatar/golden/avatar_default_l.png new file mode 100644 index 0000000000000000000000000000000000000000..93b89766cd7ff558b3449572ce058b2f9486745a GIT binary patch literal 4714 zcmeH}`#)QG8pppbRWsGHZFeY5qN6+ZwVh!)rQ)6%qpZOw5u%}HI;DtIRbv_nTP<4J zu%^{2(vDjtf|({-cScdOBy~v;mr$2f;!c=`uwQ-kwg1HC{BX|ee9!ZGzUO&A&*yW_ zt?xWf@BP^DV*tQjH&^E~0B9Hkpzg1&1y^#eUcUq{YB6U{JArcE;Td?N8RO*Us|}BM z?enPs>_6z{e9AX2cWz`P3oFQL9~V1FR`h$#}Jy7;CQ_CaKFXi^*yLdcL93||B zn4kp$ktJicc?kX}ENyZ3KoE%1;C+@@tb8VvFd~vl=Q*so02~n~u)tR2Bl}B3T`1Oe z02n_VOap@hx&0KJ$mX}6K30jTWqAHPd72=g;6h_VOAeR-a0$$YCvHx+1R#Q#isolo zBZ`icI?9iJ3=bA9`YMTr0$?DpcE2$xI7cA*r;o%logC^*UurfbjttI7<@z_Y0hl!v z{~a@0-y@716*MNW7HQy z=2WMa4giZk=c6%ZN;cc;IWx$b>(5f|=@;2l;pII`t%myWIoaz9yDu>NLhSh;IhU5a zv2v2wuwNv7%B%3&K*HWF{;ff{@0GBOwIX|V^WCI0dMCeEP;TFoqLR98m|@@meQ$<) zLPSIiUOqxyyV$#%!HJFQFbx2p(iOS!k+8_Cma31!Vqtx<06^F@+ zCMKvTn6jW)I=d82cp+S~KL~(9-DxdX+X{T3HIOe=bMFXVy_SSXEKXRYbwV>AQe|5ESBx5<%?n%y~$Mrk4atfp&^2g#}}y0J(bAcdi~hnhF@CI z0*MZHM&HRIGtw5Pq6OQV0-`?v85SbsqT%M+{dEkS+lv;4i{7b6_^=0xFY!oS@?RY$ zt6^0rmz3<3T5Z(wFifvo@B^!ba6|W}c>rFgba#X%|L;js!>))|F}vYT=~2UZ>-Nc` zIv=9gbK?y+kAFzU@Yp~)B_!KH`fpppPNL?`nldE&0H7Mg3daDzyb2>WkwOj!9GZW> zU)Nmi(8$~zll!kP+DIgF>=kb5RJ7Pc4J3{mu)obwOmM3fqF*YP@W&ir4UtzC_7O5jSQMSj3nCI}7lwttDmuOwT zajSXW2Ey%i#x$Jnw8Fu`!5JpA>H+*Hiv}lU^vCvu;bFg zQaTB-$***17`&|utLjKXWH6amgXCK-ffCQdof;xke2?&0Nt>m^z$54om6b^RZTe~K zquwM6LO9Ji0M-7w!2I*}U<&Qb!r6!N6FK&)yn6xlYnz212Jy1v*q`IYQ6yAuUIuJ$ z9(s0oHvp@1nQF@;6BCL?BVv~>CaJTQnPw%jp=_SZkAQ%blkQ&5I|71&eO552A?YuX z7wE@dgK|k5J4QdhEuAX5wz0f*Cqo>ZFQ^C#dJm#Wf~-ki_n!BxRg5X>8WO@2sK2k4 z$cTBi$C+Qd^Jq{Qzr@WJaZ<8#Y{-{=x8>bi)rVw_j`_D>?f#fx88#idrE=9a>)ON{ zPR%Zd2cxlA(%IY{XGnb?LRV_a81>YPeigZf=ELd<5kkSuJ5{vVCTjpbFEiZ-;XxhQ(uXvsNyT*CXd{i( zKk;y?Rg|d)K*QTojmZXf0FK1w?^uC-?fs83=}|mc!6Tyb&sI0K=M9K(R$q+9Y;`Bl z&}@O5&vx{Mb$&=BzeXXBAkJ|J%H^`>_B&oG5`bz_ObLrz!I2MgHe75?a8Z0&ixCll z50|EdezGuT3;po?+EL8bAfucgG2t0FG*`ck`^*CoNR+N-QbI06Sw|6Lxt6t7Ki`WM zl$uN^Mmt*3lW_89@46)23fpRg{las2&f3C2&f3C2&f3C2&f4BpAuNvrg>@p!~L^gJ>ZWsaQnv7x!md8 G_5T94$>G-k literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/avatar/golden/avatar_default_m.png b/packages/zeta_flutter/test/src/components/avatar/golden/avatar_default_m.png new file mode 100644 index 0000000000000000000000000000000000000000..eae1c0d65bad7b5e559a02e43cf3c341c47de4df GIT binary patch literal 4420 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 literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/avatar/golden/avatar_default_xl.png b/packages/zeta_flutter/test/src/components/avatar/golden/avatar_default_xl.png new file mode 100644 index 0000000000000000000000000000000000000000..407f6e7193fcb80ca638233c08406b3ede396e1f GIT binary patch literal 4995 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 literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/avatar/golden/avatar_default_xs.png b/packages/zeta_flutter/test/src/components/avatar/golden/avatar_default_xs.png new file mode 100644 index 0000000000000000000000000000000000000000..0cd8febeab3b94b3e6e38bb5f75b92760eca3b35 GIT binary patch literal 4060 zcmeH|>ra|j9LEo8t7&V^;x=cez}93ltI=9&QQ=Xi-K;h9HdA#>=~@SyqNu2Nhw3`F zx~WO)9VKa3>0$+`^;U|wbhU0Gq)w?EV2Wq-lmao#-VoF_T?etzHc zJKrDUW20P;oHzmiaE-ojJ`n&%EC3EEE{EYxTTxXm{Gb?#Q4xSI^V)z5Cq_hck_#N= zE*U=n;P!p=`Hz!|Il86E`o?w7(batpD&XWT(A9Q3vG-JV+rzP6Hg4N=e$&@CBHGUu zym#%R=NAv{IDSQuar`Xb+&g>Yj0E>Jf72~!OH7nJmNO)^9UUD;;&-R;$qb#sM#GS$ zzq;23ms|Vp143?_H z&7{U_2GrWUweU&|070A)4{UM{pF#=Hu=08ZK77_d7%r=M8UEJ>(Y?%Emk2-IrOL59t(W(mFs&W-ua*?&OeFY1MGj3k950q; zyW4flyu+TU+Zmm-XPy^YAY2yGozWtNy#Gh?c&6pFBAxco_M zI^^b*EWsO)(G-U!I0?c=@>(cRGFrU;hbw>CO0W6$Z7AnC3EdU5{O`PT8s;KHZhBi%egi|5gvhu<~B4jO~>QdS{izBt8q2oc}6SdSq_3qCzU7D5&{3XN0O~tkY6i*Ar8O-8I zI`>sR)qsPVowI~}eSPUVxy3q`nNA#RJsH1M@u02QOX2|7&y@KTO4jh)TSH_$x+=y8 z;$Pd>Pd&wugU->@Hccxdh1tyX3YlgWy62Ok)mk)>SW$PYr1IgP0|{0gx6H6Wt)I-} z2_XN4A-ZmQr>E6J=Bu9Xsb0QetdBEkuH#~MAXe14X-^p{7IS#qFJuIa-g`E3*_un2 zW&5ia2l_>j`xdbm$a4JEjfQ9HNyj1gT}A(r`HA@|qo{0Wob@hbUet>mcd>LaCDgmh{ft1eu1C{o@Z&gw(F9{PYPaXVPN*TAGum|4;mWc=L0X9IbE*@x%{?q6 ze57z)oylLC=jv3o!G%`>K8*8Kzr0Dt@E%n#5%MBQt}!VXR3-vpG*hXAQWRhdkODR= zs3l1e4}m;U(98@c*jWv4U;zmK^z}dcroABc%V2K=`^#W|743;&PeXee+SAaUhW}?8 an(@YvcaGuw+4Zo_Ao`Qo^Zba*RsR6KgKkRz literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/avatar/golden/avatar_default_xxl.png b/packages/zeta_flutter/test/src/components/avatar/golden/avatar_default_xxl.png new file mode 100644 index 0000000000000000000000000000000000000000..27937eb77d620bd73943a140df3addce8710522f GIT binary patch literal 5845 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 literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/avatar/golden/avatar_default_xxs.png b/packages/zeta_flutter/test/src/components/avatar/golden/avatar_default_xxs.png new file mode 100644 index 0000000000000000000000000000000000000000..c4e30e19b3a3b0e07a0e270acd9b17461c882ddd GIT binary patch literal 4022 zcmeHI`%l_e6u($)OsDw%`^^ChSs?{vqT%yh^)Nk1XC+Q_ie=oLsIuL zW@777M}2KE{$z!=IEA8OXIEEwZMKwHd5E+ys|ZK{5zu`x`y2KX_m`V<&ds^^d_L#g zPsjPPlBmP+hXDXlrJoj80B|4`fUv5_gRtjz<8=nSA)tzqBEVNBuE9n)R8)E)5?-vx znjZi-PA)Azd!eb{s$1d?Tub6OY^ZGO_)jC08{jOXBdz-A%_fR}{qKyin77|BMSL@G zfBZa+$AiqSu(uXo6#5bwm>~&tMQ?NU7$)-a@;*18NNl*}l_e~rw5Omw!n)W(&N-

f zy-1`}{-qCc_{Rc=0NCF1j3B-mAMnn}=AF;xe2_s*KM|9{8kZlT)6J9RgFInnF#s#i ze7^&)oxzimmXw0zC28izr==4-66QYAlUx;r0Gy{A5Mpc5w~W#&(O1^or*TuPYx%Wq zDw`!8i3T8d?D<~6G@XzxMB#Mq?VowgTZ{VoiENubS8O%F(9Wb_qPk61c?P!J{QXG{ zDZr&0J3ec5E~qJ8lg#>X0PIQbOEk1^(cxb;E<!K3!TF?&mFPSG`qM_47&QL*D3_FWCW%&i%w3x=zNi{Ogeh#6g&!nvb%b?Gg>-bv4AkEEmuo z!R+@JjSdeFQ>f;-ISO&QF{|L~73F4Ui(`Sx-u+A8Z!j8}0FaRw!gnGMIma_ZQe4#7 zv}%!nn9rL(!~Y|gqGC^Y{Pm4iP4KQAqqQy7{#rp%Ze%)V2@^yFn7!l@$8RsSw+e|0 zztw7`C2VQ?`cM+2^U=GS{kVHAu3MFdqq6t59R8QP)6MpTB_K9Eu7C OAC!JlR?IIVU;h`XC12S9 literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/avatar/golden/avatar_default_xxxl.png b/packages/zeta_flutter/test/src/components/avatar/golden/avatar_default_xxxl.png new file mode 100644 index 0000000000000000000000000000000000000000..a8f456215c352275d7a164bf7c33b318bfd8e756 GIT binary patch literal 7364 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 literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/avatar/golden/avatar_default_xxxs.png b/packages/zeta_flutter/test/src/components/avatar/golden/avatar_default_xxxs.png new file mode 100644 index 0000000000000000000000000000000000000000..82bf6321587806687dd4abe2d83fcba8c4b15825 GIT binary patch literal 3818 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq`#|r;B4q#hkZy&-c$wm27zUe9p{mUYaeM8lgv~>BUGib9U<){Ck<> zBd)U|Bk2muB)5#fHKra>*6GjA6f$OJ{&JpuZs+8c*T1sc{M=T4?|JS1qgh*Toe{1n z%{SivKgrg*d*=1?de8pce0t{0on6Hy+u!A+ZJzn_XzSd{uhre^y+9Z3$p5&5;peAw z7ymq5|GM)1@!iE~-(MDPtlu%SKTqb|`TKWf%GXG102TIs_Gqa2ar0r!z1uU3)91Yn zdHnkC*_vPdUt=n(zwg*D$iPtHc*lOzjhr;QA5RkQ)fRuB`8YZ4*`1k3_f#jAgT&1I zV_q>aF#MZ;mw&?Q>-^9Eb}vu+D0AIXtb68n{du$Q$JkpeJI~C(5U0|8HEZk6vd0B= z-;TX|BX?P}ulehl`Ty%I-tSG7b{MJ0Z zdHMG5&Ie}cK#SGSe|nT{9WA}@>`exS11C4zY(Cn)YMZ4r1A|57wkqd4-Vs3Ia^3v9 zH}B=2&cAPa>sAiX+9#29AJ@NiJ!JM6XrM*qwBN6RoP!e?7#SGkBL02Z`Zkt%XU#o- z4n~Fs_G$0myghT=y#N2UAMW$z&qc4VY7>X}=ku}C-I217wXS9Do#|ceXV1XU(5{=F zcJJoxnfK)$Yo2(Yx9<5NZ6+3=>KlK(etcaTT>SOd!D9YBReuxeN>9pzjCa=!TYc4e zcewn&rv-ZR?*pSr?7YbfP&8Fl+lJRE*#QkbUY+9q>eTJso1^ld-Rk{ctNQv@@8QU` z=8u5>uUO^o=dkbfz4-V2**kaNI&;sv`{&dC z7It8m-nTV%049yT$;(#(jqU+?*$Cvs6C45z3<}CXxlzH<02xgTqZwheWEd?KM{9)9 o+HkZs9IXvUYs0}@8~$NWPu#ntsIPM~uw~ES>FVdQ&MBb@09tztWdHyG literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/avatar/golden/avatar_from_name_l.png b/packages/zeta_flutter/test/src/components/avatar/golden/avatar_from_name_l.png new file mode 100644 index 0000000000000000000000000000000000000000..48714cd68cc595c1992616b1f148432b881275b9 GIT binary patch literal 4045 zcmeHKT~Je35Z(ZVAO^Hf8;BA7!#>nX6)-^{Afg!2=vWnL5!6^6!~tS331A=vN2GHh zNJc?{;Ivb86af{LASF~wqQhS$QwkCiLy$BOf)NA)g!C}BolbwA`;z-|=j`5d_S7*Z;8ms{GZ727a?CU0IR^mxgs8d9X2T8UoV5g~<%187%& zYd^pvX)PI;;vOwjnG)ZVP%Ttjjb|oO(V@bO zyKk(T9I23!q-v#HZAyxhdS=ckCfRQG00;Ei#g)TP+>_LeWn90ntPSb9KBSCKMMB(Z z=h0c-4gaeP;SbK^)hPZ>+PK+-9i9%iOgMF`*;;Sq0|?kb!1KG zpl9>KF6s$@;@;Z9huP`tR{+#j_=hYWs_B=Y{p1R#SpotkDn7vXINHW`0)fZQgxKur zR3nP)6j6hUhXG=IgPjAwQ~V-;<*P!Gv9Rb`HV%ZMi%G<1VbnwFxh}N7uo5ywpfn*mGyVKVmjH&*}VTXEK z-Mj2)RZo6NS^Z2=jcE4tvL7fJaj%ZG99KPeXtWr6O^;2ebj8i{N*>n~SsT^DOew#J zKc!D0mGFjN{ah_wDov9_hAaW7Gl{^1iA~O!9Y6cY6G157Z9F=V1)lC$_iS*YCFfASexk}5fe9$29N(!R z1|_;67OC}UApJ!K|Edj}@o&vyBg96?pOe!j2AddcV)(Cng{?bm-C^qvTX+2PkK_NH c46Rnkb=EK4aC`ANbOQ$ZRz`SL*x{_-0J0pIEC2ui literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/avatar/golden/avatar_from_name_m.png b/packages/zeta_flutter/test/src/components/avatar/golden/avatar_from_name_m.png new file mode 100644 index 0000000000000000000000000000000000000000..ac63527b705c9e8ccbaea574602d26b1ad549f8d GIT binary patch literal 3942 zcmeHK`%e>A6h5UCnB(mT!pcAsM;356J9#)P448~fVT$3Q&|*efOtBQOtgFyAYzlj| zum_}CXtpdtH>5&?ov9TVmSQMH78vqq%W#%QDWw70K`rcR3_on{A6R;Sx#!%Qd+xd4 z`M!H|Kl>m()oVxa4gl~W#ERjijn2sM0;0;fX{`h7+21~k#?Y)FE-<2vYS$*Go;ohTS-8^G= z{lvxB`Cs)*-4i!57HN$;?p`?RWlUCNmy|P^Oi}oa1ofhTP+s0iCY>)gswxQ5{N|Z9 zfbPqA@zziuf>b|*7l>7T`Ft5?kx!8KGQTa3CQO>Xd<6r%Msp9QOeD0${9!pAGP`l8 zM$4?tqn9XN!vK&(?zsNZoflR4e3kI$E509hI-+gpH0efCgxFgp6n~_Dok)L6H)Zsl zdJ&+g>R_U^#<(}T(`Gkbzyd_60vihyda?D`-6e)1e!#mAvlJycBDFS#45Q;XhXQj~^qEthv&-$bdivoue9vMr65cfCNO z45qjOELklPIr82!n+}Ognh>u|YH@H9lD)6ApluLLgBcXYK_>? znCLRGLJ!*plP6+-o|^Me4Zv7xm}SjPS6wd}-373pFmOgG z@wY}aqga~Zj)l&nw5R6%4g>YCgG1f`v;Czr0EtI<2#p|&3qYZ(2SA-4+9;7SE@D^f z3kIcF=#D#;<#?&fFphy~&wVrwuH&hR-xnC6+qR{@eRp&_rPk%MoUaII<*m~c%FW44 zfrasG&akks5KCAQZ*7)v9$Um2Y>Sp2V@IHIZQ5^0w!tf1no!P`JY4ZAz_O{zvrdSL z-4bHBLn4dVD8uPDi0k~3U?NR^DF~5BUgaOw81W#x{h3$sb>AZbNw>NXG=vmUsik5% z)apls_-S)lsns2zRoir}J#vU9QC8e)egPmyMy_h@nj#83a-#`>Gl)8*PoszvWO{~u zncM#0JOU}|Ubc)`(kL9H7#w$k<~|wtLNem_q!KoEA31ugW-H+R4x-LDsYjx$Jv`TY zGqfQ&-$doBB#yOSM0ZJ~%msLXrsLtX+Y=f*g~HvrM{urw@EEIDreh(o#IaU~IRolQ znJ#D1hhTqL*;-FNa?kL)z+_;Tpd1;b=EY)*>A;7$0EEe2UGj6P_1qFV2miroCm>Eh zwl6p*8JuKrlHtFef2TT}>Ts&Vsg8et4E|R)!+JsmN2$2F`v=5zfV6kgQ`(XWs{aOH CmMHxI literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/avatar/golden/avatar_from_name_s.png b/packages/zeta_flutter/test/src/components/avatar/golden/avatar_from_name_s.png new file mode 100644 index 0000000000000000000000000000000000000000..8fae3f795a049497a325d0f74447a7b0a282029e GIT binary patch literal 3822 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq`#^r;B4q#hkZy9rL80OEx_0SMG{kUj3e1MB`GlN%#x3<=NHk3(_;h zSh-4`bF2KmAab)c^`KwO$t`E5Gykj!1BLM_xYtS%G=+ua*?cyZ?7u@8z93bLQE!v})tU?hFhM zUVrgqEb^-YWpu0LxT7#g&HXEeOw|Eq9)hdKkpg|3+3M|fiteA5*@B5n9HJ{JEfByUZ|5whfKz)aDzWx52 zSwG|FJN^4-UteFp-uC>NGkdDOX4U<8&cAv0&TlFV3VgCIWKlHc+h2oLT?>`Toz3_t({2JIa^O zS3KwPo4ow_rE~ND|9Si8Wq*CeHB+GVUn@B#%$ym|cU|_`-21ufZGq+%aLVsV&*IIW z8+DimXk2Q|haLN4*H!J{`jJ^`|jD){cihma&|K@G^{^4Ih%jGx$*JKXC7J< zTiJen?f?1RhM%gBfk729-~ZO1FL_HJSs1tPKF>c9l+r#Q*#wH-q`9TPk}BW(hL#_n zx%={E!%a8O5WY=tv;y85}Sb4q9e E0OA7}qW}N^ literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/avatar/golden/avatar_from_name_xl.png b/packages/zeta_flutter/test/src/components/avatar/golden/avatar_from_name_xl.png new file mode 100644 index 0000000000000000000000000000000000000000..df8f8e5f4de4def26264326b59eab60a52ef0848 GIT binary patch literal 4264 zcmeHJX;4#F6uyrjP?g1MYZM3>wPHssjnV=dL#j|@R8T~4gNO+tt89i45|VKNtHD@D zi7bjEqs|nBLNP%@5C9wbL)JTZ$4IUh4kE=p<8>%BJM9F>%C0^QKlh+_}w>`3+lP|}24H#oJ zasXH~T5dWajdF2raX%>+aTcx0;nnua>@Pea%gNzctq9det-z|3xs~DiPAxvKa`t|@ zVy2_ZLmpeT-U6YZwi2tR!xEveuS!t4SI^^pCrozrMd(=o>ms@v%Hp)^zs-~Op0Ppb zfWi;QkSZD*cU5}}w!|bsvxI*dcVaKQY>PxSr(nsC%Shta4qp-$OK-%@LHx%j zEEqG}`nAblx4cMmLx?q>W_!L^>^>9|*0?Y4mN7IPeC1grs#vO^T$FLM-S{_l-zrN&+AZoANV|x!lj;9MekM;{_v*T@dav*6(HxN4| z%#3H!IkPh~xexE1_Ff75dYw@t)i&7koJ+0m`w$R%{m5VP7}!7C)lI8bP8Q9<5P#iM z>(d%m&HgO!<-q?Cg(^<`#icbe4Y0Hszi_}_9#n%c0@n#i+4j@I=yqU}rNh(XC4fUm z|9j~sUgX?XgrRz^9!r_rN#3lUkI*^K%K>2?i=-sK@%2v*aK1G8c2LQmqm4 zue3<{U^FIM0j*7~dDOsY4S@C1F>Hq!pZ3Y2v@vFv0-gkd`131_wb8Igb%uZxN@@1# zi#;~E0CcDWT)qXi05F~BlCZV2;j{1G*MiG0dm7?%c}*OI6d16(zb`kR2n7aCb2c(q>H^uZN0F9N7ZyL8y68_HZs=f>2GFHBZjl zI#pluu_bmE3K9omc1V(PA$kpT6FFC_)8M?wZ46&Y*~MqvRxdG zA?m>JC|MRE6ZlV;AGU7C(6yBAQB!)3XgYx@a@;X?$-n`M$0u_AOB-6|_9#esBWq8v z*^eNq7JK?7FvZ+53^jUJ^8Bf%u{o8OGm%G-dvj zvdaE~@)VsxvCPqdYG0&{RHzDXk<|8AsdqM%3EYNe43!-Ac`gi1yVXupb@QNHEK0e_ zG?l>)TMXsjI(iYr_bHkTo7|XU}Sxq@n$iY#b6c#Tz1TjU~U9+BbXcE ef4o)Z&*Cn2k`8T>a63U+D8Mh!w|vvV<9`7bxZ~IW literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/avatar/golden/avatar_from_name_xs.png b/packages/zeta_flutter/test/src/components/avatar/golden/avatar_from_name_xs.png new file mode 100644 index 0000000000000000000000000000000000000000..dab5362f611071df2974d043299056403925e172 GIT binary patch literal 3744 zcmeHJ?@v-u7=BTfWNEc1%L-_Is5aM{_CrgGoN2nr%Gn|_ZOuuhpoS%ZinN7yv?&k0+!71hN1Ec(fIW)LyMF!igeEONs}LajOj%R8f3#It@n|E$1dcXi9Rz z(R6YB{P;WJ)}9TVPs41wz#h>=YvL{vvUM>&s`m!xWn#T8a_9P}i(l#eE$r z?U>C>KkdF8$7uGhunH_C>aRML);}E;-4`X|@rP#59^M8Z?iZ?m$s4#!PA7eIEa;=R zgz&W*+7HE*CIC#n_KZX9BmRO>R&dX?-{llqayuqAPyozNCJa^6Hbqa5a>2ONuo9p> zwKJSGI_BUNOq3j)$(+JEVt553V8&W1{j3{sEN9BEH8O*~FC^CgD|FBmDE4XcSfX+GzOw!&K~uwRFi9 zQUyYpUnFW(o9Vh^yu7;2G#(Qi0H7U}v^Ji7s>wrEld~_RV`c7r!+Tc&d|zaA++2%b z+ED&TiT=qMEJDc-q5|~N5N1Vi5V!-#H_G0$M9uye(Y*Wgj~7I3?s6SwiM~<(GF0BN z1C#I0JEv6Db@iJ?hW@GUDms3M*&&sRS>X{PMZeF_Uk=KTWhh1shMuJy`P()^DYTG13*yNtMI>+M-rD{-!{r!D) z7KH|oL&ZnUIu`Ovti-xDQ&4IWBn2UxfjkK0%|PCYq$7}SNV*~EhNK(*PdBv4a#C)q TQrs09{0E2RW84Hy{Q2s?f6Tsr literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/avatar/golden/avatar_from_name_xxl.png b/packages/zeta_flutter/test/src/components/avatar/golden/avatar_from_name_xxl.png new file mode 100644 index 0000000000000000000000000000000000000000..fa60fc6a468ba2232e33ef78d233db829bc48540 GIT binary patch literal 4561 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 Hr-UW|2*j4V literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/avatar/golden/avatar_from_name_xxxl.png b/packages/zeta_flutter/test/src/components/avatar/golden/avatar_from_name_xxxl.png new file mode 100644 index 0000000000000000000000000000000000000000..cbc469f37c5ea11bafe67a9220beb047b7b3517a GIT binary patch literal 5215 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 a+4#jx+soxYPowWdu-b3CFW1cT!oL9_X+gXI literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/avatar/golden/avatar_from_name_xxxs.png b/packages/zeta_flutter/test/src/components/avatar/golden/avatar_from_name_xxxs.png new file mode 100644 index 0000000000000000000000000000000000000000..b35dbc75d284bbe70aa86e6ac366961308135bb5 GIT binary patch literal 3632 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sOgrci(^Q|oVRx!^RA>xG(0>%uaQ@0)x8xu77VlVPHo)v&@QH7-V#xd zs}m&41s6ChQfWG=ty(3QnU;8S{+`;ezqe06{BXlrUOhkK<(JQVSJyS(yw3Rd*JZ02 z85sU;-~aAGW}04~@onDBO=r)1EcqEdZRX!Rw{D<2%y(YmIez)f@$T7=A6MTlt2}%3 z<(YDJ1_m3g`)e9x@*=SNVXPs*--*0aZR9aDU z?Pr$$@tt$FeLly`z#!ND_sp65|M$%QE^l|I>eIH|%{r&&vf0;v%c=YO^ym5eiVO@N zGIajS@!eh>zW;pu`+IXsKjiDjotbT3Uu7%?lssBx6SppB&fRTiFUAQlFg(zH{Zj7M zGj9SD1A`G03j@Om4xp@pvI7G{!>#P3EfGT+{yI=c<^Sfd*pkW`@ z?5?iicx{&sbQ%Boy4bY1{r{5h?W?VRee(3CbKB;=Gx_oK^z`q)Ys7(yALz6nP6T=E z{GY3z)T^!UFfugcul<~<{>w64yKMCjV0f+jb&1oz?Dr|9(gsKS)Mv^`R|#JGoNian{)fB zM5Nu{w_@vWvobKedv=TAXU_I>6^npL$U;0D=o$yN2B2w@j6m9 z&&m1f-bqYwclB`v0C)Py_#^=a9HIEh+SF$rUb7VPrUMv)Pn`jN9jUcfvTBA>1GSY)JyC-Q>Lgdb z}&adf(H)DGa{tPF1`A?hm|8PhRqGv}7MrRhJE z2FdXN9fb}`eLk<&eK{=ZVsgC+CbrmEnrJ9|AWv@8n~>(}#}7a%+Q3x{ zb!KbmUPM`R3~$h3o=XV=7XZtAEl@`^Lo`xx7$RRywlgT#UulRUqISP8#D&}^-eG=* z+Ui=A0d*i%T*3T^fP>6$)9tdqymhsO=>S+ju?xSYz>#^=84X z>RQ6bOaTF4w2K$4;0*ZFDH=BbcBw00l6<#{z;Xmk5WB!yYwC@d}jNU8Qu0f>DILj?pJQaRfmjf3yyhd?H^Ltf?m zASx13$ZD~^RyIF@C_5Cy0$}P8?p5{f7wP94K34TTJoNkA2wphTx=SV6L3!=8ewSma zV!z&W$(Zx|Uk%V{^;Z-vXfsZbR!1SxS1d;mm7!Bu*{xqrjx^UjlVj6#Xv8fNPf;U6 zscYvkbtmQMeI642J=*kO40)r#(!|087QLZs+ENNVDhv|uHQUs2bKdAxr)!6R|3#QfAG6LdKoz z;hA%)y;gE23VcyS7+a%RZ8-$JIEPoO+CMfm6tsArO`TXnBFZ=JOzoLHur=oFr9+iZ zRu7IzGHR8^Fa=AZyui!da{zUlO1AcXJ(l%bQTe2|bUUkFka$`~Vy&a0WUj{;Yb4@o zT?t7ak#210xqIrvlARS!Go!edjYjF4uu?}*tq{diXyK8t?>QrW?%ZwQKZ0Nr#3sn! zr=raaHZ$1F@LzWZTRLp%u%*M6j(`76{BI}2CXIDzm>)EH_&B-%1O3g!cu`zt)gOm* B8kYb7 literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/avatar/golden/avatar_image_m.png b/packages/zeta_flutter/test/src/components/avatar/golden/avatar_image_m.png new file mode 100644 index 0000000000000000000000000000000000000000..0373e8543609317f7dca38d383c7c0229dac941f GIT binary patch literal 3804 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq}2h)5S5QV$R#Ur^BQzMH~Wma=rNf{|?)mSB;HojV%Uv5u-;;x@XjJ9S)kw{{rI>3vhw|YTbY;{ z7;5&012z4S`}pz2hMRq?3=Gd7xHibhZL_O2|K9#Mhk@b1o;a2hcmHOxRrbHPk!E1{ zuuY!nNmlvW`+Yxt=UejT>hg)GM$Z~!Fzknac}nf zr{BH+hTrt31|NeC)jhh&$nZc&H~4+(tjaQ=W{1;f-hVJY&&R+pJ)`pYdtgA-a56G6 zFr=^mZJi*fz`)?()&LZpnOgpe^WT9pn}L?7MlGxBo)6RRtpL@&bJh=$6Ho=mmRQeB znUb>_u2fLk?ESay||GR=*1T=ZU3b$5^bHC1`N7? z-w!(-;`x8AtWA=Uq2c;p0fp6~BIY z?a%#DGFI#i4aJ|HZG2a18TY4rdp=uLN$t~3jtmSI=I^VH$CoAlDZZL>va0IZ{dy4w z27%uf?6=k4;Va!OpL}~?*@V02c%L&c6uh%5-F)n<)iGcit>>6{e%pz6iZ<7-b^+~* zY4VSMyS>M7TDrE_@52(mb8W7kI3KvF`di{%+4IwYfjj-_>33rB(+%G&0ET?saVua_ zMhbdKZ1FKFh?YP{17tKn;HA}QVi-*fqlp1nvy5hh(Tp&f5k@ltW`ll&lngWfGu(5T WvnIl}>H#nnFnGH9xvXi1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq_rl)5S5QV$R#UXY-^yB^)lkYD>BIzwkI?m6%#solRfigP=ptb#x+~ zu55p^dR5l6<;$1n)*LW9W-;%WMeh0ke}1W+{&{{^&&GKBO-u|7A2Pm8ulZqe%tGe) zje8SyZvQ-ASj{)p@L0q&!*9C{zi==x)cC#Un&5rtvF>fNW80er7#SMQzdFmXGpypz ztK$McH(ASH2O1-HZ}x0~?H&E{xwj?m_ig`O$H0)Fx1Q~U*|8tr3vU0Yh|IQLU;29~ z14Dy#wW-5AzP}3JBZL_kGX9Dw_?O!Vm7d=UH23yzO^1DVf1Eo$e}^#8%>K8k4t|gS zEN&_F*;^+ULKeHKV#PsNX;rMMcD$Rfzie8^_pPM$1mw{o&9jnjA z|DX!)f0P6|bF~04QXJeGfZ;F62sAQ<1sD_)BBxjTe`uST&dk7|w_Q)z{^@xeX`l@| zOU*wju7L`lt6|H2b`xmCX`q7^`x&2OVPN<(x3tIbo3LEzt@rP2fzBw%eQhCMIxF*d zV&ooq382p|o-Y1(y|YXvZ5AugIrHY5Nu^c1zQSV+w0`@?%a8xn?R_7(CUxd#J7BUY zklk7u` z_jdf)wfpV*iR-(Q!+}vg^H1UXho|#;E}I>DXmV^@Z2HCb)6eEhnlmsQsJU1AjnRxSnh{1b k!e~ao?1f-08GiCBzi-`^d_80~uwlvI>FVdQ&MBb@0530;G5`Po literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/avatar/golden/avatar_image_xl.png b/packages/zeta_flutter/test/src/components/avatar/golden/avatar_image_xl.png new file mode 100644 index 0000000000000000000000000000000000000000..40e80684112916935a2b878769501034183ed6bf GIT binary patch literal 4104 zcmeHK`%jZ+6h2?MRSAeD3!p%8Fz1kp&^i*qpaO!_tQlXkwlLSIfGuSdVU?C!XA5%aUNqUiuwVN9@||f|h;{9dc|7qUZ@k^i&Yj zE&^<5qsK%hlr$LBin8Hd1lpmYrkiHAijEBs-d>|CPkPtc_9yzLx}IU)J4==c1dWY# zdC}b~ZcAEXt(MnePxWMf!Qko^$|=PRJAj?W1WVP@D;G~$M3j~sKzOxK*RiCDY~$nC zg;P9tfX=JFw4$ZJBH7lE@Lz+REvCxi1taxJD_?&V;0eok8*5XO#=d*#&&aBiSj2q1 zWYdQLv!7J#=cxSlt)>@y$dp-ewgB0NpRu-=q%kdJ*bCnl129_DvdMdi$u(rJ+@4Pw zTy6CUa@+{8|0@sgMqOU>5i)~IS_+(Ca&zjFcnBRYJhmJLx<#%e_HaN|CW2-&%Ry>1 zX;Ye$PSi>spa3bSkmJwbTC&A`rMx3*?QRT}c;Am^D(+31?FmcvL6rp_vy<{1_5{ok zUl0L0^7A<=V?S;wZ_2a-&YyH_emS;xE{`mmE%FCgAkNrJdFpdLhST?$i#@4@4!{w; zZbXelm~QLUuFF!?Y(;vGy|i)=bHn%UastTpMDFuQeX1Pcn~bO0q;;_GMo-Qp_PLe6 z^hV!X#r7BDL@AVyk=^wrHulFG4S51JxYOiEQ|Z|CT^Mj=Jwz8ry?MwE*~Z62m&;S; zOH_b88WGIZ3YB5=xH|@;o5X}P)}eDjp|L2HKojas7*Cr(((0%10xxWNJH@8}9MAD$ zaMjb#B@1P8#OK{$USQu?&7EiOoMK{i5^u~ghz0P=i2h3aB&8Tx{rdRTMY$(hObM0c zh8H*hObudPoGu&S6s9--?RY&D<^9cBYWIGTrVL^KMC*c@qkYCfwmU`uNV7%wR`Z2P zyiv#ZX|p~!hpi=R{x4Yrh5-b%ldFyVwUjJ@{_6&X3b7W_zWbljZ37}?o;J>If10?h z03p<@U~pUWcCa5PCY~cMIU?Ly%BOBYg_<)x4K;U^>pn#o4TxaqctWGx2WbSMf}L7J z2-TJ=a2=ZSjT&Jh<&IVa)GCW2M_BJ{QLS=%R;*B=E|@9gpMs5l?a=g4hgQ%Qmsbku zhImWn1d{Mh^9$yiEZ6aGGeYF+P(FTe-LnG+47Bj}HHo6WrzQ1R5HGN|Ybv65$cX@) z=0(;ixsgHY8IgNEMt){lap?+`)KA-YBO`y-1E9sw^pVM|V1!+udWzPLTg$bXIX3%N zw2pW79>Bp9Z>pdA^f){c0kc{YdnU zPC4GX17Lf@ia$n}_xD!boh=RS zYfEMwB%QgTM?5|uCmY5kW`*0klgS+z-l}xdW@vBi1yKEdl$SDqOH|z}ljZ(0?J)#F zIca`c*vMm^F;}^DeXpq4(~Ou`ja2nkm~@>B8UsE^R=d|^Y-Ui@c+w+;yTCV9JSb-@ z?=wD5b&hNk=X2%wXl^emC|tB`EH_g7mhmk=n(&)7%;nXv+7}K(LM>0%DVZ~NjIJ@R zozPeW!p1_R8&#;#7lpX6rXd32M@n=7@b;lugH}MSVz3?r>&;-j6|ED&It{JU&^itO cziGIi1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sOhPvi(^Q|oVRyx``z|paJaZ}^0)u>-x)TZcV-9-j9PGV+tf9xPZfny zo?VPC{`lp?hYfxD5!Vd;PD{MDI_Cc0qStU)X3t@pV>Y!c-oLT`_KKXtOd$6AmpkkIiy0Xh^z!ZACj7qIZF`oL zfnmp<%I?|g?KUmn33T!F@9$h&fb?~v_n8+HA&Sp)aWF7U5L94baByn?%1JUZF)*Y& z%X}@lXCp+DxxaPQtNWK@fc`i=o8S6YOQ}VUEi=#yv!2<$J$NgS8)#>^LH}GCmYbKo zcz~Xf{Vb9E=f=Tn%NH{MT{-*vuN(WHa<%*b>i_-W*Ngf&+jq8R&C1yibanN|(~JL~ z=iQc+YX}U#4ZY>r{Pz8KA3OyH$$@Y8SWkSBVY_~(H?#+6!<+N@{_%U*4vBIl&N{-* zz;I`^z1;tQl{?<>h918;lOO2Q^m^OY!Wrl1AHOVd`qy5^XPNTvrGOf@eSMkyK%a5r zn&dgt46l{;^jD=+74Ll~cW)CP(A2}z-!GiC+%RpmB+yFp3RYk^U<3vWwh$T>L`yQG z0WumO@bY6cF^ndL(Zm3(NJlfmXhs;#2%{Ncv{i}Ry&$GkocW*e5>x(ao~(=UzzoFT M>FVdQ&MBb@0E!WIOaK4? literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/avatar/golden/avatar_image_xxl.png b/packages/zeta_flutter/test/src/components/avatar/golden/avatar_image_xxl.png new file mode 100644 index 0000000000000000000000000000000000000000..3fd712470f88e5ffabf31d5913af975ccf1979b8 GIT binary patch literal 4403 zcmeHJX;hO}8h%5lH+6mg@7nAks%Oc2(mMm9_Q!GX@3vjpXA>6zRUN#&-32z z(pP~;^mI*h0YK01k3K;FSPKA+P#rC_b2IJ28T5lm4m#omH3K`R&;pn2!-{CqrvGj7d{^(T#zG(5ikp(J~4J$c`?zl8NZer~o;>D{t-D!EczSd&88?f5{$ zLw;^$fnjcXfM-jVO$!gLFOLzZP5hOBV`PAi1he)fY)-d>W6eXx7MXHx-KB_;HLu`l zU-|+AOktQW^OlrWWvW!T^Lj{bg(YJRU%WV`WFgyCN($4p+~!sN?}o3IEV>F9?ceuy ztyPh?0aSOr){u~jh{Dw`dyYJn5!bR?tJwh}f_Bv&fOnL_Pl`o3mx}JYkXOwDRhC}y zLJeR>p3P+LXK)8;X1tTJiM}|1h=qF)wp`Fd3Ehg)ao)p?9zxG#)d((Cw#HURdBm+j_)=QQV8(8 zovYQG{$O;n{7U&Q0Mqn_;dka|^KuP`X>YYs0UF=#6^VOF7arUxbwUu;ea+J^o|Fd` zW?vUJQqkItr(0Z_a6J9Zq6XAC?9wlOaek_sF<%gYTqnITcD%OOrn&F9rYN-XM__og z$ZlYvPE(;@ysKw9$6#%sK^vlG#YF2W=oYz}v&;-KT^ilawsOpKckGQ=rIfic{j^*mn_I{w^hVzKw{)6^#b zp?Sx#-Pg+1TM?P7AKGG0?%@Zbro_vUiG;bgJER8vX^GV6exXv^r2*_8D+Hz9(vq<^ zz%{uqljL1@PGA5`%VlE=8YRQ=Apv0&O~y*zN>xwK6uJTUtJk*~M3yDy*W)1SuMzPN zPnxnV(YAx0Hpi*&Iy&wnB2aJToN9L#7@s=33jIdSlBO?wV_cGj@##il@=| zp^v2mS&W|AFq(W5ypdOrcJeLiw{Q3&;^v{g1Dk^lV3 zme}cmkKN!*Ra(1Fzj^P89A-HiZOSskq26!#;7<=I{Zp~Si1Rv9mTs%dsWEPE%@raR zqV#aRhY9wGI1^2x5W^Amfe^%lM~M|R`nPLY^%@Xmy+%rPs1I+~-e6S03S+5-C$_GS z=9f7|B5ByP(SVIjgO2wnSci4xlb5 z(cSY5N&F%2U77$1_Wo+YiSh^ID{XhSZM8B-SzB!J#Z}V)x-q7=8(JI}?o*-} zB-P~f&Q3|wN2^g43EOvA2*VY4G^Hy<1et2MmMt%*+rCt^Jwtchc-%8glEY=cSO6qA05wQ9PyAC;FH{|Al#sl8vX(#?~i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sA+?zi(^Q|oVRx``bme2I9xPtUikn2&eAhG_$^knOtPAK)A`j_l?f9P z*2Ql>xARPqjokU-rI*b%=NilZJ!oY7+NwBWeXSA$LxDfv^*@(BRz9n7T{b8ES!MOl zsA)5ow@cSJF)%!+f4rRW)7#3l-Bos8R z{Wjb{#jy=J(@!4dz4iENW!${V?gfkt40ZAOOiyYecmLA4KQCX}jDg|6`=`DQBCCV0 zZ3Jql+sk$$-OsKrWF9L6Lyhd~n6UMyeoNl2OncqO%)qd(qqJ<6#~dF=pvrf9d>qPl zNbWm66KKS~YnS_W2UO4FWnlPn&G!D;hkJnmR}g>AHhkflL`H@KwUyu1N*EX#&MP?p z$sPuvJB*lE7#L1)2rw`xY}Pwn*Z#f|=#~r7*JYI-I5q%{jE&^C)=RXFU|?ow*uCkT z-|B#C>w(t(TVrh8-u~}_?Kze7 z|NQy~!3DtB`(V1({@;fmox213`HkPrV`ez;w`#id>#EgTe~DWM4f)QEh5 literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/avatar/golden/avatar_image_xxxl.png b/packages/zeta_flutter/test/src/components/avatar/golden/avatar_image_xxxl.png new file mode 100644 index 0000000000000000000000000000000000000000..a677b2cb1ce60e58673bea57d5ae940bd7f6791c GIT binary patch literal 5069 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 literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/avatar/golden/avatar_image_xxxs.png b/packages/zeta_flutter/test/src/components/avatar/golden/avatar_image_xxxs.png new file mode 100644 index 0000000000000000000000000000000000000000..162703a495eb5dcf9d36f507e3e0d5b09dac7013 GIT binary patch literal 3536 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sHw`+#WAE}&fB}E^KJ!*I9yD2{{8>{?54Ypm$vvSMQK)eyJUMBIQ-~% zd98MXjjiq5;=`%4Z*H5pJw7TeEjIn!>$S@n85ruU>%TlSGoJqXOr5gtx0yTh&aY3M zX*oY_3kL&3!Rg&;JMxU}^|n8LytcN!?%AfhKd%Gz#Gi`SR`CBH@%6{_*Wdp9*?w8J zPLhG)!_z(M8e+DcKYCpMw%zB)zkXUWFdVqP`J8;Z<-63|@2&Y67=B2_F+aJ-0yO%= zwOwa_YnQ!Gtl#O&&A{+r`q!!lmA%U8%nS_u>391g{#6t{$pMOg{PEs_fk8nTNHp{? z0PQwnVqsu7vF3E+;r=ABZucAbmSGyYxA7a4c1CgKM$O7ebwSn$z#S)4%<# z?a|TCUw*W7H_(*-J1fJlX3pKX7#PJn#Iwa27#!RhfSM#3fo@6xg~9|ug;BxL02xgT zqZwheWEd?KM{9)9+HkZs9IXvUYs0}^8`d#-mxQj}b!}=3ur<%%>FVdQ&MBb@0C%!5 A_W%F@ literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/avatar/golden/avatar_initials_l.png b/packages/zeta_flutter/test/src/components/avatar/golden/avatar_initials_l.png new file mode 100644 index 0000000000000000000000000000000000000000..48714cd68cc595c1992616b1f148432b881275b9 GIT binary patch literal 4045 zcmeHKT~Je35Z(ZVAO^Hf8;BA7!#>nX6)-^{Afg!2=vWnL5!6^6!~tS331A=vN2GHh zNJc?{;Ivb86af{LASF~wqQhS$QwkCiLy$BOf)NA)g!C}BolbwA`;z-|=j`5d_S7*Z;8ms{GZ727a?CU0IR^mxgs8d9X2T8UoV5g~<%187%& zYd^pvX)PI;;vOwjnG)ZVP%Ttjjb|oO(V@bO zyKk(T9I23!q-v#HZAyxhdS=ckCfRQG00;Ei#g)TP+>_LeWn90ntPSb9KBSCKMMB(Z z=h0c-4gaeP;SbK^)hPZ>+PK+-9i9%iOgMF`*;;Sq0|?kb!1KG zpl9>KF6s$@;@;Z9huP`tR{+#j_=hYWs_B=Y{p1R#SpotkDn7vXINHW`0)fZQgxKur zR3nP)6j6hUhXG=IgPjAwQ~V-;<*P!Gv9Rb`HV%ZMi%G<1VbnwFxh}N7uo5ywpfn*mGyVKVmjH&*}VTXEK z-Mj2)RZo6NS^Z2=jcE4tvL7fJaj%ZG99KPeXtWr6O^;2ebj8i{N*>n~SsT^DOew#J zKc!D0mGFjN{ah_wDov9_hAaW7Gl{^1iA~O!9Y6cY6G157Z9F=V1)lC$_iS*YCFfASexk}5fe9$29N(!R z1|_;67OC}UApJ!K|Edj}@o&vyBg96?pOe!j2AddcV)(Cng{?bm-C^qvTX+2PkK_NH c46Rnkb=EK4aC`ANbOQ$ZRz`SL*x{_-0J0pIEC2ui literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/avatar/golden/avatar_initials_m.png b/packages/zeta_flutter/test/src/components/avatar/golden/avatar_initials_m.png new file mode 100644 index 0000000000000000000000000000000000000000..ac63527b705c9e8ccbaea574602d26b1ad549f8d GIT binary patch literal 3942 zcmeHK`%e>A6h5UCnB(mT!pcAsM;356J9#)P448~fVT$3Q&|*efOtBQOtgFyAYzlj| zum_}CXtpdtH>5&?ov9TVmSQMH78vqq%W#%QDWw70K`rcR3_on{A6R;Sx#!%Qd+xd4 z`M!H|Kl>m()oVxa4gl~W#ERjijn2sM0;0;fX{`h7+21~k#?Y)FE-<2vYS$*Go;ohTS-8^G= z{lvxB`Cs)*-4i!57HN$;?p`?RWlUCNmy|P^Oi}oa1ofhTP+s0iCY>)gswxQ5{N|Z9 zfbPqA@zziuf>b|*7l>7T`Ft5?kx!8KGQTa3CQO>Xd<6r%Msp9QOeD0${9!pAGP`l8 zM$4?tqn9XN!vK&(?zsNZoflR4e3kI$E509hI-+gpH0efCgxFgp6n~_Dok)L6H)Zsl zdJ&+g>R_U^#<(}T(`Gkbzyd_60vihyda?D`-6e)1e!#mAvlJycBDFS#45Q;XhXQj~^qEthv&-$bdivoue9vMr65cfCNO z45qjOELklPIr82!n+}Ognh>u|YH@H9lD)6ApluLLgBcXYK_>? znCLRGLJ!*plP6+-o|^Me4Zv7xm}SjPS6wd}-373pFmOgG z@wY}aqga~Zj)l&nw5R6%4g>YCgG1f`v;Czr0EtI<2#p|&3qYZ(2SA-4+9;7SE@D^f z3kIcF=#D#;<#?&fFphy~&wVrwuH&hR-xnC6+qR{@eRp&_rPk%MoUaII<*m~c%FW44 zfrasG&akks5KCAQZ*7)v9$Um2Y>Sp2V@IHIZQ5^0w!tf1no!P`JY4ZAz_O{zvrdSL z-4bHBLn4dVD8uPDi0k~3U?NR^DF~5BUgaOw81W#x{h3$sb>AZbNw>NXG=vmUsik5% z)apls_-S)lsns2zRoir}J#vU9QC8e)egPmyMy_h@nj#83a-#`>Gl)8*PoszvWO{~u zncM#0JOU}|Ubc)`(kL9H7#w$k<~|wtLNem_q!KoEA31ugW-H+R4x-LDsYjx$Jv`TY zGqfQ&-$doBB#yOSM0ZJ~%msLXrsLtX+Y=f*g~HvrM{urw@EEIDreh(o#IaU~IRolQ znJ#D1hhTqL*;-FNa?kL)z+_;Tpd1;b=EY)*>A;7$0EEe2UGj6P_1qFV2miroCm>Eh zwl6p*8JuKrlHtFef2TT}>Ts&Vsg8et4E|R)!+JsmN2$2F`v=5zfV6kgQ`(XWs{aOH CmMHxI literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/avatar/golden/avatar_initials_s.png b/packages/zeta_flutter/test/src/components/avatar/golden/avatar_initials_s.png new file mode 100644 index 0000000000000000000000000000000000000000..8fae3f795a049497a325d0f74447a7b0a282029e GIT binary patch literal 3822 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq`#^r;B4q#hkZy9rL80OEx_0SMG{kUj3e1MB`GlN%#x3<=NHk3(_;h zSh-4`bF2KmAab)c^`KwO$t`E5Gykj!1BLM_xYtS%G=+ua*?cyZ?7u@8z93bLQE!v})tU?hFhM zUVrgqEb^-YWpu0LxT7#g&HXEeOw|Eq9)hdKkpg|3+3M|fiteA5*@B5n9HJ{JEfByUZ|5whfKz)aDzWx52 zSwG|FJN^4-UteFp-uC>NGkdDOX4U<8&cAv0&TlFV3VgCIWKlHc+h2oLT?>`Toz3_t({2JIa^O zS3KwPo4ow_rE~ND|9Si8Wq*CeHB+GVUn@B#%$ym|cU|_`-21ufZGq+%aLVsV&*IIW z8+DimXk2Q|haLN4*H!J{`jJ^`|jD){cihma&|K@G^{^4Ih%jGx$*JKXC7J< zTiJen?f?1RhM%gBfk729-~ZO1FL_HJSs1tPKF>c9l+r#Q*#wH-q`9TPk}BW(hL#_n zx%={E!%a8O5WY=tv;y85}Sb4q9e E0OA7}qW}N^ literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/avatar/golden/avatar_initials_xl.png b/packages/zeta_flutter/test/src/components/avatar/golden/avatar_initials_xl.png new file mode 100644 index 0000000000000000000000000000000000000000..df8f8e5f4de4def26264326b59eab60a52ef0848 GIT binary patch literal 4264 zcmeHJX;4#F6uyrjP?g1MYZM3>wPHssjnV=dL#j|@R8T~4gNO+tt89i45|VKNtHD@D zi7bjEqs|nBLNP%@5C9wbL)JTZ$4IUh4kE=p<8>%BJM9F>%C0^QKlh+_}w>`3+lP|}24H#oJ zasXH~T5dWajdF2raX%>+aTcx0;nnua>@Pea%gNzctq9det-z|3xs~DiPAxvKa`t|@ zVy2_ZLmpeT-U6YZwi2tR!xEveuS!t4SI^^pCrozrMd(=o>ms@v%Hp)^zs-~Op0Ppb zfWi;QkSZD*cU5}}w!|bsvxI*dcVaKQY>PxSr(nsC%Shta4qp-$OK-%@LHx%j zEEqG}`nAblx4cMmLx?q>W_!L^>^>9|*0?Y4mN7IPeC1grs#vO^T$FLM-S{_l-zrN&+AZoANV|x!lj;9MekM;{_v*T@dav*6(HxN4| z%#3H!IkPh~xexE1_Ff75dYw@t)i&7koJ+0m`w$R%{m5VP7}!7C)lI8bP8Q9<5P#iM z>(d%m&HgO!<-q?Cg(^<`#icbe4Y0Hszi_}_9#n%c0@n#i+4j@I=yqU}rNh(XC4fUm z|9j~sUgX?XgrRz^9!r_rN#3lUkI*^K%K>2?i=-sK@%2v*aK1G8c2LQmqm4 zue3<{U^FIM0j*7~dDOsY4S@C1F>Hq!pZ3Y2v@vFv0-gkd`131_wb8Igb%uZxN@@1# zi#;~E0CcDWT)qXi05F~BlCZV2;j{1G*MiG0dm7?%c}*OI6d16(zb`kR2n7aCb2c(q>H^uZN0F9N7ZyL8y68_HZs=f>2GFHBZjl zI#pluu_bmE3K9omc1V(PA$kpT6FFC_)8M?wZ46&Y*~MqvRxdG zA?m>JC|MRE6ZlV;AGU7C(6yBAQB!)3XgYx@a@;X?$-n`M$0u_AOB-6|_9#esBWq8v z*^eNq7JK?7FvZ+53^jUJ^8Bf%u{o8OGm%G-dvj zvdaE~@)VsxvCPqdYG0&{RHzDXk<|8AsdqM%3EYNe43!-Ac`gi1yVXupb@QNHEK0e_ zG?l>)TMXsjI(iYr_bHkTo7|XU}Sxq@n$iY#b6c#Tz1TjU~U9+BbXcE ef4o)Z&*Cn2k`8T>a63U+D8Mh!w|vvV<9`7bxZ~IW literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/avatar/golden/avatar_initials_xs.png b/packages/zeta_flutter/test/src/components/avatar/golden/avatar_initials_xs.png new file mode 100644 index 0000000000000000000000000000000000000000..dab5362f611071df2974d043299056403925e172 GIT binary patch literal 3744 zcmeHJ?@v-u7=BTfWNEc1%L-_Is5aM{_CrgGoN2nr%Gn|_ZOuuhpoS%ZinN7yv?&k0+!71hN1Ec(fIW)LyMF!igeEONs}LajOj%R8f3#It@n|E$1dcXi9Rz z(R6YB{P;WJ)}9TVPs41wz#h>=YvL{vvUM>&s`m!xWn#T8a_9P}i(l#eE$r z?U>C>KkdF8$7uGhunH_C>aRML);}E;-4`X|@rP#59^M8Z?iZ?m$s4#!PA7eIEa;=R zgz&W*+7HE*CIC#n_KZX9BmRO>R&dX?-{llqayuqAPyozNCJa^6Hbqa5a>2ONuo9p> zwKJSGI_BUNOq3j)$(+JEVt553V8&W1{j3{sEN9BEH8O*~FC^CgD|FBmDE4XcSfX+GzOw!&K~uwRFi9 zQUyYpUnFW(o9Vh^yu7;2G#(Qi0H7U}v^Ji7s>wrEld~_RV`c7r!+Tc&d|zaA++2%b z+ED&TiT=qMEJDc-q5|~N5N1Vi5V!-#H_G0$M9uye(Y*Wgj~7I3?s6SwiM~<(GF0BN z1C#I0JEv6Db@iJ?hW@GUDms3M*&&sRS>X{PMZeF_Uk=KTWhh1shMuJy`P()^DYTG13*yNtMI>+M-rD{-!{r!D) z7KH|oL&ZnUIu`Ovti-xDQ&4IWBn2UxfjkK0%|PCYq$7}SNV*~EhNK(*PdBv4a#C)q TQrs09{0E2RW84Hy{Q2s?f6Tsr literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/avatar/golden/avatar_initials_xxl.png b/packages/zeta_flutter/test/src/components/avatar/golden/avatar_initials_xxl.png new file mode 100644 index 0000000000000000000000000000000000000000..fa60fc6a468ba2232e33ef78d233db829bc48540 GIT binary patch literal 4561 zcmeHLc~nzp7QYEH1eHxhg9b@mY7rEpR6xR_VjYU$R0TnlfRBO-%G$65OlqeSYZIWu zk&0|HJ*S`t1O!=BmLSI$9Sso}#3(@|K@bBWM2MJ#%;)IwznSCwJ-mPN?su2(Zohlq z$xnX@++((I#X&LqSZusLT1fPD}$uGhs-tk zrZ(Mj-BX8FGC)XEsL9>&=af~+Np1U+==^KmCA;L&tnmsWaK62Gl%vSOC^`DCg|T+~ zFkP*8HE(YZ*`s1Lz~t^a)7%af#oqtBn_3S__6X^k=OO^F@1~(Zwyh$*zU}8LS8c2S z(&Q%zwXbb*Mru|Q0dj^3Nfb<>x$iDZG}US?CH%kdLNelR2$eA_Mz-^5r!@nYj6tBy zr{}h@5B!tG&*AnX!vl4$7P)#=^He+5$ek|zo&X#Ms|RLlyi2nN)#gIAC-PV`6hM@x z(c`z)-XA?tp4hm~|1tq4&5zK1%!Rbm0c8xu%<*~>aHek^=QMNUSmA&N*zE*su>>( zxX}hsDXK7%j|x(bv0tAL2Y4h4A|%n%dr!Z7w9OSDcqoW4#7Pl*nm~kEIE89I6QBGU zUDSfem*GpPja-^y!OfDq3zh)OCL~DHox9ltN71cgF*#{dUiLVO>-UUcPUhz4#da7G z1WP<^sX`ilFTYgcUfhWp0r*cvaTG1-CmMKWh*0-}JEdj%WM^P1hN|zc>IF$*e`g7e z2oZiv#@inabLwZfg}3fuxM-zTYnaR8iK2BgjfRwQ{~MRR=TsK5RKt|M-Wgdgd3^_F zRYH4V>D;S*9ght!1kMfZTAxe}c7taJkgWN_hrWa1g^@r|k$3|cHOUJF#!*=GwODQ%c@%ssdYsQumX zp`L_<^b0%(WYmRE!`s)Wdue3=54v26Y(v&z3qe3BHj+O%)PBeI08%`jfh!3BP3P`K z4o`1sK!T#E?3>~EGUQ+ZB{CQ2?LlsocyK-bQo-W{fg?mxPK( zUE>45;h}(G3-Lc5?k$XE5aRL2$WPbccM1>WwAu5vVF1z5wI;Fejc%3vQ2)V!rFS#l zF<;GUe7dUCt&h?f_t zO@G!BYRTW6`vN%to0CiBxJ#&U=x=CT5Dq>qM_l2ygCnLr(=2f z)z7crkE}!}JYOAnG$3w7iIWLXLuC}Vo?ibf|6-j8FRVt~{PpG4u1{a=Omjz&5OmXR zsf9E=$|j0g##hz@)X>FG1j%(@N{aLNy%q>;W0LhG=B>sS%Mx)2VjmQn=icjUh>3J< ziFgPQ5gqRGt2Ev5QP8Pvt1ZziWT{eSJYp=W@b}1_rt5LrKNqpgL9n8EgU{!T!9b~- zh5&-En=`^a0!Fre)_heej~zkdLFgKAsxfa@SNuJ_F+`kdP0zShnCYP3xOb)FUc?sf zE^BfP+c)NX!eh4E9nF@MYjKa=t&^-K)}TSe?7A|+oMKkSC(0g}063eUHC;;Or znHVJ-Q{+sSp0V?&?lT4st;&k3X-LhR(yJ(IVy{nsvja)X#~6wx!<6Pyuy17=fMDdP zr_Y46`W$5<*f*c~Rg`*AiS||IKpas%(BY>WkL1aC{!z)A;nb(7#DnS4%c&Mpwzu33 zccb8L#Z_%vYHw&WW|^<}!D#2~uQShOp?=Spq;+&8@;Y8p*8V7p=8fYs8vxz}|4hnd zJPpL?x~8|POi1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq_rX)5S5QV$R#Ufn74GA`KU#O>GO=-CP4y7G!rTME301uCVB0=#7^v zzbPggTzpY7qh{`n=Lc+fO1{3m-v2-B>Zbee`-|P%bJK38-77h0Wc=D{bM*UPy$lQo zRBzsW>im25%*V1uPc4kiZ+Gucomp8>%D-QLf#JvfAJ-Ww>x?(w{aN!Q^!Vd5@7rgV z&fF=c1k`tCPhn(MeZ}t|KUTl}@n|>D$^XO@ZofTw)OO2p@8gvp=YAJ70V->MJ(a=o z-n!Vm+UN7%nddMtH1MC+W(->66?vSAq2csbBZqrWPac1LDiWynck}qH6{rh?|pNWNmLGMh}jkIma`vtbjZnwN~7-(7drg@+5%G~2-Vqln_YCF%6 z>71oB1H+5Cb>A(3mPZRIFfcf{H2^&#$p}=E!otD8Fd=gK)0)HQ!Rpq&mQ;S=1(ZMF z8d?7O%&sr9BVKPhHoaGT&##@tU-#p~;~F&vhJv`=GiT=St261}Uu)BT z_^hY6JYRd{_0(%$Uu{{qdv)cP7pE`RX)-W;I2iry_us;_w0h%W8#m|aGufA$as!3! zKYY^bG2%D^^j^%e@I2=I_xAp7y;{=$9xEsmx8I4l{@Z?O zM4rFhxu53*85kb?`S)>8^30k2?=&T@J$0?g;0KDupSN0NIA>9<_h&q<$SWN4@_xO7);_g7!!6hQ?nAvG!pOd7~ZXEZ=Y z0|Z`ONO7!VkwQ;Do>2hF#v(5tDnm{ Hr-UW|2*j4V literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/avatar/golden/avatar_initials_xxxl.png b/packages/zeta_flutter/test/src/components/avatar/golden/avatar_initials_xxxl.png new file mode 100644 index 0000000000000000000000000000000000000000..cbc469f37c5ea11bafe67a9220beb047b7b3517a GIT binary patch literal 5215 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 a+4#jx+soxYPowWdu-b3CFW1cT!oL9_X+gXI literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/avatar/golden/avatar_initials_xxxs.png b/packages/zeta_flutter/test/src/components/avatar/golden/avatar_initials_xxxs.png new file mode 100644 index 0000000000000000000000000000000000000000..b35dbc75d284bbe70aa86e6ac366961308135bb5 GIT binary patch literal 3632 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 F{4Z8d0tNs8 literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/avatar/golden/avatar_lower_badge_m.png b/packages/zeta_flutter/test/src/components/avatar/golden/avatar_lower_badge_m.png new file mode 100644 index 0000000000000000000000000000000000000000..90f79763c1ffd7cf9522c073e887ad2c79285111 GIT binary patch literal 4765 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 K26Fu4i~a(8DrY(X literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/avatar/golden/avatar_lower_badge_xl.png b/packages/zeta_flutter/test/src/components/avatar/golden/avatar_lower_badge_xl.png new file mode 100644 index 0000000000000000000000000000000000000000..4601eb52951a7644aceae3da9118c604add4b3cb GIT binary patch literal 5749 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 RAUAQ4v@<#3Zv5dh{{U6*4=Mlv literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/avatar/golden/avatar_lower_badge_xxl.png b/packages/zeta_flutter/test/src/components/avatar/golden/avatar_lower_badge_xxl.png new file mode 100644 index 0000000000000000000000000000000000000000..74ec97208b063da49042868c01ba9fca7ae02593 GIT binary patch literal 6923 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 literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/avatar/golden/avatar_lower_badge_xxxl.png b/packages/zeta_flutter/test/src/components/avatar/golden/avatar_lower_badge_xxxl.png new file mode 100644 index 0000000000000000000000000000000000000000..2e7f647fc42ad766a206d9715927e41b7bbad952 GIT binary patch literal 9096 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 G8~*@wQ9o_~ literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/avatar/golden/avatar_upper_badge_l.png b/packages/zeta_flutter/test/src/components/avatar/golden/avatar_upper_badge_l.png new file mode 100644 index 0000000000000000000000000000000000000000..c4c7335d333248343738f840da3cd77825dfad3c GIT binary patch literal 5131 zcmeH|`CHQY7RNtkmgb|jj5(7sc&8b?w?!+rjL0m@98*d}&9!A77Z8^WP|D@j)YNsW z+a1jmZFRxGNC{V{%+ylMJs`D4g9L%h1Vxei@u~Y)T))43pU-*D_xm~LbV%YqD7K+8??`2_gVOY-yF2bg@Tad=psw9m`m5I*M&f4dC8 zI<}XGyMJ<#e8@X1ToTqgsXO~a*P9M{i#3XL01pfs0pz%zs{gXv-$t4e#Ecw;Bi?v-cZap?RlPT8>1Co2=IV zEx-yh(b0k8Q6{El58b_{<v zCNi-~;oAy2eUR@$!r!iV$~)IYol_5XP^B?8i&#kL z9M&m}m=H%$HlMn@ja5BL6@MxhN1>(_XswiNr&D|DW{0S93bOLPE!SzhB6OQh#tTNd z=>*ad>Qp^KAAs7%D=XS~P1_!9b-*d>Sh^fulGrjtou-PWuRM1^QO4# z8?vQrj2pFmtKUEFZfuo$=BCAMYFz;`oI?^btTdD5#pqphv*A6}(hJ4f!m7S^0$upD z+V*|Nh<5*0bkcEp5&#*Gj~&g}oe~{1RXtQ6uYMWFp;k_%>v9R2g?mK;>#0SLWKX?E z+hXy$sSBEdLJeuCl&$Oxni0BHrDS>S)b(q7i4~iaH99fyJP!g-=~RBvSxhJ6jmEMTfE}GR+H5 z98USdQd&PUKUR;FoMxtf>FpoKkT0MCNJxQhE~chZv3xVtRYNE0?sg4K*r)yd^aJl4 zEh@KfU}WaGe~t+NMDlIt^_P5x8j0Gfw8q;GE+Gxv&w)-;SU1*$q_b`c=Tj{$5x<@N zU^Y)cR?XV)e$35;U7Xi{EI1fXr>orDZoCok1En4L+)!KHCrqVl5_u@6yFs2;zmQo{ zS(lr7kDHiqgjW;4i(mj7qandyOw(BqQkCbRtMJ4t)g|SOl3BS_A$09#%~6KJMQ*w| zw)zRyNzKaj_eo*EoFi%X@81`<6(kZ%L!bGDl`2`x9!!iS;7RK!;XYH>N8r zm5x2DRmGbB1i;n4D*CR3Gyce0;%HG;SK247Y*$(tmh|q;p$u5CAPybRkwyQhIGNe? z6l3rBweNoAi2h=%CWfP+|9%R#swwLI{|>K8RmHz^QsnRslOcJM9BmXoCDa4QH`F&U z2}-Zz!a-Qm-q+Hym)CFi<|puz8$fd@>Gk1-`vn{H&ox1mUR+Vf{d7trmga( zRj?cg=ycwgy?s#Gx4Dd|6+H}hbzO^upnkDnX87Z>U*Hx;ic1?5uaHa9 z9qDsqHJw6?7=yu^$nIb#!#UE4cfwSw0fGC*Jx~?@W#@`Wf0vhrPEFoP6Fj(EW@aY) zXNab^81AYX;iEx)a_o5Dcnd-DYa2vCj$deqz!HHa0!svz2rLm;BJlr7;D%0rF7D_K>Z3<706ty^d_9=^j-UT8J95}( literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/avatar/golden/avatar_upper_badge_m.png b/packages/zeta_flutter/test/src/components/avatar/golden/avatar_upper_badge_m.png new file mode 100644 index 0000000000000000000000000000000000000000..8c97c5f657c78e1474bdd40de67fbe236dfa94ce GIT binary patch literal 4735 zcmeH~Yfw|y7RNW@1w?_iXmNOVoWiudiWR{&JVF^15dkFx1R+7KJi=2U1W7Pad=x=L z#{o%sSerp05FQtikPuS^fl(k9ID`O61S)6}5?%?A5ONPQ_kOvb@5h`kXVy9Uti9H6 z{m*}97oG_Xv@o|d2LMP4 zFoQ3W+0VZK@WnSl0Y63LRxXG{)L24(-;#1bE=ORHJ-rw&t6N9Y{5^wEW={h479x#z z?K)I)rXez|rtVosW^|!l#5du$PTr3A>WMf)x^K$aFW`oYH|vM~p4OYeUEh1A|0_o> z64HL;ngz}FShb0Td`&LaEjc5HU%kTh&d?1hD~I9_C*cYr?}X^CCP%z&2vM=o9V#!p z_CcsaxiS(B(N?-+@-;N+=4vg3yxyg0uB@}&1wXnh%Jz*SzMJWL+w~EmD<-*FGepwY*I# z^ogIkNdmxclx_U?noS@6=i~^gMAR%4dsy02Wt%(_w~V*UhZ-BxNy7wM{^}FN>VN>J z{_F13JPZKwSs`7;nHS!ThJ{+n4iJV$U6G?a#nNC+Y2J!V(shwUTIA?4I*zjZBin|& z9?Mlf(q{^lCV`m770DJ=LjgvB5=l$?$KO4jXPNgI3K4<%HTA7dDcM4CH|~=;GZIJE z;wk(*AvC-CWw5KX$2hD@ZzW34Uv!nUn(qMM;4oKg@+oh<-=uEyf6 z`q#o5A?vkRa&uqlo(J}#{?iY!^W#hXcmOD$STpARzt&vHmp9oJQ5g)y0@3q`H2|4K zd00wijHBS?21X@l{V>bbP<^{zwz{~lCDLTD=0>hWQ~ufPiC0`iX$egk{63<}@?b>9 z^!pQuoTg|axC`dhXo|NU+0EAfX;S7ZzPwfRxZ=&Vrl*{g7i!XUTScA)%$hCURU(Po zFQ5}nZ^pfnP3UTP4K(Biy}nAxRg*V@A^j}z*uv&^CtPdiz%c5Vjx9?0G@wqAps-A7 zNaFDiA`>g$2%>&&Hwx(n3#OB;x(iXMA`dP^?HJ6L79uuZt>M(OPF(pKy=|Tm9bNS? zaa}sB*I#Om;ym7zv1d*7(Y0?q>xqE2msc1Bm8~2W8VOG$ zksggHIvKgqh5ecKU-h|HRq~SzUaN$*WJu!LwO~twp1G$yC5Q}#M z!1^&e>O9Gce7!~}{Twb2|544hw#Prjt;pdo9PsmrlUl^2C*Kl)$+HChUZijN*qjjF z#!IS@2*vZ|6W(3`qy{S9!7dMNq~1$u+eBMM>%@r5ADX&`k2@xq5CD6*LkC> zNraAST?kQ}td(bs;VwL)vW$V>WH!tZg;w>RLfJ%CAP$qWB;)$68CK399!J$}=SL_< zd&Le_8kO*`u~7FLml99R7y}R^t=d<@V6>lwU}5`Q%}q$DW#6OM-c{A!O=M(fO#yf| ze3^eK7JHrt=(p^7!aP$m-FtH!bzSDIpHy z*Rqsh@cX8PdxX`Z-Q2ussA8UZE)Z)sR)FEa(_#{!uWyG*1kLlIO;G&qD1UgmPLE?7 z!o-sj_E+%u>N``dHKq2^wqviFFbkZ6+PQjnn_iXX6pCv9d>KyNaZhG)5)EZY_CvBq z3F1Pi>i>~8`5P2oDw$nO7eH#4!zhI zyR!^ay5EZ?&LLF&4%~^>p(MDaiL`IG-Qe&pz7HIIzhfr=zkCk2;#Um&B)GWK41muL zzzU-5-(J>Z_89=qCn&(M)Ih*Mz(Bx2z(Bx2z(Bx2z(Bx2;Qvct(@9ydVC41327Dv} OAn15#K$Cy`&3^-LmHhbt literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/avatar/golden/avatar_upper_badge_s.png b/packages/zeta_flutter/test/src/components/avatar/golden/avatar_upper_badge_s.png new file mode 100644 index 0000000000000000000000000000000000000000..8584c35c800cbdfbbbab0a3ad22ba2d07c096497 GIT binary patch literal 4498 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 F{{YkV)L;Mr literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/avatar/golden/avatar_upper_badge_xs.png b/packages/zeta_flutter/test/src/components/avatar/golden/avatar_upper_badge_xs.png new file mode 100644 index 0000000000000000000000000000000000000000..b050fdf29c7420c68df926099cc04f57299c9e9f GIT binary patch literal 4309 zcmeHJ{ZCU@7(NIBLa;MV$c6%mMwcicc8Y*dLC}E;3-bdN3nHUYqy=sSN})wbhJ>-Y z>4c7!#vq~*1VosXez5t4gWiH4ZTKoOXe+d|AhzZ9>+Tr;hW*y_%guS;d*A!!d7kq= zr~3Qk13q3~djSA^62FU21;8~3fE8(;?lAI4(dB&ja6wWJ#DV+h`dPSfL*f#Tc*0fY znSBL-FIb83u}4a{^Am^fs5Gbh7AGUj=y(Bn$Ka-mCvS7=Z}$v+=~kKdCLug2VTkH= zx%t%bkkhO5x4dJM{F?n^S@kXGM09u7U-PetD8CR!B+6{B z{WKOnt{SYv%jM!lqavMR-=N8vt|UmS*<~fk<+`SD;tBv3Hg}gaxqQHCP9ctuqvMQH z?15q4@op|1vy-?K{9|a2iJYc?&j=`y8h1%d%e8DaK3ApA<6})HBnxN*?hQaic&)JXakSe(kNcUIx`%7Tzs5D zqm}~j?yyS5CNi@TiW*_lq*hs*B&X~G6B`y-UdqNzK??CgJ7SbM=6Vz^031_nb?;Yc zOzN$Z6P%34hJJ0xf{lVxbBc>Ie!`|Q@Og2oD*&yxjeOhR&jzB1UG-)j!`Ko)qH2fR zbz|EV=7L}VGL6ESRsC{wkSLRJCEBCKIk5KlgSzX_{luL+3F5!D1cpX_KnVJ=?f%wB zz5sNTQr-IN#NE-7Wp}j9c57`Q-ge@``iZ(TdJB(j7>ER*@BB%0P^Uv75RaNy$|sll zxE9f*Xg)UC_Pk2-l;#-CYyZ^R{by>mS}7?j&yC49NJ;jRVWm-uDLq&}_ONu)m9+C$ zu5D3QOYj%;iTMSQ`sHg!4l)(ms8Tvpw9{Kd%Y{15GzN?5*r;;0R<(_q=OGu5j5P=f^NLYkp{pMN!lS`~ zj4aL2^x2%8&U(7;CGSZ9{N?Vw0pU>Z995@rU5RaRaZN96_mlfyOT_T3VpM&Q{B_5Cox7iq-d0^ne39ANO36Aci$B8irrh`!;;0V_ z?KPVkrw0U@r-cD_)O1Pop2egv^fBW4UUqL0WI(^EJq=LUq3WAU+NEc%yVri`Z*Ie| zB`soF&YDy}3XhE)L@R{9g_h?s^rLBmGOj=*N@bI}i87i&x=*uVw+E<*daHHsuZdw5 z+OCUjgC% z>Ql}cbOPcOgYzIbCxde;Ivv63hE6whx}nnz|4%nm92JJuWx`81NK8nMzaN)* F`9A`F68r!F literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/avatar/golden/avatar_upper_badge_xxl.png b/packages/zeta_flutter/test/src/components/avatar/golden/avatar_upper_badge_xxl.png new file mode 100644 index 0000000000000000000000000000000000000000..8130c553c15bbf4391ef0ac1bd51116dd583b528 GIT binary patch literal 6549 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 literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/avatar/golden/avatar_upper_badge_xxxs.png b/packages/zeta_flutter/test/src/components/avatar/golden/avatar_upper_badge_xxxs.png new file mode 100644 index 0000000000000000000000000000000000000000..00a10e6718eeff5470f0fb9370c445ee63537301 GIT binary patch literal 3965 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq`G$)5S5QV$R#U-s?ltWe+?oe_zaCDH65dSd^BoKvkF^cpnvRI)y%mk?AMK#uK!g~Yg3<4 z_$Fdb%>O@+PTR|h$N#%2%U}OSe0@*s{om*QT1PQ3BzWHzQOKVcDeeAEx96_4nsoTO z_5GXsZH?1TPq+K^a9i%<2h#iRYbH8uq=D`l!toU$?hBt>(wmnSr+av4c=pxI&5xfPe4e+avf{hN zm+$4zez7w!G^|bj_*ne7|JvU5_FLcnuQp*|IKZ51bxcD2+`8W9d^-1v9zGK8??1V2 z>29fge`o67yM2)n7#&kyN+icb$|e_9&7R85o&3FjUw!yt`O25<--~iUCZv7(XTR>u zx19O+O70(5yS}cse*dRi5p`d`Zv6Ic{_#s2pPSe0t^0Q<;^*m?8-KjH3^X8KCOp0( zvF6>v+f#WN7(Qeg{`_ivdUG=S^UdEMZ(kmMd^_Lma3%(Znv`AHzvs^R_2d4TVl$xM zzxvF-wcB9(!_RYox^iqU%WmKI^Q!I4=Rj8^yq@`*@8jz1&vW>IQl^(bpWeKacYndl zTX)i!85p9^e`)Ui+}%=n45$%k%=&fb^@YOLa|$ppJZO74x%&Bb-X|yO_!U_g81iPw z-P>+(&#wG`dH4T!f46=-ayaiWHv_{R1KH%B^L8eZ+TTA0t(p4urp1=?H~E1UF9wE= z3`ona{&dH>`n=kjx_$;=u$k?OX%OqFcoay@{;F7ef94=>#utH=hN20ho5p{qGtBidQbj1 z^>`~V;tQ&`^8o$Y@cZQ2RY0l-1NI0QJYD@<);T3K0RR}_PgMW_ literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/avatar/golden/zeta_avatar_rail_default.png b/packages/zeta_flutter/test/src/components/avatar/golden/zeta_avatar_rail_default.png new file mode 100644 index 0000000000000000000000000000000000000000..56c15252df2fe63be18a370aab018caaf49e48fc GIT binary patch literal 5867 zcmeHLeN<9u9=>R+ZaQP`wn0|v**R@{b~OhZHB-~R#&Jz-8f&UiYlg-~Q%ot*=z`N! z)N1NvNr^$*hn&($&E3dQFg=20KuYKq0aN$^l3Yy$L6NL|e-60qJPH8wPQ|WWm6%sKtcWY#X<=YmT%UTt9^g<;bEH;R`L*rEbV8hEnO|O!a z?pZpl53=aLzel@CSyf($ohMx%YFV#kT*@lvZMCGn9w-y%`@xYJif;`^(!B9uk+yv| z0$&IECF0~d*N%2$&~#V;8ehY_<(}=~aEoxAOUD;(wno{LeE(KZgUqAP>Ooz5kRqVo zVGg<1dpbPcCJKta&c!Yb8B0zq3rTLCQ@F&iI%4gcre4-!IwZ^)0`mV(V;KK+T9DTe zVY-la`q%wDZwyMqdHd<&p*zzj)4bKgzX!{7$a0u^%?}^z3I~0uMV*6nyyd0~H{y}G zNItHmtI`t9>21$iiA?tQ2Gq%36oN)V0jTbXWM9DeZ(k0wP>WMGJk!54`JzK4Fs(LRxy z_8=cmf*&ucCr)U0ykk1hwPRt4=2X}_qK|Zq3FYjwJfTBo4YzK(n3E6=may$uZAle% zkseQR)WcGoN{vL9XxKNaZ`QnAJF9}B5AO7uQ`_>}rnXm3_tF&LZfoXSRygH2L6AQv zNl>ZtZA=zS86Sy+248?iKk{p-?xO`t&Y0jLTEKw`^Ns@8!h>Dh0AK_D&9LFL*y_ft z2Onz55stKR|8J@7tJ=-{$PZ4k*qs*rP6V)FE;;{vm9E_KX}&EL{%RThgKOZ{iBku* zXsDHGlCfSxWHE2+aavc>&MaMDFw}o zh#k1MPA`wHbmegH^Um=m9cTfort`0Xtru`<7a=vWsxQ11!K>%7sBI;-CqkjB&D~VS zn(B{@+xj*cCI<*6hN^1`2Qr^;lL`D0$TrGSXW8_=#eDkw%n(MsoFE($F^Ewou>uU= zJYFkc*)$T|%@07x0j@67cHSgsR1~VBOqhN`1qm>^LM#CsJ;e}Uvc4R9RL`%BLc$IyknR#ZS| zdlQYhl3mM-wJYqDp1VJzAc-n9%uYDUs1mn-W;gxfoIqBz%lmaV|GewwesO@qbQn3S zvXSCCLflh4cm?X@N{DuQQ_TP|QsWo*Bz=NCP$~IbMJKE5W5_7QB+BnB_>?D0)``ur zC2ZuTV>m1MoPMS$xw*!jSf$lAHPU$5_EkVdCh)FT>2BD-L*)6s8{|1%jSp=Y`g5 z`{JaMU~)Q}R#d;OxIV9H5JK|8;zQ^`2_c5@YMIV1LtTCFaY||{;BL1X;D#~Sd_NQlrpc@oQ48CS_b#^vZl{q~^qpqNg zETKloha(*ha-q9wQO^`4+X{-YP<1z#y`5r?QJeU-whRvahKM?)Rh96~I)25l(Z~Kc z^n7X6bNvC}oB)7JOZR{aeIG;P0zc_os$T+bEKE0#n z|ATtoSD!O+-!G45@SVZ;y_wVuxn{^UL$3F+{m&?CMp^&&${Mht#NRHO%Old&@QVl_ Nb{%f*)zv!={s;I~%n|?q literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/badge/golden/indicator_default.png b/packages/zeta_flutter/test/src/components/badge/golden/indicator_default.png new file mode 100644 index 0000000000000000000000000000000000000000..f38493c74339f2edda5396a2ac66d12e63952c97 GIT binary patch literal 3788 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq}2g)5S5QV$R#!{@rt1CEFjSyQNR^=@L7_;;519cvMSBX+^g}lVErkA z(aX}e=PW-wzIkuY`^cO3?%k7RU}!k->i;jGBOd%e{`UIcuao_seVScA=j`YA=dM-D zpSf0DKQnTsWx<<=VEp67#+yG51{-g`J582{fuW{$ZOu*Xi17bqiF$vZT*;YN`+FBN z`}~TMzCGVwNB;h{J@0BS1H*wyKMsX&u&esoyR+iY6W+(kX=$I|+%Eq3Z&+GTC-?%&e=g~VK@AQk8N;5EQNU;-F2)Ey3Al`3pYb_st z@A{2b4|{ihpKE{SR{5SjRtAQc*O$XLl$AZZ{z@V^MTw!-~G`Do@6EUD;Y`!r)IiP$$`o;^T?ZDuBx=~!=HFr;&YaY-W zrw&Ah z(NF&>-M;_V3G??el-K{udS~hFT4@Z(g z^yaer<-4;P85-7am1g4r2GF9I&+lBROEZp25@A&t;ucLK6VV C;KV}! literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/badge/golden/indicator_icon_default.png b/packages/zeta_flutter/test/src/components/badge/golden/indicator_icon_default.png new file mode 100644 index 0000000000000000000000000000000000000000..bc513822624ce2918e6bde280fe35df56c8c0b23 GIT binary patch literal 4153 zcmeHJ|5MUu9Dn?l)-H9Hc1<_!YFX0@lg*@1in*Ng)LE`VQOg`SO;j*VP&BP0)6%P} zL=diP%Qc&Zn2Zq7(tT!rfOSpH6qvarMNuUDf`a?FzhXb|+&%Z)^M0Q9>$&&qc|Y&h zQ~7Od*&ZuIp=)e28%b-CU;q=a=gv?_i_Zxd+s5{Oa`4fNl`}nGm7v3Ii z0U5K3Y>vx=jDVw6KL@#dL*F5|eNkHXLtEvpmR*SF%QtMXdZb}@j;gb^Bs^$tPP^(R zv{0>DZm(LcrpF2naxp~ZLo%u4bE=?@0KD|T|sya#)N^ptQ+ISBV0( z4kA6zTOyPaJQ3i~zBj9Jk4~^Sp4ZsyMr&(*Tv%}d)BN80V9TiGe#7!}Rx=NM;G7bM zsr_UE09}0wr#~{oXt{0khHL&QTvYMOWemf-P)lo8C&LxK9hu<;T2J)ZPaP5LVe0jT zd>;rp>06o?zWA#UjW*ubiL}3G#iA;4VKQDLKS^$>;Wk(XU}*M9+QLb+WP~H1LM{UG zVlWsw%K&K>I$lbUt5WHdl+eWGrEYRFUqZp;@y(bT94%;eZJvfk(+2cuO!Kf#3um>H zvjl{V>v6SX!{t-CVa7?8l2=t@w7e@^F^Vi7@MU!J{@Id#g_APnRg$vN7jsBs={dh< zD)j+iNh8E!U*}tUgwDpBrLAMD$K7x^rPcHlU8K1%Gq^fsY!PQn$1!ENI4mQmP}RyE zxVst2o37|~*BY-7rWKxSOisQ!E_O{-e^LOz-)lY5cJr)?{*Xxn(SDr~jo9r+<^oE; z^4r!sw0+2qTjRvCjtk3Phxh4-2v7h-6}%dCph7YIMeqBhTbxT~Zw|@TQ%}i~MjrtK zis9U2s2q?h=jMp(*d}`(UHt5)1F&u;0Vf`R#mS8y0s_;g2=FTmZ zcSoPc4&Am#h*1d7`)pj4W*4gS@Rx|ch-7CNdP#O6S`7YMe0=I0e(brb7yEv!DNZ$F zXql!ci!D2c6t@ml4JW=@Kbn}4MIsgDdkv1H%DB#Y>6C^yeUZ^pKawKaTlcoqJ$OBi zmuWdUIbo4^Ht2mD@=cGSR4$6Cy^N78&Qm-(tXF%nOWjS{dxagDBvL_p3DXIIohFvS z@IzO!tLp(7pGo;*vD7%dIwxvO{cNdIq=&!seL|vikc8E(qxHk;gC@^)e*bc^3toHV z5sWr+a4i#%Ov8tGulW#DgwwIbT39hkBazier;>+L{Qa|UWnCcFn zq$)YjZ3YRQJJCZc+!ooiou!j&=+ep?ruf=GFV23*KZ9UG+)}O|M_JvsA+fzpmxKaP z`=K8IhmV#aOWW-bR?;0^Y(^U)wq&q91Y2dWRYjX3*woObhBh^{sp0=x4cRh>qqv=y U_MW9zBOiGX^;K*{GyZh>zd}@$&;S4c literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/badge/golden/indicator_icon_values.png b/packages/zeta_flutter/test/src/components/badge/golden/indicator_icon_values.png new file mode 100644 index 0000000000000000000000000000000000000000..284759c323473c8d67275a5edb7f65e88bb5fec8 GIT binary patch literal 3791 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq}2m)5S5QV$R#U`@5f{%O3c6zP#*?tsYyyu%fSxfa5k!M~{C@xg`g! z62uRlyLZSc;>L|zY(bG6D^(I!3UD}fH!Rt?WTS_Z3&+iq=X#F5dFwVQCQo^v^OLVl z%O##wKDfQ_XHC7%?6Yb1@|$nVU;9^d_KeQy#I<_j3=9XvH~#z4-+lK?+4qyazyF?j zlfKQkc+0HF^@p@s7#RNL$FQDAtG4}E@$&2E%AdWTE5E+&o;kDf*~zbS=FU4)>_7iZ zS^10!GV-;V*LfHiYFu@Jmi$ln^zqv7-9L}Y|1$_5G;x^7Y?(XIlC=ik)u( z23LQ^-o1O?zB+o{ZqEKaUoYO-TdUDkt-r_meQm*y&+pzo)$;mR^M7&W$F2O&m*3xS zdi(F0s0OgMuMc+i-~XTc`9!sDX&UO)f*>HIn8SLe&$EBkt8@@q?L+nLYj+0C3e^QzJ3t&8Y-FuROqgwc#Jnh{1b!e|va m+B_I-8jaS5L%%lsX)c|xB>3wa*FV5gox#)9&t;ucLK6URuF5?C literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/badge/golden/indicator_notification_default.png b/packages/zeta_flutter/test/src/components/badge/golden/indicator_notification_default.png new file mode 100644 index 0000000000000000000000000000000000000000..f38493c74339f2edda5396a2ac66d12e63952c97 GIT binary patch literal 3788 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq}2g)5S5QV$R#!{@rt1CEFjSyQNR^=@L7_;;519cvMSBX+^g}lVErkA z(aX}e=PW-wzIkuY`^cO3?%k7RU}!k->i;jGBOd%e{`UIcuao_seVScA=j`YA=dM-D zpSf0DKQnTsWx<<=VEp67#+yG51{-g`J582{fuW{$ZOu*Xi17bqiF$vZT*;YN`+FBN z`}~TMzCGVwNB;h{J@0BS1H*wyKMsX&u&esoyR+iY6W+(kX=$I|+%Eq3Z&+GTC-?%&e=g~VK@AQk8N;5EQNU;-F2)Ey3Al`3pYb_st z@A{2b4|{ihpKE{SR{5SjRtAQc*O$XLl$AZZ{z@V^MTw!-~G`Do@6EUD;Y`!r)IiP$$`o;^T?ZDuBx=~!=HFr;&YaY-W zrw&Ah z(NF&>-M;_V3G??el-K{udS~hFT4@Z(g z^yaer<-4;P85-7am1g4r2GF9I&+lBROEZp25@A&t;ucLK6VV C;KV}! literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/badge/golden/indicator_notification_values.png b/packages/zeta_flutter/test/src/components/badge/golden/indicator_notification_values.png new file mode 100644 index 0000000000000000000000000000000000000000..26b4122ff90fe282f4d24597d0698bdb6ee37550 GIT binary patch literal 3435 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|s7ch*#WAE}&fB|+c_D!!4G*n5xD2kC9{e182T;I!Iia}P$z4-;C4*Y+- zo+0v__~UO+O76(W_Rn7YxUjm&YTD*Cb^uz{!@$VEV8p~SDmWS-qlsZOBaD^|qov|#jWAjpj@E{w iwc%)OI6`W}KTK;^T87puw-*7sF$|urelF{r5}E+KLlG_j literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/badge/golden/indicator_notification_with_value.png b/packages/zeta_flutter/test/src/components/badge/golden/indicator_notification_with_value.png new file mode 100644 index 0000000000000000000000000000000000000000..f4033d6374ca676ad36b30d940623002d0ec99d4 GIT binary patch literal 3472 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sL9IH#WAE}&f7bCvqAzz8ZH{2^iWVpTKuDV>I3E%i*Nia5ff{)nPet3 z<;IK&iVr5F<;lR23c0e0G{GSo`{llBX z4E71&zCgqBw*6v%^5*ZsW8SyVFflObtYu1he)jd*>Dy+oGB89$ zv7UJJr{?j}+%!f8hG{W}xfvKz!WfNi-oIawIXe>Qq^0-s9qelF)MSHs@emc){xROX z`QYracOS3cw&4fb*}j(b#NKfIeja=naVG8Yt0yHfbLaFO%`tn%-kzLqb?nQ{ z$@|Nr7#JSR-}a4DjDg`mZV|6O1H%MC1qKEOw+5g~B^iP4OJU&{6&wwa(Zn#C5k^af u(Nb}=Mi{LPM{C2;+HkZs9DcRoPtKP~e#wWJMYjMO{|uh4elF{r5}E*eSp@(9 literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/badge/golden/label_dark.png b/packages/zeta_flutter/test/src/components/badge/golden/label_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..4b8db22df6dca3ddc16dd5c41ea650b1be21acf3 GIT binary patch literal 3679 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq{?H)5S5QV$Rz;w*4Wg3~dj~r?Z+htm}-lQ|ff%+P}hMjmEMK+mA9? z{oxfe3u~)i&}r|WtMkTV%f=fnZ+kiyWhk9gs!QqQP~_IxU8YuM%=%s6`L0uw%l+mV z&wQqLPG{}<`8TRR&fJ__^y`qtwr_tTYztC0NNmf?@0*`jV{7;OS##m{duuDtGcqJF z>iC|UbKBZ}=a=`b*0;@%AHK^Td_Up-r&AR>b{qfwxpeBsg8a76#`o%b46pIY$|mdh z*4F+0_qH(q`MWQ(o6=|ete*Sv&%vqA$zKl$C-)edZQm#VKEAH_&AYefwg@sXq-`~- ze0r!}uV%-`Z#zC-zq&I2!>5xcf8>4cb}#$){FXvX|@k86LCv`NjM3mCo?vSL653%2Z}x zIFnUb`}SsK{sY5;FDIWrvt?vxVBN51*L`bwp7;M47$!u_`wonQghCDh1_lLX2L^_Q z9tK7R1|udG28I&|!84z}HCunacOW_8_rCi;`Tl#K=5Jqjwwk%W(f;4R)O*4V3=s_8 zlZ~H$JLj)=wwk@Tr1tfxiua$6Zrr`y`n@It!=LkSckeF#Joj~U__1L3zW%F!+mD~x z$Nc%8OUmnS&whNn_5AT<{rj@t%eOtZWe2%&%f7m#{ChwjG#q^pzX6xKusU{B5H0pb z17tKn@aON*6f&AZMpMXWErVI}kCqIhCBtaRFj_Luy=3^q?EIu_^1I)AtbrXA22WQ% Jmvv4FO#m;6uj~K- literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/badge/golden/label_default.png b/packages/zeta_flutter/test/src/components/badge/golden/label_default.png new file mode 100644 index 0000000000000000000000000000000000000000..12ef072e8eb6bafd58e37f9add7f8325d3d0ac87 GIT binary patch literal 3621 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sOh|?i(^Q|oVRy3cEyCs9C%oqZayQlXM@(H23IAG2+8>g8#jIARB5$y zo2OLPv^KVD%A^vr=wnL0CJD+p92b*>kCfi{dW$pcoZEBr?%%afpU!z$|4`&P`{6TN zV)UN7moMK~pPg+}Ytg&-@IlLs)wy!v-=A$P|D5vXOrPvMWtCdVWmpZZ!^Q}({XC;I;mUIvDLQ{Vp87pt%S@Y4MF<3pNyo6hqu`}k^V zW$x?vC!hX3WxxIS=fN$Xe);dSlALaD6aBv6mhJMnFF*dxtoi%#n?!O?^ZR8VA8)^0 z@qF>s@5~Gbx+DJlIs8hz^xyuvpZ6>o7!v-9?YF=Eg<}q@`*{`)28P$$BNBnO9;kO} z0EVz6BNGEd3P^l{paKJfgBwCnOh5J(NSnC+Pw^54hHLpBkL}i**YojL^*KhMG3K^A zif!)i+qm_m<&6cWuRs6zbMIqAOJGc{xrq^)zWpw#-*4Hhdv`YZ{j-xdZr=T3!oV?04S>LFe*42Aft(4G$V|b45OvuXpJyh o8;;h7qqX5^Z8%(N!#|v}CsqIaqq`&)*b!myboFyt=akR{00GjC$N&HU literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/badge/golden/label_negative.png b/packages/zeta_flutter/test/src/components/badge/golden/label_negative.png new file mode 100644 index 0000000000000000000000000000000000000000..cf4fb3b1590f3e00358b1fb8517d323645d7d45a GIT binary patch literal 3662 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sOg8Ni(^Q|oVR!EyJbpc8b02CSLOMxsk2_8LM2IoMTA9En1y?*z*d3P zSIjhP*sp!twvVy9gi%p#Zf}M%KAZUT`uZQ1Z|?3h{`dFocf(^6?dSK}_|+Dt z_T0=_D#^%@5IQ+NzPh~d|L*tl?<{^E*Vo>A!fr=p_8GrC`%Pb0@9XF{Jhpc8^JC4k zw@-_!fAo6w;|o8-r^UtJIlSul8mr5He)SeUKl@!iFF$^-$+mly*$^`?|LnJ4U(NQd zvEGIq7|zS8%m2rH=Xt}-|L)gYeg=mAdnI?7ff2yo&cMjPV8q12z;J>?fPq0l*@1zf zp$8%8v;4SxJV@i_$H%YPG68iQ_;TTM`gL38-v`>B1Jxc#dH!kY(YM^<*KOIeOMYCP zer#p_ewk#m=b8Xhs+<8AeOR r(Hdd2HXN-DM{C2;+HhFZhClh;Dr+0BTU<;8Mks@)tDnm{r-UW|I5uZF literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/badge/golden/label_neutral.png b/packages/zeta_flutter/test/src/components/badge/golden/label_neutral.png new file mode 100644 index 0000000000000000000000000000000000000000..d8b5a9b16d2b26412a0712a6d49693fb6f59486b GIT binary patch literal 3615 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sOhAqi(^Q|oVT|fv!cUA8Xm4rKdE-(or1s~#&pHAX0uqg$Zo$IFxPgA z?2^|Wk993tZZJhpTI=Vv(0J#Ac*gqs9|}t>%fHoC%vu|^`t94hRd;mqkEa#e%Wb=T z@UwyajAIucCe4|*N8+-{?eA6$3^vT0^{=0PyZpTQf4d#Kc1gYdTJ@ay+2@}(a?GsH z>x+Hf828@p|BcVbB_6+dlXE6*_x^zR`1t;(MLR#&6t*A#_iW?m@yr~cjN zS5IFq{>IGE@ISe3^Pa!wo8#;LW&Zj4@bEeIn%~dP{`ma&xB6`R`oC2%b$@nz{v(n6 z=i6`j$3LE=JpWlPzQ3{UYz~JE402Gx(2+mw~Gv~hb2hka7x?BtgF3*1Uxw-cJf$#)7aiD6Oy*H=7 ze){e5^VzlU56bC^u|K|gI{({VU@V?Lkh3)^H~;;$$7z+;X0v~P+;I0@wYt*h=1dt` zy<;y=b{qQI9c5;C@bYZf>Zy-_RtnkuVP{}4Vq#%nIKd&nz@VV)z`)SZ!@xKyI2s_M ziD5J&jFt?erQ&FfFj^aq)`p|C;b?6*Olrf==I)-oO*eNm&jfY>7(8A5T-G@yGywqh CSBOgh literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/badge/golden/label_positive.png b/packages/zeta_flutter/test/src/components/badge/golden/label_positive.png new file mode 100644 index 0000000000000000000000000000000000000000..c77e88b41893fdbacd400b71b01e5cc2456bf9e9 GIT binary patch literal 3678 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq{?1)5S5QV$R#!8&^*)l{oP6{?4dnX;IrBGzB)X@+msz`8ArDSabYi zUc1&;Z`+;vg-h2Sd}wB2_H@#VO9g^w7WxQ$nl>%!yUN^Y9JkI%{+h@A{PRpc{qvSK z`tLv0JuFwd{IaC%>$$TVD{HfJ>~~npy|a^C(>D3I*|D9%%a1SJEPm|QLFLnN>xRXjPj@~awf*xi$BIwy!(7+-hySYY?~$+jo7rP{Y-aEFW7oy? z`)em}Z7pMAXmEXd|If42|6_i3!NmXn7#IW!UdS^roZt{(U{FwY zU|?wIVPIrnFk)gs5j=D2B6It+z0B1Ifb{geObiU#32(1xuh*|;|JD%v`Z!dmDE0TP zH-D}@+w?u5^WJR>%XP7TO5V)2n8?m>;D5H!T)*`2_jhDwU*CT0Tl4P658q8reed$* z$;RHocSl|pzI@ZVvF^i(P1hM25?FnfU4EH!(;JvRRv(-xjn`>d-8(9X7J;JyG8!QG zv-oHV8BHOhDFjyqIGQ^~bH`}z7|k7+P2i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|s7cS$#WAE}&fA;zSt5xt4G;5E#Q$_p?P$6Y-O27T_n2_Sgpzp&gEpL% zE$WVO^4Ks%;nbv*x0}!QZF=AJ+ve$qvma*9d{+H)S%3fa*9Q+;TkVu}S2zDH$IQ_1 z|IVX#t?BvKl7ANbW{>$Vll(EE{dIls#vS|r{xUqa!)E@mUuD0)`p2(5zWBLu8rQwV zcecgpzdq*nypLaA>CDJ*ApRD|1pf5v$(G5=)uo2L>iXO5U1sk7=Wq6Y{(Ze;SC4+1 z{rY=+-m&iT|JSU~>`i~?GyVBx3)_1?{xUFZ2>$-f7U2h2IY?zkd3!&nEZf$ED{pGBDg=R0kQ67PU6)buB+oK!y!0K)jiwDv1gC z(NG!i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sOgudi(^Q|oVRy2_JyQMG(4az@NP-rdpCES51v<3{Auo)_&M7x zC*RC5tN--i+>L$J#WwYS3f{bb%g5K=yZQO?ncd;XTeHoN{W|tCbUib}0Y!t#lK6b)_;rdd3o`1_xba2JuiPf`dt6^eec%A$HnH!C-Rt#_i{Oziz)5Td}XAE&O+N@~$KK)Beh*otNw1d%ygcMDiS~?6dRr8 z&cG0HZQ|SadH-G?daD1fcdKgLy7+hhZ0=cn{g*xazrOza@B980?78zd_2EzN`SsR* z^LFp~Q1g-JG~04;1FP7P*6q) zURFNtx2}qvuVL}=xy%dK%L zxM1#Qa{&MgB6scB1Hg>W0dU{vF&jm=IcJWdof~ZrF&xw>{07my4UJta{pLV*Q+@^#@7uJ|8f?NqJ^EFG#tjtv({#1XV>XZ*C?nRS1KpR@FOF3{aXSfTNquz zHFs0UWb*0v6E(@XW4zSCPuDYM#C zVUujy5G6l7)}Tmy*~+RS8W4bUv9>!CK~@PTMJE!IwmR zKdi+OldQipG;9_GB`7|&zB?O+{xq8-mCG}!opD-*K`fKW54E&deuQ#a zW^?=m4*)MxCFiuM*pV6RH2*|tZkV`TZFt5H6Y{^0k&Kujn*JTXl36=x?wu} zmidNMF+MKU+teXL-G2ZuP-DR(6ZlDzC0{v@l@_N!7GQPVw^^&}Pel~S<@hnJj#oYW zfZ-#nqiY*shep@wYjMJfopfWF4(~6qh%+_!TSl+aoM$n^c^YYr#u#6m%owN5ZhL)X z1ItQ+dbL3S?C^=9_oYD$y(z%|-c;99YY&ld?75*KlvP`MHq0F@)McrPFg}>sqas*E znLfVctVVA97DLM_H;|$W5<0By>V^(Gob!AUTlu;OxPj|}P5!gnl!GlT>19zFSu;HV zxFl5$UbuUJ#D5rXIuq3ZK;ars1Xb3f{xkveJvXxlY1FLAIgn+(9)p61QU&v?Ql_4b zptogjaGwbZT2p(KafhA;Cuus~KdJTk1ik;|4YmDz;&?CNR}`$d7R63+110f(EoM8V zS6PO&UB5)i=2lTpnFA`H4x4JQ7zBMuLWB<_432Xm*o4t-vV8LvHhp#zw0{km^3B%i zns>^Z`<7FAmq^r#K!WoeKe;Ew{wgHbq8m={=0VAfR_pYsX;k~;dHd}+3)4_;%Qs@5 zHOh)RGm>fT!>UB+{z+`pP!E1|Agw70mSog(i7OZyn|X*Nu+_>~pI01ZR7Bo{9(A9m(6UJ_bAm>#b+?d$S z`!X`1ydgn?;)uv=1pv*5n^Ou<@|f7tS#yqb@w<%-dP literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/badge/golden/priority_pill_high.png b/packages/zeta_flutter/test/src/components/badge/golden/priority_pill_high.png new file mode 100644 index 0000000000000000000000000000000000000000..8a35a727aa9fe9a348e000b929f634d6f13b0660 GIT binary patch literal 3682 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq{?5)5S5QV$R#UXS>5vB@R4HPjTCn)@65uOQ~bhNq!Ek4m$;&o~V}G z+gpk*u4-A}`@gBXY;BX7APbwGPRo)73LRpLBDQcCb$A(bwMZ1b;h#{||Mi#j;nz|7 z?mV|KPygQhxk$`!Z~22qGZtT6&VS}}S&Zs6@#)8ZJ^JLfo{{0e|2u~k{!L!Txas|a zmzDSWR<|%PG9<{E<$hseU^uYVxdG^6Nk$+$MNI$a!(GzH59`<4ynLj8ucGMB&*Sf> zmp+)Czt_6%$H(V0i@)Egz5e6d?)T5lw&%WH`*^wWexF+(zlO(4%{JFRJIA`}&E}6U zpU3B&=nGC?KJV`jW&Xas)pD~-%orH{L{Dcqv23Ys^3QXzllAUx*^=6GnrDKtyS?Ob z|2o^^cRSPPOSSjcm{h-;Y5VvC`|-4MZ|`laon!I!>=N1d>eT;B7%b}^t^WAU`hEV1 zzTIUx^6Khm{A&BO&13W(7#Mau+S9}e^Z^S81H%MC1qKEOH-xv)1ZR5Nxl|;+{bN!6 z>aeGHe1vuVP4<014t;)n=4P?+^St}pO5eonEq``L_I94M_51z#&+h1&-#0n;_t)(u zvOr({<9H~MZ1eGjb8>2GrE}RFE9C6eDmf#f4jqL zjlN$0*P}N#0v-4Nh;{_3!^FbB%iVY(%fQf(edN%sTeo8Vx9|ZCDJR}9ka$D$;Hcne zfZ)#pqbX!Gg^Z>U23Wl}nixhC!)Rh4viUSxcZ?Pnqs0Ze#l=tVqx0)(L}oN90Zm}= MboFyt=akR{026R;z5oCK literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/badge/golden/priority_pill_low.png b/packages/zeta_flutter/test/src/components/badge/golden/priority_pill_low.png new file mode 100644 index 0000000000000000000000000000000000000000..d6714eb0114365d4909c792427a1bbf612768d81 GIT binary patch literal 3869 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefr0P1r;B4q#hkZy{ZHIyl|AtB{AY{h$*ml>PEC8lb(zzfrPoVqicLm+ zUTKVCtW`&xR@?SnEKY)f?EbR_FIuXEWqf0gYU*5)XsovLj@$IGo^9#3tW0ktJmXJ78| zJNw=)+xhzK`?RDQen z|H7WHe<)4>=tDhgab+VK<|8C7!o3i)MpC7#a?&b+;MurB} zLNkYbpAY@3toZ+U`j#iNzt<-2+wppz>wREQ>CC)3b7pv-{A^qQ_q(5{R?oXXRA`Tq|WfBwF;{>+&(?A!JOefB0i zy)-q|nICANUi@r68QY3;+|Q%Ua_8M%x4SU*Fpy;@t-#K=--f+UZVvyx$Ip1J#TXcN z>{-F`d=GER67669H zA+cZDpC{+fiF;xNRDN>JyQhM z|F=7e%i{L$`(GDxM)!K|eE;`5iWS`%85mAyUXEV3C+nN-hYK|?I@h1MH9P-I=jG*T z|5xviz5W5jN=y4JI{Vr0`86rq;wrDQ&F5xdh&dN_?b@|-XU^0--YI`}`utnfp5FWF z&cCaC(&w-9%M9eSIlL2Q&V0XbL;bfuZ#peEmKDVwz8Ly)AC{MRQ;%ct5gddU8MR-|LA# ze?Am{F24S6U0vyqrIy8M&kn!eRr>DUzGAywwa@Pqz2*J86=-bg+a^Y!whbAp|G#Di zhRlC?CKd*U6CA)0R8V#R3iL1leQq==I2s_MiD5J&jFt?erQ&FfFj^aq)`p|C;b?6* e#A?IO`XBcn;(U2Z`XI22%i!ti=d#Wzp$P!|+a=`y literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/badge/golden/priority_pill_medium.png b/packages/zeta_flutter/test/src/components/badge/golden/priority_pill_medium.png new file mode 100644 index 0000000000000000000000000000000000000000..19b10876fb280f0685ba4572261cd5252748c94e GIT binary patch literal 4055 zcmeHJ`BT$J6kmjLb+~4P4CP2#nc5iTEZn<+2NC*N$X&KvU zhf5@>ojQz_I~+nJA;SO)-;k+k4G_*C0g3@R1B93^?GODI`a|}Yo!$3#_VYgPz5VRB z*RF$?gI^nzq7bcWIVw5=?Ec2vF z0Bmj%g94%o?yF~K$LEt>2DhX-1v>|k+;E#NM~oj`d$~RM@havv#`1EgV;wiNau;1r zO|a8h*nPJ^yxTeP!AENW7m4C_H?Km6SikZ$?8ruuX2806>VEj^MTu*Cn{4w3>7Fl} z5+_<0boKWaQs>0eM+lh{*T5qPu;Bzo(!QF+L)l~^2$HNo@pqJ0D7tTIR;thn0#BI1 zypA1^c>%Bx*t1JF%1ZiRZLqpm1>8q0_mCD)*uv|k#563VQF zQD+`iwK(50G2oBKao)<0h*kqfFP8f>6oslL?i|01+8=KZ08ZX$i}7b=&^D$89P5^W zrRU9zZd!7>>kOZqEu=3;&D%kzaAy>zh$F(1*sFg|;kx&6DIH!r3tSg|szxQdU<*B( zT(nIik@{F39?evD4UZmcaPqh!jr1oeZ{`aRi2k^Yua!AS+Z4nTJ=-h;*ysK6Sr@Pp-Pzal&8s zq;_{YPhg)q7G~zH3JGs(+@b+c!j~(fIcvWxcO>bF8c0sQ4|Fl<(vKKq@wNQnvF?+bq{=XP=7fWSFNk>;lBRX{)8DC{Vh@iwlG5Z8%YBQN@&7__KQEb~ z$bwT@4|0m>3P+ML^cI|#BCNxEaz+5Ruvk4=7Hyq{gzKLaMtnx{p&s`J)77!uhBn_F zfjh)Bm6cAT?X4n6j;2MLD%5QHbkTRaJlaoEt3A@DXw2fo5CW>7tWn1IQe-on@$Y4L zR=Vm|45QKpfCQC<6e!wTI=AyiU5mV|ei-Tc^yF;c(%r)`kB~MPjobxax~J!|irLwm zH2v|~@|m-r?*0{4yJFTGN8nASuRzcRLoue$5aiD7dNVGLFn@R`p3+Q@#OPj`;2G{J zC-3ZrHg^8FyLQzFfHxoJIAQes9>1M+kxM<=pMUYc-gxTjR+~ja?D1HM6*|7&lSNJT zqb+YYPwv8go*NOEn!}jals}&a;72=1;ib<@puy1yW+2G~+6hdU1G7Y+e4HlFfPZ#C489uF8kkV}H~rFD_5c6? literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/badge/golden/status_label_custom.png b/packages/zeta_flutter/test/src/components/badge/golden/status_label_custom.png new file mode 100644 index 0000000000000000000000000000000000000000..7a037c83cfbaf5fd7b869fc066b46a7cabb874ab GIT binary patch literal 4680 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 literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/banner/golden/banner_positive.png b/packages/zeta_flutter/test/src/components/banner/golden/banner_positive.png new file mode 100644 index 0000000000000000000000000000000000000000..add866e275d6560f4f7a0cba613b9a8eda3f077b GIT binary patch literal 3567 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sA;CBi(^Q|oVRxkyFr%EVc;?KW3H|5&p z{r$&YoB#JU;$~ndyBPER`DE4;XV0(ez5niy#mP0|>-&y>o?Ndsla+yCcgDKk#o-$m z7#eyQfQ~Vm9DA_p{@(O{yB{;2-Ck{eO#XZQ-7CPLOL%@Zwf-Fo3j@Q6oHr~feBZ>y zkKJv)t!-bQxKX0|wBf(_d6jjp?)v|w^3UB{_hrrd?RUTPGi=~|Zsovd_qXOx-H+4T zrf{h6lb%7 literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/banner/golden/banner_primary.png b/packages/zeta_flutter/test/src/components/banner/golden/banner_primary.png new file mode 100644 index 0000000000000000000000000000000000000000..654b39a8717677dab4b5cf559270abd87c7f1cfd GIT binary patch literal 3545 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sHxf0#WAE}&fB|&>wE%b4m>nwtLzjI>TJs>k#f>$IL9R-Bq|*c-4L|; z@@*z=fwBe4TAaNu$3D-CJ38BX|IW(KwSWIUe{%2HpQ3XqVvk==Kg`I$AYifaEi2Hf z-Odd_Qj(F0fgy#3gMnd!paKJfgBxjrGbac0S`}9r%H6#+JLTGHe*5G7S0AcuW?)DV zKU-RF7ugWAe~Zld_w#3_T>E`~|FPZvzbBtzVrYmpx&C*jb_C46nJ3pJ{C#`x^!xuc zKE=;Zo&5Ohwe%_vh;pfM!6#ysxxD zMkc44bm+p5*gJ_cJ3Mty3wFhfEALXiD5J`j3x#KSoJxY7)BGr pXksATjwP`{KU&M66)ZFDC#IGsFL8YG1en?wJYD@<);T3K0RTy7Gw=Wa literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/banner/golden/banner_warning.png b/packages/zeta_flutter/test/src/components/banner/golden/banner_warning.png new file mode 100644 index 0000000000000000000000000000000000000000..f825b727912bd8396a4afcf0af2d7f3076948215 GIT binary patch literal 3568 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sA-m`i(^Q|oVRxkv!{m39C$c+$y$x3<^T?*T^&xlOE#ov-2KIBRaV@w zqf`D+;2(~<<_Gh9H9Y<@wd$R{;99^j#Yy>OX?fSq_kZtBzw>b17q7bZJ^G#zSV;`RehvW!1_fmYVCeKPFv1)K7Tmn)Kl7&FAGQ}h zK6kkI@7t~U@7HEYGB6zI`Sx6!d%|sd+sLaK3=9vrLGI)N`fS2XJqNMnlY3{CfW0~M z-FfxhO{Fzo@?`A(rmZRj>J)mm%f6hI8|Wpl1;sm=pS;PrtDP`2|G{tF^VTd3X=$$$ z>UFN|1;$K*am+hmpxY9{D2ykB_O#beo}_Gi=L(GM*#|i(i+zNtWF?+a?F!`PyV0N< z4LV>BCbhU8O*W&+W;EGQ-s~C8N2B>@G#`zyeDsrLqg(y!^(@+Yz^G^NboFyt=akR{ E0RMGBD*ylh literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/button/golden/button_disabled.png b/packages/zeta_flutter/test/src/components/button/golden/button_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..a67a5d91552b9c194cfc08804525200276704420 GIT binary patch literal 4235 zcmeHJ=~I(u5Z@4Lq7GNJawdT7zy}>@6ah&fs3@fhIMxd4Kq#?LDh<-mgexI{Hnw7b z9-zR$IJ7V$cQcaU3qflW)DTc9Vj$rPhe$&L5lBExU)t&S{sDPDJl8zO?r- zABYG$bUL$2t40Lpdoa9-2~T!;PU!`C=;NJ-zTb&i+A?=)stxqKkbl_pfC_RbE(_STbXqBRL^PV!pm4X-X6XiXE+mh9J( z5JGv3NVCEUe$K9}Cpc4nlO~3g@o}1|sW0}J{7bcHS z883AP1{0Z{R#39`2pou%WTDc@TV9*ay1R2XKq2Tun@+5ZTpagxYD>B(wTW=qi9RiVdAb=avlld?6ou?#^WjHZ)hPL+z4uCjP73t5!LjH%Y8 zEJS_ddYWB=xZdRFTB+SQk|I(Ilvq|!b`~qh*3NE$voSqAD3-*j*Vp)hJW`~Ffv893 zsYdfEzUEec2th=$qeEr`%}lH@&tA)+BbUC?(CfS(bq%WZ?dY~eDhXxeZI{-^U-}jkT8(Dw~i!>ZE9lk&7yN^n}&BWKpe_o ziW+dOuA&hz~3-8`7NYw0-9&m4bP$-q~QIHx>$ZHEZ#h8%TaQ;71 zq@3G3L!a=$cYf|)*@3kJ{X_((D} zzM7!RaRTUnwu;%ONYV_-f7}pk2?5`JL5~V^8FiOQoUl0eWm!ZpF)NjN7l!9(8%roQQAt#L;2X~1rLS0I__OIfvs5|a{~ z=|u>l5R2~;P*-|z_6h|juYIsMnR?K+Y8eA1*)8Z*6avSX0L`oH=|3~L-z3qCG#Zqh zUr&`B0$#A`C}yb}WnMZ*=z_+KR5sG4UXU?FJG^r3>r(vdlzwP$Ydb^F$_NzvwXg+R z*{inp06f~`c;vshtN;K2 literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/button/golden/button_negative.png b/packages/zeta_flutter/test/src/components/button/golden/button_negative.png new file mode 100644 index 0000000000000000000000000000000000000000..aa1c9bb9f3f0a25f7cc7aef2e0cca88af9c3a986 GIT binary patch literal 3976 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq~!1)5S5QV$R#U_8s@i8ION_|JmlG>GUn0ye6hwmWuisc62OoZdbbH zD&xW~D7z%~$g5S|&CZSjf?bn4^seb$T$*ylu|&XYX=q^bWicHoC8wO(5tHp+K9y-& zAoe)c=iYwx>({ySEbIQvJ6~LWc<=oB{Wptt-jM-1r19q!W(I}^bACo928I+C4hDt^ zf(i@_4sH!VNlAp@&9C$C@A&ZK^5Z+-`+A?gpD!)$KSxG7J#JQ-q;~ec|I;>>eK~QX z_RGD()9UtS*W`E9zw%^YxTBEve~-Y!XRX(d#moOZR`K&(6atv7x4>G=P7e|}yDS+LLGt6W~d?sxmLWq!R|ocx#hyRR)P zP@S24a!>K`c>?l(;^XQ+_CLX?&7a@N z@7wK7zVa|IgkAY_=drzre2j7W{?9+I2s1E5Bz}InzRvn9TiJxCo6q~(GJ;J1&aZs^ z(oyk$4}z~SF#K5mYaXJANh-TTm~<$s!;eD?eL_t(yw&5r$d z>sYmy+4*>h&0lS!_jmqG%89%6OZm-u``>?deEFmuZC7{wZh7y|X#U*V^GSwg+dp^w zzkj}eV|nfC=l7rey=zlncjnsmx__&G&efe?b?kQ=1H%rjaGnWAAKpH`aK6m`bdM!D*qEQIy~`}Vw)D)mx3@oilwR)Fe^j;|XjbmM z`)~i*tUvZr`MoqyH2(T+pv%)|`P%|xw&Jq@wphj*^$5Y4H#-Y&Kf9uQBl2D4$C(=~ zYBIpVu5ccdSZ4lw^zHVtdk6T8qVF3&+x~8T6)^E@XVqPZwyPauT_U`5P4*G3~==nSU@0lyw;JCT_zT&pUkE!~8dz)n+ z9C$7-6?ci9;lR{0(@sBqcH@Rb{jT@QkGIDEOM7K|XF=Kizw-*82ir@1o()YVWj~WE z#JdZRpYQ9B-v6c5P^^2Ud7<*mv&S0SqMJv#mf=#u|0KN&0he{^WFe}8emtn_K& z^S#~beto^h`o7!yrkd2BZru3ooO1Hp7keK+^RFpcV_)$9%4DFc9rq|Y06o17xo-#S`O@^F)(<#`njxgN@xNAcvn@| literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/button/golden/button_outline.png b/packages/zeta_flutter/test/src/components/button/golden/button_outline.png new file mode 100644 index 0000000000000000000000000000000000000000..0df379a103b106ce5d0a1202ac13e4627012f501 GIT binary patch literal 4180 zcmeHKYfO_@7(OlN8Wd6IKonXW)0(JUbUKiWh#)d6DjE>6pevV|8nBkNU9i-)&{8I|9}p~=vQ}wrp&zuOmbR4EDh=H?5|=ESOZIa~-#>58lbmys z=W;IR_hqE{`>pT;0QjfxO34JkCkz1eAORP`i9WB>c%om>*1$2Qr2n< z_7x083=iE(T`JqYbNcSSkG~AxfL?Vo`SbQQ;mPe`KSVza&M(>t#ZmKfKT3|6)=g03 z2kfty97}>}z0$wLb(M>*VcEE+A?$?CXfCsm-2L=K;b2*am~kxR zi9DtxK^$MwRdHNZ4}eiM_8V&I!Av$3fXfMO_H^qgJ(|l3At&;?>Pnt~h}lGQ4>?^u zqe5HnsKe&aH-+H3j7=2vIpxYq4qm{W52EO6$YipnzOO**x<-Nxb{;%~%L(S>t=&2z zlv?{$u7PU2;yOc(?bfehjpPy_JQ#}{&YnZVT}f! z%ylX&{6P1S#>BVNMwf2KZCIztDw54JDnuoclWxOLWLVAAH#nAo8p%f4%=H5>tTqRi zCg|1t5yx<6d~maLRBAKp`R|sYl##TI@u@rXZmndZf86%VlI9u!q)Q&-StnRm`KMNI zknUIKw|%+@r&)1z@}NJkcI?SN@@xf%D2{p=8bx=m-=pZ~_Qjma{2G~-7vVK(X#(r7iRmNQQmRYNAxJ!rXxM4*4aefNU;wl0Ybw!gfpAss(< z7q({;+oQ6auiQb57cOJW+bLx!+|jmKVTi!WseyQST2X?PM_;Bk{#hZAMqEc?tHs%U^W}F!iwbQk2VGuVi7@uKw`&(tA);cy(R1BHqRy#+* z_J})>4fEQgxK+ofkf~I9s@y%4VgDU$B+ly{8!$g&gJUVEc@tgzy6^(pmp1Y%lg}nc z<~KPO&iM*{OI5J3IiZo)bX-SZ!%E(kd(daN_}Iki9*Ka922t6!vhNTevn7tMovkMc zbZ9C}-4+*}=yHxzteJW_8Zg4=!a=ID&04UyKST;h?ARC~=}r||59c8UqwDBj#Jkx- z%5%Xw(%_?lxlr~qcf&vLl@%VL_8AyzVj7f7i9<9k)49 zoV=o}Ngl7TSeD@ch_mVUCe6a5Ju6}E4ju%jZGlLGC3U7$OtIur!eh#a;SA-d#~^l$ zOo`vTXvx`&1`WBM4-s8~Co;l`w108+KU&=jCjB-0UP8Qt{CN?0&EPeI*9`A_CVA80 lO@}uf-gNx^1NHwu8SJHHtRTYWhG;TCDm^tLg`a%1_II&H-_Za7 literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/button/golden/button_outline_subtle.png b/packages/zeta_flutter/test/src/components/button/golden/button_outline_subtle.png new file mode 100644 index 0000000000000000000000000000000000000000..bb063b53404d7769584b07e60ddb8ea41cfb3ebf GIT binary patch literal 3564 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sA-y~i(^Q|oVT|&<|(I2I9$B{_@>SV!HKT^jT#ygDwwUfhnwr|m z86q!cnMWoG%?`iOv-i52jSAhGE6KC3@11Q7#I|c z?QP~&v+l_GyhZ-C=W1q#IfrbHN!)(>cIWqo?kzX(RQPi+6gc&TF)%o|H2}3rGBPnR zq_A)>Fia3sz$KVgcdnhk{qT)@`(kT09)4&LmfW*3O7~yi*DX^1zYl+s{q}p~tZC)f zr(e%McJ=D&qo2#mzdt^FIPc@1jla)dHj(@Odvomn7thO^?q3L>J$s{7k{mj$MWB=>fIIp zUcI_{yJNn{P{We(0Tj67W;nu*}VB31H*@)pWI@2 zy+pj{pG7im`c+b0^M`Nxh9m!P{LG)v%fJw~>FVy^cN2H-wf!zvFwt!G>_XH2jq~>C zurOG#F4qD^gR%nyLqiV(BLjmGB5rUCo_Tfm@4JF`st+ceyfz_9#L3M=7gBHmAvu4cn%?ikG-qq$==cM#dj e7}(g1ZPpZ39AI58VYTx6pzXezxF7zQznAp&l;*m+o*7lLlL>%)1}MF$TOi{>QUK{O!bg*Qnzml3txw+^autZ?r;@6Zsyo*)pf-y{>3)KNtK}q z@*@-x2}ODy=T?s3aNBU!wD5JWQM88-5ekMk5>#^?O=$;qg5aK21u@<>TWwKE>vRFd zv4x6gVfoqROlCaA$4#XU>-6jAy=G?{Hyg+j1fX!@SV+$2g1tYj|x0`Q<q$`E?ncC%iwOB*=-gh(Yn8LP;;Z7hXZ2<-EU53EOb^z4`+UXN@wl& zb9ldxvES42g%o}{Ti_I(9w%ZrjkPA3nk>nYCDlLY+ZMw+l zl-~*!oL?P#DTubY;q8xlQY%}~Fl-iyr~_*$(HV<>T%YM)nR3${99{a&z-6e-)Lx=bdi+mU1t&CVSdDT zP3Y=d7u{|cRVm|pp4r#C-i26J*0&QZmPFYqb6~>x??E^La0Z12pz)J`Ip_O)RLE%0)6? z=FsQ?Ezg~Zy-<6NI3Q?&F1yH?MT?u>jvCx>qxAAE~di7r(O#ff&$*> z@gPUwoF8+}DBQ@@TqUIvipw{Z4<;X-iiEhkK%5$52Se~f24ly^fjVqgj1SRs7(bx1 zBOs1|{I}pa7~)`vgCXxrP{)Vzk^0CX7Y?~_$i@F%F4PK-FyxC&FI*v9M1$mSQWHDl HPuKhdW+$N1 literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/button/golden/button_primary.png b/packages/zeta_flutter/test/src/components/button/golden/button_primary.png new file mode 100644 index 0000000000000000000000000000000000000000..ef7bfce4b6bc08cf396139cda852a2ebf7ebefa8 GIT binary patch literal 3977 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq~!H)5S5QV$R#U=ey^W%O3dn{>+=S&1!2qy^>foGx*#tXmH%>X4QTa z>nflh*HZBzXwMgghz}}Cacjk01&-P~1h8}~2-Z)COIj*-$$87gfF-lu_?4C0ge;9> zKKt&8?dfMw%&hJYXAO?*6Z%wkTlP~sdVV#w-3isVl1qs#m}wj^^dR-&Y!D}GcZ^LExZ5w?zbD8&&&KncI41H5xPJL~?dLAR++UGjHEDRB=R!Zya*lmCB&ezqzNbxrLdwbf~@B;JQ)ya2$ zv@M2P)w;bUM(Vc}q4m=L*py7~I^$9|mnnf%-CW{%adl%9>n4WhcYt-CjF-1fhI z#l0E58*3YK^~2Y_@3G&%=Rg04cbhkV{1&{qR=z&R?ARZM&-eFjmYDr|_3pacCAu`|H;E z_oe**ez~@<|Nk|0IVth;cQ2>@*JtPL5dXi={M@`d|5+_we4YJX@7Tth|DMOUeXsw# z^y8m+Q4WR!S`kgGFi!}=<5rT9iFCo8%NcIo-d*3kC$9VGqlDw~KmM$?{da)R>VKC1 zev$Tv)jSLz7R>5VUnk#I?PRfKo$b$Mh3^#kxfvOz9gGzPh9ScGnJ;fnmSTCAR$Oc3 zCp&*l6%Rv$a&pzj+-z|4eBV=QW_Fzw==e=O`txS5tzxs-!eYg6pvc$$d*kEBGuRrh z&+t9|;}3iPda%yas(-qhKR)fB7XeBLH4iVIE&Mn~9q8B7CbG#r>UMi9@1?Kg{Bzv; zzKwMJ&l}QVkmMu#KPv0fnWg4^`nKCF)9OUJ*>9v69b4+&-ydK9@rp&|nP sakNGltqn(O!_nGsv^FH8HvA*(HS0pcqG<65V1t{%)78&qol`;+06Se_oB#j- literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/button/golden/button_secondary.png b/packages/zeta_flutter/test/src/components/button/golden/button_secondary.png new file mode 100644 index 0000000000000000000000000000000000000000..dd0d0f2ea813727be5d3a33aa9d107840e54e54d GIT binary patch literal 4072 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 literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/chat_item/golden/chat_item_custom_slidable_buttons.png b/packages/zeta_flutter/test/src/components/chat_item/golden/chat_item_custom_slidable_buttons.png new file mode 100644 index 0000000000000000000000000000000000000000..0ec5a87a42940480b24e6ce8ee3278ca729f44e6 GIT binary patch literal 3035 zcmeHJe^AnA82@6;G}N+gj&e#_*fvvRXUk5(&F~zV+B&iyoT5XamS#o-iK2Pt)CtVk zNldi0eow{xm4yn526sb2&J8tP_@khSNQR0Ih<$hd({5Y)XMgQ{@7{af_j%sC_jy0h z^LgH<t3T{?YBC$9Z zaOAk876SnE5*G6bjxI3%qTnQ@`E<_SK5{(y##>Kyi1N})MTM7w4!AiLKV423b#bfGt!hab z6LB?>tTdw~6fe6jSM?NS(CPL1HJw>soIk%17{SQa&e11kIwt$MR{3N_k0JJ*xWjKw?^`9UkFwyn!Mj2_H{}Qyf8sy z7(D%Dk%LoXPw?Dh{_3ud*3w;_Y7Z3kJKvPgcb=;wd4yN@epmvEASngk+c>ayx%Od({8pA=Z{nF16S?*cFw7~tpU26%$zV$hsQL;;<% zxYw`(%Nk~9<&K5> z5;mZ84$Dfm^XL3_HtP zUcN2bE7z7cn7%ohy_3lqhzrX|A8t%j%i-u8dbnkDqWhkJ5~>$aWFo4eqM6i^;pmJa z${!JqsZp=yhwPJgqfLow)Cc&8Z1oUxvIX=`VX>#QpR?qGOBgY|-BwzYki(@-TwCJ^ zk3&%zC}$gCFo|X#YBiNd!6gg}SvEJ9S#icjme0*4euaKj09C>{Xi@VHC*xyk*O0`a zj)Lb|jjb$2P)Dj-?wGw8!8#>8W@{qxC?1??#+d`Lv4JPuaibfTVeEmEAhnQnw&}-d z+HRDgAfCm^GwS6zx3Di&!HJS-#)BP%3&V6rFf+TCeB90S=AiWOsGZ2OgLCx>DLiJX)GpDaz>Cw*>aRmI`IKPs z>2{ia2e0M)RGE)FryAR2FAC;xgRDJ`n$zg|Hm0B3J!e6K`Er&_88e0S*I;>s@Hmle zBD)M>&I$oAUh{E_FUALD7O`UzAz2(99fc9g<_$c}Z_k9@#Inp>v#f!ts6f9Jo2Rh$#%888KBpbdgoNz_4v^7!r4bELd(;4^6c}2f8@Z> zy_CZmmZMK3*sV0xC0K0Faka6KCu_@7C%=oLxvSQGy|!zaKmdiVZ3G*JG=wOq8_e==0+lXh%Cpz~&{J z83P+T5r*!#z0BDA#)t3o(>7#`P`H`BPVCIgSF&29jQ$^%8WM>FlH2K@{r?m3|N6WY w^S_tN71aLr7g>R21(w&Eij{QuKcs^LvgK$-I^naHQm{b>uu*XsVPtZ_?`|IcsQ>@~ literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/chat_item/golden/chat_item_default.png b/packages/zeta_flutter/test/src/components/chat_item/golden/chat_item_default.png new file mode 100644 index 0000000000000000000000000000000000000000..9e32f64479c16329fbddaa97dff153b2a2e09584 GIT binary patch literal 3899 zcmeH~>r>JR7sr2;nTD?Gv(IR&rS;U4yIBtv7Ucz>$~4o&YbYAHS(=)c)&K;0bLPyP`OKL) zcl`al%(vKV0RX_<`?NUwgW(Fy;NZ7OYK%oIdtC0$7J=5zjIyoJ~5Gnb3 zg6v%aaE@2%k;-?ft8+uoMKdP42@FETJD~dB4X@OradE^34v2jvqnmada~l+D4$e^v zc@3VU(E-K9AD+nQn&S{>WJjZjt_TW~2<-3PRU@*nE zp7J1wdy%hvs4*o7f`M*pqcf!_TU%SYwss#}m*b-u;jsM~5qeoc`bsfTqutdf%hk)D z%agPBB<4_$pw6jnSDdK~H%<_SNTR?OEf_+3DKpHTJbb#7umPtsfpzZ2na`u@Z;i^a zE-4a3`m*7MzNn0~%w%Rweqk=xCN_Q@D-ybyl*wE>$h*=e-^R$_-a#N(hDF&5Si=t@ zLp3vaiAF`x_V>}-ujwRs0kq3?@Pe;92H~dpT2;8xeTzhcYkTs1S%!Dn)`|`pQO5ry zGV4&!kCMYW$a?u=gVcsgz_u=J9I>DP8=2@LASq z#e@T<(DQ*aKS^{O@2)SyYTu}=Z(I%1IFQM;%i2aI!63>N5);$Q)7P{}S) zQ7+lp0wFS2mzE2e$PZO1ZF*W#Lgy=0gryYy+xzpV-wtjVy1lFj46;w1$)7u5^|^-; zQ5`g1!MT>)&!v=ml~?$c=qWa^>}D%hyS#WO8-ZT0e^cMD(8$FWEQ&ty{D#oIWZe*s zmHJB>3E`9%9fIzrD?8{+m%ODsLT!eiE2qfl+|qV6N5rC!~U$}YWKf!DZiRi_^sfn;>Vo!Iw*>b zN!~d0{)n;kCaiDb+bQ&BDWo|H$8ks=B}_jnR4iE6kgQU~Gw8_?a7;}aIPfJ_i7}I< zgmX$=`{N3Il%+o=2E=V2sfZiXfgI?cAA+nVW-;@D8OvY{N~}dMOWYsDFRhJ^K2|EE zl;851kIao#njw>nEeb2CKULNP?7 zJuMwmo25R@l&2D^(NHLSR_tKa#KM>AKc1+6DOB)d?440MvfMrH1}Xa5sWm29@i!rV zr)R%m^YE1CYYE z>~=TfEAot}yHSNOvS6pdv$E6++pk9f1%*ZG!$aw_#pm0KvbrpW2T)ztk!k4XAEP!8 z566<73HgXF`ivNKGF&0hy6g)UyXE&#zQb{Xq_SGj>4}mZ&pL6mU+YyyNIylv}DXzc-??OvMG5ccO zm9qZ+st1%(X}P83;Z2t|;Yt|2SN3|E)w6fItU7uj;z=|M(Ew|My?Yh14GL@?^u2^q zFwot?0X6{)XvMx3if=dn8JRrxb9EDNGme{-Ds(r76LXSY*4=M_Z z^Muo*9o8<7+Lo>o}X)kM=*=)4Ma_>gE$Tknp$($o7+p*munh4$( zCJei=wq07y%Pk#DSs6Gu1iRz=w^K-XTfpJY3-~?-E-s@Rwzw(sk}~Z&B>s`N z^6n!W*xAme4!;14VIjBhksraW zum6^P02un_3jyu$xW2CS9jr63&cHeY>kRz=Fz|&8khs!=4RcLrRv%!%`;?zY&56k0 F{|nM^H#PtO literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/chat_item/golden/chat_item_highlighted.png b/packages/zeta_flutter/test/src/components/chat_item/golden/chat_item_highlighted.png new file mode 100644 index 0000000000000000000000000000000000000000..a9743dd6b747e41d38ebbcd7eed224f7874dcd0a GIT binary patch literal 4009 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 D0odZV literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/chat_item/golden/chat_item_slidable_actions.png b/packages/zeta_flutter/test/src/components/chat_item/golden/chat_item_slidable_actions.png new file mode 100644 index 0000000000000000000000000000000000000000..797a78f24e97b0068a080388e735bd8582c63cae GIT binary patch literal 3424 zcmeHKeNfVA9{+i6hP7s$SGl%o=ic7Sl&P^;>MG?bq{mHWqZDqlBB>MNb0(kf{1`1BEtQgcINJ8ZszW<`^)dlXFkvK zndkd`X1??JJ~K~QDhlbdAz%Xl06s~F5{>|X$0Udeh!?2b*rwov54+ zPCKU8U7e?-ppwOC^djSZ@$`)Q_V_(%JM*>EJrqU4fU)jic6N5K*zoe2MmL~|)>X!m zVCQ!3RX$L3KgdrTKT5E7m*F+z_CC5@0apx#qbWZ?@2?j36ngAymS-Lg z+V5ZY%~p{9*aLhK(gSS%Z+Ko81pJzjp3Xc$DNxz9sftM^Rg8GTo2pR^ZO?=?5y#9w zcUya7Hd1;10iO=16_DyuD5z7QmBZSC#rW5>C=mv{3_rdO(CEhiIcboxG~v%mjP z_tF{5_%Y~G04m1NmQQ4llY1zR3uz52vN54aN9JcTiVIYS{(e#2r7m=JL=mRs(zuMr zB4;6LRqg$&+O$-^s@7DE&TmA%I$!zaR3w?_S9GxirP}YD_M_$6$phxW<4X!#;G6H4tZ>e>2kM`>>@Sb^?HG0f9?x;!aj~<}442CWU%Y7ejRx zJ&NBWUi<@8ay91eE2woM4Svg7haWgim%yfoot`_obdU6?+pChkh7b!%$zFTDQ~17s z>Y=d5&|m7V*8WexrG_a@!}BZ16JKdqJpt4lePV{rc&X(5STCU7+w(vb#PdMuzo7p! zhd$T-yFHy8oghp$E7_$QvVG9}y3yjLyMewF%U!lLAB)vn+HSGqRG1op{+67%j570` zm)Sy5eR9X(w4{7lDRX={WQMPIx4!ym(G>w*$*Io(!4Be{wu+2Amlawbo)){3!Ed@m zWK`r)qXU5WX!6nw$#^L|DhijDW-yG9Extu#seLs1GaUuE`von|GD~eWAIRorhon5M z_0RGreq9lGC2THNaD8uNOStk-UBHfv&BQN>J@4`}nF3v3@(89)h;*4#+O>?+jEbAq z{$wQ2aLt{@8XR@AaLSL{_BEoU{ed|2%^(||)*!&? z2kG;0%d;mm%$u3l#T3#`-Ao_N6**A1T;*E>`C$4_lJ?d20i=*YCv~!FU;z@!m1p{7 zQWD>s^}4sedRTxcQN$EyuPPwXX2IIH>*lSWz42GseN4@PBKi>#xK7#U9!CXsYB zN4c{bvZOq2Wb>RrWkV|;y@!GA4SI+ALT4!8A8rccX++15Xd-vJetf-Ml!eiOujU&Ux?@Pu!^k&sSc#}W7i(so7%^S&B^MBZ8U{0q>;_1Kwkc@1klSo6S|2i82W g=7Im82Y!|wn`E(jD)+q&{*r*CL{x$>{*%xC0e-vq=l}o! literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/chat_item/golden/chat_item_small_screen_slidable_button.png b/packages/zeta_flutter/test/src/components/chat_item/golden/chat_item_small_screen_slidable_button.png new file mode 100644 index 0000000000000000000000000000000000000000..deaef5ad434a32f45137defd7a2328d4ce277e3f GIT binary patch literal 2953 zcmeHJTTl{M7{;u0v+QDpkxILj&2D+=VwQ=N)|x5SnwpAABL=QFDiRSBx63w?sW~-^ z242e>Hw9A^yri|5rI;DwB`{-L5(V=@B&aMt>_ZQ2%|7izXXc-C&VOdk%>Vu0_svf_ z1!x5T09fU9{HPxQV06e3Z%mgPG6UP6?KEsgSU*p9083~!YPc-Lx_kMX8rEgg z$TR@JY_HeRBmQ`*QUbpfy3D$5QXkvT8jRz@;juf{9615M?SJ^x=@q2V*!7OlY3s6Y zA1+=R2l~ZkWuR`$T93OwO|IMez2JHJHn%OdH*@fhfsQ9uGUHMl*PrmSmvBl{IKC|1 z5)DL#Sqg;#=UbQ>wV(0n{v1pT=TdM~D3fn&OH z!^p7|+J-R{wU$QXjb-b`JhSwrIH<SqNl?u?yWUst%_pid)Dj!Y4wB`n6nDKIy3sy>k*Wf3NGn z8Fj`=acgz2hy#ZPr?cu9Aw5Wq*hH&n6Wc|_x7t*lzaWC8<}iluxLnhWA|&uc{Ukc0 zQ)DJY)RYpFmCBkzk!B*Ht(3MuW$Y}3hv9Vh|HZQdn)jYzSt){?>nAD*Z{GQj2<>X>~?b6<2ch?aKKxmB-9bP7_|7q&|M3lMifW3S1ESKr$#Z%Z^07OmN3iL zGnt?!Esdqr_qB8rP`bRZLA^JKB-zdlu!EE&>%b`y3j)B~(jV2!vc=VUB`4qMeQWiesVS@sKAf6j68^BL#2QKtyR7>5|vOF5CHWoyCE;jFo z9#ms;EFAJs4?}7$wgJ(Nvu^}u;i3zfV(Led+JQ!pcfw9~Q>3mOPHp&$MhB1FuKksp z%R9$VK>nrYwM53~+69a~^2%c8qPF2qhb=^R#!obRDRGIK)JxGEzDd;6ZsfGg5*7u9 z42&3Gnk8!ypn5b{Hg22g0^L<7GlpfoxI<(oH-r@Q56xIYe$}sn#~6ZQBin%8WcCF< zd|LBYu_$LP|H?3G`KXieV`b(@_LZVVntB_!S#piJc--0}3>c~cj!(XW^CD5>fsDB3 zx$4oXh&cJwy>oO5s6@^{5dGv+Br_1DM9c`5Cb6_#uJ_r&g!Wc7+8`PM^Rz)U9vkgh zE_#7*dfzMPDY!5hgWRjW$z{4U+Nbo~$V?!!f`jA*m)#e$iwb_xDon(AV|Y#4KX%2( zmWJ=XIJP6Yr8aJ`Rxf|HA!e{fOT}3ah-oBtAS~0_`AukbWCGu}u`Ucer(%cT209WS zQBEG>Zgj9>7&~P47EJ#`^>SmUV-4rO&b=j1&NjPiQ zmn?Z!9S`4rHkB^rOkL-Vylv68j-;bprOpixZb-THnUL8_HErhNS7ykJj)TBO3wxBb zS@EPYwc-YgkXU1DYdeQBn$Fh?mV8dM|Dj3$?gHOF{7Sq02Glp8zNzwS28;ilQm&^i ZNiRHpa0gq2F^tmyuVcPPS?*`A{td3*$2I@} literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/checkbox/golden/checkbox_disabled.png b/packages/zeta_flutter/test/src/components/checkbox/golden/checkbox_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..ff6fa70480a3524b1bf63aeb90b92afe09b68bee GIT binary patch literal 3574 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sA++xi(^Q|oVRzqyJbQp8XjK0D|{)@>Je*iif+^N`|pk|tv}4&(ZMZv zEZf9(;qvE~*15a+@E(2b^T}rSB8%s%-*T6(68ru4p8?Qlrqlm_GcqtVTyJLpQbtTH z3=AhY1Q-|;lpTPgJp=@0?xtOQ_ogPtzx?r|M@2ERe3P%~iFX&4Y>}G%_-llHO~LGs z3=9Wsx88XFeKJ>4d6`{Z{kFNOKW^vexo|Kr>~T}u-?Y{C?pd>%b9;fd?au$C9U(q_ z`t^1Gbw6`!etzAqzxCVYetQ}Jd$rHwzcVo~#N|$Ae)8(oFX`ypZ@WLfIsaULYuWDF zLS2V{JH;6oK4k5_s`zF0o{tsAc0XS+DKsP+FS72apaBlzxg(M@;h7=Z{-~>UCVA{6z33LDadHv(fXZ^fA-*h&{+lF zefcIVzM8e|Vevaw28KJelbKVB_sq-v@mLb%r+52KwqH0dkqiu-ZOeBT))iX*JRN@e zX_Cy^u;k)BabP0l+XkK<77dg literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/checkbox/golden/checkbox_enabled.png b/packages/zeta_flutter/test/src/components/checkbox/golden/checkbox_enabled.png new file mode 100644 index 0000000000000000000000000000000000000000..88a469031562d27fed56f59dced5f33d86f56888 GIT binary patch literal 3616 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sOglai(^Q|oVR!Fv*SV;4m|w4P0>tJM|5#BUtZur&pWdZF3fu*E@0oH z8eO=uE8eM`eWD+qV7ad_Ex>t0TF-v+v&wC!YtLJj|NS_x_fq}untpUiEWMpDsNMYe%V3;6?UvTEu$vnTx>ZRiU6x6?w zw~;EBx0z}B?bFh$6`!AOE&TiHSjGFVUnlGEGce2vT%9>9P4vjx+m|c;pRVrK`FFPc ze1GGyedS8qt) zm+f0$U-jes*Yp2paWgPfY&*+0;XZ%=yBoLe?Xrm5UG#C~vAlfQzjx)^KcDLddL;dJ zC*MN(=jZMofBfv;!;Rm|%FT|ip1!vLsQ29NqfAd8oIn0}wY2NaAmWfk;u^tPYRI=K^Q)aCrLhMaue@|+Yn zx2C2vdE?RY@@cbyZnOBCChsJl+!MWh`Ny009^SD3k$tDyBLBzK-m4Xlmu@YrO;3)w z9XEfs2?Ikx+guHx>lpkFMQ;F_+=I>Kqk?ErIT|3N0Rqq0qlsZOF^ndL(Ygb(#vd&i mMoWg#l3}!Dpi;^3hc|y?{BNd>CU=1Cbp}sYKbLh*2~7aWWrC^z literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/checkbox/golden/checkbox_hover.png b/packages/zeta_flutter/test/src/components/checkbox/golden/checkbox_hover.png new file mode 100644 index 0000000000000000000000000000000000000000..963efa37255d91a6143950be3a8c9ad2d703df05 GIT binary patch literal 4217 zcmeHJ|5MUu9Dfj$QJYP=6gE-4l`&2fKIuSQJBZ?(o;$$KIOcPpE+A(+>gz4LzlnQ~ z8Q*v#Q1+Vq`zF-%iCZ$89F=xGHHlbOCO)l>shw=>RBl~Rmnp^F){58~^oJ>`=VU&S zuc^u7U~ohhwn>h`%{yuP1DSBxk`o2M*jv#R%}k0=2R8Z0TKlRQ;xUvaqnQpiXhD{Wr zn2;?eSLKQcac?$C0C*^$k7qP<`+G4z&7%Q`*Ixw!BQGl?pVL}^tw8|L!e)Xfy3l!f zKC>{>9{@6&$vYPkp66JYq1S}q)|E#@Unpx<%B=Rh@Rc4h? zD3NE{)Cn^X!H|+9CY;omDCX`^ej)w9izj zByv({?%PgeS?cXev?3Y{E0u+fZZk{ll2uRmqg6ut1_b0&s~Sb)H%NP zo*3qD{bm$Y?id4dY;=+$h10P{)5^9602K`P@daQoU;_ZCJrE`1Pg++7-n!F9xoLwq zVn{fyay@6iXzq`B=(}01VDUM#CA-p-x!54jCE~boHV#aa8d5{A3F~uAK&OU4jzY1M zXBjD2d^AAAg`&}D|8{72d|VKscyP--N^$Xo3wk34iSekz0+|KnOx5|W4G_;9i#o=2 z7YjsZ%p=Qm1bBiq5^BJkyb2oOyyt9|j_gt9_dGb009A@eO8x9swSjWkkP0Ws0hF<8D<%7EOB6a99y% z82@5q`E2${*Uy?^(yJQ+m_vdV2?^!+1^`gE@juIKML-LA7rlZk-ydExc&o#EGk6QZ r+Y!7ia^*$o?FinE;Oz+iw0Q literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/chips/golden/status_chip_default.png b/packages/zeta_flutter/test/src/components/chips/golden/status_chip_default.png new file mode 100644 index 0000000000000000000000000000000000000000..082549a966d1b1637f70d65f6213ccf2d256d4ad GIT binary patch literal 3409 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefr00@r;B4q#hkZyHs;du@Q_w#Sr`(EA=bM3u+a!;mx@98${yLW12+YcvRmSkW! zP`W$2{$SOgkHvfT{E6NB;o=$O6 Wl&^j86WD2DVDNPHb6Mw<&;$TGncb%V literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/chips/golden/status_chip_long.png b/packages/zeta_flutter/test/src/components/chips/golden/status_chip_long.png new file mode 100644 index 0000000000000000000000000000000000000000..a10af4a2a460f1c621ed8797c2e5e1a60ab0b1e0 GIT binary patch literal 3573 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sA;~Zi(^Q|oVRy2c7=q?9C&D)$hPf9?*fe@>JeK#rMz`ryO*4ho^im= z;X?Vwj{Jm)BGN%wGu6yq*)=jYXKss36I1JdF!Rv-O?B~q_qP{Y-r=@?XVCq%YOgHN zuEzCtUxDsu&~Im8WMD92Vqsu7!6CrFps@MRg#)|G|M#6uGv50kYpcxcvp@Mhubz7? zUT^y2KQ(oK4Ua{voA$V--8Ob-QRSPrZ+*|tpF6kr`}_a1@B0_<@1A$~-@ku5N?yKx z`SWd=^}T(6)2r$%+BN4twyb%RUbQuZ(sg=*wW{x%=w4O z_LsNk-Idw@|65K~UCe~RFj7$s+DJ&ce3=;$u7#JMf z8h}AXNHB8E_1ABg-vfr=htvi1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefr00@r;B4q#hkZyHs;du@Q_w#Sr`(EA=bM3u+a!;mx@98${yLW12+YcvRmSkW! zP`W$2{$SOgkHvfT{E6NB;o=$O6 Wl&^j86WD2DVDNPHb6Mw<&;$TGncb%V literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/comms_button/golden/CommsButton_negative.png b/packages/zeta_flutter/test/src/components/comms_button/golden/CommsButton_negative.png new file mode 100644 index 0000000000000000000000000000000000000000..2ed875981f44a1634fd83337c3f52a3abb4a3432 GIT binary patch literal 6340 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 literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/comms_button/golden/CommsButton_off.png b/packages/zeta_flutter/test/src/components/comms_button/golden/CommsButton_off.png new file mode 100644 index 0000000000000000000000000000000000000000..b23c5649ffb5a445dac770bf2b696a92431c456a GIT binary patch literal 6486 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 literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/comms_button/golden/CommsButton_on.png b/packages/zeta_flutter/test/src/components/comms_button/golden/CommsButton_on.png new file mode 100644 index 0000000000000000000000000000000000000000..4bb092222594d03f0b102b01b47034df3e432ddd GIT binary patch literal 5586 zcmeHLdsNbC8vd-tnx=Fnx66=;O--KNE>4c7HHvmscLtp%j*{ab6(T7Kn&k}^d!}t3>zUO`3 z_kEuC@ZHxTfvZ=dRssN42L~NG2EbBR0G6CwVGmbIQZJo{A9l&d0uO-NF6S}$Wm)op z;1et0D{DpURRGpz1s~dfBK_aG{?4SWV}$lWdQU?)nJRm>?fm7<5AW>RIAEU>KXo&Q z>-uoxz_sBeIa6!F`k1MwJAN7yoH(}W^TKZ({0uSm4!A_>mold(yRS`laNN^O^0Y@J zUhgdR5J9O>kRyczJVAp~A_^)E@%A^;h`BB0C6%{Z%5S&Ce4V@hcxy{}W#Lh*Tg7Py zGyv&2!yD}G^-q!;)IDTTO@A%zX`C1KxV+;&Nq#{}8bWzW)$Q*CFoE9@U~aBsbm9m* zl?tlZ^yARvDfyeI8`dYH-W2d)XY_P#6~5CjCi>?I@P}i zfN#LofL%q}#*@{Pr+z+Lf?@`G6@NwcXmDUk`gFEK@x0zJRrXKVVyqi7j5J+oZHb<= zgAf~Y?H`eO+!+Q}_)Qp$CM0AyG(TVSD@7Ht3(t>EoLrbxbX0eR#4R^r02ug(!#Y=e zR~@+_3g3TOl7->+CS1H)XU-Q;wBzJ(meeq55ocvaICb8Gn{OFhTp@2t{jPYS3McnW z8@zD+cAWhuNc{P4fY=c}_Xu`A$(kQAPlL_9%tvow!A(ko9w;lk%^;Jix zW_^)XIOpR>Lps_6af%li8XM9~0V`Eg`Qeu>%R+sO$6=t^Qh@&V*NQvk7oxs6|W4X+}d6SGD z-N{Nza()=PFyV$&pyx-`R%^<>8suW6N+;-YzX@r>FWo|JvJ z-tR98p9>j%^BIO0`4;n>r0L0KI*Sgm8>|_~+AsZVU4nY;B^c%f= z3I@7m(tGK>hV1EqSdYE4>G`#1ON8NNzlMJZz%wq>K1c=SVqUs%bwu=Lyhrzyj1-Sv z0h?YPxHMLoio?mW^^*F2HTTn#0Nf#>R~OU@9ST}v=z;p|@pF2<=sS0Ky+5XTnRa+{ z)7dg5OGam_>YFs}>*0R1v2W=y_XPWwhQo{{%K$KFhrYbir~34ydz}3*%~Ubv-Cdo2 zq=0C(OM%&d`H<%d&v_fmdPcGE00^CZ0vZU{x{dDf+sZTlnMs5JJ;tD1TU&HjCW^e? zOA^}Ae6qsdt`}g;sVxW5!4|f40gaevk%~HTQ`2*8I)`IsAtbE)2a_WVn$5I-^mAN5 zvw55g-*pbJdzr}KD+b9Q2Ev}OGtr;#6yLK#!VTjUb{@s6xEykQywi|r>vOgC%&nJtb@fxF7@%8x8O*VGZjM=}Jg&ctkT#7KFrYCQc;-gs_5s&ZWa4sgBo4os$ zf(LhfN0o09qlx}M5eYlFddC^k?CJ1bcxWxs%0d*Ao&5t${1m})Wx@2Blf1E)-lPx8 za%;7dH*b~}&%>y5Gp3H@@mS#n3NnFW@eTQ{u_-D{gO|q1Q8y-R8xCen$qi?GZkeQ4 zW*LmOIPqWNMe1%6?=}=XskXKG*G*8w8UyDWtvYSS>bzF6O0bU6InVrCY`v=ghE=L9 zMERH?HxA=RL!Uzujmyh4}pM+5<}x3drDl^LABZdYoNDt zci0F6w{utB&}om4m1AREGUn$ziy?gT^k;Ba1%BlR+W-=$t1)za{KSKE;2}e-k-g=Ggz_y{>ETYCprShv4WSTKeKK6^csZ6DZhRx2& zwGZk))IzyBJCER3=jEc95^wsE(1nRxhA_q~olw>#T-Rt#v`aAjmfG=;^Zvy!l@zFTs)G zw-r#ZU615IP26ph(sxL%0|@cdG6?X)EdemN4YvOOUt7zZU0a__omDzAGihE@CwF?^ z+bcX-(n@~=j4h|AWzCL1t9l7yIy9K&6K(Kv}Zbad`GisrnJOEsEE@+WlWiO%Cbyxmxo48O-e*m%w}r$ z7Me6^ihzx!+cY&P9Yi5_7Mdt3DiV^G1mXb_R0I_ELLK_Vin~6sbnQiR3 zKj<;ocV_GN<@W{MPfAdwCB#ezuSNBh0}%0BUB4L;5|*?o&HE%7O?$>-*Bhsy3JO2=>npL@qie4RK6B8rpDc$W{WI& zYi!?`u5FuCVZ1-|EQ>B%U}Kh#<%isqO?Cuh`g>lo*^jmDFuOGd}xEH@SJ5mx>{0Ri@{sEP1Q?eBWKwQ+vBt^H3OPtG zCDR*~mUPAm%fN1%vOT9`nnAg$dWD(WKCCBqC%2KXQgpM7+F75ou(+&mqbGLR7HCAx zXH)#{TsV1r(FEea5KI1AMgX{j@Z z7@Iifkl5J}T?YkuD?h*ygKR}2_dao?lJe6F0P1f;1#6^l91WV5^TiKpDqzI<5uy4G zQvbARbYUqcc_cf`FI&KmD`$BXlx28klfuR{>-IoU`O_jBhqHp)O!;^P^FR4vC^Dwi z0Mm6wHhU(rD>H{)-oSEM$Wq%Y&+$s0VtJ@=r{?M`L5%nkf@-%0Z@NX;gedh=wz{Fz zR({$<=7JdKk=Rr;(%0;4(#SBKPsJ|$%Y_x&CZ~EzO>&kK1oiZeM zZ@EYl#Z|WyM4pHb&{WV{b`;R|-@PGBeg&J@>E?wo?#qCn@WL-`9Ri(0-w)h-q)56b zZC0AHaG88D2CF!&VPA zYmVZKav6H~44URmrX(A}^Fvf3j|pk~_G?>~4QS&KRY$1L$bOTlNW`97j`5tgY)bM3dn;V_ z`v+9=?-vFb4LGB(l@0z~9(oBYTv>4+_ty7IYQ5H$XN z{C^g6FP5>ebJIi}6X5Uvt?>0k1x`{rr|3HE`NRWF^&3`RfS~A;r&4omY>*{@0&qCI zs6c{^NUTb@QnA@l_kcx2q6SzGn1@u6~8 z8eD5z2)yvTc0cH5ZJC#Ue(24ZY}HiReppex@4{?p_3N3%KtAH?r88-*l8V)bPJ094 zW%F1R*3Ao2gXvn^Okb3nkLurdL(sWO&AQGG-ZAwu_12wtlS|CRNP%EX`OnqH z!c%gO@Ozw4`8Vkg@5*<)?d)JCO8S~B|F7^{N8-1;{6ovOb!W*KvC-Mi@s(o4CSY>b za?4wFy}dENAoA`wU3(cC7Zw6Pvd;11`OlRXhFQSr!X`@PJ?SOq0ku=9&h(uU|LsMxQ>|tL61;L}#PRx+E~vOxQbshETAxardGXpU)un0mL7(M9 zz(nKVrig~)RD(s<4n*FCTNLdr-N;t<>rt-jEb`g zBHyGTZaXnA@Q0YwiWFDH&xxjqp5Rks35l6{&GRj@Jz&P3X6Hn(xBypd?05WQ=LtFJ z4pMQXU<&_Q`4VxWsxZLL+juefO~a}Wi}KdQbWdG^?}Hb$J@;u$l*oqBLjfrS<6KRg z?VgacOSmB*(+_?qTupHFL^6Vi?*lXT@;a z=}P1~FjY>y%}b6=n%s7TJgUB`1$_3u5s*-T8PV1y&0ucV`x%1L>%{|qioFF0!*lPi z^|o2=(*z53J#k6$i1Kix*TY&Ps5h`msPyh(;~mWl90dJ$dOHQ~VmEqMq+>333=ww{ zin;=3G1=Y7BWU@#>^cAi%)r|Mf;B48&AwNbj4 zqpdg$U^Z6g_UShelu>O7wUXf&e>%>7jc_S@#b0yz%qA%pab7hTMLCNtnm$c#E4ZgkD>(!bD*#9q& zJ^o}V8>E0M6x@T9FtnZT;<4l<9;Zi8!KGYUI&AoGNwo^$tm2%zn&gO%laH^%t!`>r zy4?Y_8a>t#3=I52%W7=ls+fB?7gVNBDeo8z&2Tu8BDp=bR7m_a+h@@k1qSLB{K{}Q zrm5a?9h6(lsf<=0)Z>q<)Nfr)QOXe_ z@!Qanx9s*+9!u$L*`t#~{Uth{{PJ^j%u!WoQdC>rj@7XGWnHY9T8PM;`oSfNwaZ*0 zUySs%6Pk1g>y&Y-uuX462krVm98!xaN6vZ=b}N5 z=kx3g`>s-@aUORmo*iBADRA}u=K%`KzH>3snM0v8TmJm$5psaHkGEUH zLoZ-eus#Xp?B%(e}$7W_`_D>7zA}J(muics8wpu6BjdW$y zfZeTN-0Z8(Xg}uULPT?N*S&++#7)LPqbx$rVJ|&6TyL7Q%5gxNG|1-31+W=8W9}(=b8&hfs$@57ixr G&ih}O=Z@O| literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/comms_button/golden/CommsButton_warning.png b/packages/zeta_flutter/test/src/components/comms_button/golden/CommsButton_warning.png new file mode 100644 index 0000000000000000000000000000000000000000..cbf9ea5f363322080e4d0e84536f4d884bbdc540 GIT binary patch literal 6436 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 bse1YW#&K8|!#7|P4j_*QeqVd^!u5Xx<%D+= literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/dialpad/golden/dialpad_disabled.png b/packages/zeta_flutter/test/src/components/dialpad/golden/dialpad_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..9ecc50406655e9d02594bc5d2a9d51220e52f9ad GIT binary patch literal 9392 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 literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/dialpad/golden/dialpad_enabled.png b/packages/zeta_flutter/test/src/components/dialpad/golden/dialpad_enabled.png new file mode 100644 index 0000000000000000000000000000000000000000..9ecc50406655e9d02594bc5d2a9d51220e52f9ad GIT binary patch literal 9392 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 literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/dialpad/golden/dialpadbutton.png b/packages/zeta_flutter/test/src/components/dialpad/golden/dialpadbutton.png new file mode 100644 index 0000000000000000000000000000000000000000..4bc2da7da236cab8505a93fbdebb80419552c4f2 GIT binary patch literal 4380 zcmeHK`%hD682$=67*Wu98CWb;7ucqPfN~L`j-iYx!jMf6Bb`Mth}`O+Kxv6A15;>; zM!Co(YNjy=wIW_9Qkm%~1ferr3${hdMS-@IQm!rRElczd*iTD(emObc_r1^iz0dbN z?>Xm6=&``HR$HtPLTiJ52na*SoQRNFgym;2Qkr@>32r!QSfD?uX}A9X538vDLE)Bg z(Jf>05L$-?1$-AyD^p5?so}9_{&;ty+U3Z_fX{#Go$}Cre>MK7Q!gHtK`QKr6!`*dW3zJs)^=#}^1ykw5hq&A-3zHOScq!EY&`f-7wp2fJu zTz;h%sTs32*Af7XLEw-9+74%iP|PYzgbLRa5juD{8|MDwV2Q+*^5B=M`)Nbnno=Ah z$JM%Gy}iA~8G#8~xpoNM9a+B%N^sYH{RKjyCA*7S?|U9SSI*rEQxCh-4yshDyA`mF z3um9S=kj{y`vAkLRuZ2jzQxtnnWL8*SN0n@?oJ%1D-qhWI zo0@;u`;D(@E=tNFM4&_S@m%;a<7CG6RJ2 z;JO6Euui-q?_@Prf7%D3qh~!Z+vqG^*R%Ti(u^Y`V`Fg>N@cJwoK<&we7@_?+F9!RrHb#oXd1|Gy-~{({ zFyC=)Lq1q6c{d!c(d;Z+Jg2eP|yPY{XA*nS! zj%epUuE=-At~rHZfG-!O7Z$lhv#YAAG(#=d?%zY`W#1wT_o%kkz0ok!pPZWNA!|tQ z;4WNm$XZM-D=#llC=@)H)!9QqnM~J%*kT}$&1Pe>a^~_)`aZQzr=um&^*#zH8s&D2bx|q%%s+xECAtXW|aNO42Bj!M#RwX+-)n)g z<%MGFLeg)L0nXUn+1Z&fy;xpeZaiKfOVr)n&0(--IpNSMIHaQ1VIybI8<#yVQ7GV} z0t*{LeojtK^aVF)mJ2_d59L6O;LCZ9N|@`jL(mBba5NMqllgj-ng)g(@Kl{P8@iW} zkbr?sII0x-oVP3&3sJKtR4O*)UaSBk|9%yL9Be6TxNKvC`P6=Q90UR68z)VJEAJx{ zAto_={5Ua*!6XKg7!V?wj9@Z?$p|JR{NKJ6m(6i>dCLZ(0)E2~3OaNwpvIqk`5(Eo BXrBN8 literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/fab/golden/FAB_default.png b/packages/zeta_flutter/test/src/components/fab/golden/FAB_default.png new file mode 100644 index 0000000000000000000000000000000000000000..156e392815710e5048bbfa4dedd2beae1cb142e0 GIT binary patch literal 4751 zcmeH~>08rR7RPT`3KhdLI%2^DrcT9qilPFI1VY$kDY8rv0wRm-`_dQ!2}^(x1Qo=# z`T$LU!JXoKN@@NfZ)(E}^cK@0EVbw(Fjxw|cev(3D%Th{5%O+f!*bvsm6I&2X9LjrJ6O9l7@)?Bn5bt^Xc3yju28 zWYM}y+lLp1(@qX`MQ`d4)lmMuUgGKxt8%hIdR}TNPYK?aF~JiaeMs#Lu)6m5XU*1A z3LlmtH?778?WZzcd%n$E%3Jy>q2ufZyRn%oW3Db#Gl?51sc(I3qLG+kI8{qQXM@-BD!gSP!1i>jC95+n~dK9OTCfG_f^z$`V<~Z%2Mh4-e$C5`5rf z90E{I{ZS74k(U=BS*az?oU^yz>peIhVSNS_&TP^@kSZqc1wab3GBuy!p#tmVGSQBk zrQIOHCU`S9Dy$Xp)$*UETH>u_{JGwFhk!cSZ(Hv|YCA{Ru~=?ks^0<(j5iu<58a>& znIB47NiViPIgA}K=n%XLtrKnT|LdymwXzi%Nd@22AxyN&`#oyrja>*z8O!8H190z( zZJnyJjgJW_$j|M(d(pjAN6>F^)$)};YUezimc<#mE`C`jWDw0z=T;vZXaFZ;sn*aQ z)|})j`4B678D6@Zb92lz?B|C3-q@2;R z`<$mZxxqx}qnJHoT03JG!Rn3S;GdS!q9K0Oj^6?3r|H@>;-k}lw3y>I}=l1`rKA}AYLg~QzI#?5aZ9gjmmvV?>Fk7BdA)tX8+54kQ8UOeo*l!o_hedI<2ne> zB$}Y_neBJ!M4Bd#JOG`XbWHp{XK8wE(k__)0{}$AqrzLp8v6jnSDc}t4S-X;NomW3 z`GvJ{q`tEji2Rs{M04)=kQeS|W3v}MpL`s;*veYyLsoo!yG_dy0BVA$)pV$mdZHc2 ziA}USLjhpCu*B4pbY4db3Toqvp?4qF8yT^Bb>ec*KJr+m4xGcRD$K8hfxZ)y4&?V4 zaD$)@QZD?1L1^V)_}v3q)@EtH13E|p6*$QgOH*4?iyN6}gxE_Lmq8Jq;_gUp=#SZe^h`!9e0 z9ty_0z|DrkrSaxBn!MjWqB|}bVE`bBuZJSi(T_tSooa0@WTRl-xPtBBCnd0;VP|M-dj|KMXPq=tA>k?*6CG zaSbg1E*Y6a^Kb>g0Ekk%stKqGs0pYEs0pYEs0pYEs0pYE{2vL(tP1KE_xf9Y3H@dO N@H*w|#&C%&`X3p**7g7Z literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/fab/golden/FAB_disabled.png b/packages/zeta_flutter/test/src/components/fab/golden/FAB_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..f74ba1c0850f42b915f044a8d0827f46c27ef66b GIT binary patch literal 4454 zcmeHL|5MU;9DboL%`|hhWSfDz?W*gWS(bQ8XxW(C#Ma7h*(fp1YLHS$ib(CYR#4R0 zaubufmTgDT8I?9v+DgnJS#eGsf+#u6Z-hvwfb7j~zwD>|1AOjt_qosOo_p@|e(v== z&)w(LHVQd7@SQ*a2u}VeX*+;#1b|OQz#KHGVx2gQ9vJ3!@@9}e34e)R{Fs}QcLbn| z6Oj8YKM`9XjPUdlUcaVOEjn8Fq3;I)6REeWwsKjEGxsfw5CJAHN|n3E z@8UlGqPFH8`FnR^^W*O&J!e!5n=lQZhmp439jZ^gw25ykX~Ns@^qE^rWJ^YDtWlP= zTa9i}WNt7AlaC6>Lawjk<@csZ7uT^+o{ z2VSwuj_^k9j>2O{*RSd8%NjF0%UW~YGBMrKKp+t(mjgHj!oYK5tQb9~bi+OE?)7i= zYI+7O!%de&v56ixcTnG;mT^}THojKTHt(lZ2wx6DEEz7e}4YJ9^iQRg-nyZaP9he*>$MPu|EF}wU1`M@I&CDR&>Cugpy zG`8@K`jzWCtl!tl8Qls-Lc5jwspdW3TtN(@`M%~LgAwE72N4^`?2bBpyc&)>8g`e@ z{5}`JzFyZ$|E9?le$|#2$C7EDVc=uU>$4{A1JfQ^q1zWOEENN@ofT&%K|;ZwCBDkg zg$96|1vOtnKU?i#-JniOAmpSWQL>6j2|fUZg(;ftUmb3|XeT@h1zu|X%uPz&te8~3 zq1iRABfGQ`iCxha^y=XJW2fWbK~$D2O$_cXyn9lV9fo^;;C}pM004R4#N4&5?XD1b zT181s3n{wN;@d1NeSGlO$k@zG3`gcD?ibCd{w2>f=!A}riyjTgSe z37>gR+d#Ict+SUU0S*_Iq31BKcS+M!mSP2I+~E(GH>U7g2*lXf$?)PM?gJ&K`&+2L zILZyvJ)bw3F;FAz#L}w8Vu9B7*HaniwvLXYmY3D1DiV1BlePV4u;l$!wU%uTF|rt2 zGu6NLURcMI5aPVtFPfYKPu~X!zZN2|6cghVU3q!z73dUcE`a$jwiJHK|9aw7N@SeR+ zzZR9kx6G(a5BI*{P%f$p8o7hbbAWJ1ynC1sn>q92_Z`ZdI_xbfku-E_41i;1YzlIZ z4jd9hDT~eexYgCm4pub_g%zC>Pp<;3Rc74i8lkrH(HiI*o5HO(HnX!RNUE9dh$#TV zwp()^V`=~T?$AAX-in6nR#}Bb9w|Q4@*6GP10lcRf!Jxt=>nDHUCDd#Stth@Io$rs ziNGTdU-f-KMlMHoG!D-w^$T!k3bF)Y9cz@b$S3oOD3TS13Ivhs;-!o(<7-wNN`P)j zXwH8!joljvhPe$)p7WZEOG1c@TlF+#ZF)^BT`$zp7ccGAMz2;DRVkxWX!o77rqLsV zNlf4^8%jjW3I^H~7lnSr`w0L%0oqwu=NUf^Sl}Ic1@SI}*9hKZ@TQ`-5xi~aZ9{Jx gdfV{-+R*K<|7>(_{!q|O^sfYxw^EX%oA;df8;i@0y#N3J literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/fab/golden/FAB_inverse.png b/packages/zeta_flutter/test/src/components/fab/golden/FAB_inverse.png new file mode 100644 index 0000000000000000000000000000000000000000..0954c551f1b46447f5906b1055bd5068d78fabcf GIT binary patch literal 3902 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefr0OZr;B4q#hkZy_phH?&UpOed)ws(C;A_%wVYHt`sLn|f?nqTjlLd# zEX5NyzDin}+n1SC-DWVr4LC%R~3c)rqTwIq%HP)<3>7Q@B@3<9&NU z-1?7Co>bcX^gD0;e9oMybLY-I`eV}T>+AdNcUP*X9om@ee!TUw_%R^8d>#`6 z!^)cy$uX7hyMA!o-Bnr*WSzQV%)p?qz3A<&tw+oE{oecW#l^)dx9d#3nPc|v-@|r0 zRz`+|m1p*E%fG+g?$?XQE6a7}9!)Y7OE&bIV`2DJgn{A2nY?>@Oux1*Eq#7&?n-qA z28XO?iWOGT(dXnC8lG<2^#8!YqyInJ&71U={rmEHz~G;G^9nNqP)gAONcJ!=GB6l1 zu>j5C5CA$vnYw~|48As;|NCUQz4ZD$MJ7A1tIxk9SHGjgaHlu}!-v+Xf7$u;mdP0& zlaRl^!1A`n0H;lQSuxj8bks}5f(`o_SZGyCSs;N{1FQM&xz z#*%MuZ=3tgx3m4q!@%Hic36F;6t=lkwWemTdwyiBI@<FVdQ&MBb@09@k}r2qf` literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/fab/golden/FAB_pressed.png b/packages/zeta_flutter/test/src/components/fab/golden/FAB_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..6be7b8db5ce91bc9d87469744576f8e4cd616ecb GIT binary patch literal 4848 zcmeH}|5wsk8pp4hW*OR!mG%X7*WGpJluoS~jfz-S_GOi_QBpH4zfhV|8DuJ79JkCh zwVF-y3!1rFDMD?7DE0wMjnYxp5GYfqrb0!;1VkZVKI7l8KXQM$=RW5-=RVKtzMuEG zMTa875G&TN001EN@7o;-fUPG0OO86&!;vb|k7wb{CMz;*7hn!o4Z)Ii>R9sm+ zmCV10vvigCY?zwPmGgr2P_R3dJwV3Dr5<{L{*6$fF|8y9(EHg3Tssfy-qm*mWGC}V z(c;$1Hxcw2mBb~>k;r@8KGOa8z}xMd^t7zbHf&qE;4?{8$!*G%qhdNanP+m=1Awcn zKW_W+b!7y3G94=^C`?siN^4nz&mt|-b9+=zNJ)@+*>fc#motnsdRN!lg085n42mD?jj9VeQSusvj#Xb04RSNoyG2I;I4USddTJ`xDnskgF;ru(_pxYp zDKy!bq|3$VZsw@^Q7E(>pb<~S*vt;NxK7eN(8t0e;`l$@eF|1%TlqM}-8>{_h`4e-?9W<$jAfrXiDHw)kiki7<9lZ;{BVHX<`~U^Un>b-OI{jon!~ zZ|9)$gzl;fT5V&FRNz$Mass|WqFM4gDM*!3eyP0BjAxqXZSXyCw{*qQ7gN2x zIYxOgK#_`#VvolMsBT&{Kc`E+Ot#azhIr3`yJ z*EVaA*yw~}nf?Jmik+t4_o*KJw-e~+uKJ%`7uTcYdQjZJI# zf)_J~AoCg*G{eX|=y;HQ?xP*QBs*rrD^wgmZractZ8SKJHLlOl^DK|<1rWzS_Nk2v z+HSnkggN5>@sIEvF}n6eiTOc!Z4*fJ8=~q8SHVQL1nj-|~pp3DKK!tQmbnL z=%SrAX}a+(o#XWdj8Rvo<*NXQZqkka(%XdEa>xC9%FZWCz{5Ya66z+lLHRc9hZj2B zseNi^0Q#k~HaEpP&Kn{{E-(wv)*~ACzlEt&Q%z<79_F=*G>+kfL>m1z(H;S4pOmKM zB-j@=4UYr_ztY;A{l-n@jv-0XAM7M4k25OmD z2f)fZ5)rlC=-nojY?YttDK@g>?xlUGdf$WxU<<8w`Sq7W?{frYSpUu|{%Y={8wOn* z2Zgo;G#hcwT!QRN(%Y5w9UnTUU-KJf^d=7t~~`Q!UL6UkjtV&BIC}{f>f|Mjak^<%BP`O z#F_Dq$<3Q}R3vVAFdZdP9^ZO=S*Gm6f;#}awHrN!q(_}v`l|2$o*<~5l>Bn$Ug~GA zzhCDeMWC-VZKQ2LRW&lod{9IR$Nroy9QG#~c`rvGVvK{A-2)PF98k}6}0Kh7*5NoQHfR%uifR%uifR%uifR%ui gfR(`inSj~(*;aK5-pdRAg9EUCPsDEKuEZaI142_Un*aa+ literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/fab/golden/FAB_secondary.png b/packages/zeta_flutter/test/src/components/fab/golden/FAB_secondary.png new file mode 100644 index 0000000000000000000000000000000000000000..a55e9f06ca0d31a261d68f1687210cf8d0b945ac GIT binary patch literal 3568 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sA-m`i(^Q|oVRxk`>(jlG(5byyVZ@QNF}4Ov*lXLym|Q!9y+<19xL9w z>1n<1P;KAbtGf4~-%1@8CKl(ULr?RrH!*qTec%87UeWo>=ij8Pt~K6&^4z~aUvCv1 z=+djLtdH4OSAY9B14DxQo7~?(>kr&ibYNg;=wV=FU@&50VPH7HA;7?(po~-SOwFp^ zzP@8W9)C2k{d~3e=nVfdBL;>CTV}jT|JPlg{`g@3bG4hVr_1vlPY<6q`3)-r!yGxc z4R9-@t1}BH8LnEcpZ555{`vVojK#VQ|J4~qKP-9w=6!!*&7NPs79W-PY-*Hu_v`1M zx4)aO{`F9=e5ckPtm zuaDoG@a~SC-1m3u0u2}#3Yd_rCdzlm{&D`j7{B@B`Oo~n+uuK5Z&nJ7$_FMlBN}S{ zf8Obv%geyAnmMQ_Q|`>@E1%6b;mOL)E&LnF(m57$cBOVc}q4m>{SC zG~BI$fq_Ai9Ko5ga&mgxYk?*`$SDAsO%+oqbkwMJvg30!=thHXG#67|E{^7-(R?(T mk4EzmC2gzGGGqjoAN7VuXYiErk3R~n+0f9Oqr3kbX2#+M7QYC}{E`&!C5>`gV zK?*aDA_Po3)MX8jpvXfY1hj%KkANYGJd!{W5Ml@zLx2#nmvweJ-QC$f{$1`rzk7f8 z-gD3W+;h(N>KCDb<~wb60szc|K06T(fUzS0h-foY_@^T4Vmka7WrPPF2b@8>c{o63 z91n^xgNP;wNGY68!K2Y(3ZCVn$d>C6Ma?u^$op|{pp8!E zDx}bk`H>_YIX#b03E}#BQKAP%6Js&j>^9kZ0K7=hQOC(1O3`R+Y2tJ(?Ttw>HPZj|3wCAkIEQysV91Q@351o;>T2p^_EswkQ<}h3o5b+VmxDxnQmd z8`VTIgbN}g^VBK>Co8KtKF0!@AGl=lw9mEt)B?(H^|XZ85g}h4=VER^#}m{KQUC2G zANfOn_87rq-(7n4Q77spQ@);6e6qSEuYYuOG=OIZK*MF{L;kXMU3b8-58&uK>_ro} zqb}3*WmSuu4ezJ;v3Uz(#gQ#i{gH{%R0aCTOWpJ$u-My8ZE<`zE;E%b$4q*vjNEY@Lll! zQjY(+=<;y(r|@Kd7YsKmKUaqcRhe|r*&z*0(wiod8vcO8UWkb-G&v#fVVMBNi6=S>eC;K{EROj zp>@8Zn73x$>|;MU6BE+7%W%U8h(GebT+qB<7_(*XNYy~{&`RHxb4EaMhJ;8w=s#(= zb?ThEokbho_+5y+R;Ef;pAinjQ~E}CbLpDyB5}BmdiplwPd1n(1~;}TFgWBk|`c{iI}W* zJPJ%+suQt7;~7fIF^UhT-9g56qIyFwlHF4B5LUKna6_V3{jf4jPYg#PK8GFJf*>+lv4&D9dGVy0yXMCH0RgF<3HtTd+9cT rZ35c_wh3$#*e0+|V4J}IHG$3dNGCW2R?X%40Jflj&=Z{F2^aqXq@KI0 literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/in_page_banner/golden/in_page_banner_default.png b/packages/zeta_flutter/test/src/components/in_page_banner/golden/in_page_banner_default.png new file mode 100644 index 0000000000000000000000000000000000000000..4a3594d9389430c4d34004f4abd7b5cc324c72fa GIT binary patch literal 3959 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq`Gq)5S5QV$R#U=ey^W%O3dn{+!n zKgh305EMDsYM#C^fU3{(8eR5$dsV)qu!?RJ+`FZ7Ntf@$Sz9`1`;<+Vdu2Im z?#t>;v#)bM`&KjWxp8szXB*?qX7kVI@Bcad_2cvF_n7O&-;(?MdOOga2aIIy%;`zy z_c?wt*!|ey{@lK;pV#lL{%x)wD>vW%@5aJMmp2<)@7ecCmXV>MHtF@Nb3dL-M?daQ z|7W}J%hlxMs&{XyAAek5Q&aP4b9>lcX$FQ3=g;u1?{~K^uUO-M{n*aU;m4kQx_$fc z!t-as_KE|g`)z-`$cd?}uJ(Brz5Upi2Ps#71B2%Gjbk}Rc{z8bPBAkuoZt{(U{FwY zU|?wIVPIrnFk)gs5j;~e@nQLY!(&_P-{yV0pnmMf3+L__Sq6q1*KaH5|0W@9(jA_W9?!=lpUO2G7j%-&OrP(8&Dw8Pn&>FH3Ur z^WRt1^%!1T{yI6mI{o@*bvYYDK3S_R7x;jVUa^$*g!q2TW6v&H%NPGWC9(eBk9X() z_U79g$JIan8vDNNRp;f$Z?x0PZ0mmkS!b9&_t(6dSoknsyv%lgPw}58?)rV|`~N&~ zvIYkEqG@6Z{q?y$hxzaPoUwX(nYaQ_@ZW>*4Y>S^9tfMa*em@xy8W2NkBQdu#{bW6 zS_h2DH?H2?6S~*yz4if`R`*m;2N;B#FUU?<9{1w`D+9xa{{`%zP<+$L5E&o;X0_Jj zty_y_4Fx(@Wmez9qJ^W?$^t!#TM1ihRy&+rtEL@{ipf4%eLeKiY1!|#K(@(R+@(vM&J+i!kl3i9O#4l!JQ zLbpmydh^L08%wjVRs#d%_l@4Q(aFhXl9Lx7U;cP4cl7Fe>_Fcgzh|}Iv`=n+-$_uO zdLLhx9%E6S8?%4g=2v@x*43r}bCJdW<*Of;>+d)An`dQo4VWt5?*ISwSH)XkZu+$J zZQ^UZc>H{P5j{F}kqMeL8!q7c8suEkW9t|b5 zd_Ec=qXB}yCKyd2qbX!Gg%I1O7_D|kt6c_4TD|BE@nKT@&iu~!p8x2h1E1>ofx*Mz M>FVdQ&MBb@0K35~oB#j- literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/in_page_banner/golden/in_page_banner_negative.png b/packages/zeta_flutter/test/src/components/in_page_banner/golden/in_page_banner_negative.png new file mode 100644 index 0000000000000000000000000000000000000000..5b167f9380d2b75f12d4c16299c3c4f7b1d3cc81 GIT binary patch literal 3938 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq|dL)5S5QV$R#U{vCJHB@cWoFT4KdW~gUC*<}Hn4li!eJr$pmK3sZq zb#jKF)1n0)0!uDA>oKZYx=8a2-{r6X6EM0zsLQ*eBWw8Wwh2WH5` zN_U@^k>{RYm*w+r&#zx4uhaE=|Hl706jAd@IQi2;{&Ust3=9eVGxq(ycjMpb_~Uo) z|H;#_{l3&N(*F11m;27wmg&?!ds+D&=<_#$(d+*f=EPN|>iFE>WhgfP*Ofir85tP9 zZ8+**SL3t(z6|%}-rLEW>hD8^PoDZTV_kkvYo$ID1A~nn3kL(k1VIG`1_!qWpaUft zfubo0!L&^C!~b_y<>uV~^PKst-nzPyng=&7-i_f0>P;#WRrp``arxu7-uCqiZXQpIx_hU0=Vf^|sftX<`cUmVdu)EO>GF zyKV9NYu1nB#p{e#Ycn!5$Xfh=)PJmBKelSY&HQ;bmU{E7_k%UG``4E0$VTpcKXdJC z^Ku!5?eFhM>d*Q6ukZWKd-von8_IfjTUQ^c%Ih&ax9`KB2)l}c~l@Jgw@zvpg^;4!o&- zePw0gmlMK3=e_+EZOkw5pBXh=&;x7c&GR4PtP87j*67^-erE62-pE*Xp!b`AUX>32 zXRx{-sQsHpy$dk3`xolZw=fI~3wu|cR$E*9?E5<{2Vl5KWHYD&+1HQnC@#Ne4Gin* zBPl;0%&^&LCN|&JPHbM?r+P-C_e+5RaJ)JGAW(iFf?!}HVAS@3O8TQAKN|A%FK|aw u-Ds*CO?3F9hNIbV@MXjQtmmt*T??J1$O!E7F?hQAxvXi1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq`$Or;B4q#hkZy4|d0Tp`=dS($vlgOPV zw;OhB;(mE5)`2TXBQJ{UAAh7)$-)bZ^tf6V%?{JN5|$|-?Yq=B$j8UzFR@{CW4>+0SdvSMUF>S3jrt-CgsUKHKj9yI%cx>i2tc)32@T?VUZDk%7U0x1CQ$ zMx9SywtxLRnSPn-f;ZKlAN_nAKj-(~ia!h8k6-Vr&AhXDi_L3UMurB3jKsZa5w$HvQPIYtJHPd{ts#IB?gw0T^16 zj7$s+DJ&ce3=;$u7#JMf5Q2Pf(taG;%71+6|9`)O&(8aCNBr2Ui@(c@Z5S9f9Dk$b zFz@$W?#D-q*VnGPd6~bydX8;vn)z{N28QY$_YFX2oLTp-;m>~ceLwFOmi(M|JFfWc zv9BLLZ;zXMZ6eTiIpeJim9MPtOY_(KyOF!T^1pp}nT&$8x!JML=WTXBuFbo<%k_7|7USWFTH`7P$@%8;Rnb)%K1p5E|qMlsIA;7@! zY<{@|(DEJzV5l20u`n>40EsFnqY3)Ft#{b>|Ip{;)Q=Z(*GJyJHRD<#$W?A*80?%tmVcR$`P|7YO0cAm^{waF*H#jpEQyr<@&|Km@$wr(se&c0?1 zOcBLNm4%seENW8bMA=%(?fibwpDE>__3 B-xL4< literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/navigation_bar/golden/navigation_bar_action.png b/packages/zeta_flutter/test/src/components/navigation_bar/golden/navigation_bar_action.png new file mode 100644 index 0000000000000000000000000000000000000000..32b2e2b45eed8c8ed98b6ca87f5a41d5e987ecbd GIT binary patch literal 5053 zcmeH|YfzKv8HPU&ZcrDa&~-r&aJ6FBE{LdMK@tQu$VySs$Uz`zD3L@t8UhIrlyQZH zfL6O85F*72d@*F$2oXXEh!W)NAq0paAVM%4A}Yt6`mx>FX=nPQ{axNa@4W9kGtWKO z+|T`FpYZoF-LP!~005@GN4*08z{m~&41-KQgMNyVuEs%^L1KW9Cs5sE{SJBL!RNa5CQj+qO~NOfTHTVq$BkZq9I{gvcPc8tQf(ne{_QV5l_@TIp0kiafi9v0CDZfrYZ}Pt88Uq zqvOm}q1qv=(i#5~Q6ZIA^%%h$$A{{PL~)bi^^H>ruh<+cOC{7OoAOddbUaD6xrnHK z$HAyZ$%65rYvC0|IUBwFpPeMzFOKFrBghZZCn{)!UCvHv;b}ATA;G~`D~IttCDl+5 z>t}xZ=+haw&y_$m%O;)obXB8i74gtB9~t^ zPoXsJuqlOnIbw#*mLEcbU|q5EtXB+CxHziE$IJ$4pDJ|8s|}HQ1hz6ZR5#J5NLdPl zi(~cuvAL1E3(-iU{YQ|RGHf*n(gXF0Be+BQ*<-kptmseAeQc{haHfB{Su~x#C>ObG z0pf0(+*qG5I{XoXspT~w-#bxJDQbq9#p&|rmDC<4OF0iVP>pPPbJra6NDjcrorA0w1={P7%DSqzC!9XD#f#TH-e@A6|s4b2d0(L(GFkKF-d zs|K;iwz86vX4=lAsGg4=Kq1a{R`};0@IHL?V02M8!J!M@lo}oXU~C^FN*+(c;B0qj zhNi}>VHsYPQW=XC8_t@aDttbhfr%MbY4QqR3?(c{0Agc37TkoId z2GbWttnS&PbS&Ix6eftcK%S(mVpe z;-w2HlIlQOB5MV^^8Gj6y{C!Gua4wD+d|d^+OVHS30HVA7#faCnUa8HEqb0;2a=ZS zLyDMHZ8a@IN8^lg4unG>XdyrUHWXdM9sefCoIq7ab@%p)!-NZSdUej~Naa5H9b{uR zG$2z;`8m1pMui>PFygUnXl_z`vTmWL2J zfa2WBWmg7ec6qN6N1v|}?(a`2^q=+G-O|yaY?^KT0#$G>()ef}o|&q=>l4v2Gc&KO z5iwmRoeC3Ht2#N26UdUyXU|GWiCMk$PgDWnfJ#$Vn#2v34Kswb#DOU|HI+43DHx99 zJi#JK36mml!7Bp*;v!1<9~hLeZa4Y4A_l`!+3k1iSWazyJxL@&6n864x9n@Rk;m{r zsf<51#sY1$eU9SCn%5^318}B+WjUH&y~`)X;r_A2EE>jA^iS1S)SGvEm7{)Coq_=w zU`Uv}vYTBDrN#==QEKpQq?=tV-{p02@b3@*drX>a1^_!WBnogcGzNgIEp||{=KjY- z{jGFg?KYTubKeho$D?}Gg->d2`ce@r3XiYo=Y-iNYyJ3P7z`tZJc8Rgp&+U!y1i)h zQ)I>ioG8z}^G&R%TQanu~%h=WC@fgpHB(hoyU zl;`Qxa&{{{mxw_DHiZ2{cc4g^)?udLe^){e8Z_n56_h3MC zd##k+a9JfI;c)zF*#MX>r1kBLhfOG=psCJ=@{bq$i<)9{(U;1l7pbHMs`%YymQ=R) z5Bmp0x}& P06M|Fq)+o literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/navigation_bar/golden/navigation_bar_current_index_0.png b/packages/zeta_flutter/test/src/components/navigation_bar/golden/navigation_bar_current_index_0.png new file mode 100644 index 0000000000000000000000000000000000000000..86c3f8f405a06dea2c07c3ac5b185ec917536e3d GIT binary patch literal 4165 zcmeH}ZA?>F9L7%z4ul~h3xYt~Y22F?CS|@sdzHwvDs_qx2xy5dbji?4E4GZ67Mx*3 zU>K%QEA2LyxCBKD3Iall(PE`9nv&5Lp~hl6ER>fH+FIz{#Vy$v;{33Wy&ulK=gI$^ z-22?$dGfFPin2Q>U`+r3Ac(wY*C7CWZ~&mw{og~B%V)|@AvYBJ(C#GAtd1H(Ccf+> z@?n4ED)y&;4?yrFdDqUv+$$5qDZjleh>%Si1s!%)i9j(BVNB}9SFZiEy!P1U6ThZJ zev>m4c6^jl{)zwn#)G$4qF1j9A>Y05Q{KTCR_KN9^v_<^{>apF3vBxd9J46wWcgl= zs>4{M?htEc)ON_?XMa{U=@M^a%*<1%msbG5m(jO32CM`CCt+L*M&4{3gZ2gBk^iE! zZU<6O1yBIQZAd5qZ5qQ_2xEyQ#;d!XGvTzVi%m6E-OPKW6~=rw1sl}XxZuZkjncT5 z0RdY({fCy(ep;p4eMDYeKN%g_cPyMy6IIf$_lcFp&mH9rCnT=V`=Pp;ZF2CO+DpwH zbC;X?o?cBe@WMvmRv7NDAUVqfxM9(vf0&{+zjMwcS)F!XC%))*jbvk(?eUf${fl*x*c;t;Dz{Et<&M zi3toqcAetwxb$E()VY0bzdXI@c?E&mdNHGcA@+>kpv4JvJdh61bn-LSgz%=B0?{8ns=gVV{zq&`1999g=Z3Hm94bA>3!D$f5P(S>!(|sAhVgtn@Be{l|n@}hWMFCGeVsfDx7HnHE{Iq|U46Z|K1Q zT3~Exh5Hqmx8BexNUc-QW3Yh%b@?aAKMMp;*BuZ= zP`OhNl=i{skpy|T>D(Rt)t4K@o!nw~niW|Ib(&hHUBTEZg(8O`q{GF^oB7?$t zjUM{@7oKG=n$_`?9NZMr!~k+KWmj`jcKKhd CkgvM{ literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/navigation_bar/golden/navigation_bar_current_index_1.png b/packages/zeta_flutter/test/src/components/navigation_bar/golden/navigation_bar_current_index_1.png new file mode 100644 index 0000000000000000000000000000000000000000..99517a01f7f3663630a15b186ed24b3603d0a36a GIT binary patch literal 4171 zcmeHJTToL+7~TLHFbHa`h{|QW;fxoAR8a#)6dM>YaYQYOO|(ggEz&dw41vTTjztS0 zUPetU;5Z#k9cKuF7}9cyX(!fd~9UtmbU$QSd`|bX_ z|9<<;xBsR6WYYY3%jN+9<|o9*9RR>H6abGD@3}7I)|ve8T^)vVfV3Nwx2+g-4ZJwJ z6ApU28sD375dir`+gbtI!HBc)){!pdL3h^h;`@qjkqg|W8=er+WPFC zsJb!(7jZf)cClA~+q$FP=Wv%Ut~SK)f4nY0d8v`Q;nS@6X2mzPJGl3x1P%ok6?@kV z8^&VH20e4T#i{2lJsbU342qWEd5AoG9~OXJ$0JM0bG!k#+*Q@S+?ClGe~bqJ46j*e zVW?}t=XowvdcD*LdYB_mLd2Gv!OP54KCdW3(|m}eF-B2C3dU*#GR54UHm9eGKe45j z^DP}ROwEKKkM5?I*TF;VH?ObLp)MSxyYe$jX;rm^iv*oCn;+Mw2hu4Av)>F>rTz-T ztJXuB7TYc15+lk%(D0DyKCGr*urr;(mY}_{dAj=nv>cux%k~A6iXyh&ZT0raTn!^K zFpR>|Wwx$);4nV%JK>173@O>|b#h%T@_e~ftR1c84@-S5dUel`9X(v1Yf@+qk;KO? zcjo8YO+n6(%WK95DaIXZuQjFQ_7&i1RoAOG>+7eUc06QOR!g^{paSpJc(tZ~+UB~k z(hwfF;z{yZD^)$^W`&hQrCY}_`{F(A)%r-w0+aW{-gbsYl$}lpkcn{V( zn@;j*-iA9-cUa#_8$wQ~e}gOx_QKP?w@K+I-wgF2%`qj{F$F zJnCqEpj8Nn`=?(dGqp78c4B)sJuEF1Td20{ze_`IUIRxKn1p>;LfxFM2rk0NkSPE` z^KOn*0YF|6kS1S?khXN@s~M*;X4Ip8$>I`pI1LtZB}uYm+5sN`RvR!F03toS0BH1H z06^%fU2h{l4qQ*DJGYk&>!j?L)z#9@u~eSr_8G{al**MSv$9Hd2y*&OP$f4g80)t} z!i%x6W`;AJGm{p)oLCVVNH1c;hD#XCCnlXY+UyDp|XEybrB`JY*oq@G*(WlrC+*F$O~EFlW7>6+c(mpeANd{2eE+C-1b!S1Z&^&b*FKmj zi*iK{`@K{32b?4D!*(JPiAs&008}K_c>dR@4{qfK|7F!~LfnMRy6oG3+bssS7~En2 svlW;7mwB(EcN5}v2DdZ(pUwc&eCygi3pKso=*j{l>?OyQ?>?UYH;R$EEdT%j literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/navigation_bar/golden/navigation_bar_current_index_2.png b/packages/zeta_flutter/test/src/components/navigation_bar/golden/navigation_bar_current_index_2.png new file mode 100644 index 0000000000000000000000000000000000000000..3d22dfdab1a78f022e2a6a97486a9aa19bb4ff58 GIT binary patch literal 4105 zcmeHJYfO_@7(O5y1;Us!f+&}|iIRYU)*x6YWmrI>6vCWbRBr8H4qVq2n1w zVFN1AG8e}d1w^)hB1K$i%Yc4npoMW03T04e#Shxj(ti7jZppGA?)TD@oZFl8o}BZX z=XuY2HHH#lZ@b$T0AL?^j2sKVHY@;^@t8MJ%k|vi&(O|-85t9FVwG0MqiQVxISD}$t254ExkQEZYajn>xO4B_R`X9*!}D_3NMgc z>2Grbi=l@%6hFL3Ccl%k&ogj@_^zJ%W9{)+V^qfE*!lXg0z&rfWo|u-ge0}flp0OG zz}vlWIbYDjPiW=?M=Pdl({&Px8w|ygXTqGG}2$B)VGK z|LugGEds$v&&FeGlJ8;vg64wlHWhEIZ`%2k`Aq4*;Yxc{-72?f?e7ItJog&xq)ERo zUuquexN|gsAm`_(*9P=5wLY2fbv`j?+FnMK>K%3s$QmKUA8xP~9Qibesf$te&AcFD zy=Fh)cT!L6uWBnLv!sPhA5piNX4ZUD>33JQ? zr@+l-FFYF51c?)C51@Al6lb0++0Z$97hil3o>SXOXZ%$E634q~`{T~C_GP9z*P`39 zEopr&dbmB}u4DC=8`edA2SQE_`tk26jy-*Z_eH=Rt(Dl8P^ji`KGMv22_h?>(2N!- zZ8jAqH!qG0y-WYA#ruk1J!7V(`fAc7E`N zP&<6QCOt7<{bcNE@7?E{$x)WHNVck11?AiM`kUV8vO9fi%tLPVd&Q&t3NP~hp}*F9 zuDdbCn2=G`zgL3nowBp#A&OLd1EmR`LK%9;?G>c|q-OX_od2tlTgsxRBrGeHWpT;l zJeEN&>@l9xs5Kb^`LE5*jG5WKo5(fARPHDB0gN>Hx_2;4H%iAOdxlp#m^JB1oHQyP z<-`{p0_-Q{JxHt9i{?>>x)$Q$7D6zWMf?har(whsQ{ik_l9rcS3k;JeU1clMQk?L@ zysA~g9%@qEX9nr2MAgPaO2cmpB3E~0bWoANmQQcCwny+sUHSPRtDQUNN7``0UC?>R z?O?KT?nBw>o{0n>pmtCa9uNPerfI-(r8A z*H%~<8yz37)3~8z@SCwhUq_628;vIKZLtGb0Dw0I6|>O{h?xv#A($fr`e&MjU>1T| k2xcLeQ=|V&S~y6uNZkvaV;*!WM^k7J8Ac(ugr*e#2{aGG6951J literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/navigation_bar/golden/navigation_bar_current_index_3.png b/packages/zeta_flutter/test/src/components/navigation_bar/golden/navigation_bar_current_index_3.png new file mode 100644 index 0000000000000000000000000000000000000000..0f854f56362174d0b155199462644da5465060eb GIT binary patch literal 4099 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq{Rmr;B4q#hkZyeLLQ!${zUmydwSG-p9AkUaG#z)4EBiONqm2g<0Mb zU+L_pyIe(fPFCP*DoDSg#S!D-qVmwKX_M<)Jfobx~5-kS?hK3`epYH+r8|+v(7#Jo9 zDljlOxHSL;BpI0)7*foh?Pcsc_s!W}YWljJWpC{NKaxo9>6P~HPhLM?dilGZ)%T*C zmDB$*CK&#dy2rY8`*!=f-@EN)Ud$@LS995-_*vV=@^3pgR{uIPd!6maN8HJuuSMT` zr1vmmM*X#$|Be6uKih8iqjBTTmwVl&9e?+)#OB)->Gq=a*7^2!emOpTPvd0t7&k4L zSO4(n$D`HzjXwYSzW4jx$I|h;^L^AN7yf&6&*yr~-mO2y$~fGQ|Ji(w&+32vGi&~u z;yV@3zAU`M&E>y;kA2?$|4W^BUJw3$*Wh09UWRxVJLXMFc3(TKkEIw%-sb<8@GP5e zlbG1dpX?1!6&=EkM(!iXXy5CShL`9`v33NyVc`AD(Z$!2I*3B2)pp{`+d80 z_io8dm#a(hIsd-r^!nU>5Ptb{ZsE&^?#Hf1&rW_kZT9oMz7|5yfio+ zFKb_e`vzdj>tTotm~0q%qT2BwFz(LSzs@nTJo3~2NOj>3waYI{tls+qli}-w&=5sU zmsk@kZo!)~zOzj``tIGkimzMW&b*$V_vf|$?(O^SKbwZ<<@R!m>+Ai^j`_YV`02~(-e*8F|7I*%U@&9M_bHTRB)h3nKyjyrP{lT>0jk?IlMRjZ&CWo z_{Z(vW6bS-Kb&m5K0aOUATVv8cj>1X=yYu0Gnx} t8DTUdjAn$|ozhD-ne literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/navigation_bar/golden/navigation_bar_default.png b/packages/zeta_flutter/test/src/components/navigation_bar/golden/navigation_bar_default.png new file mode 100644 index 0000000000000000000000000000000000000000..1017888e4af4191740d56b4fd5a2edb27301a523 GIT binary patch literal 3948 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 O3H?jt>4u=BJO2cq86qwK literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/navigation_bar/golden/navigation_bar_divider_at_3.png b/packages/zeta_flutter/test/src/components/navigation_bar/golden/navigation_bar_divider_at_3.png new file mode 100644 index 0000000000000000000000000000000000000000..d7f8488ff97a85ed263f40e56a468ed331e81085 GIT binary patch literal 4670 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 Slmgr83=E#GelF{r5}E)u<7pxQ literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/password/golden/password_error.png b/packages/zeta_flutter/test/src/components/password/golden/password_error.png new file mode 100644 index 0000000000000000000000000000000000000000..ad971987ef2fba5b4e49881ab59423eba7169383 GIT binary patch literal 3850 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq`#}r;B4q#hkZy9lPhIOEx_GZlV4-W0r$&_FAQly`_Q%+Vu@#BI1!N z-rj26@r7OEk(Wz&(*vgrL6_;f1jU=`6}Y=Ec?o7`w;4_g$zHIyC0J>3y%crf?b*7fz(GVkt2Wj?#pZf|n$|J?jJKi=IuyZ3hYY4NgY zazDO^&y&;N`{&d~{Xeh5_u15ac+=l!`~S$)%1s`L*!f-Mi~I{Ne_Bq`)l4wkGpU%s1n1bASHCKr?7qL}`OMq#zpw51d{}<|t+{nAe1rqx*nehVP)WafP`+Qj zeBRHO|80wBfx<0kg?YY>`Mo_KW2%<>Zva|y_{_8DlV@&!WCAIFwo!V2)a|=*K-(M6 zoYGhLymqqf-ZN>Nh0o6aQfGbR;g)isj>^rmtGA1zMAZjQF$RVU#77Bkm1)3Ku=_Xr z>wC-$3^y1yXU-CP9S3yT4IaCLK+1@Tg@NG&hX4bEf-=aBJq(O6!86Atl4WFjU-s*- zH`(!bqjqvm?%m~Efoe8qnE76Q^y2-033K}&AE&a}f4VMy?3(lY-TB=>&FSa=Z2AA- z;_CIiM;~ta^7H1-;^e}LivQ=%pYJ`of4Y7B9P4dzbs1;wZQguImVseI=R2+m)q8Vv zJ_mhz^?bj{yC?0Qv9108=U;P^)IoV; zm$pNm?a!lMbATZ-r}F=AmTa@=+D{h7z`Wu%yWjBGwWaLGr@p+ls~qURa~Aea?7%QW z3Q2J6B842*;2af1OJAb_G8!Q8!e%rvj3$QB#DJ?R9?c!2xnneUjOGr^MmlXvhBNhy Y=W4DR?AyO{A_EY3y85}Sb4q9e0J$w1`Tzg` literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/range_selector/golden/range_selector_rounded_continuous.png b/packages/zeta_flutter/test/src/components/range_selector/golden/range_selector_rounded_continuous.png new file mode 100644 index 0000000000000000000000000000000000000000..f0e8486afb2117bbc109edf2d56f3e4713d79a6e GIT binary patch literal 4777 zcmeHJYgAKL7Cs;rd;oT=qOpJuOIa0>p&Fo+5DFrw!$Xia0T#5-5(p}fKpq5PELuw~ z<5Wf{FIf}`kANCN0s$?MSTO_&Nq`VS0eK{ZP#$>@Nam)$x>o;m=HINv{d3N}>pN$E z``dec``!)o_c7fI+Y10Nz2ti#2!LJ30Wb_Vc?bGZnw5VYS`5;Id^|z(!265Pi&47g zrE4b8LooUD4gh}%zI5S}YuVq+MB+3NmdO5b=VmJk}m$x>_UJe}e4m_kr&V%MUIKBEEPx-wxJxqSWQ2T}ynO z3w7pu)<;*SQ7z>Bzs}9P-|bJ>%8quOZ<2rPteAf!S4!8ZkxjLR0GKSu70~ix({ZKu z7gDnzMne=9U`3fp%+=QvVP(hK0Pd|o#!VHrQ3uNLOc|X_Zi=Gur4$-cGl<+G5>-9c zkwb6;kcWk3Yt=vD)Ng}R&HevQV0>e(6O2x%REpA4*I~uP#+&6y_z4dHstVllcLUIC zasYti7xN%l91V>CxbyCD06e}11^~nxnE-IW2EyhYF@VVZ0eVz5?G^iEY-}yn90L(^ z&yq7+=|e*tIFeMYXUM53lm56jQO=MK9734`pz7a@Y~lyeN}ynTZAeX;A$=K8x*91UMKPU3c7wK#jGam&-$bmTi7{pqy& zWf_Jn#Ng#$%^QHKl1AQ|`suD&p;-ONw#pWX))=OZ(G&3HuEfN?wVE;?Nt8G{zHjYY zMUAy3WrkhZP+wmUwL-9sjSV${oh_T7KeNhJRWr5~N-W+xFH=VA-bNwRv&F8Nl56Ge zh>(5z_QBn|m@GCM9Y3udXW}0V?S71N5$$&?E! z5auJ*UdHH@lty%ir^Bk5NycDn0+(OszOjhyWmlq|$~N9Q=z?Wp-R;sxkM7EhTP8Vg z-i%B#D=E8-t#W(_TXb4iU4VbZ9htH87Pw`Gn|mbZFD)%SMIt}Sd7P{6k8P6pgHBm( zi9bJp#Mtr))suf!Y}3Fv*ywC%bJfs(^f z)WPURyRhag{GrgPaVk1fu|&$mn}X1v8YtQya+R7fiCnqzD)Ri_TBjD&LL1GXHgOb3^e{T@ma*V;bBos!6C-Yx5@VBEuhZR`Q&*R@5ih=oCeGR zC2nEA!OemrN3F=WZkg(Vuwxyy7zKXX0LSMfB*2}ruFwQ=w1_*blVT}nijs@T&TcoebPX>wCn4I70aAu)MIdcuTWyo%?((rU52kARQ#h<> z6w_jLMq~MHm$pmF2#ghPa5VQx;dU$*OHwA@D%t$S{624u8^9kKx#s6rUSC{XJl>kn znYBC-VUFAi6y<6(9n8}&7}PXzL8h3fO7=PeEgQ(IaBXJ&+G0-^KNsbz|& z1CiBNl-g9m)#PgB!BS+}iksyn+K8TFI@?iiI3T`?GKJp5we?_5f6i`D8xzsirr z2Wufa4H=#v5Zu0(#(&82r3s)R^4k>@Ua~!kj%%8mbKp-9(mA@5g-&Ln2^sCMnzH1$ zg0N@+!tppYVN#GxeaK+G2brXMyEo+Re;5@1#Z1|O?kKRMz>Wet3hXGbqri>=I|}S5 g@PDVk8=ax*vy=b$FyI&m`W*(By!|gUd&cGe2R7^wcK`qY literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/range_selector/golden/range_selector_rounded_disabled.png b/packages/zeta_flutter/test/src/components/range_selector/golden/range_selector_rounded_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..c8cfe46675c698e17b711f149505f098be90f532 GIT binary patch literal 4765 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 CDKks} literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/range_selector/golden/range_selector_sharp_continuous.png b/packages/zeta_flutter/test/src/components/range_selector/golden/range_selector_sharp_continuous.png new file mode 100644 index 0000000000000000000000000000000000000000..8837ab7bf2d45b7bcb3fe32c7eef901402928eac GIT binary patch literal 3760 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq^f|)5S5QV$R#Uw%K=6B@R4Pe|qJtNNdQJ<_kx{XJy&9Y;m=3&X4yf zEGiIHH+MbyNU3RZ>oVu8;Dbw(lB0WW2d?PmTjYGs^5pv&Uv@paWAnXip8Ws+CnIP2 zE$0V1!QsJ?P2xaX<>V%p->c2Pv+wWaGtIAGrypM%ZGXnD{M(xyUk|@2UhcoX*Sfqc zeV%l3&(^J5H}1Cn{U$nppIuzd$JU+aSQr@ol#)6yyVKr#K6FQLOTLzt6KxmPDzkJ3JV7V!vsMEVg+aJ`Fla# z#{Bc__L{}jyK$qPY&Cr_uk-?^|fI~^>3rtkCLI~4i~?Ekb)_wDyozyEjR_V3((&3=Bzh%`VlhgZrk6F|Hh@0@crIBr_a&R*N@LM_Lsk5#~`!kZgsWY`u-iu z=T+p~)PBGTjL!feM10<7{5k)F-=mA)PM=@RefGC%NyFjoFZ36#x83*ZvlL&0IzlBP zIovF7STiRg^2LIwQ;$CLpL4;Bf#Jh;pwHufzPojnUEIuE%<9koSFf&}v-rLzemWb& zgBLr1v1M`YdvU)gmbk%IU0 literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/range_selector/golden/range_selector_sharp_disabled.png b/packages/zeta_flutter/test/src/components/range_selector/golden/range_selector_sharp_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..ba2defb2af0771a6148b2721177555708a89f1ad GIT binary patch literal 3810 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq}2b)5S5QV$R#U8}npRB^)l^Kk23D#j#OFxFx_#O2vyS%7trI2h+jo zz)wsHT^(&oD>F4SDi~OpWRjDQ^F_{SVG2~x*pvNx-QH@yx930mKHd3g{miW|OMWGR z?9$V%Vq{=QDD~M__v7r1+x9amKU_O@_G3o1`Rv_wZ(mi^d`Nk=)9~1ivbV1+W+Z>R zTYgWj{9Z-wx@;x}hX1BNA0D57{LA^pGuh|c)|=JczBxPj-OnGn&%e)nUiSUl@%hDX zDkt5%yZ3KlI)?xQgN1Hi0?;x^Mxfpl77hl634#g?3=VD$K!*?|nD*&gbbep+;lnf8 z^Y_%$zIkguuQ;#v+0NDadrjv3`FQ+HvHHx~+~VYQuYuP5&(F1*yD#F45Cg-3tO6Ep z28I(LM<^&eFfcUqFaT8;F|l9~oV?t`a|1W}ut*rPkZc?=d{~?c2FU-z|it zrC)c)0rjSBJ9GXyh28;seCEl*`VS8t6xdW+&He8*U9WfX^YhQ=@2|SyV-w*cgeEv}9@2`yXn!^7F z?|h!U{n~ML`Fplk=Q8}*e*V3^M09`Ivw8o29Nzu-YV_;nyM*T)ajms0#~mgzzjY(# ztesys^Z!~IoqOlr-Rpd|UG8m!CZzISnY_r0dc6@RyFpD~yHA9GRP zoqKyM^YZV-e36^>O;6pFRbLYhpz4Ns3GcQ7BAr2cJN@%;1FzlUFTzkU1k57+l&$A0a2 zWE;=G5ToGVe=OqJ^J4c6_>%(G^nq0{`*-_g@$R@sI`CuzOhxw|S8I2~J(PT54Y)ERqjb@qAEHj#AhH#eo$<5?)xzJA| SUJBU0X7F_Nb6Mw<&;$SiEY|D* literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/range_selector/golden/range_selector_sharp_stepped.png b/packages/zeta_flutter/test/src/components/range_selector/golden/range_selector_sharp_stepped.png new file mode 100644 index 0000000000000000000000000000000000000000..3875e071cf901da4beb0d29041faef67b218a8bf GIT binary patch literal 3845 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq`$mr;B4q#hkZy_vhbvDtqAL@rjq$@`V&FGGh*^+oIXE@QAzhRhNj$Ac;jH~E%qn80}PV0rp}{e9JY)9Szc zwYgk-f0z5dttV4Hm4NK+)2(7;U`Qxkv;Y5b{$q#R=lk1Me0wvq@c+N`%jf4>8o#SI z`+Mi)3-P z;RJ^Ov4U&%m%p9+@yEx>E7|?$-I1xU_#H_-d3PMp@(A8_2|z0)K@Le_;b35xAgI8=;NaE(3<-3>w7=)>vUlHm z7!bSX!=**xKMbD@Av!WSN;<}-rs+DdA;pt8wLiQ$%}v0?R(Gg^K|@wvwwf* z|M&abkY4xwcJbrO|KFamsZV-5{qgzws`_V@7Czha^ZT{K@6D;K%YOZ6N9AXE_FcjZ z_N6~RNheqTK6mD`dETGeJ)cfpYkbG@*<#iE=ePrBX6=7*9lq;_-Q#tuSf6e9osz%q z=i9f|kH5T}&X*(4z<2N6WZU`I-S6c4?cMQ0^aJmS&rh#B<9-ap-EqpBv!2JAUSD5t zu`d39!Nu&9IpsSo^-rf*t*NTt=s!TG-!3%z0l&XucEu-6rb)n zeYP@EZS}XGyR)9#ai1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq`$Ar;B4q#hkZy?7QcN${qNa{7yi*x%FyODAT!)WW{sV8#p==6yN0C zJ7^?rZT?G0j3rPfRr{tETVYR9hkin?$*D(fC)cED9X#cf@;QIq?F{8b zxgGzXRmDHnTvqe(=ydM2_it6D?D_RdJ30IH zMCJLs4AWYHWgf+VI$n^UoiDd8yu?qQ(#*`uS(g zo`1jWk9X_;t9=z1;mFN?;(y*9srz;1$#-^s{wzNGfq~u6C-;N<85p$RzDl3pzkc7p zv{!~dWFw+y_x`@_-}Bo~CO+fup>l^K?E9Dg{reiMGPl0I{*~a5xjTxVC)E7D+uM45 zcgs1IzWdehuP8Gx7&NvrKl%4nI5{`BY|G^hMsoLRDqaaPBrLV;{<-$g56)|cUW><8 z-0ytMU4NZ*e_HkLjUNxP|DRRG!w?a9`*wdX`~MFIt|V`0`opU~c}LyfUlor!FF*eF z_I7(!UTtmdp8x-Fqqlg-2CxMuz$b5{onIWujOk?vSW6Ac{k(i9ap9Xc}xFDGmxU2Ic9osHQ6@5 z-^AA!3eP#4_V~@sxgXD2?>6&h_`wOZG4N?b|Wr1mgVo%uM_K zw{MRxmlI@oS9LCUS|bA^1A~#>K_(!{#KOREf literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/range_selector/golden/range_slider_rounded_disabled.png b/packages/zeta_flutter/test/src/components/range_selector/golden/range_slider_rounded_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..4e0ab618d907b716cec1a6f5fbc9a6e17ab1335e GIT binary patch literal 3842 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq`$0r;B4q#hkZy&-YLHDtqAL`$Jg<9J@C-ZT#re%Q_`#l}dquq1>!{ z)vxVuOs;R3zD)e`l_iTDdF+Lf9yKy0PH)xKRP4Fky;ov!bK-se%awc2ou6F8H~Hro z>(6u3!{*skZn6ei%Jh4g9FU5TTOG{Lkla)F``xo0Rexu1-1@g5C)ZvAC{j|JD`Q(! zG3V#olZB6d9J`{-bb$N3U8>+3i>9Mf(l+1xar}AsG4bi^`|sYBuh(3+W=+rcb93dy z&(D|r{q5%^K8CszcBvCN1k{T2i>qrsUEkmTo4@SYu76v5zkY1z*YCM*cI|tO8AF7~ zH_dLhe?~K<&G*m!eYU9PKU?+VXWOf-gc)?Ceot{#c9?Nw|GPWV)Ai!3pZ(U0-DmbL zH}CyPABGJXZ-T`pDo6M{%AfzQIA&*6@hd}ygv`0NpP&7B(fm2M|De#U-B+sqTMZISd;#w#mQg z*i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq~z_)5S5QV$Rz;2fO30$~HVq-e;(GhJ{C~v0;LP`hzo0bLQUN$sw|k zdtt7_CcR9i*ew_LvT!wp=xkAl^$gF{>5LNj%lyj8+RHQf#1*yGPT{dF7gT0tny+)Y zC3$O)dHl1=Yv1|yU$xwG-!@%tNA2%#`+*K~NVtB58R!=4Z`KbMtG`%x3ortJhh?)qMOC5pm%R!-vvu!OuDw5{;(o)tdRuv9PrJ|7U%4 zRbA@S&X2dU*Y{1Gs{Za*4ugUIo8@Pu%N=H%Y30t(t=uRRue(89Z%=7>I#WYsvVH2k zA54c-?Ed}ef4uYgK65j3^X*^nt&81#?DzZqufwGoHq19#F2j%_^!(i4yxZMRC6aUU z^7>X`k7#Wg>ln#bofz5Vg! zvc0b@6T_Q~>2|wq{(bvi?_;2NBOJ3cbeDN#m=p2`F-xvrAra<|1;)Te!g^N@tLWQkI$E% zt{*S6dbM_Nzft(P`Srzf?EgQzl6+?B)vHqre||bz_~*xGu+*H&OkhNqOq(`sncUNT z#cywIUFp7KxsL8T*?#$&k~ei17#F^^_;BO!cMQ2ZHh~3J{}dnU6o&0SXlGn;O@s4 z7CM*bnla1}2S)8gYXzT2A08fl{N?5RoZoxJ<9@6>D#Wla$v#!?C)1&ncXxIg&#V2m z`|+cr_W3V=0{!~&UiE(Y%{SkyJI}`O`B2@dJs(+HPM%5I{PElE=f_tD+yCnCevo4( zt?oZh;{BfDgGrnW@zD6UO|1Ppx$xVYof|i9G+Y;RQzE&i@X3i!5pn;nS(LqDPtJY2 za-};i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq`eIr;B4q#hkZy4Y>|Eh&VWk>L;jXJp9|Ax-cPie{YTh{aO7RZP)Z+;-P=6Kyp#)##ge;U31cl+(Ht&t25;w$HU>R;0Ul$2y-Vqi#N z;b35xAgI8=;NS)loOyD2!d?0E_x+gUXH>spXL#_p@4b~Q|KxR>nNU@yeUh87@_vcq z!THgQ3IFDKyf4=|$c1Vak_9*W4CB1{8G$Zp78PJ%P*8SYU})%J016l}u`n>4;20Gg z4Uo~qFq#oYONP->akNGltqn(O!_nGsv^E^twc%$rzb7(kg;Fp2fE^14Pgg&ebxsLQ E0Q5B9i~s-t literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/range_selector/golden/range_slider_sharp_disabled.png b/packages/zeta_flutter/test/src/components/range_selector/golden/range_slider_sharp_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..0c511caf8fadfe869fbb14382dec71343a868837 GIT binary patch literal 3349 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq`egr;B4q#hkZyH})QK5OHvHFmY%p>5XM=332vdHEAok_;j`dw_97f z;`t-nz8L?`-23{i#N&;O3=AA^rpW=#i|GG*iFt$H^w+u9{yx9_{&pH;L;lmsQ|6nP zm>3vRSU4CMCI~7pFgUn102NCzf&|s(H1ho+s&>lhgBy{}k5|8e4_(l7@G zhK3#npy5VLEDQ`MeC{zDeVwhR@uOIq;mm#Emw)?IBN*Yb90Cjs3d#sAw+)Xazf=U8 zP`UxP-B=woDyV=OL!$vQ8Xyd?>^hnlMiawmV!&0IjpmNg+%cLvMso*dGk3IPphL+p ZPu)OvMgG1ID}Z^B!PC{xWt~$(695;hwaNeh literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/range_selector/golden/range_slider_sharp_stepped.png b/packages/zeta_flutter/test/src/components/range_selector/golden/range_slider_sharp_stepped.png new file mode 100644 index 0000000000000000000000000000000000000000..40c223c98dca2da9b2257dbbd6b4adbd1314dd08 GIT binary patch literal 3498 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|s42wL#WAE}&fB{iy`mEt+8!ncI@&a|x&|!S9qF~uJh;es(rv*#0*WOC zCvF{dTK+Ebjjl`bedjZu&!|7VJ!$&?Cr=Xg#_i_;8r+##F z{(k5!|qehHFuxjF#K4fk0usFWLo;Ik|382Cdp{7} zR{M&b;lXd&_pe`l`s{Xn?<3Ii zqr3<``SwDYg&+)MT>e}8|U zpDiQ9w|kF2J-;IS!@+DXYxZN~Wxn?Xxc==FW!U!Lcgg#5pM$y)SiA-HYue-EAAlas zIgQ)eDU literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/search_bar/golden/search_bar_default.png b/packages/zeta_flutter/test/src/components/search_bar/golden/search_bar_default.png new file mode 100644 index 0000000000000000000000000000000000000000..c7841dcd3cd557d1f379a683619a18e77e9fccdb GIT binary patch literal 3889 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 literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/search_bar/golden/search_bar_small.png b/packages/zeta_flutter/test/src/components/search_bar/golden/search_bar_small.png new file mode 100644 index 0000000000000000000000000000000000000000..dfc3a7ccb763588c180c0ff16202b07479451374 GIT binary patch literal 3833 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq`$ar;B4q#hkZyH|8w~muz@wyjkw{W7o*)@I_r6Cqx|%icVa%mF03+HsAp38YeSP=1aG-g{$94u5VYG5@_PL=e^6h&s&QB z{ja%vcD3>6^C>%H*5zM&y>UlOZ}-uw5o_16GcX*8opHA8*uk3oGvCvbt!DO|yn3~$ z_Rpik8~5+GmOJctF}*1zBXxY%D`wp#lC!}9%d?d|<` zZ)1SY&@QT~GTZm_+V;HCv-bZ#e*gI6<3*s3*Z&=U{Q3DYA~rsM&%XpadGYR}$6lvf z%kMqiy<%{0t29-M8~i@VB~I@$pef&3|_LJy-wMeYzaq^ZdBF^!oqbZs+&z z|MN9pdVT$;|6aTKtN;AlzW-K*EdxW&qse||ef|E&uJ8NTYkl{8zX=0FLk|Pc(?(1z z3=AhY1Q-|;lpWxL+v|AV?>>J|zCUhG-J9&?%hSsZg&7zGDt~=>X<_y2$MFyI=H&b{ z7oNSVwBgU6>HBwnRs?E&`{P{s{^{?wUku-%Hu>b*{6CrNfEL8<&8^#a{{_pFi;J%x zoB#jIaqF8v%WkY&y!i0Pdz+U>-@M&_0T`ucp4|QZe{bF6ulo7bd<+Z^=2d??SU(38 z3$ln{}wi$=5ew}+BXz!im)mOiQlGB%jedg!H!*9<6Ca@jH^~Ay-C)Ahw z@P8{m{`6_loOyGtIf1I*UCAo71tpqCMV5Tes*^Xx=v_B|{WU^o+T%w>nodC9SsTxO z+td8_uHpRmeJ@i!1vcbVYXIHZeK2?fJlL>?<*1+lYT_CVkkJ4c%`&)(-qGAKnma~w s$7t@rY?O_b45KB(XvqL88UFC^Wxjf7<4p%CU>||O)78&qol`;+06&rwS^xk5 literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/stepper/golden/stepper_horizontal_complete.png b/packages/zeta_flutter/test/src/components/stepper/golden/stepper_horizontal_complete.png new file mode 100644 index 0000000000000000000000000000000000000000..409bbde6df67782c7f28f08d7463c4fc266c2611 GIT binary patch literal 4654 zcmeHJZB&!z8Gb{splCCzM+Jm%v>vx%!Qc`?LlR1{)Pt3^b=nCup`kEOf_xcBAYZm~ ztZhD=91W8Y&Sr;mS|Xr`kS{?Js)np(8e)J%0tAF4gp@Z43CSXOcFy)^XZ6p1G#nTL)>1{Wi;==T7ydE`*mTSsXk>sY~c1fbtk->gRe}8c5Fp% zMEwJC`u*)&4;ODtgQ$5iq*h0!`K%2Att;F3IkUBW4rj zq;JB=D$nnnyN|qMbml~;>Q8x>+N+#>mquYk?8x)tgdC2juOS(W*@o{Zn;%~+HMbc3 zUUH>2&(1cY%YV4wP{t`RZC>!2Zc+@8zXc&57I|w~8y@TEg|mO}Hvh@13TF3CyI2!{ zN#+gIgFFiip6{%KilPh=hyP%0far_}*|+P4un=XZ{o&Rj95Et3V9=3#BKUz-cIUXurICYx6bLVp#*bO0V_mwNcW z!Y3+Ev@?}k^>UA6!{B-?9ES$6AhCKJjss2ZXHTJeI&kHaRsNlOGLE=qxhs#*zsS2k zghA)U)ZwY@>UibVRUV9t_2&?(Gnebt^)B`Ni%_2d%grZyrzQH zZ3Na7doLZezqAY1xXX~r4lCk1E~K#zJakfsPgdtw=J)N&e0&eiw%Ju5&bgbio-!7h z!U7~~uJyLYi$KFhaIN>i_G8kp6ctSajy0smHlo(}#!EO{MBAvm&gZ&oQA}CJR-kwU zYw|u>J0sTF{6hzD-cL+~EK?uJJJf9bJW60~!b4J2-HtEq(Jd_7)iMv=-t7RXX|crk z7g(h0$lMAqvaHdd$Fr?X)7AeDy+I;lQS`LgR0e}S^$3YEA9X#ERt(eTY6yzr5mC_o=&TjmItXgi zztdB?Qtb6;xUBp1Z}#DCmZdMwZy{GI@(4Bk?yp+BrN-YX>6%s9p9q_5qESEnltByZ zRbd0mLUUq0?E16#U>`{EIr2n_f|}n^*nbJXTX~{$RqcEr4O(BEW0q&bcfyx_YL$*3 zmv)(4U8+a1tSW=5*C?G~vX$%BKG(-BKw4C`P{3o?E;}5$-1HQ`c_0v-yf1ENa#CDO zVqzjm+sCi)^bI-Q7AmSo>0@u0LGm~{NmgW*!lO;17dEu&oT}WrLDx(P3kQI~$e#c} z!tRWq#c~12{~n}VvOLYn$yQ-qHtgKoMWIl=gG3qacKlg-ii-ekvJy((N9b$hW8S5F zD_!|)L_XZfEO&G;ucY3x8umA7j!jeDXP^=4_wWp-l#iD%ZJh#ML2tGA5z?}_l&|^E z9Ot%uFO4_v_Ni!lt;H@{qN)XOIEmYSa#)Y`pRF82J8u12gS_UcZ3EMZRElv{kL#xC z<-<)+z|uxdabguS$Qv<5x-RPFnR`j%L+L+Svmxq2)cpvn3&|!Vn~-cm7vIbLE`>ZK f?5xg@l+TbS0hI{?hhmC+E-3J#){V z?|$dp@9ci{Q6gih_nY1T04&|{Vf-!t@CX8cMaf=^anB{*ksSO%0CzFA05VO0311Mw zEjxC5;a23e|0DqT=Ix08V0V7y_~V^Fd~f@tW5`fWiC`z5TeA>Vxav*ydfo=6ZMd-LuCw zp5LFUQ3Ozf*Kk7iYt(i<1x)MB>qN1@>}=JwN$2+Bz}k#JmfB>({cHY_3n zK&RJo+#ehV0HUv7;0#E4`br8@Q>m+ph!OBq6EhU_G@^l*G<ymHKBvOkIiQDO{Cm{D@lmg{3Ge4-@K@)L-Ho;z*bP6SbGKtk5H4gdi{!=od-R4c z?8|)hEOk zX5KkFUp!{*vey`*V)^=E&rVTh$+(BM)4Kl7FZoqJB5X4>eOLAP7=;3>a*A;r7b0&! z3?OC2LSEJx>5#Ar7S8lwqkLF7WLU=06wR9NBuy*QoLUVzTLIZM{dRp4v#X}q`n!Kj zMB6Xv3-mph^sPH3fyQquY;fwOB#mM+PcL*Bu?~yAa2q^#9&-Nd(=*c;Oh!*L2cj&^ z{S_azTEW5o8nyx-i&+#+Y__2A&H=&6c2tl#Z1*r@uFBdZ{8f1R_%VP6o zrW9WZJiL=nxQ@jXsntm;A&<9WHm|!Jyn$Zerd1g#7B{E3>Jv@aKuIggU|(Q+jApo? z`UO!?={#uWU`f=0{5WNEf;GZ*ly%45N&-OwGU9 zq-IZOIQ-5r;vrjeB;!Q#Q=!%q*_5TDB2-$}2X`J^2Wwhrwa9(_r zqul|KeNc#H!l)L~pKK?VefrlK!J^E4#p6Q86bQ}DvA}!^eMNe^l@NBoQ5G5({`5|1 z7Obu4nK)iMv8tLXI8%R=j7~6`8nF8WnaIU$CVnM4(&Afw=g$vax1WMyFI3J50;8fJ z45hx!CMf*>Y#M%CDl#P1Nd%Th^J$^8ZKVN~u)gNV;mo71_b@~X&9l zMGlvC0aRdtD;<47*=GIMy{xpoKm^sd-u9s%dNLh7JrOLPYeo?mR;!Ih<5GKbc{yWs z!9jWHYGqx=*i4~$COVy)WvIqmEw^8lz|vVcW4MJMntc!F7|oWs!}!N~v+w_Suw^-97b0N79T0)Vr=K`-l!Y#ttB zu^7gO(x<}*=w^KjNTGlegCk08bR-v?d^9%lo}fh{i1Fzo>-e9`eX>*JmY=n9A(=*_ z-8iMfGp27UA};w?)8PdazG%3(!(V0uyIFFx^dG+5+->7-8+Y5d$JtB%=(**>Ef@a} bxxfP7Q7T)PpD5o7;I?C1V!Uii`jI~X>5|sZ literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/stepper/golden/stepper_horizontal_step_disabled.png b/packages/zeta_flutter/test/src/components/stepper/golden/stepper_horizontal_step_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..8460ced002bf421dfbf0b57215b52bc55b42d7ef GIT binary patch literal 5360 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 D5HMxw literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/stepper/golden/stepper_vertical_complete.png b/packages/zeta_flutter/test/src/components/stepper/golden/stepper_vertical_complete.png new file mode 100644 index 0000000000000000000000000000000000000000..e4d9e485298cb52d7debcf0ca9e7c11039b3b172 GIT binary patch literal 7045 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 literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/stepper/golden/stepper_vertical_incomplete.png b/packages/zeta_flutter/test/src/components/stepper/golden/stepper_vertical_incomplete.png new file mode 100644 index 0000000000000000000000000000000000000000..39511b4969e47c7f411104b463dc965a7476ddfb GIT binary patch literal 6685 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 H0!k>- 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 L>7}9zPIvzYU|wE| literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/tooltip/golden/arrow_down.png b/packages/zeta_flutter/test/src/components/tooltip/golden/arrow_down.png new file mode 100644 index 0000000000000000000000000000000000000000..b2fd3c6a07a8d8c5da719c503c665710bdcabfc2 GIT binary patch literal 3649 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sOhz*i(^Q|oVRxmW{HN&9C%oqe^+gHSL~MVTWeZunwR}xJ8C{*iN;6K zUtCi?l;7Rn*H9u})0VTVqfGrsu9C>RLpyYHFD_BtuXyge?t7Uw`}WO051yHOG;6Ds zwMB*DxA}I`?(Xi7pFAl!kQx~uFAW6A>A(NoxV6jns|5qY5wY|0|Ceq1{P*z6=Lv1! z>TgMxzpu0YD#5_eVpsk9+j;rE{`)?*?8aYyeSKZ{{$6=-KO=)f#?Mbz<%7>3@Ug6B zVEDY*#`fzu_R9s|7#N?+Ztt7Fn8^o1d@Ud^E}MSd!tndwXXe{bhK} z!p27Cz21g@O6z|8>-WAV&%m&59zWZO=hxTw&#(WxboMi@UB$o8RTS6MXny}E^6kIT zcXoz`)yI`17#JMf8i1xtGBPnRq_A)>Fia3sKozw6AuC|_?%LYu$KBHA=l0%f|H;5G z!$`}TL^*3#-%g$xWGx?!uQPQRf4;P~@Sn=yL*@Y|Bu)jVE7&9obdm_dqE{T28IVU>wIkwgnqsLKmZt21$Ors85tOib8Xhs+<8AeOR(Hdd2HXN-DM{C2;+Hg?R chM(o?CFhDO9(#5g*o|TEboFyt=akR{0Knv+(EtDd literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/tooltip/golden/arrow_left.png b/packages/zeta_flutter/test/src/components/tooltip/golden/arrow_left.png new file mode 100644 index 0000000000000000000000000000000000000000..69b2c58bd00bd02927337ead4bd506d54fbc6535 GIT binary patch literal 3653 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sOi0@i(^Q|oVRy3=81$$G+f-hdP|wO%dLiPj?Q$0z6z1keMvLZ4;ppp ze)qh`c=VCvoh1fK)YjhJ*-)ZUp}FBiopafF&GhwQ``xzx++tmvZfev=UeOL%bPRR65rmeW?)#IujmlB|7Z3r&xq=8atsGvMRQDe zoqfK>fVY~TA>peo3kL(kflW2V(~o}sSz}Z8=f~#j=hHSDrfvTC@9yrc5%$L<#KpxQ z-<7>~|LFg}|N2$$%QG_gre$W2<`(jU(uRruR{@Gtf zh6k^|UyR={PhQsFoRfiJ!zVkI6Q379E-d+ybSsmAp<$|-{3B)thK@5w*%=rDK1#(g zFen(;msJ?>@z>9*;$vV);5~C(!np+)?ydaK8*Hp?B$9c~H`gq5@0aU+|L*?(H(&Xl zF*790ttkv1y>|%d4?HI% zlIP6dFQvXb{qd(yMKQ6l{>GBoiN(dqIk~yLfA`+qxOubfR|{Yi+*D^~0eV4lPn$Rc z!wC)npy!kwfWGcwU}Ru0VgkyI3XTTIXkr-62%{y#XsI|_BaGIDqqX5^Z8%yR4&vJI ajD4EP+>mL3r`7_yBn+OeelF{r5}E+dp`CaD literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/tooltip/golden/arrow_right.png b/packages/zeta_flutter/test/src/components/tooltip/golden/arrow_right.png new file mode 100644 index 0000000000000000000000000000000000000000..fbc55de6c82cf1308953dbebd8449b42f40b38eb GIT binary patch literal 3641 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 I>zopr0EN~+p8x;= literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/top_app_bar/golden/top_app_bar_default.png b/packages/zeta_flutter/test/src/components/top_app_bar/golden/top_app_bar_default.png new file mode 100644 index 0000000000000000000000000000000000000000..0dcd4d86cd504f3c63a117e6394e50b2d48207c0 GIT binary patch literal 3347 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq`eQr;B4q#hkad6#b3_NVr`Lzh!E`$FuJDeI}+W8|FVtAVqUUF{nUFqbW+WW`1tzCYXnV~^jxA@%8&kvt|eY?x_&&Qu1?eexiU!Bgt za6t1<6DtEl3JV7V!vsME1_lSW2B6a=8JVai`2WtPn7u$V&us>V&Q)b#I2?b#O*`vo z;e}B%shcE5!*et|X2Hk!a_RH2V%uF=djnz@ET=Gw=|@K$M=Q~Op>`i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|s43pl#WAE}&f8noc_NM?4i}}W_ptI*aGq;m5ej2qlvYe=RZ+O<@T{k$ zUsXM>apNozONWN4cUxW*Kf3sOl3HbW= zIri|OjqLVqmB~GYRaI8oZXdq+jFDkOPGrNMvs=&3x$e4u*S>vn`f>Ya)$09!_vg)B z3%h;W-zPIL{P{j@LqEU&2B5DeF#!E;#KgkDaDqdCfk8pp0VvpmTk!TP=k(|D$NuKu z|NmlpczC$AJwMPNCxgCy)NzR0Ul&{pjL;p)n!k6bM*u@JEuC@G%`@gz=OP&xHn4f$ zJzoBe<@LkE?2lhhKfhZFsPoUUpznp@+^7K`CaS>BKD$=F(c0{v5JN-gO`ppqZ+`<_ zcfe}RD>k50Z|GAuf@l%xqh^lA5w!}C(X=$0mPXSOY9&Fn+Ici{jb^UV%r%<1sNU=! d(gn*i^=*5To2(RcC4l`Q22WQ%mvv4FO#t|s4buPs literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/top_app_bar/golden/top_app_bar_extended.png b/packages/zeta_flutter/test/src/components/top_app_bar/golden/top_app_bar_extended.png new file mode 100644 index 0000000000000000000000000000000000000000..c824048128ec3a716e630cbc25732b77b04406ed GIT binary patch literal 2296 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq`R@r;B4q#hkadHu^dnGPnl*S23QT8038L-=YR9=N3t!nXD^1N}Hz? zS4I05m8#|!pR)uS!nE6+A4tt>XJBMtFk)h1U^u}cz`&rO?7+a#&@(EC8X#vL&O3bl zb?%(=&r_50w%?XWmj3;BmR{Ai-^U~#mss^4PTc>-j)5T}b9V8${c`(a_8otH`}Zx^ zJ5OJKPL}D{@1F+@FVdQ&MBb@02Y{=DF6Tf literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/top_app_bar/golden/top_app_bar_extended_actions.png b/packages/zeta_flutter/test/src/components/top_app_bar/golden/top_app_bar_extended_actions.png new file mode 100644 index 0000000000000000000000000000000000000000..2e9b8ebe3ff47fc9b66cf817957fa7578edf3683 GIT binary patch literal 2413 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq_%p)5S5QV$R!JhJCjJMA|NdXg$I?9~yu%pi1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq`eYr;B4q#hkad6oZa9h`3(ln`~;p$D{ZAJ`>ZGGj+?PydP>D>OEn( z>FE0OeAUx)iuo8A8V+2($PA=D3jnQhaBBdXD#^&iz>vbi!N4#%mizTfS$ zm+Ln?W~4X0*6R4){kON}u6dohy_$jHgEY`#b@dgMwbpsO|KELnTpP3gy!&|uh6hXj zG_lgsVS)#L+Yxk0!9u1U8z$XjDgz qX0Fl9HJZ6bGZ%eYi1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sOhh#i(^Q|oVR!PcEzO19C%o+5}m@zJcjW-sbekU(}9hQOUb=#6-}ii?^pWN!8ov%%8Nowex=MdH?gU$@AmY ze8w}+rfp_qU=XNCyUGl-`gl77kY~ii!oYBXLx6!nLD_+Up`nKwg6h+@e*E|E-;R%$ z&vV~=y)`^uGCMn)`zAL7L&V&ZIcBqUlONx`d-vln>3qGE^{?;O8Jn4#i*LGq*{VJ< zyT|a@+S%6HJM9@5WK_Ma8G&vL%m03EZsGs$zl+z});{}k#hO-uCVM;s5{s@c(yD zZR5XRpZ)GD14B>Y%S-H!udIB|x98cxX8U7TS6`oI)(i}?hU73Lub9Y6c@w0!U6*RR>*KEHT)cw%ZG1gVqo}p`0M+9@n1RO4gxt=z+jr`BX-@a`wlRO`zF6EsrFfZd$ru-cyI0r zy}jbcfdP8@mK+1a5BXF37%kVSC2zX)HI0Gcfx*l(X`64ZYPUFZF8+p8GS6~L28Im` zcI$wt11ViRmIkGc$1Fs9hZad{)J*DT(b4c64Nqzn_oHcPG%by$C6qdodTpuE%r%<1 hMl;t)$XsXQqr>WyzptDy8`%D4@O1TaS?83{1OOReqpSb` literal 0 HcmV?d00001 diff --git a/packages/zeta_flutter/test/src/components/top_app_bar/golden/top_app_bar_search_centered.png b/packages/zeta_flutter/test/src/components/top_app_bar/golden/top_app_bar_search_centered.png new file mode 100644 index 0000000000000000000000000000000000000000..a724f2b6c76ac91c2180e36659c0a38493f94209 GIT binary patch literal 3362 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefr00Yr;B4q#hkadHu@e8kZ`;BT*df+z{-UQ^??p^6%X-jlyiO%qy1zK zV_of})!EfEi_bAKFbG(@u>~4cA;-kRz;J>?fPq0l*@1zfp@#t|X+#Ub<$Ku~{;+Sq zZKXH;blUf8rLxI7k1Osxvz=I7Uv4-5_{)+zZ{!Yaj(Rqy_`M)Q|GTQclKJoDtIt2^ z+qd8D`0LlF?-?`5&5PeaQ#UfPBrvxh-t?X2UCzf2Mzf7)ET7*~2HN=i0XGK&!vsME z1_lSW24J{JGBPnRq_B(%jt0nRVi?T`qb0*=sW@6AjMj#uwc%)OI9eN0P#e}UKFQHu V-BI-pSe7s_c)I$ztaD0e0szi>y%Ycd literal 0 HcmV?d00001 diff --git a/test/src/utils/rounded_test.dart b/packages/zeta_flutter/test/src/rounded_test.dart similarity index 99% rename from test/src/utils/rounded_test.dart rename to packages/zeta_flutter/test/src/rounded_test.dart index be3a9309..873ed156 100644 --- a/test/src/utils/rounded_test.dart +++ b/packages/zeta_flutter/test/src/rounded_test.dart @@ -4,7 +4,7 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:mockito/annotations.dart'; import 'package:mockito/mockito.dart'; import 'package:zeta_flutter/zeta_flutter.dart'; -import '../../test_utils/test_app.dart'; +import '../test_utils/test_app.dart'; import 'rounded_test.mocks.dart'; @GenerateNiceMocks([ diff --git a/packages/zeta_flutter/test/src/rounded_test.mocks.dart b/packages/zeta_flutter/test/src/rounded_test.mocks.dart new file mode 100644 index 00000000..dfd21650 --- /dev/null +++ b/packages/zeta_flutter/test/src/rounded_test.mocks.dart @@ -0,0 +1,431 @@ +// Mocks generated by Mockito 5.4.5 from annotations +// in zeta_flutter_utils/test/rounded_test.dart. +// Do not manually edit this file. + +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:ui' as _i8; + +import 'package:flutter/foundation.dart' as _i5; +import 'package:flutter/material.dart' as _i4; +import 'package:mockito/mockito.dart' as _i1; +import 'package:mockito/src/dummies.dart' as _i9; +import 'package:zeta_flutter_theme/src/contrast.dart' as _i7; +import 'package:zeta_flutter_theme/src/generated/tokens/primitives.g.dart' as _i2; +import 'package:zeta_flutter_theme/src/generated/tokens/semantics.g.dart' as _i3; +import 'package:zeta_flutter_theme/src/zeta.dart' as _i6; + +// ignore_for_file: type=lint +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: avoid_setters_without_getters +// ignore_for_file: comment_references +// ignore_for_file: deprecated_member_use +// ignore_for_file: deprecated_member_use_from_same_package +// ignore_for_file: implementation_imports +// ignore_for_file: invalid_use_of_visible_for_testing_member +// ignore_for_file: must_be_immutable +// ignore_for_file: prefer_const_constructors +// ignore_for_file: unnecessary_parenthesis +// ignore_for_file: camel_case_types +// ignore_for_file: subtype_of_sealed_class + +class _FakeZetaPrimitives_0 extends _i1.SmartFake implements _i2.ZetaPrimitives { + _FakeZetaPrimitives_0( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + +class _FakeZetaSemantics_1 extends _i1.SmartFake implements _i3.ZetaSemantics { + _FakeZetaSemantics_1( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + +class _FakeZetaColors_2 extends _i1.SmartFake implements _i3.ZetaColors { + _FakeZetaColors_2( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + +class _FakeZetaRadius_3 extends _i1.SmartFake implements _i3.ZetaRadius { + _FakeZetaRadius_3( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + +class _FakeZetaSpacing_4 extends _i1.SmartFake implements _i3.ZetaSpacing { + _FakeZetaSpacing_4( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + +class _FakeWidget_5 extends _i1.SmartFake implements _i4.Widget { + _FakeWidget_5( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); + + @override + String toString({_i5.DiagnosticLevel? minLevel = _i5.DiagnosticLevel.info}) => super.toString(); +} + +class _FakeInheritedElement_6 extends _i1.SmartFake implements _i4.InheritedElement { + _FakeInheritedElement_6( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); + + @override + String toString({_i5.DiagnosticLevel? minLevel = _i5.DiagnosticLevel.info}) => super.toString(); +} + +class _FakeDiagnosticsNode_7 extends _i1.SmartFake implements _i5.DiagnosticsNode { + _FakeDiagnosticsNode_7( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); + + @override + String toString({ + _i5.TextTreeConfiguration? parentConfiguration, + _i5.DiagnosticLevel? minLevel = _i5.DiagnosticLevel.info, + }) => + super.toString(); +} + +/// A class which mocks [Zeta]. +/// +/// See the documentation for Mockito's code generation for more information. +class MockZeta extends _i1.Mock implements _i6.Zeta { + @override + bool get rounded => (super.noSuchMethod( + Invocation.getter(#rounded), + returnValue: false, + returnValueForMissingStub: false, + ) as bool); + + @override + _i7.ZetaContrast get contrast => (super.noSuchMethod( + Invocation.getter(#contrast), + returnValue: _i7.ZetaContrast.aa, + returnValueForMissingStub: _i7.ZetaContrast.aa, + ) as _i7.ZetaContrast); + + @override + _i4.ThemeMode get themeMode => (super.noSuchMethod( + Invocation.getter(#themeMode), + returnValue: _i4.ThemeMode.system, + returnValueForMissingStub: _i4.ThemeMode.system, + ) as _i4.ThemeMode); + + @override + _i2.ZetaPrimitives get primitives => (super.noSuchMethod( + Invocation.getter(#primitives), + returnValue: _FakeZetaPrimitives_0( + this, + Invocation.getter(#primitives), + ), + returnValueForMissingStub: _FakeZetaPrimitives_0( + this, + Invocation.getter(#primitives), + ), + ) as _i2.ZetaPrimitives); + + @override + _i3.ZetaSemantics get semantics => (super.noSuchMethod( + Invocation.getter(#semantics), + returnValue: _FakeZetaSemantics_1( + this, + Invocation.getter(#semantics), + ), + returnValueForMissingStub: _FakeZetaSemantics_1( + this, + Invocation.getter(#semantics), + ), + ) as _i3.ZetaSemantics); + + @override + _i3.ZetaColors get colors => (super.noSuchMethod( + Invocation.getter(#colors), + returnValue: _FakeZetaColors_2( + this, + Invocation.getter(#colors), + ), + returnValueForMissingStub: _FakeZetaColors_2( + this, + Invocation.getter(#colors), + ), + ) as _i3.ZetaColors); + + @override + _i8.Brightness get brightness => (super.noSuchMethod( + Invocation.getter(#brightness), + returnValue: _i8.Brightness.dark, + returnValueForMissingStub: _i8.Brightness.dark, + ) as _i8.Brightness); + + @override + _i3.ZetaRadius get radius => (super.noSuchMethod( + Invocation.getter(#radius), + returnValue: _FakeZetaRadius_3( + this, + Invocation.getter(#radius), + ), + returnValueForMissingStub: _FakeZetaRadius_3( + this, + Invocation.getter(#radius), + ), + ) as _i3.ZetaRadius); + + @override + _i3.ZetaSpacing get spacing => (super.noSuchMethod( + Invocation.getter(#spacing), + returnValue: _FakeZetaSpacing_4( + this, + Invocation.getter(#spacing), + ), + returnValueForMissingStub: _FakeZetaSpacing_4( + this, + Invocation.getter(#spacing), + ), + ) as _i3.ZetaSpacing); + + @override + _i4.Widget get child => (super.noSuchMethod( + Invocation.getter(#child), + returnValue: _FakeWidget_5( + this, + Invocation.getter(#child), + ), + returnValueForMissingStub: _FakeWidget_5( + this, + Invocation.getter(#child), + ), + ) as _i4.Widget); + + @override + bool updateShouldNotify(_i4.InheritedWidget? oldWidget) => (super.noSuchMethod( + Invocation.method( + #updateShouldNotify, + [oldWidget], + ), + returnValue: false, + returnValueForMissingStub: false, + ) as bool); + + @override + void debugFillProperties(_i5.DiagnosticPropertiesBuilder? properties) => super.noSuchMethod( + Invocation.method( + #debugFillProperties, + [properties], + ), + returnValueForMissingStub: null, + ); + + @override + _i4.InheritedElement createElement() => (super.noSuchMethod( + Invocation.method( + #createElement, + [], + ), + returnValue: _FakeInheritedElement_6( + this, + Invocation.method( + #createElement, + [], + ), + ), + returnValueForMissingStub: _FakeInheritedElement_6( + this, + Invocation.method( + #createElement, + [], + ), + ), + ) as _i4.InheritedElement); + + @override + String toStringShort() => (super.noSuchMethod( + Invocation.method( + #toStringShort, + [], + ), + returnValue: _i9.dummyValue( + this, + Invocation.method( + #toStringShort, + [], + ), + ), + returnValueForMissingStub: _i9.dummyValue( + this, + Invocation.method( + #toStringShort, + [], + ), + ), + ) as String); + + @override + String toStringShallow({ + String? joiner = ', ', + _i5.DiagnosticLevel? minLevel = _i5.DiagnosticLevel.debug, + }) => + (super.noSuchMethod( + Invocation.method( + #toStringShallow, + [], + { + #joiner: joiner, + #minLevel: minLevel, + }, + ), + returnValue: _i9.dummyValue( + this, + Invocation.method( + #toStringShallow, + [], + { + #joiner: joiner, + #minLevel: minLevel, + }, + ), + ), + returnValueForMissingStub: _i9.dummyValue( + this, + Invocation.method( + #toStringShallow, + [], + { + #joiner: joiner, + #minLevel: minLevel, + }, + ), + ), + ) as String); + + @override + String toStringDeep({ + String? prefixLineOne = '', + String? prefixOtherLines, + _i5.DiagnosticLevel? minLevel = _i5.DiagnosticLevel.debug, + int? wrapWidth = 65, + }) => + (super.noSuchMethod( + Invocation.method( + #toStringDeep, + [], + { + #prefixLineOne: prefixLineOne, + #prefixOtherLines: prefixOtherLines, + #minLevel: minLevel, + #wrapWidth: wrapWidth, + }, + ), + returnValue: _i9.dummyValue( + this, + Invocation.method( + #toStringDeep, + [], + { + #prefixLineOne: prefixLineOne, + #prefixOtherLines: prefixOtherLines, + #minLevel: minLevel, + #wrapWidth: wrapWidth, + }, + ), + ), + returnValueForMissingStub: _i9.dummyValue( + this, + Invocation.method( + #toStringDeep, + [], + { + #prefixLineOne: prefixLineOne, + #prefixOtherLines: prefixOtherLines, + #minLevel: minLevel, + #wrapWidth: wrapWidth, + }, + ), + ), + ) as String); + + @override + _i5.DiagnosticsNode toDiagnosticsNode({ + String? name, + _i5.DiagnosticsTreeStyle? style, + }) => + (super.noSuchMethod( + Invocation.method( + #toDiagnosticsNode, + [], + { + #name: name, + #style: style, + }, + ), + returnValue: _FakeDiagnosticsNode_7( + this, + Invocation.method( + #toDiagnosticsNode, + [], + { + #name: name, + #style: style, + }, + ), + ), + returnValueForMissingStub: _FakeDiagnosticsNode_7( + this, + Invocation.method( + #toDiagnosticsNode, + [], + { + #name: name, + #style: style, + }, + ), + ), + ) as _i5.DiagnosticsNode); + + @override + List<_i5.DiagnosticsNode> debugDescribeChildren() => (super.noSuchMethod( + Invocation.method( + #debugDescribeChildren, + [], + ), + returnValue: <_i5.DiagnosticsNode>[], + returnValueForMissingStub: <_i5.DiagnosticsNode>[], + ) as List<_i5.DiagnosticsNode>); + + @override + String toString({_i5.DiagnosticLevel? minLevel = _i5.DiagnosticLevel.info}) => super.toString(); +} diff --git a/test/test_utils/test_app.dart b/packages/zeta_flutter/test/test_utils/test_app.dart similarity index 83% rename from test/test_utils/test_app.dart rename to packages/zeta_flutter/test/test_utils/test_app.dart index 00526431..867950d2 100644 --- a/test/test_utils/test_app.dart +++ b/packages/zeta_flutter/test/test_utils/test_app.dart @@ -2,7 +2,11 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:zeta_flutter/zeta_flutter.dart'; +/// Only used for testing purposes. +/// +/// Widget used to provide a consistent environment for testing. class TestApp extends StatelessWidget { + /// Default constructor for the [TestApp] widget. const TestApp({ super.key, required this.home, @@ -13,11 +17,22 @@ class TestApp extends StatelessWidget { this.contrast, }); + /// The widget to be tested. final Widget home; + + /// The size of the screen. final Size? screenSize; + + /// The theme mode for the app. final ThemeMode? themeMode; + + /// Whether to remove the body of the scaffold. final bool removeBody; + + /// Whether to use rounded corners. final bool? rounded; + + /// The contrast for the app. final ZetaContrast? contrast; @override diff --git a/test/test_utils/utils.dart b/packages/zeta_flutter/test/test_utils/test_utils.dart similarity index 79% rename from test/test_utils/utils.dart rename to packages/zeta_flutter/test/test_utils/test_utils.dart index 1461c406..8f9e9dcf 100644 --- a/test/test_utils/utils.dart +++ b/packages/zeta_flutter/test/test_utils/test_utils.dart @@ -3,34 +3,53 @@ import 'dart:io'; import 'package:collection/collection.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:path/path.dart'; -import '../test_utils/test_app.dart'; +import 'test_app.dart'; + +export 'test_app.dart'; +export 'tolerant_comparator.dart'; + +/// Extensions used for testing [debugFillPropertiesTest]. +@visibleForTesting extension Util on DiagnosticPropertiesBuilder { + /// Find a property by its name. dynamic finder(String finder) { return properties.where((p) => p.name == finder).map((p) => p.toDescription()).firstOrNull; } + /// Find a property by its name. dynamic findProperty(String propertyName) { return properties.firstWhereOrNull((p) => p.name == propertyName)?.value; } } +/// Golden files helper. +@visibleForTesting class GoldenFiles { + /// Constructs a [GoldenFiles] instance. const GoldenFiles({required this.component, this.type = 'components'}); + /// The component name. final String component; + + /// The type of component. final String type; + /// The golden file uri. Uri get uri => getFileUri(''); + /// Gets the file uri. Uri getFileUri(String fileName) { return Uri.parse(join(Directory.current.path, 'test', 'src', type, component, 'golden', '$fileName.png')) .replace(scheme: 'file'); } } +/// Golden test helper. +@visibleForTesting void goldenTest( GoldenFiles goldenFile, Widget widget, @@ -67,18 +86,23 @@ void goldenTest( }); } +/// Golden test helper. +@visibleForTesting BuildContext getBuildContext(WidgetTester tester, Type type) { return tester.element(find.byType(type)); } +/// `debugFillProperties` test helper. +@visibleForTesting void debugFillPropertiesTest(Widget widget, Map properties) { testWidgets('debugFillProperties works correctly', (WidgetTester tester) async { final diagnostics = DiagnosticPropertiesBuilder(); widget.debugFillProperties(diagnostics); - + debugPrint(diagnostics.properties.toString()); properties.forEach((key, value) { try { - expect(diagnostics.finder(key), value); + final found = diagnostics.finder(key); + expect(found, value); } catch (e) { debugPrint('Error on $key'); rethrow; @@ -87,7 +111,9 @@ void debugFillPropertiesTest(Widget widget, Map properties) { }); } -void meetsAccessbilityGuidelinesTest( +/// Accessibility test helper. +@visibleForTesting +void meetsAccessabilityGuidelinesTest( Widget widget, { ThemeMode themeMode = ThemeMode.system, Size? screenSize, diff --git a/test/test_utils/tolerant_comparator.dart b/packages/zeta_flutter/test/test_utils/tolerant_comparator.dart similarity index 82% rename from test/test_utils/tolerant_comparator.dart rename to packages/zeta_flutter/test/test_utils/tolerant_comparator.dart index fdfeed03..07feca3f 100644 --- a/test/test_utils/tolerant_comparator.dart +++ b/packages/zeta_flutter/test/test_utils/tolerant_comparator.dart @@ -1,12 +1,21 @@ import 'dart:io'; -import 'dart:typed_data'; +import 'package:flutter/foundation.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:image/image.dart' as img; +import 'test_utils.dart'; +/// A comparator that compares images with a tolerance. +/// +/// Used with [goldenTest] to compare images with a tolerance. +@visibleForTesting class TolerantComparator extends LocalFileComparator { + /// Constructs a [TolerantComparator] instance with default tolerance of 0.01. TolerantComparator(Uri testFile, {this.tolerance = 0.01}) : super(testFile.replace(scheme: 'file')); + /// Tolerance used to compare images. + /// + /// Defaults to 0.01 but should be changed to ensure no false positives. final double tolerance; @override diff --git a/packages/zeta_flutter/test_utils/tolerant_comparator.dart b/packages/zeta_flutter/test_utils/tolerant_comparator.dart new file mode 100644 index 00000000..59fc02a0 --- /dev/null +++ b/packages/zeta_flutter/test_utils/tolerant_comparator.dart @@ -0,0 +1,77 @@ +import 'dart:io'; + +import 'package:flutter/foundation.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:image/image.dart' as img; + +import '../test/test_utils/test_utils.dart'; + +/// A comparator that compares images with a tolerance. +/// +/// Used with [goldenTest] to compare images with a tolerance. +@visibleForTesting +class TolerantComparator extends LocalFileComparator { + /// Constructs a [TolerantComparator] instance with default tolerance of 0.01. + TolerantComparator(Uri testFile, {this.tolerance = 0.01}) : super(testFile.replace(scheme: 'file')); + + /// Tolerance used to compare images. + /// + /// Defaults to 0.01 but should be changed to ensure no false positives. + final double tolerance; + + @override + Future compare(Uint8List imageBytes, Uri golden) async { + final goldenFile = File.fromUri(golden.replace(scheme: 'file')); + if (!goldenFile.existsSync()) { + goldenFile + ..createSync(recursive: true) + ..writeAsBytesSync(imageBytes); + return true; + } + + final goldenBytes = goldenFile.readAsBytesSync(); + final testImage = img.decodeImage(imageBytes); + final goldenImage = img.decodeImage(goldenBytes); + + if (testImage == null || goldenImage == null) { + return false; + } + + return _compareImages(testImage, goldenImage); + } + + bool _compareImages(img.Image testImage, img.Image goldenImage) { + if (testImage.width != goldenImage.width || testImage.height != goldenImage.height) { + return false; + } + + int diffPixels = 0; + for (int y = 0; y < testImage.height; y++) { + for (int x = 0; x < testImage.width; x++) { + final testPixel = testImage.getPixel(x, y); + final goldenPixel = goldenImage.getPixel(x, y); + + if (!_isPixelWithinTolerance(testPixel, goldenPixel)) { + diffPixels++; + } + } + } + + final diffPercentage = diffPixels / (testImage.width * testImage.height); + return diffPercentage <= tolerance; + } + + bool _isPixelWithinTolerance(img.Pixel testPixel, img.Pixel goldenPixel) { + final tr = testPixel.r; + final tg = testPixel.g; + final tb = testPixel.b; + + final gr = goldenPixel.r; + final gg = goldenPixel.g; + final gb = goldenPixel.b; + + return (tr - gr).abs() <= 255 * tolerance && + (tg - gg).abs() <= 255 * tolerance && + (tb - gb).abs() <= 255 * tolerance; + } +} diff --git a/packages/zeta_flutter_theme/.metadata b/packages/zeta_flutter_theme/.metadata new file mode 100644 index 00000000..f5be3bc8 --- /dev/null +++ b/packages/zeta_flutter_theme/.metadata @@ -0,0 +1,10 @@ +# 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: "8495dee1fd4aacbe9de707e7581203232f591b2f" + channel: "stable" + +project_type: package diff --git a/packages/zeta_flutter_theme/CHANGELOG.md b/packages/zeta_flutter_theme/CHANGELOG.md new file mode 100644 index 00000000..77614f70 --- /dev/null +++ b/packages/zeta_flutter_theme/CHANGELOG.md @@ -0,0 +1,3 @@ +# Changelog + +## [1.0.0-alpha.1] - Initial alpha release diff --git a/packages/zeta_flutter_theme/LICENSE b/packages/zeta_flutter_theme/LICENSE new file mode 100644 index 00000000..2ecb76a1 --- /dev/null +++ b/packages/zeta_flutter_theme/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Zebra Technologies Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/zeta_flutter_theme/LICENSE-3RD-PARTY b/packages/zeta_flutter_theme/LICENSE-3RD-PARTY new file mode 100644 index 00000000..fd9e2833 --- /dev/null +++ b/packages/zeta_flutter_theme/LICENSE-3RD-PARTY @@ -0,0 +1,120 @@ +# THIRD PARTY LICENSES + +--- + +## tinycolor + +Applies to: + +- color_extensions.dart + +Copyright 2018 Foo Studio + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + +## IBM Plex Sans + +Applies to: + +- IBMPlexSans-light.otf +- IBMPlexSans-medium.otf +- IBMPlexSans-regular.otf + +Copyright © 2017 IBM Corp. with Reserved Font Name "Plex" + +This Font Software is licensed under the SIL Open Font License, Version 1.1. + +This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL + +### SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1. Neither the Font Software nor any of its individual components, + in Original or Modified Versions, may be sold by itself. + +2. Original or Modified Versions of the Font Software may be bundled, + redistributed and/or sold with any software, provided that each copy + contains the above copyright notice and this license. These can be + included either as stand-alone text files, human-readable headers or + in the appropriate machine-readable metadata fields within text or + binary files as long as those fields can be easily viewed by the user. + +3. No Modified Version of the Font Software may use the Reserved Font + Name(s) unless explicit written permission is granted by the corresponding + Copyright Holder. This restriction only applies to the primary font name as + presented to the users. + +4. The name(s) of the Copyright Holder(s) or the Author(s) of the Font + Software shall not be used to promote, endorse or advertise any + Modified Version, except to acknowledge the contribution(s) of the + Copyright Holder(s) and the Author(s) or with their explicit written + permission. + +5. The Font Software, modified or unmodified, in part or in whole, + must be distributed entirely under this license, and must not be + distributed under any other license. The requirement for fonts to + remain under this license does not apply to any document created + using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. + +--- diff --git a/packages/zeta_flutter_theme/README.md b/packages/zeta_flutter_theme/README.md new file mode 100644 index 00000000..599697d0 --- /dev/null +++ b/packages/zeta_flutter_theme/README.md @@ -0,0 +1,52 @@ +# Zeta Flutter Theme + +Theme resources for zeta_flutter form Zebra Technologies. + +These resources are a part of the Zeta Design System, and can be used either on their own or with [Zeta Flutter](https://pub.dev/packages/zeta_flutter) + +## Template + +To quickly set up a new project to use zeta_flutter, clone [zeta_flutter_template](https://github.com/zebradevs/zeta_flutter_template) to get started. + +## Set up + +To use Zeta theme in you app, first the whole app must be wrapped with `ZetaProvider`. The easiest way to do this is with the `ZetaProvider`. + +There are various values that can be passed in; the most commonly used are: + +- `initialThemeMode` (optional) sets whether the app starts in light or dark mode, or uses the device default. +- `initialContrast` (optional) sets whether the app starts with standard (WCAG AA) contrast, or if it attempts to use the more accessible contrast (WCAG AAA). +- `builder` (required) is used to construct the app with all Zeta themes injected. + +```dart +return ZetaProvider( + initialThemeMode: initialThemeMode, + initialContrast: initialContrast, + builder: (context, lightTheme, darkTheme, themeMode) { + /// The following is just an example of how you can use the theme in your app. + return MaterialApp.router( + routerConfig: router, + themeMode: themeMode, + theme: lightTheme, + darkTheme: darkTheme, + ); + }, +); +``` + +### Colors + +This package contains the color resources used by Zeta. These files are automatically generated from our [Zeta Foundations Figma](https://www.figma.com/design/REjc5TauZb2EXYouaEKTYa/Zeta-Foundations), ensuring that the token names match with any designs that use Zeta. +Custom colors can be passed into `ZetaProvider`. These must follow the same pattern as is defined in the interface for ZetaColors. + +### Contrast + +Apps using Zeta for theming can use either `ZetaContrast.AA` or `ZetaContrast.AAA`. AA is regular contrast and AAA is high contrast according to [WCAG Guidelines](https://www.w3.org/WAI/WCAG21/Understanding/contrast-minimum.html). This affects most colors in [ZetaColors] object. + +### Typography + +This package contains the typography styles from [Zeta Foundations Figma](https://www.figma.com/design/REjc5TauZb2EXYouaEKTYa/Zeta-Foundations), and this library provides access to [IBM Plex Sans](https://github.com/IBM/plex), Copyright © 2017 IBM Corp, see [LICENSE-3RD-PARTY](https://github.com/ZebraDevs/zeta_flutter/tree/develop/packages/zeta_flutter_theme/LICENSE-3RD-PARTY) + +### Rounded + +Zeta includes a rounded boolean that can be used to toggle the app between using round and sharp variants of components diff --git a/packages/zeta_flutter_theme/analysis_options.yaml b/packages/zeta_flutter_theme/analysis_options.yaml new file mode 100644 index 00000000..278d8434 --- /dev/null +++ b/packages/zeta_flutter_theme/analysis_options.yaml @@ -0,0 +1 @@ +include: package:zds_analysis/analysis_options_lib_all_files.yaml diff --git a/lib/assets/fonts/IBMPlexSans-Light.otf b/packages/zeta_flutter_theme/assets/fonts/IBMPlexSans-Light.otf similarity index 100% rename from lib/assets/fonts/IBMPlexSans-Light.otf rename to packages/zeta_flutter_theme/assets/fonts/IBMPlexSans-Light.otf diff --git a/lib/assets/fonts/IBMPlexSans-Medium.otf b/packages/zeta_flutter_theme/assets/fonts/IBMPlexSans-Medium.otf similarity index 100% rename from lib/assets/fonts/IBMPlexSans-Medium.otf rename to packages/zeta_flutter_theme/assets/fonts/IBMPlexSans-Medium.otf diff --git a/lib/assets/fonts/IBMPlexSans-Regular.otf b/packages/zeta_flutter_theme/assets/fonts/IBMPlexSans-Regular.otf similarity index 100% rename from lib/assets/fonts/IBMPlexSans-Regular.otf rename to packages/zeta_flutter_theme/assets/fonts/IBMPlexSans-Regular.otf diff --git a/packages/zeta_flutter_theme/example/example.md b/packages/zeta_flutter_theme/example/example.md new file mode 100644 index 00000000..c126b973 --- /dev/null +++ b/packages/zeta_flutter_theme/example/example.md @@ -0,0 +1,33 @@ +# zeta_flutter_theme + +Theme resources for zeta_flutter. + +## Template + +To quickly set up a new project to use zeta_flutter, clone [zeta_flutter_template](https://github.com/zebradevs/zeta_flutter_template) to get started. + +## Set up + +To use Zeta theme in you app, first the whole app must be wrapped with `ZetaProvider`. The easiest way to do this is with the `ZetaProvider`. + +There are various values that can be passed in; the most commonly used are: + +- `initialThemeMode` (optional) sets whether the app starts in light or dark mode, or uses the device default. +- `initialContrast` (optional) sets whether the app starts with standard (WCAG AA) contrast, or if it attempts to use the more accessible contrast (WCAG AAA). +- `builder` (required) is used to construct the app with all Zeta themes injected. + +```dart +return ZetaProvider( + initialThemeMode: initialThemeMode, + initialContrast: initialContrast, + builder: (context, lightTheme, darkTheme, themeMode) { + /// The following is just an example of how you can use the theme in your app. + return MaterialApp.router( + routerConfig: router, + themeMode: themeMode, + theme: lightTheme, + darkTheme: darkTheme, + ); + }, +); +``` diff --git a/lib/src/theme/breakpoints.dart b/packages/zeta_flutter_theme/lib/src/breakpoints.dart similarity index 100% rename from lib/src/theme/breakpoints.dart rename to packages/zeta_flutter_theme/lib/src/breakpoints.dart diff --git a/lib/src/theme/color_extensions.dart b/packages/zeta_flutter_theme/lib/src/color_extensions.dart similarity index 99% rename from lib/src/theme/color_extensions.dart rename to packages/zeta_flutter_theme/lib/src/color_extensions.dart index 8f9d8426..6d07aab6 100644 --- a/lib/src/theme/color_extensions.dart +++ b/packages/zeta_flutter_theme/lib/src/color_extensions.dart @@ -2,7 +2,8 @@ import 'dart:math' as math; import 'package:flutter/material.dart'; import 'package:flutter/scheduler.dart'; -import '../../zeta_flutter.dart'; + +import '../zeta_flutter_theme.dart'; /// Extensions on [Color] to brighten, lighten, darken and blend colors and /// can get a shade for gradients. diff --git a/lib/src/theme/color_swatch.dart b/packages/zeta_flutter_theme/lib/src/color_swatch.dart similarity index 98% rename from lib/src/theme/color_swatch.dart rename to packages/zeta_flutter_theme/lib/src/color_swatch.dart index 8dd56023..a88979f4 100644 --- a/lib/src/theme/color_swatch.dart +++ b/packages/zeta_flutter_theme/lib/src/color_swatch.dart @@ -4,14 +4,12 @@ import 'package:flutter/material.dart'; import 'color_extensions.dart'; import 'contrast.dart'; -/// {@template zeta-colors-swatch} +/// {@template zeta-color-swatch} /// Contains shades from 10 (light) to 100 (dark). /// /// See also: /// * [ColorSwatch]. /// {@endtemplate} -/// -/// {@category Theme} @immutable class ZetaColorSwatch extends ColorSwatch with EquatableMixin { /// Constructs a [ZetaColorSwatch]. @@ -178,8 +176,6 @@ class ZetaColorSwatch extends ColorSwatch with EquatableMixin { } /// A swatch of colors with values 0 (light), 500 (medium) and 1000(dark). -/// -/// {@category Theme} class ZetaPureColorSwatch extends ColorSwatch with EquatableMixin { /// Constructs a [ZetaPureColorSwatch]. /// diff --git a/lib/src/theme/constants.dart b/packages/zeta_flutter_theme/lib/src/constants.dart similarity index 87% rename from lib/src/theme/constants.dart rename to packages/zeta_flutter_theme/lib/src/constants.dart index bbb6f11e..36fedb45 100644 --- a/lib/src/theme/constants.dart +++ b/packages/zeta_flutter_theme/lib/src/constants.dart @@ -1,7 +1,7 @@ import 'color_swatch.dart'; /// Default font family for Zeta System. -const kZetaFontFamily = 'packages/zeta_flutter/IBMPlexSans'; +const kZetaFontFamily = 'packages/zeta_flutter_theme/IBMPlexSans'; /// Primary color shade index for [ZetaColorSwatch]. const kZetaSwatchPrimaryIndex = 60; diff --git a/lib/src/theme/contrast.dart b/packages/zeta_flutter_theme/lib/src/contrast.dart similarity index 100% rename from lib/src/theme/contrast.dart rename to packages/zeta_flutter_theme/lib/src/contrast.dart diff --git a/lib/src/theme/custom_theme.dart b/packages/zeta_flutter_theme/lib/src/custom_theme.dart similarity index 98% rename from lib/src/theme/custom_theme.dart rename to packages/zeta_flutter_theme/lib/src/custom_theme.dart index 13ec2485..8edee88c 100644 --- a/lib/src/theme/custom_theme.dart +++ b/packages/zeta_flutter_theme/lib/src/custom_theme.dart @@ -3,8 +3,6 @@ import 'package:flutter/material.dart'; import 'color_swatch.dart'; /// A custom theme that can be used to define custom colors for the app. -/// -/// {@category Theme} class ZetaCustomTheme { /// Constructs a [ZetaCustomTheme]. /// To define every shade of a color, provide a [ZetaColorSwatch] or a [MaterialColor]. diff --git a/lib/src/generated/generated.dart b/packages/zeta_flutter_theme/lib/src/generated/generated.dart similarity index 70% rename from lib/src/generated/generated.dart rename to packages/zeta_flutter_theme/lib/src/generated/generated.dart index 5279609c..25eef672 100644 --- a/lib/src/generated/generated.dart +++ b/packages/zeta_flutter_theme/lib/src/generated/generated.dart @@ -1,3 +1,2 @@ -export 'icons/icons.g.dart'; export 'tokens/primitives.g.dart'; export 'tokens/semantics.g.dart'; diff --git a/lib/src/generated/tokens/primitives.g.dart b/packages/zeta_flutter_theme/lib/src/generated/tokens/primitives.g.dart similarity index 99% rename from lib/src/generated/tokens/primitives.g.dart rename to packages/zeta_flutter_theme/lib/src/generated/tokens/primitives.g.dart index 53795fcf..02c7fdc7 100644 --- a/lib/src/generated/tokens/primitives.g.dart +++ b/packages/zeta_flutter_theme/lib/src/generated/tokens/primitives.g.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; // Ignored import due to file being generated // ignore: prefer_relative_imports -import 'package:zeta_flutter/zeta_flutter.dart'; +import 'package:zeta_flutter_theme/src/color_swatch.dart'; // This file is automatically generated by the zeta repository // DO NOT MODIFY diff --git a/lib/src/generated/tokens/semantics.g.dart b/packages/zeta_flutter_theme/lib/src/generated/tokens/semantics.g.dart similarity index 99% rename from lib/src/generated/tokens/semantics.g.dart rename to packages/zeta_flutter_theme/lib/src/generated/tokens/semantics.g.dart index 1afa7c38..c984ce8a 100644 --- a/lib/src/generated/tokens/semantics.g.dart +++ b/packages/zeta_flutter_theme/lib/src/generated/tokens/semantics.g.dart @@ -5,14 +5,13 @@ import 'package:equatable/equatable.dart'; import 'package:flutter/material.dart'; // Ignored import due to file being generated // ignore: prefer_relative_imports -import 'package:zeta_flutter/zeta_flutter.dart'; +import 'package:zeta_flutter_theme/zeta_flutter_theme.dart'; // This file is automatically generated by the zeta repository // DO NOT MODIFY /// The semantic tokens for colors /// -/// {@category Interfaces} abstract interface class ZetaColors { /// Primitives used to construct semantic colors ZetaPrimitives get primitives; @@ -1177,7 +1176,6 @@ abstract interface class ZetaColors { /// The semantic tokens for spacing /// -/// {@category Interfaces} abstract interface class ZetaSpacing { /// Primitives used to construct semantic spacing ZetaPrimitives get primitives; @@ -1265,7 +1263,6 @@ abstract interface class ZetaSpacing { /// The semantic tokens for radius /// -/// {@category Interfaces} abstract interface class ZetaRadius { /// Primitives used to construct semantic radius ZetaPrimitives get primitives; @@ -1315,7 +1312,6 @@ abstract interface class ZetaRadius { /// The semantic colors for AA /// -/// {@category Theme} class ZetaColorsAA extends Equatable implements ZetaColors { /// Constructor for [ZetaColorsAA] const ZetaColorsAA({required this.primitives}); @@ -1595,7 +1591,6 @@ class ZetaColorsAA extends Equatable implements ZetaColors { /// The semantic colors for AAA /// -/// {@category Theme} class ZetaColorsAAA extends Equatable implements ZetaColors { /// Constructor for [ZetaColorsAAA] const ZetaColorsAAA({required this.primitives}); @@ -1875,7 +1870,6 @@ class ZetaColorsAAA extends Equatable implements ZetaColors { /// The semantic spacing for AA /// -/// {@category Theme} class ZetaSpacingAA extends Equatable implements ZetaSpacing { /// Constructor for [ZetaSpacingAA] const ZetaSpacingAA({required this.primitives}); @@ -1936,7 +1930,6 @@ class ZetaSpacingAA extends Equatable implements ZetaSpacing { /// The semantic spacing for AAA /// -/// {@category Theme} class ZetaSpacingAAA extends Equatable implements ZetaSpacing { /// Constructor for [ZetaSpacingAAA] const ZetaSpacingAAA({required this.primitives}); @@ -1997,7 +1990,6 @@ class ZetaSpacingAAA extends Equatable implements ZetaSpacing { /// The semantic radius for AA /// -/// {@category Theme} class ZetaRadiusAA extends Equatable implements ZetaRadius { /// Constructor for [ZetaRadiusAA] const ZetaRadiusAA({required this.primitives}); @@ -2028,7 +2020,6 @@ class ZetaRadiusAA extends Equatable implements ZetaRadius { /// The semantic radius for AAA /// -/// {@category Theme} class ZetaRadiusAAA extends Equatable implements ZetaRadius { /// Constructor for [ZetaRadiusAAA] const ZetaRadiusAAA({required this.primitives}); @@ -2059,7 +2050,6 @@ class ZetaRadiusAAA extends Equatable implements ZetaRadius { /// The semantic tokens for Zeta /// -/// {@category Interfaces} abstract interface class ZetaSemantics { /// Semantic colors ZetaColors get colors; @@ -2076,7 +2066,6 @@ abstract interface class ZetaSemantics { /// The semantic tokens for AA /// -/// {@category Theme} class ZetaSemanticsAA implements ZetaSemantics { /// Constructor for [ZetaSemanticsAA] ZetaSemanticsAA({required this.primitives}) @@ -2096,7 +2085,6 @@ class ZetaSemanticsAA implements ZetaSemantics { /// The semantic tokens for AAA /// -/// {@category Theme} class ZetaSemanticsAAA implements ZetaSemantics { /// Constructor for [ZetaSemanticsAAA] ZetaSemanticsAAA({required this.primitives}) diff --git a/lib/src/utils/rounded.dart b/packages/zeta_flutter_theme/lib/src/rounded.dart similarity index 50% rename from lib/src/utils/rounded.dart rename to packages/zeta_flutter_theme/lib/src/rounded.dart index f5bf5bb9..73f89155 100644 --- a/lib/src/utils/rounded.dart +++ b/packages/zeta_flutter_theme/lib/src/rounded.dart @@ -1,10 +1,8 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; - -import '../../zeta_flutter.dart'; +import 'zeta.dart'; /// Sets a default rounded value for all of its Zeta children. -/// {@category Utils} class ZetaRoundedScope extends InheritedWidget { /// Constructs a [ZetaRoundedScope]. const ZetaRoundedScope({ @@ -13,7 +11,7 @@ class ZetaRoundedScope extends InheritedWidget { super.key, }) : _rounded = rounded; - ///{@macro zeta-component-rounded } + /// {@macro zeta-component-rounded } final bool _rounded; /// Finds and returns closest instance of [ZetaRoundedScope]. @@ -30,38 +28,6 @@ class ZetaRoundedScope extends InheritedWidget { } } -/// Zeta Extension of [StatelessWidget] which adds [rounded] super parameter. Always use `context.rounded` to ensure correct value for [rounded] is used. -/// {@category Utils} -abstract class ZetaStatelessWidget extends StatelessWidget { - /// Constructs a [ZetaStatelessWidget]. - const ZetaStatelessWidget({super.key, this.rounded}); - - /// {@macro zeta-component-rounded} - final bool? rounded; - - @override - void debugFillProperties(DiagnosticPropertiesBuilder properties) { - super.debugFillProperties(properties); - properties.add(DiagnosticsProperty('rounded', rounded)); - } -} - -/// Zeta Extension of [StatefulWidget] which adds [rounded] super parameter. Always use `context.rounded` to ensure correct value for [rounded] is used. -/// {@category Utils} -abstract class ZetaStatefulWidget extends StatefulWidget { - /// Constructs a [ZetaStatefulWidget]. - const ZetaStatefulWidget({super.key, this.rounded}); - - /// {@macro zeta-component-rounded} - final bool? rounded; - - @override - void debugFillProperties(DiagnosticPropertiesBuilder properties) { - super.debugFillProperties(properties); - properties.add(DiagnosticsProperty('rounded', rounded)); - } -} - /// Extension used on [BuildContext] to get rounded. extension Rounded on BuildContext { /// {@macro zeta-component-rounded} diff --git a/lib/src/theme/theme_service.dart b/packages/zeta_flutter_theme/lib/src/theme_service.dart similarity index 98% rename from lib/src/theme/theme_service.dart rename to packages/zeta_flutter_theme/lib/src/theme_service.dart index dc0d5b17..7ffa747d 100644 --- a/lib/src/theme/theme_service.dart +++ b/packages/zeta_flutter_theme/lib/src/theme_service.dart @@ -12,8 +12,6 @@ const String _kFontFamily = 'fontFamily'; /// `ZetaThemeData` is a class that holds the theme data to be stored with the theme service. /// /// It contains the theme mode, contrast, and font family. -/// -/// {@category Theme} class ZetaThemeServiceData extends Equatable { /// Constructs a [ZetaThemeServiceData]. /// @@ -36,11 +34,8 @@ class ZetaThemeServiceData extends Equatable { List get props => [themeId, themeMode, contrast, fontFamily]; } -// TODO(colors): Add tests /// `ZetaThemeService` is an abstract class. /// It provides the structure for loading and saving themes in Zeta application. -/// {@category Theme} - abstract class ZetaThemeService { /// Constructor for `ZetaThemeService`. const ZetaThemeService(); @@ -117,6 +112,8 @@ class ZetaDefaultThemeService extends ZetaThemeService { } if (themeData.themeId != null) { futures.add(preferences.setString(_kThemeId, themeData.themeId!)); + } else { + futures.add(preferences.remove(_kThemeId)); } await Future.wait(futures); } diff --git a/lib/src/theme/tokens.dart b/packages/zeta_flutter_theme/lib/src/tokens.dart similarity index 93% rename from lib/src/theme/tokens.dart rename to packages/zeta_flutter_theme/lib/src/tokens.dart index 90334ad0..93596fc5 100644 --- a/lib/src/theme/tokens.dart +++ b/packages/zeta_flutter_theme/lib/src/tokens.dart @@ -1,5 +1,4 @@ /// Tokenised durations used for animations -/// {@category Theme} class ZetaAnimationLength { /// 100ms static const veryFast = Duration(milliseconds: 100); @@ -18,9 +17,6 @@ class ZetaAnimationLength { } /// Temporary class to hold border values. -/// -/// {@category Theme} -/// // TODO(Tokens): Remove this class and design / develop Zeta.of(context).border instead. abstract final class ZetaBorders { /// Small border width diff --git a/lib/src/theme/typography.dart b/packages/zeta_flutter_theme/lib/src/typography.dart similarity index 98% rename from lib/src/theme/typography.dart rename to packages/zeta_flutter_theme/lib/src/typography.dart index 30a88fc8..b08dfedc 100644 --- a/lib/src/theme/typography.dart +++ b/packages/zeta_flutter_theme/lib/src/typography.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; -import '../../zeta_flutter.dart'; + +import '../zeta_flutter_theme.dart'; /// Typography in Zeta style. /// @@ -7,7 +8,6 @@ import '../../zeta_flutter.dart'; /// This new typeface is clean, distinctive and designed for digital world use cases. /// The typeface is free and available in multiple languages, making it ideal for localization. /// More info can be found at: www.ibm.com/plex -/// {@category Theme} class ZetaTextStyles { /// Largest of the display styles. /// @@ -160,7 +160,7 @@ class ZetaTextStyles { /// content body, like captions. /// {@endtemplate} /// - /// Used for text on [ZetaButton]. + /// Used for text on `ZetaButton`. static const TextStyle labelLarge = TextStyle( fontSize: 16, fontWeight: FontWeight.w500, @@ -230,8 +230,6 @@ class ZetaTextStyles { } /// [ZetaTextStyles] combined into a [TextTheme]. -/// -/// {@category Theme} const TextTheme zetaTextTheme = TextTheme( displayLarge: ZetaTextStyles.displayLarge, displayMedium: ZetaTextStyles.displayMedium, diff --git a/lib/src/utils/zeta.dart b/packages/zeta_flutter_theme/lib/src/zeta.dart similarity index 97% rename from lib/src/utils/zeta.dart rename to packages/zeta_flutter_theme/lib/src/zeta.dart index 010970e0..c272ff97 100644 --- a/lib/src/utils/zeta.dart +++ b/packages/zeta_flutter_theme/lib/src/zeta.dart @@ -1,14 +1,14 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; - -import '../../zeta_flutter.dart'; +import 'color_extensions.dart'; +import 'contrast.dart'; +import 'generated/tokens/primitives.g.dart'; +import 'generated/tokens/semantics.g.dart'; /// An [InheritedWidget] that provides access to Zeta theme settings. /// /// It holds information about the current contrast, theme mode, and theme data. /// The [colors] getter provides the correct color set based on the current theme mode. -/// -/// {@category Utils} class Zeta extends InheritedWidget { /// Constructs a [Zeta] widget. const Zeta({ diff --git a/lib/src/utils/zeta_provider.dart b/packages/zeta_flutter_theme/lib/src/zeta_provider.dart similarity index 98% rename from lib/src/utils/zeta_provider.dart rename to packages/zeta_flutter_theme/lib/src/zeta_provider.dart index ba361d09..83c797a0 100644 --- a/lib/src/utils/zeta_provider.dart +++ b/packages/zeta_flutter_theme/lib/src/zeta_provider.dart @@ -3,14 +3,20 @@ import 'dart:async'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; -import '../../zeta_flutter.dart'; +import 'color_extensions.dart'; +import 'constants.dart'; +import 'contrast.dart'; +import 'custom_theme.dart'; +import 'generated/tokens/primitives.g.dart'; +import 'theme_service.dart'; +import 'typography.dart'; +import 'zeta.dart'; /// A typedef for the ZetaAppBuilder function which passes [BuildContext], light [ThemeData], /// dark [ThemeData] and [ThemeMode] and returns a [Widget]. /// /// This function is used to build the app with the provided theming information. /// -/// {@category Utils} typedef ZetaAppBuilder = Widget Function( BuildContext context, ThemeData light, @@ -19,7 +25,6 @@ typedef ZetaAppBuilder = Widget Function( ); /// A widget that provides Zeta theming and contrast data down the widget tree. -/// {@category Utils} class ZetaProvider extends StatefulWidget with Diagnosticable { /// Constructs a [ZetaProvider] widget. /// @@ -109,7 +114,6 @@ class ZetaProvider extends StatefulWidget with Diagnosticable { } /// The state associated with [ZetaProvider]. -/// {@category Utils} class ZetaProviderState extends State with Diagnosticable, WidgetsBindingObserver { bool _gotTheme = false; diff --git a/packages/zeta_flutter_theme/lib/zeta_flutter_theme.dart b/packages/zeta_flutter_theme/lib/zeta_flutter_theme.dart new file mode 100644 index 00000000..1bb28a4a --- /dev/null +++ b/packages/zeta_flutter_theme/lib/zeta_flutter_theme.dart @@ -0,0 +1,14 @@ +export 'src/breakpoints.dart'; +export 'src/color_extensions.dart'; +export 'src/color_swatch.dart'; +export 'src/constants.dart'; +export 'src/contrast.dart'; +export 'src/custom_theme.dart'; +export 'src/generated/tokens/primitives.g.dart'; +export 'src/generated/tokens/semantics.g.dart'; +export 'src/rounded.dart'; +export 'src/theme_service.dart'; +export 'src/tokens.dart'; +export 'src/typography.dart'; +export 'src/zeta.dart'; +export 'src/zeta_provider.dart'; diff --git a/packages/zeta_flutter_theme/pubspec.yaml b/packages/zeta_flutter_theme/pubspec.yaml new file mode 100644 index 00000000..10d01fe4 --- /dev/null +++ b/packages/zeta_flutter_theme/pubspec.yaml @@ -0,0 +1,36 @@ +name: zeta_flutter_theme +description: "Theme resources for the Zeta Design System from Zebra Technologies." +version: 1.0.0-alpha.1 +homepage: https://design.zebra.com +repository: https://github.com/ZebraDevs/zeta_flutter/tree/develop/packages/zeta_flutter_theme # TODO: Luke Update develop to main +issue_tracker: https://github.com/zebradevs/zeta_flutter/issues +documentation: https://design.zebra.com/flutter/dartdoc/index.html + +environment: + sdk: ^3.6.0 + flutter: ">=3.27.0" + +resolution: workspace + +dependencies: + equatable: ^2.0.7 + flutter: + sdk: flutter + shared_preferences: ^2.3.5 + +dev_dependencies: + flutter_test: + sdk: flutter + mockito: ^5.4.5 + zds_analysis: ^1.1.1 + +flutter: + fonts: + - family: IBMPlexSans + fonts: + - asset: assets/fonts/IBMPlexSans-Light.otf + weight: 300 + - asset: assets/fonts/IBMPlexSans-Regular.otf + weight: 400 + - asset: assets/fonts/IBMPlexSans-Medium.otf + weight: 500 diff --git a/test/src/theme/breakpoints_test.dart b/packages/zeta_flutter_theme/test/breakpoints_test.dart similarity index 55% rename from test/src/theme/breakpoints_test.dart rename to packages/zeta_flutter_theme/test/breakpoints_test.dart index 43f5b6fd..b446b89a 100644 --- a/test/src/theme/breakpoints_test.dart +++ b/packages/zeta_flutter_theme/test/breakpoints_test.dart @@ -1,8 +1,6 @@ import 'package:flutter/widgets.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:zeta_flutter/src/theme/breakpoints.dart'; - -import '../../test_utils/test_app.dart'; +import 'package:zeta_flutter_theme/zeta_flutter_theme.dart'; void main() { group('BreakpointLocal extension', () { @@ -40,15 +38,13 @@ void main() { group('BreakpointFull extension', () { testWidgets('returns DeviceType.mobilePortrait for widths <= 479', (WidgetTester tester) async { await tester.pumpWidget( - TestApp( - home: MediaQuery( - data: const MediaQueryData(size: Size(479, 800)), - child: Builder( - builder: (context) { - expect(context.deviceType, DeviceType.mobilePortrait); - return Container(); - }, - ), + MediaQuery( + data: const MediaQueryData(size: Size(479, 800)), + child: Builder( + builder: (context) { + expect(context.deviceType, DeviceType.mobilePortrait); + return Container(); + }, ), ), ); @@ -56,15 +52,13 @@ void main() { testWidgets('returns DeviceType.mobileLandscape for widths <= 767', (WidgetTester tester) async { await tester.pumpWidget( - TestApp( - home: MediaQuery( - data: const MediaQueryData(size: Size(767, 800)), - child: Builder( - builder: (context) { - expect(context.deviceType, DeviceType.mobileLandscape); - return Container(); - }, - ), + MediaQuery( + data: const MediaQueryData(size: Size(767, 800)), + child: Builder( + builder: (context) { + expect(context.deviceType, DeviceType.mobileLandscape); + return Container(); + }, ), ), ); @@ -72,15 +66,13 @@ void main() { testWidgets('returns DeviceType.tablet for widths <= 991', (WidgetTester tester) async { await tester.pumpWidget( - TestApp( - home: MediaQuery( - data: const MediaQueryData(size: Size(991, 800)), - child: Builder( - builder: (context) { - expect(context.deviceType, DeviceType.tablet); - return Container(); - }, - ), + MediaQuery( + data: const MediaQueryData(size: Size(991, 800)), + child: Builder( + builder: (context) { + expect(context.deviceType, DeviceType.tablet); + return Container(); + }, ), ), ); @@ -88,15 +80,13 @@ void main() { testWidgets('returns DeviceType.desktop for widths <= 1279', (WidgetTester tester) async { await tester.pumpWidget( - TestApp( - home: MediaQuery( - data: const MediaQueryData(size: Size(1279, 800)), - child: Builder( - builder: (context) { - expect(context.deviceType, DeviceType.desktop); - return Container(); - }, - ), + MediaQuery( + data: const MediaQueryData(size: Size(1279, 800)), + child: Builder( + builder: (context) { + expect(context.deviceType, DeviceType.desktop); + return Container(); + }, ), ), ); @@ -104,15 +94,13 @@ void main() { testWidgets('returns DeviceType.desktopL for widths <= 1439', (WidgetTester tester) async { await tester.pumpWidget( - TestApp( - home: MediaQuery( - data: const MediaQueryData(size: Size(1439, 800)), - child: Builder( - builder: (context) { - expect(context.deviceType, DeviceType.desktopL); - return Container(); - }, - ), + MediaQuery( + data: const MediaQueryData(size: Size(1439, 800)), + child: Builder( + builder: (context) { + expect(context.deviceType, DeviceType.desktopL); + return Container(); + }, ), ), ); @@ -120,15 +108,13 @@ void main() { testWidgets('returns DeviceType.desktopXL for widths > 1439', (WidgetTester tester) async { await tester.pumpWidget( - TestApp( - home: MediaQuery( - data: const MediaQueryData(size: Size(1920, 800)), - child: Builder( - builder: (context) { - expect(context.deviceType, DeviceType.desktopXL); - return Container(); - }, - ), + MediaQuery( + data: const MediaQueryData(size: Size(1920, 800)), + child: Builder( + builder: (context) { + expect(context.deviceType, DeviceType.desktopXL); + return Container(); + }, ), ), ); diff --git a/test/src/theme/color_extensions_test.dart b/packages/zeta_flutter_theme/test/color_extensions_test.dart similarity index 98% rename from test/src/theme/color_extensions_test.dart rename to packages/zeta_flutter_theme/test/color_extensions_test.dart index 3fb9ce3d..d572a0ca 100644 --- a/test/src/theme/color_extensions_test.dart +++ b/packages/zeta_flutter_theme/test/color_extensions_test.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:zeta_flutter/zeta_flutter.dart'; +import 'package:zeta_flutter_theme/zeta_flutter_theme.dart'; void main() { group('ZetaColorExtensions', () { diff --git a/test/src/utils/zeta_provider_test.dart b/packages/zeta_flutter_theme/test/zeta_provider_test.dart similarity index 88% rename from test/src/utils/zeta_provider_test.dart rename to packages/zeta_flutter_theme/test/zeta_provider_test.dart index a08910b8..4952d23c 100644 --- a/test/src/utils/zeta_provider_test.dart +++ b/packages/zeta_flutter_theme/test/zeta_provider_test.dart @@ -1,13 +1,11 @@ -import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:mockito/annotations.dart'; import 'package:mockito/mockito.dart'; -import 'package:zeta_flutter/src/utils/zeta_provider.dart'; -import 'package:zeta_flutter/zeta_flutter.dart'; +import 'package:zeta_flutter_theme/zeta_flutter_theme.dart'; +import '../../zeta_flutter/test/test_utils/test_utils.dart'; -import '../../test_utils/utils.dart'; -import './zeta_provider_test.mocks.dart'; +import 'zeta_provider_test.mocks.dart'; @GenerateNiceMocks([MockSpec()]) void main() { @@ -591,68 +589,30 @@ void main() { }); }); - group('debugFillProperties', () { - testWidgets('ZetaProvider debugFillProperties works correctly', (WidgetTester tester) async { - final diagnostics = DiagnosticPropertiesBuilder(); + group('Content Test', () { + final Map debugFillProperties = { + 'initialContrast': 'aaa', + 'initialThemeMode': 'light', + 'initialRounded': 'false', + 'initialTheme': '"1"', + }; + final themes = [ZetaCustomTheme(id: '1')]; + debugFillPropertiesTest( ZetaProvider( builder: (context, light, dark, themeMode) => Container(), - themeService: mockThemeService, - initialContrast: ZetaContrast.aa, + initialThemeMode: ThemeMode.light, + initialContrast: ZetaContrast.aaa, initialRounded: false, - initialThemeMode: ThemeMode.system, - ).debugFillProperties(diagnostics); - - expect(diagnostics.finder('builder'), 'has builder'); - expect(diagnostics.finder('initialThemeMode'), ThemeMode.system.name); - expect(diagnostics.finder('initialContrast'), ZetaContrast.aa.name); - expect(diagnostics.finder('themeService'), 'MockZetaThemeService'); - expect(diagnostics.finder('initialRounded'), 'false'); - expect(diagnostics.finder('customThemes'), '[]'); - expect(diagnostics.finder('initialTheme'), 'null'); - }); - - testWidgets('ZetaProviderState debugFillProperties works correctly', (WidgetTester tester) async { - final diagnostics = DiagnosticPropertiesBuilder(); - - await tester.pumpWidget( - ZetaProvider( - builder: (context, light, dark, themeMode) => Container(), - themeService: mockThemeService, - initialContrast: ZetaContrast.aa, - initialRounded: false, - initialThemeMode: ThemeMode.system, - ), - ); - - await tester.pump(); - tester.state(find.byType(ZetaProvider)).debugFillProperties(diagnostics); + initialTheme: '1', + customThemes: themes, + ), + debugFillProperties, + ); - expect(diagnostics.finder('themeMode'), ThemeMode.system.name); - expect(diagnostics.finder('contrast'), ZetaContrast.aa.name); - expect(diagnostics.finder('customThemes'), '[]'); - expect(diagnostics.finder('customTheme'), 'null'); - }); + testWidgets('ZetaProviderState debugFillProperties works correctly', (WidgetTester tester) async {}); - testWidgets('InternalProvider debugFillProperties works correctly', (WidgetTester tester) async { - final diagnostics = DiagnosticPropertiesBuilder(); - - InternalProvider( - contrast: ZetaContrast.aa, - themeMode: ThemeMode.dark, - rounded: false, - customTheme: null, - customThemes: const [], - widget: (context, light, dark, themeMode) => Container(), - ).debugFillProperties(diagnostics); - - expect(diagnostics.finder('widget'), 'has widget'); - expect(diagnostics.finder('themeMode'), ThemeMode.dark.name); - expect(diagnostics.finder('contrast'), ZetaContrast.aa.name); - expect(diagnostics.finder('rounded'), 'false'); - expect(diagnostics.finder('customThemes'), '[]'); - expect(diagnostics.finder('customTheme'), 'null'); - }); + testWidgets('InternalProvider debugFillProperties works correctly', (WidgetTester tester) async {}); }); }); } diff --git a/test/src/utils/zeta_provider_test.mocks.dart b/packages/zeta_flutter_theme/test/zeta_provider_test.mocks.dart similarity index 70% rename from test/src/utils/zeta_provider_test.mocks.dart rename to packages/zeta_flutter_theme/test/zeta_provider_test.mocks.dart index aa67b784..723e4cd1 100644 --- a/test/src/utils/zeta_provider_test.mocks.dart +++ b/packages/zeta_flutter_theme/test/zeta_provider_test.mocks.dart @@ -1,12 +1,12 @@ // Mocks generated by Mockito 5.4.5 from annotations -// in zeta_flutter/test/src/utils/zeta_provider_test.dart. +// in zeta_flutter_theme/test/zeta_provider_test.dart. // Do not manually edit this file. // ignore_for_file: no_leading_underscores_for_library_prefixes import 'dart:async' as _i3; import 'package:mockito/mockito.dart' as _i1; -import 'package:zeta_flutter/src/theme/theme_service.dart' as _i2; +import 'package:zeta_flutter_theme/src/theme_service.dart' as _i2; // ignore_for_file: type=lint // ignore_for_file: avoid_redundant_argument_values @@ -23,7 +23,13 @@ import 'package:zeta_flutter/src/theme/theme_service.dart' as _i2; // ignore_for_file: subtype_of_sealed_class class _FakeZetaThemeServiceData_0 extends _i1.SmartFake implements _i2.ZetaThemeServiceData { - _FakeZetaThemeServiceData_0(Object parent, Invocation parentInvocation) : super(parent, parentInvocation); + _FakeZetaThemeServiceData_0( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); } /// A class which mocks [ZetaThemeService]. @@ -32,24 +38,33 @@ class _FakeZetaThemeServiceData_0 extends _i1.SmartFake implements _i2.ZetaTheme class MockZetaThemeService extends _i1.Mock implements _i2.ZetaThemeService { @override _i3.Future<_i2.ZetaThemeServiceData> loadTheme() => (super.noSuchMethod( - Invocation.method(#loadTheme, []), - returnValue: _i3.Future<_i2.ZetaThemeServiceData>.value( - _FakeZetaThemeServiceData_0( - this, - Invocation.method(#loadTheme, []), - ), + Invocation.method( + #loadTheme, + [], ), - returnValueForMissingStub: _i3.Future<_i2.ZetaThemeServiceData>.value( - _FakeZetaThemeServiceData_0( - this, - Invocation.method(#loadTheme, []), + returnValue: _i3.Future<_i2.ZetaThemeServiceData>.value(_FakeZetaThemeServiceData_0( + this, + Invocation.method( + #loadTheme, + [], ), - ), + )), + returnValueForMissingStub: _i3.Future<_i2.ZetaThemeServiceData>.value(_FakeZetaThemeServiceData_0( + this, + Invocation.method( + #loadTheme, + [], + ), + )), ) as _i3.Future<_i2.ZetaThemeServiceData>); @override _i3.Future saveTheme({required _i2.ZetaThemeServiceData? themeData}) => (super.noSuchMethod( - Invocation.method(#saveTheme, [], {#themeData: themeData}), + Invocation.method( + #saveTheme, + [], + {#themeData: themeData}, + ), returnValue: _i3.Future.value(), returnValueForMissingStub: _i3.Future.value(), ) as _i3.Future); diff --git a/test/src/utils/zeta_test.dart b/packages/zeta_flutter_theme/test/zeta_test.dart similarity index 98% rename from test/src/utils/zeta_test.dart rename to packages/zeta_flutter_theme/test/zeta_test.dart index 9cf8437a..42de9666 100644 --- a/test/src/utils/zeta_test.dart +++ b/packages/zeta_flutter_theme/test/zeta_test.dart @@ -1,9 +1,9 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:zeta_flutter/zeta_flutter.dart'; +import 'package:zeta_flutter_theme/zeta_flutter_theme.dart'; -import '../../test_utils/utils.dart'; +import '../../zeta_flutter/test/test_utils/test_utils.dart'; void main() { group('Zeta InheritedWidget', () { diff --git a/packages/zeta_flutter_utils/.metadata b/packages/zeta_flutter_utils/.metadata new file mode 100644 index 00000000..f5be3bc8 --- /dev/null +++ b/packages/zeta_flutter_utils/.metadata @@ -0,0 +1,10 @@ +# 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: "8495dee1fd4aacbe9de707e7581203232f591b2f" + channel: "stable" + +project_type: package diff --git a/packages/zeta_flutter_utils/CHANGELOG.md b/packages/zeta_flutter_utils/CHANGELOG.md new file mode 100644 index 00000000..77614f70 --- /dev/null +++ b/packages/zeta_flutter_utils/CHANGELOG.md @@ -0,0 +1,3 @@ +# Changelog + +## [1.0.0-alpha.1] - Initial alpha release diff --git a/packages/zeta_flutter_utils/LICENSE b/packages/zeta_flutter_utils/LICENSE new file mode 100644 index 00000000..2ecb76a1 --- /dev/null +++ b/packages/zeta_flutter_utils/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Zebra Technologies Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/zeta_flutter_utils/LICENSE-3RD-PARTY b/packages/zeta_flutter_utils/LICENSE-3RD-PARTY new file mode 100644 index 00000000..90fd4eb2 --- /dev/null +++ b/packages/zeta_flutter_utils/LICENSE-3RD-PARTY @@ -0,0 +1,33 @@ +# THIRD PARTY LICENSES + +## Mike Rydstrom + +Applies to: + +- platform_is.dart +- universal_platform_vm.dart +- universal_platform_web.dart + +https://gist.github.com/rydmike/1771fe24c050ebfe792fa309371154d8 + +MIT License + +Copyright (c) 2021 Mike Rydstrom + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/zeta_flutter_utils/README.md b/packages/zeta_flutter_utils/README.md new file mode 100644 index 00000000..da64478d --- /dev/null +++ b/packages/zeta_flutter_utils/README.md @@ -0,0 +1,52 @@ +# Zeta Utils + +Utility classes and functions used by zeta_flutter from Zebra Technologies. + +These utils are a part of the Zeta Design System, and can be used either on their own or with [Zeta Flutter](https://pub.dev/packages/zeta_flutter) + +### Debounce + +Debouncing ensures that the function is only called once after a specified duration has passed since the last time it was invoked. This is useful for scenarios where you want to limit the rate at which a function is executed, such as handling user input events or API calls. + +```dart +final debouncer = Debounce(()=> print('Hello, world!'), duration: Duration(seconds: 1)); +``` + +### Nothing + +A convenient widget that renders nothing. It is typically used when a widget requires a child, but we don't want to provide one. + +```dart + child: Nothing(), +``` + +### Extensions + +Various extension methods are provided: + +#### Iterable + +- `divide(Widget separator)` - Divides a list of widgets with user defined separators. +- `gap(double gap)` - Spaces out a list of widgets with a gap of fixed width. + +#### Widget + +- `paddingAll(double space)` - Adds padding to all sides of a widget. +- `paddingStart(double space) / paddingEnd(double space)` - Adds padding to the start / end of a widget depending on if device is configured for LTR or RTL. +- `paddingTop(double space) / paddingBottom(double space)` Adds padding to the top or bottom of a widget. +- `paddingVertical(double space)` - Adds padding to both the top and bottom of a widget. +- `paddingHorizontal(double space)` - Adds padding to both the start and end of a widget. + +#### Num + +- `formatMaxChars([int maxChars=1])` - returns numbers up to a maximum number of characters. For example, when maxChars = 1, any number over 9 will return '9+'. Typically used for notifications. + +#### String + +- `initials` - Returns the initials from a name. + +- `capitalize` - Capitalizes the first letter of a string. + +### Universal Platform Check + +A universal platform check that works on web too. Copyright (c) 2021 Mike Rydstrom; see [3rd party licenses.](https://github.com/ZebraDevs/zeta_flutter/tree/develop/packages/zeta_flutter_utils/LICENSE-3RD-PARTY) diff --git a/packages/zeta_flutter_utils/analysis_options.yaml b/packages/zeta_flutter_utils/analysis_options.yaml new file mode 100644 index 00000000..278d8434 --- /dev/null +++ b/packages/zeta_flutter_utils/analysis_options.yaml @@ -0,0 +1 @@ +include: package:zds_analysis/analysis_options_lib_all_files.yaml diff --git a/packages/zeta_flutter_utils/example/example.md b/packages/zeta_flutter_utils/example/example.md new file mode 100644 index 00000000..65e1c339 --- /dev/null +++ b/packages/zeta_flutter_utils/example/example.md @@ -0,0 +1,87 @@ +### Debounce + +```dart +/// Initialize Debouncer +final debouncer = Debounce(()=> print('Hello, world!'), duration: Duration(seconds: 1)); + +/// Reset timer with optional new callback +debouncer.debounce(newCallback: ()=> print('Later, world!')); + +/// Cancel debouncer +debouncer.cancel(); + +``` + +### Nothing + +```dart + child: Nothing() +``` + +### Extensions + +#### Iterable + +```dart +Column( + children: [ + Text('Hello'), + Text('world'), + ].divide(const Text('!')).toList(), +) + +Column( + children: [ + Text('Hello'), + Text('world'), + ].gap(40), +) +``` + +#### Widget + +```dart + +Text('Hello world').paddingAll(10); +Text('Hello world').paddingStart(10); +Text('Hello world').paddingEnd(10); +Text('Hello world').paddingTop(10); +Text('Hello world').paddingBottom(10); +Text('Hello world').paddingHorizontal(10); +Text('Hello world').paddingVertical(10); +``` + +#### Num + +```dart +102.formatMaxChars(3); // 99+ +``` + +#### String + +```dart +'Zebra Employee'.initials; // ZE + +'zebra'.capitalize; // Zebra +``` + +### Platform + +```dart +// To check host platform: + +if (PlatformIs.android) +if (PlatformIs.iOS) +if (PlatformIs.macOS) +if (PlatformIs.windows) +if (PlatformIs.linux) +if (PlatformIs.fuchsia) + +// To check device type: +if (PlatformIs.mobile) +if (PlatformIs.desktop) + +// To check if application is running on web: +if (PlatformIs.web) + +``` diff --git a/packages/zeta_flutter_utils/lib/src/platform/debounce.dart b/packages/zeta_flutter_utils/lib/src/platform/debounce.dart new file mode 100644 index 00000000..60f4f5b3 --- /dev/null +++ b/packages/zeta_flutter_utils/lib/src/platform/debounce.dart @@ -0,0 +1,69 @@ +import 'dart:async'; + +export 'extensions.dart'; + +const Duration _debounceDuration = Duration(milliseconds: 500); + +/// A utility function to debounce a given function. +/// +/// Debouncing ensures that the function is only called once after a specified +/// duration has passed since the last time it was invoked. This is useful for +/// scenarios where you want to limit the rate at which a function is executed, +/// such as handling user input events or API calls. +/// +/// Example: +/// +/// ```dart +/// final debouncer = Debounce(() => print('Hello, world!')); +/// ``` +/// +/// By default, this will print 'Hello, world!' after 500 milliseconds. You can +/// also specify a custom duration: +/// +/// ```dart +/// final debouncer = Debounce(() => print('Hello, world!'), duration: Duration(seconds: 1)}); +/// ``` +/// +/// To reset the debounce, and start the timer again, call the `debounce` method with an optional new callback: +/// +/// ```dart +/// debouncer.debounce(newCallback: () => print('Later, world!')); +/// ``` +/// +/// If this debounce is no longer needed, you can cancel it: +/// +/// ```dart +/// debouncer.cancel(); +/// ``` +class Debounce { + /// Constructs and starts the debouncer. + factory Debounce(void Function() callback, {Duration duration = _debounceDuration}) { + return Debounce._(callback, duration)..debounce(); + } + + /// Constructs debouncer but does not initialize the timer. + Debounce.stopped(this.callback, {this.duration = _debounceDuration}); + + Debounce._(this.callback, this.duration); + + /// Function called after [Duration] has elapsed. + final void Function() callback; + + /// Duration to wait for function to be ready to send. + /// + /// Defaults to 500 milliseconds. + final Duration duration; + + Timer? _timer; + + /// Starts the debouncer. + /// + /// This function is called automatically when default factory constructor is used. + void debounce({void Function()? newCallback}) { + _timer?.cancel(); + _timer = Timer(duration, newCallback ?? callback); + } + + /// Cancels the debouncer. + void cancel() => _timer?.cancel(); +} diff --git a/lib/src/utils/extensions.dart b/packages/zeta_flutter_utils/lib/src/platform/extensions.dart similarity index 95% rename from lib/src/utils/extensions.dart rename to packages/zeta_flutter_utils/lib/src/platform/extensions.dart index 8ba366f5..5f8e1ee7 100644 --- a/lib/src/utils/extensions.dart +++ b/packages/zeta_flutter_utils/lib/src/platform/extensions.dart @@ -59,8 +59,11 @@ extension SpacingWidget on Widget { /// Extensions on [num]. extension NumExtensions on num? { /// Returns input as a formatted string with a maximum amount of characters. + /// For example, when maxChars = 1, any number over 9 will return '9+'. /// /// [maxChars] defaults to one. + /// + /// Typically used for notifications. String formatMaxChars([int maxChars = 1]) { final strVal = this == null ? '' : this!.abs().toString(); return strVal.length > maxChars ? '${'9' * maxChars}+' : strVal; @@ -83,7 +86,7 @@ extension StringExtensions on String? { } /// Capitalizes first letter of string. - String capitalize() { + String get capitalize { if (this == null || this!.isEmpty) return ''; if (this!.length == 1) return this!.toUpperCase(); return '${this![0].toUpperCase()}${this!.substring(1).toLowerCase()}'; diff --git a/lib/src/utils/nothing.dart b/packages/zeta_flutter_utils/lib/src/platform/nothing.dart similarity index 75% rename from lib/src/utils/nothing.dart rename to packages/zeta_flutter_utils/lib/src/platform/nothing.dart index a56d193e..813de3c7 100644 --- a/lib/src/utils/nothing.dart +++ b/packages/zeta_flutter_utils/lib/src/platform/nothing.dart @@ -2,7 +2,7 @@ import 'package:flutter/widgets.dart'; /// A convenient widget that renders nothing. /// -/// {@category Utils} +/// This is typically used when a widget needs a child but we don't want to provide one. class Nothing extends StatelessWidget { /// Constructs a [Nothing] widget. const Nothing({super.key}); diff --git a/lib/src/utils/platform/platform_is.dart b/packages/zeta_flutter_utils/lib/src/platform/platform_is.dart similarity index 97% rename from lib/src/utils/platform/platform_is.dart rename to packages/zeta_flutter_utils/lib/src/platform/platform_is.dart index 9a15d7cc..b7e031f8 100644 --- a/lib/src/utils/platform/platform_is.dart +++ b/packages/zeta_flutter_utils/lib/src/platform/platform_is.dart @@ -1,5 +1,7 @@ // The content of this file is adapted from Mike Rydstrom: // https://gist.github.com/rydmike/1771fe24c050ebfe792fa309371154d8 +// +// Copyright (c) 2021 Mike Rydstrom. See ./LICENSE_THIRD_PARTY for details. import 'universal_platform_web.dart' if (dart.library.io) 'universal_platform_vm.dart'; diff --git a/lib/src/utils/platform/universal_platform_vm.dart b/packages/zeta_flutter_utils/lib/src/platform/universal_platform_vm.dart similarity index 100% rename from lib/src/utils/platform/universal_platform_vm.dart rename to packages/zeta_flutter_utils/lib/src/platform/universal_platform_vm.dart diff --git a/lib/src/utils/platform/universal_platform_web.dart b/packages/zeta_flutter_utils/lib/src/platform/universal_platform_web.dart similarity index 100% rename from lib/src/utils/platform/universal_platform_web.dart rename to packages/zeta_flutter_utils/lib/src/platform/universal_platform_web.dart diff --git a/packages/zeta_flutter_utils/lib/zeta_flutter_utils.dart b/packages/zeta_flutter_utils/lib/zeta_flutter_utils.dart new file mode 100644 index 00000000..f63430bc --- /dev/null +++ b/packages/zeta_flutter_utils/lib/zeta_flutter_utils.dart @@ -0,0 +1,7 @@ +/// Zeta Utils library. +library; + +export 'src/platform/debounce.dart'; +export 'src/platform/extensions.dart'; +export 'src/platform/nothing.dart'; +export 'src/platform/platform_is.dart' show PlatformIs; diff --git a/packages/zeta_flutter_utils/pubspec.yaml b/packages/zeta_flutter_utils/pubspec.yaml new file mode 100644 index 00000000..a63cc2ed --- /dev/null +++ b/packages/zeta_flutter_utils/pubspec.yaml @@ -0,0 +1,27 @@ +name: zeta_flutter_utils +description: "Utility functions for the Zeta Design System from Zebra Technologies." +version: 1.0.0-alpha.1 +homepage: https://design.zebra.com +repository: https://github.com/ZebraDevs/zeta_flutter/tree/develop/packages/zeta_flutter_utils # TODO: Luke Update develop to main +issue_tracker: https://github.com/zebradevs/zeta_flutter/issues +documentation: https://design.zebra.com/flutter/dartdoc/index.html + +environment: + sdk: ^3.6.0 + flutter: ">=3.27.0" + +resolution: workspace + +dependencies: + flutter: + sdk: flutter + web: ^1.1.0 + +dev_dependencies: + analyzer: ^7.0.0 + flutter_test: + sdk: flutter + mockito: ^5.4.5 + zds_analysis: ^1.1.1 + zeta_flutter: + path: ../zeta_flutter diff --git a/test/scripts/output/test_table.md b/packages/zeta_flutter_utils/scripts/output/test_table.md similarity index 100% rename from test/scripts/output/test_table.md rename to packages/zeta_flutter_utils/scripts/output/test_table.md diff --git a/test/scripts/test_counter.dart b/packages/zeta_flutter_utils/scripts/test_counter.dart similarity index 97% rename from test/scripts/test_counter.dart rename to packages/zeta_flutter_utils/scripts/test_counter.dart index 60be7b0f..664d8e29 100644 --- a/test/scripts/test_counter.dart +++ b/packages/zeta_flutter_utils/scripts/test_counter.dart @@ -19,6 +19,7 @@ import 'utils/utils.dart'; /// This can be useful for generating reports, performing static analysis, or /// automating certain tasks related to your test suite. class TestGroupVisitor extends RecursiveAstVisitor { + /// A list of maps containing test group names and their corresponding tests. final List> groups = []; /// Visits a method invocation node in the abstract syntax tree (AST). @@ -91,8 +92,10 @@ class TestGroupVisitor extends RecursiveAstVisitor { /// generating test reports or running specific tests. /// class TestVisitor extends RecursiveAstVisitor { - TestVisitor(this.tests); + /// Creates a new instance of the `TestVisitor` class. + const TestVisitor(this.tests); + /// A list of maps containing test names and their corresponding data. final List> tests; /// Visits a method invocation node in the abstract syntax tree (AST). diff --git a/test/scripts/utils/utils.dart b/packages/zeta_flutter_utils/scripts/utils/utils.dart similarity index 96% rename from test/scripts/utils/utils.dart rename to packages/zeta_flutter_utils/scripts/utils/utils.dart index d5796eb3..b616d1b7 100644 --- a/test/scripts/utils/utils.dart +++ b/packages/zeta_flutter_utils/scripts/utils/utils.dart @@ -45,6 +45,7 @@ typedef TestGroups = Map>>; /// ``` typedef TestCount = Map>; +/// Extensions on [MethodInvocation] to provide additional functionality. extension NodeExtension on MethodInvocation { /// Checks if the current node has a null parent node. /// @@ -90,6 +91,7 @@ extension NodeExtension on MethodInvocation { } } +/// Extensions on [String] to provide additional functionality. extension StringExtension on String { /// Capitalizes the first letter of the string. /// @@ -100,10 +102,10 @@ extension StringExtension on String { /// /// ```dart /// String text = "hello"; - /// String capitalizedText = text.capitalize(); + /// String capitalizedText = text.capitalize; /// print(capitalizedText); // Output: Hello /// ``` - String capitalize() { + String get capitalize { if (isEmpty) return this; return this[0].toUpperCase() + substring(1); } @@ -115,7 +117,7 @@ extension StringExtension on String { /// /// Returns a new string with each word capitalized. String capitalizeEachWord() { - return split(' ').map((word) => word.capitalize()).join(' '); + return split(' ').map((word) => word.capitalize).join(' '); } } @@ -193,6 +195,7 @@ Future writeMDToFile(String path, String mdData) async { await mdFile.writeAsString(mdData); } +/// Extensions on [List] to provide additional functionality. extension ListExtension on List { /// Adds rows of components to the specified target. /// diff --git a/test/src/utils/debounce_test.dart b/packages/zeta_flutter_utils/test/debounce_test.dart similarity index 79% rename from test/src/utils/debounce_test.dart rename to packages/zeta_flutter_utils/test/debounce_test.dart index 0cb03fee..c915473c 100644 --- a/test/src/utils/debounce_test.dart +++ b/packages/zeta_flutter_utils/test/debounce_test.dart @@ -7,7 +7,7 @@ class MockCallback extends Mock { } void main() { - group('ZetaDebounce', () { + group('Debounce', () { late MockCallback mockCallback; setUp(() { @@ -16,7 +16,7 @@ void main() { test('debounce calls the callback after the specified duration', () async { const debounceDuration = Duration(milliseconds: 100); - ZetaDebounce(mockCallback.call, duration: debounceDuration); + Debounce(mockCallback.call, duration: debounceDuration); await Future.delayed(debounceDuration + const Duration(milliseconds: 50)); @@ -25,7 +25,7 @@ void main() { test('debounce does not call the callback if cancelled', () async { const debounceDuration = Duration(milliseconds: 100); - ZetaDebounce(mockCallback.call, duration: debounceDuration).cancel(); + Debounce(mockCallback.call, duration: debounceDuration).cancel(); await Future.delayed(debounceDuration + const Duration(milliseconds: 50)); @@ -34,7 +34,7 @@ void main() { test('debounce restarts the timer if called again before duration ends', () async { const debounceDuration = Duration(milliseconds: 100); - final debouncer = ZetaDebounce(mockCallback.call, duration: debounceDuration); + final debouncer = Debounce(mockCallback.call, duration: debounceDuration); await Future.delayed(const Duration(milliseconds: 50)); debouncer.debounce(); @@ -46,9 +46,9 @@ void main() { verify(mockCallback()).called(1); }); - test('ZetaDebounce.stopped does not start the timer automatically', () async { + test('Debounce.stopped does not start the timer automatically', () async { const debounceDuration = Duration(milliseconds: 100); - ZetaDebounce.stopped(mockCallback.call, duration: debounceDuration); + Debounce.stopped(mockCallback.call, duration: debounceDuration); await Future.delayed(debounceDuration + const Duration(milliseconds: 50)); @@ -57,7 +57,7 @@ void main() { test('debounce can be called with a new callback', () async { const debounceDuration = Duration(milliseconds: 100); - final debouncer = ZetaDebounce(mockCallback.call, duration: debounceDuration); + final debouncer = Debounce(mockCallback.call, duration: debounceDuration); final newCallback = MockCallback(); debouncer.debounce(newCallback: newCallback.call); diff --git a/test/src/utils/extensions_test.dart b/packages/zeta_flutter_utils/test/extensions_test.dart similarity index 81% rename from test/src/utils/extensions_test.dart rename to packages/zeta_flutter_utils/test/extensions_test.dart index b8b9283e..c9c53f48 100644 --- a/test/src/utils/extensions_test.dart +++ b/packages/zeta_flutter_utils/test/extensions_test.dart @@ -3,8 +3,6 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:mockito/annotations.dart'; import 'package:zeta_flutter/zeta_flutter.dart'; -import '../../test_utils/test_app.dart'; - @GenerateNiceMocks([ MockSpec(), MockSpec(), @@ -22,7 +20,7 @@ void main() { final dividedWidgets = widgets.divide(const Divider()).toList(); await tester.pumpWidget( - TestApp( + MaterialApp( home: Column( children: dividedWidgets, ), @@ -43,7 +41,7 @@ void main() { final gappedWidgets = widgets.gap(10); await tester.pumpWidget( - TestApp( + MaterialApp( home: Column( children: gappedWidgets, ), @@ -61,9 +59,7 @@ void main() { final widget = const Text('Test').paddingAll(10); await tester.pumpWidget( - TestApp( - home: widget, - ), + MaterialApp(home: widget), ); final padding = tester.widget(find.byType(Padding)).padding as EdgeInsets; @@ -74,11 +70,9 @@ void main() { final widget = const Text('Test').paddingStart(10); await tester.pumpWidget( - TestApp( - home: Directionality( - textDirection: TextDirection.ltr, - child: widget, - ), + Directionality( + textDirection: TextDirection.ltr, + child: widget, ), ); @@ -93,11 +87,9 @@ void main() { final widget = const Text('Test').paddingEnd(10); await tester.pumpWidget( - TestApp( - home: Directionality( - textDirection: TextDirection.ltr, - child: widget, - ), + Directionality( + textDirection: TextDirection.ltr, + child: widget, ), ); @@ -112,11 +104,9 @@ void main() { final widget = const Text('Test').paddingTop(10); await tester.pumpWidget( - TestApp( - home: Directionality( - textDirection: TextDirection.ltr, - child: widget, - ), + Directionality( + textDirection: TextDirection.ltr, + child: widget, ), ); @@ -131,11 +121,9 @@ void main() { final widget = const Text('Test').paddingBottom(10); await tester.pumpWidget( - TestApp( - home: Directionality( - textDirection: TextDirection.ltr, - child: widget, - ), + Directionality( + textDirection: TextDirection.ltr, + child: widget, ), ); @@ -150,11 +138,9 @@ void main() { final widget = const Text('Test').paddingVertical(10); await tester.pumpWidget( - TestApp( - home: Directionality( - textDirection: TextDirection.ltr, - child: widget, - ), + Directionality( + textDirection: TextDirection.ltr, + child: widget, ), ); @@ -169,11 +155,9 @@ void main() { final widget = const Text('Test').paddingHorizontal(10); await tester.pumpWidget( - TestApp( - home: Directionality( - textDirection: TextDirection.ltr, - child: widget, - ), + Directionality( + textDirection: TextDirection.ltr, + child: widget, ), ); @@ -205,11 +189,11 @@ void main() { }); test('capitalize capitalizes first letter', () { - expect('hello'.capitalize(), 'Hello'); - expect('HELLO'.capitalize(), 'Hello'); - expect('a'.capitalize(), 'A'); - expect(''.capitalize(), ''); - expect(null.capitalize(), ''); + expect('hello'.capitalize, 'Hello'); + expect('HELLO'.capitalize, 'Hello'); + expect('a'.capitalize, 'A'); + expect(''.capitalize, ''); + expect(null.capitalize, ''); }); }); } diff --git a/test/src/utils/extensions_test.mocks.dart b/packages/zeta_flutter_utils/test/extensions_test.mocks.dart similarity index 80% rename from test/src/utils/extensions_test.mocks.dart rename to packages/zeta_flutter_utils/test/extensions_test.mocks.dart index 7292d0fd..b2090d75 100644 --- a/test/src/utils/extensions_test.mocks.dart +++ b/packages/zeta_flutter_utils/test/extensions_test.mocks.dart @@ -1,5 +1,5 @@ // Mocks generated by Mockito 5.4.5 from annotations -// in zeta_flutter/test/src/utils/extensions_test.dart. +// in zeta_flutter_utils/test/extensions_test.dart. // Do not manually edit this file. // ignore_for_file: no_leading_underscores_for_library_prefixes @@ -10,7 +10,7 @@ import 'package:flutter/material.dart' as _i2; import 'package:flutter/src/widgets/notification_listener.dart' as _i6; import 'package:mockito/mockito.dart' as _i1; import 'package:mockito/src/dummies.dart' as _i7; -import 'package:zeta_flutter/zeta_flutter.dart' as _i4; +import 'package:zeta_flutter_theme/zeta_flutter_theme.dart' as _i4; // ignore_for_file: type=lint // ignore_for_file: avoid_redundant_argument_values @@ -27,21 +27,39 @@ import 'package:zeta_flutter/zeta_flutter.dart' as _i4; // ignore_for_file: subtype_of_sealed_class class _FakeWidget_0 extends _i1.SmartFake implements _i2.Widget { - _FakeWidget_0(Object parent, Invocation parentInvocation) : super(parent, parentInvocation); + _FakeWidget_0( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); @override String toString({_i3.DiagnosticLevel? minLevel = _i3.DiagnosticLevel.info}) => super.toString(); } class _FakeInheritedWidget_1 extends _i1.SmartFake implements _i2.InheritedWidget { - _FakeInheritedWidget_1(Object parent, Invocation parentInvocation) : super(parent, parentInvocation); + _FakeInheritedWidget_1( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); @override String toString({_i3.DiagnosticLevel? minLevel = _i3.DiagnosticLevel.info}) => super.toString(); } class _FakeDiagnosticsNode_2 extends _i1.SmartFake implements _i3.DiagnosticsNode { - _FakeDiagnosticsNode_2(Object parent, Invocation parentInvocation) : super(parent, parentInvocation); + _FakeDiagnosticsNode_2( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); @override String toString({ @@ -52,31 +70,73 @@ class _FakeDiagnosticsNode_2 extends _i1.SmartFake implements _i3.DiagnosticsNod } class _FakeZetaPrimitives_3 extends _i1.SmartFake implements _i4.ZetaPrimitives { - _FakeZetaPrimitives_3(Object parent, Invocation parentInvocation) : super(parent, parentInvocation); + _FakeZetaPrimitives_3( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); } class _FakeColor_4 extends _i1.SmartFake implements _i5.Color { - _FakeColor_4(Object parent, Invocation parentInvocation) : super(parent, parentInvocation); + _FakeColor_4( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); } class _FakeZetaSemantics_5 extends _i1.SmartFake implements _i4.ZetaSemantics { - _FakeZetaSemantics_5(Object parent, Invocation parentInvocation) : super(parent, parentInvocation); + _FakeZetaSemantics_5( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); } class _FakeZetaColors_6 extends _i1.SmartFake implements _i4.ZetaColors { - _FakeZetaColors_6(Object parent, Invocation parentInvocation) : super(parent, parentInvocation); + _FakeZetaColors_6( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); } class _FakeZetaRadius_7 extends _i1.SmartFake implements _i4.ZetaRadius { - _FakeZetaRadius_7(Object parent, Invocation parentInvocation) : super(parent, parentInvocation); + _FakeZetaRadius_7( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); } class _FakeZetaSpacing_8 extends _i1.SmartFake implements _i4.ZetaSpacing { - _FakeZetaSpacing_8(Object parent, Invocation parentInvocation) : super(parent, parentInvocation); + _FakeZetaSpacing_8( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); } class _FakeInheritedElement_9 extends _i1.SmartFake implements _i2.InheritedElement { - _FakeInheritedElement_9(Object parent, Invocation parentInvocation) : super(parent, parentInvocation); + _FakeInheritedElement_9( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); @override String toString({_i3.DiagnosticLevel? minLevel = _i3.DiagnosticLevel.info}) => super.toString(); @@ -89,7 +149,10 @@ class MockBuildContext extends _i1.Mock implements _i2.BuildContext { @override _i2.Widget get widget => (super.noSuchMethod( Invocation.getter(#widget), - returnValue: _FakeWidget_0(this, Invocation.getter(#widget)), + returnValue: _FakeWidget_0( + this, + Invocation.getter(#widget), + ), returnValueForMissingStub: _FakeWidget_0( this, Invocation.getter(#widget), @@ -141,19 +204,28 @@ class MockBuildContext extends _i1.Mock implements _i2.BuildContext { @override void visitAncestorElements(_i2.ConditionalElementVisitor? visitor) => super.noSuchMethod( - Invocation.method(#visitAncestorElements, [visitor]), + Invocation.method( + #visitAncestorElements, + [visitor], + ), returnValueForMissingStub: null, ); @override void visitChildElements(_i2.ElementVisitor? visitor) => super.noSuchMethod( - Invocation.method(#visitChildElements, [visitor]), + Invocation.method( + #visitChildElements, + [visitor], + ), returnValueForMissingStub: null, ); @override void dispatchNotification(_i6.Notification? notification) => super.noSuchMethod( - Invocation.method(#dispatchNotification, [notification]), + Invocation.method( + #dispatchNotification, + [notification], + ), returnValueForMissingStub: null, ); @@ -163,14 +235,26 @@ class MockBuildContext extends _i1.Mock implements _i2.BuildContext { _i3.DiagnosticsTreeStyle? style = _i3.DiagnosticsTreeStyle.errorProperty, }) => (super.noSuchMethod( - Invocation.method(#describeElement, [name], {#style: style}), + Invocation.method( + #describeElement, + [name], + {#style: style}, + ), returnValue: _FakeDiagnosticsNode_2( this, - Invocation.method(#describeElement, [name], {#style: style}), + Invocation.method( + #describeElement, + [name], + {#style: style}, + ), ), returnValueForMissingStub: _FakeDiagnosticsNode_2( this, - Invocation.method(#describeElement, [name], {#style: style}), + Invocation.method( + #describeElement, + [name], + {#style: style}, + ), ), ) as _i3.DiagnosticsNode); @@ -180,39 +264,59 @@ class MockBuildContext extends _i1.Mock implements _i2.BuildContext { _i3.DiagnosticsTreeStyle? style = _i3.DiagnosticsTreeStyle.errorProperty, }) => (super.noSuchMethod( - Invocation.method(#describeWidget, [name], {#style: style}), + Invocation.method( + #describeWidget, + [name], + {#style: style}, + ), returnValue: _FakeDiagnosticsNode_2( this, - Invocation.method(#describeWidget, [name], {#style: style}), + Invocation.method( + #describeWidget, + [name], + {#style: style}, + ), ), returnValueForMissingStub: _FakeDiagnosticsNode_2( this, - Invocation.method(#describeWidget, [name], {#style: style}), + Invocation.method( + #describeWidget, + [name], + {#style: style}, + ), ), ) as _i3.DiagnosticsNode); @override - List<_i3.DiagnosticsNode> describeMissingAncestor({ - required Type? expectedAncestorType, - }) => - (super.noSuchMethod( - Invocation.method(#describeMissingAncestor, [], { - #expectedAncestorType: expectedAncestorType, - }), + List<_i3.DiagnosticsNode> describeMissingAncestor({required Type? expectedAncestorType}) => (super.noSuchMethod( + Invocation.method( + #describeMissingAncestor, + [], + {#expectedAncestorType: expectedAncestorType}, + ), returnValue: <_i3.DiagnosticsNode>[], returnValueForMissingStub: <_i3.DiagnosticsNode>[], ) as List<_i3.DiagnosticsNode>); @override _i3.DiagnosticsNode describeOwnershipChain(String? name) => (super.noSuchMethod( - Invocation.method(#describeOwnershipChain, [name]), + Invocation.method( + #describeOwnershipChain, + [name], + ), returnValue: _FakeDiagnosticsNode_2( this, - Invocation.method(#describeOwnershipChain, [name]), + Invocation.method( + #describeOwnershipChain, + [name], + ), ), returnValueForMissingStub: _FakeDiagnosticsNode_2( this, - Invocation.method(#describeOwnershipChain, [name]), + Invocation.method( + #describeOwnershipChain, + [name], + ), ), ) as _i3.DiagnosticsNode); } @@ -237,7 +341,10 @@ class MockZetaColors extends _i1.Mock implements _i4.ZetaColors { @override _i5.Color get mainDefault => (super.noSuchMethod( Invocation.getter(#mainDefault), - returnValue: _FakeColor_4(this, Invocation.getter(#mainDefault)), + returnValue: _FakeColor_4( + this, + Invocation.getter(#mainDefault), + ), returnValueForMissingStub: _FakeColor_4( this, Invocation.getter(#mainDefault), @@ -247,7 +354,10 @@ class MockZetaColors extends _i1.Mock implements _i4.ZetaColors { @override _i5.Color get mainSubtle => (super.noSuchMethod( Invocation.getter(#mainSubtle), - returnValue: _FakeColor_4(this, Invocation.getter(#mainSubtle)), + returnValue: _FakeColor_4( + this, + Invocation.getter(#mainSubtle), + ), returnValueForMissingStub: _FakeColor_4( this, Invocation.getter(#mainSubtle), @@ -257,7 +367,10 @@ class MockZetaColors extends _i1.Mock implements _i4.ZetaColors { @override _i5.Color get mainPrimary => (super.noSuchMethod( Invocation.getter(#mainPrimary), - returnValue: _FakeColor_4(this, Invocation.getter(#mainPrimary)), + returnValue: _FakeColor_4( + this, + Invocation.getter(#mainPrimary), + ), returnValueForMissingStub: _FakeColor_4( this, Invocation.getter(#mainPrimary), @@ -267,7 +380,10 @@ class MockZetaColors extends _i1.Mock implements _i4.ZetaColors { @override _i5.Color get mainSecondary => (super.noSuchMethod( Invocation.getter(#mainSecondary), - returnValue: _FakeColor_4(this, Invocation.getter(#mainSecondary)), + returnValue: _FakeColor_4( + this, + Invocation.getter(#mainSecondary), + ), returnValueForMissingStub: _FakeColor_4( this, Invocation.getter(#mainSecondary), @@ -277,7 +393,10 @@ class MockZetaColors extends _i1.Mock implements _i4.ZetaColors { @override _i5.Color get mainPositive => (super.noSuchMethod( Invocation.getter(#mainPositive), - returnValue: _FakeColor_4(this, Invocation.getter(#mainPositive)), + returnValue: _FakeColor_4( + this, + Invocation.getter(#mainPositive), + ), returnValueForMissingStub: _FakeColor_4( this, Invocation.getter(#mainPositive), @@ -287,7 +406,10 @@ class MockZetaColors extends _i1.Mock implements _i4.ZetaColors { @override _i5.Color get mainWarning => (super.noSuchMethod( Invocation.getter(#mainWarning), - returnValue: _FakeColor_4(this, Invocation.getter(#mainWarning)), + returnValue: _FakeColor_4( + this, + Invocation.getter(#mainWarning), + ), returnValueForMissingStub: _FakeColor_4( this, Invocation.getter(#mainWarning), @@ -297,7 +419,10 @@ class MockZetaColors extends _i1.Mock implements _i4.ZetaColors { @override _i5.Color get mainNegative => (super.noSuchMethod( Invocation.getter(#mainNegative), - returnValue: _FakeColor_4(this, Invocation.getter(#mainNegative)), + returnValue: _FakeColor_4( + this, + Invocation.getter(#mainNegative), + ), returnValueForMissingStub: _FakeColor_4( this, Invocation.getter(#mainNegative), @@ -307,7 +432,10 @@ class MockZetaColors extends _i1.Mock implements _i4.ZetaColors { @override _i5.Color get mainInfo => (super.noSuchMethod( Invocation.getter(#mainInfo), - returnValue: _FakeColor_4(this, Invocation.getter(#mainInfo)), + returnValue: _FakeColor_4( + this, + Invocation.getter(#mainInfo), + ), returnValueForMissingStub: _FakeColor_4( this, Invocation.getter(#mainInfo), @@ -317,7 +445,10 @@ class MockZetaColors extends _i1.Mock implements _i4.ZetaColors { @override _i5.Color get mainDisabled => (super.noSuchMethod( Invocation.getter(#mainDisabled), - returnValue: _FakeColor_4(this, Invocation.getter(#mainDisabled)), + returnValue: _FakeColor_4( + this, + Invocation.getter(#mainDisabled), + ), returnValueForMissingStub: _FakeColor_4( this, Invocation.getter(#mainDisabled), @@ -327,7 +458,10 @@ class MockZetaColors extends _i1.Mock implements _i4.ZetaColors { @override _i5.Color get mainLight => (super.noSuchMethod( Invocation.getter(#mainLight), - returnValue: _FakeColor_4(this, Invocation.getter(#mainLight)), + returnValue: _FakeColor_4( + this, + Invocation.getter(#mainLight), + ), returnValueForMissingStub: _FakeColor_4( this, Invocation.getter(#mainLight), @@ -337,7 +471,10 @@ class MockZetaColors extends _i1.Mock implements _i4.ZetaColors { @override _i5.Color get mainInverse => (super.noSuchMethod( Invocation.getter(#mainInverse), - returnValue: _FakeColor_4(this, Invocation.getter(#mainInverse)), + returnValue: _FakeColor_4( + this, + Invocation.getter(#mainInverse), + ), returnValueForMissingStub: _FakeColor_4( this, Invocation.getter(#mainInverse), @@ -347,7 +484,10 @@ class MockZetaColors extends _i1.Mock implements _i4.ZetaColors { @override _i5.Color get textDefault => (super.noSuchMethod( Invocation.getter(#textDefault), - returnValue: _FakeColor_4(this, Invocation.getter(#textDefault)), + returnValue: _FakeColor_4( + this, + Invocation.getter(#textDefault), + ), returnValueForMissingStub: _FakeColor_4( this, Invocation.getter(#textDefault), @@ -357,7 +497,10 @@ class MockZetaColors extends _i1.Mock implements _i4.ZetaColors { @override _i5.Color get iconSubtle => (super.noSuchMethod( Invocation.getter(#iconSubtle), - returnValue: _FakeColor_4(this, Invocation.getter(#iconSubtle)), + returnValue: _FakeColor_4( + this, + Invocation.getter(#iconSubtle), + ), returnValueForMissingStub: _FakeColor_4( this, Invocation.getter(#iconSubtle), @@ -367,7 +510,10 @@ class MockZetaColors extends _i1.Mock implements _i4.ZetaColors { @override _i5.Color get iconInverse => (super.noSuchMethod( Invocation.getter(#iconInverse), - returnValue: _FakeColor_4(this, Invocation.getter(#iconInverse)), + returnValue: _FakeColor_4( + this, + Invocation.getter(#iconInverse), + ), returnValueForMissingStub: _FakeColor_4( this, Invocation.getter(#iconInverse), @@ -377,7 +523,10 @@ class MockZetaColors extends _i1.Mock implements _i4.ZetaColors { @override _i5.Color get iconDisabled => (super.noSuchMethod( Invocation.getter(#iconDisabled), - returnValue: _FakeColor_4(this, Invocation.getter(#iconDisabled)), + returnValue: _FakeColor_4( + this, + Invocation.getter(#iconDisabled), + ), returnValueForMissingStub: _FakeColor_4( this, Invocation.getter(#iconDisabled), @@ -439,7 +588,10 @@ class MockZetaColors extends _i1.Mock implements _i4.ZetaColors { @override _i5.Color get iconFlavorInfo => (super.noSuchMethod( Invocation.getter(#iconFlavorInfo), - returnValue: _FakeColor_4(this, Invocation.getter(#iconFlavorInfo)), + returnValue: _FakeColor_4( + this, + Invocation.getter(#iconFlavorInfo), + ), returnValueForMissingStub: _FakeColor_4( this, Invocation.getter(#iconFlavorInfo), @@ -449,7 +601,10 @@ class MockZetaColors extends _i1.Mock implements _i4.ZetaColors { @override _i5.Color get borderDefault => (super.noSuchMethod( Invocation.getter(#borderDefault), - returnValue: _FakeColor_4(this, Invocation.getter(#borderDefault)), + returnValue: _FakeColor_4( + this, + Invocation.getter(#borderDefault), + ), returnValueForMissingStub: _FakeColor_4( this, Invocation.getter(#borderDefault), @@ -459,7 +614,10 @@ class MockZetaColors extends _i1.Mock implements _i4.ZetaColors { @override _i5.Color get borderSelected => (super.noSuchMethod( Invocation.getter(#borderSelected), - returnValue: _FakeColor_4(this, Invocation.getter(#borderSelected)), + returnValue: _FakeColor_4( + this, + Invocation.getter(#borderSelected), + ), returnValueForMissingStub: _FakeColor_4( this, Invocation.getter(#borderSelected), @@ -469,7 +627,10 @@ class MockZetaColors extends _i1.Mock implements _i4.ZetaColors { @override _i5.Color get borderHover => (super.noSuchMethod( Invocation.getter(#borderHover), - returnValue: _FakeColor_4(this, Invocation.getter(#borderHover)), + returnValue: _FakeColor_4( + this, + Invocation.getter(#borderHover), + ), returnValueForMissingStub: _FakeColor_4( this, Invocation.getter(#borderHover), @@ -479,7 +640,10 @@ class MockZetaColors extends _i1.Mock implements _i4.ZetaColors { @override _i5.Color get borderSubtle => (super.noSuchMethod( Invocation.getter(#borderSubtle), - returnValue: _FakeColor_4(this, Invocation.getter(#borderSubtle)), + returnValue: _FakeColor_4( + this, + Invocation.getter(#borderSubtle), + ), returnValueForMissingStub: _FakeColor_4( this, Invocation.getter(#borderSubtle), @@ -489,7 +653,10 @@ class MockZetaColors extends _i1.Mock implements _i4.ZetaColors { @override _i5.Color get borderDisabled => (super.noSuchMethod( Invocation.getter(#borderDisabled), - returnValue: _FakeColor_4(this, Invocation.getter(#borderDisabled)), + returnValue: _FakeColor_4( + this, + Invocation.getter(#borderDisabled), + ), returnValueForMissingStub: _FakeColor_4( this, Invocation.getter(#borderDisabled), @@ -499,7 +666,10 @@ class MockZetaColors extends _i1.Mock implements _i4.ZetaColors { @override _i5.Color get borderPure => (super.noSuchMethod( Invocation.getter(#borderPure), - returnValue: _FakeColor_4(this, Invocation.getter(#borderPure)), + returnValue: _FakeColor_4( + this, + Invocation.getter(#borderPure), + ), returnValueForMissingStub: _FakeColor_4( this, Invocation.getter(#borderPure), @@ -522,7 +692,10 @@ class MockZetaColors extends _i1.Mock implements _i4.ZetaColors { @override _i5.Color get borderPrimary => (super.noSuchMethod( Invocation.getter(#borderPrimary), - returnValue: _FakeColor_4(this, Invocation.getter(#borderPrimary)), + returnValue: _FakeColor_4( + this, + Invocation.getter(#borderPrimary), + ), returnValueForMissingStub: _FakeColor_4( this, Invocation.getter(#borderPrimary), @@ -545,7 +718,10 @@ class MockZetaColors extends _i1.Mock implements _i4.ZetaColors { @override _i5.Color get borderPositive => (super.noSuchMethod( Invocation.getter(#borderPositive), - returnValue: _FakeColor_4(this, Invocation.getter(#borderPositive)), + returnValue: _FakeColor_4( + this, + Invocation.getter(#borderPositive), + ), returnValueForMissingStub: _FakeColor_4( this, Invocation.getter(#borderPositive), @@ -555,7 +731,10 @@ class MockZetaColors extends _i1.Mock implements _i4.ZetaColors { @override _i5.Color get borderWarning => (super.noSuchMethod( Invocation.getter(#borderWarning), - returnValue: _FakeColor_4(this, Invocation.getter(#borderWarning)), + returnValue: _FakeColor_4( + this, + Invocation.getter(#borderWarning), + ), returnValueForMissingStub: _FakeColor_4( this, Invocation.getter(#borderWarning), @@ -565,7 +744,10 @@ class MockZetaColors extends _i1.Mock implements _i4.ZetaColors { @override _i5.Color get borderNegative => (super.noSuchMethod( Invocation.getter(#borderNegative), - returnValue: _FakeColor_4(this, Invocation.getter(#borderNegative)), + returnValue: _FakeColor_4( + this, + Invocation.getter(#borderNegative), + ), returnValueForMissingStub: _FakeColor_4( this, Invocation.getter(#borderNegative), @@ -575,7 +757,10 @@ class MockZetaColors extends _i1.Mock implements _i4.ZetaColors { @override _i5.Color get borderInfo => (super.noSuchMethod( Invocation.getter(#borderInfo), - returnValue: _FakeColor_4(this, Invocation.getter(#borderInfo)), + returnValue: _FakeColor_4( + this, + Invocation.getter(#borderInfo), + ), returnValueForMissingStub: _FakeColor_4( this, Invocation.getter(#borderInfo), @@ -585,7 +770,10 @@ class MockZetaColors extends _i1.Mock implements _i4.ZetaColors { @override _i5.Color get surfaceDefault => (super.noSuchMethod( Invocation.getter(#surfaceDefault), - returnValue: _FakeColor_4(this, Invocation.getter(#surfaceDefault)), + returnValue: _FakeColor_4( + this, + Invocation.getter(#surfaceDefault), + ), returnValueForMissingStub: _FakeColor_4( this, Invocation.getter(#surfaceDefault), @@ -608,7 +796,10 @@ class MockZetaColors extends _i1.Mock implements _i4.ZetaColors { @override _i5.Color get surfaceHover => (super.noSuchMethod( Invocation.getter(#surfaceHover), - returnValue: _FakeColor_4(this, Invocation.getter(#surfaceHover)), + returnValue: _FakeColor_4( + this, + Invocation.getter(#surfaceHover), + ), returnValueForMissingStub: _FakeColor_4( this, Invocation.getter(#surfaceHover), @@ -657,7 +848,10 @@ class MockZetaColors extends _i1.Mock implements _i4.ZetaColors { @override _i5.Color get surfaceCool => (super.noSuchMethod( Invocation.getter(#surfaceCool), - returnValue: _FakeColor_4(this, Invocation.getter(#surfaceCool)), + returnValue: _FakeColor_4( + this, + Invocation.getter(#surfaceCool), + ), returnValueForMissingStub: _FakeColor_4( this, Invocation.getter(#surfaceCool), @@ -667,7 +861,10 @@ class MockZetaColors extends _i1.Mock implements _i4.ZetaColors { @override _i5.Color get surfaceWarm => (super.noSuchMethod( Invocation.getter(#surfaceWarm), - returnValue: _FakeColor_4(this, Invocation.getter(#surfaceWarm)), + returnValue: _FakeColor_4( + this, + Invocation.getter(#surfaceWarm), + ), returnValueForMissingStub: _FakeColor_4( this, Invocation.getter(#surfaceWarm), @@ -677,7 +874,10 @@ class MockZetaColors extends _i1.Mock implements _i4.ZetaColors { @override _i5.Color get surfacePrimary => (super.noSuchMethod( Invocation.getter(#surfacePrimary), - returnValue: _FakeColor_4(this, Invocation.getter(#surfacePrimary)), + returnValue: _FakeColor_4( + this, + Invocation.getter(#surfacePrimary), + ), returnValueForMissingStub: _FakeColor_4( this, Invocation.getter(#surfacePrimary), @@ -843,7 +1043,10 @@ class MockZetaColors extends _i1.Mock implements _i4.ZetaColors { @override _i5.Color get surfaceWarning => (super.noSuchMethod( Invocation.getter(#surfaceWarning), - returnValue: _FakeColor_4(this, Invocation.getter(#surfaceWarning)), + returnValue: _FakeColor_4( + this, + Invocation.getter(#surfaceWarning), + ), returnValueForMissingStub: _FakeColor_4( this, Invocation.getter(#surfaceWarning), @@ -892,7 +1095,10 @@ class MockZetaColors extends _i1.Mock implements _i4.ZetaColors { @override _i5.Color get surfaceInfo => (super.noSuchMethod( Invocation.getter(#surfaceInfo), - returnValue: _FakeColor_4(this, Invocation.getter(#surfaceInfo)), + returnValue: _FakeColor_4( + this, + Invocation.getter(#surfaceInfo), + ), returnValueForMissingStub: _FakeColor_4( this, Invocation.getter(#surfaceInfo), @@ -1149,7 +1355,10 @@ class MockZetaColors extends _i1.Mock implements _i4.ZetaColors { @override _i5.Color get stateInfoHover => (super.noSuchMethod( Invocation.getter(#stateInfoHover), - returnValue: _FakeColor_4(this, Invocation.getter(#stateInfoHover)), + returnValue: _FakeColor_4( + this, + Invocation.getter(#stateInfoHover), + ), returnValueForMissingStub: _FakeColor_4( this, Invocation.getter(#stateInfoHover), @@ -1172,7 +1381,10 @@ class MockZetaColors extends _i1.Mock implements _i4.ZetaColors { @override _i5.Color get stateInfoFocus => (super.noSuchMethod( Invocation.getter(#stateInfoFocus), - returnValue: _FakeColor_4(this, Invocation.getter(#stateInfoFocus)), + returnValue: _FakeColor_4( + this, + Invocation.getter(#stateInfoFocus), + ), returnValueForMissingStub: _FakeColor_4( this, Invocation.getter(#stateInfoFocus), @@ -1338,7 +1550,10 @@ class MockZeta extends _i1.Mock implements _i4.Zeta { @override _i4.ZetaColors get colors => (super.noSuchMethod( Invocation.getter(#colors), - returnValue: _FakeZetaColors_6(this, Invocation.getter(#colors)), + returnValue: _FakeZetaColors_6( + this, + Invocation.getter(#colors), + ), returnValueForMissingStub: _FakeZetaColors_6( this, Invocation.getter(#colors), @@ -1355,7 +1570,10 @@ class MockZeta extends _i1.Mock implements _i4.Zeta { @override _i4.ZetaRadius get radius => (super.noSuchMethod( Invocation.getter(#radius), - returnValue: _FakeZetaRadius_7(this, Invocation.getter(#radius)), + returnValue: _FakeZetaRadius_7( + this, + Invocation.getter(#radius), + ), returnValueForMissingStub: _FakeZetaRadius_7( this, Invocation.getter(#radius), @@ -1365,7 +1583,10 @@ class MockZeta extends _i1.Mock implements _i4.Zeta { @override _i4.ZetaSpacing get spacing => (super.noSuchMethod( Invocation.getter(#spacing), - returnValue: _FakeZetaSpacing_8(this, Invocation.getter(#spacing)), + returnValue: _FakeZetaSpacing_8( + this, + Invocation.getter(#spacing), + ), returnValueForMissingStub: _FakeZetaSpacing_8( this, Invocation.getter(#spacing), @@ -1375,7 +1596,10 @@ class MockZeta extends _i1.Mock implements _i4.Zeta { @override _i2.Widget get child => (super.noSuchMethod( Invocation.getter(#child), - returnValue: _FakeWidget_0(this, Invocation.getter(#child)), + returnValue: _FakeWidget_0( + this, + Invocation.getter(#child), + ), returnValueForMissingStub: _FakeWidget_0( this, Invocation.getter(#child), @@ -1384,40 +1608,64 @@ class MockZeta extends _i1.Mock implements _i4.Zeta { @override bool updateShouldNotify(_i2.InheritedWidget? oldWidget) => (super.noSuchMethod( - Invocation.method(#updateShouldNotify, [oldWidget]), + Invocation.method( + #updateShouldNotify, + [oldWidget], + ), returnValue: false, returnValueForMissingStub: false, ) as bool); @override void debugFillProperties(_i3.DiagnosticPropertiesBuilder? properties) => super.noSuchMethod( - Invocation.method(#debugFillProperties, [properties]), + Invocation.method( + #debugFillProperties, + [properties], + ), returnValueForMissingStub: null, ); @override _i2.InheritedElement createElement() => (super.noSuchMethod( - Invocation.method(#createElement, []), + Invocation.method( + #createElement, + [], + ), returnValue: _FakeInheritedElement_9( this, - Invocation.method(#createElement, []), + Invocation.method( + #createElement, + [], + ), ), returnValueForMissingStub: _FakeInheritedElement_9( this, - Invocation.method(#createElement, []), + Invocation.method( + #createElement, + [], + ), ), ) as _i2.InheritedElement); @override String toStringShort() => (super.noSuchMethod( - Invocation.method(#toStringShort, []), + Invocation.method( + #toStringShort, + [], + ), returnValue: _i7.dummyValue( this, - Invocation.method(#toStringShort, []), + Invocation.method( + #toStringShort, + [], + ), ), returnValueForMissingStub: _i7.dummyValue( this, - Invocation.method(#toStringShort, []), + Invocation.method( + #toStringShort, + [], + ), ), ) as String); @@ -1427,23 +1675,35 @@ class MockZeta extends _i1.Mock implements _i4.Zeta { _i3.DiagnosticLevel? minLevel = _i3.DiagnosticLevel.debug, }) => (super.noSuchMethod( - Invocation.method(#toStringShallow, [], { - #joiner: joiner, - #minLevel: minLevel, - }), - returnValue: _i7.dummyValue( - this, - Invocation.method(#toStringShallow, [], { + Invocation.method( + #toStringShallow, + [], + { #joiner: joiner, #minLevel: minLevel, - }), + }, + ), + returnValue: _i7.dummyValue( + this, + Invocation.method( + #toStringShallow, + [], + { + #joiner: joiner, + #minLevel: minLevel, + }, + ), ), returnValueForMissingStub: _i7.dummyValue( this, - Invocation.method(#toStringShallow, [], { - #joiner: joiner, - #minLevel: minLevel, - }), + Invocation.method( + #toStringShallow, + [], + { + #joiner: joiner, + #minLevel: minLevel, + }, + ), ), ) as String); @@ -1455,29 +1715,41 @@ class MockZeta extends _i1.Mock implements _i4.Zeta { int? wrapWidth = 65, }) => (super.noSuchMethod( - Invocation.method(#toStringDeep, [], { - #prefixLineOne: prefixLineOne, - #prefixOtherLines: prefixOtherLines, - #minLevel: minLevel, - #wrapWidth: wrapWidth, - }), - returnValue: _i7.dummyValue( - this, - Invocation.method(#toStringDeep, [], { + Invocation.method( + #toStringDeep, + [], + { #prefixLineOne: prefixLineOne, #prefixOtherLines: prefixOtherLines, #minLevel: minLevel, #wrapWidth: wrapWidth, - }), + }, + ), + returnValue: _i7.dummyValue( + this, + Invocation.method( + #toStringDeep, + [], + { + #prefixLineOne: prefixLineOne, + #prefixOtherLines: prefixOtherLines, + #minLevel: minLevel, + #wrapWidth: wrapWidth, + }, + ), ), returnValueForMissingStub: _i7.dummyValue( this, - Invocation.method(#toStringDeep, [], { - #prefixLineOne: prefixLineOne, - #prefixOtherLines: prefixOtherLines, - #minLevel: minLevel, - #wrapWidth: wrapWidth, - }), + Invocation.method( + #toStringDeep, + [], + { + #prefixLineOne: prefixLineOne, + #prefixOtherLines: prefixOtherLines, + #minLevel: minLevel, + #wrapWidth: wrapWidth, + }, + ), ), ) as String); @@ -1487,29 +1759,44 @@ class MockZeta extends _i1.Mock implements _i4.Zeta { _i3.DiagnosticsTreeStyle? style, }) => (super.noSuchMethod( - Invocation.method(#toDiagnosticsNode, [], { - #name: name, - #style: style, - }), - returnValue: _FakeDiagnosticsNode_2( - this, - Invocation.method(#toDiagnosticsNode, [], { + Invocation.method( + #toDiagnosticsNode, + [], + { #name: name, #style: style, - }), + }, + ), + returnValue: _FakeDiagnosticsNode_2( + this, + Invocation.method( + #toDiagnosticsNode, + [], + { + #name: name, + #style: style, + }, + ), ), returnValueForMissingStub: _FakeDiagnosticsNode_2( this, - Invocation.method(#toDiagnosticsNode, [], { - #name: name, - #style: style, - }), + Invocation.method( + #toDiagnosticsNode, + [], + { + #name: name, + #style: style, + }, + ), ), ) as _i3.DiagnosticsNode); @override List<_i3.DiagnosticsNode> debugDescribeChildren() => (super.noSuchMethod( - Invocation.method(#debugDescribeChildren, []), + Invocation.method( + #debugDescribeChildren, + [], + ), returnValue: <_i3.DiagnosticsNode>[], returnValueForMissingStub: <_i3.DiagnosticsNode>[], ) as List<_i3.DiagnosticsNode>); diff --git a/packages/zeta_icons/.metadata b/packages/zeta_icons/.metadata new file mode 100644 index 00000000..f5be3bc8 --- /dev/null +++ b/packages/zeta_icons/.metadata @@ -0,0 +1,10 @@ +# 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: "8495dee1fd4aacbe9de707e7581203232f591b2f" + channel: "stable" + +project_type: package diff --git a/packages/zeta_icons/CHANGELOG.md b/packages/zeta_icons/CHANGELOG.md new file mode 100644 index 00000000..77614f70 --- /dev/null +++ b/packages/zeta_icons/CHANGELOG.md @@ -0,0 +1,3 @@ +# Changelog + +## [1.0.0-alpha.1] - Initial alpha release diff --git a/packages/zeta_icons/LICENSE b/packages/zeta_icons/LICENSE new file mode 100644 index 00000000..2ecb76a1 --- /dev/null +++ b/packages/zeta_icons/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Zebra Technologies Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/zeta_icons/README.md b/packages/zeta_icons/README.md new file mode 100644 index 00000000..7a2de1b8 --- /dev/null +++ b/packages/zeta_icons/README.md @@ -0,0 +1,40 @@ +# Zeta Icons + +Zeta Icons are a selection of icons from Zebra Technologies. + +These icons are a part of the Zeta Design System, and can be used either on their own or with [Zeta Flutter](https://pub.dev/packages/zeta_flutter) + +### Usage + +Zeta icons can be used in the same way as any other icon in Flutter: + +```dart +Icon(ZetaIcons.alarm) +``` + +Each icon has a sharp and round variant; by default, round icons are used. To specify which icon to use, append `_round` or `_sharp` to your icon name: + + + + + + + + + + +
+ +Icon(ZetaIcons.alarm_round) + + + +
+ +Icon(ZetaIcons.alarm_sharp) + + + +
+ +### To see all icons, visit [Zeta Icons](https://design.zebra.com/icons) diff --git a/packages/zeta_icons/analysis_options.yaml b/packages/zeta_icons/analysis_options.yaml new file mode 100644 index 00000000..4d33a482 --- /dev/null +++ b/packages/zeta_icons/analysis_options.yaml @@ -0,0 +1,2 @@ +# include: package:zds_analysis/analysis_options_lib_all_files.yaml TODO: Revert this line +include: package:zds_analysis/analysis_options_lib.yaml diff --git a/lib/src/generated/icons/zeta-icons-round.ttf b/packages/zeta_icons/assets/zeta-icons-round.ttf similarity index 100% rename from lib/src/generated/icons/zeta-icons-round.ttf rename to packages/zeta_icons/assets/zeta-icons-round.ttf diff --git a/lib/src/generated/icons/zeta-icons-sharp.ttf b/packages/zeta_icons/assets/zeta-icons-sharp.ttf similarity index 100% rename from lib/src/generated/icons/zeta-icons-sharp.ttf rename to packages/zeta_icons/assets/zeta-icons-sharp.ttf diff --git a/packages/zeta_icons/example/example.md b/packages/zeta_icons/example/example.md new file mode 100644 index 00000000..a73b4f0b --- /dev/null +++ b/packages/zeta_icons/example/example.md @@ -0,0 +1,34 @@ +# Zeta Icons + +Zeta icons can be used in the same way as any other icon in Flutter: + +```dart +Icon(ZetaIcons.alarm) +``` + +Each icon has a sharp and round variant; by default, round icons are used. To specify which icon to use, append `_round` or `_sharp` to your icon name: + + + + + + + + + + +
+ +Icon(ZetaIcons.alarm_round) + + + +
+ +Icon(ZetaIcons.alarm_sharp) + + + +
+ +### To see all icons, visit [Zeta Icons](https://design.zebra.com/icons) diff --git a/lib/src/generated/icons/icons.g.dart b/packages/zeta_icons/lib/src/icons.g.dart similarity index 99% rename from lib/src/generated/icons/icons.g.dart rename to packages/zeta_icons/lib/src/icons.g.dart index be6413d9..cb75cf65 100644 --- a/lib/src/generated/icons/icons.g.dart +++ b/packages/zeta_icons/lib/src/icons.g.dart @@ -10,7 +10,6 @@ const zetaIconsVersion = '0.9.4'; // x-release-please-end /// Zeta Icons. Full list of icons can be found at [Zeta Icons](https://design.zebra.com/icons/). -/// {@category Assets} abstract class ZetaIcons { /// Default icon font name static const String family = 'zeta-icons'; @@ -22,7 +21,7 @@ abstract class ZetaIcons { static const String familySharp = 'zeta-icons-sharp'; /// Package name for zeta flutter - static const String package = 'zeta_flutter'; + static const String package = 'zeta_icons'; // Icons ///
Activity icon
diff --git a/packages/zeta_icons/lib/zeta_icons.dart b/packages/zeta_icons/lib/zeta_icons.dart new file mode 100644 index 00000000..5596f198 --- /dev/null +++ b/packages/zeta_icons/lib/zeta_icons.dart @@ -0,0 +1,9 @@ +/// Zeta Icons library. +/// +/// For a list of all icons, see [Zeta Icons](https://design.zebra.com/icons). +/// +/// See also: [Figma](https://www.figma.com/design/VQ7Aa3rDYB7mgpToI3bZ4D/%F0%9F%A6%93-ZDS---Assets?node-id=240-6). +library; + +/// All the icons +export 'src/icons.g.dart'; diff --git a/packages/zeta_icons/pubspec.yaml b/packages/zeta_icons/pubspec.yaml new file mode 100644 index 00000000..bb3762b4 --- /dev/null +++ b/packages/zeta_icons/pubspec.yaml @@ -0,0 +1,34 @@ +name: zeta_icons +description: "An icon library for the Zeta Design System by Zebra Technologies." +version: 1.0.0-alpha.1 +homepage: https://design.zebra.com +repository: https://github.com/ZebraDevs/zeta_flutter/tree/develop/packages/zeta_icons # TODO: Luke Update develop to main +issue_tracker: https://github.com/zebradevs/zeta_flutter/issues +documentation: https://design.zebra.com/flutter/dartdoc/index.html + +environment: + sdk: ^3.6.0 + flutter: ">=3.27.0" + +resolution: workspace + +dependencies: + flutter: + sdk: flutter + +dev_dependencies: + flutter_test: + sdk: flutter + zds_analysis: ^1.1.1 + +flutter: + fonts: + - family: zeta-icons + fonts: + - asset: assets/zeta-icons-round.ttf + - family: zeta-icons-round + fonts: + - asset: assets/zeta-icons-round.ttf + - family: zeta-icons-sharp + fonts: + - asset: assets/zeta-icons-sharp.ttf diff --git a/packages/zeta_icons/test/zeta_icons_test.dart b/packages/zeta_icons/test/zeta_icons_test.dart new file mode 100644 index 00000000..20e19ec6 --- /dev/null +++ b/packages/zeta_icons/test/zeta_icons_test.dart @@ -0,0 +1,17 @@ +import 'package:flutter_test/flutter_test.dart'; + +import 'package:zeta_icons/zeta_icons.dart'; + +void main() { + test('Icons should have unique code points', () { + final codePoints = icons.values.map((icon) => icon.codePoint).toSet(); + expect(codePoints.length, icons.length); + }); + + test('Icons should have correct font family', () { + expect(ZetaIcons.alarm_round.fontFamily, ZetaIcons.familyRound); + expect(ZetaIcons.alarm_sharp.fontFamily, ZetaIcons.familySharp); + }); + + // TODO(test): Find a way to test icon data, perhaps against generated PNGs? +} diff --git a/pubspec.yaml b/pubspec.yaml index fe8ab349..d2a1d70a 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,66 +1,15 @@ -name: zeta_flutter -version: 1.0.0-alpha -description: Zeta is the new, formal, standardized Zebra Design System based off - the successes of ZDS (Zebra Design System). This package is in pre-release, - and so many aspects are incomplete. -homepage: https://github.com/ZebraDevs/zeta_flutter -repository: https://github.com/ZebraDevs/zeta_flutter -issue_tracker: https://github.com/zebradevs/zeta_flutter/issues -documentation: https://design.zebra.com/flutter/dartdoc/index.html - -platforms: - android: - ios: - macos: - web: - windows: - linux: +name: zeta_flutter_workspace environment: - sdk: ">=3.2.0 <4.0.0" - flutter: ">=3.16.0" - -dependencies: - collection: ^1.18.0 - equatable: ^2.0.5 - flutter: - sdk: flutter - flutter_slidable: ^3.1.0 - intl: ^0.20.1 - mask_text_input_formatter: ^2.9.0 - shared_preferences: ^2.3.2 - web: ^1.0.0 + sdk: ^3.6.0 dev_dependencies: - analyzer: ^6.7.0 - build_runner: ^2.4.10 - flutter_test: - sdk: flutter - image: ^4.2.0 - mockito: ^5.4.4 - path: ^1.9.0 - zds_analysis: ^1.1.1 - -flutter: - fonts: - - family: IBMPlexSans - fonts: - - asset: lib/assets/fonts/IBMPlexSans-Light.otf - weight: 300 - - asset: lib/assets/fonts/IBMPlexSans-Regular.otf - weight: 400 - - asset: lib/assets/fonts/IBMPlexSans-Medium.otf - weight: 500 - - family: zeta-icons - fonts: - - asset: lib/src/generated/icons/zeta-icons-round.ttf - - family: zeta-icons-round - fonts: - - asset: lib/src/generated/icons/zeta-icons-round.ttf - - family: zeta-icons-sharp - fonts: - - asset: lib/src/generated/icons/zeta-icons-sharp.ttf - assets: - - lib/assets/flags/ - - lib/assets/logos/ - uses-material-design: true + melos: ^6.0.0 + +workspace: + - packages/zeta_flutter + - packages/zeta_flutter_theme + - packages/zeta_flutter_utils + - packages/zeta_icons + - example/ + - widgetbook/ diff --git a/release-please-config.json b/release-please-config.json index 257bed0e..4885e685 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -1,14 +1,32 @@ { "packages": { + "packages/zeta_flutter": { + "release-type": "dart", + "package-name": "zeta_flutter" + }, + "packages/zeta_flutter_theme": { + "release-type": "dart", + "package-name": "zeta_flutter_theme" + }, + "packages/zeta_flutter_utils": { + "release-type": "dart", + "package-name": "zeta_flutter_utils" + }, + "packages/zeta_icons": { + "release-type": "dart", + "package-name": "zeta_icons" + }, ".": { - "release-type": "dart" + "release-type": "dart", + "package-name": "workspace" } }, "include-component-in-tag": false, "extra-files": [ "example/lib/home.dart", - "example/widgetbook/pages/introduction.dart" + "widgetbook/lib/introduction.dart" ], + "separate-pull-requests": true, "changelog-sections": [ { "type": "feat", diff --git a/scripts/cov_move.sh b/scripts/cov_move.sh new file mode 100644 index 00000000..f5686baa --- /dev/null +++ b/scripts/cov_move.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +current_dir_name=$(basename "$PWD") +echo "Running tests for $current_dir_name" + +flutter test --coverage --reporter json --coverage-path ../../.coverage/$current_dir_name/lcov.info diff --git a/coverage.sh b/scripts/coverage.sh similarity index 71% rename from coverage.sh rename to scripts/coverage.sh index a20e51f0..3a6214be 100644 --- a/coverage.sh +++ b/scripts/coverage.sh @@ -8,16 +8,16 @@ then fi # Run the tests with coverage -flutter test --coverage +flutter test --coverage --coverage-path .coverage/ # Generate the LCOV report -lcov --capture --directory coverage --output-file coverage/lcov.info +lcov --capture --directory .coverage --output-file coverage/lcov.info # Remove unnecessary files from the report -lcov --remove coverage/lcov.info 'lib/*/*.g.dart' 'lib/*/*.freezed.dart' -o coverage/lcov.info +lcov --remove .coverage/lcov.info 'lib/*/*.g.dart' 'lib/*/*.freezed.dart' -o coverage/lcov.info # Generate the HTML report -genhtml coverage/lcov.info --output-directory coverage/html +genhtml .coverage/lcov.info --output-directory .coverage/html # Open the coverage report in the default browser if [ "$(uname)" == "Darwin" ]; then diff --git a/scripts/lcov_combine.sh b/scripts/lcov_combine.sh new file mode 100644 index 00000000..74759649 --- /dev/null +++ b/scripts/lcov_combine.sh @@ -0,0 +1,48 @@ +#!/bin/bash + +echo 'Removing old coverage data' +rm .coverage/lcov.info || true + +if ! command -v lcov &> /dev/null +then + echo "lcov could not be found, please install it first." + exit +fi + + +array=() +while IFS= read -r -d '' dir; do + array+=("$(basename "$dir")") +done < tmpfile + +echo "Combining coverage data for the following packages: ${array[@]}" + +find .coverage -mindepth 1 -maxdepth 1 -type d -name 'z*' -print0 > tmpfile +com="lcov" +for dir in "${array[@]}"; do + if [ -f ".coverage/$dir/lcov.info" ]; then + echo "Fixing file $dir" + cp ".coverage/$dir/lcov.info" ".coverage/$dir/lcov_combined.info" + if [[ "$OSTYPE" == "darwin"* ]]; then + sed -i '' "s|SF:|SF:packages/$dir/|" ".coverage/$dir/lcov_combined.info" + else + sed -i "s|SF:|SF:packages/$dir/|" ".coverage/$dir/lcov_combined.info" + fi + com="$com -a .coverage/$dir/lcov_combined.info" + fi +done + +echo 'Done fixing file paths' + +echo "Listing all files in .coverage directory:" +find .coverage -type f + + +echo 'Combining coverage data' +exec $com -o .coverage/lcov.info --ignore-errors empty || true + +echo "Combined coverage data is stored in .coverage/lcov.info" +echo cat .coverage/lcov.info +echo "Removing temporary files" + +rm tmpfile \ No newline at end of file diff --git a/test/src/components/tooltip/tooltip_test.mocks.dart b/test/src/components/tooltip/tooltip_test.mocks.dart deleted file mode 100644 index d1b9a711..00000000 --- a/test/src/components/tooltip/tooltip_test.mocks.dart +++ /dev/null @@ -1,305 +0,0 @@ -// Mocks generated by Mockito 5.4.5 from annotations -// in zeta_flutter/test/src/components/tooltip/tooltip_test.dart. -// Do not manually edit this file. - -// ignore_for_file: no_leading_underscores_for_library_prefixes -import 'dart:ui' as _i5; - -import 'package:flutter/foundation.dart' as _i4; -import 'package:flutter/material.dart' as _i3; -import 'package:mockito/mockito.dart' as _i1; -import 'package:mockito/src/dummies.dart' as _i6; -import 'package:zeta_flutter/zeta_flutter.dart' as _i2; - -// ignore_for_file: type=lint -// ignore_for_file: avoid_redundant_argument_values -// ignore_for_file: avoid_setters_without_getters -// ignore_for_file: comment_references -// ignore_for_file: deprecated_member_use -// ignore_for_file: deprecated_member_use_from_same_package -// ignore_for_file: implementation_imports -// ignore_for_file: invalid_use_of_visible_for_testing_member -// ignore_for_file: must_be_immutable -// ignore_for_file: prefer_const_constructors -// ignore_for_file: unnecessary_parenthesis -// ignore_for_file: camel_case_types -// ignore_for_file: subtype_of_sealed_class - -class _FakeZetaPrimitives_0 extends _i1.SmartFake implements _i2.ZetaPrimitives { - _FakeZetaPrimitives_0(Object parent, Invocation parentInvocation) : super(parent, parentInvocation); -} - -class _FakeZetaSemantics_1 extends _i1.SmartFake implements _i2.ZetaSemantics { - _FakeZetaSemantics_1(Object parent, Invocation parentInvocation) : super(parent, parentInvocation); -} - -class _FakeZetaColors_2 extends _i1.SmartFake implements _i2.ZetaColors { - _FakeZetaColors_2(Object parent, Invocation parentInvocation) : super(parent, parentInvocation); -} - -class _FakeZetaRadius_3 extends _i1.SmartFake implements _i2.ZetaRadius { - _FakeZetaRadius_3(Object parent, Invocation parentInvocation) : super(parent, parentInvocation); -} - -class _FakeZetaSpacing_4 extends _i1.SmartFake implements _i2.ZetaSpacing { - _FakeZetaSpacing_4(Object parent, Invocation parentInvocation) : super(parent, parentInvocation); -} - -class _FakeWidget_5 extends _i1.SmartFake implements _i3.Widget { - _FakeWidget_5(Object parent, Invocation parentInvocation) : super(parent, parentInvocation); - - @override - String toString({_i4.DiagnosticLevel? minLevel = _i4.DiagnosticLevel.info}) => super.toString(); -} - -class _FakeInheritedElement_6 extends _i1.SmartFake implements _i3.InheritedElement { - _FakeInheritedElement_6(Object parent, Invocation parentInvocation) : super(parent, parentInvocation); - - @override - String toString({_i4.DiagnosticLevel? minLevel = _i4.DiagnosticLevel.info}) => super.toString(); -} - -class _FakeDiagnosticsNode_7 extends _i1.SmartFake implements _i4.DiagnosticsNode { - _FakeDiagnosticsNode_7(Object parent, Invocation parentInvocation) : super(parent, parentInvocation); - - @override - String toString({ - _i4.TextTreeConfiguration? parentConfiguration, - _i4.DiagnosticLevel? minLevel = _i4.DiagnosticLevel.info, - }) => - super.toString(); -} - -/// A class which mocks [Zeta]. -/// -/// See the documentation for Mockito's code generation for more information. -class MockZeta extends _i1.Mock implements _i2.Zeta { - @override - bool get rounded => (super.noSuchMethod( - Invocation.getter(#rounded), - returnValue: false, - returnValueForMissingStub: false, - ) as bool); - - @override - _i2.ZetaContrast get contrast => (super.noSuchMethod( - Invocation.getter(#contrast), - returnValue: _i2.ZetaContrast.aa, - returnValueForMissingStub: _i2.ZetaContrast.aa, - ) as _i2.ZetaContrast); - - @override - _i3.ThemeMode get themeMode => (super.noSuchMethod( - Invocation.getter(#themeMode), - returnValue: _i3.ThemeMode.system, - returnValueForMissingStub: _i3.ThemeMode.system, - ) as _i3.ThemeMode); - - @override - _i2.ZetaPrimitives get primitives => (super.noSuchMethod( - Invocation.getter(#primitives), - returnValue: _FakeZetaPrimitives_0( - this, - Invocation.getter(#primitives), - ), - returnValueForMissingStub: _FakeZetaPrimitives_0( - this, - Invocation.getter(#primitives), - ), - ) as _i2.ZetaPrimitives); - - @override - _i2.ZetaSemantics get semantics => (super.noSuchMethod( - Invocation.getter(#semantics), - returnValue: _FakeZetaSemantics_1( - this, - Invocation.getter(#semantics), - ), - returnValueForMissingStub: _FakeZetaSemantics_1( - this, - Invocation.getter(#semantics), - ), - ) as _i2.ZetaSemantics); - - @override - _i2.ZetaColors get colors => (super.noSuchMethod( - Invocation.getter(#colors), - returnValue: _FakeZetaColors_2(this, Invocation.getter(#colors)), - returnValueForMissingStub: _FakeZetaColors_2( - this, - Invocation.getter(#colors), - ), - ) as _i2.ZetaColors); - - @override - _i5.Brightness get brightness => (super.noSuchMethod( - Invocation.getter(#brightness), - returnValue: _i5.Brightness.dark, - returnValueForMissingStub: _i5.Brightness.dark, - ) as _i5.Brightness); - - @override - _i2.ZetaRadius get radius => (super.noSuchMethod( - Invocation.getter(#radius), - returnValue: _FakeZetaRadius_3(this, Invocation.getter(#radius)), - returnValueForMissingStub: _FakeZetaRadius_3( - this, - Invocation.getter(#radius), - ), - ) as _i2.ZetaRadius); - - @override - _i2.ZetaSpacing get spacing => (super.noSuchMethod( - Invocation.getter(#spacing), - returnValue: _FakeZetaSpacing_4(this, Invocation.getter(#spacing)), - returnValueForMissingStub: _FakeZetaSpacing_4( - this, - Invocation.getter(#spacing), - ), - ) as _i2.ZetaSpacing); - - @override - _i3.Widget get child => (super.noSuchMethod( - Invocation.getter(#child), - returnValue: _FakeWidget_5(this, Invocation.getter(#child)), - returnValueForMissingStub: _FakeWidget_5( - this, - Invocation.getter(#child), - ), - ) as _i3.Widget); - - @override - bool updateShouldNotify(_i3.InheritedWidget? oldWidget) => (super.noSuchMethod( - Invocation.method(#updateShouldNotify, [oldWidget]), - returnValue: false, - returnValueForMissingStub: false, - ) as bool); - - @override - void debugFillProperties(_i4.DiagnosticPropertiesBuilder? properties) => super.noSuchMethod( - Invocation.method(#debugFillProperties, [properties]), - returnValueForMissingStub: null, - ); - - @override - _i3.InheritedElement createElement() => (super.noSuchMethod( - Invocation.method(#createElement, []), - returnValue: _FakeInheritedElement_6( - this, - Invocation.method(#createElement, []), - ), - returnValueForMissingStub: _FakeInheritedElement_6( - this, - Invocation.method(#createElement, []), - ), - ) as _i3.InheritedElement); - - @override - String toStringShort() => (super.noSuchMethod( - Invocation.method(#toStringShort, []), - returnValue: _i6.dummyValue( - this, - Invocation.method(#toStringShort, []), - ), - returnValueForMissingStub: _i6.dummyValue( - this, - Invocation.method(#toStringShort, []), - ), - ) as String); - - @override - String toStringShallow({ - String? joiner = ', ', - _i4.DiagnosticLevel? minLevel = _i4.DiagnosticLevel.debug, - }) => - (super.noSuchMethod( - Invocation.method(#toStringShallow, [], { - #joiner: joiner, - #minLevel: minLevel, - }), - returnValue: _i6.dummyValue( - this, - Invocation.method(#toStringShallow, [], { - #joiner: joiner, - #minLevel: minLevel, - }), - ), - returnValueForMissingStub: _i6.dummyValue( - this, - Invocation.method(#toStringShallow, [], { - #joiner: joiner, - #minLevel: minLevel, - }), - ), - ) as String); - - @override - String toStringDeep({ - String? prefixLineOne = '', - String? prefixOtherLines, - _i4.DiagnosticLevel? minLevel = _i4.DiagnosticLevel.debug, - int? wrapWidth = 65, - }) => - (super.noSuchMethod( - Invocation.method(#toStringDeep, [], { - #prefixLineOne: prefixLineOne, - #prefixOtherLines: prefixOtherLines, - #minLevel: minLevel, - #wrapWidth: wrapWidth, - }), - returnValue: _i6.dummyValue( - this, - Invocation.method(#toStringDeep, [], { - #prefixLineOne: prefixLineOne, - #prefixOtherLines: prefixOtherLines, - #minLevel: minLevel, - #wrapWidth: wrapWidth, - }), - ), - returnValueForMissingStub: _i6.dummyValue( - this, - Invocation.method(#toStringDeep, [], { - #prefixLineOne: prefixLineOne, - #prefixOtherLines: prefixOtherLines, - #minLevel: minLevel, - #wrapWidth: wrapWidth, - }), - ), - ) as String); - - @override - _i4.DiagnosticsNode toDiagnosticsNode({ - String? name, - _i4.DiagnosticsTreeStyle? style, - }) => - (super.noSuchMethod( - Invocation.method(#toDiagnosticsNode, [], { - #name: name, - #style: style, - }), - returnValue: _FakeDiagnosticsNode_7( - this, - Invocation.method(#toDiagnosticsNode, [], { - #name: name, - #style: style, - }), - ), - returnValueForMissingStub: _FakeDiagnosticsNode_7( - this, - Invocation.method(#toDiagnosticsNode, [], { - #name: name, - #style: style, - }), - ), - ) as _i4.DiagnosticsNode); - - @override - List<_i4.DiagnosticsNode> debugDescribeChildren() => (super.noSuchMethod( - Invocation.method(#debugDescribeChildren, []), - returnValue: <_i4.DiagnosticsNode>[], - returnValueForMissingStub: <_i4.DiagnosticsNode>[], - ) as List<_i4.DiagnosticsNode>); - - @override - String toString({_i4.DiagnosticLevel? minLevel = _i4.DiagnosticLevel.info}) => super.toString(); -} diff --git a/test/src/utils/rounded_test.mocks.dart b/test/src/utils/rounded_test.mocks.dart deleted file mode 100644 index 2737062e..00000000 --- a/test/src/utils/rounded_test.mocks.dart +++ /dev/null @@ -1,305 +0,0 @@ -// Mocks generated by Mockito 5.4.5 from annotations -// in zeta_flutter/test/src/utils/rounded_test.dart. -// Do not manually edit this file. - -// ignore_for_file: no_leading_underscores_for_library_prefixes -import 'dart:ui' as _i5; - -import 'package:flutter/foundation.dart' as _i4; -import 'package:flutter/material.dart' as _i3; -import 'package:mockito/mockito.dart' as _i1; -import 'package:mockito/src/dummies.dart' as _i6; -import 'package:zeta_flutter/zeta_flutter.dart' as _i2; - -// ignore_for_file: type=lint -// ignore_for_file: avoid_redundant_argument_values -// ignore_for_file: avoid_setters_without_getters -// ignore_for_file: comment_references -// ignore_for_file: deprecated_member_use -// ignore_for_file: deprecated_member_use_from_same_package -// ignore_for_file: implementation_imports -// ignore_for_file: invalid_use_of_visible_for_testing_member -// ignore_for_file: must_be_immutable -// ignore_for_file: prefer_const_constructors -// ignore_for_file: unnecessary_parenthesis -// ignore_for_file: camel_case_types -// ignore_for_file: subtype_of_sealed_class - -class _FakeZetaPrimitives_0 extends _i1.SmartFake implements _i2.ZetaPrimitives { - _FakeZetaPrimitives_0(Object parent, Invocation parentInvocation) : super(parent, parentInvocation); -} - -class _FakeZetaSemantics_1 extends _i1.SmartFake implements _i2.ZetaSemantics { - _FakeZetaSemantics_1(Object parent, Invocation parentInvocation) : super(parent, parentInvocation); -} - -class _FakeZetaColors_2 extends _i1.SmartFake implements _i2.ZetaColors { - _FakeZetaColors_2(Object parent, Invocation parentInvocation) : super(parent, parentInvocation); -} - -class _FakeZetaRadius_3 extends _i1.SmartFake implements _i2.ZetaRadius { - _FakeZetaRadius_3(Object parent, Invocation parentInvocation) : super(parent, parentInvocation); -} - -class _FakeZetaSpacing_4 extends _i1.SmartFake implements _i2.ZetaSpacing { - _FakeZetaSpacing_4(Object parent, Invocation parentInvocation) : super(parent, parentInvocation); -} - -class _FakeWidget_5 extends _i1.SmartFake implements _i3.Widget { - _FakeWidget_5(Object parent, Invocation parentInvocation) : super(parent, parentInvocation); - - @override - String toString({_i4.DiagnosticLevel? minLevel = _i4.DiagnosticLevel.info}) => super.toString(); -} - -class _FakeInheritedElement_6 extends _i1.SmartFake implements _i3.InheritedElement { - _FakeInheritedElement_6(Object parent, Invocation parentInvocation) : super(parent, parentInvocation); - - @override - String toString({_i4.DiagnosticLevel? minLevel = _i4.DiagnosticLevel.info}) => super.toString(); -} - -class _FakeDiagnosticsNode_7 extends _i1.SmartFake implements _i4.DiagnosticsNode { - _FakeDiagnosticsNode_7(Object parent, Invocation parentInvocation) : super(parent, parentInvocation); - - @override - String toString({ - _i4.TextTreeConfiguration? parentConfiguration, - _i4.DiagnosticLevel? minLevel = _i4.DiagnosticLevel.info, - }) => - super.toString(); -} - -/// A class which mocks [Zeta]. -/// -/// See the documentation for Mockito's code generation for more information. -class MockZeta extends _i1.Mock implements _i2.Zeta { - @override - bool get rounded => (super.noSuchMethod( - Invocation.getter(#rounded), - returnValue: false, - returnValueForMissingStub: false, - ) as bool); - - @override - _i2.ZetaContrast get contrast => (super.noSuchMethod( - Invocation.getter(#contrast), - returnValue: _i2.ZetaContrast.aa, - returnValueForMissingStub: _i2.ZetaContrast.aa, - ) as _i2.ZetaContrast); - - @override - _i3.ThemeMode get themeMode => (super.noSuchMethod( - Invocation.getter(#themeMode), - returnValue: _i3.ThemeMode.system, - returnValueForMissingStub: _i3.ThemeMode.system, - ) as _i3.ThemeMode); - - @override - _i2.ZetaPrimitives get primitives => (super.noSuchMethod( - Invocation.getter(#primitives), - returnValue: _FakeZetaPrimitives_0( - this, - Invocation.getter(#primitives), - ), - returnValueForMissingStub: _FakeZetaPrimitives_0( - this, - Invocation.getter(#primitives), - ), - ) as _i2.ZetaPrimitives); - - @override - _i2.ZetaSemantics get semantics => (super.noSuchMethod( - Invocation.getter(#semantics), - returnValue: _FakeZetaSemantics_1( - this, - Invocation.getter(#semantics), - ), - returnValueForMissingStub: _FakeZetaSemantics_1( - this, - Invocation.getter(#semantics), - ), - ) as _i2.ZetaSemantics); - - @override - _i2.ZetaColors get colors => (super.noSuchMethod( - Invocation.getter(#colors), - returnValue: _FakeZetaColors_2(this, Invocation.getter(#colors)), - returnValueForMissingStub: _FakeZetaColors_2( - this, - Invocation.getter(#colors), - ), - ) as _i2.ZetaColors); - - @override - _i5.Brightness get brightness => (super.noSuchMethod( - Invocation.getter(#brightness), - returnValue: _i5.Brightness.dark, - returnValueForMissingStub: _i5.Brightness.dark, - ) as _i5.Brightness); - - @override - _i2.ZetaRadius get radius => (super.noSuchMethod( - Invocation.getter(#radius), - returnValue: _FakeZetaRadius_3(this, Invocation.getter(#radius)), - returnValueForMissingStub: _FakeZetaRadius_3( - this, - Invocation.getter(#radius), - ), - ) as _i2.ZetaRadius); - - @override - _i2.ZetaSpacing get spacing => (super.noSuchMethod( - Invocation.getter(#spacing), - returnValue: _FakeZetaSpacing_4(this, Invocation.getter(#spacing)), - returnValueForMissingStub: _FakeZetaSpacing_4( - this, - Invocation.getter(#spacing), - ), - ) as _i2.ZetaSpacing); - - @override - _i3.Widget get child => (super.noSuchMethod( - Invocation.getter(#child), - returnValue: _FakeWidget_5(this, Invocation.getter(#child)), - returnValueForMissingStub: _FakeWidget_5( - this, - Invocation.getter(#child), - ), - ) as _i3.Widget); - - @override - bool updateShouldNotify(_i3.InheritedWidget? oldWidget) => (super.noSuchMethod( - Invocation.method(#updateShouldNotify, [oldWidget]), - returnValue: false, - returnValueForMissingStub: false, - ) as bool); - - @override - void debugFillProperties(_i4.DiagnosticPropertiesBuilder? properties) => super.noSuchMethod( - Invocation.method(#debugFillProperties, [properties]), - returnValueForMissingStub: null, - ); - - @override - _i3.InheritedElement createElement() => (super.noSuchMethod( - Invocation.method(#createElement, []), - returnValue: _FakeInheritedElement_6( - this, - Invocation.method(#createElement, []), - ), - returnValueForMissingStub: _FakeInheritedElement_6( - this, - Invocation.method(#createElement, []), - ), - ) as _i3.InheritedElement); - - @override - String toStringShort() => (super.noSuchMethod( - Invocation.method(#toStringShort, []), - returnValue: _i6.dummyValue( - this, - Invocation.method(#toStringShort, []), - ), - returnValueForMissingStub: _i6.dummyValue( - this, - Invocation.method(#toStringShort, []), - ), - ) as String); - - @override - String toStringShallow({ - String? joiner = ', ', - _i4.DiagnosticLevel? minLevel = _i4.DiagnosticLevel.debug, - }) => - (super.noSuchMethod( - Invocation.method(#toStringShallow, [], { - #joiner: joiner, - #minLevel: minLevel, - }), - returnValue: _i6.dummyValue( - this, - Invocation.method(#toStringShallow, [], { - #joiner: joiner, - #minLevel: minLevel, - }), - ), - returnValueForMissingStub: _i6.dummyValue( - this, - Invocation.method(#toStringShallow, [], { - #joiner: joiner, - #minLevel: minLevel, - }), - ), - ) as String); - - @override - String toStringDeep({ - String? prefixLineOne = '', - String? prefixOtherLines, - _i4.DiagnosticLevel? minLevel = _i4.DiagnosticLevel.debug, - int? wrapWidth = 65, - }) => - (super.noSuchMethod( - Invocation.method(#toStringDeep, [], { - #prefixLineOne: prefixLineOne, - #prefixOtherLines: prefixOtherLines, - #minLevel: minLevel, - #wrapWidth: wrapWidth, - }), - returnValue: _i6.dummyValue( - this, - Invocation.method(#toStringDeep, [], { - #prefixLineOne: prefixLineOne, - #prefixOtherLines: prefixOtherLines, - #minLevel: minLevel, - #wrapWidth: wrapWidth, - }), - ), - returnValueForMissingStub: _i6.dummyValue( - this, - Invocation.method(#toStringDeep, [], { - #prefixLineOne: prefixLineOne, - #prefixOtherLines: prefixOtherLines, - #minLevel: minLevel, - #wrapWidth: wrapWidth, - }), - ), - ) as String); - - @override - _i4.DiagnosticsNode toDiagnosticsNode({ - String? name, - _i4.DiagnosticsTreeStyle? style, - }) => - (super.noSuchMethod( - Invocation.method(#toDiagnosticsNode, [], { - #name: name, - #style: style, - }), - returnValue: _FakeDiagnosticsNode_7( - this, - Invocation.method(#toDiagnosticsNode, [], { - #name: name, - #style: style, - }), - ), - returnValueForMissingStub: _FakeDiagnosticsNode_7( - this, - Invocation.method(#toDiagnosticsNode, [], { - #name: name, - #style: style, - }), - ), - ) as _i4.DiagnosticsNode); - - @override - List<_i4.DiagnosticsNode> debugDescribeChildren() => (super.noSuchMethod( - Invocation.method(#debugDescribeChildren, []), - returnValue: <_i4.DiagnosticsNode>[], - returnValueForMissingStub: <_i4.DiagnosticsNode>[], - ) as List<_i4.DiagnosticsNode>); - - @override - String toString({_i4.DiagnosticLevel? minLevel = _i4.DiagnosticLevel.info}) => super.toString(); -} diff --git a/tmpfile b/tmpfile new file mode 100644 index 0000000000000000000000000000000000000000..fde2965ba256898dcf386e308c179ac08641cff7 GIT binary patch literal 102 zcmdN(&M!+XN=#4HuSzXRj8DrcEh$MYiZ3n6%qeEj!zzhGIKCt!H8&MqGBY_pub2S< D@mMDz literal 0 HcmV?d00001 diff --git a/widgetbook/lib/src/components/badges.widgetbook.dart b/widgetbook/lib/src/components/badges.widgetbook.dart index 1279ede3..6df1b27b 100644 --- a/widgetbook/lib/src/components/badges.widgetbook.dart +++ b/widgetbook/lib/src/components/badges.widgetbook.dart @@ -66,18 +66,18 @@ Widget priorityPill(BuildContext context) { size: context.knobs.list( label: 'Size', options: ZetaPriorityPillSize.values, - labelBuilder: (value) => value.name.capitalize(), + labelBuilder: (value) => value.name.capitalize, ), type: context.knobs.list( label: 'Priority', options: ZetaPriorityPillType.values, - labelBuilder: (value) => value.name.capitalize(), + labelBuilder: (value) => value.name.capitalize, ), isBadge: context.knobs.boolean(label: 'Badge'), customColor: context.knobs.listOrNull( label: 'Custom color', options: colors.rainbow, - labelBuilder: (value) => colors.rainbowMap.entries.firstWhere((v) => v.value == value).key.capitalize(), + labelBuilder: (value) => colors.rainbowMap.entries.firstWhere((v) => v.value == value).key.capitalize, ), ); } diff --git a/widgetbook/lib/src/utils/utils.dart b/widgetbook/lib/src/utils/utils.dart index 35943e10..dafba492 100644 --- a/widgetbook/lib/src/utils/utils.dart +++ b/widgetbook/lib/src/utils/utils.dart @@ -10,7 +10,7 @@ List iconOptions() => icons.values .map((e) => IconData(e.codePoint, fontFamily: ZetaIcons.family, fontPackage: ZetaIcons.package)) .toList(); -String enumLabelBuilder(Enum? value) => value?.name.split('.').last.capitalize() ?? ''; +String enumLabelBuilder(Enum? value) => value?.name.split('.').last.capitalize ?? ''; IconData? iconKnob( BuildContext context, { diff --git a/widgetbook/macos/Flutter/GeneratedPluginRegistrant.swift b/widgetbook/macos/Flutter/GeneratedPluginRegistrant.swift index b19945c5..8c72a8c7 100644 --- a/widgetbook/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/widgetbook/macos/Flutter/GeneratedPluginRegistrant.swift @@ -7,10 +7,12 @@ import Foundation import path_provider_foundation import shared_preferences_foundation +import sqflite_darwin import url_launcher_macos func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) + SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin")) UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) } diff --git a/widgetbook/pubspec.yaml b/widgetbook/pubspec.yaml index 1a5a7bd0..9cd38031 100644 --- a/widgetbook/pubspec.yaml +++ b/widgetbook/pubspec.yaml @@ -5,6 +5,9 @@ version: 0.1.0 environment: sdk: ^3.6.0 + flutter: ^3.27.0 + +resolution: workspace dependencies: flutter: @@ -26,6 +29,9 @@ dev_dependencies: widgetbook_generator: ^3.9.1 build_runner: ^2.4.14 +dependency_overrides: + analyzer: ^6.0.0 + flutter: uses-material-design: true assets: