Commits
Fix pasting a valid phone number leaving action buttons greyed out
Covers paste of a valid number, digit-word normalization, typing, and the
/{number} deep-link path — all asserting the action buttons enable.
Refs #1
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Paste handling now normalizes digit-word forms with replaceDigitWords and
assigns the bound `value` directly. With svelte-tel-input v4's external
value watcher, validity recomputes from that assignment, so SMS/WhatsApp/
Telegram/contact/QR buttons enable on paste just like on deep-link.
Closes #1
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
v4 is rune-native and exposes an external value watcher, which the paste
fix for #1 relies on. Rename the removed `normalizedCountries` export to
`countries` in the country pickers. Bump remaining in-range deps and add
@playwright/test for e2e coverage.
Refs #1
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
TelInput reads input through a use: directive and renders value={inputValue}
one-way, so the old paste handler's synthetic input event never re-ran the
library's validation and `valid` stayed false. Assign the bound `value`
instead, which triggers TelInput's external-value watcher to re-parse and
recompute validity (the same path the /{number} deep-link uses).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Converts circled numbers (①②③ etc) to regular digits when pasting.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Textarea with auto-resize (runed TextareaAutosize) for pasting lists
- Parser extracts phone numbers and names from freeform text
- Skips blank lines and header lines (e.g. 'Friends:')
- Each row shows formatted number with copy, Telegram, SMS, WhatsApp,
and VCF download buttons plus editable name field
- Add QR icon to action bar
- Show inline QR code when toggled (no modal)
- QR encodes Telegram URL for easy mobile scanning
- Remove Telegram highlight effect (cleaner look)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Move Copy button next to the formatted phone number badge
- Move contact name input into ActionBar (above buttons on mobile, below on desktop)
- Simplify Telegram highlight to subtle drop shadow
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This reverts commit 8b18e94a332270a1deeced194546778c29019971.
This reverts commit 1f3ce3911a71e01a3bc7a7038490f07beca9f0a3.
Paste handling now normalizes digit-word forms with replaceDigitWords and
assigns the bound `value` directly. With svelte-tel-input v4's external
value watcher, validity recomputes from that assignment, so SMS/WhatsApp/
Telegram/contact/QR buttons enable on paste just like on deep-link.
Closes #1
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
v4 is rune-native and exposes an external value watcher, which the paste
fix for #1 relies on. Rename the removed `normalizedCountries` export to
`countries` in the country pickers. Bump remaining in-range deps and add
@playwright/test for e2e coverage.
Refs #1
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
TelInput reads input through a use: directive and renders value={inputValue}
one-way, so the old paste handler's synthetic input event never re-ran the
library's validation and `valid` stayed false. Assign the bound `value`
instead, which triggers TelInput's external-value watcher to re-parse and
recompute validity (the same path the /{number} deep-link uses).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Textarea with auto-resize (runed TextareaAutosize) for pasting lists
- Parser extracts phone numbers and names from freeform text
- Skips blank lines and header lines (e.g. 'Friends:')
- Each row shows formatted number with copy, Telegram, SMS, WhatsApp,
and VCF download buttons plus editable name field
This reverts commit 8b18e94a332270a1deeced194546778c29019971.