Commit Graph
106 Commits
Author SHA1 Message Date
Sam PottsandGitHub 4ffaa58634 feat(ui): styling fixes for toasted skin (#38) 2025-10-06 13:16:49 +11:00
Sam PottsandGitHub bdd2f36e13 feat(ui): add toasted skin 2025-10-04 19:26:02 +10:00
Wesley Luyten 5195c09af6 fix: rename attributes to kebab-case 2025-10-03 13:30:53 -05:00
Wesley Luyten 0a42bfe86d fix: React version mismatch, add forward refs 2025-10-02 15:03:39 -05:00
Wesley Luyten f0715c88ca chore: add generate:icons to build dependsOn 2025-10-02 14:28:58 -05:00
Wesley Luyten ad8258e533 chore: remove use-node-version, Vercel deployment 2025-10-02 14:15:41 -05:00
Wesley LuytenandGitHub 17b632f5f9 feat: add media-popover, cleanup html demo (#34) 2025-10-02 14:09:33 -05:00
Wesley LuytenandGitHub f775a3daf7 feat: add popover React component (#33) 2025-10-02 11:03:44 -05:00
Wesley LuytenandGitHub 7b79854304 feat: add HTML vertical orientation to time and volume (#32)
* feat: add vertical orientation to time and volume
range components

* fix: improve resetting of styles
2025-10-01 15:02:23 -05:00
Wesley LuytenandGitHub 5e3cb8ad81 feat: add range orientation to react components (#30) 2025-09-26 17:57:21 -05:00
687b7655b0 feat: add core range, time and volume range (#23)
* feat: add poc for core time range class

* fix: use object keys instead of strings
for minification

* Update packages/react/react/src/components/TimeRange.tsx

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* fix: cleanup and add time range core to html

* fix: add range core component, implement volume

* Update packages/core/core/src/utils/state.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update packages/core/core/src/components/range.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-26 14:10:40 -05:00
RahimandGitHub d481b477db chore: cleanup demo config (#28) 2025-09-26 12:07:57 +10:00
Sam Potts 1ef66c9461 fix(ui): revert style testing change 2025-09-26 11:49:46 +10:00
Sam Potts 0afa9b7187 fix: skin exports/imports 2025-09-26 11:38:26 +10:00
Sam Potts f8fbe61c38 refactor: remove container radius from the skin 2025-09-26 11:38:26 +10:00
Sam Potts 5eaa44fbc0 fix: add missing prettier plugin (remove later) 2025-09-26 10:54:51 +10:00
Sam Potts 1f53a52a5f chore: add linting config 2025-09-26 10:18:58 +10:00
Wesley LuytenandGitHub a3f9630bd1 fix: seek jump back to current time (#22) 2025-09-23 15:26:45 -05:00
Wesley LuytenandGitHub aefe890fee feat: add volume range compound component (#19) 2025-09-23 11:07:47 -05:00
RahimandGitHub e3dcb6aba7 chore: gitignore cleanup (#21) 2025-09-23 23:32:00 +10:00
RahimandGitHub 6ad5340b40 chore: new builds & types using tsdown (#20) 2025-09-23 23:12:19 +10:00
RahimandGitHub 8bb4dcff72 chore: npm -> pnpm 2025-09-23 01:08:02 +10:00
Rahim 68666d0901 done 2025-09-23 00:57:47 +10:00
RahimandGitHub 3065115cf9 chore: add prettier 2025-09-22 23:40:43 +10:00
Rahim d2b2dd4868 done 2025-09-22 23:39:30 +10:00
Sam Potts d3221ec211 feat(ui): minor style tweaks 2025-09-22 09:30:10 +10:00
Sam PottsandGitHub ff4ea3693e Merge pull request #15 from muxinc/feat/default-skin
feat(ui): port over default skin
2025-09-21 13:37:58 +10:00
Sam Potts 9950945008 feat(ui): port over default skin 2025-09-21 13:37:14 +10:00
Wesley LuytenandGitHub 017ecdbff9 feat: add compound html timerange component (#14)
* fix: add context logic to component factory

* feat: add compound time range html component
2025-09-18 17:58:53 -05:00
Wesley LuytenandGitHub 71a8dafd74 feat: make time range compound component (#10)
* feat: make time range compound component

* fix: add root ctx, use skin styles

* fix: improve time range

* fix: move more logic to root component

* fix: renaming

* fix: dragging and add memo to context value

* fix: improve time range styles
2025-09-15 11:27:40 -05:00
597e79d7fc fix(time-display): clean up time utilities and simplify components
- Remove deprecated formatDuration function from time utils
- Simplify HTML current time display by removing template generation
- Use direct shadow DOM text content updates for better performance
- Remove unused imports from React current time display component
- Enable show-remaining by default in HTML skin
- Ensure consistent negative time formatting across platforms

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-12 15:59:15 -07:00
c1da674425 chore: add .playwright-mcp to .gitignore
Prevent accidental commit of playwright MCP screenshot files
in the future.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-12 15:59:15 -07:00
1db32d82fa chore: remove accidentally committed .playwright-mcp files
Remove screenshot files that were unintentionally added to git history.
These files should not be tracked in the repository.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-12 15:59:15 -07:00
ab07a8a9a2 feat: add showRemaining functionality to current time display
Adds support for displaying remaining time (countdown) instead of elapsed time:

**HTML Component:**
- Add `show-remaining` attribute support with observedAttributes
- Implement attributeChangedCallback for reactive updates
- Display remaining time as `-{duration - currentTime}` when attribute present
- Maintain backward compatibility with default current time display

**React Component:**
- Add `showRemaining` prop with proper TypeScript typing
- Calculate and display remaining time in render function
- Destructure prop to avoid passing to DOM element
- Consistent `-{remaining}` format matching HTML component

**Usage:**
- HTML: `<media-current-time-display show-remaining></media-current-time-display>`
- React: `<CurrentTimeDisplay showRemaining />`

Both implementations include documentation comments and maintain
consistent behavior across platforms.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-12 15:59:15 -07:00
Christian PillsburyandChristian Pillsbury 3bca85f180 chore: swapping out m3u8 example asset for react demo. 2025-09-12 15:59:15 -07:00
5aeeb6dde6 style: add visual styling to time display components
Adds consistent styling to duration and current time display components
across both HTML and React platforms:
- Semi-transparent dark background matching other UI components
- Monospace font for better time alignment
- Proper padding, borders, and text alignment
- Consistent color scheme with existing control bar elements

Both HTML and React skins now display time values with proper visual
styling that integrates seamlessly with the control bar design.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-12 15:59:15 -07:00
0746d400af refactor: rename formatDuration to formatDisplayTime
Renames the time formatting utility to be more generic since it's used for
both duration and currentTime display:
- Add formatDisplayTime as the primary function name
- Update all component references to use formatDisplayTime
- Keep formatDuration as deprecated alias for backward compatibility
- More semantic naming that reflects actual usage across components

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-12 15:59:15 -07:00
5bd0a154db feat: implement current time display components
Adds current time display functionality across HTML and React platforms:
- Core state definition for current time with duration support
- HTML component with shadow DOM and span rendering
- React component following hook-style architecture
- Integration into both HTML and React default skins
- Proper exports and component registration

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-12 15:59:15 -07:00
6db4c3c4b8 refactor: move time formatting logic to platform components
Move time formatting responsibility from core component state definition
to platform-specific components for better separation of concerns:

- Core state definition now only provides raw duration value
- HTML component calls formatDuration() in _update() method
- React component calls formatDuration() in render function
- Maintains same functionality with cleaner architecture

This approach gives platforms more control over formatting and reduces
the responsibility of the core state abstraction.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-12 15:59:15 -07:00
2ed219158d feat(skins): integrate duration display into default skins
Add duration display components to both HTML and React default skins:
- HTML: Add media-duration-display element to control bar
- React: Add DurationDisplay component to MediaSkinDefault

Duration display appears between time range and mute button controls,
providing users with total media duration information in the default
player interface.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-12 15:59:15 -07:00
c5b659f449 feat(react): implement duration display component
Add React duration display component using VJS-10 hook-style patterns:
- Native React component using media store hooks
- Uses duration display state definition from media-store
- Minimal implementation rendering single span element
- Follows toConnectedComponent pattern for consistency

Component renders formatted duration (e.g., "4:32") without styling or
ARIA attributes, providing a clean foundation for duration display.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-12 15:59:15 -07:00
e35dd44be8 feat(html): implement duration display component
Add HTML duration display component using VJS-10 hook-style architecture:
- Custom element with shadow DOM containing single span
- Uses duration display state definition from media-store
- Minimal implementation without styling or ARIA attributes
- Follows toConnectedHTMLComponent pattern for consistency

Component renders formatted duration (e.g., "4:32") in a simple span element.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-12 15:59:15 -07:00
d0036fc7d6 feat(media-store): add duration display component state definition
Implement framework-agnostic duration display state definition following
VJS-10 patterns:
- Read-only component with duration transformation logic
- Formatted duration string and accessibility phrase generation
- Integrates with time formatting utilities for consistent display

This enables duration display components across HTML, React, and React Native
while maintaining shared business logic in the core package.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-12 15:59:15 -07:00
7e26e547ea feat(media-store): add comprehensive time formatting utilities
Add time formatting functions ported from Media Chrome:
- formatTime() - formats seconds to HH:MM:SS or MM:SS
- formatAsTimePhrase() - creates accessibility descriptions
- isValidDuration() - validates duration values
- formatDuration() - combines formatting with fallback handling

These utilities provide the foundation for time-based display components
across HTML, React, and React Native platforms.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-12 15:59:15 -07:00
d0d487601e fix(icons): add currentColor fill to fullscreen icons for proper theming
The fullscreen enter/exit SVG icons were missing fill="currentColor"
attributes, causing them to render as black/invisible against dark
button backgrounds. This fix ensures proper theming support.

Also integrates fullscreen button into React default skin with
MediaContainer wrapper for complete out-of-the-box functionality.

- Fix fullscreen-enter.svg and fullscreen-exit.svg with currentColor fill
- Add MediaContainer wrapper to React MediaSkinDefault
- Add FullscreenButton to React control bar with proper icon states
- Add CSS for fullscreen button icon state management

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-12 08:06:08 -07:00
23e3876630 feat(react): add MediaContainer component for fullscreen functionality
Add MediaContainer component that provides fullscreen container registration
for React applications. Includes useMediaContainerRef hook for manual
element registration and MediaContainer wrapper component for convenience.

- Add MediaContainer.tsx with useMediaContainerRef hook and component
- Export MediaContainer and useMediaContainerRef from React package
- Clean up React demo to remove testing modifications

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-12 08:06:08 -07:00
35072fd7c5 refactor(html): remove temporary fullscreen test code from play button
Clean up development artifacts:
- Remove double-click event listener for fullscreen testing
- Remove temporary mediaStore reference and console logging
- Simplify handleEvent to only handle click for play/pause
- Restore play button to single responsibility (playback control only)

Play button now focuses solely on play/pause functionality while
fullscreen control is handled by dedicated fullscreen button.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-12 08:06:08 -07:00
465342e431 feat(html): integrate fullscreen button into control bar and improve container lifecycle
Complete fullscreen button integration:
- Add fullscreen button to media-skin-default control bar as rightmost control
- Icon styling follows play/pause pattern with proper state-based visibility
- Container state owner lifecycle management in media-container component
- Component factory passes mediaStore reference to support advanced integrations

Control bar layout: Play → Time → Mute → Volume → Fullscreen
Icons change appropriately based on [data-fullscreen] attribute state.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-12 08:06:08 -07:00
7d819dfcd9 feat(react): add fullscreen button component
Implement React fullscreen button with native React patterns:
- useFullscreenButtonState hook for media store integration
- useFullscreenButtonProps hook for element attribute management
- renderFullscreenButton function for button rendering
- Connected component via toConnectedComponent factory
- Explicit enter/exit methods matching HTML implementation
- Proper accessibility and data attributes

Provides consistent fullscreen functionality across HTML and React
platforms using shared state definition from media-store.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-12 08:06:08 -07:00
63a340213f feat(html): add fullscreen button component and icons
Implement HTML fullscreen button following established patterns:
- MediaFullscreenButton web component with hook-style architecture
- HTML icon components: MediaFullscreenEnterIcon, MediaFullscreenExitIcon
- State management via useFullscreenButtonState hook
- Props handling via useFullscreenButtonProps hook
- Explicit enter/exit fullscreen methods (no toggle)
- Proper accessibility with aria-label and data-tooltip

Components integrate seamlessly with existing HTML component architecture
and provide foundation for control bar integration.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-12 08:06:08 -07:00