feat: design system overhaul — sidebar, AI chats, settings, brainstorm, color cleanup
All checks were successful
Deploy to Production / Build and Deploy (push) Successful in 12s
All checks were successful
Deploy to Production / Build and Deploy (push) Successful in 12s
- Sidebar: dynamic brand-accent colors, brainstorm section restyled - AI chat general: popup panel with expand/collapse, hides when contextual AI open - AI chat contextual: tabs reordered (Actions first), X close button, height fix - Settings: all tabs restyled, 6 new color presets (sage, terracotta, iron, etc.) - Global color cleanup: emerald/orange hardcoded → brand-accent dynamic - Brainstorm page: orange → brand-accent throughout - PageEntry animation component added to key pages - Floating AI button: bg-brand-accent instead of hardcoded black - i18n: all 15 locales updated with new AI/billing keys - Billing: freemium quota tracking, BYOK, stripe subscription scaffolding - Admin: integrated into new design - AGENTS.md + CLAUDE.md project rules added
This commit is contained in:
@@ -55,7 +55,11 @@
|
||||
"freezePinnedNotebook": "पिन नोटबुक साइडबार ऑर्डर",
|
||||
"unfreezePinnedNotebook": "नोटबुक साइडबार ऑर्डर को अनपिन करें",
|
||||
"newSubNotebook": "नई उप-नोटबुक",
|
||||
"renameNotebook": "नाम बदलें"
|
||||
"renameNotebook": "नाम बदलें",
|
||||
"sharedNotebookBadge": "· Shared",
|
||||
"sortManual": "कस्टम क्रम",
|
||||
"moveFailed": "नोटबुक ले जाने में विफल",
|
||||
"dropToRoot": "रूट में ले जाने के लिए यहाँ छोड़ें"
|
||||
},
|
||||
"notes": {
|
||||
"title": "नोट्स",
|
||||
@@ -261,7 +265,11 @@
|
||||
"noteDeletedToast": "नोट हटा दिया गया.",
|
||||
"deleteNoteFailedToast": "मिटाया नहीं जा सका.",
|
||||
"documentInfoAria": "दस्तावेज़ जानकारी",
|
||||
"noModification": "कोई परिवर्तन नहीं"
|
||||
"noModification": "कोई परिवर्तन नहीं",
|
||||
"notes.emptyNotebook": "Empty notebook",
|
||||
"notes.emptyNotebookDesc": "This notebook has no notes. Click + to create one.",
|
||||
"notes.noNoteSelected": "No note selected",
|
||||
"notes.selectOrCreateNote": "Select a note from the list or create a new one."
|
||||
},
|
||||
"pagination": {
|
||||
"previous": "←",
|
||||
@@ -615,7 +623,14 @@
|
||||
"presentationReadyBadge": "प्रेजेंटेशन तैयार",
|
||||
"openInLabTitle": "लैब में खोलें",
|
||||
"inlineSummaryMarkdown": "**सारांश:**",
|
||||
"networkErrorShort": "नेटवर्क त्रुटि।"
|
||||
"networkErrorShort": "नेटवर्क त्रुटि।",
|
||||
"contextSourceHeading": "Context source",
|
||||
"tones": {
|
||||
"professional": "Professional",
|
||||
"creative": "Creative",
|
||||
"academic": "Academic",
|
||||
"casual": "Casual"
|
||||
}
|
||||
},
|
||||
"titleSuggestions": {
|
||||
"available": "शीर्षक सुझाव",
|
||||
@@ -1415,7 +1430,10 @@
|
||||
"fontFamilyLabel": "फ़ॉन्ट परिवार",
|
||||
"fontFamilyDescription": "पूरे ऐप में उपयोग किए जाने वाले फ़ॉन्ट का चयन करें",
|
||||
"selectFontFamily": "Inter पठनीयता के लिए अनुकूलित है, सिस्टम आपके OS के मूल फ़ॉन्ट का उपयोग करता है",
|
||||
"fontSystem": "सिस्टम डिफ़ॉल्ट"
|
||||
"fontSystem": "सिस्टम डिफ़ॉल्ट",
|
||||
"fontInterDefault": "Inter (default)",
|
||||
"fontPlayfairDisplay": "Playfair Display",
|
||||
"fontJetBrainsMono": "JetBrains Mono"
|
||||
},
|
||||
"generalSettings": {
|
||||
"title": "सामान्य सेटिंग्स",
|
||||
@@ -1744,7 +1762,27 @@
|
||||
"includeImagesHint": "Extract images from scraped pages and attach them to the generated note",
|
||||
"back": "Back",
|
||||
"configuration": "Configuration",
|
||||
"options": "Options"
|
||||
"options": "Options",
|
||||
"slideThemes": {
|
||||
"modern_wellness": "आधुनिक और वेलनेस",
|
||||
"business_authority": "व्यवसाय और प्राधिकरण",
|
||||
"nature_outdoors": "प्रकृति और बाहर",
|
||||
"vintage_academic": "विंटेज और शैक्षणिक",
|
||||
"soft_creative": "मुलायम और रचनात्मक",
|
||||
"bohemian": "बोहो",
|
||||
"vibrant_tech": "जीवंत और टेक",
|
||||
"craft_artisan": "शिल्प और कारीगर",
|
||||
"tech_night": "टेक और रात (डार्क)",
|
||||
"education_charts": "शिक्षा और चार्ट",
|
||||
"forest_eco": "वन और इको",
|
||||
"elegant_fashion": "सुरुचिपूर्ण और फैशन",
|
||||
"art_food": "कला और भोजन",
|
||||
"luxury_mystery": "लक्ज़री और रहस्य",
|
||||
"pure_tech_blue": "शुद्ध टेक नीला",
|
||||
"coastal_coral": "तटीय कोरल",
|
||||
"vibrant_orange_mint": "जीवंत संतरा और पुदीना",
|
||||
"platinum_white_gold": "प्लैटिनम सफ़ेद सोना"
|
||||
}
|
||||
},
|
||||
"frequencies": {
|
||||
"manual": "मैनुअल",
|
||||
@@ -2033,7 +2071,19 @@
|
||||
"superscript": "ऊपर की ओर लिखा हुआ",
|
||||
"subscript": "सबस्क्रिप्ट",
|
||||
"addBlock": "ब्लॉक जोड़ें",
|
||||
"placeholder": "कमांड के लिए '/' टाइप करें..."
|
||||
"placeholder": "कमांड के लिए '/' टाइप करें...",
|
||||
"aiReformulateFailed": "AI सहायक इस पाठ को प्रोसेस नहीं कर सका। दोबारा कोशिश करें।",
|
||||
"translateTargets": {
|
||||
"Francais": "फ़्रेंच",
|
||||
"English": "अंग्रेज़ी",
|
||||
"Espanol": "स्पेनिश",
|
||||
"Deutsch": "जर्मन",
|
||||
"Persan": "फ़ारसी",
|
||||
"Portugais": "पुर्तगाली",
|
||||
"Italiano": "इतालवी",
|
||||
"Chinois": "चीनी",
|
||||
"Japonais": "जापानी"
|
||||
}
|
||||
},
|
||||
"brainstorm": {
|
||||
"title": "Waves of Thought",
|
||||
@@ -2098,6 +2148,181 @@
|
||||
"joined": "सत्र में शामिल हुए",
|
||||
"idea_dismissed": "एक विचार को खारिज कर दिया",
|
||||
"invite_created": "एक आमंत्रण बनाया"
|
||||
},
|
||||
"shareDialogTitle": "Share brainstorm",
|
||||
"shareSearchLabel": "Find someone",
|
||||
"shareNameOrEmailPlaceholder": "Name or email…",
|
||||
"shareSubmit": "Share",
|
||||
"shareSubmitting": "Sending…",
|
||||
"shareFooterHint": "They will get a notification to accept or decline.",
|
||||
"sharePublicLink": "Public link",
|
||||
"shareGuestsCanEdit": "Allow guests to edit",
|
||||
"feedbackInviteSent": "Invitation sent!",
|
||||
"feedbackInviteResent": "Invitation resent!",
|
||||
"feedbackAlreadyShared": "This person already has access to this brainstorm.",
|
||||
"feedbackAlreadyPending": "An invitation is already pending for this person.",
|
||||
"feedbackGenericError": "Error",
|
||||
"unnamedPerson": "No name",
|
||||
"canvasEditTitleReply": "Reply",
|
||||
"canvasEditTitleNewIdea": "New idea",
|
||||
"canvasPlaceholderReply": "Your reply…",
|
||||
"canvasPlaceholderIdea": "Your idea…",
|
||||
"canvasShortcutSave": "save",
|
||||
"canvasShortcutCancel": "cancel",
|
||||
"canvasChildBranch": "Child",
|
||||
"canvasDoubleClickHint": "Double-click to add an idea",
|
||||
"ideaDetailDescription": "Description",
|
||||
"ideaDetailConnection": "Connection",
|
||||
"ideaDetailNovelty": "Novelty",
|
||||
"ideaDetailWave": "Wave",
|
||||
"waveFlavorVariation": "Variation",
|
||||
"waveFlavorAnalogy": "Analogy",
|
||||
"waveFlavorDisruption": "Disruption",
|
||||
"liveCollaborationTitle": "Live collaboration",
|
||||
"liveStatus": "Live",
|
||||
"liveYouMarker": "(You)",
|
||||
"liveOtherParticipants": "{count} other participants",
|
||||
"guestReadOnlyNotice": "You're viewing this brainstorm as a guest. Sign in to edit.",
|
||||
"impactNotesEnriched": "{count} note(s) enriched",
|
||||
"impactNotesMarkedDry": "{count} note(s) marked dry",
|
||||
"impactSeparator": " · ",
|
||||
"exportNotebookPrefix": "Notebook:",
|
||||
"playbackStep": "Step {current}/{total}",
|
||||
"playbackStepsCount": "{count} steps",
|
||||
"playbackReturnToLive": "Return to live",
|
||||
"canvasWaitingHint": "The canvas is waiting for your spark...",
|
||||
"seedNodeBadge": "SEED",
|
||||
"originalSeedDescription": "Original seed idea",
|
||||
"convertedToNoteStatus": "Converted to note",
|
||||
"toastExpandSuccess": "Ideas expanded!",
|
||||
"toastExpandFailed": "Failed to expand",
|
||||
"toastDismissSuccess": "Idea dismissed",
|
||||
"toastDismissFailed": "Failed to dismiss",
|
||||
"toastConvertSuccess": "Idea converted to note!",
|
||||
"toastConvertFailed": "Failed to convert",
|
||||
"toastExportNoteSuccess": "Exported as note!",
|
||||
"toastExportFailed": "Failed to export",
|
||||
"legendSeed": "Seed",
|
||||
"legendVariations": "Variations",
|
||||
"legendAnalogies": "Analogies",
|
||||
"legendDisruptions": "Disruptions",
|
||||
"exportFailedMessage": "Export failed",
|
||||
"exportDefaultNotebookName": "Brainstorm",
|
||||
"exportDefaultNoteTitle": "Synthesis",
|
||||
"exportOpening": "Opening…",
|
||||
"ownerBadge": "Owner",
|
||||
"waveBadge": "Wave {wave}"
|
||||
},
|
||||
"usageMeter": {
|
||||
"packName": "AI Discovery Pack",
|
||||
"featureSearch": "Search",
|
||||
"featureTags": "Tags",
|
||||
"featureTitles": "Titles",
|
||||
"unlimited": "Unlimited",
|
||||
"remaining": "{count} left",
|
||||
"upgradeTitle": "Upgrade to Pro",
|
||||
"upgradeDescription": "You've used all your AI Discovery Pack credits. Upgrade to Pro for higher limits and additional features.",
|
||||
"proIncludes": "Pro includes:",
|
||||
"proSearch": "100 semantic searches / month",
|
||||
"proTags": "200 auto-tags / month",
|
||||
"proTitles": "200 auto-titles / month",
|
||||
"proReformulate": "50 reformulations / month",
|
||||
"proChat": "100 chat messages / month",
|
||||
"later": "Later",
|
||||
"upgradePricing": "Upgrade to Pro",
|
||||
"addApiKey": "Use your own API key (BYOK)"
|
||||
},
|
||||
"byokSettings": {
|
||||
"title": "Your API keys (BYOK)",
|
||||
"description": "Connect your own LLM provider keys to bypass Discovery Pack quotas. Keys are encrypted at rest.",
|
||||
"badgeActive": "BYOK active",
|
||||
"tierRequired": "BYOK requires a Pro plan or higher. Upgrade to connect your API keys.",
|
||||
"provider": "Provider",
|
||||
"providerPlaceholder": "Select a provider",
|
||||
"alias": "Label (optional)",
|
||||
"aliasPlaceholder": "e.g. Work OpenAI",
|
||||
"apiKey": "API key",
|
||||
"apiKeyPlaceholder": "sk-...",
|
||||
"save": "Save key",
|
||||
"saved": "API key saved",
|
||||
"deleted": "API key removed",
|
||||
"error": "Could not save API key",
|
||||
"loadError": "Could not load API keys",
|
||||
"loading": "Loading keys...",
|
||||
"empty": "No API keys configured yet.",
|
||||
"confirmDelete": "Remove this API key permanently?",
|
||||
"toggleActive": "Active",
|
||||
"providers": {
|
||||
"openai": "OpenAI",
|
||||
"anthropic": "Anthropic",
|
||||
"deepseek": "DeepSeek",
|
||||
"openrouter": "OpenRouter",
|
||||
"minimax": "MiniMax",
|
||||
"zai": "Z.ai",
|
||||
"google": "Google",
|
||||
"mistral": "Mistral",
|
||||
"glm": "GLM"
|
||||
}
|
||||
},
|
||||
"billing": {
|
||||
"title": "बिलिंग",
|
||||
"currentPlan": "वर्तमान योजना",
|
||||
"upgradePlan": "योजना अपग्रेड करें",
|
||||
"manageBilling": "बिलिंग प्रबंधित करें",
|
||||
"manageDescription": "भुगतान विधि अपडेट करें, चालान देखें या रद्द करें।",
|
||||
"openPortal": "बिलिंग पोर्टल खोलें",
|
||||
"renewsOn": "नवीनीकरण",
|
||||
"expiresOn": "समाप्ति",
|
||||
"canceledAt": "रद्द — पहुँच तक",
|
||||
"freePlan": "निःशुल्क योजना",
|
||||
"proPlan": "Pro योजना",
|
||||
"businessPlan": "Business योजना",
|
||||
"enterprisePlan": "Enterprise योजना",
|
||||
"perMonth": "/माह",
|
||||
"perYear": "/वर्ष",
|
||||
"monthly": "मासिक",
|
||||
"annual": "वार्षिक",
|
||||
"save": "बचत",
|
||||
"upgradeTitle": "योजना चुनें",
|
||||
"proPrice": "€9.90",
|
||||
"businessPrice": "€29.90",
|
||||
"proAnnualPrice": "€99",
|
||||
"businessAnnualPrice": "€299",
|
||||
"proFeature1": "100 सिमेंटिक खोज / माह",
|
||||
"proFeature2": "200 स्वचालित टैग / माह",
|
||||
"proFeature3": "50 पुनर्लेखन / माह",
|
||||
"proFeature4": "100 चैट संदेश / माह",
|
||||
"businessFeature1": "1,000 सिमेंटिक खोज / माह",
|
||||
"businessFeature2": "1,000 स्वचालित टैग / माह",
|
||||
"businessFeature3": "500 पुनर्लेखन / माह",
|
||||
"businessFeature4": "1,000 चैट संदेश / माह",
|
||||
"enterpriseTitle": "Enterprise",
|
||||
"enterpriseDescription": "कस्टम कोटा, SSO, प्राथमिकता समर्थन।",
|
||||
"contactSales": "बिक्री से संपर्क करें",
|
||||
"startCheckout": "शुरू करें",
|
||||
"checkoutLoading": "भुगतान लोड हो रहा है…",
|
||||
"checkoutSuccess": "सदस्यता सक्रिय हुई! {tier} में आपका स्वागत है।",
|
||||
"checkoutCanceled": "भुगतान रद्द किया गया।",
|
||||
"active": "सक्रिय",
|
||||
"trialing": "परीक्षण",
|
||||
"pastDue": "बकाया",
|
||||
"canceled": "रद्द",
|
||||
"inactive": "निष्क्रिय",
|
||||
"billingEnabled": "बिलिंग सक्षम",
|
||||
"billingDisabled": "इस इंस्टेंस पर बिलिंग सक्षम नहीं है।",
|
||||
"usageThisPeriod": "इस अवधि में उपयोग",
|
||||
"periodRange": "अवधि",
|
||||
"unlimited": "असीमित",
|
||||
"noUsage": "कोई उपयोग डेटा नहीं",
|
||||
"billingHistory": "बिलिंग इतिहास",
|
||||
"viewInvoices": "पोर्टल में चालान प्रबंधित करें",
|
||||
"nextBillingDate": "अगली बिलिंग तिथि",
|
||||
"billingPeriod": "बिलिंग अवधि",
|
||||
"planSince": "सदस्य",
|
||||
"checkoutSuccessTitle": "सदस्यता सक्रिय!",
|
||||
"checkoutSuccessBody": "{tier} में आपका स्वागत है।",
|
||||
"subscriptionType": "subscriptionType",
|
||||
"renewalDate": "renewalDate",
|
||||
"noRenewalDate": "—"
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user