diff --git a/.changeset/happy-glasses-dance.md b/.changeset/happy-glasses-dance.md
new file mode 100644
index 0000000..cf768bf
--- /dev/null
+++ b/.changeset/happy-glasses-dance.md
@@ -0,0 +1,5 @@
+---
+"notion-to-jsx": patch
+---
+
+Update link property type and access nested url property for text links, add loading skeleton to image and cover components
diff --git a/apps/renderer-storybook/scripts/fetchNotionProperties.ts b/apps/renderer-storybook/scripts/fetchNotionProperties.ts
index b0b26d0..13a049d 100644
--- a/apps/renderer-storybook/scripts/fetchNotionProperties.ts
+++ b/apps/renderer-storybook/scripts/fetchNotionProperties.ts
@@ -12,7 +12,7 @@ const __dirname = dirname(__filename);
dotenv.config({ path: resolve(__dirname, '../.env.local') });
// 페이지 ID
-const PAGE_ID = '1239c6bf-2b17-8076-a838-d17ca1c89783';
+const PAGE_ID = '1399c6bf-2b17-80f4-bfcf-e81ca24d2c5d';
// ? using this script : pnpx tsx scripts/fetchNotionProperties.ts
async function fetchAndSaveProperties() {
diff --git a/apps/renderer-storybook/src/sample-data/notionProperties.json b/apps/renderer-storybook/src/sample-data/notionProperties.json
index d2518af..9aa8c72 100644
--- a/apps/renderer-storybook/src/sample-data/notionProperties.json
+++ b/apps/renderer-storybook/src/sample-data/notionProperties.json
@@ -1,6 +1,6 @@
{
"Date": {
- "start": "2025-01-18",
+ "start": "2024-11-09",
"end": null,
"time_zone": null
},
@@ -9,10 +9,10 @@
"name": "WEB",
"color": "default"
},
- "Slug": "notion-lib-1",
+ "Slug": "changeset-github-action",
"isPublished": true,
- "Desc": "노션 페이지에 글을 쓰면 별도 배포 없이 포스팅되는 라이브러리를 직접 만들기로 했다!",
+ "Desc": "changeset과 github action을 도입해 버전 관리하는 방법을 공유한다!",
"Tags": null,
- "Name": "Notion API로 블로그 만들기 (with npm) - 1",
- "coverUrl": "https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2Fcd7314a5-d906-43b0-81e7-42eff82c02a3%2F8423f797-5e58-45ea-a201-25587375c59d%2F1692217660016.png?table=block&id=1239c6bf-2b17-8076-a838-d17ca1c89783&cache=v2"
+ "Name": "changeset과 github action으로 버전 관리하기",
+ "coverUrl": "https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2Fcd7314a5-d906-43b0-81e7-42eff82c02a3%2Fce42e11d-7b8b-462c-b1df-9015be63135b%2Fchangesets-banner-light.png?table=block&id=1399c6bf-2b17-80f4-bfcf-e81ca24d2c5d&cache=v2"
}
\ No newline at end of file
diff --git a/packages/notion-to-jsx/src/components/Cover/index.tsx b/packages/notion-to-jsx/src/components/Cover/index.tsx
index abfd332..01dcc17 100644
--- a/packages/notion-to-jsx/src/components/Cover/index.tsx
+++ b/packages/notion-to-jsx/src/components/Cover/index.tsx
@@ -1,12 +1,33 @@
-import { cover } from './styles.css';
+import { useState } from 'react';
+import { coverContainer, skeletonWrapper, imageStyle } from './styles.css';
+import Skeleton from '../Skeleton';
interface CoverProps {
src: string;
alt: string;
}
+/**
+ * 노션 페이지 상단에 표시되는 커버 이미지 컴포넌트
+ * 이미지 로딩 중에는 스켈레톤 UI를 표시하고, 로딩 완료 시 자연스럽게 이미지로 전환됩니다.
+ */
const Cover = ({ src, alt }: CoverProps) => {
- return ;
+ const [isLoaded, setIsLoaded] = useState(false);
+
+ return (
+