@stackonward/cli 1.3.1 → 1.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1 -1
- package/dist/resources/components/nuxt/site-source/app/components/site/ConsentSettingsButton.vue +13 -8
- package/dist/resources/components/nuxt/site-source/app/components/site/CookieConsent.vue +39 -34
- package/dist/resources/components/nuxt/site-source/app/components/site/MarketingShell.vue +1 -3
- package/dist/resources/components/nuxt/site-source/app/components/site/ThemeSwitcher.vue +29 -25
- package/dist/resources/registry.json +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -5583,7 +5583,7 @@ function isFileExistsError(error) {
|
|
|
5583
5583
|
|
|
5584
5584
|
// src/index.ts
|
|
5585
5585
|
var program = new Command();
|
|
5586
|
-
program.name("stackonward").description("Create projects and install reusable components and snippets").version("1.3.
|
|
5586
|
+
program.name("stackonward").description("Create projects and install reusable components and snippets").version("1.3.3");
|
|
5587
5587
|
program.command("init [name]").description("Create a new project from template").option("-t, --template <template>", "Template to use").option("-d, --dir <directory>", "Target directory").option("--skip-install", "Skip dependency installation").option("--skip-git", "Skip git initialization").option("--module <module>", "Go module path (required for go-backend)").option("--author <author>", "Author name").option("-y, --yes", "Use defaults without interactive prompts").action(init);
|
|
5588
5588
|
program.command("add [items...]").description("Add components or snippets to your project").option("-c, --component", "Add component(s)").option("-s, --snippet", "Add snippet(s)").option("-a, --all", "Add all items in category").option("-y, --yes", "Skip confirmation prompts").option("-o, --overwrite", "Overwrite existing files").option("-p, --path <path>", "Custom install path").action(add);
|
|
5589
5589
|
program.command("list [type]").description("List available templates, components, or snippets").option("-t, --templates", "List templates").option("-c, --components", "List components").option("-s, --snippets", "List snippets").action(list);
|
package/dist/resources/components/nuxt/site-source/app/components/site/ConsentSettingsButton.vue
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
+
defineOptions({ inheritAttrs: false });
|
|
3
|
+
|
|
2
4
|
const site = useSiteShell();
|
|
3
5
|
const analytics = useAnalytics();
|
|
4
6
|
const consent = useConsent();
|
|
@@ -13,12 +15,15 @@ const visible = computed(
|
|
|
13
15
|
</script>
|
|
14
16
|
|
|
15
17
|
<template>
|
|
16
|
-
<
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
18
|
+
<ClientOnly>
|
|
19
|
+
<button
|
|
20
|
+
v-if="visible"
|
|
21
|
+
v-bind="$attrs"
|
|
22
|
+
type="button"
|
|
23
|
+
class="consent-settings-button"
|
|
24
|
+
@click="consent.openSettings"
|
|
25
|
+
>
|
|
26
|
+
{{ t("consent.settings") }}
|
|
27
|
+
</button>
|
|
28
|
+
</ClientOnly>
|
|
24
29
|
</template>
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
+
defineOptions({ inheritAttrs: false });
|
|
3
|
+
|
|
2
4
|
const site = useSiteShell();
|
|
3
5
|
const consent = useConsent();
|
|
4
6
|
const { t } = useI18n();
|
|
@@ -21,38 +23,41 @@ const persistenceMessage = computed(() => {
|
|
|
21
23
|
</script>
|
|
22
24
|
|
|
23
25
|
<template>
|
|
24
|
-
<
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
<
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
{{ t("consent.
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
26
|
+
<ClientOnly>
|
|
27
|
+
<section
|
|
28
|
+
v-if="consent.visible.value"
|
|
29
|
+
v-bind="$attrs"
|
|
30
|
+
class="site-consent"
|
|
31
|
+
role="region"
|
|
32
|
+
:aria-label="t('consent.region')"
|
|
33
|
+
>
|
|
34
|
+
<div class="site-consent__header">
|
|
35
|
+
<h2>{{ t("consent.title") }}</h2>
|
|
36
|
+
<button
|
|
37
|
+
v-if="consent.state.value.decision"
|
|
38
|
+
type="button"
|
|
39
|
+
class="site-consent__close"
|
|
40
|
+
:aria-label="t('consent.close')"
|
|
41
|
+
@click="consent.closeSettings"
|
|
42
|
+
>
|
|
43
|
+
<UIcon name="i-lucide-x" aria-hidden="true" />
|
|
44
|
+
</button>
|
|
45
|
+
</div>
|
|
46
|
+
<p class="site-consent__message">{{ t("consent.message") }}</p>
|
|
47
|
+
<NuxtLink class="site-consent__policy" :to="site.consent.policyPath">
|
|
48
|
+
{{ t("consent.policy") }}
|
|
49
|
+
</NuxtLink>
|
|
50
|
+
<p v-if="persistenceMessage" class="site-consent__status" role="status">
|
|
51
|
+
{{ persistenceMessage }}
|
|
52
|
+
</p>
|
|
53
|
+
<div class="site-consent__actions">
|
|
54
|
+
<button type="button" class="base-button base-button--secondary" @click="consent.reject">
|
|
55
|
+
{{ t("consent.decline") }}
|
|
56
|
+
</button>
|
|
57
|
+
<button type="button" class="base-button base-button--primary" @click="consent.accept">
|
|
58
|
+
{{ t("consent.allow") }}
|
|
59
|
+
</button>
|
|
60
|
+
</div>
|
|
61
|
+
</section>
|
|
62
|
+
</ClientOnly>
|
|
58
63
|
</template>
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
type ThemePreference = "system" | "light" | "dark";
|
|
3
3
|
|
|
4
|
+
defineOptions({ inheritAttrs: false });
|
|
5
|
+
|
|
4
6
|
const emit = defineEmits<{ changed: [] }>();
|
|
5
7
|
const colorMode = useColorMode();
|
|
6
8
|
const { t } = useI18n();
|
|
@@ -35,29 +37,31 @@ onClickOutside(dropdown, () => dropdown.value?.removeAttribute("open"));
|
|
|
35
37
|
</script>
|
|
36
38
|
|
|
37
39
|
<template>
|
|
38
|
-
<
|
|
39
|
-
<
|
|
40
|
-
<
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
<
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
40
|
+
<ClientOnly>
|
|
41
|
+
<details ref="dropdown" v-bind="$attrs" class="site-preference" @keydown="handleKeydown">
|
|
42
|
+
<summary :aria-label="t('theme.current', { theme: t(current.labelKey) })">
|
|
43
|
+
<UIcon :name="current.icon" aria-hidden="true" />
|
|
44
|
+
<span class="site-preference__current">{{ t(current.labelKey) }}</span>
|
|
45
|
+
<UIcon class="site-preference__chevron" name="i-lucide-chevron-down" aria-hidden="true" />
|
|
46
|
+
</summary>
|
|
47
|
+
<div class="site-preference__menu" :aria-label="t('theme.select')">
|
|
48
|
+
<button
|
|
49
|
+
v-for="option in options"
|
|
50
|
+
:key="option.value"
|
|
51
|
+
type="button"
|
|
52
|
+
:aria-pressed="option.value === preference"
|
|
53
|
+
@click="selectTheme(option.value)"
|
|
54
|
+
>
|
|
55
|
+
<UIcon :name="option.icon" aria-hidden="true" />
|
|
56
|
+
<span>{{ t(option.labelKey) }}</span>
|
|
57
|
+
<UIcon
|
|
58
|
+
v-if="option.value === preference"
|
|
59
|
+
class="site-preference__check"
|
|
60
|
+
name="i-lucide-check"
|
|
61
|
+
aria-hidden="true"
|
|
62
|
+
/>
|
|
63
|
+
</button>
|
|
64
|
+
</div>
|
|
65
|
+
</details>
|
|
66
|
+
</ClientOnly>
|
|
63
67
|
</template>
|