Matthew Raymer e5b622f575 feat: Phase 3 - Extract step components from GiftedDialog
- Create EntitySelectionStep.vue for complete step 1 interface
  * Dynamic step labeling based on context (giver/recipient/projects)
  * EntityGrid integration for unified entity display
  * Conflict detection and prevention with visual feedback
  * Special entity handling (You, Unnamed) with proper conditions
  * Show All navigation with context preservation through query params
  * Cancel functionality with event delegation
  * Comprehensive prop interface for all dialog contexts

- Create GiftDetailsStep.vue for complete step 2 interface
  * Entity summary display using EntitySummaryButton components
  * Gift description input with placeholder support
  * AmountInput integration with increment/decrement controls
  * Unit code selection (HUR, USD, BTC, BX, ETH)
  * Photo & more options navigation with computed route
  * Conflict detection and warning display
  * Form validation and submission with disabled states
  * Local reactive state management with prop synchronization
  * Edit entity functionality with structured events

- Update GiftedDialog-Decomposition-Plan.md
  * Mark Phase 3 as completed with detailed specifications
  * Add comprehensive integration examples for step components
  * Update component count and progress tracking
  * Add usage patterns for EntitySelectionStep and GiftDetailsStep
  * Update project status to 'Integration Phase Ready'

Phase 3 completes the major UI section extraction, creating two
comprehensive step components that can directly replace the existing
step logic in GiftedDialog. These components maintain all existing
functionality while providing clean, testable interfaces.

Components: 9 total (4 Phase 1 + 3 Phase 2 + 2 Phase 3)
Next: Integration phase - Replace GiftedDialog step logic with new components
2025-06-29 06:14:38 +00:00
2024-07-18 19:55:57 +08:00
2025-06-06 18:15:42 +08:00
2025-06-11 00:46:46 -06:00
2022-11-16 14:48:22 +08:00
2025-06-11 00:46:46 -06:00
2025-06-28 13:49:51 +00:00
2025-06-28 13:49:51 +00:00
2025-05-08 20:11:45 +08:00
2024-12-08 21:22:03 -07:00
2022-11-27 14:16:57 +08:00
2025-05-25 15:49:36 -06:00

TimeSafari.app - Crowd-Funder for Time - PWA

Time Safari allows people to ease into collaboration: start with expressions of gratitude and expand to crowd-fund with time & money, then record and see the impact of contributions.

Roadmap

See project.task.yaml for current priorities. (Numbers at the beginning of lines are estimated hours. See taskyaml.org for details.)

Setup & Building

Quick start:

  • For setup, we recommend pkgx, which installs what you need (either automatically or with the dev command). Core dependencies are typescript & npm; when building for other platforms, you'll need other things such as those in the pkgx.yaml & BUILDING.md files.
npm install
npm run dev

See BUILDING.md for more details.

Tests

See TESTING.md for detailed test instructions.

Icons

Application icons are in the assets directory, processed by the capacitor-assets command.

To add a Font Awesome icon, add to main.ts and reference with font-awesome element and icon attribute with the hyphenated name.

Other

Reference Material

  • Notifications can be type of toast (self-dismiss), info, success, warning, and danger. They are done via notiwind and set up in App.vue.

  • Customize Vue configuration.

  • If you are deploying in a subdirectory, add it to publicPath in vue.config.js, eg: publicPath: "/app/time-tracker/",

Code Organization

The project uses a centralized approach to type definitions and interfaces:

  • src/interfaces/ - Contains all TypeScript interfaces and type definitions
    • deepLinks.ts - Deep linking type system and Zod validation schemas
    • give.ts - Give-related interfaces and type definitions
    • claims.ts - Claim-related interfaces and verifiable credentials
    • common.ts - Shared interfaces and utility types
    • Other domain-specific interface files

Key principles:

  • All interfaces and types are defined in the interfaces folder
  • Zod schemas are used for runtime validation and type generation
  • Domain-specific interfaces are separated into their own files
  • Common interfaces are shared through common.ts
  • Type definitions are generated from Zod schemas where possible

Kudos

Gifts make the world go 'round!

Description
No description provided
Readme 519 MiB
Languages
Vue 47.5%
TypeScript 28.4%
JavaScript 13.6%
Shell 9%
Python 0.6%
Other 0.9%