Skip to content

Commit f2ee9eb

Browse files
committed
deploy: cfc8ddf
1 parent c3a3711 commit f2ee9eb

File tree

177 files changed

+29689
-28084
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

177 files changed

+29689
-28084
lines changed

css/app.css

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

feed.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
</image>
1111
<generator>razor-ssg</generator>
1212
<copyright></copyright>
13-
<lastBuildDate>Fri, 05 Dec 2025 06:50:00 GMT</lastBuildDate>
13+
<lastBuildDate>Fri, 05 Dec 2025 07:25:12 GMT</lastBuildDate>
1414
<managingEditor>[email protected] (Team ServiceStack)</managingEditor>
1515
<webMaster>[email protected] (Team ServiceStack)</webMaster>
1616
<atom:link href="https://servicestack.net/feed.xml" rel="self" type="application/rss+xml" />

meta/2025/all.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

meta/2025/pages.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
[{"slug":"terms","draft":false,"title":"ServiceStack License Agreement","tags":[],"date":"\/Date(1764917356782)\/","url":"https://servicestack.net/terms","wordCount":3036,"lineCount":136},{"slug":"community-rules","draft":false,"title":"Community Rules","tags":[],"date":"\/Date(1764917356781)\/","url":"https://servicestack.net/community-rules","wordCount":412,"lineCount":37},{"slug":"links","draft":false,"title":"Quick Shortcuts to ServiceStack Sites","tags":[],"date":"\/Date(1764917356781)\/","url":"https://servicestack.net/links","wordCount":52,"lineCount":13},{"slug":"mail-preferences","draft":false,"title":"Manage your mail preferences","tags":[],"date":"\/Date(1764917356781)\/","url":"https://servicestack.net/mail-preferences","wordCount":113,"lineCount":13},{"slug":"privacy","draft":false,"title":"Privacy Policy for ServiceStack, Inc","tags":[],"date":"\/Date(1764917356781)\/","url":"https://servicestack.net/privacy","wordCount":1151,"lineCount":92},{"slug":"register","draft":false,"title":"License Registration","tags":[],"date":"\/Date(1764917356781)\/","url":"https://servicestack.net/register","wordCount":327,"lineCount":76},{"slug":"signup-confirmed","draft":false,"title":"Welcome to ServiceStack Newsletter","tags":[],"date":"\/Date(1764917356781)\/","url":"https://servicestack.net/signup-confirmed","wordCount":53,"lineCount":8},{"slug":"creatorkit/about","draft":false,"title":"About","tags":[],"date":"\/Date(1764917356781)\/","url":"https://servicestack.net/creatorkit/about","wordCount":597,"lineCount":100,"order":1},{"slug":"creatorkit/install","draft":false,"title":"Install","tags":[],"date":"\/Date(1764917356781)\/","url":"https://servicestack.net/creatorkit/install","wordCount":1724,"lineCount":266,"order":2},{"slug":"creatorkit/customize","draft":false,"title":"Customize","tags":[],"date":"\/Date(1764917356781)\/","url":"https://servicestack.net/creatorkit/customize","wordCount":430,"lineCount":136,"order":3},{"slug":"creatorkit/components","draft":false,"title":"Components","tags":[],"date":"\/Date(1764917356781)\/","url":"https://servicestack.net/creatorkit/components","wordCount":855,"lineCount":195,"order":4},{"slug":"creatorkit/integrations","draft":false,"title":"Integrations","tags":[],"date":"\/Date(1764917356781)\/","url":"https://servicestack.net/creatorkit/integrations","wordCount":107,"lineCount":29,"order":5},{"slug":"creatorkit/portal-overview","draft":false,"title":"Overview","tags":[],"date":"\/Date(1764917356781)\/","url":"https://servicestack.net/creatorkit/portal-overview","wordCount":163,"lineCount":40,"group":"Portal","order":6},{"slug":"creatorkit/portal-messages","draft":false,"title":"Messages","tags":[],"date":"\/Date(1764917356781)\/","url":"https://servicestack.net/creatorkit/portal-messages","wordCount":1047,"lineCount":250,"group":"Portal","order":7},{"slug":"creatorkit/portal-mailruns","draft":false,"title":"Mail Runs","tags":[],"date":"\/Date(1764917356781)\/","url":"https://servicestack.net/creatorkit/portal-mailruns","wordCount":1303,"lineCount":277,"group":"Portal","order":8},{"slug":"creatorkit/portal-posts","draft":false,"title":"Posts","tags":[],"date":"\/Date(1764917356781)\/","url":"https://servicestack.net/creatorkit/portal-posts","wordCount":180,"lineCount":28,"group":"Portal","order":9}]
1+
[{"slug":"terms","draft":false,"title":"ServiceStack License Agreement","tags":[],"date":"\/Date(1764919470625)\/","url":"https://servicestack.net/terms","wordCount":3036,"lineCount":136},{"slug":"community-rules","draft":false,"title":"Community Rules","tags":[],"date":"\/Date(1764919470624)\/","url":"https://servicestack.net/community-rules","wordCount":412,"lineCount":37},{"slug":"links","draft":false,"title":"Quick Shortcuts to ServiceStack Sites","tags":[],"date":"\/Date(1764919470624)\/","url":"https://servicestack.net/links","wordCount":52,"lineCount":13},{"slug":"mail-preferences","draft":false,"title":"Manage your mail preferences","tags":[],"date":"\/Date(1764919470624)\/","url":"https://servicestack.net/mail-preferences","wordCount":113,"lineCount":13},{"slug":"privacy","draft":false,"title":"Privacy Policy for ServiceStack, Inc","tags":[],"date":"\/Date(1764919470624)\/","url":"https://servicestack.net/privacy","wordCount":1151,"lineCount":92},{"slug":"register","draft":false,"title":"License Registration","tags":[],"date":"\/Date(1764919470624)\/","url":"https://servicestack.net/register","wordCount":327,"lineCount":76},{"slug":"signup-confirmed","draft":false,"title":"Welcome to ServiceStack Newsletter","tags":[],"date":"\/Date(1764919470624)\/","url":"https://servicestack.net/signup-confirmed","wordCount":53,"lineCount":8},{"slug":"creatorkit/about","draft":false,"title":"About","tags":[],"date":"\/Date(1764919470624)\/","url":"https://servicestack.net/creatorkit/about","wordCount":597,"lineCount":100,"order":1},{"slug":"creatorkit/install","draft":false,"title":"Install","tags":[],"date":"\/Date(1764919470624)\/","url":"https://servicestack.net/creatorkit/install","wordCount":1724,"lineCount":266,"order":2},{"slug":"creatorkit/customize","draft":false,"title":"Customize","tags":[],"date":"\/Date(1764919470624)\/","url":"https://servicestack.net/creatorkit/customize","wordCount":430,"lineCount":136,"order":3},{"slug":"creatorkit/components","draft":false,"title":"Components","tags":[],"date":"\/Date(1764919470624)\/","url":"https://servicestack.net/creatorkit/components","wordCount":855,"lineCount":195,"order":4},{"slug":"creatorkit/integrations","draft":false,"title":"Integrations","tags":[],"date":"\/Date(1764919470624)\/","url":"https://servicestack.net/creatorkit/integrations","wordCount":107,"lineCount":29,"order":5},{"slug":"creatorkit/portal-overview","draft":false,"title":"Overview","tags":[],"date":"\/Date(1764919470624)\/","url":"https://servicestack.net/creatorkit/portal-overview","wordCount":163,"lineCount":40,"group":"Portal","order":6},{"slug":"creatorkit/portal-messages","draft":false,"title":"Messages","tags":[],"date":"\/Date(1764919470624)\/","url":"https://servicestack.net/creatorkit/portal-messages","wordCount":1047,"lineCount":250,"group":"Portal","order":7},{"slug":"creatorkit/portal-mailruns","draft":false,"title":"Mail Runs","tags":[],"date":"\/Date(1764919470624)\/","url":"https://servicestack.net/creatorkit/portal-mailruns","wordCount":1303,"lineCount":277,"group":"Portal","order":8},{"slug":"creatorkit/portal-posts","draft":false,"title":"Posts","tags":[],"date":"\/Date(1764919470624)\/","url":"https://servicestack.net/creatorkit/portal-posts","wordCount":180,"lineCount":28,"group":"Portal","order":9}]

meta/all.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

mjs/docs.mjs

Lines changed: 66 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ if (active && !isInView(active)) {
3737
(active.parentElement.previousElementSibling || active.parentElement.parentElement || active).scrollIntoView()
3838
}
3939

40-
/* used in :::copy and :::sh CopyContainerRenderer */
40+
/* used in :::copy */
4141
globalThis.copy = function(e) {
4242
e.classList.add('copying')
4343
let $el = document.createElement("textarea")
@@ -49,3 +49,68 @@ globalThis.copy = function(e) {
4949
document.body.removeChild($el)
5050
setTimeout(() => e.classList.remove('copying'), 3000)
5151
}
52+
53+
/* used in :::sh CopyContainerRenderer */
54+
globalThis.shellCopy = async function(e) {
55+
// Get the text content from the code element
56+
const codeEl = e.querySelector('code')
57+
const textToCopy = codeEl?.textContent?.trim() || ""
58+
59+
// Find the button element and icons
60+
const btn = e.querySelector('.shell-copy-btn')
61+
if (!btn) return
62+
63+
const copiedIcon = btn.querySelector('.copied')
64+
const nocopyIcon = btn.querySelector('.nocopy')
65+
66+
try {
67+
// Use modern Clipboard API
68+
await navigator.clipboard.writeText(textToCopy)
69+
70+
// Show checkmark, hide copy icon
71+
if (copiedIcon) copiedIcon.style.display = 'block'
72+
if (nocopyIcon) nocopyIcon.style.display = 'none'
73+
74+
// Add copied state to button
75+
btn.classList.remove('bg-white', 'dark:bg-slate-800', 'text-slate-700', 'dark:text-slate-300', 'border-slate-300', 'dark:border-slate-600', 'hover:bg-slate-50', 'dark:hover:bg-slate-700', 'hover:border-slate-400', 'dark:hover:border-slate-500')
76+
btn.classList.add('bg-green-100', 'dark:bg-green-900/30', 'text-green-700', 'dark:text-green-400', 'border-green-300', 'dark:border-green-700')
77+
78+
// Reset after 2 seconds
79+
setTimeout(() => {
80+
// Hide checkmark, show copy icon
81+
if (copiedIcon) copiedIcon.style.display = 'none'
82+
if (nocopyIcon) nocopyIcon.style.display = 'block'
83+
84+
btn.classList.remove('bg-green-100', 'dark:bg-green-900/30', 'text-green-700', 'dark:text-green-400', 'border-green-300', 'dark:border-green-700')
85+
btn.classList.add('bg-white', 'dark:bg-slate-800', 'text-slate-700', 'dark:text-slate-300', 'border-slate-300', 'dark:border-slate-600', 'hover:bg-slate-50', 'dark:hover:bg-slate-700', 'hover:border-slate-400', 'dark:hover:border-slate-500')
86+
}, 2000)
87+
} catch (err) {
88+
// Fallback for older browsers
89+
const $el = document.createElement("textarea")
90+
$el.value = textToCopy
91+
$el.style.position = "fixed"
92+
$el.style.opacity = "0"
93+
document.body.appendChild($el)
94+
$el.select()
95+
document.execCommand("copy")
96+
document.body.removeChild($el)
97+
98+
// Show checkmark, hide copy icon
99+
if (copiedIcon) copiedIcon.style.display = 'block'
100+
if (nocopyIcon) nocopyIcon.style.display = 'none'
101+
102+
// Add copied state to button
103+
btn.classList.remove('bg-white', 'dark:bg-slate-800', 'text-slate-700', 'dark:text-slate-300', 'border-slate-300', 'dark:border-slate-600', 'hover:bg-slate-50', 'dark:hover:bg-slate-700', 'hover:border-slate-400', 'dark:hover:border-slate-500')
104+
btn.classList.add('bg-green-100', 'dark:bg-green-900/30', 'text-green-700', 'dark:text-green-400', 'border-green-300', 'dark:border-green-700')
105+
106+
// Reset after 2 seconds
107+
setTimeout(() => {
108+
// Hide checkmark, show copy icon
109+
if (copiedIcon) copiedIcon.style.display = 'none'
110+
if (nocopyIcon) nocopyIcon.style.display = 'block'
111+
112+
btn.classList.remove('bg-green-100', 'dark:bg-green-900/30', 'text-green-700', 'dark:text-green-400', 'border-green-300', 'dark:border-green-700')
113+
btn.classList.add('bg-white', 'dark:bg-slate-800', 'text-slate-700', 'dark:text-slate-300', 'border-slate-300', 'dark:border-slate-600', 'hover:bg-slate-50', 'dark:hover:bg-slate-700', 'hover:border-slate-400', 'dark:hover:border-slate-500')
114+
}, 2000)
115+
}
116+
}

0 commit comments

Comments
 (0)