7675c53e16
Removed aria ( #4430 )
...
* fixed-aria
* removed-aria
* fix(js): linter error
---------
Co-authored-by: Gabe Kangas <gabek@real-ity.com>
2025-07-22 12:32:07 -07:00
59b905649e
Add pluralization support to Translation component ( #4441 )
...
* Initial plan
* Add pluralization support to Translation component with comprehensive tests
Co-authored-by: gabek <414923+gabek@users.noreply.github.com>
* Javascript formatting autofixes
* Update web/tests/translation.test.tsx
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update web/components/ui/Translation/Translation.tsx
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* fix: linter warning
* Simplify pluralization logic: use original key for plural, only _one for singular
Co-authored-by: gabek <414923+gabek@users.noreply.github.com>
* feat(i18n): fix support for nested namespace string and key extraction
* chore: update extracted translations
* fix(i18n): fix linter warnings in extraction script
* Update web/scripts/i18n-extract.js
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* feat(i18n): sort translation keys
* fix(i18n): fix linter warnings
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: gabek <414923+gabek@users.noreply.github.com>
Co-authored-by: Owncast <owncast@owncast.online>
Co-authored-by: Gabe Kangas <gabek@real-ity.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-13 17:34:06 -07:00
29b5100114
Create custom Translation component for better i18n handling ( #4431 )
...
* Initial plan
* Implement Translation component with Storybook stories
Co-authored-by: gabek <414923+gabek@users.noreply.github.com>
* Add Jest test for Translation component and demonstrate ?lang=de functionality
Co-authored-by: gabek <414923+gabek@users.noreply.github.com>
* Javascript formatting autofixes
* Create centralized type-safe localization system
Co-authored-by: gabek <414923+gabek@users.noreply.github.com>
* Add @testing-library/react to Translation component tests
Co-authored-by: gabek <414923+gabek@users.noreply.github.com>
* Fix code formatting errors with prettier and eslint
Co-authored-by: gabek <414923+gabek@users.noreply.github.com>
* Revert "Fix code formatting errors with prettier and eslint"
Co-authored-by: gabek <414923+gabek@users.noreply.github.com>
* fix(js): eslinter errors
* fix(js): unused code warnings
* fix(js): fix additional warnings
* Update Emoji admin page to use new Translation component
Co-authored-by: gabek <414923+gabek@users.noreply.github.com>
* Organize localization keys by logical sections (Frontend, Admin, Common, Testing)
Co-authored-by: gabek <414923+gabek@users.noreply.github.com>
* Organize localization keys by TypeScript namespaces
Co-authored-by: gabek <414923+gabek@users.noreply.github.com>
* Javascript formatting autofixes
* feat(js): add support for default translated text
* chore: add default lang translations on commit
* fix(js): unused code warnings
* Update OfflineBanner component to use new Translation component
Co-authored-by: gabek <414923+gabek@users.noreply.github.com>
* fix(js): fix localization extraction job
* chore(js): remove ts-node cli
* fix(css): fix css warning
* feat(js): add some additional translation strings via component
* chore: update extracted translations
* test: add tests for Translation component defaultText and fallback behavior
Co-authored-by: gabek <414923+gabek@users.noreply.github.com>
* chore: update extracted translations
* Javascript formatting autofixes
* chore: call out new Translation component
* fix: linter warning
* chore: updated instructions
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: gabek <414923+gabek@users.noreply.github.com>
Co-authored-by: Owncast <owncast@owncast.online>
Co-authored-by: Gabe Kangas <gabek@real-ity.com>
2025-07-13 02:21:46 -07:00
75a8819188
fix(web): add missing space in footer
2025-05-03 11:16:16 -07:00
07d4ce0a52
Increase font sizes on offline embed page ( #4246 )
2025-03-10 20:17:06 -07:00
849c4e85b0
Removes trailing whitespace causing web hydration errors ( #4208 )
2025-02-14 22:49:08 -08:00
f1ca5f9549
Update follower cards to have better responsive design ( #4198 )
...
* change a follower's name to be very long
* Add more media query and make the entire row match the tallest card
* fix lint in followerCollection file
* make media queries easier to read
2025-02-12 20:46:54 -08:00
9be8fa56c2
Add background color and title attribute to social images ( #4192 )
...
* Make social links wrap
* Add background to social links
* add title to social link
* fix lint attempt
* css lint fix attempt
* scss prettier
---------
Co-authored-by: Gabe Kangas <gabek@real-ity.com>
2025-02-07 18:56:24 -08:00
dd7a0ec081
fix(storybook): remove the storybook params causing render errors
2025-02-06 18:44:39 -08:00
47857e283e
fix(web): improve sizing and spacing of offline embed. Closes #4133
2025-01-17 15:40:06 -08:00
2e8e61309a
Remove use of default props ( #4118 )
...
* refactor: replace defaultProps with function parameters in Modal, Statusbar, ChatContainer, and CrossfadeImage components
* New commit for Default properties of React components after syncing fork and rebasing
* fix: fix linter warning
---------
Co-authored-by: swarup <swarupnarkhede999@gmail.com>
2025-01-15 16:12:54 -08:00
d77b80a94a
fix(storybook): fix another story not rendering with i18n
2025-01-14 21:27:21 -08:00
70282761d3
fix(storybook): fix storybook rendering with i18n library
2025-01-14 21:19:23 -08:00
cb387d88be
Initial localization work ( #3980 )
...
* First pass at configuring localization
* Add CI job for translations
* Update CI job
* Update default value
* Update parser config
* Update defaults again
* try to fix the multiple parsing of a file
* Update crowdlin config
* Update configs
* New Crowdin translations by GitHub Action (#3448 )
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
* Point to updated translated files
* Tooltip i18n
* Run translation job when web components are updated
* Commit updated translations
* Translations update (#3453 )
* Update source file strings.json
Updated translations
* New translations strings.json (French)
Updated translations
* New translations strings.json (Spanish)
Updated translations
* New translations strings.json (German)
Updated translations
* New translations strings.json (English, United States)
Updated translations
* Commit updated translations
* New Crowdin translations by GitHub Action (#3452 )
Co-authored-by: Owncast <owncast@owncast.online>
* chore(deps): update to next config to address build errors
* New Crowdin translations by GitHub Action (#3455 )
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
* Translations update (#3456 )
* New translations strings.json (Arabic)
Updated translations
* New translations strings.json (German)
Updated translations
* New translations strings.json (Greek)
Updated translations
* New translations strings.json (Irish)
Updated translations
* New translations strings.json (Italian)
Updated translations
* New translations strings.json (Japanese)
Updated translations
* New translations strings.json (Korean)
Updated translations
* New translations strings.json (Dutch)
Updated translations
* New translations strings.json (Norwegian)
Updated translations
* New translations strings.json (Punjabi)
Updated translations
* New translations strings.json (Russian)
Updated translations
* New translations strings.json (Swedish)
Updated translations
* New translations strings.json (Chinese Traditional)
Updated translations
* New translations strings.json (Vietnamese)
Updated translations
* New translations strings.json (Bengali)
Updated translations
* New translations strings.json (Thai)
Updated translations
* New translations strings.json (Croatian)
Updated translations
* New translations strings.json (Hindi)
Updated translations
* New translations strings.json (Malay)
Updated translations
* New Crowdin translations by GitHub Action (#3457 )
* New translations strings.json (Arabic)
Updated translations
* New translations strings.json (German)
Updated translations
* New translations strings.json (Greek)
Updated translations
* New translations strings.json (Irish)
Updated translations
* New translations strings.json (Italian)
Updated translations
* New translations strings.json (Japanese)
Updated translations
* New translations strings.json (Korean)
Updated translations
* New translations strings.json (Dutch)
Updated translations
* New translations strings.json (Norwegian)
Updated translations
* New translations strings.json (Punjabi)
Updated translations
* New translations strings.json (Russian)
Updated translations
* New translations strings.json (Swedish)
Updated translations
* New translations strings.json (Chinese Traditional)
Updated translations
* New translations strings.json (Vietnamese)
Updated translations
* New translations strings.json (Bengali)
Updated translations
* New translations strings.json (Thai)
Updated translations
* New translations strings.json (Croatian)
Updated translations
* New translations strings.json (Hindi)
Updated translations
* New translations strings.json (Malay)
Updated translations
* New Crowdin translations by GitHub Action
---------
Co-authored-by: Gabe Kangas <gabek@real-ity.com>
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
* Commit updated API documentation
* Update translations job
* New Crowdin translations by GitHub Action (#3698 )
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
* Update Crowdin configuration file
* Translations update (#3700 )
* New translations strings.json (French)
Updated translations
* New translations strings.json (Italian)
Updated translations
* Translations update (#3699 )
* New translations strings.json (French)
Updated translations
* New translations strings.json (Spanish)
Updated translations
* New translations strings.json (Italian)
Updated translations
* New translations strings.json (Japanese)
Updated translations
* New translations strings.json (Polish)
Updated translations
* New translations strings.json (Russian)
Updated translations
* New translations strings.json (Portuguese, Brazilian)
Updated translations
* Commit updated API documentation
---------
Co-authored-by: Owncast <owncast@owncast.online>
* New Crowdin translations by GitHub Action (#3701 )
* New translations strings.json (French)
Updated translations
* New translations strings.json (Spanish)
Updated translations
* New translations strings.json (Italian)
Updated translations
* New translations strings.json (Japanese)
Updated translations
* New translations strings.json (Polish)
Updated translations
* New translations strings.json (Russian)
Updated translations
* New translations strings.json (Portuguese, Brazilian)
Updated translations
* New Crowdin translations by GitHub Action
---------
Co-authored-by: Gabe Kangas <gabek@real-ity.com>
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
* Draft: Mark strings for translation. (#3458 )
* Mark strings for translation.
* Mark up strings for translation
* fix(web): fix linter warnings
---------
Co-authored-by: Le fractal <17422-fractal@users.noreply.framagit.org>
Co-authored-by: Gabe Kangas <gabek@real-ity.com>
* do not pull from cowdin via workflow
* Commit updated translations
* feat: add translations support to admin pages and components (#3977 )
* feat: add translations support to admin pages and components
Added translations support admin main page and its components, help
page, handware-info page. Added translations support for LogTable,
NewsFeed and StreamHealthOverview components.
* update package.json
* fix rendering issue
* Commit updated API documentation
---------
Co-authored-by: Owncast <owncast@owncast.online>
Co-authored-by: Gabe Kangas <gabek@real-ity.com>
* Offline banner i18n formatting (#3997 )
* Fix "Last live ago" string formatting with i18n interpolation
* Change some base translation jsons to use i18n interpolation
* Linting fix
* chore(js): ignore i18n pkgs in knip
* fix(test): fix browser ui test
* fix(js): remove unused var
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
Co-authored-by: Owncast <owncast@owncast.online>
Co-authored-by: taintedcypher <119351153+taintedcypher@users.noreply.github.com>
Co-authored-by: Le fractal <17422-fractal@users.noreply.framagit.org>
Co-authored-by: Sufyaan Khateeb <81009832+SufyaanKhateeb@users.noreply.github.com>
Co-authored-by: mahmed2000 <mahmad2000@protonmail.com>
2025-01-14 20:54:21 -08:00
87c7571d5c
embed screen style adjustments ( #4063 )
...
* restyle and relayout embed screen to account for smaller screen displays.
- address https://github.com/owncast/owncast/issues/3683 to address overflow issues
- address https://github.com/owncast/owncast/issues/4051 to move the name of the stream
* Javascript formatting autofixes
* clean up; restore package lock
* accommodate cases when there's no follow option; put follow form on one line, but wrap if need
* clean up
* separate out follow form into separate standalone component to be used in multiple places
* improve follow error styling; rm defaultProps for Modal to get rid of warning
* improve styling of follow form and components for legibility
* prettyify scss
* prettyify scss again
* one more time
* prettify ant file
* simplify layout, center everything
* just use gap
* tweak and lint
* lint, again
---------
Co-authored-by: Owncast <owncast@owncast.online>
2025-01-05 17:28:35 -08:00
6528633a13
fix skip link visibility and it moving logo upon focus ( #4078 )
...
* fix skip link visibility and it moving logo upon focus
* update color
2025-01-04 20:24:27 -08:00
8a1c05abf4
Make the error alert in OfflineEmbed closable ( #4062 )
2024-12-20 09:17:34 -08:00
e1a48909c8
fix(embed): fix follow button not showing up in offline embed. Closes #4053
2024-12-12 22:43:30 -08:00
d9ee7578d1
Rework stream duration string formatting for the status bar ( #3729 )
...
* Use date-fns formatDuration to generate stream duration string
* Remove unneeded pluralize function
2024-05-02 22:03:26 -07:00
9c3a4acb16
Change tag to self-closing since the linter complains otherwise ( #3690 )
...
Co-authored-by: Muaz Ahmad <mahmad2000@protonmail.com>
2024-04-13 13:51:43 -07:00
30d51d81ac
Allow react/no-danger
2024-04-12 10:20:06 -07:00
39078babbe
stream offline status embed updated ( #3684 )
2024-04-11 19:57:25 -07:00
805f96e271
fix(web): resolve the status bar duration string. Fixes #3652
2024-03-28 21:18:28 -07:00
70fdc2c642
fix(web): remove rounded corner in video embed
2024-03-07 17:00:32 -08:00
44eafe69ac
fix(deps): update dependency date-fns to v3 ( #3619 )
...
* fix(deps): update dependency date-fns to v3
* fix(deps): update usage of date-fns format
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Gabe Kangas <gabek@real-ity.com>
2024-03-06 21:13:13 -08:00
45436162bd
Hide chat button on mobile when chat is disabled ( #3616 )
2024-03-05 21:58:17 -08:00
5ce78fbad4
New offline embed ( #3599 )
...
* WIP
* feat(web): add new offline embed view. First step of #2917
* feat(web): support remote fediverse follow flow from embed
* feat(chore): add back offline video embed browser test
2024-02-25 12:52:32 -08:00
9db8a8699a
fix: a11y button lables. Closes #3418
2023-11-08 20:08:00 -08:00
4f078e1ee4
Migrated Storybook notation from CSF2 to CSF3 ( #3412 )
...
* Migrate web action-buttons directory to CSF3 notation
* Migrate web chat directory to CSF3 notation
* Migrate web common directory to CSF3 notation
* Migrate web layout directory to CSF3 notation
* Migrate web modals directory to CSF3 notation
* Migrate web ui directory to CSF3 notation
* Migrate web video directory to CSF3 notation
* Migrate web stories directory to CSF3 notation
2023-11-06 19:35:05 -08:00
b8ffe5be16
fix: prevent floating mobile action menu button ( #3383 )
...
the absolute positioned mobile action button was attached
to the body causing it to float during scrolling. Now, we wrap
the action buttons inside a relative div so that they are attached
to this div which prevents them from scrolling with page
Fixes #3271
Co-authored-by: Gabe Kangas <gabek@real-ity.com>
2023-10-24 21:58:36 -07:00
81c5908545
Set aria-live to off on span responsible for rendering the online message on a stream ( #3361 )
...
Co-authored-by: Aziz Rmadi <azizrmadi@Azizs-MacBook-Air.local>
2023-10-15 19:45:54 -07:00
6e3f5d3e9f
fix: fix positioning of mobile buttons menu. Closes #3216 ( #3217 )
2023-07-28 02:20:04 +00:00
16db7825c9
fix: external actions were assuming all actions are urls. Fixes #3213
2023-07-26 11:17:47 -07:00
f112f9813d
NotifyReminderPopup uses a custom Popover ( #3194 )
...
* NotifyReminderPopup uses a custom Popover
* fix Popover resizing in storybook
* Prettified Code!
---------
Co-authored-by: janWilejan <>
Co-authored-by: janWilejan <janWilejan@users.noreply.github.com>
2023-07-21 15:58:14 -07:00
777da508ed
fix(chat): fix chat not using the correct messages selector. ( #3180 )
...
* fix(chat): fix chat not using the correct messages selector. Closes #3166
* fix(chat): initial state was incorrect when hiding/showing messages
2023-07-17 20:48:59 +00:00
3f4887020d
Add resize handle to chat ( #3157 )
...
* add resize handle to chat
* Add chat resize functionality
* window resize only causes chat resize on desktop
* fix parseFloat invocation
* desktop is optional attribute of ChatContainer
---------
Co-authored-by: janWilejan <>
2023-07-10 23:00:28 -07:00
2d72935564
change chat from a sidebar to a column ( #3113 )
...
* change chat from a sidebar to a column
Using a 2-column layout prevents the chat scrollbar from overlapping the page
scrollbar. Also, it no longer needs to calculate extra padding for elements.
* remove unused Sidebar.tsx
* fix css for chat column
* re-center "Go to last message" button
* main content column always uses maximum height
* lint
* re-hide scrollbars in mainContent on chromium
* fix chat column width when input is over-full
* chat is only fixed-width in desktop
---------
Co-authored-by: janWilejan <>
2023-07-09 14:07:35 -07:00
dc2c46e2a4
fix(ui): fix for exception when chat is disabled. Closes #3138
2023-07-05 14:02:39 -07:00
65d52072d4
fix(chat): reposition chat loading spinner
2023-07-04 16:11:54 -07:00
00a5fb8dc8
fix: pass username and instance url to external actions. Fixes #3130
2023-07-04 12:14:21 -07:00
5876c7cfbb
fix(ui): simplify modal loading ui state
2023-07-04 12:11:27 -07:00
d973d1ac38
Update Sidebar.tsx ( #3119 )
2023-06-28 12:16:10 -07:00
b1a8f712c0
fix(embed): leave room for status bar in video embed. Closes #3104
2023-06-28 10:13:24 -07:00
6805a7c1db
feat(ui): more improvements to initial loading state
2023-06-28 07:53:06 -07:00
d60289c8bc
feat(ui): improve loading state
2023-06-27 22:52:23 -07:00
e7f464a10f
fix(ui): fix not being able to disable browser notifications. Closes #3115
2023-06-27 16:40:35 -07:00
1ea9a548e1
fix(ui): fallback to an empty array. Closes #3116
2023-06-27 16:19:16 -07:00
c563742856
Chat popup ( #3098 )
...
* add pop out chat button
* add button to close chat popup
* chat is hidden on main interface when a popup chat is open
* NameChangeEvent renames clients with the given id
if you have two or more owncast windows (or pop-out chats) open, changing your
name in 1 client is reflected in all clients.
* replace isChatVisible booleans with chatState enum
* update stories to use ChatState
* fix build tests
---------
Co-authored-by: janWilejan <>
2023-06-26 09:00:27 -07:00
ccb9b5d075
chore: run stylelint on our css files
2023-06-20 20:58:00 -07:00
8862d5d6ef
Remove unused default exports
2023-06-19 18:32:56 -07:00