Skip to content

feat(types): make RegistryTicket.value generic for type safety#53

Merged
johnleider merged 1 commit intomasterfrom
claude/review-v0-composables-01Tqph2Zyo8UvD4TEypmcsYD
Nov 29, 2025
Merged

feat(types): make RegistryTicket.value generic for type safety#53
johnleider merged 1 commit intomasterfrom
claude/review-v0-composables-01Tqph2Zyo8UvD4TEypmcsYD

Conversation

@johnleider
Copy link
Copy Markdown
Member

This change adds a generic value type parameter to RegistryTicket and
propagates it through the entire composable hierarchy:

  • RegistryTicket<V = unknown> - Base type now accepts value type
  • SelectionTicket - Inherits from RegistryTicket
  • SingleTicket, GroupTicket, StepTicket - Selection descendants
  • FormTicket, QueueTicket, TimelineTicket - Registry extensions
  • TokenTicket - Uses RegistryTicket
  • ThemeTicket - Uses SingleTicket
  • FeatureTicket - Uses GroupTicket
  • PermissionTicket - Uses RegistryTicket

Also updates:

  • Components (SelectionItem, SingleItem, GroupItem, StepItem) use generic V
  • ThemeRecord no longer uses index signature with any
  • PermissionContext and adapters use Record<string, unknown> instead of any
  • usePermissions refactored to use useRegistry directly

This provides:

  • Full type safety for stored values
  • IDE autocomplete for ticket.value
  • Compile-time error detection
  • Zero runtime cost (types only)

Copilot AI review requested due to automatic review settings November 29, 2025 01:12
@pkg-pr-new
Copy link
Copy Markdown

pkg-pr-new Bot commented Nov 29, 2025

Open in StackBlitz

commit: bf2b568

This comment was marked as outdated.

@johnleider johnleider force-pushed the claude/review-v0-composables-01Tqph2Zyo8UvD4TEypmcsYD branch from c8d39be to d5114a7 Compare November 29, 2025 01:27
This change adds a generic value type parameter to RegistryTicket and
propagates it through the entire composable hierarchy:

- RegistryTicket<V = unknown> - Base type now accepts value type
- SelectionTicket<V> - Inherits from RegistryTicket<V>
- SingleTicket<V>, GroupTicket<V>, StepTicket<V> - Selection descendants
- FormTicket<V>, QueueTicket<V>, TimelineTicket<V> - Registry extensions
- TokenTicket - Uses RegistryTicket<TokenValue>
- ThemeTicket - Uses SingleTicket<ThemeColors>
- FeatureTicket - Uses GroupTicket<TokenValue>
- PermissionTicket - Extends TokenTicket with permission value type

Also updates:
- TokenPrimitive now includes Function for permission callbacks
- Components (SelectionItem, SingleItem, GroupItem, StepItem) use generic V
- ThemeRecord no longer uses index signature with `any`

This provides:
- Full type safety for stored values
- IDE autocomplete for ticket.value
- Compile-time error detection
- Zero runtime cost (types only)
@johnleider johnleider force-pushed the claude/review-v0-composables-01Tqph2Zyo8UvD4TEypmcsYD branch from d5114a7 to bf2b568 Compare November 29, 2025 02:00
@johnleider johnleider merged commit 4434d2b into master Nov 29, 2025
9 checks passed
@johnleider johnleider deleted the claude/review-v0-composables-01Tqph2Zyo8UvD4TEypmcsYD branch November 29, 2025 02:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants