@lukoweb/apitogo 0.1.104 → 0.1.105

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/cli/cli.js CHANGED
@@ -5801,7 +5801,7 @@ import {
5801
5801
  // package.json
5802
5802
  var package_default = {
5803
5803
  name: "@lukoweb/apitogo",
5804
- version: "0.1.104",
5804
+ version: "0.1.105",
5805
5805
  type: "module",
5806
5806
  sideEffects: [
5807
5807
  "**/*.css",
@@ -11940,7 +11940,7 @@ function resolveManifestNextStep(manifest, secrets) {
11940
11940
  return `Publish prerequisites incomplete: ${prerequisites.missingFields.join(", ")}.`;
11941
11941
  }
11942
11942
  function createScaffoldManifest(siteName) {
11943
- const title = siteName?.trim() || "Developer Portal";
11943
+ const title = siteName?.trim() || "Sample API";
11944
11944
  return {
11945
11945
  siteName: title,
11946
11946
  branding: { title }
@@ -11950,7 +11950,7 @@ function resolveProjectDisplayName(manifest, config2) {
11950
11950
  return manifest.siteName?.trim() || manifest.branding?.title?.trim() || (config2 ? readSiteTitle2(config2) : void 0) || "Developer Portal";
11951
11951
  }
11952
11952
  function applyScaffoldManifestPolicy(manifest, options) {
11953
- const title = options.siteName?.trim() || manifest.siteName?.trim() || manifest.branding?.title?.trim() || "Developer Portal";
11953
+ const title = options.siteName?.trim() || manifest.siteName?.trim() || manifest.branding?.title?.trim() || "Sample API";
11954
11954
  const result = {
11955
11955
  ...manifest,
11956
11956
  siteName: title,
@@ -14898,7 +14898,7 @@ function createDefaultApitogoJsonConfig(options) {
14898
14898
  redirectToAfterSignUp: "/account/dashboard"
14899
14899
  },
14900
14900
  metadata: {
14901
- favicon: "/logo-light.svg"
14901
+ favicon: "/Icon.png"
14902
14902
  },
14903
14903
  theme: {
14904
14904
  fonts: {
@@ -15691,6 +15691,9 @@ var BRANDING_ASSETS = [
15691
15691
  }
15692
15692
  ];
15693
15693
 
15694
+ // src/cli/make-config/favicon-png.ts
15695
+ var FAVICON_PNG_BASE64 = "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";
15696
+
15694
15697
  // src/cli/make-config/scaffold-project.ts
15695
15698
  var OPENAPI_GLOBS = [
15696
15699
  "apis/openapi.json",
@@ -15870,6 +15873,10 @@ async function ensurePublicBrandingFiles(dir) {
15870
15873
  }
15871
15874
  await writeFile12(dest, content, "utf8");
15872
15875
  }
15876
+ const faviconDest = path49.join(destDir, "Icon.png");
15877
+ if (!await fileExists2(faviconDest)) {
15878
+ await writeFile12(faviconDest, Buffer.from(FAVICON_PNG_BASE64, "base64"));
15879
+ }
15873
15880
  }
15874
15881
  async function ensureThinConfigTsx(dir) {
15875
15882
  const tsxPath = path49.join(dir, "apitogo.config.tsx");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lukoweb/apitogo",
3
- "version": "0.1.104",
3
+ "version": "0.1.105",
4
4
  "type": "module",
5
5
  "sideEffects": [
6
6
  "**/*.css",
@@ -5,14 +5,37 @@ type SiteTitleProps = {
5
5
  className?: string;
6
6
  };
7
7
 
8
- const API_SUFFIX = /^(.*?)(?:\s*)(API)$/i;
9
-
10
8
  export const splitBrandWordmark = (title: string) => {
11
- const match = title.trim().match(API_SUFFIX);
12
- if (!match?.[1]) {
9
+ const trimmed = title.trim();
10
+ if (!trimmed) {
13
11
  return { prefix: title, accent: null as string | null };
14
12
  }
15
- return { prefix: match[1], accent: match[2] ?? "API" };
13
+
14
+ const words = trimmed.split(/\s+/).filter(Boolean);
15
+ if (words.length >= 2) {
16
+ return {
17
+ prefix: words.slice(0, -1).join(" "),
18
+ accent: words.at(-1) ?? null,
19
+ };
20
+ }
21
+
22
+ const word = words[0] ?? trimmed;
23
+ const apiMatch = word.match(/^(.*)(API)$/i);
24
+ if (apiMatch?.[1]) {
25
+ return { prefix: apiMatch[1], accent: apiMatch[2] ?? "API" };
26
+ }
27
+
28
+ const camelMatch = word.match(/^(.*[a-z])([A-Z][a-z]*)$/);
29
+ if (camelMatch?.[1]) {
30
+ return { prefix: camelMatch[1], accent: camelMatch[2] ?? null };
31
+ }
32
+
33
+ if (word.length < 2) {
34
+ return { prefix: word, accent: null };
35
+ }
36
+
37
+ const splitAt = Math.floor(word.length / 2);
38
+ return { prefix: word.slice(0, splitAt), accent: word.slice(splitAt) };
16
39
  };
17
40
 
18
41
  export const SiteTitle = ({ title, className }: SiteTitleProps) => {
@@ -21,12 +44,13 @@ export const SiteTitle = ({ title, className }: SiteTitleProps) => {
21
44
  return (
22
45
  <span
23
46
  className={cn(
24
- "font-sans text-[1.4rem] font-extrabold tracking-[-0.03em] text-foreground",
47
+ "font-sans text-[1.4rem] font-extrabold tracking-[-0.03em]",
25
48
  className,
26
49
  )}
50
+ style={{ color: "var(--foreground)" }}
27
51
  >
28
52
  {prefix}
29
- {accent ? <span className="text-primary">{accent}</span> : null}
53
+ {accent ? <span style={{ color: "var(--primary)" }}>{accent}</span> : null}
30
54
  </span>
31
55
  );
32
56
  };