İçerik üretici araçları · Yeni kaynak

Kajabi Sage Tasarım Sistemi.

Kurs bağlamı açık, kopyalama eylemleri belirgin ve pano geri bildirimi gerçeğe uygun, içerik üreticilere yönelik bir paylaşım paneli oluşturun. Sage’in Rails bileşen anatomisini, yayımlanmış tipografi özelliklerini ve harici olarak yüklenen yeni Pine tasarım belirteci katmanını inceleyin.

OpenDesign Kılavuzu7 Bölüm42 Referans KaydıÖzgün Uygulama Kılavuzu
01

Kajabi Sage Tasarım Sistemi Arayüz Önizlemesi

Kurgusal bir kurs seçin, bağlantıyı veya mesajı inceleyin ve görünür yükü elle kopyalama seçeneğiyle aynen kopyalayın.

İçerik üretici kurs paylaşım paneliÖrneğin Tamamını Aç
Sage Copy Text anatomisinin, yayımlanmış tipografi özelliklerinin ve varsayılan/açık Pine değerlerinin canlı hâlinin yerel HTML ile bağımsız yorumu. Sage çalışma zamanını veya özel yazı tipi paketini kullanmaz. · Uygulama başvurusu
02

Kajabi Sage Tasarım Sistemi Tasarım Referansı

Sage’ın herkese açık bileşen ve tipografi belgeleriyle, mevcut belgelerin yüklediği varsayılan/açık Pine stil sayfası. Yayımlanmış Sage tipografi tablosu ile daha yeni Pine takma adları ayrı referanslardır; bunları sessizce aynı kabul etmeyin.

Pine’ın canlı renk rolleri

Kaynak
Ad / KuralDeğer / YapılandırmaKullanım
--pine-color-primaryvar(--pine-color-grey-900)Sage belgelerinin yüklediği geçerli varsayılan/açık Pine stil sayfasının anlık görüntüsü.
--pine-color-primary-hovervar(--pine-color-grey-950)Sage belgelerinin yüklediği geçerli varsayılan/açık Pine stil sayfasının anlık görüntüsü.
--pine-color-textvar(--pine-color-grey-900)Sage belgelerinin yüklediği geçerli varsayılan/açık Pine stil sayfasının anlık görüntüsü.
--pine-color-text-primaryvar(--pine-color-white)Sage belgelerinin yüklediği geçerli varsayılan/açık Pine stil sayfasının anlık görüntüsü.
--pine-color-background-appvar(--pine-color-grey-100)Sage belgelerinin yüklediği geçerli varsayılan/açık Pine stil sayfasının anlık görüntüsü.
--pine-color-background-containervar(--pine-color-white)Sage belgelerinin yüklediği geçerli varsayılan/açık Pine stil sayfasının anlık görüntüsü.
--pine-color-bordervar(--pine-color-grey-300)Sage belgelerinin yüklediği geçerli varsayılan/açık Pine stil sayfasının anlık görüntüsü.

Pine’ın canlı temel renkleri

Kaynak
Ad / KuralDeğer / YapılandırmaKullanım
--pine-color-grey-100#f8f8f8 Sage belgelerinin yüklediği geçerli varsayılan/açık Pine stil sayfasının anlık görüntüsü.
--pine-color-grey-300#d2d1d1 Sage belgelerinin yüklediği geçerli varsayılan/açık Pine stil sayfasının anlık görüntüsü.
--pine-color-grey-900#343332 Sage belgelerinin yüklediği geçerli varsayılan/açık Pine stil sayfasının anlık görüntüsü.
--pine-color-grey-950#1a1a19 Sage belgelerinin yüklediği geçerli varsayılan/açık Pine stil sayfasının anlık görüntüsü.
--pine-color-white#ffffff Sage belgelerinin yüklediği geçerli varsayılan/açık Pine stil sayfasının anlık görüntüsü.

Pine’ın canlı boyutları ve köşe yuvarlaklığı

Kaynak
Ad / KuralDeğer / YapılandırmaKullanım
--pine-dimension-xsvar(--pine-dimension-100)Sage belgelerinin yüklediği geçerli varsayılan/açık Pine stil sayfasının anlık görüntüsü.
--pine-dimension-smvar(--pine-dimension-200)Sage belgelerinin yüklediği geçerli varsayılan/açık Pine stil sayfasının anlık görüntüsü.
--pine-dimension-mdvar(--pine-dimension-300)Sage belgelerinin yüklediği geçerli varsayılan/açık Pine stil sayfasının anlık görüntüsü.
--pine-dimension-lgvar(--pine-dimension-400)Sage belgelerinin yüklediği geçerli varsayılan/açık Pine stil sayfasının anlık görüntüsü.
--pine-dimension-1008pxSage belgelerinin yüklediği geçerli varsayılan/açık Pine stil sayfasının anlık görüntüsü.
--pine-dimension-20016pxSage belgelerinin yüklediği geçerli varsayılan/açık Pine stil sayfasının anlık görüntüsü.
--pine-dimension-30024pxSage belgelerinin yüklediği geçerli varsayılan/açık Pine stil sayfasının anlık görüntüsü.
--pine-dimension-40032pxSage belgelerinin yüklediği geçerli varsayılan/açık Pine stil sayfasının anlık görüntüsü.
--pine-border-radius-mdvar(--pine-dimension-125)Sage belgelerinin yüklediği geçerli varsayılan/açık Pine stil sayfasının anlık görüntüsü.
--pine-dimension-12510pxSage belgelerinin yüklediği geçerli varsayılan/açık Pine stil sayfasının anlık görüntüsü.
--pine-border-radius-full9999pxSage belgelerinin yüklediği geçerli varsayılan/açık Pine stil sayfasının anlık görüntüsü.

Pine’ın canlı tipografi girdisi

Kaynak
Ad / KuralDeğer / YapılandırmaKullanım
--pine-font-family-bodyvar(--pine-font-family-inter)Sage belgelerinin yüklediği geçerli varsayılan/açık Pine stil sayfasının anlık görüntüsü.
--pine-font-family-inter"Inter", system-ui, "Segoe UI", "Roboto", "Ubuntu", sans-serifSage belgelerinin yüklediği geçerli varsayılan/açık Pine stil sayfasının anlık görüntüsü.
--pine-font-size-body-mdvar(--pine-font-size-100)Sage belgelerinin yüklediği geçerli varsayılan/açık Pine stil sayfasının anlık görüntüsü.
--pine-font-size-10014pxSage belgelerinin yüklediği geçerli varsayılan/açık Pine stil sayfasının anlık görüntüsü.
--pine-font-size-body-lgvar(--pine-font-size-116)Sage belgelerinin yüklediği geçerli varsayılan/açık Pine stil sayfasının anlık görüntüsü.
--pine-font-size-11616pxSage belgelerinin yüklediği geçerli varsayılan/açık Pine stil sayfasının anlık görüntüsü.

Yayımlanmış Sage tipografi sınıfları

Kaynak
Ad / KuralDeğer / YapılandırmaKullanım
t-sage-heading-140px / 48px; 700; -0.6px trackingYayımlanmış belge tipografi belirtimi.
t-sage-heading-232px / 40px; 700; -0.5pxYayımlanmış başlık belirtimi.
t-sage-heading-328px / 32px; 700; -0.15pxYayımlanmış başlık belirtimi.
t-sage-heading-424px / 32px; 600; -0.15pxYayımlanmış başlık belirtimi.
t-sage-body16px / 24px; 400Yayımlanmış gövde metni belirtimi.
t-sage-body-small14px / 20px; 400Destekleyici tipografi belirtimi yayımlandı.
t-sage-body-xsmall12px / 16px; 400Yayımlanmış en küçük gövde metni belirtimi.
Body weight suffixes-med 500 / -semi 600 / -bold 700Gövde sınıfı ailesine ekleyin.

Kopyalama bileşeni özellikleri

Kaynak
Ad / KuralDeğer / YapılandırmaKullanım
SageCopyText.valueRequired stringGörüntülenecek ve kopyalanacak metin.
semiboldBoolean, default falseTüm bloğa vurgu.
SageCopyButton.fill_containerBoolean, default falseKopyala düğmesinin kapsayıcının tamamını kaplamasını sağlar.
SageCopyButton.borderlessBoolean exampleDüşük vurgulu kopyalama eylemi.
SageCopyTextCard.truncate_contentstrue enables truncationUzun içeriği yalnızca tam metin erişilebilir kalacaksa kısıtlayın.
03

Kajabi Sage Tasarım Sistemi Eksiksiz Kılavuz

Bu sistemi gerçek bir arayüz için seçmeye, uygulamaya ve gözden geçirmeye yönelik pratik bir kılavuz.

DESIGN-kajabi-sage.md

Eksiksiz yönlendirme, uygulama için başlangıç noktası ve kaynak bağlantıları.

Kılavuzu İndir

Kajabi Sage Tasarım Sistemi İçerik üreticisi iş akışı için paylaşım paneli

Bağlantısının yanında kurs kolayca tanınır

Sage, Kajabi’nin içerik üreticilerine ve bilgi ticaretine yönelik arayüzlerine hizmet eder. Kurs paylaşım paneli, ürün bağlamını, uzun bir teknik değeri ve başarısızlığı sayfadan bağımsız olabilen bir eylemi bir araya getirdiği için kullanışlı, küçük ölçekli bir tasarımdır. Örnek, özgün kapak görsellerine sahip iki kurgusal kurs, bir öğrenci URL’si ve e-postayla gönderilmeye hazır bir mesaj sunar.

Bu OpenDesign kılavuzundan

Kurs değiştirildiğinde her iki çıktı da güncellenir. Çıktı biçimi değiştirildiğinde kopyalanacak metin değişir; seçili kurs ise görünür kalır. Hiçbir içerik yayımlanmaz veya gönderilmez. İsteğe bağlı tek yan etki, kişi panoya kopyalama düğmesini etkinleştirdiğinde oluşur.

Destekleyici belirtimi okuyun

Kajabi Sage Tasarım Sistemi ile Pine arasında açık bir bağımlılık sınırı vardır

CSS Renk işlevi her zaman bir hex değeri aramaz

Mevcut Sage Assets README’sinde Pine belirteçlerinin Sage Assets paketine eklenmediği, bunların kullanan uygulama tarafından yüklendiği belirtilir. README, anlamsal bir CSS değişkeni döndüren sage-color() ile Sass renk işlemlerinde kullanılmak üzere eski değerleri okuyan sage-color-hex() işlevlerini birbirinden ayırır. Artık var(...) döndüren bir renk işlevi, derleme zamanında yapılan hex hesaplamalarında güvenle kullanılamaz.

Canlı belgeler @kajabi-ui/styles/dist/pine/pine.css dosyasını yükler. Bu stil sayfasının varsayılan/açık tema kökünde birincil rol, grey-900 üzerinden çözülürken eski README’deki hex örneği mavidir. Kılavuz bu bilgileri ayrı tutar: ilki canlı anlamsal rolü, ikincisi eski hex değer aramasını gösterir. Yeni bir uygulama, varsayıma dayanarak birini diğerinin yerine kullanmamalıdır.

Destekleyici belirtimi okuyun

Kajabi Sage Tasarım Sistemi Uygulamada ölçülülük, içerikte ifade gücü

Eylem renklerini anlamlarına bağlı tutun

Sage renk yönergeleri, arayüze rastgele bir kişilik katmak yerine etkileşimi, seçili durumu ve geri bildirimi belirtmek için renk kullanır. Örnekte uygulama çerçevesi nötr tutulur; ifade gücünü kurs görselleri sağlar. Böylece her paneli farklı bir durum rengine boyamadan kopyalama eylemini bulmak kolaylaşır.

Başarı durumu yalnızca pano yazma işlemi başarılı olduğunda gösterilmelidir. Pano erişimi engellendiğinde yeşil bir başarı mesajı yerine metni elle kopyalamaya yönelik kullanışlı bir durum sunulmalıdır. Seçili kurs ve çıktı biçimi kendi kontrol durumlarını kullanır ve son kopyalama sonucundan bağımsızdır.

Destekleyici belirtimi okuyun

Kajabi Sage Tasarım Sistemi Yayımlanmış Sage özellikleri ve mevcut belirteç takma adları

Yazı tipi rolü ve HTML anlamı birbirinden bağımsızdır

Yayımlanmış Sage tablosunda kesin boyut, satır yüksekliği ve kalınlık birleşimleriyle t-sage-heading ve t-sage-body sınıfları yer alır. Bu tablo, belgelenmiş özelliklerin yeniden oluşturulması için kullanışlıdır. Daha yeni Pine stil sayfası, 14 piksellik orta kalınlıkta metin rolü de dâhil olmak üzere kendi gövde metni takma adlarını sunar. Bu nedenle güncel bir entegrasyonda bileşenin hangi katmanı kullandığı incelenmelidir.

Bir öğeye görsel başlık sınıfı uygulamak, o öğenin anlamsal düzeyini değiştirmez. Kurs adı başlık, URL form içeriği, kopyalama eylemi ise düğme olarak kalır. Önizlemede yayımlanmış Sage 32/40 başlık ve 16/24 okuma stilleri, sistem yazı tipi yedeğiyle kullanılır; yazı tipi dosyalarının pakete dâhil olduğu iddia edilmez.

Destekleyici belirtimi okuyun

Kajabi Sage Tasarım Sistemi Metin Kopyalama, Kopyala Düğmesi ve Metin Kopyalama Kartı

Yapıyı içeriğin biçimine göre seçin

Belgelerde satır içi metin kopyalama, blok kartı ve kopyalama düğmesi ayrı ayrı açıklanır. Etiketin ve birden çok satırın bir arada kalması gerektiğinde blok kullanışlıdır. Düğme kapsayıcının tamamını kaplayabilir veya kenarlıksız gösterilebilir; yarı kalın yazı tipi ise bileşen düzeyinde vurgu sağlar.

Örnekte etkin içerik için salt okunur bir textarea kullanılır. Bu, bilinçli bir yerel uygulama tercihidir: pano erişimi kullanılamadığında metnin seçilmesini sağlar ve çok satırlı e-posta mesajını okunabilir tutar. Değeri, görünmez ek bir etiket ya da eski bir kurs tanımlayıcısı olmaksızın tarayıcıya gönderilen içeriğin aynısıdır.

  • Satır içi metin kopyalama, başka metinlerin yanında yer alan kısa ve tek bir değer için uygundur.
  • Kopyalama kartı, ilgili satırları incelemeye yetecek genişlikte bir arada tutar.
  • Değer uzun veya çok satırlı olduğunda ayrı bir düğme, eylemi belirginleştirir.

Destekleyici belirtimi okuyun

Kajabi Sage Tasarım Sistemi Uzun bağlantılar panelin düzenini bozmamalı

Ardışık düzene geçen iki sütunlu tasarım

Masaüstü örneğinde kurs seçim alanı, etkin kursun ve paylaşım kontrollerinin yanında yer alır. Küçük ekranlarda bu alan yatay sıralanmış iki karta dönüşür; paylaşım paneli ise bu kartların altında görünür. Değer alanındaki metin kapsayıcı içinde kaydırılır; düğme alanın altında görünür kalır.

Resmî Metin Kopyalama yönergeleri, yerel bir maksimum genişlik önerir ve kart içeriğinin kısaltılmasına izin verir. Bu örnekte URL’nin önemli bir bölümünü gizlemek yerine metni kaydırma ve elle seçme tercih edilir. İç boşluklar, doğrulanmış Pine 8/16/24/32 boyut adımlarını izlerken iki sütun oranı ve kırılma noktası uygulama tercihidir.

Destekleyici belirtimi okuyun

Kajabi Sage Tasarım Sistemi Eksiksiz bir herkese açık örnek ve yerel, dürüst bir uygulama yolu

Yalnızca kullanıcı eylemi başlattığında kopyalayın

Bağımsız kurulum, herkese açık Pine belirteçlerini yükler ve kendi HTML bileşenini ve pano işleyicisini sağlar. Sage paket hesabı olmadan çalışabilir. Yerel Rails örneği ise mevcut bir Sage uygulaması için ayrı bir bileşim olarak tanımlanmıştır; tek başına yapıştırılan bir yardımcı işlevin sistemi kurduğu iddia edilmez.

Sage Assets, yayımlama kayıt defteri olarak GitHub Packages’ı belirtir. Bu yöntemi kullanan ekipler onaylı kayıt defteri erişimlerini kullanmalı ve anlamsal renk değişkenlerine güvenmeden önce harici Pine katmanını yüklemelidir. Belgelerde yazı tipi etki alanı kısıtlamaları da belirtilir; bu nedenle sistem yazı tipi yedeği kullanmak, marka yazı tiplerinin başarıyla yüklendiğini varsaymaktan daha doğrudur.

  1. Bağımsız örneği localhost veya HTTPS üzerinden açın, ardından bir kurs ve içerik biçimi seçin.
  2. Kopyala düğmesini etkinleştirin. Yalnızca pano vaadi çözümlendiğinde başarı bildirin; aksi durumda metni elle kopyalamak üzere seçin.
  3. Kursu veya biçimi değiştirdiğinizde, eski kopyalama durumunu temizleyin; böylece bu durum güncel olmayan içeriği hiçbir zaman tanımlamaz.

Destekleyici belirtimi okuyun

Kajabi Sage Tasarım Sistemi Bileşen Örnekleri

Tamamlanmış, bağımsız ve etkileşimli örnek

Belgenin tamamını index.html adıyla kaydedip tarayıcıda açın. Yayımlanmış yazı tipi özelliklerinin ve canlı varsayılan/açık tema Pine değerlerinin bağımsız, yerel HTML yorumu. Sage çalışma zamanı veya tescilli yazı tipi paketi gerekmez.

html
<!doctype html><html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Course sharing — Sage interpretation</title><style>*{box-sizing:border-box}body{margin:0;background:#f8f8f8;color:#343332;font:16px/1.5 system-ui,sans-serif}main{max-width:1120px;margin:auto;padding:32px}.top{display:flex;justify-content:space-between;font-size:12px;letter-spacing:.08em;border-bottom:1px solid #d2d1d1;padding-bottom:16px;gap:16px}h1{font-size:32px;line-height:40px;letter-spacing:-.5px;margin:24px 0 8px}h2{font-size:24px;line-height:32px;margin:0 0 8px}.intro{margin:0 0 24px;color:#6c6a69}.grid{display:grid;grid-template-columns:240px 1fr;gap:24px}.courses{display:grid;gap:16px;align-content:start}.course{background:white;border:1px solid #d2d1d1;border-radius:10px;padding:12px;text-align:left;color:inherit;font:inherit;cursor:pointer}.course[aria-pressed=true]{border:2px solid #343332;padding:11px}.course small{display:block;font-size:12px;color:#6c6a69}.art{position:relative;overflow:hidden;border-radius:6px;display:grid;place-content:center;letter-spacing:.08em;font-size:11px;text-align:center}.art b{z-index:1;position:relative;line-height:1.2}.art.studio{background:#f2b9a5;color:#682923}.art.studio:before{content:'';position:absolute;border-radius:50%;width:150px;height:150px;background:#c26e4f;right:-40px;top:25px}.art.studio:after{content:'';position:absolute;width:55px;height:120px;background:#f9e7bc;transform:rotate(25deg);left:20px;top:-20px}.art.journal{background:#d1ddaa;color:#203a30}.art.journal:before{content:'';position:absolute;width:100px;height:160px;border:22px solid #68865b;border-radius:60% 0;transform:rotate(20deg);right:5px;top:-5px}.art.journal:after{content:'';position:absolute;width:90px;height:70px;border:18px solid #b29f59;border-radius:50%;left:-30px;bottom:-20px}.course .art{height:115px;margin-bottom:12px}.panel{background:white;padding:24px;border:1px solid #d2d1d1;border-radius:10px}.hero{display:grid;grid-template-columns:140px 1fr;gap:24px;align-items:center;margin-bottom:24px}.hero .art{height:140px}.hero p{font-size:14px;color:#6c6a69;margin:0}.format{display:flex;gap:16px;border-bottom:1px solid #d2d1d1;margin-bottom:24px}.format button{background:none;border:0;border-bottom:3px solid transparent;padding:10px 0;font:inherit;color:#6c6a69;cursor:pointer}.format button[aria-pressed=true]{border-bottom-color:#343332;color:#343332}label{display:block;font-size:14px;font-weight:600;margin-bottom:8px}textarea{width:100%;resize:vertical;min-height:135px;border:1px solid #d2d1d1;border-radius:10px;padding:16px;font:14px/1.5 system-ui;background:#fcfcfc;color:#343332}.copy{font:600 14px/20px system-ui;border:0;border-radius:9999px;background:#343332;color:white;padding:12px 24px;cursor:pointer;margin-top:16px}.copy:hover{background:#1a1a19}button:focus-visible,textarea:focus-visible{outline:3px solid #6c6a69;outline-offset:3px}.status{min-height:42px;font-size:13px;color:#4d4d4c}.foot{font-size:12px;color:#6c6a69;margin-top:24px}@media(max-width:650px){main{padding:20px}.grid{grid-template-columns:1fr}.courses{grid-template-columns:1fr 1fr;gap:12px}.course .art{height:85px}.hero{grid-template-columns:90px 1fr;gap:16px}.hero .art{height:110px}.panel{padding:20px}.top{flex-direction:column;gap:4px}h1{font-size:28px;line-height:36px}h2{font-size:20px;line-height:28px}}</style><main><header class="top"><b>CREATOR WORKSPACE</b><span>Local sharing specimen</span></header><h1>Give your course a clear invitation.</h1><p class="intro">Choose a sample course and prepare the exact text to share.</p><div class="grid"><nav class="courses" aria-label="Choose a course"><button class="course" data-course="studio" aria-pressed="true"><div class="art studio" aria-hidden="true"><b>STUDIO<br>NOTES</b></div><b>Studio Notes</b><small>6 lessons · Original sample</small></button><button class="course" data-course="journal" aria-pressed="false"><div class="art journal" aria-hidden="true"><b>FIELD<br>JOURNAL</b></div><b>Field Journal</b><small>4 lessons · Original sample</small></button></nav><section class="panel"><div class="hero"><div id="cover" class="art studio" aria-hidden="true"><b>STUDIO<br>NOTES</b></div><div><h2 id="title">Studio Notes</h2><p id="description">A fictional course about building a daily creative practice.</p></div></div><div class="format" aria-label="Copy format"><button data-format="link" aria-pressed="true">Course link</button><button data-format="message" aria-pressed="false">Invitation text</button></div><label for="payload">Text to copy</label><textarea id="payload" readonly></textarea><button id="copy" class="copy" type="button">Copy visible text</button><p class="status" id="status" role="status"></p></section></div><p class="foot">Independent Sage interpretation using verified Pine light-theme colors and dimensions. Original course covers; system-font fallback. No course is published and no message is sent.</p></main><script>const courses={studio:{name:'Studio Notes',slug:'studio-notes',desc:'A fictional course about building a daily creative practice.',art:'STUDIO<br>NOTES'},journal:{name:'Field Journal',slug:'field-journal',desc:'A fictional course about observing, collecting and recording ideas.',art:'FIELD<br>JOURNAL'}};let selected='studio',format='link';const payload=document.querySelector('#payload'),status=document.querySelector('#status');function render(){const c=courses[selected],url='https://example.com/courses/'+c.slug;document.querySelector('#title').textContent=c.name;document.querySelector('#description').textContent=c.desc;document.querySelector('#cover').className='art '+selected;document.querySelector('#cover').innerHTML='<b>'+c.art+'</b>';payload.value=format==='link'?url:'You are invited to explore '+c.name+'.\n\n'+c.desc+'\n\nView the sample: '+url;document.querySelectorAll('[data-course]').forEach(b=>b.setAttribute('aria-pressed',b.dataset.course===selected));document.querySelectorAll('[data-format]').forEach(b=>b.setAttribute('aria-pressed',b.dataset.format===format));status.textContent=''}document.querySelectorAll('[data-course]').forEach(b=>b.onclick=()=>{selected=b.dataset.course;render()});document.querySelectorAll('[data-format]').forEach(b=>b.onclick=()=>{format=b.dataset.format;render()});document.querySelector('#copy').onclick=async()=>{try{await navigator.clipboard.writeText(payload.value);status.textContent='Visible text copied.'}catch{payload.focus();payload.select();status.textContent='Copy was unavailable. The text is selected; copy it manually.'}};render();</script></html>

Kod referansı

  • Kopyalama denemelerinde tarayıcı panosu API kullanılır ve elle kopyalama seçeneği sunulur. Kurs görselleri özgündür; yerel Rails CopyText bileşenleri ayrı olarak belgelenmiştir.

Hata yönetimi içeren eksiksiz kopyalama etkileşimi

Tarayıcı izinleri veya gömülü bağlam pano yazma işlemlerine izin vermediğinde kopyalanacak metin seçilebilir durumda kalır.

html
<!doctype html>
<html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
<title>Share a sample course link</title>
<!-- Public Pine token stylesheet used by the Sage documentation. Pin its reviewed package version in production. -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@kajabi-ui/styles@latest/dist/pine/pine.css">
<style>
body{font-family:var(--pine-font-family-body);color:var(--pine-color-text);background:var(--pine-color-background-app);padding:var(--pine-dimension-md)}
main{max-width:42rem;margin:auto;background:var(--pine-color-background-container);padding:var(--pine-dimension-md);border:var(--pine-border-width) solid var(--pine-color-border);border-radius:var(--pine-border-radius-md)}
textarea{box-sizing:border-box;width:100%;padding:var(--pine-dimension-sm);font:inherit;resize:vertical}
button{font:inherit;cursor:pointer;margin-top:var(--pine-dimension-sm);padding:var(--pine-dimension-xs) var(--pine-dimension-sm)}
button:focus-visible,textarea:focus-visible{outline:2px solid currentColor;outline-offset:3px}
</style><main><h1>Share a sample course link</h1><p>This is a fictional course URL.</p>
<label for="link">Text to copy</label><textarea id="link" readonly rows="2">https://example.com/courses/studio-notes</textarea>
<button type="button" id="copy">Copy course link</button><p id="message" role="status"></p></main>
<script>
const field=document.querySelector('#link'),message=document.querySelector('#message');
document.querySelector('#copy').onclick=async()=>{
 try{await navigator.clipboard.writeText(field.value);message.textContent='Course link copied.'}
 catch{field.focus();field.select();message.textContent='Copy was unavailable. The link is selected; copy it manually.'}
};
</script></html>

Kod referansı

  • Kopyalandı mesajı gösterilmeden önce pano vaadinin başarıyla çözülmesi gerekir.
  • Görünen değer ile kopyalanan değer aynı metindir.
  • Bu, yayımlanmış Pine belirteçlerini kullanan bağımsız bir uygulamadır; Sage panosu API değildir.

Yerel Sage Rails kopyalama yapısı

Belgelenmiş Rails yardımcılarını, önceden yapılandırılmış bir Sage Rails uygulamasında kullanın.

erb
<h2 class="t-sage-heading-4">Course link</h2>
<%= sage_component SageCopyTextCard, {} do %>
  <p><b>Course:</b> Studio Notes</p>
  <p>https://example.com/courses/studio-notes</p>
<% end %>
<%= sage_component SageCopyButton, { value: "https://example.com/courses/studio-notes", semibold: true, fill_container: true } %>

Kod referansı

  • Yardımcılar için mevcut Sage Rails, varlık ve sistem-JavaScript entegrasyonu gerekir.
  • Kapsamlı bir kalınlık geçersiz kılması eklemek yerine bileşenin tamamında yarı kalın yazı tipi kullanın.
04

Kajabi Sage Tasarım Sistemi Yapay Zekâ Aracısı Kurulumu

Uygulamaya Başlangıç Noktası

Eksiksiz, bağımsız ve herkese açık belirteç uygulaması; bir HTML dosyası olarak kaydedin ve pano desteği için localhost veya HTTPS üzerinden sunun. Sage Rails/React bileşenlerini yüklemez. Yerel Sage varlıkları GitHub Packages kayıt defteri üzerinden dağıtılır; mevcut varlık README’sine göre Pine belirteçlerinin ayrıca yüklenmesi gerekir.

html
<!doctype html>
<html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
<title>Share a sample course link</title>
<!-- Public Pine token stylesheet used by the Sage documentation. Pin its reviewed package version in production. -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@kajabi-ui/styles@latest/dist/pine/pine.css">
<style>
body{font-family:var(--pine-font-family-body);color:var(--pine-color-text);background:var(--pine-color-background-app);padding:var(--pine-dimension-md)}
main{max-width:42rem;margin:auto;background:var(--pine-color-background-container);padding:var(--pine-dimension-md);border:var(--pine-border-width) solid var(--pine-color-border);border-radius:var(--pine-border-radius-md)}
textarea{box-sizing:border-box;width:100%;padding:var(--pine-dimension-sm);font:inherit;resize:vertical}
button{font:inherit;cursor:pointer;margin-top:var(--pine-dimension-sm);padding:var(--pine-dimension-xs) var(--pine-dimension-sm)}
button:focus-visible,textarea:focus-visible{outline:2px solid currentColor;outline-offset:3px}
</style><main><h1>Share a sample course link</h1><p>This is a fictional course URL.</p>
<label for="link">Text to copy</label><textarea id="link" readonly rows="2">https://example.com/courses/studio-notes</textarea>
<button type="button" id="copy">Copy course link</button><p id="message" role="status"></p></main>
<script>
const field=document.querySelector('#link'),message=document.querySelector('#message');
document.querySelector('#copy').onclick=async()=>{
 try{await navigator.clipboard.writeText(field.value);message.textContent='Course link copied.'}
 catch{field.focus();field.select();message.textContent='Copy was unavailable. The link is selected; copy it manually.'}
};
</script></html>

Projeniz İçin Bir İstem

Ajan İstemi
Açık kurs seçimi ve kopyalanacak içeriğe sahip bir Kajabi Sage kurs paylaşım paneli oluşturun. Yayımlanmış Sage tipografisi ile harici olarak yüklenen Pine belirteç katmanı arasındaki ayrımı koruyun. Kopyalanacak içeriği eksiksiz gösterin, pano kopyalama başarılı olduktan sonra başarı mesajı verin ve işlem engellendiğinde elle seçim seçeneği sunun. Gerçek kurs, müşteri veya yayımlama entegrasyonu kullanmayın.
05

Kajabi Sage Tasarım Sistemi Kaynaklar ve Kapsam

Bağımsız OpenDesign kılavuzu. Kurslar ve kapak çizimleri özgündür. Önizlemede yerel HTML ve belgelenmiş görsel referanslar kullanılır; Rails örnekleri için mevcut ve yetkili bir Sage entegrasyonu gerekir. Hiçbir içerik yayımlanmaz veya gönderilmez.