@syra.fm/sdk 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +33 -4
- package/lib/commonjs/live/colors.js +54 -0
- package/lib/commonjs/live/colors.js.map +1 -0
- package/lib/commonjs/live/components/LiveRoomSheet.js +9 -8
- package/lib/commonjs/live/components/LiveRoomSheet.js.map +1 -1
- package/lib/commonjs/live/components/MiniRoomBar.js +3 -2
- package/lib/commonjs/live/components/MiniRoomBar.js.map +1 -1
- package/lib/commonjs/live/components/PodcastStreamPicker.js +1 -1
- package/lib/commonjs/live/components/RecordingsPanel.js +3 -2
- package/lib/commonjs/live/components/RecordingsPanel.js.map +1 -1
- package/lib/commonjs/live/components/RoomCard.js +110 -314
- package/lib/commonjs/live/components/RoomCard.js.map +1 -1
- package/lib/commonjs/live/index.js +31 -0
- package/lib/commonjs/live/index.js.map +1 -1
- package/lib/module/live/colors.js +49 -0
- package/lib/module/live/colors.js.map +1 -0
- package/lib/module/live/components/LiveRoomSheet.js +9 -8
- package/lib/module/live/components/LiveRoomSheet.js.map +1 -1
- package/lib/module/live/components/MiniRoomBar.js +3 -2
- package/lib/module/live/components/MiniRoomBar.js.map +1 -1
- package/lib/module/live/components/PodcastStreamPicker.js +1 -1
- package/lib/module/live/components/RecordingsPanel.js +3 -2
- package/lib/module/live/components/RecordingsPanel.js.map +1 -1
- package/lib/module/live/components/RoomCard.js +109 -314
- package/lib/module/live/components/RoomCard.js.map +1 -1
- package/lib/module/live/index.js +4 -0
- package/lib/module/live/index.js.map +1 -1
- package/lib/typescript/commonjs/live/colors.d.ts +35 -0
- package/lib/typescript/commonjs/live/colors.d.ts.map +1 -0
- package/lib/typescript/commonjs/live/components/LiveRoomSheet.d.ts.map +1 -1
- package/lib/typescript/commonjs/live/components/MiniRoomBar.d.ts.map +1 -1
- package/lib/typescript/commonjs/live/components/PodcastStreamPicker.d.ts +1 -1
- package/lib/typescript/commonjs/live/components/RecordingsPanel.d.ts.map +1 -1
- package/lib/typescript/commonjs/live/components/RoomCard.d.ts.map +1 -1
- package/lib/typescript/commonjs/live/index.d.ts +1 -0
- package/lib/typescript/commonjs/live/index.d.ts.map +1 -1
- package/lib/typescript/module/live/colors.d.ts +35 -0
- package/lib/typescript/module/live/colors.d.ts.map +1 -0
- package/lib/typescript/module/live/components/LiveRoomSheet.d.ts.map +1 -1
- package/lib/typescript/module/live/components/MiniRoomBar.d.ts.map +1 -1
- package/lib/typescript/module/live/components/PodcastStreamPicker.d.ts +1 -1
- package/lib/typescript/module/live/components/RecordingsPanel.d.ts.map +1 -1
- package/lib/typescript/module/live/components/RoomCard.d.ts.map +1 -1
- package/lib/typescript/module/live/index.d.ts +1 -0
- package/lib/typescript/module/live/index.d.ts.map +1 -1
- package/package.json +3 -13
- package/src/live/colors.ts +57 -0
- package/src/live/components/LiveRoomSheet.tsx +9 -8
- package/src/live/components/MiniRoomBar.tsx +3 -2
- package/src/live/components/PodcastStreamPicker.tsx +1 -1
- package/src/live/components/RecordingsPanel.tsx +3 -2
- package/src/live/components/RoomCard.tsx +104 -255
- package/src/live/index.ts +12 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Live-rooms brand colors.
|
|
3
|
+
*
|
|
4
|
+
* These are the ONLY colors the live UI is allowed to hardcode: they carry
|
|
5
|
+
* meaning that must survive every host theme (the live-indicator red reads as
|
|
6
|
+
* "on air" in light and dark mode alike, and the room-type accents distinguish
|
|
7
|
+
* Stage from Broadcast at a glance). Everything else in the live components
|
|
8
|
+
* comes from the host's design tokens — NativeWind classNames (`bg-background`,
|
|
9
|
+
* `text-foreground`, `text-muted-foreground`, `border-border`, …) or, where a
|
|
10
|
+
* prop needs a literal color value (vector icons), the host `useTheme()` from
|
|
11
|
+
* `LiveConfig`.
|
|
12
|
+
*
|
|
13
|
+
* Consuming apps should import these instead of re-declaring the hex values.
|
|
14
|
+
*/
|
|
15
|
+
/** The live-indicator red: LIVE badges, recording state, destructive live actions. */
|
|
16
|
+
export declare const LIVE_COLOR = "#FF4458";
|
|
17
|
+
/** {@link LIVE_COLOR} at ~10% alpha, for tinted surfaces behind live-colored content. */
|
|
18
|
+
export declare const LIVE_TINT_COLOR = "#FF44581A";
|
|
19
|
+
/** Foreground color for content sitting on {@link LIVE_COLOR}. */
|
|
20
|
+
export declare const LIVE_FOREGROUND_COLOR = "#FFFFFF";
|
|
21
|
+
/** Room kinds that get a type badge. `talk` is the default kind and carries none. */
|
|
22
|
+
export type BadgedRoomType = 'stage' | 'broadcast';
|
|
23
|
+
export interface RoomTypeMeta {
|
|
24
|
+
/** MaterialCommunityIcons glyph name. */
|
|
25
|
+
icon: 'account-voice' | 'broadcast';
|
|
26
|
+
label: string;
|
|
27
|
+
/** Accent color for the badge icon + label. */
|
|
28
|
+
color: string;
|
|
29
|
+
/** The accent at ~12% alpha, for the badge surface. */
|
|
30
|
+
tintColor: string;
|
|
31
|
+
}
|
|
32
|
+
export declare const ROOM_TYPE_META: Record<BadgedRoomType, RoomTypeMeta>;
|
|
33
|
+
/** Badge metadata for a room kind, or `null` when the kind carries no badge (`talk`/unset). */
|
|
34
|
+
export declare function getRoomTypeMeta(type: 'talk' | BadgedRoomType | undefined): RoomTypeMeta | null;
|
|
35
|
+
//# sourceMappingURL=colors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../../../../src/live/colors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,sFAAsF;AACtF,eAAO,MAAM,UAAU,YAAY,CAAC;AAEpC,yFAAyF;AACzF,eAAO,MAAM,eAAe,cAAc,CAAC;AAE3C,kEAAkE;AAClE,eAAO,MAAM,qBAAqB,YAAY,CAAC;AAE/C,qFAAqF;AACrF,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,WAAW,CAAC;AAEnD,MAAM,WAAW,YAAY;IAC3B,yCAAyC;IACzC,IAAI,EAAE,eAAe,GAAG,WAAW,CAAC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE,YAAY,CAa/D,CAAC;AAEF,+FAA+F;AAC/F,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,GAAG,YAAY,GAAG,IAAI,CAG9F"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LiveRoomSheet.d.ts","sourceRoot":"","sources":["../../../../../src/live/components/LiveRoomSheet.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoD,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"LiveRoomSheet.d.ts","sourceRoot":"","sources":["../../../../../src/live/components/LiveRoomSheet.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoD,MAAM,OAAO,CAAC;AAiLzE,UAAU,kBAAkB;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wBAAgB,aAAa,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,kBAAkB,qBAklBtG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MiniRoomBar.d.ts","sourceRoot":"","sources":["../../../../../src/live/components/MiniRoomBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"MiniRoomBar.d.ts","sourceRoot":"","sources":["../../../../../src/live/components/MiniRoomBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AAgBzC,UAAU,gBAAgB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,eAAO,MAAM,eAAe,KAAK,CAAC;AAElC,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,gBAAgB,EAChB,OAAO,EACP,QAAQ,EACR,kBAAsB,EACtB,QAAQ,EACR,YAAY,EACZ,OAAO,GACR,EAAE,gBAAgB,qBAiFlB"}
|
|
@@ -18,7 +18,7 @@ interface PodcastStreamPickerProps {
|
|
|
18
18
|
* Self-contained two-level podcast picker for the live-room stream setup. Level 1
|
|
19
19
|
* is a debounced Syra show search; tapping a show drills into Level 2, its episode
|
|
20
20
|
* list. Tapping an episode reports `(syraPodcastId, episodeId)` to the parent — the
|
|
21
|
-
* picker owns NO room/stream logic. Ships inside @syra.fm/
|
|
21
|
+
* picker owns NO room/stream logic. Ships inside @syra.fm/sdk, so it depends only
|
|
22
22
|
* on `useLiveConfig()` injection and never imports from a host app (`@/`).
|
|
23
23
|
*
|
|
24
24
|
* UX affordances (all backend-field-free): a host copyright disclaimer, an honest
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecordingsPanel.d.ts","sourceRoot":"","sources":["../../../../../src/live/components/RecordingsPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"RecordingsPanel.d.ts","sourceRoot":"","sources":["../../../../../src/live/components/RecordingsPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAOnD,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErD,UAAU,oBAAoB;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,KAAK,IAAI,CAAC;CAC9D;AAkBD,wBAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,oBAAoB,qBA2J/F"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RoomCard.d.ts","sourceRoot":"","sources":["../../../../../src/live/components/RoomCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,
|
|
1
|
+
{"version":3,"file":"RoomCard.d.ts","sourceRoot":"","sources":["../../../../../src/live/components/RoomCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,EAAgC,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAwDlF,UAAU,aAAa;IACrB,IAAI,EAAE;QACJ,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,WAAW,GAAG,MAAM,GAAG,OAAO,CAAC;QACvC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,WAAW,CAAC;QACtC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC/B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE;YAAE,aAAa,CAAC,EAAE,MAAM,CAAC;YAAC,WAAW,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;KAC1D,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAChC,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAID,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAkL5C,CAAC;AA6EF,eAAe,QAAQ,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export type { Room, RoomParticipant, Recording, House, HouseMember, Series, SeriesEpisode, Recurrence, RoomTemplate, RoomAttachment, RoomAttachmentData, ParticipantsUpdateData, MuteUpdateData, SpeakerRequestData, RecordingStateData, StreamInfo, UserEntity, LiveTheme, HttpRequestConfig, HttpClient, FileDownloadService, } from './types';
|
|
2
|
+
export { LIVE_COLOR, LIVE_TINT_COLOR, LIVE_FOREGROUND_COLOR, ROOM_TYPE_META, getRoomTypeMeta, type BadgedRoomType, type RoomTypeMeta, } from './colors';
|
|
2
3
|
export { ZRoom, ZRoomParticipant, ZHouse, ZHouseMember, ZSeries, ZRecurrence, ZRoomTemplate, ZSeriesEpisode, ZRoomAttachment, ZStartStreamResponse, ZGenerateStreamKeyResponse, ZStreamInfo, ZRecording, validateRoom, validateRooms, validateHouse, validateSeries, validateRecording, validateRecordings, } from './validation';
|
|
3
4
|
export { LiveConfigProvider, useLiveConfig, type LiveConfig, type LiveConfigInternal, } from './context/LiveConfigContext';
|
|
4
5
|
export { LiveRoomProvider, useLiveRoom } from './context/LiveRoomContext';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/live/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,IAAI,EACJ,eAAe,EACf,SAAS,EACT,KAAK,EACL,WAAW,EACX,MAAM,EACN,aAAa,EACb,UAAU,EACV,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,UAAU,EACV,UAAU,EACV,SAAS,EACT,iBAAiB,EACjB,UAAU,EACV,mBAAmB,GACpB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/live/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,IAAI,EACJ,eAAe,EACf,SAAS,EACT,KAAK,EACL,WAAW,EACX,MAAM,EACN,aAAa,EACb,UAAU,EACV,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,UAAU,EACV,UAAU,EACV,SAAS,EACT,iBAAiB,EACjB,UAAU,EACV,mBAAmB,GACpB,MAAM,SAAS,CAAC;AAIjB,OAAO,EACL,UAAU,EACV,eAAe,EACf,qBAAqB,EACrB,cAAc,EACd,eAAe,EACf,KAAK,cAAc,EACnB,KAAK,YAAY,GAClB,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,KAAK,EACL,gBAAgB,EAChB,MAAM,EACN,YAAY,EACZ,OAAO,EACP,WAAW,EACX,aAAa,EACb,cAAc,EACd,eAAe,EACf,oBAAoB,EACpB,0BAA0B,EAC1B,WAAW,EACX,UAAU,EACV,YAAY,EACZ,aAAa,EACb,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,KAAK,UAAU,EACf,KAAK,kBAAkB,GACxB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAG1E,OAAO,EACL,kBAAkB,EAClB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,eAAe,GACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EACL,kBAAkB,EAClB,KAAK,cAAc,GACpB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAG9D,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,KAAK,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAClH,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAG3D,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAChF,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Live-rooms brand colors.
|
|
3
|
+
*
|
|
4
|
+
* These are the ONLY colors the live UI is allowed to hardcode: they carry
|
|
5
|
+
* meaning that must survive every host theme (the live-indicator red reads as
|
|
6
|
+
* "on air" in light and dark mode alike, and the room-type accents distinguish
|
|
7
|
+
* Stage from Broadcast at a glance). Everything else in the live components
|
|
8
|
+
* comes from the host's design tokens — NativeWind classNames (`bg-background`,
|
|
9
|
+
* `text-foreground`, `text-muted-foreground`, `border-border`, …) or, where a
|
|
10
|
+
* prop needs a literal color value (vector icons), the host `useTheme()` from
|
|
11
|
+
* `LiveConfig`.
|
|
12
|
+
*
|
|
13
|
+
* Consuming apps should import these instead of re-declaring the hex values.
|
|
14
|
+
*/
|
|
15
|
+
/** The live-indicator red: LIVE badges, recording state, destructive live actions. */
|
|
16
|
+
export declare const LIVE_COLOR = "#FF4458";
|
|
17
|
+
/** {@link LIVE_COLOR} at ~10% alpha, for tinted surfaces behind live-colored content. */
|
|
18
|
+
export declare const LIVE_TINT_COLOR = "#FF44581A";
|
|
19
|
+
/** Foreground color for content sitting on {@link LIVE_COLOR}. */
|
|
20
|
+
export declare const LIVE_FOREGROUND_COLOR = "#FFFFFF";
|
|
21
|
+
/** Room kinds that get a type badge. `talk` is the default kind and carries none. */
|
|
22
|
+
export type BadgedRoomType = 'stage' | 'broadcast';
|
|
23
|
+
export interface RoomTypeMeta {
|
|
24
|
+
/** MaterialCommunityIcons glyph name. */
|
|
25
|
+
icon: 'account-voice' | 'broadcast';
|
|
26
|
+
label: string;
|
|
27
|
+
/** Accent color for the badge icon + label. */
|
|
28
|
+
color: string;
|
|
29
|
+
/** The accent at ~12% alpha, for the badge surface. */
|
|
30
|
+
tintColor: string;
|
|
31
|
+
}
|
|
32
|
+
export declare const ROOM_TYPE_META: Record<BadgedRoomType, RoomTypeMeta>;
|
|
33
|
+
/** Badge metadata for a room kind, or `null` when the kind carries no badge (`talk`/unset). */
|
|
34
|
+
export declare function getRoomTypeMeta(type: 'talk' | BadgedRoomType | undefined): RoomTypeMeta | null;
|
|
35
|
+
//# sourceMappingURL=colors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../../../../src/live/colors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,sFAAsF;AACtF,eAAO,MAAM,UAAU,YAAY,CAAC;AAEpC,yFAAyF;AACzF,eAAO,MAAM,eAAe,cAAc,CAAC;AAE3C,kEAAkE;AAClE,eAAO,MAAM,qBAAqB,YAAY,CAAC;AAE/C,qFAAqF;AACrF,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,WAAW,CAAC;AAEnD,MAAM,WAAW,YAAY;IAC3B,yCAAyC;IACzC,IAAI,EAAE,eAAe,GAAG,WAAW,CAAC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE,YAAY,CAa/D,CAAC;AAEF,+FAA+F;AAC/F,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,GAAG,YAAY,GAAG,IAAI,CAG9F"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LiveRoomSheet.d.ts","sourceRoot":"","sources":["../../../../../src/live/components/LiveRoomSheet.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoD,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"LiveRoomSheet.d.ts","sourceRoot":"","sources":["../../../../../src/live/components/LiveRoomSheet.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoD,MAAM,OAAO,CAAC;AAiLzE,UAAU,kBAAkB;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wBAAgB,aAAa,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,kBAAkB,qBAklBtG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MiniRoomBar.d.ts","sourceRoot":"","sources":["../../../../../src/live/components/MiniRoomBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"MiniRoomBar.d.ts","sourceRoot":"","sources":["../../../../../src/live/components/MiniRoomBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AAgBzC,UAAU,gBAAgB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,eAAO,MAAM,eAAe,KAAK,CAAC;AAElC,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,gBAAgB,EAChB,OAAO,EACP,QAAQ,EACR,kBAAsB,EACtB,QAAQ,EACR,YAAY,EACZ,OAAO,GACR,EAAE,gBAAgB,qBAiFlB"}
|
|
@@ -18,7 +18,7 @@ interface PodcastStreamPickerProps {
|
|
|
18
18
|
* Self-contained two-level podcast picker for the live-room stream setup. Level 1
|
|
19
19
|
* is a debounced Syra show search; tapping a show drills into Level 2, its episode
|
|
20
20
|
* list. Tapping an episode reports `(syraPodcastId, episodeId)` to the parent — the
|
|
21
|
-
* picker owns NO room/stream logic. Ships inside @syra.fm/
|
|
21
|
+
* picker owns NO room/stream logic. Ships inside @syra.fm/sdk, so it depends only
|
|
22
22
|
* on `useLiveConfig()` injection and never imports from a host app (`@/`).
|
|
23
23
|
*
|
|
24
24
|
* UX affordances (all backend-field-free): a host copyright disclaimer, an honest
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecordingsPanel.d.ts","sourceRoot":"","sources":["../../../../../src/live/components/RecordingsPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"RecordingsPanel.d.ts","sourceRoot":"","sources":["../../../../../src/live/components/RecordingsPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAOnD,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErD,UAAU,oBAAoB;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,KAAK,IAAI,CAAC;CAC9D;AAkBD,wBAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,oBAAoB,qBA2J/F"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RoomCard.d.ts","sourceRoot":"","sources":["../../../../../src/live/components/RoomCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,
|
|
1
|
+
{"version":3,"file":"RoomCard.d.ts","sourceRoot":"","sources":["../../../../../src/live/components/RoomCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,EAAgC,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAwDlF,UAAU,aAAa;IACrB,IAAI,EAAE;QACJ,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,WAAW,GAAG,MAAM,GAAG,OAAO,CAAC;QACvC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,WAAW,CAAC;QACtC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC/B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE;YAAE,aAAa,CAAC,EAAE,MAAM,CAAC;YAAC,WAAW,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;KAC1D,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAChC,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAID,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAkL5C,CAAC;AA6EF,eAAe,QAAQ,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export type { Room, RoomParticipant, Recording, House, HouseMember, Series, SeriesEpisode, Recurrence, RoomTemplate, RoomAttachment, RoomAttachmentData, ParticipantsUpdateData, MuteUpdateData, SpeakerRequestData, RecordingStateData, StreamInfo, UserEntity, LiveTheme, HttpRequestConfig, HttpClient, FileDownloadService, } from './types';
|
|
2
|
+
export { LIVE_COLOR, LIVE_TINT_COLOR, LIVE_FOREGROUND_COLOR, ROOM_TYPE_META, getRoomTypeMeta, type BadgedRoomType, type RoomTypeMeta, } from './colors';
|
|
2
3
|
export { ZRoom, ZRoomParticipant, ZHouse, ZHouseMember, ZSeries, ZRecurrence, ZRoomTemplate, ZSeriesEpisode, ZRoomAttachment, ZStartStreamResponse, ZGenerateStreamKeyResponse, ZStreamInfo, ZRecording, validateRoom, validateRooms, validateHouse, validateSeries, validateRecording, validateRecordings, } from './validation';
|
|
3
4
|
export { LiveConfigProvider, useLiveConfig, type LiveConfig, type LiveConfigInternal, } from './context/LiveConfigContext';
|
|
4
5
|
export { LiveRoomProvider, useLiveRoom } from './context/LiveRoomContext';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/live/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,IAAI,EACJ,eAAe,EACf,SAAS,EACT,KAAK,EACL,WAAW,EACX,MAAM,EACN,aAAa,EACb,UAAU,EACV,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,UAAU,EACV,UAAU,EACV,SAAS,EACT,iBAAiB,EACjB,UAAU,EACV,mBAAmB,GACpB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/live/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,IAAI,EACJ,eAAe,EACf,SAAS,EACT,KAAK,EACL,WAAW,EACX,MAAM,EACN,aAAa,EACb,UAAU,EACV,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,UAAU,EACV,UAAU,EACV,SAAS,EACT,iBAAiB,EACjB,UAAU,EACV,mBAAmB,GACpB,MAAM,SAAS,CAAC;AAIjB,OAAO,EACL,UAAU,EACV,eAAe,EACf,qBAAqB,EACrB,cAAc,EACd,eAAe,EACf,KAAK,cAAc,EACnB,KAAK,YAAY,GAClB,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,KAAK,EACL,gBAAgB,EAChB,MAAM,EACN,YAAY,EACZ,OAAO,EACP,WAAW,EACX,aAAa,EACb,cAAc,EACd,eAAe,EACf,oBAAoB,EACpB,0BAA0B,EAC1B,WAAW,EACX,UAAU,EACV,YAAY,EACZ,aAAa,EACb,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,KAAK,UAAU,EACf,KAAK,kBAAkB,GACxB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAG1E,OAAO,EACL,kBAAkB,EAClB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,eAAe,GACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EACL,kBAAkB,EAClB,KAAK,cAAc,GACpB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAG9D,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,KAAK,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAClH,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAG3D,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAChF,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@syra.fm/sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "Syra SDK — headless, isomorphic catalog client (Node/React-free, public reads + 30s previews) that also ships the Syra live-rooms engine (audio rooms over LiveKit) on React Native and web.",
|
|
5
5
|
"source": "src/index.ts",
|
|
6
6
|
"main": "lib/commonjs/index.js",
|
|
@@ -89,8 +89,7 @@
|
|
|
89
89
|
"react-native": "^0.85.3",
|
|
90
90
|
"react-native-reanimated": "^4.3.1",
|
|
91
91
|
"react-native-safe-area-context": "^5.7.0",
|
|
92
|
-
"@oxyhq/services": "^
|
|
93
|
-
"@oxyhq/core": "^5.2.1",
|
|
92
|
+
"@oxyhq/services": "^15.0.0",
|
|
94
93
|
"livekit-client": "^2.20.0",
|
|
95
94
|
"@livekit/react-native": "^2.11.1",
|
|
96
95
|
"expo-audio": "~56.0.12",
|
|
@@ -98,7 +97,6 @@
|
|
|
98
97
|
"socket.io-client": "^4.8.1",
|
|
99
98
|
"@expo/vector-icons": "^15.0.2",
|
|
100
99
|
"react-native-svg": "15.15.4",
|
|
101
|
-
"sonner-native": "^0.21.1",
|
|
102
100
|
"expo-blur": "~56.0.3"
|
|
103
101
|
},
|
|
104
102
|
"peerDependenciesMeta": {
|
|
@@ -117,9 +115,6 @@
|
|
|
117
115
|
"@oxyhq/services": {
|
|
118
116
|
"optional": true
|
|
119
117
|
},
|
|
120
|
-
"@oxyhq/core": {
|
|
121
|
-
"optional": true
|
|
122
|
-
},
|
|
123
118
|
"livekit-client": {
|
|
124
119
|
"optional": true
|
|
125
120
|
},
|
|
@@ -141,9 +136,6 @@
|
|
|
141
136
|
"react-native-svg": {
|
|
142
137
|
"optional": true
|
|
143
138
|
},
|
|
144
|
-
"sonner-native": {
|
|
145
|
-
"optional": true
|
|
146
|
-
},
|
|
147
139
|
"expo-blur": {
|
|
148
140
|
"optional": true
|
|
149
141
|
}
|
|
@@ -158,8 +150,7 @@
|
|
|
158
150
|
"react-native": "^0.85.3",
|
|
159
151
|
"react-native-reanimated": "^4.3.1",
|
|
160
152
|
"react-native-safe-area-context": "^5.7.0",
|
|
161
|
-
"@oxyhq/services": "^
|
|
162
|
-
"@oxyhq/core": "^5.2.1",
|
|
153
|
+
"@oxyhq/services": "^15.0.0",
|
|
163
154
|
"livekit-client": "^2.20.0",
|
|
164
155
|
"@livekit/react-native": "^2.11.1",
|
|
165
156
|
"expo-audio": "~56.0.12",
|
|
@@ -167,7 +158,6 @@
|
|
|
167
158
|
"socket.io-client": "^4.8.1",
|
|
168
159
|
"@expo/vector-icons": "^15.0.2",
|
|
169
160
|
"react-native-svg": "15.15.4",
|
|
170
|
-
"sonner-native": "^0.21.1",
|
|
171
161
|
"expo-blur": "~56.0.3"
|
|
172
162
|
}
|
|
173
163
|
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Live-rooms brand colors.
|
|
3
|
+
*
|
|
4
|
+
* These are the ONLY colors the live UI is allowed to hardcode: they carry
|
|
5
|
+
* meaning that must survive every host theme (the live-indicator red reads as
|
|
6
|
+
* "on air" in light and dark mode alike, and the room-type accents distinguish
|
|
7
|
+
* Stage from Broadcast at a glance). Everything else in the live components
|
|
8
|
+
* comes from the host's design tokens — NativeWind classNames (`bg-background`,
|
|
9
|
+
* `text-foreground`, `text-muted-foreground`, `border-border`, …) or, where a
|
|
10
|
+
* prop needs a literal color value (vector icons), the host `useTheme()` from
|
|
11
|
+
* `LiveConfig`.
|
|
12
|
+
*
|
|
13
|
+
* Consuming apps should import these instead of re-declaring the hex values.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
/** The live-indicator red: LIVE badges, recording state, destructive live actions. */
|
|
17
|
+
export const LIVE_COLOR = '#FF4458';
|
|
18
|
+
|
|
19
|
+
/** {@link LIVE_COLOR} at ~10% alpha, for tinted surfaces behind live-colored content. */
|
|
20
|
+
export const LIVE_TINT_COLOR = '#FF44581A';
|
|
21
|
+
|
|
22
|
+
/** Foreground color for content sitting on {@link LIVE_COLOR}. */
|
|
23
|
+
export const LIVE_FOREGROUND_COLOR = '#FFFFFF';
|
|
24
|
+
|
|
25
|
+
/** Room kinds that get a type badge. `talk` is the default kind and carries none. */
|
|
26
|
+
export type BadgedRoomType = 'stage' | 'broadcast';
|
|
27
|
+
|
|
28
|
+
export interface RoomTypeMeta {
|
|
29
|
+
/** MaterialCommunityIcons glyph name. */
|
|
30
|
+
icon: 'account-voice' | 'broadcast';
|
|
31
|
+
label: string;
|
|
32
|
+
/** Accent color for the badge icon + label. */
|
|
33
|
+
color: string;
|
|
34
|
+
/** The accent at ~12% alpha, for the badge surface. */
|
|
35
|
+
tintColor: string;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export const ROOM_TYPE_META: Record<BadgedRoomType, RoomTypeMeta> = {
|
|
39
|
+
stage: {
|
|
40
|
+
icon: 'account-voice',
|
|
41
|
+
label: 'Stage',
|
|
42
|
+
color: '#3B82F6',
|
|
43
|
+
tintColor: '#3B82F620',
|
|
44
|
+
},
|
|
45
|
+
broadcast: {
|
|
46
|
+
icon: 'broadcast',
|
|
47
|
+
label: 'Broadcast',
|
|
48
|
+
color: '#FF6B35',
|
|
49
|
+
tintColor: '#FF6B3520',
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
/** Badge metadata for a room kind, or `null` when the kind carries no badge (`talk`/unset). */
|
|
54
|
+
export function getRoomTypeMeta(type: 'talk' | BadgedRoomType | undefined): RoomTypeMeta | null {
|
|
55
|
+
if (type === 'stage' || type === 'broadcast') return ROOM_TYPE_META[type];
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
@@ -22,6 +22,7 @@ import { useRoomConnection } from '../hooks/useRoomConnection';
|
|
|
22
22
|
import { useRoomAudio } from '../hooks/useRoomAudio';
|
|
23
23
|
import { useActiveSpeakers } from '../hooks/useActiveSpeakers';
|
|
24
24
|
import { useRoomUsers, getDisplayName, getAvatarUrl } from '../hooks/useRoomUsers';
|
|
25
|
+
import { LIVE_COLOR, LIVE_TINT_COLOR } from '../colors';
|
|
25
26
|
import type { RoomParticipant, Room, StreamInfo, UserEntity, LiveTheme } from '../types';
|
|
26
27
|
|
|
27
28
|
type ActivePanel = null | 'stream' | 'insights' | 'settings';
|
|
@@ -100,7 +101,7 @@ const SpeakerTile = ({
|
|
|
100
101
|
>
|
|
101
102
|
<AvatarComponent size={64} source={avatarUri} shape="squircle" />
|
|
102
103
|
{participant.isMuted && (
|
|
103
|
-
<View style={[styles.muteIndicator, { backgroundColor:
|
|
104
|
+
<View style={[styles.muteIndicator, { backgroundColor: LIVE_COLOR }]}>
|
|
104
105
|
<MaterialCommunityIcons name="microphone-off" size={12} color="#FFFFFF" />
|
|
105
106
|
</View>
|
|
106
107
|
)}
|
|
@@ -475,7 +476,7 @@ export function LiveRoomSheet({ roomId, isExpanded, onCollapse, onExpand, onLeav
|
|
|
475
476
|
<TouchableOpacity
|
|
476
477
|
onPress={isRecording ? handleStopRecording : handleStartRecording}
|
|
477
478
|
style={[styles.recordingToggle, {
|
|
478
|
-
backgroundColor: isRecording ?
|
|
479
|
+
backgroundColor: isRecording ? LIVE_COLOR : theme.colors.primary,
|
|
479
480
|
}]}
|
|
480
481
|
>
|
|
481
482
|
<Text style={{ color: '#FFFFFF', fontWeight: '600', fontSize: 13 }}>
|
|
@@ -488,9 +489,9 @@ export function LiveRoomSheet({ roomId, isExpanded, onCollapse, onExpand, onLeav
|
|
|
488
489
|
style={styles.settingsItem}
|
|
489
490
|
onPress={handleDeleteRoom}
|
|
490
491
|
>
|
|
491
|
-
<MaterialCommunityIcons name="delete-outline" size={22} color=
|
|
492
|
+
<MaterialCommunityIcons name="delete-outline" size={22} color={LIVE_COLOR} />
|
|
492
493
|
<View style={styles.settingsItemText}>
|
|
493
|
-
<Text style={[styles.settingsItemTitle, { color:
|
|
494
|
+
<Text style={[styles.settingsItemTitle, { color: LIVE_COLOR }]}>Delete Room</Text>
|
|
494
495
|
<Text style={[styles.settingsItemDesc, { color: theme.colors.textSecondary }]}>
|
|
495
496
|
Permanently remove this room
|
|
496
497
|
</Text>
|
|
@@ -510,7 +511,7 @@ export function LiveRoomSheet({ roomId, isExpanded, onCollapse, onExpand, onLeav
|
|
|
510
511
|
|
|
511
512
|
<View style={styles.headerCenter}>
|
|
512
513
|
{isRoomLive ? (
|
|
513
|
-
<View style={[styles.liveBadge, { backgroundColor:
|
|
514
|
+
<View style={[styles.liveBadge, { backgroundColor: LIVE_COLOR }]}>
|
|
514
515
|
<AnimatedPulse />
|
|
515
516
|
<Text style={styles.liveText}>LIVE</Text>
|
|
516
517
|
</View>
|
|
@@ -766,7 +767,7 @@ export function LiveRoomSheet({ roomId, isExpanded, onCollapse, onExpand, onLeav
|
|
|
766
767
|
)}
|
|
767
768
|
|
|
768
769
|
<TouchableOpacity style={styles.controlItem} onPress={handleLeave}>
|
|
769
|
-
<View style={[styles.leaveCircle, { backgroundColor:
|
|
770
|
+
<View style={[styles.leaveCircle, { backgroundColor: LIVE_COLOR }]}>
|
|
770
771
|
<MaterialCommunityIcons name="exit-run" size={24} color="#FFFFFF" />
|
|
771
772
|
</View>
|
|
772
773
|
<Text style={[styles.controlLabel, { color: theme.colors.textSecondary }]}>
|
|
@@ -810,9 +811,9 @@ const styles = StyleSheet.create({
|
|
|
810
811
|
paddingHorizontal: 16,
|
|
811
812
|
paddingVertical: 6,
|
|
812
813
|
borderRadius: 16,
|
|
813
|
-
backgroundColor:
|
|
814
|
+
backgroundColor: LIVE_TINT_COLOR,
|
|
814
815
|
},
|
|
815
|
-
endButtonText: { fontSize: 15, fontWeight: '600', color:
|
|
816
|
+
endButtonText: { fontSize: 15, fontWeight: '600', color: LIVE_COLOR },
|
|
816
817
|
roomInfo: { paddingHorizontal: 16, paddingTop: 16, paddingBottom: 8 },
|
|
817
818
|
roomTitle: { fontSize: 32, fontWeight: 'bold', lineHeight: 38 },
|
|
818
819
|
roomTopic: { fontSize: 14, marginTop: 4 },
|
|
@@ -12,6 +12,7 @@ import Animated, {
|
|
|
12
12
|
} from 'react-native-reanimated';
|
|
13
13
|
|
|
14
14
|
import { useLiveConfig } from '../context/LiveConfigContext';
|
|
15
|
+
import { LIVE_COLOR } from '../colors';
|
|
15
16
|
|
|
16
17
|
interface MiniRoomBarProps {
|
|
17
18
|
title: string;
|
|
@@ -108,7 +109,7 @@ export function MiniRoomBar({
|
|
|
108
109
|
|
|
109
110
|
<TouchableOpacity
|
|
110
111
|
onPress={onLeave}
|
|
111
|
-
style={[styles.controlButton, { backgroundColor:
|
|
112
|
+
style={[styles.controlButton, { backgroundColor: LIVE_COLOR }]}
|
|
112
113
|
hitSlop={{ top: 8, bottom: 8, left: 8, right: 8 }}
|
|
113
114
|
>
|
|
114
115
|
<MaterialCommunityIcons name="close" size={16} color="#FFFFFF" />
|
|
@@ -130,7 +131,7 @@ const styles = StyleSheet.create({
|
|
|
130
131
|
width: 28,
|
|
131
132
|
height: 28,
|
|
132
133
|
borderRadius: 14,
|
|
133
|
-
backgroundColor:
|
|
134
|
+
backgroundColor: LIVE_COLOR,
|
|
134
135
|
alignItems: 'center',
|
|
135
136
|
justifyContent: 'center',
|
|
136
137
|
},
|
|
@@ -225,7 +225,7 @@ const ErrorState = memo(function ErrorState({
|
|
|
225
225
|
* Self-contained two-level podcast picker for the live-room stream setup. Level 1
|
|
226
226
|
* is a debounced Syra show search; tapping a show drills into Level 2, its episode
|
|
227
227
|
* list. Tapping an episode reports `(syraPodcastId, episodeId)` to the parent — the
|
|
228
|
-
* picker owns NO room/stream logic. Ships inside @syra.fm/
|
|
228
|
+
* picker owns NO room/stream logic. Ships inside @syra.fm/sdk, so it depends only
|
|
229
229
|
* on `useLiveConfig()` injection and never imports from a host app (`@/`).
|
|
230
230
|
*
|
|
231
231
|
* UX affordances (all backend-field-free): a host copyright disclaimer, an honest
|
|
@@ -4,6 +4,7 @@ import MaterialCommunityIcons from '@expo/vector-icons/MaterialCommunityIcons';
|
|
|
4
4
|
|
|
5
5
|
import { PanelHeader } from './PanelHeader';
|
|
6
6
|
import { useLiveConfig } from '../context/LiveConfigContext';
|
|
7
|
+
import { LIVE_COLOR } from '../colors';
|
|
7
8
|
import type { Recording, LiveTheme } from '../types';
|
|
8
9
|
|
|
9
10
|
interface RecordingsPanelProps {
|
|
@@ -174,8 +175,8 @@ export function RecordingsPanel({ roomId, isHost, theme, onClose, onPlay }: Reco
|
|
|
174
175
|
style={styles.actionButton}
|
|
175
176
|
onPress={() => handleDelete(recording)}
|
|
176
177
|
>
|
|
177
|
-
<MaterialCommunityIcons name="delete-outline" size={16} color=
|
|
178
|
-
<Text style={[styles.actionText, { color:
|
|
178
|
+
<MaterialCommunityIcons name="delete-outline" size={16} color={LIVE_COLOR} />
|
|
179
|
+
<Text style={[styles.actionText, { color: LIVE_COLOR }]}>Delete</Text>
|
|
179
180
|
</TouchableOpacity>
|
|
180
181
|
</View>
|
|
181
182
|
)}
|