diff options
| author | Mahesh Sanikommmu <[email protected]> | 2025-08-28 22:48:57 -0700 |
|---|---|---|
| committer | Mahesh Sanikommmu <[email protected]> | 2025-08-28 22:48:57 -0700 |
| commit | c74357a6b0106a52fb19ea62c49b19ccac94811b (patch) | |
| tree | 0cbb7c61045aafddeea0ed2824171d7dd3998cc9 | |
| parent | welcome page tailwind css integration (diff) | |
| download | supermemory-c74357a6b0106a52fb19ea62c49b19ccac94811b.tar.xz supermemory-c74357a6b0106a52fb19ea62c49b19ccac94811b.zip | |
tailwind css to popup
| -rw-r--r-- | apps/browser-extension/entrypoints/popup/App.css | 670 | ||||
| -rw-r--r-- | apps/browser-extension/entrypoints/popup/App.tsx | 126 | ||||
| -rw-r--r-- | apps/browser-extension/entrypoints/popup/style.css | 40 | ||||
| -rw-r--r-- | apps/browser-extension/entrypoints/welcome/Welcome.tsx | 22 |
4 files changed, 86 insertions, 772 deletions
diff --git a/apps/browser-extension/entrypoints/popup/App.css b/apps/browser-extension/entrypoints/popup/App.css index 4924360e..f91be533 100644 --- a/apps/browser-extension/entrypoints/popup/App.css +++ b/apps/browser-extension/entrypoints/popup/App.css @@ -1,3 +1,5 @@ +@import "tailwindcss"; + /* Custom Font Definitions */ @font-face { font-family: "Space Grotesk"; @@ -38,671 +40,3 @@ font-display: swap; src: url("/fonts/SpaceGrotesk-Bold.ttf") format("truetype"); } - -.popup-container { - width: 320px; - padding: 0; - font-family: - "Space Grotesk", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, - sans-serif; - background: #ffffff; - border-radius: 8px; - position: relative; - overflow: hidden; -} - -.header { - display: flex; - align-items: center; - justify-content: space-between; - gap: 12px; - padding: 10px; - border-bottom: 1px solid #e5e7eb; - position: relative; -} - -.header .logo { - width: 32px; - height: 32px; - flex-shrink: 0; -} - -.header h1 { - margin: 0; - font-size: 18px; - font-weight: 600; - color: #000000; - flex: 1; -} - -.header-sign-out { - background: none; - border: none; - font-size: 16px; - cursor: pointer; - color: #6c757d; - padding: 4px; - border-radius: 4px; - transition: - color 0.2s ease, - background-color 0.2s ease; -} - -.header-sign-out:hover { - color: #000000; - background-color: #f1f3f4; -} - -.content { - padding: 16px; -} - -.status { - display: flex; - align-items: center; - gap: 8px; - margin-bottom: 16px; - font-size: 14px; - color: #000000; -} - -.status-indicator { - width: 8px; - height: 8px; - border-radius: 50%; - flex-shrink: 0; -} - -.status-indicator.signed-in { - background-color: #000000; -} - -.status-indicator.signed-out { - background-color: #666666; -} - -.sign-out-btn { - width: 100%; - padding: 8px 16px; - background-color: #000000; - color: white; - border: none; - border-radius: 6px; - font-size: 14px; - font-weight: 500; - cursor: pointer; -} - -.sign-out-btn:hover { - background-color: #333333; -} - -.instruction { - margin: 0; - font-size: 13px; - color: #666666; - line-height: 1.4; -} - -.login-btn { - background: none; - border: none; - color: #1976d2; - cursor: pointer; - text-decoration: underline; - font-size: 13px; - padding: 0; -} - -.login-btn:hover { - color: #1565c0; -} - -.authenticated { - text-align: left; -} - -.unauthenticated { - text-align: center; - padding: 8px 0; -} - -/* Login Screen Styles */ -.login-intro { - margin-bottom: 32px; -} - -.login-title { - margin: 0 0 16px 0; - font-size: 14px; - font-weight: 400; - color: #000000; - line-height: 1.3; -} - -.features-list { - list-style: none; - padding: 0; - margin: 0; - text-align: left; -} - -.features-list li { - padding: 6px 0; - font-size: 14px; - color: #000000; - position: relative; - padding-left: 20px; -} - -.features-list li::before { - content: "•"; - position: absolute; - left: 0; - color: #000000; - font-weight: bold; -} - -.login-actions { - margin-top: 32px; -} - -.login-help { - margin: 0 0 16px 0; - font-size: 14px; - color: #6c757d; -} - -.help-link { - background: none; - border: none; - color: #4285f4; - cursor: pointer; - text-decoration: underline; - font-size: 14px; - padding: 0; -} - -.help-link:hover { - color: #1a73e8; -} - -.login-primary-btn { - width: 100%; - padding: 12px 24px; - background-color: #374151; - color: white; - border: none; - border-radius: 24px; - font-size: 16px; - font-weight: 500; - cursor: pointer; - transition: background-color 0.2s ease; -} - -.login-primary-btn:hover:not(:disabled) { - background-color: #1f2937; -} - -.login-primary-btn:disabled { - background-color: #9e9e9e; - cursor: not-allowed; -} - -/* Tab Navigation Styles */ -.tab-navigation { - display: flex; - background-color: #f1f3f4; - border-radius: 8px; - padding: 4px; - margin-bottom: 16px; -} - -.tab-btn { - flex: 1; - padding: 8px 16px; - background: transparent; - border: none; - border-radius: 6px; - font-size: 14px; - font-weight: 500; - color: #6c757d; - cursor: pointer; - transition: all 0.2s ease; - outline: none; - box-shadow: none; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; -} - -.tab-btn:focus { - outline: none; - box-shadow: none; - border: none; -} - -.tab-btn:active { - outline: none; - box-shadow: none; -} - -.tab-btn.active { - background-color: #ffffff; - color: #000000; - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); -} - -.tab-btn:hover:not(.active) { - color: #374151; -} - -/* Tab Content */ -.tab-content { - display: flex; - flex-direction: column; - gap: 16px; - min-height: 200px; -} - -/* Save Action at Bottom */ -.save-action { - margin-top: auto; - padding-top: 16px; -} - -/* Import Actions */ -.import-actions { - display: flex; - flex-direction: column; - gap: 16px; -} - -.import-item { - display: flex; - flex-direction: column; - gap: 8px; -} - -.import-instructions { - margin: 0; - font-size: 12px; - color: #6c757d; - line-height: 1.3; - padding-left: 4px; -} - -/* Save Section Styles */ -.save-section { - margin-bottom: 16px; -} - -.current-page { - margin-bottom: 0; -} - -.page-info { - background-color: #f8f9fa; - padding: 12px; - border-radius: 6px; - border: 1px solid #e9ecef; -} - -.page-title { - margin: 0 0 4px 0; - font-size: 14px; - font-weight: 600; - color: #000000; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -.page-url { - margin: 0; - font-size: 12px; - color: #6c757d; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -.save-page-btn { - width: 100%; - padding: 12px 16px; - background-color: #1976d2; - color: white; - border: none; - border-radius: 6px; - font-size: 16px; - font-weight: 600; - cursor: pointer; - transition: background-color 0.2s ease; - display: flex; - align-items: center; - justify-content: center; - gap: 8px; -} - -.save-page-btn:hover:not(:disabled) { - background-color: #1565c0; -} - -.save-page-btn:disabled { - background-color: #9e9e9e; - cursor: not-allowed; -} - -.secondary-actions { - margin-top: 16px; -} - -.secondary-btn { - width: 100%; - padding: 8px 12px; - background-color: white; - color: #6c757d; - border: 1px solid #e4e6eb; - border-radius: 6px; - font-size: 13px; - font-weight: 400; - cursor: pointer; - transition: - background-color 0.2s ease, - color 0.2s ease; -} - -.secondary-btn:hover { - background-color: #f8f9fa; - color: #000000; -} - -.actions { - display: flex; - flex-direction: column; - gap: 12px; -} - -.chatgpt-btn { - width: 100%; - padding: 12px 12px; - background-color: white; - color: black; - border: 1px solid #e4e6eb; - border-radius: 6px; - font-size: 14px; - font-weight: 500; - cursor: pointer; - display: flex; - align-items: center; - justify-content: center; - transition: background-color 0.2s ease; -} - -.chatgpt-btn:hover { - background-color: #f0f0f0; - border-color: #e4e6eb; -} - -.chatgpt-logo { - width: 18px; - height: 18px; - flex-shrink: 0; - margin-right: 8px; -} - -.twitter-btn { - width: 100%; - padding: 12px 12px; - background-color: white; - color: black; - border: 1px solid #e4e6eb; - border-radius: 6px; - font-size: 14px; - font-weight: 500; - cursor: pointer; - display: flex; - align-items: center; - justify-content: center; - transition: background-color 0.2s ease; - outline: none; - box-shadow: none; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; -} - -.twitter-btn:hover { - background-color: #f0f0f0; - border-color: #e4e6eb; -} - -.twitter-btn:focus { - outline: none; - box-shadow: none; -} - -.twitter-logo { - width: 18px; - height: 18px; - flex-shrink: 0; - margin-right: 8px; -} - -/* Project Selection Styles */ -.project-section { - margin-bottom: 0; -} - -.project-selector-btn { - width: 100%; - background: none; - border: none; - padding: 0; - cursor: pointer; - text-align: left; -} - -.project-selector-content { - display: flex; - justify-content: space-between; - align-items: center; - padding: 12px; - background-color: #f8f9fa; - border-radius: 8px; - border: 1px solid #e9ecef; - transition: - background-color 0.2s ease, - border-color 0.2s ease; -} - -.project-selector-btn:hover .project-selector-content { - background-color: #e9ecef; - border-color: #ced4da; -} - -.project-label { - font-size: 14px; - font-weight: 500; - color: #495057; -} - -.project-value { - display: flex; - align-items: center; - gap: 8px; -} - -.project-name { - font-size: 14px; - font-weight: 500; - color: #000000; - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; - max-width: 120px; -} - -.project-arrow { - color: #6c757d; - flex-shrink: 0; - transition: transform 0.2s ease; -} - -.project-selector-btn:hover .project-arrow { - color: #495057; - transform: translateX(2px); -} - -.project-count { - font-size: 12px; - color: #6c757d; - margin-left: 8px; -} - -.project-none { - font-size: 14px; - color: #6c757d; - font-style: italic; -} - -/* Project Selector Modal */ -.project-selector { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - background-color: #ffffff; - border-radius: 8px; - z-index: 1000; - box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); - display: flex; - flex-direction: column; -} - -.project-selector-header { - display: flex; - justify-content: space-between; - align-items: center; - padding: 16px; - border-bottom: 1px solid #e5e7eb; - font-size: 16px; - font-weight: 600; - color: #000000; - flex-shrink: 0; -} - -.project-header-actions { - display: flex; - align-items: center; - gap: 12px; -} - -.project-logout-btn { - background: none; - border: none; - font-size: 14px; - color: #6c757d; - cursor: pointer; - padding: 4px 8px; - border-radius: 4px; - transition: - color 0.2s ease, - background-color 0.2s ease; - outline: none; -} - -.project-logout-btn:hover { - color: #dc3545; - background-color: #f8f9fa; -} - -.project-logout-btn:focus { - outline: none; -} - -.project-close-btn { - background: none; - border: none; - font-size: 20px; - cursor: pointer; - color: #6c757d; - padding: 0; - width: 24px; - height: 24px; - display: flex; - align-items: center; - justify-content: center; -} - -.project-close-btn:hover { - color: #000000; -} - -.project-loading { - padding: 32px 16px; - text-align: center; - color: #6c757d; - font-size: 14px; -} - -.project-list { - flex: 1; - overflow-y: auto; - min-height: 0; -} - -.project-item { - display: flex; - justify-content: space-between; - align-items: center; - padding: 12px 16px; - cursor: pointer; - transition: background-color 0.2s ease; - border-bottom: 1px solid #f1f3f4; - background: none; - border: none; - width: 100%; - text-align: left; -} - -.project-item:hover { - background-color: #f8f9fa; -} - -.project-item:last-child { - border-bottom: none; -} - -.project-item.selected { - background-color: #e3f2fd; -} - -.project-item-info { - display: flex; - flex-direction: column; - flex: 1; - gap: 2px; -} - -.project-item-name { - font-size: 14px; - font-weight: 500; - color: #000000; - word-wrap: break-word; - overflow-wrap: break-word; - hyphens: auto; - line-height: 1.3; -} - -.project-item-count { - font-size: 12px; - color: #6c757d; -} - -.project-item-check { - color: #1976d2; - font-weight: bold; - font-size: 16px; -} diff --git a/apps/browser-extension/entrypoints/popup/App.tsx b/apps/browser-extension/entrypoints/popup/App.tsx index 2f42747a..50a502d3 100644 --- a/apps/browser-extension/entrypoints/popup/App.tsx +++ b/apps/browser-extension/entrypoints/popup/App.tsx @@ -115,12 +115,12 @@ function App() { if (loading) { return ( - <div className="popup-container"> - <div className="header"> - <img alt="supermemory" className="logo" src="/icon-48.png" /> - <h1>supermemory</h1> + <div className="w-80 p-0 font-[Space_Grotesk,-apple-system,BlinkMacSystemFont,Segoe_UI,Roboto,sans-serif] bg-white rounded-lg relative overflow-hidden"> + <div className="flex items-center justify-between gap-3 p-2.5 border-b border-gray-200 relative"> + <img alt="supermemory" className="w-8 h-8 flex-shrink-0" src="/icon-48.png" /> + <h1 className="m-0 text-lg font-semibold text-black flex-1">supermemory</h1> </div> - <div className="content"> + <div className="p-4"> <div>Loading...</div> </div> </div> @@ -128,17 +128,17 @@ function App() { } return ( - <div className="popup-container"> - <div className="header"> + <div className="w-80 p-0 font-[Space_Grotesk,-apple-system,BlinkMacSystemFont,Segoe_UI,Roboto,sans-serif] bg-white rounded-lg relative overflow-hidden"> + <div className="flex items-center justify-between gap-3 p-2.5 border-b border-gray-200 relative"> <img alt="supermemory" - className="logo" + className="w-8 h-8 flex-shrink-0" src="https://assets.supermemory.ai/brand/wordmark/dark-transparent.svg" style={{ width: "80%", height: "45px" }} /> {userSignedIn && ( <button - className="header-sign-out" + className="bg-none border-none text-base cursor-pointer text-gray-500 p-1 rounded transition-colors duration-200 hover:text-black hover:bg-gray-100" onClick={handleSignOut} title="Logout" type="button" @@ -161,20 +161,28 @@ function App() { </button> )} </div> - <div className="content"> + <div className="p-4"> {userSignedIn ? ( - <div className="authenticated"> + <div className="text-left"> {/* Tab Navigation */} - <div className="tab-navigation"> + <div className="flex bg-gray-100 rounded-lg p-1 mb-4"> <button - className={`tab-btn ${activeTab === "save" ? "active" : ""}`} + className={`flex-1 py-2 px-4 bg-transparent border-none rounded-md text-sm font-medium cursor-pointer transition-all duration-200 outline-none appearance-none ${ + activeTab === "save" + ? "bg-white text-black shadow-sm" + : "text-gray-500 hover:text-gray-700" + }`} onClick={() => setActiveTab("save")} type="button" > Save </button> <button - className={`tab-btn ${activeTab === "imports" ? "active" : ""}`} + className={`flex-1 py-2 px-4 bg-transparent border-none rounded-md text-sm font-medium cursor-pointer transition-all duration-200 outline-none appearance-none ${ + activeTab === "imports" + ? "bg-white text-black shadow-sm" + : "text-gray-500 hover:text-gray-700" + }`} onClick={() => setActiveTab("imports")} type="button" > @@ -184,35 +192,35 @@ function App() { {/* Tab Content */} {activeTab === "save" ? ( - <div className="tab-content"> + <div className="flex flex-col gap-4 min-h-[200px]"> {/* Current Page Info */} - <div className="current-page"> - <div className="page-info"> - <h3 className="page-title"> + <div className="mb-0"> + <div className="bg-gray-50 p-3 rounded-md border border-gray-200"> + <h3 className="m-0 mb-1 text-sm font-semibold text-black overflow-hidden text-ellipsis whitespace-nowrap"> {currentTitle || "Current Page"} </h3> - <p className="page-url">{currentUrl}</p> + <p className="m-0 text-xs text-gray-500 overflow-hidden text-ellipsis whitespace-nowrap">{currentUrl}</p> </div> </div> {/* Project Selection */} - <div className="project-section"> + <div className="mb-0"> <button - className="project-selector-btn" + className="w-full bg-transparent border-none p-0 cursor-pointer text-left" onClick={handleShowProjectSelector} type="button" > - <div className="project-selector-content"> - <span className="project-label">Save to project:</span> - <div className="project-value"> - <span className="project-name"> + <div className="flex justify-between items-center p-3 bg-gray-50 rounded-lg border border-gray-200 transition-colors duration-200 hover:bg-gray-200 hover:border-gray-300"> + <span className="text-sm font-medium text-gray-600">Save to project:</span> + <div className="flex items-center gap-2"> + <span className="text-sm font-medium text-black overflow-hidden text-ellipsis whitespace-nowrap max-w-[120px]"> {defaultProject ? defaultProject.name : "Default Project"} </span> <svg aria-label="Select project" - className="project-arrow" + className="text-gray-500 flex-shrink-0 transition-transform duration-200 hover:text-gray-700 hover:translate-x-0.5" fill="none" height="16" stroke="currentColor" @@ -231,9 +239,9 @@ function App() { </div> {/* Save Button at Bottom */} - <div className="save-action"> + <div className="mt-auto pt-4"> <button - className="login-primary-btn" + className="w-full py-3 px-6 bg-gray-700 text-white border-none rounded-3xl text-base font-medium cursor-pointer transition-colors duration-200 hover:bg-gray-800 disabled:bg-gray-400 disabled:cursor-not-allowed" disabled={saving} onClick={handleSaveCurrentPage} type="button" @@ -243,12 +251,12 @@ function App() { </div> </div> ) : ( - <div className="tab-content"> + <div className="flex flex-col gap-4 min-h-[200px]"> {/* Import Actions */} - <div className="import-actions"> - <div className="import-item"> + <div className="flex flex-col gap-4"> + <div className="flex flex-col gap-2"> <button - className="chatgpt-btn" + className="w-full py-3 px-3 bg-white text-black border border-gray-200 rounded-md text-sm font-medium cursor-pointer flex items-center justify-center transition-colors duration-200 hover:bg-gray-50" onClick={() => { chrome.tabs.create({ url: "https://chatgpt.com/#settings/Personalization", @@ -258,7 +266,7 @@ function App() { > <svg aria-label="ChatGPT Logo" - className="chatgpt-logo" + className="w-4.5 h-4.5 flex-shrink-0 mr-2" fill="currentColor" role="img" viewBox="0 0 24 24" @@ -271,9 +279,9 @@ function App() { </button> </div> - <div className="import-item"> + <div className="flex flex-col gap-2"> <button - className="twitter-btn" + className="w-full py-3 px-3 bg-white text-black border border-gray-200 rounded-md text-sm font-medium cursor-pointer flex items-center justify-center transition-colors duration-200 outline-none appearance-none hover:bg-gray-50 focus:outline-none" onClick={() => { chrome.tabs.create({ url: "https://x.com/i/bookmarks", @@ -283,7 +291,7 @@ function App() { > <svg aria-label="X Twitter Logo" - className="twitter-logo" + className="w-4.5 h-4.5 flex-shrink-0 mr-2" fill="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" @@ -293,7 +301,7 @@ function App() { </svg> Import X Bookmarks </button> - <p className="import-instructions"> + <p className="m-0 text-xs text-gray-500 leading-tight pl-1"> Click on supermemory on top right to import bookmarks </p> </div> @@ -302,11 +310,11 @@ function App() { )} {showProjectSelector && ( - <div className="project-selector"> - <div className="project-selector-header"> + <div className="absolute inset-0 bg-white rounded-lg z-[1000] shadow-xl flex flex-col"> + <div className="flex justify-between items-center p-4 border-b border-gray-200 text-base font-semibold text-black flex-shrink-0"> <span>Select the Project</span> <button - className="project-close-btn" + className="bg-transparent border-none text-xl cursor-pointer text-gray-500 p-0 w-6 h-6 flex items-center justify-center hover:text-black" onClick={() => setShowProjectSelector(false)} type="button" > @@ -314,26 +322,28 @@ function App() { </button> </div> {loadingProjects ? ( - <div className="project-loading">Loading projects...</div> + <div className="py-8 px-4 text-center text-gray-500 text-sm">Loading projects...</div> ) : ( - <div className="project-list"> + <div className="flex-1 overflow-y-auto min-h-0"> {projects.map((project) => ( <button - className={`project-item ${defaultProject?.id === project.id ? "selected" : ""}`} + className={`flex justify-between items-center py-3 px-4 cursor-pointer transition-colors duration-200 border-b border-gray-100 bg-transparent border-none w-full text-left last:border-b-0 hover:bg-gray-50 ${ + defaultProject?.id === project.id ? "bg-blue-50" : "" + }`} key={project.id} onClick={() => handleProjectSelect(project)} type="button" > - <div className="project-item-info"> - <span className="project-item-name"> + <div className="flex flex-col flex-1 gap-0.5"> + <span className="text-sm font-medium text-black break-words leading-tight"> {project.name} </span> - <span className="project-item-count"> + <span className="text-xs text-gray-500"> {project.documentCount} docs </span> </div> {defaultProject?.id === project.id && ( - <span className="project-item-check">✓</span> + <span className="text-blue-600 font-bold text-base">✓</span> )} </button> ))} @@ -343,24 +353,24 @@ function App() { )} </div> ) : ( - <div className="unauthenticated"> - <div className="login-intro"> - <h2 className="login-title"> + <div className="text-center py-2"> + <div className="mb-8"> + <h2 className="m-0 mb-4 text-sm font-normal text-black leading-tight"> Login to unlock all chrome extension features </h2> - <ul className="features-list"> - <li>Save any page to your supermemory</li> - <li>Import all your Twitter / X Bookmarks</li> - <li>Import your ChatGPT Memories</li> + <ul className="list-none p-0 m-0 text-left"> + <li className="py-1.5 text-sm text-black relative pl-5 before:content-['•'] before:absolute before:left-0 before:text-black before:font-bold">Save any page to your supermemory</li> + <li className="py-1.5 text-sm text-black relative pl-5 before:content-['•'] before:absolute before:left-0 before:text-black before:font-bold">Import all your Twitter / X Bookmarks</li> + <li className="py-1.5 text-sm text-black relative pl-5 before:content-['•'] before:absolute before:left-0 before:text-black before:font-bold">Import your ChatGPT Memories</li> </ul> </div> - <div className="login-actions"> - <p className="login-help"> + <div className="mt-8"> + <p className="m-0 mb-4 text-sm text-gray-500"> Having trouble logging in?{" "} <button - className="help-link" + className="bg-transparent border-none text-blue-500 cursor-pointer underline text-sm p-0 hover:text-blue-700" onClick={() => { window.open("mailto:[email protected]", "_blank") }} @@ -371,7 +381,7 @@ function App() { </p> <button - className="login-primary-btn" + className="w-full py-3 px-6 bg-gray-700 text-white border-none rounded-3xl text-base font-medium cursor-pointer transition-colors duration-200 hover:bg-gray-800 disabled:bg-gray-400 disabled:cursor-not-allowed" onClick={() => { chrome.tabs.create({ url: import.meta.env.PROD diff --git a/apps/browser-extension/entrypoints/popup/style.css b/apps/browser-extension/entrypoints/popup/style.css index ee057e19..5e7a2b6f 100644 --- a/apps/browser-extension/entrypoints/popup/style.css +++ b/apps/browser-extension/entrypoints/popup/style.css @@ -15,46 +15,6 @@ -webkit-text-size-adjust: 100%; } -a { - font-weight: 500; - color: #646cff; - text-decoration: inherit; -} -a:hover { - color: #535bf2; -} - -body { - margin: 0; - display: flex; - place-items: center; - min-width: 320px; - min-height: 100vh; -} - -h1 { - font-size: 3.2em; - line-height: 1.1; -} - -button { - border-radius: 8px; - border: 1px solid transparent; - padding: 0.6em 1.2em; - font-size: 1em; - font-weight: 500; - font-family: inherit; - background-color: #1a1a1a; - cursor: pointer; - transition: border-color 0.25s; -} -button:hover { - border-color: #646cff; -} -button:focus, -button:focus-visible { - outline: 4px auto -webkit-focus-ring-color; -} @media (prefers-color-scheme: light) { :root { diff --git a/apps/browser-extension/entrypoints/welcome/Welcome.tsx b/apps/browser-extension/entrypoints/welcome/Welcome.tsx index 205fbad2..be59538c 100644 --- a/apps/browser-extension/entrypoints/welcome/Welcome.tsx +++ b/apps/browser-extension/entrypoints/welcome/Welcome.tsx @@ -1,6 +1,6 @@ function Welcome() { return ( - <div className="min-h-screen flex items-center justify-center p-8 bg-gradient-to-br from-gray-50 to-white"> + <div className="min-h-screen font-[Space_Grotesk,-apple-system,BlinkMacSystemFont,Segoe_UI,Roboto,sans-serif] flex items-center justify-center p-8 bg-gradient-to-br from-gray-50 to-white"> <div className="max-w-4xl w-full text-center"> {/* Header */} <div className="mb-12"> @@ -17,12 +17,16 @@ function Welcome() { {/* Features Section */} <div className="mb-12"> - <h2 className="text-2xl font-semibold text-black mb-8">What can you do with supermemory?</h2> + <h2 className="text-2xl font-semibold text-black mb-8" + >What can you do with supermemory + ?</h2> <div className="grid grid-cols-1 md:grid-cols-2 gap-6 mb-8"> <div className="bg-white border border-gray-200 rounded-xl p-6 text-center transition-all duration-200 shadow-sm hover:-translate-y-0.5 hover:shadow-md hover:border-gray-300"> <div className="text-3xl mb-4 block">💾</div> - <h3 className="text-lg font-semibold text-black mb-3">Save Any Page</h3> + <h3 className="text-lg font-semibold text-black mb-3" + >Save Any Pag + e</h3> <p className="text-sm text-gray-600 leading-snug"> Instantly save web pages, articles, and content to your personal knowledge base @@ -31,7 +35,9 @@ function Welcome() { <div className="bg-white border border-gray-200 rounded-xl p-6 text-center transition-all duration-200 shadow-sm hover:-translate-y-0.5 hover:shadow-md hover:border-gray-300"> <div className="text-3xl mb-4 block">🐦</div> - <h3 className="text-lg font-semibold text-black mb-3">Import Twitter/X Bookmarks</h3> + <h3 className="text-lg font-semibold text-black mb-3"> + Import Twitter/X Bookmarks + </h3> <p className="text-sm text-gray-600 leading-snug"> Bring all your saved tweets and bookmarks into one organized place @@ -40,7 +46,9 @@ function Welcome() { <div className="bg-white border border-gray-200 rounded-xl p-6 text-center transition-all duration-200 shadow-sm hover:-translate-y-0.5 hover:shadow-md hover:border-gray-300"> <div className="text-3xl mb-4 block">🤖</div> - <h3 className="text-lg font-semibold text-black mb-3">Import ChatGPT Memories</h3> + <h3 className="text-lg font-semibold text-black mb-3"> + Import ChatGPT Memories + </h3> <p className="text-sm text-gray-600 leading-snug"> Keep your important AI conversations and insights accessible </p> @@ -48,7 +56,9 @@ function Welcome() { <div className="bg-white border border-gray-200 rounded-xl p-6 text-center transition-all duration-200 shadow-sm hover:-translate-y-0.5 hover:shadow-md hover:border-gray-300"> <div className="text-3xl mb-4 block">🔍</div> - <h3 className="text-lg font-semibold text-black mb-3">AI-Powered Search</h3> + <h3 className="text-lg font-semibold text-black mb-3"> + AI-Powered Search + </h3> <p className="text-sm text-gray-600 leading-snug"> Find anything you've saved using intelligent semantic search </p> |