diff --git a/app.config.js b/app.config.js
index 583fe16..1d46967 100644
--- a/app.config.js
+++ b/app.config.js
@@ -1,3 +1,6 @@
+const motionUsageDescription =
+ 'Soundlog가 이동 중인 여행의 위치 기록을 안정적으로 제공하기 위해 기기의 동작 상태에 접근할 수 있습니다.';
+
const baseConfig = {
name: 'Soundlog',
slug: 'soundlog',
@@ -16,6 +19,7 @@ const baseConfig = {
'Soundlog가 저장된 로그인 정보를 안전하게 보호하기 위해 Face ID를 사용할 수 있습니다.',
NSLocationWhenInUseUsageDescription:
'Soundlog가 현재 장소에 맞는 음악을 추천하고 여행 순간의 위치를 기록하기 위해 위치 권한이 필요합니다.',
+ NSMotionUsageDescription: motionUsageDescription,
NSPhotoLibraryAddUsageDescription:
'Soundlog가 리캡 이미지를 사진 보관함에 저장하기 위해 권한이 필요합니다.',
NSPhotoLibraryUsageDescription:
@@ -139,7 +143,7 @@ const baseConfig = {
'Soundlog가 현재 장소에 맞는 음악을 추천하고 여행 순간의 위치를 기록하기 위해 위치 권한이 필요합니다.',
locationAlwaysAndWhenInUsePermission: false,
locationAlwaysPermission: false,
- motionUsagePermission: false,
+ motionUsagePermission: motionUsageDescription,
isIosBackgroundLocationEnabled: false,
isAndroidBackgroundLocationEnabled: false,
isAndroidForegroundServiceEnabled: false,
diff --git a/app/auth/login.tsx b/app/auth/login.tsx
index 726175c..2135071 100644
--- a/app/auth/login.tsx
+++ b/app/auth/login.tsx
@@ -247,7 +247,7 @@ export default function LoginScreen() {
}`}
>
{hasAcceptedRequiredTerms ? (
-
+
) : null}
diff --git a/docs/deployment/IOS_PHYSICAL_DEVICE_TESTING.md b/docs/deployment/IOS_PHYSICAL_DEVICE_TESTING.md
index 84c9499..7fd2dd8 100644
--- a/docs/deployment/IOS_PHYSICAL_DEVICE_TESTING.md
+++ b/docs/deployment/IOS_PHYSICAL_DEVICE_TESTING.md
@@ -183,7 +183,7 @@ v1.0은 iPhone 전용으로 제출한다. iPad 스크린샷 자산과 iPad 실
### 출시 권한 및 개인정보 선언
-production 설정은 사진 기록에 필요한 카메라와 사진 보관함, 현재 장소와 여행 기록에 필요한 `When In Use` 위치 권한만 요청한다. 녹음, 항상 위치, 모션 활동, iOS/Android 백그라운드 위치 권한은 사용하지 않는다.
+production 설정은 사진 기록에 필요한 카메라와 사진 보관함, 현재 장소와 여행 기록에 필요한 `When In Use` 위치 권한만 직접 요청한다. 녹음, 항상 위치, 모션 활동, iOS와 Android의 백그라운드 위치 권한은 앱 기능에서 사용하지 않는다. 다만 ExpoLocation 바이너리가 CoreMotion API를 포함하므로 Apple 업로드 검사를 통과하기 위한 `NSMotionUsageDescription` 문구는 `Info.plist`에 유지한다. 이 문구만으로 사용자에게 모션 권한을 요청하지는 않는다.
`ios.privacyManifests`에는 계정 이름·이메일·사용자 ID, 정확한 위치, 사진 또는 비디오, 사용자 콘텐츠를 앱 기능 목적으로 선언하고, 추천·저장·공유 등 앱 내 상호작용은 분석 목적으로 선언한다. 모든 선언은 계정과 연결되지만 추적에는 사용하지 않는다. App Store Connect의 App Privacy 응답도 이 설정 및 실제 서버 처리와 동일하게 입력한다.
diff --git a/scripts/check-store-release.js b/scripts/check-store-release.js
index 561be3d..4049c03 100644
--- a/scripts/check-store-release.js
+++ b/scripts/check-store-release.js
@@ -204,10 +204,21 @@ function assertRuntimePermissionPlugins(config) {
addError('expo-location must retain an iOS When In Use location permission message.');
}
+ if (!config.ios?.infoPlist?.NSMotionUsageDescription?.trim()) {
+ addError(
+ 'Expo config must include NSMotionUsageDescription because ExpoLocation links CoreMotion APIs.',
+ );
+ }
+
+ if (location.motionUsagePermission !== config.ios?.infoPlist?.NSMotionUsageDescription) {
+ addError(
+ 'expo-location motionUsagePermission must match the iOS NSMotionUsageDescription.',
+ );
+ }
+
[
'locationAlwaysAndWhenInUsePermission',
'locationAlwaysPermission',
- 'motionUsagePermission',
'isIosBackgroundLocationEnabled',
'isAndroidBackgroundLocationEnabled',
'isAndroidForegroundServiceEnabled',
@@ -297,7 +308,6 @@ function assertNativeIosPlist() {
'NSLocationAlwaysUsageDescription',
'NSLocationAlwaysAndWhenInUseUsageDescription',
'NSMicrophoneUsageDescription',
- 'NSMotionUsageDescription',
];
forbiddenKeys.forEach((key) => {
@@ -306,6 +316,12 @@ function assertNativeIosPlist() {
}
});
+ if (!/NSMotionUsageDescription<\/key>\s*[^<]+<\/string>/.test(plist)) {
+ addError(
+ 'iOS native Info.plist must include a non-empty NSMotionUsageDescription because ExpoLocation links CoreMotion APIs.',
+ );
+ }
+
if (plist.includes('Expo Dev Launcher')) {
const projectPath = path.join(
projectRoot,
diff --git a/src/api/homeApi.ts b/src/api/homeApi.ts
index a9c20a7..e725c32 100644
--- a/src/api/homeApi.ts
+++ b/src/api/homeApi.ts
@@ -39,7 +39,7 @@ export const homeApi = {
const playlists = await requestApi('/v1/home/featured-playlists', {
query: {
lat: params?.location?.lat,
- limit: 10,
+ limit: 20,
lng: params?.location?.lng,
locationRecommendationEnabled: params?.locationRecommendationEnabled ?? false,
placeId: params?.place?.id,
diff --git a/src/components/AppText.tsx b/src/components/AppText.tsx
index 9517b5a..b1c56e5 100644
--- a/src/components/AppText.tsx
+++ b/src/components/AppText.tsx
@@ -1,5 +1,15 @@
-import { Text, TextProps } from 'react-native';
+import { StyleSheet, Text, TextProps } from 'react-native';
-export function AppText({ className = '', ...props }: TextProps & { className?: string }) {
- return ;
+const textColorClassPattern = /(?:^|\s)text-(?:\[#|(?:black|white|transparent)(?:\/\d+)?(?:\s|$)|(?:amber|blue|cyan|emerald|fuchsia|gray|green|indigo|lime|neutral|orange|pink|purple|red|rose|sky|slate|stone|teal|violet|yellow|zinc)-\d+(?:\/\d+)?(?:\s|$)|soundlog-[\w-]+(?:\/\d+)?(?:\s|$))/;
+
+export function AppText({
+ className = '',
+ style,
+ ...props
+}: TextProps & { className?: string }) {
+ const hasExplicitColor =
+ textColorClassPattern.test(className) || Boolean(StyleSheet.flatten(style)?.color);
+ const resolvedClassName = hasExplicitColor ? className : `text-white ${className}`.trim();
+
+ return ;
}
diff --git a/src/components/EmptyState.tsx b/src/components/EmptyState.tsx
index be674a6..3349183 100644
--- a/src/components/EmptyState.tsx
+++ b/src/components/EmptyState.tsx
@@ -22,7 +22,7 @@ export function EmptyState({ action, description, title }: EmptyStateProps) {
) : null}
{action ? (
- {action.label}
+ {action.label}
) : null}
diff --git a/src/components/MiniPlayer.tsx b/src/components/MiniPlayer.tsx
index 51b3778..c6ba305 100644
--- a/src/components/MiniPlayer.tsx
+++ b/src/components/MiniPlayer.tsx
@@ -500,8 +500,8 @@ export function MiniPlayer() {
className="h-12 flex-row items-center justify-center gap-2 rounded-full bg-white"
onPress={handleCaptureMoment}
>
-
-
+
+
이 곡으로 기록
diff --git a/src/components/dev/DevTestManager.tsx b/src/components/dev/DevTestManager.tsx
index 769fc66..b6060a4 100644
--- a/src/components/dev/DevTestManager.tsx
+++ b/src/components/dev/DevTestManager.tsx
@@ -129,7 +129,7 @@ function ManagerButton({
: destructive
? 'rgba(248,113,113,0.28)'
: 'rgba(255,255,255,0.12)';
- const color = active ? '#050916' : destructive ? '#fecaca' : 'rgba(255,255,255,0.78)';
+ const color = active ? '#4A1D96' : destructive ? '#fecaca' : 'rgba(255,255,255,0.78)';
return (
onPress(playlist)}
>
-
+ {playlist.coverImageUrl ? (
+
+ ) : null}
+
diff --git a/src/components/home/HomeSoundtrackBottomSheet.tsx b/src/components/home/HomeSoundtrackBottomSheet.tsx
index 34ef2af..7577a2a 100644
--- a/src/components/home/HomeSoundtrackBottomSheet.tsx
+++ b/src/components/home/HomeSoundtrackBottomSheet.tsx
@@ -309,7 +309,7 @@ export function HomeSoundtrackBottomSheet({
className="mt-4 min-h-11 items-center justify-center rounded-full bg-[#B7E628] px-6"
onPress={onRetry}
>
-
+
다시 시도
diff --git a/src/components/home/MusicLogCard.tsx b/src/components/home/MusicLogCard.tsx
index 5dd77c8..2347a7d 100644
--- a/src/components/home/MusicLogCard.tsx
+++ b/src/components/home/MusicLogCard.tsx
@@ -69,13 +69,13 @@ export function MusicLogCard({
{item.placeName}
{item.trackTitle}
diff --git a/src/components/home/TravelModeHomeView.tsx b/src/components/home/TravelModeHomeView.tsx
index 472002d..a6d1d26 100644
--- a/src/components/home/TravelModeHomeView.tsx
+++ b/src/components/home/TravelModeHomeView.tsx
@@ -309,8 +309,8 @@ function TravelStartPanel({
className="mt-5 h-[132px] w-[132px] self-center items-center justify-center rounded-full bg-soundlog-lime"
onPress={onStartTravel}
>
-
-
+
+
여행 시작
@@ -384,7 +384,7 @@ function ActiveRecommendationPanel({
-
+
여행 기록 중
@@ -444,13 +444,13 @@ function ActiveRecommendationPanel({
onPress={needsLocation && !playlist ? onRefreshLocation : onOpenPlaylist}
>
{isOpeningPlaylist ? '여는 중' : needsLocation && !playlist ? '위치 잡기' : '곡 보기'}
@@ -493,8 +493,8 @@ function ActiveRecommendationPanel({
className="h-11 flex-1 flex-row items-center justify-center gap-2 rounded-full bg-soundlog-warning"
onPress={onEndTravel}
>
-
- 여행 종료
+
+ 여행 종료
diff --git a/src/components/home/TravelModeSuggestionSheet.tsx b/src/components/home/TravelModeSuggestionSheet.tsx
index 06fa72a..0030f73 100644
--- a/src/components/home/TravelModeSuggestionSheet.tsx
+++ b/src/components/home/TravelModeSuggestionSheet.tsx
@@ -54,7 +54,7 @@ export function TravelModeSuggestionSheet({
onPress={onStartTravelMode}
style={{ backgroundColor: '#F5A451' }}
>
-
+
Travel Mode 시작
diff --git a/src/components/library/LibraryScreen.tsx b/src/components/library/LibraryScreen.tsx
index d2d2a5d..a4cc914 100644
--- a/src/components/library/LibraryScreen.tsx
+++ b/src/components/library/LibraryScreen.tsx
@@ -278,7 +278,7 @@ export function LibraryScreen() {
{tab.label}
diff --git a/src/components/moment-capture/CameraCaptureView.tsx b/src/components/moment-capture/CameraCaptureView.tsx
index 731c2e2..b1b88fe 100644
--- a/src/components/moment-capture/CameraCaptureView.tsx
+++ b/src/components/moment-capture/CameraCaptureView.tsx
@@ -80,7 +80,7 @@ export function CameraCaptureView({
style={{ opacity: controlsDisabled ? 0.7 : 1 }}
>
{isCapturing || isPickingPhoto ? (
-
+
) : (
)}
diff --git a/src/components/moment-capture/MomentPhotoCanvas.tsx b/src/components/moment-capture/MomentPhotoCanvas.tsx
index dbf4a89..3fb47ea 100644
--- a/src/components/moment-capture/MomentPhotoCanvas.tsx
+++ b/src/components/moment-capture/MomentPhotoCanvas.tsx
@@ -517,7 +517,7 @@ export const MomentPhotoCanvas = forwardRef<
{isMapTemplate ? (
-
+
@@ -651,7 +651,7 @@ function MapMusicPin({ track }: { track?: Track }) {
{ backgroundColor: track?.fallbackColor ?? '#B7E628' },
]}
>
-
+
)}
@@ -665,7 +665,7 @@ function MapMusicPin({ track }: { track?: Track }) {
-
+
@@ -977,7 +977,7 @@ function StickerSegment({
{option.label}
@@ -1065,12 +1065,12 @@ function getStickerThemeStyle(theme: StickerTheme) {
backgroundColor: 'rgba(183,230,40,0.94)',
borderColor: 'rgba(255,255,255,0.42)',
},
- dateText: { color: 'rgba(5,9,22,0.72)' },
+ dateText: { color: 'rgba(74,29,150,0.82)' },
divider: { backgroundColor: 'rgba(5,9,22,0.28)' },
iconBubble: { backgroundColor: 'rgba(5,9,22,0.13)' },
- iconColor: 'rgba(5,9,22,0.78)',
- metaText: { color: 'rgba(5,9,22,0.66)' },
- timeText: { color: '#050916' },
+ iconColor: 'rgba(74,29,150,0.9)',
+ metaText: { color: 'rgba(74,29,150,0.78)' },
+ timeText: { color: '#4A1D96' },
};
}
@@ -1080,12 +1080,12 @@ function getStickerThemeStyle(theme: StickerTheme) {
backgroundColor: 'rgba(255,255,255,0.92)',
borderColor: 'rgba(255,255,255,0.66)',
},
- dateText: { color: 'rgba(5,9,22,0.6)' },
+ dateText: { color: 'rgba(74,29,150,0.76)' },
divider: { backgroundColor: 'rgba(5,9,22,0.22)' },
iconBubble: { backgroundColor: 'rgba(5,9,22,0.08)' },
- iconColor: 'rgba(5,9,22,0.64)',
- metaText: { color: 'rgba(5,9,22,0.5)' },
- timeText: { color: '#050916' },
+ iconColor: 'rgba(74,29,150,0.82)',
+ metaText: { color: 'rgba(74,29,150,0.68)' },
+ timeText: { color: '#4A1D96' },
};
}
diff --git a/src/components/moment-capture/MomentReviewPanel.tsx b/src/components/moment-capture/MomentReviewPanel.tsx
index 3535634..e801b27 100644
--- a/src/components/moment-capture/MomentReviewPanel.tsx
+++ b/src/components/moment-capture/MomentReviewPanel.tsx
@@ -343,7 +343,7 @@ export const MomentReviewPanel = forwardRef<
style={{ opacity: isSaving ? 0.72 : 1 }}
>
{isSaving ? (
-
+
) : (
이 리캡 저장하기
diff --git a/src/components/playlist/PlaylistHeroInfo.tsx b/src/components/playlist/PlaylistHeroInfo.tsx
index 3facf9c..caf5185 100644
--- a/src/components/playlist/PlaylistHeroInfo.tsx
+++ b/src/components/playlist/PlaylistHeroInfo.tsx
@@ -98,7 +98,7 @@ export function PlaylistHeroInfo({
onPress={onOpenFirstTrack}
style={{ opacity: disabled ? 0.45 : 1 }}
>
-
+
diff --git a/src/components/playlist/PlaylistMusicFilter.tsx b/src/components/playlist/PlaylistMusicFilter.tsx
index 1233860..a12bd85 100644
--- a/src/components/playlist/PlaylistMusicFilter.tsx
+++ b/src/components/playlist/PlaylistMusicFilter.tsx
@@ -48,7 +48,7 @@ export function PlaylistMusicFilter({
/>
diff --git a/src/components/recap-share/RecapMusicSummary.tsx b/src/components/recap-share/RecapMusicSummary.tsx
index 5f06ff6..0e0b34c 100644
--- a/src/components/recap-share/RecapMusicSummary.tsx
+++ b/src/components/recap-share/RecapMusicSummary.tsx
@@ -131,7 +131,7 @@ export function RecapMusicSummary({
className="h-10 w-10 items-center justify-center rounded-full bg-soundlog-lime"
onPress={onOpenMap}
>
-
+
) : null
}
diff --git a/src/components/recap-share/RecapPreviewCard.tsx b/src/components/recap-share/RecapPreviewCard.tsx
index 0967027..79b70c7 100644
--- a/src/components/recap-share/RecapPreviewCard.tsx
+++ b/src/components/recap-share/RecapPreviewCard.tsx
@@ -535,7 +535,7 @@ function RecapMapTemplate({ recap }: { recap: RecapShare }) {
style={pinPositions[index % pinPositions.length]}
>
-
+
{index + 1}
@@ -620,10 +620,10 @@ function getRecapMusicStickerThemeStyle(theme: RecapMusicStickerTheme) {
borderColor: 'rgba(255,255,255,0.42)',
},
iconBubble: { backgroundColor: 'rgba(5,9,22,0.14)' },
- iconColor: '#050916',
- metaText: { color: 'rgba(5,9,22,0.62)' },
- primaryText: { color: '#050916' },
- secondaryText: { color: 'rgba(5,9,22,0.68)' },
+ iconColor: '#4A1D96',
+ metaText: { color: 'rgba(74,29,150,0.76)' },
+ primaryText: { color: '#4A1D96' },
+ secondaryText: { color: 'rgba(74,29,150,0.82)' },
};
}
@@ -634,10 +634,10 @@ function getRecapMusicStickerThemeStyle(theme: RecapMusicStickerTheme) {
borderColor: 'rgba(255,255,255,0.66)',
},
iconBubble: { backgroundColor: 'rgba(5,9,22,0.08)' },
- iconColor: 'rgba(5,9,22,0.72)',
- metaText: { color: 'rgba(5,9,22,0.52)' },
- primaryText: { color: '#050916' },
- secondaryText: { color: 'rgba(5,9,22,0.62)' },
+ iconColor: 'rgba(74,29,150,0.84)',
+ metaText: { color: 'rgba(74,29,150,0.7)' },
+ primaryText: { color: '#4A1D96' },
+ secondaryText: { color: 'rgba(74,29,150,0.76)' },
};
}
diff --git a/src/components/recap-share/RecapTemplateSelector.tsx b/src/components/recap-share/RecapTemplateSelector.tsx
index 8434ce3..ce2255e 100644
--- a/src/components/recap-share/RecapTemplateSelector.tsx
+++ b/src/components/recap-share/RecapTemplateSelector.tsx
@@ -40,7 +40,7 @@ export function RecapTemplateSelector({
>
{option.label}
diff --git a/src/components/recap-share/ShareActionList.tsx b/src/components/recap-share/ShareActionList.tsx
index a77008a..da36e3a 100644
--- a/src/components/recap-share/ShareActionList.tsx
+++ b/src/components/recap-share/ShareActionList.tsx
@@ -14,11 +14,11 @@ const actions: Array<{
{
backgroundColor: '#B7E628',
icon: 'download',
- iconColor: '#050916',
+ iconColor: '#4A1D96',
id: 'save',
label: '이미지 저장',
loadingLabel: '저장 중',
- textColor: '#050916',
+ textColor: '#4A1D96',
},
{
backgroundColor: 'rgba(255,255,255,0.1)',
diff --git a/src/components/recap/RecapListCard.tsx b/src/components/recap/RecapListCard.tsx
index e59eed0..758fe0b 100644
--- a/src/components/recap/RecapListCard.tsx
+++ b/src/components/recap/RecapListCard.tsx
@@ -59,7 +59,7 @@ export function RecapListCard({ imageUrl, item, onPress }: RecapListCardProps) {
-
+
diff --git a/src/components/travel/CommunityRecapCard.tsx b/src/components/travel/CommunityRecapCard.tsx
index faff331..b08d966 100644
--- a/src/components/travel/CommunityRecapCard.tsx
+++ b/src/components/travel/CommunityRecapCard.tsx
@@ -860,7 +860,7 @@ export function CommunityRecapCard({
onPress={() => void handleCreateRoom()}
style={{ opacity: !canUseRoom || isCreatingRoom ? 0.55 : 1 }}
>
-
+
{isCreatingRoom ? "여행방 생성 중" : "새 여행방 만들기"}
diff --git a/src/components/travel/EndTravelConfirmModal.tsx b/src/components/travel/EndTravelConfirmModal.tsx
index 700405d..359e511 100644
--- a/src/components/travel/EndTravelConfirmModal.tsx
+++ b/src/components/travel/EndTravelConfirmModal.tsx
@@ -28,7 +28,7 @@ export function EndTravelConfirmModal({
-
+
diff --git a/src/components/travel/RecapCard.tsx b/src/components/travel/RecapCard.tsx
index c38c645..cac2fe1 100644
--- a/src/components/travel/RecapCard.tsx
+++ b/src/components/travel/RecapCard.tsx
@@ -55,7 +55,7 @@ export function RecapCard({ item, onPress }: RecapCardProps) {
-
+
diff --git a/src/components/travel/TravelStatusCard.tsx b/src/components/travel/TravelStatusCard.tsx
index 958b208..f884031 100644
--- a/src/components/travel/TravelStatusCard.tsx
+++ b/src/components/travel/TravelStatusCard.tsx
@@ -120,7 +120,7 @@ export function TravelStatusCard({
className="h-11 flex-1 items-center justify-center rounded-full bg-soundlog-warning"
onPress={onEndTravel}
>
- 여행 종료
+ 여행 종료
-
+
여행을 시작해보세요
diff --git a/src/components/travel/live-sound-map/LiveSoundMapSection.tsx b/src/components/travel/live-sound-map/LiveSoundMapSection.tsx
index 52910e2..fc4a152 100644
--- a/src/components/travel/live-sound-map/LiveSoundMapSection.tsx
+++ b/src/components/travel/live-sound-map/LiveSoundMapSection.tsx
@@ -728,7 +728,7 @@ export function LiveSoundMapSection({
-
+
diff --git a/src/components/travel/live-sound-map/SoundMapView.tsx b/src/components/travel/live-sound-map/SoundMapView.tsx
index 910e6e6..fcbc1be 100644
--- a/src/components/travel/live-sound-map/SoundMapView.tsx
+++ b/src/components/travel/live-sound-map/SoundMapView.tsx
@@ -65,10 +65,10 @@ const markerPalette: Record<
},
me: {
background: '#B7E628',
- border: '#090515',
- icon: '#090515',
+ border: '#4A1D96',
+ icon: '#4A1D96',
labelBackground: 'rgba(9,5,21,0.18)',
- labelText: '#090515',
+ labelText: '#4A1D96',
},
nearby: {
background: '#2A1A15',
diff --git a/src/components/travel/recap-map/RecapMapSection.tsx b/src/components/travel/recap-map/RecapMapSection.tsx
index 846abba..b0845b2 100644
--- a/src/components/travel/recap-map/RecapMapSection.tsx
+++ b/src/components/travel/recap-map/RecapMapSection.tsx
@@ -511,7 +511,7 @@ export function RecapMapSection({
@@ -626,7 +626,7 @@ export function RecapMapSection({
diff --git a/src/constants/colors.ts b/src/constants/colors.ts
index 194ef50..4cc6f77 100644
--- a/src/constants/colors.ts
+++ b/src/constants/colors.ts
@@ -40,6 +40,6 @@ export const colors = {
primary: '#FFFFFF',
secondary: '#ACACAC',
muted: 'rgba(255,255,255,0.58)',
- inverse: '#090515',
+ inverse: '#4A1D96',
},
} as const;
diff --git a/src/design-system/primitives.tsx b/src/design-system/primitives.tsx
index 73a84ce..ee60d79 100644
--- a/src/design-system/primitives.tsx
+++ b/src/design-system/primitives.tsx
@@ -42,14 +42,14 @@ const buttonVariantClass: Record = {
};
const buttonTextClass: Record = {
- danger: 'text-black',
+ danger: 'text-soundlog-inverse',
ghost: 'text-white',
primary: 'text-soundlog-inverse',
secondary: 'text-white',
};
function getButtonIconColor(variant: SoundlogButtonVariant) {
- return variant === 'primary' || variant === 'danger' ? '#090515' : '#FFFFFF';
+ return variant === 'primary' || variant === 'danger' ? '#4A1D96' : '#FFFFFF';
}
export function SoundlogButton({
diff --git a/src/types/domain.ts b/src/types/domain.ts
index c1a83ad..8790f2b 100644
--- a/src/types/domain.ts
+++ b/src/types/domain.ts
@@ -61,6 +61,8 @@ export type Track = {
};
export type FeaturedPlaylist = {
+ backgroundImageUrl?: string;
+ coverImageUrl?: string;
id: string;
regionName: string;
description: string;
diff --git a/tailwind.config.js b/tailwind.config.js
index e4796c8..523bd69 100644
--- a/tailwind.config.js
+++ b/tailwind.config.js
@@ -21,7 +21,7 @@ module.exports = {
lime: '#B7E628',
player: '#45343D',
warning: '#FF8A3D',
- inverse: '#090515',
+ inverse: '#4A1D96',
},
},
opacity: {