Commit graph

314 commits

Author SHA1 Message Date
47563634b3 nav: add crew link and gw-events database link 2025-12-13 14:34:49 -08:00
b5d0b7c0e7 collection panes: add delete action, fix edit mode state
- add remove from collection with confirmation
- sidebar overflow menu for delete action
- better tracking of which item is selected to avoid state bugs
2025-12-13 14:34:40 -08:00
7558aef509 edit panes: remove footer buttons, export save() for header
parent components now call save() from sidebar header action
instead of embedded cancel/save buttons
2025-12-13 14:34:30 -08:00
4418157ca0 refactor modal components to use header/body/footer pattern
UserSettingsModal now uses ModalHeader, ModalBody, ModalFooter.
Dialog simplified. Button tweaks.
2025-12-13 14:34:20 -08:00
aee0690b2d add crew UI components, store, queries, and mutations 2025-12-04 03:03:27 -08:00
e7dfca992a add muted and suffixSnippet props to Select component 2025-12-04 03:02:51 -08:00
0a2a3894bf Add sync from collection menu and highlight owned items in search
- Party.svelte: Add 'Sync from collection' to overflow menu for parties
  with linked collection items, with proper menu grouping
- SearchContent.svelte: Highlight items user owns in 'All Items' mode
  with subtle green background and checkmark indicator
2025-12-03 23:24:30 -08:00
f5d0bbe7da Add sync UI to Party and edit sidebars
- Party.svelte: Pass authUserId to openSearchSidebar, link collection
  items when adding to party via collectionId
- DetailsSidebar: Show sync banner for out-of-sync items, add sync
  functionality for characters, weapons, and summons
- EditCharacterSidebar/EditWeaponSidebar: Add sync banner and button
  for items linked to collection
- party.ts types: Add collectionId and outOfSync fields to grid types
2025-12-03 23:13:59 -08:00
bf2bf8663f add search mode toggle for collection items 2025-12-03 22:58:46 -08:00
7c93cf8aab fix skill lookup for slots 3-4 by matching skill group 2025-12-03 21:10:22 -08:00
3f13f16998 add artifact header with wide image and relief background 2025-12-03 21:05:42 -08:00
ff4b63a542 show remaining chars counter only when near limit 2025-12-03 20:52:14 -08:00
edbfd14843 tweak DetailRow min-width, fix DisclosureRow label wrapping 2025-12-03 20:52:09 -08:00
8759afb83c fix infinite loop in sidebar action effects with untrack 2025-12-03 20:52:03 -08:00
5bac8a0b53 add element-based styling to modifier selection 2025-12-03 20:51:52 -08:00
dc4c2c3117 move artifact image/name to header, use DetailRows for skills 2025-12-03 20:51:16 -08:00
ee2e51affd add image support to sidebar header 2025-12-03 20:51:10 -08:00
399480db9f put grade recommendation reason inline with action badge 2025-12-03 20:51:05 -08:00
91b2a61ac9 simplify skill display to value-only, highlight max rolls in element color 2025-12-03 20:50:59 -08:00
f55303039c auto-redistribute skill levels when artifact level changes 2025-12-03 20:50:53 -08:00
f34f2c4dc9 show calculated skill values in dropdown, add level constraints 2025-12-03 20:50:47 -08:00
ea09f325a0 fix slider value handling and track width
- Use single value instead of array for type="single" slider
- Pass onValueChange directly without array wrapping
- Use flex-grow: 1 for track width instead of width: 100%
2025-12-03 18:50:11 -08:00
8ddfe58369 fix slider range width by adding track wrapper element
The bits-ui Slider.Range component needs to be inside a proper
track element for the range fill to display correctly. Added a
span wrapper with slider-track class and updated styles.
2025-12-03 18:45:53 -08:00
23b1d091f5 add Slider component with elemental styling for level selection 2025-12-03 18:41:04 -08:00
a1bc125521 add element-ghost button variant for sidebar header 2025-12-03 18:33:56 -08:00
9b59a22a43 stretch header buttons to fill height, add gap between accessories 2025-12-03 18:25:24 -08:00
f5f7743055 move delete to detail pane overflow, add disabled save button to edit 2025-12-03 18:20:13 -08:00
db71e6dc80 add overflow menu support to pane stack 2025-12-03 18:20:09 -08:00
100f506c44 move add artifact button to header as elemental button 2025-12-03 18:11:34 -08:00
99644c1730 use color dots instead of images for element dropdown 2025-12-03 18:08:15 -08:00
3527bc820f make Edit button elemental based on artifact element 2025-12-03 18:08:08 -08:00
abf7a36d8a remove translateY(1px) from button active state 2025-12-03 18:07:59 -08:00
b047552d7d fix infinite loop: use onMount instead of $effect for sidebar action 2025-12-03 17:57:50 -08:00
34821aa487 split artifact pane into detail and edit views
- CollectionArtifactDetailPane: read-only view with Edit button in header
- CollectionArtifactEditPane: editable form pushed onto pane stack
- ArtifactSkillDisplay: new read-only skill display component
2025-12-03 17:54:18 -08:00
f23779b664 pane stack: each pane is now its own card
move card styling (bg, radius, shadow, border) from sidebar
container to individual panes so they visually stack as
separate cards. behind pane peeks out from the left.
2025-12-03 17:38:53 -08:00
df045ecd2b add AddArtifactSidebar for collection artifacts
flow: proficiency -> element (color dots) -> artifact dropdown
(filtered by proficiency) -> level/nickname -> skills config
using pane stack for iOS-style navigation
2025-12-03 17:14:26 -08:00
ed32b7e924 add color dot support to Select component 2025-12-03 17:14:19 -08:00
9bdcc7818b remove polarity indicator from skill list 2025-12-03 17:14:01 -08:00
644c596173 fix Icon import path in DisclosureRow 2025-12-03 16:33:47 -08:00
a02db87988 fix @const placement in PaneStack 2025-12-03 16:28:26 -08:00
2b572d07a7 add artifact selection components for pane stack 2025-12-03 16:22:33 -08:00
e7354479f7 add artifact section to TeamView sidebar 2025-12-03 16:20:31 -08:00
ef22bcb6c1 add artifact indicator icon next to character name 2025-12-03 16:18:48 -08:00
52660f3fb1 add collection artifact feature (cards, rows, pane, route)
- CollectionArtifactCard for grid view
- CollectionArtifactRow for list view
- CollectionArtifactPane for sidebar details
- artifacts collection page with filters and infinite scroll
- getArtifactImage util
- update collection layout for artifacts tab
2025-12-03 16:17:15 -08:00
3a41adc4f2 add artifact UI components for phase 4
- DisclosureRow: iOS-style disclosure row for navigation
- ArtifactSkillRow: shows skill with modifiers and level/value controls
- ArtifactModifierList: selectable list of skills by polarity
- ArtifactGradeDisplay: shows letter grade, breakdown, recommendation
- ArtifactEditPane: main edit pane combining base props, skills, grade
2025-12-03 16:08:17 -08:00
d907e32d12 integrate pane stack into sidebar store
sidebar now uses PaneStackStore internally - openWithComponent
creates root pane, and child components can push/pop via context.
simplified Sidebar.svelte to render PaneStack when stack has items.
2025-12-03 15:55:47 -08:00
84e1fb4a8a add pane stack store and component for ios-style navigation 2025-12-03 15:47:34 -08:00
ab4c8058f4 add ... dropdown to database nav with weapon series link 2025-12-03 12:33:42 -08:00
166ef8ff6f update conflict dialog and database pages for series objects 2025-12-03 11:59:31 -08:00
139e602808 fetch weapon series from API in collection filters 2025-12-03 11:59:26 -08:00
a251240331 complete handleSave for weapon modifiers, update key select to use slug 2025-12-03 11:59:16 -08:00
a580f179e1 clean up error handling in add modal 2025-12-03 10:51:17 -08:00
5db9181afc left-align uncap indicators in cells 2025-12-03 10:50:41 -08:00
f54c5f012e improve collection row layouts
- wrap thumbnail + name in core-info container
- use layout tokens for border radius
- add proficiency column to weapon rows
- wider thumbnails, consistent sizing
2025-12-03 10:50:36 -08:00
c37c4f0101 fix request cancellation issue in batch add weapons/summons
The addWeapons/addSummons methods were using Promise.all with Array.fill()
which created arrays where all elements referenced the same object. This
caused the request deduplication logic in BaseAdapter to cancel previous
requests since they all had the same body/requestId.

Fix:
- Use Array.from() with spread to create unique object instances
- Execute requests sequentially to avoid deduplication conflicts
- Improve error handling in AddToCollectionModal to filter CancelledErrors
2025-12-03 07:37:03 -08:00
d9dd8f58ee fix Svelte 5 event modifier syntax in selectable components
Replace deprecated onclick|stopPropagation with onclick={(e) => e.stopPropagation()}
2025-12-03 07:31:32 -08:00
60947a7911 add detail and edit panes for weapon/summon collections
- WeaponEditPane: edit component with uncap, transcendence, element,
  weapon keys, AX skills, and awakening support
- SummonEditPane: simple edit component with uncap and transcendence
- CollectionWeaponPane: full detail pane with Info/My Collection tabs
- CollectionSummonPane: full detail pane with Info/My Collection tabs
2025-12-03 07:26:53 -08:00
033bc1c8f7 add collection display components for weapons and summons
- CollectionWeaponCard: grid view with uncap indicator and transcendence
- CollectionWeaponRow: list view with element, uncap, and awakening/keys info
- CollectionSummonCard: grid view with uncap indicator
- CollectionSummonRow: list view with element and uncap info
2025-12-03 07:21:53 -08:00
957dd16e5e add quantity counter and selectable components for weapons/summons
- QuantityCounter: +/- buttons for multi-copy selection
- SelectableWeaponCard/Row: weapon selection with quantity
- SelectableSummonCard/Row: summon selection with quantity
- AddToCollectionModal: support entityType prop, Map for quantities
- CollectionFilters: entityType-aware filter visibility
2025-12-03 07:19:04 -08:00
a2e0015a85 minor cleanup: remove unused import, add font-tiny variable 2025-12-02 17:19:49 -08:00
5e5d9e93ec refactor CollectionCharacterPane: use DetailSections, fix reactivity on char switch 2025-12-02 17:19:45 -08:00
0f46960de6 add uncap level editing to CharacterEditPane 2025-12-02 17:19:41 -08:00
2a4789c72a add empty state support to DetailsSection 2025-12-02 17:19:38 -08:00
cc2b2c1f95 convert collection filters from buttons to dropdowns 2025-12-02 17:19:31 -08:00
9f18ff0a4d add small size variant to segmented control 2025-12-02 17:19:22 -08:00
6f21018bca add MultiSelect component, refactor Select for consistency 2025-12-02 17:19:19 -08:00
4bbe2ed188 simplify collection page to single code path
- use unified api for all users (no owner/viewer branching)
- remove client-side filtering (api handles it)
- pass userId to AddToCollectionModal
2025-12-02 15:31:58 -08:00
35b0560749 add ProfileHeader component, add collection link to profile nav 2025-12-02 15:07:01 -08:00
a6a0a38d75 fix collection modal search: use query factory pattern, remove broken debounce 2025-12-02 15:06:47 -08:00
a664d41e63 fix character card aspect ratio to match actual image dimensions
Character grid images are 280x160 (7:4 ratio, wider than tall).
The previous ratio was inverted. Now using 100px width with correct
aspect-ratio: 280/160.
2025-12-02 11:35:00 -08:00
408f729976 switch modal results grid to flexbox for better layout
Use flexbox with fixed-width cards (70px) instead of CSS Grid. This
prevents excessive vertical spacing when using tall aspect ratio items.
2025-12-02 11:32:04 -08:00
7de75ec8d0 fix character card aspect ratio and duplicate key error
- Use proper 16:33 aspect ratio for character cards instead of square
- Change object-fit from cover to contain to prevent cropping
- Deduplicate search results across pages to prevent duplicate key errors
2025-12-02 11:31:09 -08:00
d107d56f82 fix collection nav link to point to user's collection
The Collection nav link now points to /{username}/collection/characters
instead of /collection. Also updates isNavSelected to properly detect
when on any collection page.
2025-12-02 11:29:09 -08:00
2aa961b5e6 refactor EditCharacterSidebar to use shared CharacterEditPane
Reduces ~240 lines to ~85 lines by using the shared CharacterEditPane
component for edit controls. Both party grid and collection character
editing now use the same underlying UI component.
2025-12-02 11:26:23 -08:00
dea784780a add collection page route and character pane components
- Add collection route structure at [username]/collection/characters
- Create CharacterEditPane as shared component for character customizations
- Create CollectionCharacterPane with Info and My Collection tabs
- Add character grid with filters and infinite scroll
- Fix CollectionFilters a11y warnings
2025-12-02 09:43:31 -08:00
a9de4a60c0 add AddToCollectionModal and SelectableCharacterCard
Large modal for batch-selecting characters to add to collection.
Features server-side search, filtering, multi-select with visual
feedback, and "X selected" link to filter to selection only.
2025-12-02 09:32:28 -08:00
8f28ad8d8f add Dialog large size variant and CollectionFilters
Dialog now supports size='large' for 90vw/85vh modals.
CollectionFilters provides reusable filter controls for
element, rarity, season, series, race, proficiency, gender.
2025-12-02 09:30:31 -08:00
51db7f7604 remove redundant settings page 2025-12-02 08:52:08 -08:00
8912696a08 add element selector to user settings modal 2025-12-02 08:52:02 -08:00
513c7660f5 add svelte-sonner for toast notifications 2025-12-02 06:54:12 -08:00
96f040a91b add CheckboxGroup component for multiselect fields 2025-12-02 05:25:35 -08:00
2771e202cb add CopyableText component for raw data tab 2025-12-02 01:25:14 -08:00
da26645df0 add DatePicker component with type='date' support 2025-12-02 01:24:36 -08:00
64e50e1b50 add batch import button to database index pages 2025-12-02 00:08:47 -08:00
1ea0eee86c add suggestion props to all database section components 2025-12-01 23:52:06 -08:00
bba78d5781 feat: add suggestion UI components for batch import
- SuggestionBadge: sparkle icon with tooltip for accept/dismiss actions
- SuggestionDetailItem: detail item wrapper with suggestion badge support
- TabbedEntitySelector: entity image grid for batch selection

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 23:43:56 -08:00
be75fcbcbd database detail pages: add Info/Images/Raw tabs 2025-12-01 09:54:35 -08:00
395a5c166f SegmentedControl: add size prop (default/small) 2025-12-01 09:54:06 -08:00
20705cc3b2 SegmentedControl: only fire onValueChange on actual changes
Prevents onValueChange from firing during initialization, which
caused pushState errors before router was ready.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 05:02:56 -08:00
83b18645c8 fix: guard pushState until router is initialized 2025-12-01 04:59:16 -08:00
4fda863339 fix: use pushState + popstate for instant tab switching 2025-12-01 04:57:22 -08:00
21bda28910 fix: always use explicit tab path in URL 2025-12-01 04:36:17 -08:00
5063e8e73c fix: use goto() instead of pushState for tab URL sync 2025-12-01 04:33:28 -08:00
af27f0fbbc add URL-based tab routing with pushState sync 2025-12-01 04:29:21 -08:00
5b0d41a020 move teams/[id] route into [[tab=tab]] optional segment 2025-12-01 04:27:42 -08:00
a9dcbd18f8 DetailItem: adjust padding and remove hover styles 2025-12-01 04:11:22 -08:00
c2b2de9e96 TagInput: add contained prop with max-width 2025-12-01 04:10:36 -08:00
7a86790670 weapons: add recruits character search field
Add CharacterTypeahead component for async character search using Svelecte.
The component debounces input and queries the search API for matching
characters. Added recruits field to weapon creation page.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 03:17:17 -08:00
fbe43490d7 ui: add TagInput component for nicknames
- Chip/tag style input for string arrays
- Add/remove tags with Enter or comma
- Backspace removes last tag when input empty
- Supports label, error, maxTags, disabled

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 02:43:44 -08:00
39b1ed9f64 nav: context-aware New button for database routes
- Show "New character/weapon/summon" pill button on database pages
- Keep existing circular + button for team creation elsewhere

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 02:27:47 -08:00