diff --git a/index.html b/index.html
new file mode 100644
index 0000000..909aee7
--- /dev/null
+++ b/index.html
@@ -0,0 +1,202 @@
+
+
+
+
+
+
+
+
+ xlsx2md
+
+
+
+
+ Local Browser Tool
+ xlsx2md
+
+ Excel (`.xlsx`) をローカルで読み込み、Markdown へ変換するブラウザベースのツールです。
+
+
+
+ English
+
+ xlsx2md is a browser-based converter that reads Excel (`.xlsx`) files locally and turns them into Markdown.
+
+
+ - Runs in the browser.
+ - Converts all sheets automatically.
+ - Supports display / raw / both output modes.
+ - Includes analysis-oriented output such as tables, formulas, charts, and shapes.
+
+
+
+
+
+
+
+ 日本語
+
+ xlsx2md は、Excel (`.xlsx`) をローカルで読み込み、Markdown へ変換するブラウザベースのツールです。
+
+
+ - ブラウザ内で動作します。
+ - 全シートを自動で変換します。
+ - `display` / `raw` / `both` の出力モードを持ちます。
+ - 表、数式、グラフ、図形などの解析結果を Markdown に出力します。
+
+
+
+
+
+
+
+
diff --git a/lht-cmn/js/components.js b/lht-cmn/js/components.js
index 3f867df..e8f3127 100644
--- a/lht-cmn/js/components.js
+++ b/lht-cmn/js/components.js
@@ -1524,10 +1524,13 @@ class LhtPageHero extends HTMLElement {
titleMain.appendChild(help);
}
- if (actionHref && actionLabel) {
+ if (actionHref && (actionLabel || actionIconId)) {
const actionLink = document.createElement("a");
actionLink.href = actionHref;
actionLink.className = "ms-hero-link";
+ if (!actionLabel) {
+ actionLink.classList.add("ms-hero-link--icon-only");
+ }
actionLink.target = "_blank";
actionLink.rel = "noopener noreferrer";
if (actionAriaLabel) {
@@ -1545,9 +1548,11 @@ class LhtPageHero extends HTMLElement {
iconSvg.appendChild(useNode);
actionLink.appendChild(iconSvg);
}
- const labelNode = document.createElement("span");
- labelNode.textContent = actionLabel;
- actionLink.appendChild(labelNode);
+ if (actionLabel) {
+ const labelNode = document.createElement("span");
+ labelNode.textContent = actionLabel;
+ actionLink.appendChild(labelNode);
+ }
titleMain.appendChild(actionLink);
}
diff --git a/src/xlsx2md/css/app.css b/src/xlsx2md/css/app.css
index 3971993..63f1797 100644
--- a/src/xlsx2md/css/app.css
+++ b/src/xlsx2md/css/app.css
@@ -12,10 +12,48 @@
margin: 0 auto;
}
+.md-icons {
+ position: absolute;
+ width: 0;
+ height: 0;
+ overflow: hidden;
+}
+
.md-surface-card {
padding: 28px;
}
+.ms-hero-link {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ color: #52606d;
+ text-decoration: none;
+ line-height: 1;
+ transition:
+ transform 0.16s ease,
+ color 0.16s ease,
+ opacity 0.16s ease;
+}
+
+.ms-hero-link:hover,
+.ms-hero-link:focus-visible {
+ transform: translateY(-1px);
+ color: #102a43;
+ opacity: 1;
+}
+
+.ms-hero-link--icon-only {
+ padding: 0.1rem;
+ opacity: 0.78;
+}
+
+.ms-btn-icon {
+ width: 1.05rem;
+ height: 1.05rem;
+ flex: 0 0 auto;
+}
+
.md-card {
background: rgba(255, 255, 255, 0.96);
border: 1px solid rgba(148, 163, 184, 0.18);
diff --git a/xlsx2md-src.html b/xlsx2md-src.html
index f884ab5..7defee8 100644
--- a/xlsx2md-src.html
+++ b/xlsx2md-src.html
@@ -25,6 +25,11 @@
+
`.xlsx` ファイルをローカルで解析し、地の文抽出・表検出・結合セル補完を行ったうえで Markdown を生成します。
diff --git a/xlsx2md.html b/xlsx2md.html
index 30eb2ee..2c56e0d 100644
--- a/xlsx2md.html
+++ b/xlsx2md.html
@@ -1088,10 +1088,48 @@
margin: 0 auto;
}
+.md-icons {
+ position: absolute;
+ width: 0;
+ height: 0;
+ overflow: hidden;
+}
+
.md-surface-card {
padding: 28px;
}
+.ms-hero-link {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ color: #52606d;
+ text-decoration: none;
+ line-height: 1;
+ transition:
+ transform 0.16s ease,
+ color 0.16s ease,
+ opacity 0.16s ease;
+}
+
+.ms-hero-link:hover,
+.ms-hero-link:focus-visible {
+ transform: translateY(-1px);
+ color: #102a43;
+ opacity: 1;
+}
+
+.ms-hero-link--icon-only {
+ padding: 0.1rem;
+ opacity: 0.78;
+}
+
+.ms-btn-icon {
+ width: 1.05rem;
+ height: 1.05rem;
+ flex: 0 0 auto;
+}
+
.md-card {
background: rgba(255, 255, 255, 0.96);
border: 1px solid rgba(148, 163, 184, 0.18);
@@ -1451,6 +1489,11 @@
+
`.xlsx` ファイルをローカルで解析し、地の文抽出・表検出・結合セル補完を行ったうえで Markdown を生成します。
@@ -3572,10 +3618,13 @@ Markdown
titleMain.appendChild(help);
}
- if (actionHref && actionLabel) {
+ if (actionHref && (actionLabel || actionIconId)) {
const actionLink = document.createElement("a");
actionLink.href = actionHref;
actionLink.className = "ms-hero-link";
+ if (!actionLabel) {
+ actionLink.classList.add("ms-hero-link--icon-only");
+ }
actionLink.target = "_blank";
actionLink.rel = "noopener noreferrer";
if (actionAriaLabel) {
@@ -3593,9 +3642,11 @@ Markdown
iconSvg.appendChild(useNode);
actionLink.appendChild(iconSvg);
}
- const labelNode = document.createElement("span");
- labelNode.textContent = actionLabel;
- actionLink.appendChild(labelNode);
+ if (actionLabel) {
+ const labelNode = document.createElement("span");
+ labelNode.textContent = actionLabel;
+ actionLink.appendChild(labelNode);
+ }
titleMain.appendChild(actionLink);
}