@turnipxenon/pineapple 5.3.3 → 5.3.5

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.
Files changed (61) hide show
  1. package/dist/components/dialog_manager/DialogManager.d.ts +5 -3
  2. package/dist/components/dialog_manager/DialogManager.d.ts.map +1 -1
  3. package/dist/components/dialog_manager/DialogManager.js +18 -10
  4. package/dist/components/reveal-info/RevealInfo.svelte +2 -1
  5. package/dist/components/reveal-info/RevealInfo.svelte.d.ts.map +1 -1
  6. package/dist/modules/overrideable_meta/OverridableMeta.svelte +27 -21
  7. package/dist/modules/overrideable_meta/OverridableMeta.svelte.d.ts.map +1 -1
  8. package/dist/modules/parsnip/ParsnipBlockChildren.svelte +16 -3
  9. package/dist/modules/parsnip/ParsnipBlockChildren.svelte.d.ts.map +1 -1
  10. package/dist/modules/parsnip/ParsnipPhrasingChildren.svelte +3 -0
  11. package/dist/modules/parsnip/ParsnipPhrasingChildren.svelte.d.ts.map +1 -1
  12. package/dist/modules/parsnip/external-images/ParsnipImage.svelte +5 -4
  13. package/dist/modules/parsnip/external-images/ParsnipImage.svelte.d.ts.map +1 -1
  14. package/dist/modules/parsnip/external-images/ParsnipImageCollection.svelte +2 -1
  15. package/dist/modules/parsnip/external-images/ParsnipImageCollection.svelte.d.ts.map +1 -1
  16. package/dist/modules/parsnip/route-util/slugPageServerLoad.d.ts.map +1 -1
  17. package/dist/modules/parsnip/route-util/slugPageServerLoad.js +15 -2
  18. package/dist/ui/components/MeltToaster/MeltToaster.svelte +1 -1
  19. package/dist/ui/components/NestedNavigation.svelte +1 -1
  20. package/dist/ui/components/SocialSection.svelte +2 -2
  21. package/dist/ui/components/randomized-background/RandomizedImage.svelte +7 -5
  22. package/dist/ui/components/randomized-background/RandomizedImage.svelte.d.ts.map +1 -1
  23. package/dist/ui/elements/CodeBlock/CodeBlock.svelte +1 -1
  24. package/dist/ui/elements/CodeBlock/CodeBlock.svelte.d.ts.map +1 -1
  25. package/dist/ui/elements/CodeBlock/CodeBlockProps.d.ts +3 -1
  26. package/dist/ui/elements/CodeBlock/CodeBlockProps.d.ts.map +1 -1
  27. package/dist/ui/elements/index.d.ts +1 -0
  28. package/dist/ui/elements/index.d.ts.map +1 -1
  29. package/dist/ui/elements/index.js +1 -0
  30. package/dist/ui/elements/pinya-combobox/PinyaCombobox.svelte +3 -4
  31. package/dist/ui/elements/pinya-combobox/PinyaCombobox.svelte.d.ts.map +1 -1
  32. package/dist/ui/elements/pinya-combobox/index.d.ts +3 -0
  33. package/dist/ui/elements/pinya-combobox/index.d.ts.map +1 -0
  34. package/dist/ui/elements/pinya-combobox/index.js +2 -0
  35. package/dist/ui/modules/NavigationMenu/LdSchema.d.ts +26 -0
  36. package/dist/ui/modules/NavigationMenu/LdSchema.d.ts.map +1 -0
  37. package/dist/ui/modules/NavigationMenu/LdSchema.js +18 -0
  38. package/dist/ui/modules/NavigationMenu/NavigationControl.svelte.d.ts +1 -1
  39. package/dist/ui/modules/NavigationMenu/NavigationMenu.svelte +33 -29
  40. package/dist/ui/modules/NavigationMenu/NavigationMenu.svelte.d.ts +1 -1
  41. package/dist/ui/modules/NavigationMenu/NavigationMenu.svelte.d.ts.map +1 -1
  42. package/dist/ui/modules/NavigationMenu/PageMeta.d.ts +1 -9
  43. package/dist/ui/modules/NavigationMenu/PageMeta.d.ts.map +1 -1
  44. package/dist/ui/modules/NavigationMenu/PageMeta.js +1 -1
  45. package/dist/ui/modules/NavigationMenu/index.d.ts +1 -0
  46. package/dist/ui/modules/NavigationMenu/index.d.ts.map +1 -1
  47. package/dist/ui/modules/NavigationMenu/index.js +1 -0
  48. package/dist/ui/modules/universal-overlay/DialogPanel.svelte +58 -39
  49. package/dist/ui/modules/universal-overlay/DialogPanel.svelte.d.ts.map +1 -1
  50. package/dist/ui/templates/SeaweedLayout/EntryGroup.svelte +2 -2
  51. package/dist/ui/templates/SeaweedLayout/ProjectGroupConfig.svelte +3 -2
  52. package/dist/ui/templates/SeaweedLayout/ProjectGroupConfig.svelte.d.ts.map +1 -1
  53. package/dist/ui/templates/SeaweedLayout/SeaweedLayout.svelte +5 -9
  54. package/dist/ui/templates/SeaweedLayout/SeaweedLayout.svelte.d.ts.map +1 -1
  55. package/dist/ui/templates/blog_template/BlogTemplate.svelte +8 -6
  56. package/dist/ui/templates/blog_template/BlogTemplate.svelte.d.ts +1 -1
  57. package/dist/ui/templates/blog_template/BlogTemplate.svelte.d.ts.map +1 -1
  58. package/dist/ui/templates/blog_template/BlogTemplateInner.svelte +8 -5
  59. package/dist/ui/templates/blog_template/BlogTemplateInner.svelte.d.ts +1 -1
  60. package/dist/ui/templates/blog_template/BlogTemplateInner.svelte.d.ts.map +1 -1
  61. package/package.json +3 -1
@@ -8,15 +8,16 @@
8
8
  import { FourPartCard } from "../../components/index";
9
9
  import { PinyaCard } from "../../elements/index";
10
10
  import Placeholder from "../../elements/Placeholder.svelte";
11
+ import { type FoodReviewJson, LdSchemaUtil } from "../index";
11
12
  import NavigationControl from "./NavigationControl.svelte";
12
13
  import {
13
14
  DefaultPageMetaSorter,
14
- type FoodReviewJson,
15
15
  type PageMeta,
16
16
  parsePageMeta,
17
17
  type ParsePageMetaCompareFn
18
18
  } from "./PageMeta";
19
19
  import { renderStar } from "../../../util/util";
20
+ import { untrack } from "svelte";
20
21
  import { SvelteMap } from "svelte/reactivity";
21
22
 
22
23
  interface Props {
@@ -74,33 +75,37 @@
74
75
  return inlineTags.trim().length > 0;
75
76
  })());
76
77
 
77
- const fileBasedList = parsePageMeta(fileList, jsonList, imageMap, compareFn);
78
- const parsnipBasedList = parsnipOverall?.files.map(pf => {
79
- let imageUrl = pf.preview;
80
- if (imageUrl && !imageUrl.includes("https://")) {
81
- imageUrl = `${parsnipOverall.baseUrl}/${pf.preview}`;
78
+ const pageFlatList = untrack(() => {
79
+ const fileBasedList = parsePageMeta(fileList, jsonList, imageMap, compareFn);
80
+ const parsnipBasedList = parsnipOverall?.files.map(pf => {
81
+ let imageUrl = pf.preview;
82
+ if (imageUrl && !imageUrl.includes("https://")) {
83
+ imageUrl = `${parsnipOverall.baseUrl}/${pf.preview}`;
84
+ }
85
+ const meta: PageMeta = {
86
+ title: pf.basename,
87
+ nestedPages: [],
88
+ relativeLink: `${parsnipBasePath}${pf.slug}`,
89
+ tags: pf.tags,
90
+ imageUrl,
91
+ imageAlt: pf.previewAlt,
92
+ datePublished: pf.datePublished ?? pf.stat.ctime ? new Date(pf.stat.ctime).toISOString().split("T")[0] : undefined,
93
+ lastUpdated: pf.lastUpdated ?? pf.stat.mtime ? new Date(pf.stat.mtime).toISOString().split("T")[0] : undefined,
94
+ description: pf.tagline,
95
+ priority: 0
96
+ };
97
+ return meta;
98
+ }) ?? [];
99
+ const list = fileBasedList.concat(parsnipBasedList);
100
+
101
+ if (compareFn) {
102
+ list.sort(compareFn);
103
+ } else {
104
+ list.sort(DefaultPageMetaSorter);
82
105
  }
83
- const meta: PageMeta = {
84
- title: pf.basename,
85
- nestedPages: [],
86
- relativeLink: `${parsnipBasePath}${pf.slug}`,
87
- tags: pf.tags,
88
- imageUrl,
89
- imageAlt: pf.previewAlt,
90
- datePublished: pf.datePublished ?? pf.stat.ctime ? new Date(pf.stat.ctime).toISOString().split("T")[0] : undefined,
91
- lastUpdated: pf.lastUpdated ?? pf.stat.mtime ? new Date(pf.stat.mtime).toISOString().split("T")[0] : undefined,
92
- description: pf.tagline,
93
- priority: 0
94
- };
95
- return meta;
96
- }) ?? [];
97
- const pageFlatList = fileBasedList.concat(parsnipBasedList);
98
-
99
- if (compareFn) {
100
- pageFlatList.sort(compareFn);
101
- } else {
102
- pageFlatList.sort(DefaultPageMetaSorter);
103
- }
106
+
107
+ return list;
108
+ });
104
109
 
105
110
  const selectedTagsSet = $derived(new Set(selectedTags.map(tag => tag.toLocaleLowerCase())));
106
111
  const filteredPageFlatList = $derived(
@@ -146,7 +151,7 @@
146
151
  fetch(`${parsnipOverall.baseUrl}/${parsnipMetadata.path}`.replaceAll(".ast.", ".ld."))
147
152
  .then(data => data.json())
148
153
  .then((data: FoodReviewJson) => {
149
- ratingCache.set(vp.relativeLink, `${renderStar(data.reviewRating.ratingValue)}`);
154
+ ratingCache.set(vp.relativeLink, `${renderStar(LdSchemaUtil.getReviewRating(data))}`);
150
155
  }).catch(err => {
151
156
  console.warn(err);
152
157
  }).finally(() => {
@@ -344,7 +349,6 @@
344
349
  .blurb-text {
345
350
  padding-top: 1lh;
346
351
  padding-bottom: 1lh;
347
- grow: 1;
348
352
  white-space: initial;
349
353
  min-width: 0;
350
354
  display: flex;
@@ -19,7 +19,7 @@ interface Props {
19
19
  parsnipOverall?: ParsnipOverall;
20
20
  parsnipBasePath?: string;
21
21
  }
22
- declare const NavigationMenu: import("svelte").Component<Props, {}, "currentIndex" | "pageSize" | "selectedTags" | "queryReady">;
22
+ declare const NavigationMenu: import("svelte").Component<Props, {}, "selectedTags" | "currentIndex" | "pageSize" | "queryReady">;
23
23
  type NavigationMenu = ReturnType<typeof NavigationMenu>;
24
24
  export default NavigationMenu;
25
25
  //# sourceMappingURL=NavigationMenu.svelte.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NavigationMenu.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/ui/modules/NavigationMenu/NavigationMenu.svelte.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAK1E,OAAO,EAKL,KAAK,sBAAsB,EAC3B,MAAM,yCAAyC,CAAC;AAKjD,UAAU,KAAK;IACd,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,SAAS,CAAC,EAAE,SAAS,GAAG,sBAAsB,CAAC;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC;CACzB;AA4NF,QAAA,MAAM,cAAc,oGAAwC,CAAC;AAC7D,KAAK,cAAc,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AACxD,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"NavigationMenu.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/ui/modules/NavigationMenu/NavigationMenu.svelte.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAM1E,OAAO,EAIL,KAAK,sBAAsB,EAC3B,MAAM,yCAAyC,CAAC;AAMjD,UAAU,KAAK;IACd,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,SAAS,CAAC,EAAE,SAAS,GAAG,sBAAsB,CAAC;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC;CACzB;AAkOF,QAAA,MAAM,cAAc,oGAAwC,CAAC;AAC7D,KAAK,cAAc,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AACxD,eAAe,cAAc,CAAC"}
@@ -1,13 +1,5 @@
1
1
  import type { ParsnipOverall } from "../../../modules/parsnip/ParsnipOverall";
2
- export interface FoodReviewJson {
3
- datePublished: string;
4
- reviewRating: {
5
- ratingValue: number;
6
- };
7
- itemReviewed: {
8
- url: string;
9
- };
10
- }
2
+ import type { FoodReviewJson } from "../index";
11
3
  export interface PageMeta {
12
4
  datePublished?: string;
13
5
  description?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"PageMeta.d.ts","sourceRoot":"","sources":["../../../../src/lib/ui/modules/NavigationMenu/PageMeta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAG1E,MAAM,WAAW,cAAc;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE;QACb,WAAW,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,YAAY,EAAE;QACb,GAAG,EAAE,MAAM,CAAA;KACX,CAAC;CACF;AAED,MAAM,WAAW,QAAQ;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,QAAQ,EAAE,CAAC;IAExB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,EAAE,MAAM,EAAE,CAAC;IAEf;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;;OAIG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,cAAc,CAAC;CAChC;AAED,MAAM,WAAW,cAAc;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,EAAE,MAAM,EAAE,CAAC;IAEf;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,cAAc,CAAC;CAChC;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAAI,YAAY,QAAQ,EAAE,EAAE,OAAO,QAAQ,KAAG,OAiB5E,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,KAAK,MAAM,CAAC,CAAC;AAE5E,eAAO,MAAM,aAAa,GAAI,UAAU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChD,UAAU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC7B,YAAY,sBAAsB,KAAG,QAAQ,EAoG3D,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,MAAM;IACzC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,SAAS,CAAC,EAAE,sBAAsB,CAAC;IACnC,cAAc,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IAC5C,eAAe,CAAC,EAAE,MAAM,CAAC;CACzB,KAAG,QAAQ,EA8CX,CAAC;AAKF;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,EAAE,sBA6BnC,CAAC"}
1
+ {"version":3,"file":"PageMeta.d.ts","sourceRoot":"","sources":["../../../../src/lib/ui/modules/NavigationMenu/PageMeta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG5D,MAAM,WAAW,QAAQ;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,QAAQ,EAAE,CAAC;IAExB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,EAAE,MAAM,EAAE,CAAC;IAEf;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;;OAIG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,cAAc,CAAC;CAChC;AAED,MAAM,WAAW,cAAc;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,EAAE,MAAM,EAAE,CAAC;IAEf;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,cAAc,CAAC;CAChC;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAAI,YAAY,QAAQ,EAAE,EAAE,OAAO,QAAQ,KAAG,OAiB5E,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,KAAK,MAAM,CAAC,CAAC;AAE5E,eAAO,MAAM,aAAa,GAAI,UAAU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChD,UAAU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC7B,YAAY,sBAAsB,KAAG,QAAQ,EAoG3D,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,MAAM;IACzC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,SAAS,CAAC,EAAE,sBAAsB,CAAC;IACnC,cAAc,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IAC5C,eAAe,CAAC,EAAE,MAAM,CAAC;CACzB,KAAG,QAAQ,EA8CX,CAAC;AAKF;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,EAAE,sBA6BnC,CAAC"}
@@ -40,7 +40,7 @@ export const parsePageMeta = (fileList, jsonList, imageMap, compareFn) => {
40
40
  }
41
41
  });
42
42
  for (const path in fileList) {
43
- if (path.includes('[...')) {
43
+ if (path.includes("[...")) {
44
44
  continue;
45
45
  }
46
46
  const pathEnd = path.split("../").pop();
@@ -1,3 +1,4 @@
1
1
  export { default as NavigationMenu } from "./NavigationMenu.svelte";
2
+ export * from "./LdSchema";
2
3
  export * from "./PageMeta";
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/ui/modules/NavigationMenu/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACpE,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/ui/modules/NavigationMenu/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACpE,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
@@ -1,2 +1,3 @@
1
1
  export { default as NavigationMenu } from "./NavigationMenu.svelte";
2
+ export * from "./LdSchema";
2
3
  export * from "./PageMeta";
@@ -6,7 +6,10 @@ Layout and logic for DialogPanel. Some of the logics for the portraits are in Un
6
6
 
7
7
  <script lang="ts">
8
8
  import { dialogManager } from "../../../components/dialog_manager/DialogManager";
9
- import { getAutoScrollPrefContext, getTextSpeedContext } from "../../../util/context/pineappleBaseContextDefinitions.svelte";
9
+ import {
10
+ getAutoScrollPrefContext,
11
+ getTextSpeedContext
12
+ } from "../../../util/context/pineappleBaseContextDefinitions.svelte";
10
13
  import { onMount, tick } from "svelte";
11
14
 
12
15
  let currentMessage = $state("");
@@ -14,6 +17,7 @@ Layout and logic for DialogPanel. Some of the logics for the portraits are in Un
14
17
  let autoScrollPrefContext = getAutoScrollPrefContext();
15
18
  let dialogPanelElement: HTMLDivElement | null = null;
16
19
  let shouldStickToBottom = true;
20
+ let divRole = $state<"button" | undefined>();
17
21
 
18
22
  const onDialogClick = () => {
19
23
  dialogManager?.skipAnimation();
@@ -34,14 +38,20 @@ Layout and logic for DialogPanel. Some of the logics for the portraits are in Un
34
38
  currentMessage = value;
35
39
  });
36
40
 
41
+ dialogManager.isDoneTransitionWritable.subscribe(value => {
42
+ divRole = value ? undefined : "button";
43
+ });
44
+
37
45
  dialogManager.update(0);
38
46
  });
39
47
 
40
48
  $effect(() => {
41
- dialogManager.setUpdateRate((16*10) - (textSpeedContext.value*16));
49
+ dialogManager.setUpdateRate((16 * 10) - (textSpeedContext.value * 16));
42
50
  });
43
51
 
44
52
  $effect(() => {
53
+ // funny loner variable below cause we want to trigger everything below when it changes
54
+ // eslint-disable-next-line @typescript-eslint/no-unused-expressions
45
55
  currentMessage;
46
56
 
47
57
  tick().then(() => {
@@ -54,13 +64,21 @@ Layout and logic for DialogPanel. Some of the logics for the portraits are in Un
54
64
  });
55
65
  </script>
56
66
 
67
+ <!-- svelte-ignore a11y_no_noninteractive_tabindex -->
57
68
  <div
58
- tabindex="0"
59
- role="button"
69
+ tabindex={divRole === "button" ? 0 : undefined}
70
+ role={divRole}
71
+ aria-label={divRole === "button" ? "Skip text animation" : undefined}
60
72
  id="dialog-panel"
61
73
  bind:this={dialogPanelElement}
62
74
  onclick={onDialogClick}
63
75
  onscroll={onDialogScroll}
76
+ onkeydown={(e) => {
77
+ if (e.key === "Enter" || e.key === " ") {
78
+ e.preventDefault();
79
+ onDialogClick();
80
+ }
81
+ }}
64
82
  onkeyup={(e) => {
65
83
  if (e.key === "j") {
66
84
  onDialogClick();
@@ -70,44 +88,45 @@ Layout and logic for DialogPanel. Some of the logics for the portraits are in Un
70
88
  <!-- Made for 140 characters, like the original tweets -->
71
89
  <!-- eslint-disable-next-line svelte/no-at-html-tags -->
72
90
  <div id="reverse-dialog-wrapper">
91
+ <!-- eslint-disable-next-line svelte/no-at-html-tags -->
73
92
  {@html currentMessage}
74
93
  </div>
75
94
  </div>
76
95
 
77
96
  <style>
78
- :global {
79
- :root {
80
- --color-dialog-bold: #6b8499;
81
- --color-dialog-italic: #a55332;
82
- }
83
-
84
- html.dark {
85
- --color-dialog-bold: #85a1b6;
86
- --color-dialog-italic: #f7b67c;
87
- }
88
-
89
- #reverse-dialog-wrapper {
90
- width: 100%;
91
- }
92
-
93
- #dialog-panel {
94
- overflow: auto;
95
- display: block;
96
-
97
- img,
98
- video {
99
- max-height: 3lh;
100
- display: inline;
101
- }
102
-
103
- b {
104
- font-weight: bolder;
105
- color: var(--color-dialog-bold);
106
- }
107
-
108
- i {
109
- color: var(--color-dialog-italic);
110
- }
111
- }
112
- }
97
+ :global {
98
+ :root {
99
+ --color-dialog-bold: #6b8499;
100
+ --color-dialog-italic: #a55332;
101
+ }
102
+
103
+ html.dark {
104
+ --color-dialog-bold: #85a1b6;
105
+ --color-dialog-italic: #f7b67c;
106
+ }
107
+
108
+ #reverse-dialog-wrapper {
109
+ width: 100%;
110
+ }
111
+
112
+ #dialog-panel {
113
+ overflow: auto;
114
+ display: block;
115
+
116
+ img,
117
+ video {
118
+ max-height: 3lh;
119
+ display: inline;
120
+ }
121
+
122
+ b {
123
+ font-weight: bolder;
124
+ color: var(--color-dialog-bold);
125
+ }
126
+
127
+ i {
128
+ color: var(--color-dialog-italic);
129
+ }
130
+ }
131
+ }
113
132
  </style>
@@ -1 +1 @@
1
- {"version":3,"file":"DialogPanel.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/ui/modules/universal-overlay/DialogPanel.svelte.ts"],"names":[],"mappings":"AA6EA,4GAA4G;AAC5G,QAAA,MAAM,WAAW,2DAAwC,CAAC;AAC1D,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;AAClD,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"DialogPanel.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/ui/modules/universal-overlay/DialogPanel.svelte.ts"],"names":[],"mappings":"AA8FA,4GAA4G;AAC5G,QAAA,MAAM,WAAW,2DAAwC,CAAC;AAC1D,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;AAClD,eAAe,WAAW,CAAC"}
@@ -7,7 +7,7 @@
7
7
  import type { ProjectGroup, SnippetMeta } from "./";
8
8
  import { SectionType } from "./props";
9
9
  import { getCommitDate } from "../../../util/getCommitDate";
10
- import { onMount } from "svelte";
10
+ import { onMount, untrack } from "svelte";
11
11
 
12
12
  let {
13
13
  title,
@@ -21,7 +21,7 @@
21
21
  }: ProjectGroup = $props();
22
22
 
23
23
  // State — resolvedEntryList allows date overrides after fetching from GitHub
24
- let resolvedEntryList = $state<SnippetMeta[]>([...entryList]);
24
+ let resolvedEntryList = $state<SnippetMeta[]>(untrack(() => [...entryList]));
25
25
  let selectedTags = $state<string[]>([]);
26
26
  let sortBy = $state<string[]>(["default"]);
27
27
  let isExpanded = $state(false);
@@ -8,6 +8,7 @@
8
8
  import { PinyaCard } from "../../elements/PinyaCard";
9
9
  import type { ProjectGroup, SnippetMeta } from "./";
10
10
  import { addToast } from "../../components/MeltToaster/MeltToaster.svelte";
11
+ import { untrack } from "svelte";
11
12
 
12
13
  interface Props {
13
14
  layout: ProjectGroup[];
@@ -95,12 +96,12 @@
95
96
  };
96
97
  };
97
98
 
98
- const comboboxData = allEntries.map(entry => {
99
+ const comboboxData = untrack(() => allEntries.map(entry => {
99
100
  return {
100
101
  label: entry.key,
101
102
  value: entry.key
102
103
  };
103
- });
104
+ }));
104
105
 
105
106
  let comboboxValue = $state([comboboxData[0].value]);
106
107
 
@@ -1 +1 @@
1
- {"version":3,"file":"ProjectGroupConfig.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/ui/templates/SeaweedLayout/ProjectGroupConfig.svelte.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAIhF,UAAU,KAAK;IACd,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,WAAW,EAAE,CAAC;IAC1B,KAAK,EAAE,YAAY,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACnB;AAkMF,QAAA,MAAM,kBAAkB,8DAAwC,CAAC;AACjE,KAAK,kBAAkB,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAChE,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"ProjectGroupConfig.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/ui/templates/SeaweedLayout/ProjectGroupConfig.svelte.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAKhF,UAAU,KAAK;IACd,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,WAAW,EAAE,CAAC;IAC1B,KAAK,EAAE,YAAY,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACnB;AAmMF,QAAA,MAAM,kBAAkB,8DAAwC,CAAC;AACjE,KAAK,kBAAkB,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAChE,eAAe,kBAAkB,CAAC"}
@@ -10,7 +10,7 @@
10
10
  import ChumBucket from "./ChumBucket.svelte";
11
11
  import EntryGroup from "./EntryGroup.svelte";
12
12
  import EntryOrderConfig from "./EntryOrderConfig.svelte";
13
- import { onDestroy, onMount } from "svelte";
13
+ import { onDestroy, onMount, untrack } from "svelte";
14
14
  import { SvelteMap } from "svelte/reactivity";
15
15
  import { fly } from "svelte/transition";
16
16
  import { TextChip } from "../../elements/TextChip";
@@ -32,11 +32,11 @@
32
32
  linkedinRemoteQuery
33
33
  }: SeaweedLayoutProps = $props();
34
34
 
35
- let actualLayout = $state(layout);
35
+ let actualLayout = $state(untrack(() => layout));
36
36
  let isAdvanceSettingOn = $state(false);
37
37
  let orderUrl = $state("");
38
38
 
39
- let queryStates = new SvelteMap<string, boolean>(queryTerms.map(term => [term, true]));
39
+ let queryStates = new SvelteMap<string, boolean>(untrack(() => queryTerms.map(term => [term, true])));
40
40
  let styleStr = $state("");
41
41
  let queryQt = $derived.by(() => {
42
42
  const qtArr = [...queryStates.entries()
@@ -176,12 +176,7 @@
176
176
  filterSearchParams(page.url.searchParams);
177
177
  }
178
178
 
179
- /**
180
- * Get the computed font size of an element in pixels.
181
- * @param {HTMLElement} element The DOM element to check.
182
- * @returns {number} The font size in pixels as a number.
183
- */
184
- function getElementFontSize(element) {
179
+ const getElementFontSize = (element: HTMLElement) => {
185
180
  // Use window.getComputedStyle() to get all resolved CSS properties.
186
181
  const computedStyle = window.getComputedStyle(element);
187
182
  // Get the 'font-size' property value (which will be in 'px').
@@ -219,6 +214,7 @@
219
214
  </script>
220
215
 
221
216
  <svelte:head>
217
+ <!-- eslint-disable-next-line svelte/no-at-html-tags -->
222
218
  {@html styleStr}
223
219
  </svelte:head>
224
220
 
@@ -1 +1 @@
1
- {"version":3,"file":"SeaweedLayout.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/ui/templates/SeaweedLayout/SeaweedLayout.svelte.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAgB,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAuThE,QAAA,MAAM,aAAa,wDAAwC,CAAC;AAC5D,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AACtD,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"SeaweedLayout.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/ui/templates/SeaweedLayout/SeaweedLayout.svelte.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAgB,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAmThE,QAAA,MAAM,aAAa,wDAAwC,CAAC;AAC5D,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AACtD,eAAe,aAAa,CAAC"}
@@ -3,13 +3,13 @@
3
3
  <script lang="ts">
4
4
  import "./blog-template.css";
5
5
  import { browser } from "$app/environment";
6
+ import { enableUniversalOverlaySvelte4 } from "../../../components/dialog_manager/DialogManagerStore";
7
+ import type { SimplePageMeta } from "../../modules/NavigationMenu/index";
8
+ import BlogTemplateInner from "./BlogTemplateInner.svelte";
9
+ import { appState } from "../PinyaPageLayout/pinyaPageLayoutRunes.svelte.js";
6
10
  import { setIgnoreOverlayOverride } from "../../../util/context/pineappleBaseContextDefinitions.svelte";
7
11
  import { onDestroy, onMount, type Snippet } from "svelte";
8
- import BlogTemplateInner from "./BlogTemplateInner.svelte";
9
- import type { SimplePageMeta } from "../../modules/NavigationMenu/index";
10
- import { enableUniversalOverlaySvelte4 } from "../../../components/dialog_manager/DialogManagerStore";
11
12
  import PinyaCard from "../../elements/PinyaCard/PinyaCard.svelte";
12
- import { appState } from "../PinyaPageLayout/pinyaPageLayoutRunes.svelte.js";
13
13
 
14
14
  // grab page meta from the adjacent meta.json
15
15
  interface Props {
@@ -44,7 +44,9 @@
44
44
  }
45
45
  });
46
46
 
47
- appState.bgOpacity = shouldFillWholePage ? 0.2 : 1;
47
+ $effect(() => {
48
+ appState.bgOpacity = shouldFillWholePage ? 0.2 : 1;
49
+ });
48
50
  </script>
49
51
 
50
52
  {#if shouldFillWholePage}
@@ -71,7 +73,7 @@
71
73
 
72
74
  :global(.blog-template) {
73
75
  max-width: 64em;
74
- width: 100%;
76
+ width: 100%;
75
77
  margin: auto;
76
78
  }
77
79
  </style>
@@ -1,6 +1,6 @@
1
1
  import "./blog-template.css";
2
- import { type Snippet } from "svelte";
3
2
  import type { SimplePageMeta } from "../../modules/NavigationMenu/index";
3
+ import { type Snippet } from "svelte";
4
4
  interface Props {
5
5
  pageMeta: SimplePageMeta;
6
6
  shouldFillWholePage?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"BlogTemplate.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/ui/templates/blog_template/BlogTemplate.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,qBAAqB,CAAC;AAG7B,OAAO,EAAsB,KAAK,OAAO,EAAE,MAAM,QAAQ,CAAC;AAE1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAO1E,UAAU,KAAK;IACd,QAAQ,EAAE,cAAc,CAAC;IACzB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB;AA4DF,QAAA,MAAM,YAAY,2CAAwC,CAAC;AAC3D,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AACpD,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"BlogTemplate.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/ui/templates/blog_template/BlogTemplate.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,qBAAqB,CAAC;AAG7B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAI3E,OAAO,EAAsB,KAAK,OAAO,EAAE,MAAM,QAAQ,CAAC;AAKzD,UAAU,KAAK;IACd,QAAQ,EAAE,cAAc,CAAC;IACzB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB;AA8DF,QAAA,MAAM,YAAY,2CAAwC,CAAC;AAC3D,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AACpD,eAAe,YAAY,CAAC"}
@@ -2,7 +2,7 @@
2
2
 
3
3
  <script lang="ts">
4
4
  import { localizeHref } from "../../../external/paraglide/runtime.js";
5
- import type { SimplePageMeta } from "../../modules/NavigationMenu/index";
5
+ import { LdSchemaUtil, type SimplePageMeta } from "../../modules/NavigationMenu/index";
6
6
  import { getWebBaseUrl } from "../../../util/env-getter";
7
7
  import { renderStar } from "../../../util/util";
8
8
  import { SvelteURLSearchParams } from "svelte/reactivity";
@@ -22,7 +22,10 @@
22
22
  });
23
23
 
24
24
  // todo: improve graphics lol
25
- let ratingsRenderer = $derived(renderStar(pageMeta.foodReviewJson?.reviewRating.ratingValue ?? 1));
25
+ let ratingsRenderer = $derived(pageMeta.foodReviewJson
26
+ ? renderStar(LdSchemaUtil.getReviewRating(pageMeta.foodReviewJson))
27
+ : 0
28
+ );
26
29
  </script>
27
30
 
28
31
  <article>
@@ -42,11 +45,11 @@
42
45
  Ratings: {ratingsRenderer}
43
46
  </p>
44
47
  {/if}
45
- {#if pageMeta.foodReviewJson?.itemReviewed.url}
48
+ {#if pageMeta.foodReviewJson && LdSchemaUtil.getUrl(pageMeta.foodReviewJson)}
46
49
  <p>
47
- <a href={pageMeta.foodReviewJson.itemReviewed.url}
50
+ <a href={LdSchemaUtil.getUrl(pageMeta.foodReviewJson)}
48
51
  rel="external"
49
- target="_blank">{pageMeta.foodReviewJson?.itemReviewed.url}</a>
52
+ target="_blank">{LdSchemaUtil.getUrl(pageMeta.foodReviewJson)}</a>
50
53
  </p>
51
54
  {/if}
52
55
  {#if pageMeta.tags.length > 0}
@@ -1,4 +1,4 @@
1
- import type { SimplePageMeta } from "../../modules/NavigationMenu/index";
1
+ import { type SimplePageMeta } from "../../modules/NavigationMenu/index";
2
2
  interface Props {
3
3
  pageMeta: SimplePageMeta;
4
4
  children?: import("svelte").Snippet;
@@ -1 +1 @@
1
- {"version":3,"file":"BlogTemplateInner.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/ui/templates/blog_template/BlogTemplateInner.svelte.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAM1E,UAAU,KAAK;IACd,QAAQ,EAAE,cAAc,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,QAAQ,EAAE,OAAO,CAAC;CACpC;AAkEF,QAAA,MAAM,iBAAiB,2CAAwC,CAAC;AAChE,KAAK,iBAAiB,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC9D,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"BlogTemplateInner.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/ui/templates/blog_template/BlogTemplateInner.svelte.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAMxF,UAAU,KAAK;IACd,QAAQ,EAAE,cAAc,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,QAAQ,EAAE,OAAO,CAAC;CACpC;AAqEF,QAAA,MAAM,iBAAiB,2CAAwC,CAAC;AAChE,KAAK,iBAAiB,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC9D,eAAe,iBAAiB,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@turnipxenon/pineapple",
3
3
  "description": "personal package for base styling for other personal projects",
4
- "version": "5.3.3",
4
+ "version": "5.3.5",
5
5
  "devDependencies": {
6
6
  "@commitlint/cli": "^19.8.1",
7
7
  "@commitlint/config-conventional": "^19.8.1",
@@ -129,6 +129,8 @@
129
129
  "package": "svelte-kit sync && svelte-package && publint",
130
130
  "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
131
131
  "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
132
+ "check-baseline": "bash scripts/check-baseline.sh",
133
+ "check-snapshot": "bash scripts/update-check-snapshot.sh",
132
134
  "lint": "eslint .",
133
135
  "format": "prettier --plugin-search-dir . --write .",
134
136
  "generate": "npx vite-node src/routes/blogs/blog_list_data_generator.ts && npx vite-node src/routes/toyay/toya_files_generator.ts && npm run generate-yarn",