Map GoodWalletV2 UI components to GoodWidget Tamagui primitives#7
Merged
Conversation
- Add colorSoft/colorDim semantic theme keys to light/dark themes (presets.ts, theme.ts) - Add THEME_KEY_NAMES entries for colorSoft/colorDim (createComponent.ts) - Add light_Toast/dark_Toast, light_Dialog/dark_Dialog component themes to presets.ts and theme.ts - Add full radius and icon* size tokens to defaultTokenValues (theme.ts) - Create components/Text.ts with truncate, noWrap, colorSoft, colorDim variants - Create components/Button.tsx with pill, icon, text, list variants; default radius → $full - Create components/Separator.ts using Tamagui Separator base with size/color variants - Create components/Icon.tsx with inline SVG registry, size/color/spin/round props - Create components/Dialog.tsx with imperative store (createDialog, updateDialogStatus, closeDialog, useDialog) - Create components/Toast.tsx with ToastContainer, queue store, status variant, progress bar - Update index.ts to export all new components from components/" Agent-Logs-Url: https://github.com/GoodDollar/GoodWidget/sessions/5517c699-b8e4-49fc-b0e8-d993b89f2d7f Co-authored-by: L03TJ3 <6606028+L03TJ3@users.noreply.github.com>
- Use distinct textSoft/textDim colors for light vs dark modes in theme.ts - Update presets.ts comment to explain dark-only GW preset contrast rationale - Fix Toast ID generation: use monotonic counter instead of Math.random() - Fix keyframe injection: use module-level flags instead of repeated DOM lookups - Fix Promise detection in Dialog: use instanceof instead of duck-typing - Clarify Button variant radius inheritance with explicit comments and borderRadius Agent-Logs-Url: https://github.com/GoodDollar/GoodWidget/sessions/5517c699-b8e4-49fc-b0e8-d993b89f2d7f Co-authored-by: L03TJ3 <6606028+L03TJ3@users.noreply.github.com>
- Rename Text component from GWText to Text for naming consistency - Expand Button variant comment to explain Theme reset rationale - Extract resolveIconStrokeColor helper function for testability - Fix cross-realm Promise detection with Promise.resolve() identity check - Add imageAlt to DialogConfig for image accessibility - Update Dialog image rendering to use imageAlt Agent-Logs-Url: https://github.com/GoodDollar/GoodWidget/sessions/5517c699-b8e4-49fc-b0e8-d993b89f2d7f Co-authored-by: L03TJ3 <6606028+L03TJ3@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] Map GoodWalletV2 UI components to GoodWidget Tamagui primitives
Map GoodWalletV2 UI components to GoodWidget Tamagui primitives
Apr 23, 2026
Contributor
|
@copilot can you go over your changes and make sure we don't have any 'backward compatbility' support. |
- Delete components-test/Button.tsx (replaced by components/Button.tsx) - Delete components-test/Text.ts (replaced by components/Text.ts) - Delete components-test/Separator.ts (replaced by components/Separator.ts) - Delete components-test/Toast.tsx (replaced by components/Toast.tsx) - Remove "now in components/" migration comments from index.ts Agent-Logs-Url: https://github.com/GoodDollar/GoodWidget/sessions/b666b2f0-148c-4526-a177-60b4d1b654d4 Co-authored-by: L03TJ3 <6606028+L03TJ3@users.noreply.github.com>
Author
Done in 22b00e1. Deleted the four old |
L03TJ3
approved these changes
Apr 28, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Iterative first wave of GoodWalletV2 design elements applied to GoodWidget's component library — new components added to
packages/ui/src/components/, existing ones promoted with new variants. Oldcomponents-test/scaffolds for promoted components have been removed.Theme system
colorSoft/colorDimsemantic keys added tolight/darkbase themes andTHEME_KEY_NAMES— distinct light/dark values, not duplicatedlight_Toast/dark_Toast,light_Dialog/dark_Dialogcomponent sub-themes in bothpresets.tsandtheme.tsdefaultTokenValuesextended withfullradius (9999) andicon{2xs,Xs,Sm,Md,Lg,Xl,2xl}size tokens — was preset-only beforeNew components
IconNamed
'Icon', inline SVG registry (20+ paths on a 24×24 viewbox), size maps toicon*token scale, color roles resolve throughuseTheme()viaresolveIconStrokeColor().spininjects a CSS keyframe once via a module-level flag.DialogTamagui
Dialogbase.DialogOverlay/DialogFramenamed for component sub-themes. Imperative store:onAcceptreturning aPromiseauto-drivespending → success | errorstatus. UsesPromise.resolve()identity check for cross-realm safety.Toast+ToastContainerNamed
ToastFrame+ queue-based store with monotonic counter IDs.statusvariant drives border accent + status icon. Auto-close progress bar via a module-level CSS keyframe.Promoted components (moved from
components-test/tocomponents/)The old
components-test/files for these components have been deleted. Thecomponents/versions are now the single source of truth.ButtonborderRadius→$full; new variants:pill,text,list,iconSize; explicit radius documented per variantTexttruncate(single-line ellipsis),noWrap, semanticcolorvariant (default/secondary/soft/dim)SeparatorSeparatorbase;size(sm/md/lg) andcolor(default/muted/primary) variantsToastcomponents/Toast.tsxwithToastContainerand queue store