@shell-shock/plugin-banner 0.1.22 → 0.1.23

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.
@@ -64,7 +64,7 @@ function BannerFunctionBodyDeclaration(props) {
64
64
  }),
65
65
  (0, _alloy_js_core_jsx_runtime.createComponent)(_powerlines_plugin_alloy_core_components_spacing.Spacing, {}),
66
66
  (0, _alloy_js_core_jsx_runtime.memo)(() => _alloy_js_core.code`
67
- writeLine(colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].topLeft}") + ${theme.icons.banner.header[variant] ? `colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].top}".repeat(6)) + " " + ${theme.icons.banner.header[variant] ? `colors.text.banner.header.${variant}("${theme.icons.banner.header[variant]}") + " " + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].top}") + " " +` : ""} colors.bold(colors.text.banner.header.${variant}("${header}")) + " " + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].top}".repeat(Math.max(process.stdout.columns - ${6 + (theme.icons.banner.header[variant] ? theme.icons.banner.header[variant].length + 3 : 0) + (header ? header.length + 2 : 0) + bannerPadding.value}, 0)))` : `colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].top}".repeat(Math.max(process.stdout.columns - ${bannerPadding.value}, 0)))`} + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].topRight}"), { consoleFn: console.${consoleFnName} }); `),
67
+ writeLine(borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].topLeft}") + ${theme.icons.banner.header[variant] ? `borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].top}".repeat(6)) + " " + ${theme.icons.banner.header[variant] ? `textColors.banner.header.${variant}("${theme.icons.banner.header[variant]}") + " " + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].top}") + " " +` : ""} bold(textColors.banner.header.${variant}("${header}")) + " " + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].top}".repeat(Math.max(process.stdout.columns - ${6 + (theme.icons.banner.header[variant] ? theme.icons.banner.header[variant].length + 3 : 0) + (header ? header.length + 2 : 0) + bannerPadding.value}, 0)))` : `borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].top}".repeat(Math.max(process.stdout.columns - ${bannerPadding.value}, 0)))`} + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].topRight}"), { consoleFn: console.${consoleFnName} }); `),
68
68
  (0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_core.Show, {
69
69
  when: !!children,
70
70
  get fallback() {
@@ -81,7 +81,7 @@ function BannerFunctionBodyDeclaration(props) {
81
81
  children: (line) => _alloy_js_core.code`splitText("${line}",
82
82
  Math.max(process.stdout.columns - ${totalPadding.value}, 20)
83
83
  ).forEach((line) => {
84
- writeLine(colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi(line).length + ${bannerPadding.value})) / 2), 0)) + colors.bold(colors.text.banner.title.${variant}(line)) + " ".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi(line).length + ${bannerPadding.value})) / 2), 0)) + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} });
84
+ writeLine(borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi(line).length + ${bannerPadding.value})) / 2), 0)) + bold(textColors.banner.title.${variant}(line)) + " ".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi(line).length + ${bannerPadding.value})) / 2), 0)) + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} });
85
85
  }); `
86
86
  });
87
87
  }
@@ -98,20 +98,20 @@ function BannerFunctionBodyDeclaration(props) {
98
98
  return [(0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_core.Show, {
99
99
  when: insertNewlineBeforeCommand,
100
100
  get children() {
101
- return _alloy_js_core.code`writeLine(colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(process.stdout.columns - ${bannerPadding.value})) + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} }); `;
101
+ return _alloy_js_core.code`writeLine(borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(process.stdout.columns - ${bannerPadding.value})) + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} }); `;
102
102
  }
103
- }), (0, _alloy_js_core_jsx_runtime.memo)(() => `writeLine(colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi("${command?.title}").length ${command?.icon ? " + 3" : ""} + ${bannerPadding.value})) / 2), 0)) + colors.bold(colors.text.banner.command.${variant}("${command?.icon ? `${command.icon} ` : ""}${command?.title}")) + " ".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi("${command?.title}").length ${command?.icon ? " + 3" : ""} + ${bannerPadding.value})) / 2), 0)) + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} }); `)];
103
+ }), (0, _alloy_js_core_jsx_runtime.memo)(() => `writeLine(borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi("${command?.title}").length ${command?.icon ? " + 3" : ""} + ${bannerPadding.value})) / 2), 0)) + bold(textColors.banner.command.${variant}("${command?.icon ? `${command.icon} ` : ""}${command?.title}")) + " ".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi("${command?.title}").length ${command?.icon ? " + 3" : ""} + ${bannerPadding.value})) / 2), 0)) + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} }); `)];
104
104
  }
105
105
  }),
106
106
  (0, _alloy_js_core_jsx_runtime.createComponent)(_powerlines_plugin_alloy_core_components_spacing.Spacing, {}),
107
107
  (0, _alloy_js_core_jsx_runtime.memo)(() => _alloy_js_core.code`splitText(
108
- colors.bold(${command?.title ? "colors.text.banner.description" : "colors.text.banner.command"}.${variant}(\`${(0, _shell_shock_core_plugin_utils.formatDescription)(description)}\`)),
108
+ bold(${command?.title ? "textColors.banner.description" : "textColors.banner.command"}.${variant}(\`${(0, _shell_shock_core_plugin_utils.formatDescription)(description)}\`)),
109
109
  Math.max(${command?.title ? `${totalPadding.value} * 2 > process.stdout.columns / 2 ? process.stdout.columns - 6 : process.stdout.columns - ${totalPadding.value}` : `process.stdout.columns - ${totalPadding.value}`} , 20)
110
110
  ).forEach((line) => {
111
- writeLine(colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi(line).length + ${bannerPadding.value})) / 2), 0)) + colors.text.banner.description.${variant}(line) + " ".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi(line).length + ${bannerPadding.value})) / 2), 0)) + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} });
111
+ writeLine(borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi(line).length + ${bannerPadding.value})) / 2), 0)) + textColors.banner.description.${variant}(line) + " ".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi(line).length + ${bannerPadding.value})) / 2), 0)) + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} });
112
112
  });
113
- ${insertNewlineAfterDescription ? `writeLine(colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(process.stdout.columns - ${bannerPadding.value})) + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} });` : ""}
114
- writeLine(colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottomLeft}") + ${footer ? `colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottom}".repeat(Math.max(process.stdout.columns - ${8 + (footer ? footer.length : 0) + bannerPadding.value}, 0))) + " " + ${footer ? `colors.bold(colors.text.banner.footer.${variant}("${footer}"))` : ""} + " " + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottom}".repeat(6))` : `colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottom}".repeat(Math.max(process.stdout.columns - ${bannerPadding.value}, 0)))`} + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottomRight}"), { consoleFn: console.${consoleFnName} });
113
+ ${insertNewlineAfterDescription ? `writeLine(borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(process.stdout.columns - ${bannerPadding.value})) + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} });` : ""}
114
+ writeLine(borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottomLeft}") + ${footer ? `borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottom}".repeat(Math.max(process.stdout.columns - ${8 + (footer ? footer.length : 0) + bannerPadding.value}, 0))) + " " + ${footer ? `bold(textColors.banner.footer.${variant}("${footer}"))` : ""} + " " + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottom}".repeat(6))` : `borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottom}".repeat(Math.max(process.stdout.columns - ${bannerPadding.value}, 0)))`} + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottomRight}"), { consoleFn: console.${consoleFnName} });
115
115
 
116
116
  writeLine(""); `)
117
117
  ];
@@ -62,7 +62,7 @@ function BannerFunctionBodyDeclaration(props) {
62
62
  }),
63
63
  createComponent(Spacing, {}),
64
64
  memo(() => code`
65
- writeLine(colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].topLeft}") + ${theme.icons.banner.header[variant] ? `colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].top}".repeat(6)) + " " + ${theme.icons.banner.header[variant] ? `colors.text.banner.header.${variant}("${theme.icons.banner.header[variant]}") + " " + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].top}") + " " +` : ""} colors.bold(colors.text.banner.header.${variant}("${header}")) + " " + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].top}".repeat(Math.max(process.stdout.columns - ${6 + (theme.icons.banner.header[variant] ? theme.icons.banner.header[variant].length + 3 : 0) + (header ? header.length + 2 : 0) + bannerPadding.value}, 0)))` : `colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].top}".repeat(Math.max(process.stdout.columns - ${bannerPadding.value}, 0)))`} + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].topRight}"), { consoleFn: console.${consoleFnName} }); `),
65
+ writeLine(borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].topLeft}") + ${theme.icons.banner.header[variant] ? `borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].top}".repeat(6)) + " " + ${theme.icons.banner.header[variant] ? `textColors.banner.header.${variant}("${theme.icons.banner.header[variant]}") + " " + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].top}") + " " +` : ""} bold(textColors.banner.header.${variant}("${header}")) + " " + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].top}".repeat(Math.max(process.stdout.columns - ${6 + (theme.icons.banner.header[variant] ? theme.icons.banner.header[variant].length + 3 : 0) + (header ? header.length + 2 : 0) + bannerPadding.value}, 0)))` : `borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].top}".repeat(Math.max(process.stdout.columns - ${bannerPadding.value}, 0)))`} + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].topRight}"), { consoleFn: console.${consoleFnName} }); `),
66
66
  createComponent(Show, {
67
67
  when: !!children,
68
68
  get fallback() {
@@ -79,7 +79,7 @@ function BannerFunctionBodyDeclaration(props) {
79
79
  children: (line) => code`splitText("${line}",
80
80
  Math.max(process.stdout.columns - ${totalPadding.value}, 20)
81
81
  ).forEach((line) => {
82
- writeLine(colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi(line).length + ${bannerPadding.value})) / 2), 0)) + colors.bold(colors.text.banner.title.${variant}(line)) + " ".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi(line).length + ${bannerPadding.value})) / 2), 0)) + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} });
82
+ writeLine(borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi(line).length + ${bannerPadding.value})) / 2), 0)) + bold(textColors.banner.title.${variant}(line)) + " ".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi(line).length + ${bannerPadding.value})) / 2), 0)) + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} });
83
83
  }); `
84
84
  });
85
85
  }
@@ -96,20 +96,20 @@ function BannerFunctionBodyDeclaration(props) {
96
96
  return [createComponent(Show, {
97
97
  when: insertNewlineBeforeCommand,
98
98
  get children() {
99
- return code`writeLine(colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(process.stdout.columns - ${bannerPadding.value})) + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} }); `;
99
+ return code`writeLine(borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(process.stdout.columns - ${bannerPadding.value})) + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} }); `;
100
100
  }
101
- }), memo(() => `writeLine(colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi("${command?.title}").length ${command?.icon ? " + 3" : ""} + ${bannerPadding.value})) / 2), 0)) + colors.bold(colors.text.banner.command.${variant}("${command?.icon ? `${command.icon} ` : ""}${command?.title}")) + " ".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi("${command?.title}").length ${command?.icon ? " + 3" : ""} + ${bannerPadding.value})) / 2), 0)) + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} }); `)];
101
+ }), memo(() => `writeLine(borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi("${command?.title}").length ${command?.icon ? " + 3" : ""} + ${bannerPadding.value})) / 2), 0)) + bold(textColors.banner.command.${variant}("${command?.icon ? `${command.icon} ` : ""}${command?.title}")) + " ".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi("${command?.title}").length ${command?.icon ? " + 3" : ""} + ${bannerPadding.value})) / 2), 0)) + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} }); `)];
102
102
  }
103
103
  }),
104
104
  createComponent(Spacing, {}),
105
105
  memo(() => code`splitText(
106
- colors.bold(${command?.title ? "colors.text.banner.description" : "colors.text.banner.command"}.${variant}(\`${formatDescription(description)}\`)),
106
+ bold(${command?.title ? "textColors.banner.description" : "textColors.banner.command"}.${variant}(\`${formatDescription(description)}\`)),
107
107
  Math.max(${command?.title ? `${totalPadding.value} * 2 > process.stdout.columns / 2 ? process.stdout.columns - 6 : process.stdout.columns - ${totalPadding.value}` : `process.stdout.columns - ${totalPadding.value}`} , 20)
108
108
  ).forEach((line) => {
109
- writeLine(colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi(line).length + ${bannerPadding.value})) / 2), 0)) + colors.text.banner.description.${variant}(line) + " ".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi(line).length + ${bannerPadding.value})) / 2), 0)) + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} });
109
+ writeLine(borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi(line).length + ${bannerPadding.value})) / 2), 0)) + textColors.banner.description.${variant}(line) + " ".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi(line).length + ${bannerPadding.value})) / 2), 0)) + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} });
110
110
  });
111
- ${insertNewlineAfterDescription ? `writeLine(colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(process.stdout.columns - ${bannerPadding.value})) + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} });` : ""}
112
- writeLine(colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottomLeft}") + ${footer ? `colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottom}".repeat(Math.max(process.stdout.columns - ${8 + (footer ? footer.length : 0) + bannerPadding.value}, 0))) + " " + ${footer ? `colors.bold(colors.text.banner.footer.${variant}("${footer}"))` : ""} + " " + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottom}".repeat(6))` : `colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottom}".repeat(Math.max(process.stdout.columns - ${bannerPadding.value}, 0)))`} + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottomRight}"), { consoleFn: console.${consoleFnName} });
111
+ ${insertNewlineAfterDescription ? `writeLine(borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(process.stdout.columns - ${bannerPadding.value})) + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} });` : ""}
112
+ writeLine(borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottomLeft}") + ${footer ? `borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottom}".repeat(Math.max(process.stdout.columns - ${8 + (footer ? footer.length : 0) + bannerPadding.value}, 0))) + " " + ${footer ? `bold(textColors.banner.footer.${variant}("${footer}"))` : ""} + " " + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottom}".repeat(6))` : `borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottom}".repeat(Math.max(process.stdout.columns - ${bannerPadding.value}, 0)))`} + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottomRight}"), { consoleFn: console.${consoleFnName} });
113
113
 
114
114
  writeLine(""); `)
115
115
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"banner-function-declaration.mjs","names":[],"sources":["../../src/components/banner-function-declaration.tsx"],"sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Shell Shock\n\n This code was released as part of the Shell Shock project. Shell Shock\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/shell-shock.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/shell-shock\n Documentation: https://docs.stormsoftware.com/projects/shell-shock\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport type { Children } from \"@alloy-js/core\";\nimport { code, computed, For, Show } from \"@alloy-js/core\";\nimport { FunctionDeclaration, IfStatement } from \"@alloy-js/typescript\";\nimport { Spacing } from \"@powerlines/plugin-alloy/core/components/spacing\";\nimport { usePowerlines } from \"@powerlines/plugin-alloy/core/contexts/context\";\nimport {\n formatDescription,\n getAppDescription,\n getAppTitle\n} from \"@shell-shock/core/plugin-utils\";\nimport type { CommandTree } from \"@shell-shock/core/types/command\";\nimport { useTheme } from \"@shell-shock/plugin-theme/contexts/theme\";\nimport type { ThemeColorVariant } from \"@shell-shock/plugin-theme/types/theme\";\nimport { isSetString } from \"@stryke/type-checks/is-set-string\";\nimport type { BannerPluginContext } from \"../types\";\n\nexport interface BannerFunctionDeclarationWrapperProps {\n command?: CommandTree;\n children?: Children;\n}\n\n/**\n * A component to generate the `banner` function for a specific command or application.\n *\n * @remarks\n * This function will display a banner in the console with the application's name, version, and description. It can be customized with different variants for styling and supports conditional rendering based on flags or environment variables.\n */\nexport function BannerFunctionDeclarationWrapper(\n props: BannerFunctionDeclarationWrapperProps\n) {\n const { command, children } = props;\n\n const context = usePowerlines<BannerPluginContext>();\n\n return (\n <FunctionDeclaration\n export\n async\n name=\"showBanner\"\n doc={`Write the ${getAppTitle(context, true)} command-line interface application banner ${\n command ? `for the ${command.title} command ` : \"\"\n }to the console.`}\n parameters={[{ name: \"sleepTimeoutMs\", type: \"number\", default: 500 }]}>\n {children}\n <IfStatement condition={code`isInteractive && !isHelp`}>\n {code`await sleep(sleepTimeoutMs);`}\n </IfStatement>\n </FunctionDeclaration>\n );\n}\n\nexport interface BannerFunctionBodyDeclarationProps extends BannerFunctionDeclarationProps {\n title?: string;\n header?: string;\n footer?: string;\n description: string;\n insertNewlineBeforeCommand?: boolean;\n insertNewlineBeforeBanner?: boolean;\n insertNewlineAfterDescription?: boolean;\n}\n\n/**\n * A component to generate the `banner` function's body for a specific command or application.\n *\n * @remarks\n * This function will display a banner in the console with the application's name, version, and description. It can be customized with different variants for styling and supports conditional rendering based on flags or environment variables.\n */\nexport function BannerFunctionBodyDeclaration(\n props: BannerFunctionBodyDeclarationProps\n) {\n const {\n consoleFnName = \"log\",\n variant = \"primary\",\n title,\n header,\n footer,\n description,\n command,\n children,\n insertNewlineBeforeCommand = false,\n insertNewlineBeforeBanner = true,\n insertNewlineAfterDescription = false\n } = props;\n\n const theme = useTheme();\n\n const bannerPadding = computed(\n () =>\n Math.max(theme.padding.app, 0) * 2 +\n theme.borderStyles.banner.outline[variant].left.length +\n theme.borderStyles.banner.outline[variant].right.length\n );\n const totalPadding = computed(\n () => Math.max(theme.padding.banner, 0) * 2 + bannerPadding.value\n );\n\n return (\n <>\n {code`\n if (useApp().get(\"banner\") || hasFlag(\"no-banner\") || hasFlag(\"hide-banner\") || isMinimal) {\n return;\n }\n\n useApp().set(\"banner\", true); `}\n <Spacing />\n <Show when={insertNewlineBeforeBanner}>{code`writeLine(\"\"); `}</Show>\n <Spacing />\n\n {code`\n writeLine(colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].topLeft\n }\") + ${\n theme.icons.banner.header[variant]\n ? `colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].top\n }\".repeat(6)) + \" \" + ${\n theme.icons.banner.header[variant]\n ? `colors.text.banner.header.${variant}(\"${\n theme.icons.banner.header[variant]\n }\") + \" \" + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].top\n }\") + \" \" +`\n : \"\"\n } colors.bold(colors.text.banner.header.${variant}(\"${\n header\n }\")) + \" \" + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].top\n }\".repeat(Math.max(process.stdout.columns - ${\n 6 +\n (theme.icons.banner.header[variant]\n ? theme.icons.banner.header[variant].length + 3\n : 0) +\n (header ? header.length + 2 : 0) +\n bannerPadding.value\n }, 0)))`\n : `colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].top\n }\".repeat(Math.max(process.stdout.columns - ${\n bannerPadding.value\n }, 0)))`\n } + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].topRight\n }\"), { consoleFn: console.${consoleFnName} }); `}\n\n <Show\n when={!!children}\n fallback={\n <Show when={isSetString(title)}>\n <For each={title ? title.split(\"\\n\") : []} hardline>\n {line => code`splitText(\"${line}\",\n Math.max(process.stdout.columns - ${totalPadding.value}, 20)\n ).forEach((line) => {\n writeLine(colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].left\n }\") + \" \".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi(line).length + ${\n bannerPadding.value\n })) / 2), 0)) + colors.bold(colors.text.banner.title.${variant}(line)) + \" \".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi(line).length + ${\n bannerPadding.value\n })) / 2), 0)) + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].right\n }\"), { consoleFn: console.${consoleFnName} });\n }); `}\n </For>\n </Show>\n }>\n {children}\n </Show>\n <Spacing />\n\n <Show when={isSetString(command?.title) && !!command?.path}>\n <Show when={insertNewlineBeforeCommand}>\n {code`writeLine(colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].left\n }\") + \" \".repeat(Math.max(process.stdout.columns - ${\n bannerPadding.value\n })) + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].right\n }\"), { consoleFn: console.${consoleFnName} }); `}\n </Show>\n {`writeLine(colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].left\n }\") + \" \".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi(\"${\n command?.title\n }\").length ${command?.icon ? \" + 3\" : \"\"} + ${\n bannerPadding.value\n })) / 2), 0)) + colors.bold(colors.text.banner.command.${\n variant\n }(\"${command?.icon ? `${command.icon} ` : \"\"}${command?.title}\")) + \" \".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi(\"${command?.title}\").length ${\n command?.icon ? \" + 3\" : \"\"\n } + ${\n bannerPadding.value\n })) / 2), 0)) + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].right\n }\"), { consoleFn: console.${consoleFnName} }); `}\n </Show>\n <Spacing />\n\n {code`splitText(\n colors.bold(${\n command?.title\n ? \"colors.text.banner.description\"\n : \"colors.text.banner.command\"\n }.${variant}(\\`${formatDescription(description)}\\`)),\n Math.max(${\n command?.title\n ? `${totalPadding.value} * 2 > process.stdout.columns / 2 ? process.stdout.columns - 6 : process.stdout.columns - ${totalPadding.value}`\n : `process.stdout.columns - ${totalPadding.value}`\n } , 20)\n ).forEach((line) => {\n writeLine(colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].left\n }\") + \" \".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi(line).length + ${\n bannerPadding.value\n })) / 2), 0)) + colors.text.banner.description.${variant}(line) + \" \".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi(line).length + ${\n bannerPadding.value\n })) / 2), 0)) + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].right\n }\"), { consoleFn: console.${consoleFnName} });\n });\n ${\n insertNewlineAfterDescription\n ? `writeLine(colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].left\n }\") + \" \".repeat(Math.max(process.stdout.columns - ${\n bannerPadding.value\n })) + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].right\n }\"), { consoleFn: console.${consoleFnName} });`\n : \"\"\n }\n writeLine(colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottomLeft\n }\") + ${\n footer\n ? `colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottom\n }\".repeat(Math.max(process.stdout.columns - ${\n 8 + (footer ? footer.length : 0) + bannerPadding.value\n }, 0))) + \" \" + ${\n footer\n ? `colors.bold(colors.text.banner.footer.${variant}(\"${footer}\"))`\n : \"\"\n } + \" \" + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottom\n }\".repeat(6))`\n : `colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottom\n }\".repeat(Math.max(process.stdout.columns - ${\n bannerPadding.value\n }, 0)))`\n } + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottomRight\n }\"), { consoleFn: console.${consoleFnName} });\n\n writeLine(\"\"); `}\n </>\n );\n}\n\nexport interface BannerFunctionDeclarationProps extends BannerFunctionDeclarationWrapperProps {\n variant?: ThemeColorVariant;\n consoleFnName?: \"log\" | \"info\" | \"warn\" | \"error\" | \"debug\";\n insertNewlineBeforeBanner?: boolean;\n}\n\n/**\n * A component to generate the `banner` function for a specific command or application.\n *\n * @remarks\n * This function will display a banner in the console with the application's name, version, and description. It can be customized with different variants for styling and supports conditional rendering based on flags or environment variables.\n */\nexport function BannerFunctionDeclaration(\n props: BannerFunctionDeclarationProps\n) {\n const {\n consoleFnName = \"log\",\n variant = \"primary\",\n command,\n children,\n insertNewlineBeforeBanner = true\n } = props;\n\n const theme = useTheme();\n const context = usePowerlines<BannerPluginContext>();\n\n const header = computed(\n () =>\n `${theme.labels.banner.header[variant] || getAppTitle(context, false)} v${\n context.packageJson.version || \"1.0.0\"\n }`\n );\n const footer = computed(() => theme.labels.banner.footer[variant]);\n const title = computed(\n () =>\n context.config.banner.title ||\n getAppTitle(context, true).replace(\n `v${context.packageJson.version || \"1.0.0\"}`,\n \"\"\n )\n );\n const description = computed(\n () => command?.description || getAppDescription(context)\n );\n\n return (\n <BannerFunctionDeclarationWrapper command={command}>\n <BannerFunctionBodyDeclaration\n title={!children ? title.value : undefined}\n header={header.value}\n description={description.value}\n footer={footer.value}\n variant={variant}\n consoleFnName={consoleFnName}\n command={command}\n insertNewlineBeforeCommand\n insertNewlineBeforeBanner={insertNewlineBeforeBanner}>\n {children}\n </BannerFunctionBodyDeclaration>\n </BannerFunctionDeclarationWrapper>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"banner-function-declaration.mjs","names":[],"sources":["../../src/components/banner-function-declaration.tsx"],"sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Shell Shock\n\n This code was released as part of the Shell Shock project. Shell Shock\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/shell-shock.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/shell-shock\n Documentation: https://docs.stormsoftware.com/projects/shell-shock\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport type { Children } from \"@alloy-js/core\";\nimport { code, computed, For, Show } from \"@alloy-js/core\";\nimport { FunctionDeclaration, IfStatement } from \"@alloy-js/typescript\";\nimport { Spacing } from \"@powerlines/plugin-alloy/core/components/spacing\";\nimport { usePowerlines } from \"@powerlines/plugin-alloy/core/contexts/context\";\nimport {\n formatDescription,\n getAppDescription,\n getAppTitle\n} from \"@shell-shock/core/plugin-utils\";\nimport type { CommandTree } from \"@shell-shock/core/types/command\";\nimport { useTheme } from \"@shell-shock/plugin-theme/contexts/theme\";\nimport type { ThemeColorVariant } from \"@shell-shock/plugin-theme/types/theme\";\nimport { isSetString } from \"@stryke/type-checks/is-set-string\";\nimport type { BannerPluginContext } from \"../types\";\n\nexport interface BannerFunctionDeclarationWrapperProps {\n command?: CommandTree;\n children?: Children;\n}\n\n/**\n * A component to generate the `banner` function for a specific command or application.\n *\n * @remarks\n * This function will display a banner in the console with the application's name, version, and description. It can be customized with different variants for styling and supports conditional rendering based on flags or environment variables.\n */\nexport function BannerFunctionDeclarationWrapper(\n props: BannerFunctionDeclarationWrapperProps\n) {\n const { command, children } = props;\n\n const context = usePowerlines<BannerPluginContext>();\n\n return (\n <FunctionDeclaration\n export\n async\n name=\"showBanner\"\n doc={`Write the ${getAppTitle(context, true)} command-line interface application banner ${\n command ? `for the ${command.title} command ` : \"\"\n }to the console.`}\n parameters={[{ name: \"sleepTimeoutMs\", type: \"number\", default: 500 }]}>\n {children}\n <IfStatement condition={code`isInteractive && !isHelp`}>\n {code`await sleep(sleepTimeoutMs);`}\n </IfStatement>\n </FunctionDeclaration>\n );\n}\n\nexport interface BannerFunctionBodyDeclarationProps extends BannerFunctionDeclarationProps {\n title?: string;\n header?: string;\n footer?: string;\n description: string;\n insertNewlineBeforeCommand?: boolean;\n insertNewlineBeforeBanner?: boolean;\n insertNewlineAfterDescription?: boolean;\n}\n\n/**\n * A component to generate the `banner` function's body for a specific command or application.\n *\n * @remarks\n * This function will display a banner in the console with the application's name, version, and description. It can be customized with different variants for styling and supports conditional rendering based on flags or environment variables.\n */\nexport function BannerFunctionBodyDeclaration(\n props: BannerFunctionBodyDeclarationProps\n) {\n const {\n consoleFnName = \"log\",\n variant = \"primary\",\n title,\n header,\n footer,\n description,\n command,\n children,\n insertNewlineBeforeCommand = false,\n insertNewlineBeforeBanner = true,\n insertNewlineAfterDescription = false\n } = props;\n\n const theme = useTheme();\n\n const bannerPadding = computed(\n () =>\n Math.max(theme.padding.app, 0) * 2 +\n theme.borderStyles.banner.outline[variant].left.length +\n theme.borderStyles.banner.outline[variant].right.length\n );\n const totalPadding = computed(\n () => Math.max(theme.padding.banner, 0) * 2 + bannerPadding.value\n );\n\n return (\n <>\n {code`\n if (useApp().get(\"banner\") || hasFlag(\"no-banner\") || hasFlag(\"hide-banner\") || isMinimal) {\n return;\n }\n\n useApp().set(\"banner\", true); `}\n <Spacing />\n <Show when={insertNewlineBeforeBanner}>{code`writeLine(\"\"); `}</Show>\n <Spacing />\n\n {code`\n writeLine(borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].topLeft\n }\") + ${\n theme.icons.banner.header[variant]\n ? `borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].top\n }\".repeat(6)) + \" \" + ${\n theme.icons.banner.header[variant]\n ? `textColors.banner.header.${variant}(\"${\n theme.icons.banner.header[variant]\n }\") + \" \" + borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].top\n }\") + \" \" +`\n : \"\"\n } bold(textColors.banner.header.${variant}(\"${\n header\n }\")) + \" \" + borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].top\n }\".repeat(Math.max(process.stdout.columns - ${\n 6 +\n (theme.icons.banner.header[variant]\n ? theme.icons.banner.header[variant].length + 3\n : 0) +\n (header ? header.length + 2 : 0) +\n bannerPadding.value\n }, 0)))`\n : `borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].top\n }\".repeat(Math.max(process.stdout.columns - ${\n bannerPadding.value\n }, 0)))`\n } + borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].topRight\n }\"), { consoleFn: console.${consoleFnName} }); `}\n\n <Show\n when={!!children}\n fallback={\n <Show when={isSetString(title)}>\n <For each={title ? title.split(\"\\n\") : []} hardline>\n {line => code`splitText(\"${line}\",\n Math.max(process.stdout.columns - ${totalPadding.value}, 20)\n ).forEach((line) => {\n writeLine(borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].left\n }\") + \" \".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi(line).length + ${\n bannerPadding.value\n })) / 2), 0)) + bold(textColors.banner.title.${variant}(line)) + \" \".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi(line).length + ${\n bannerPadding.value\n })) / 2), 0)) + borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].right\n }\"), { consoleFn: console.${consoleFnName} });\n }); `}\n </For>\n </Show>\n }>\n {children}\n </Show>\n <Spacing />\n\n <Show when={isSetString(command?.title) && !!command?.path}>\n <Show when={insertNewlineBeforeCommand}>\n {code`writeLine(borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].left\n }\") + \" \".repeat(Math.max(process.stdout.columns - ${\n bannerPadding.value\n })) + borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].right\n }\"), { consoleFn: console.${consoleFnName} }); `}\n </Show>\n {`writeLine(borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].left\n }\") + \" \".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi(\"${\n command?.title\n }\").length ${command?.icon ? \" + 3\" : \"\"} + ${\n bannerPadding.value\n })) / 2), 0)) + bold(textColors.banner.command.${\n variant\n }(\"${command?.icon ? `${command.icon} ` : \"\"}${command?.title}\")) + \" \".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi(\"${command?.title}\").length ${\n command?.icon ? \" + 3\" : \"\"\n } + ${\n bannerPadding.value\n })) / 2), 0)) + borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].right\n }\"), { consoleFn: console.${consoleFnName} }); `}\n </Show>\n <Spacing />\n\n {code`splitText(\n bold(${\n command?.title\n ? \"textColors.banner.description\"\n : \"textColors.banner.command\"\n }.${variant}(\\`${formatDescription(description)}\\`)),\n Math.max(${\n command?.title\n ? `${totalPadding.value} * 2 > process.stdout.columns / 2 ? process.stdout.columns - 6 : process.stdout.columns - ${totalPadding.value}`\n : `process.stdout.columns - ${totalPadding.value}`\n } , 20)\n ).forEach((line) => {\n writeLine(borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].left\n }\") + \" \".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi(line).length + ${\n bannerPadding.value\n })) / 2), 0)) + textColors.banner.description.${variant}(line) + \" \".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi(line).length + ${\n bannerPadding.value\n })) / 2), 0)) + borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].right\n }\"), { consoleFn: console.${consoleFnName} });\n });\n ${\n insertNewlineAfterDescription\n ? `writeLine(borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].left\n }\") + \" \".repeat(Math.max(process.stdout.columns - ${\n bannerPadding.value\n })) + borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].right\n }\"), { consoleFn: console.${consoleFnName} });`\n : \"\"\n }\n writeLine(borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottomLeft\n }\") + ${\n footer\n ? `borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottom\n }\".repeat(Math.max(process.stdout.columns - ${\n 8 + (footer ? footer.length : 0) + bannerPadding.value\n }, 0))) + \" \" + ${\n footer\n ? `bold(textColors.banner.footer.${variant}(\"${footer}\"))`\n : \"\"\n } + \" \" + borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottom\n }\".repeat(6))`\n : `borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottom\n }\".repeat(Math.max(process.stdout.columns - ${\n bannerPadding.value\n }, 0)))`\n } + borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottomRight\n }\"), { consoleFn: console.${consoleFnName} });\n\n writeLine(\"\"); `}\n </>\n );\n}\n\nexport interface BannerFunctionDeclarationProps extends BannerFunctionDeclarationWrapperProps {\n variant?: ThemeColorVariant;\n consoleFnName?: \"log\" | \"info\" | \"warn\" | \"error\" | \"debug\";\n insertNewlineBeforeBanner?: boolean;\n}\n\n/**\n * A component to generate the `banner` function for a specific command or application.\n *\n * @remarks\n * This function will display a banner in the console with the application's name, version, and description. It can be customized with different variants for styling and supports conditional rendering based on flags or environment variables.\n */\nexport function BannerFunctionDeclaration(\n props: BannerFunctionDeclarationProps\n) {\n const {\n consoleFnName = \"log\",\n variant = \"primary\",\n command,\n children,\n insertNewlineBeforeBanner = true\n } = props;\n\n const theme = useTheme();\n const context = usePowerlines<BannerPluginContext>();\n\n const header = computed(\n () =>\n `${theme.labels.banner.header[variant] || getAppTitle(context, false)} v${\n context.packageJson.version || \"1.0.0\"\n }`\n );\n const footer = computed(() => theme.labels.banner.footer[variant]);\n const title = computed(\n () =>\n context.config.banner.title ||\n getAppTitle(context, true).replace(\n `v${context.packageJson.version || \"1.0.0\"}`,\n \"\"\n )\n );\n const description = computed(\n () => command?.description || getAppDescription(context)\n );\n\n return (\n <BannerFunctionDeclarationWrapper command={command}>\n <BannerFunctionBodyDeclaration\n title={!children ? title.value : undefined}\n header={header.value}\n description={description.value}\n footer={footer.value}\n variant={variant}\n consoleFnName={consoleFnName}\n command={command}\n insertNewlineBeforeCommand\n insertNewlineBeforeBanner={insertNewlineBeforeBanner}>\n {children}\n </BannerFunctionBodyDeclaration>\n </BannerFunctionDeclarationWrapper>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAyCA,SAAC,iCAAA,OAAA;CACC,MAAE,EACD,SACD,aACI;CACJ,MAAM,UAAC,eAAA;AACP,QAAA,gBAAA,qBAAA;EACA,UAAQ;;EAER,MAAM;;AAEN,UAAO,aAAA,YAAA,SAAA,KAAA,CAAA,6CAAA,UAAA,WAAA,QAAA,MAAA,aAAA,GAAA;;EAEL,YAAE,CAAA;GACA,MAAA;GACA,MAAM;GACN,SAAM;GACP,CAAC;EACF,IAAG,WAAO;AACR,UAAA,CAAA,UAAe,gBAAqB,aAAU;IAC7C,WAAQ,IAAA;IACR,UAAW,IAAC;IACZ,CAAC,CAAC;;EAEN,CAAC;;;;;;;;AAkBJ,SAAgB,8BAA8B,OAAqC;CACjF,MAAA,EACF,gBAAgB,OACd,UAAO,WACP,OACA,QACE,QACA,aACA,SACA,UACA,6BAAM,OACN,4BAAW,MACX,gCAAO,UACP;CACF,MAAE,QAAA,UAAA;CACF,MAAE,gBAAA,eAAgC,KAAA,IAAA,MAAA,QAAA,KAAA,EAAA,GAAA,IAAA,MAAA,aAAA,OAAA,QAAA,SAAA,KAAA,SAAA,MAAA,aAAA,OAAA,QAAA,SAAA,MAAA,OAAA;CAClC,MAAE,eAAA,eAAgC,KAAA,IAAA,MAAA,QAAA,QAAA,EAAA,GAAA,IAAA,cAAA,MAAA;AAClC,QAAI;EAAA,IAAK;;;;;;EAKH,gBAAA,SAAA,EAAA,CAAA;EAAA,gBAAA,MAAA;GACJ,MAAM;GACN,UAAQ,IAAA;GACT,CAAC;EAAE,gBAAkB,SAAQ,EAAA,CAAA;EAAA,WAAiB,IAAM;8CACpD,QAAA,IAAA,MAAA,aAAA,OAAA,QAAA,SAAA,QAAA,OAAA,MAAA,MAAA,OAAA,OAAA,WAAA,+BAAA,QAAA,IAAA,MAAA,aAAA,OAAA,QAAA,SAAA,IAAA,uBAAA,MAAA,MAAA,OAAA,OAAA,WAAA,4BAAA,QAAA,IAAA,MAAA,MAAA,OAAA,OAAA,SAAA,yCAAA,QAAA,IAAA,MAAA,aAAA,OAAA,QAAA,SAAA,IAAA,cAAA,GAAA,iCAAA,QAAA,IAAA,OAAA,0CAAA,QAAA,IAAA,MAAA,aAAA,OAAA,QAAA,SAAA,IAAA,6CAAA,KAAA,MAAA,MAAA,OAAA,OAAA,WAAA,MAAA,MAAA,OAAA,OAAA,SAAA,SAAA,IAAA,MAAA,SAAA,OAAA,SAAA,IAAA,KAAA,cAAA,MAAA,UAAA,+BAAA,QAAA,IAAA,MAAA,aAAA,OAAA,QAAA,SAAA,IAAA,6CAAA,cAAA,MAAA,QAAA,iCAAA,QAAA,IAAA,MAAA,aAAA,OAAA,QAAA,SAAA,SAAA,2BAAA,cAAA,OAAA;EAAA,gBAAA,MAAA;GACD,MAAM,CAAA,CAAA;GACJ,IAAI,WAAW;AAChB,WAAA,gBAAA,MAAA;;AAEM,aAAA,YAAA,MAAA;;KAEF,IAAI,WAAA;AACD,aAAE,gBAAuB,KAAG;OAC5B,IAAM,OAAA;AACR,eAAA,QAAA,MAAA,MAAA,KAAA,GAAA,EAAA;;OAEA,UAAc;OACf,WAAS,SAAA,IAAA,cAAA,KAAA;8CAC8B,aAAK,MAAc;;;;OAI3D,CAAA;;KAEC,CAAC;;GAEK;GACV,CAAC;EAAE,gBAAc,SAAa,EAAA,CAAA;EAAA,gBAAuB,MAAC;GACrD,IAAI,OAAO;AACT,WAAO,YAAY,SAAQ,MAAO,IAAA,CAAA,CAAA,SAAO;;GAE3C,IAAI,WAAW;AACb,WAAO,CAAC,gBAAgB,MAAA;KACtB,MAAM;KACN,IAAI,WAAW;AACb,aAAO,IAAE,yCAAA,QAAA,IAAA,MAAA,aAAA,OAAA,QAAA,SAAA,KAAA,oDAAA,cAAA,MAAA,mCAAA,QAAA,IAAA,MAAA,aAAA,OAAA,QAAA,SAAA,MAAA,2BAAA,cAAA;;KAEZ,CAAC,EAAE,WAAI,yCAAA,QAAA,IAAA,MAAA,aAAA,OAAA,QAAA,SAAA,KAAA,4EAAA,SAAA,MAAA,YAAA,SAAA,OAAA,SAAA,GAAA,KAAA,cAAA,MAAA,gDAAA,QAAA,IAAA,SAAA,OAAA,GAAA,QAAA,KAAA,MAAA,KAAA,SAAA,MAAA,4EAAA,SAAA,MAAA,YAAA,SAAA,OAAA,SAAA,GAAA,KAAA,cAAA,MAAA,6CAAA,QAAA,IAAA,MAAA,aAAA,OAAA,QAAA,SAAA,MAAA,2BAAA,cAAA,OAAA,CAAA;;GAEX,CAAC;EAAE,gBAAc,SAAa,EAAA,CAAA;EAAA,WAAe,IAAO;iBACxC,SAAW,QAAK,kCAA0B,4BAAA,GAAA,QAAA,KAAA,kBAAA,YAAA,CAAA;qBACzC,SAAA,QAAA,GAAA,aAAA,MAAA,4FAAA,aAAA,UAAA,4BAAA,aAAA,QAAA;;kDAE4B,QAAS,IAAS,MAAA,aAAA,OAAA,QAAA,SAAA,KAAA,0FAAA,cAAA,MAAA,+CAAA,QAAA,6FAAA,cAAA,MAAA,6CAAA,QAAA,IAAA,MAAA,aAAA,OAAA,QAAA,SAAA,MAAA,2BAAA,cAAA;;UAEpD,gCAAgC,yCAAK,QAAA,IAAA,MAAA,aAAA,OAAA,QAAA,SAAA,KAAA,oDAAA,cAAA,MAAA,mCAAA,QAAA,IAAA,MAAA,aAAA,OAAA,QAAA,SAAA,MAAA,2BAAA,cAAA,QAAA,GAAA;gDACnB,QAAA,IAAA,MAAA,aAAA,OAAA,QAAA,SAAA,WAAA,OAAA,SAAA,+BAAA,QAAA,IAAA,MAAA,aAAA,OAAA,QAAA,SAAA,OAAA,6CAAA,KAAA,SAAA,OAAA,SAAA,KAAA,cAAA,MAAA,iBAAA,SAAA,iCAAA,QAAA,IAAA,OAAA,OAAA,GAAA,uCAAA,QAAA,IAAA,MAAA,aAAA,OAAA,QAAA,SAAA,OAAA,gBAAA,+BAAA,QAAA,IAAA,MAAA,aAAA,OAAA,QAAA,SAAA,OAAA,6CAAA,cAAA,MAAA,QAAA,iCAAA,QAAA,IAAA,MAAA,aAAA,OAAA,QAAA,SAAA,YAAA,2BAAA,cAAA;;yBAEH;EAAC;;;;;;;;AAc1B,SAAe,0BAA0B,OAAM;CAC7C,MAAM,EACJ,gBAAe,OACf,UAAM,WACN,SACA,UACA,4BAAsB,SACpB;CACJ,MAAM,QAAI,UAAc;CACxB,MAAM,UAAU,eAAoC;CACpD,MAAM,SAAS,eAAc,GAAA,MAAO,OAAQ,OAAS,OAAA,YAAA,YAAA,SAAA,MAAA,CAAA,IAAA,QAAA,YAAA,WAAA,UAAA;CACrD,MAAM,SAAS,eAAW,MAAU,OAAA,OAAc,OAAG,SAAA;CACrD,MAAM,QAAK,eAAA,QAAA,OAAA,OAAA,SAAA,YAAA,SAAA,KAAA,CAAA,QAAA,IAAA,QAAA,YAAA,WAAA,WAAA,GAAA,CAAA;CACX,MAAM,cAAS,eAAA,SAAA,eAAA,kBAAA,QAAA,CAAA;AACf,QAAO,gBAAO,kCAAA;EACP;EACL,IAAI,WAAS;AACX,UAAM,gBAAA,+BAAA;IACL,IAAA,QAAS;;;IAGR,IAAC,SAAW;AACV,YAAM,OAAA;;IAER,IAAI,cAAc;AAChB,YAAE,YAAc;;IAElB,IAAI,SAAM;AACR,YAAO,OAAA;;IAEP;IACM;IACC;IACT,4BAAW;IACgB;IACzB;IACH,CAAC;;EAEL,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shell-shock/plugin-banner",
3
- "version": "0.1.22",
3
+ "version": "0.1.23",
4
4
  "private": false,
5
5
  "description": "A package containing a Shell Shock plugin to generate banner built-in modules that display information about the application.",
6
6
  "keywords": [
@@ -55,9 +55,9 @@
55
55
  "@powerlines/deepkit": "^0.6.165",
56
56
  "@powerlines/plugin-alloy": "^0.26.2",
57
57
  "@powerlines/plugin-plugin": "^0.12.337",
58
- "@shell-shock/core": "^0.15.1",
59
- "@shell-shock/plugin-theme": "^0.4.8",
60
- "@shell-shock/plugin-console": "^0.1.35",
58
+ "@shell-shock/core": "^0.15.2",
59
+ "@shell-shock/plugin-theme": "^0.4.9",
60
+ "@shell-shock/plugin-console": "^0.2.0",
61
61
  "@stryke/path": "^0.27.3",
62
62
  "@stryke/type-checks": "^0.6.0",
63
63
  "defu": "^6.1.6",
@@ -65,7 +65,7 @@
65
65
  },
66
66
  "devDependencies": {
67
67
  "@powerlines/plugin-deepkit": "^0.11.265",
68
- "@types/node": "^25.5.0"
68
+ "@types/node": "^25.5.1"
69
69
  },
70
70
  "publishConfig": { "access": "public" },
71
71
  "exports": {
@@ -155,5 +155,5 @@
155
155
  }
156
156
  }
157
157
  },
158
- "gitHead": "b39233bcc3bed352f050a2b43ca0fa432a4175a4"
158
+ "gitHead": "ba74aaa8aaa2c911ce54df1fae944951af53a3ad"
159
159
  }