@mindstudio-ai/remy 0.1.75 → 0.1.76

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 CHANGED
@@ -1249,9 +1249,9 @@ var init_setProjectMetadata = __esm({
1249
1249
  // src/tools/code/readFile.ts
1250
1250
  import fs6 from "fs/promises";
1251
1251
  function isBinary(buffer) {
1252
- const sample4 = buffer.subarray(0, 8192);
1253
- for (let i = 0; i < sample4.length; i++) {
1254
- if (sample4[i] === 0) {
1252
+ const sample = buffer.subarray(0, 8192);
1253
+ for (let i = 0; i < sample.length; i++) {
1254
+ if (sample[i] === 0) {
1255
1255
  return true;
1256
1256
  }
1257
1257
  }
@@ -3747,21 +3747,76 @@ var init_context = __esm({
3747
3747
  }
3748
3748
  });
3749
3749
 
3750
- // src/subagents/designExpert/data/getFontLibrarySample.ts
3751
- function sample(arr, n) {
3752
- if (arr.length <= n) {
3753
- return [...arr];
3754
- }
3755
- const copy = [...arr];
3756
- for (let i = copy.length - 1; i > 0; i--) {
3750
+ // src/subagents/designExpert/data/sampleCache.ts
3751
+ import fs13 from "fs";
3752
+ function generateIndices(poolSize, sampleSize) {
3753
+ const n = Math.min(sampleSize, poolSize);
3754
+ const indices = Array.from({ length: poolSize }, (_, i) => i);
3755
+ for (let i = indices.length - 1; i > 0; i--) {
3757
3756
  const j = Math.floor(Math.random() * (i + 1));
3758
- [copy[i], copy[j]] = [copy[j], copy[i]];
3757
+ [indices[i], indices[j]] = [indices[j], indices[i]];
3758
+ }
3759
+ return indices.slice(0, n);
3760
+ }
3761
+ function load() {
3762
+ try {
3763
+ return JSON.parse(fs13.readFileSync(SAMPLE_FILE, "utf-8"));
3764
+ } catch {
3765
+ return null;
3766
+ }
3767
+ }
3768
+ function save(indices) {
3769
+ try {
3770
+ fs13.writeFileSync(SAMPLE_FILE, JSON.stringify(indices));
3771
+ } catch {
3759
3772
  }
3760
- return copy.slice(0, n);
3761
3773
  }
3762
- function getFontLibrarySample() {
3763
- const fonts = sample(fontData.fonts, 60);
3764
- const pairings = sample(fontData.pairings, 30);
3774
+ function getSampleIndices(pools, sizes) {
3775
+ if (cached) {
3776
+ return cached;
3777
+ }
3778
+ const loaded = load();
3779
+ if (loaded) {
3780
+ let dirty = false;
3781
+ for (const key of ["uiInspiration", "designReferences", "fonts"]) {
3782
+ const before = loaded[key].length;
3783
+ loaded[key] = loaded[key].filter((i) => i < pools[key]);
3784
+ if (loaded[key].length < before) {
3785
+ dirty = true;
3786
+ }
3787
+ }
3788
+ if (dirty) {
3789
+ save(loaded);
3790
+ }
3791
+ cached = loaded;
3792
+ return cached;
3793
+ }
3794
+ cached = {
3795
+ uiInspiration: generateIndices(pools.uiInspiration, sizes.uiInspiration),
3796
+ designReferences: generateIndices(
3797
+ pools.designReferences,
3798
+ sizes.designReferences
3799
+ ),
3800
+ fonts: generateIndices(pools.fonts, sizes.fonts)
3801
+ };
3802
+ save(cached);
3803
+ return cached;
3804
+ }
3805
+ function pickByIndices(arr, indices) {
3806
+ return indices.filter((i) => i < arr.length).map((i) => arr[i]);
3807
+ }
3808
+ var SAMPLE_FILE, cached;
3809
+ var init_sampleCache = __esm({
3810
+ "src/subagents/designExpert/data/sampleCache.ts"() {
3811
+ "use strict";
3812
+ SAMPLE_FILE = ".remy-design-sample.json";
3813
+ cached = null;
3814
+ }
3815
+ });
3816
+
3817
+ // src/subagents/designExpert/data/getFontLibrarySample.ts
3818
+ function getFontLibrarySample(fontIndices) {
3819
+ const fonts = pickByIndices(fontData.fonts, fontIndices);
3765
3820
  if (!fonts.length) {
3766
3821
  return "";
3767
3822
  }
@@ -3777,16 +3832,11 @@ function getFontLibrarySample() {
3777
3832
  const desc = f.description ? ` ${f.description}` : "";
3778
3833
  return `- **${f.name}** \u2014 ${f.category}. Weights: ${f.weights.join(", ")}.${f.variable ? " Variable." : ""}${f.italics ? " Has italics." : ""}${cssInfo}${desc}`;
3779
3834
  }).join("\n");
3780
- const pairingList = pairings.map(
3781
- (p) => `- **${p.heading.font}** (${p.heading.weight}) heading + **${p.body.font}** (${p.body.weight}) body`
3782
- ).join("\n");
3783
3835
  return `
3784
3836
  ## Font Library
3785
3837
 
3786
3838
  This is your personal library of fonts you love. Use it as a starting point when thinking about anything related to typography.
3787
3839
 
3788
- ### Fonts
3789
-
3790
3840
  ${fontList}`.trim();
3791
3841
  }
3792
3842
  var fontData;
@@ -3794,27 +3844,17 @@ var init_getFontLibrarySample = __esm({
3794
3844
  "src/subagents/designExpert/data/getFontLibrarySample.ts"() {
3795
3845
  "use strict";
3796
3846
  init_assets();
3847
+ init_sampleCache();
3797
3848
  fontData = readJsonAsset(
3798
- { cssUrlPattern: "", fonts: [], pairings: [] },
3849
+ { cssUrlPattern: "", fonts: [] },
3799
3850
  "subagents/designExpert/data/sources/fonts.json"
3800
3851
  );
3801
3852
  }
3802
3853
  });
3803
3854
 
3804
3855
  // src/subagents/designExpert/data/getDesignReferencesSample.ts
3805
- function sample2(arr, n) {
3806
- if (arr.length <= n) {
3807
- return [...arr];
3808
- }
3809
- const copy = [...arr];
3810
- for (let i = copy.length - 1; i > 0; i--) {
3811
- const j = Math.floor(Math.random() * (i + 1));
3812
- [copy[i], copy[j]] = [copy[j], copy[i]];
3813
- }
3814
- return copy.slice(0, n);
3815
- }
3816
- function getDesignReferencesSample() {
3817
- const images = sample2(inspirationImages, 25);
3856
+ function getDesignReferencesSample(indices) {
3857
+ const images = pickByIndices(inspirationImages, indices);
3818
3858
  if (!images.length) {
3819
3859
  return "";
3820
3860
  }
@@ -3832,6 +3872,7 @@ var init_getDesignReferencesSample = __esm({
3832
3872
  "src/subagents/designExpert/data/getDesignReferencesSample.ts"() {
3833
3873
  "use strict";
3834
3874
  init_assets();
3875
+ init_sampleCache();
3835
3876
  inspirationImages = readJsonAsset(
3836
3877
  { images: [] },
3837
3878
  "subagents/designExpert/data/sources/inspiration.json"
@@ -3840,19 +3881,8 @@ var init_getDesignReferencesSample = __esm({
3840
3881
  });
3841
3882
 
3842
3883
  // src/subagents/designExpert/data/getUiInspirationSample.ts
3843
- function sample3(arr, n) {
3844
- if (arr.length <= n) {
3845
- return [...arr];
3846
- }
3847
- const copy = [...arr];
3848
- for (let i = copy.length - 1; i > 0; i--) {
3849
- const j = Math.floor(Math.random() * (i + 1));
3850
- [copy[i], copy[j]] = [copy[j], copy[i]];
3851
- }
3852
- return copy.slice(0, n);
3853
- }
3854
- function getUiInspirationSample() {
3855
- const screens = sample3(uiScreens, 25);
3884
+ function getUiInspirationSample(indices) {
3885
+ const screens = pickByIndices(uiScreens, indices);
3856
3886
  if (!screens.length) {
3857
3887
  return "";
3858
3888
  }
@@ -3870,6 +3900,7 @@ var init_getUiInspirationSample = __esm({
3870
3900
  "src/subagents/designExpert/data/getUiInspirationSample.ts"() {
3871
3901
  "use strict";
3872
3902
  init_assets();
3903
+ init_sampleCache();
3873
3904
  uiScreens = readJsonAsset(
3874
3905
  { screens: [] },
3875
3906
  "subagents/designExpert/data/sources/ui_inspiration_compiled.json"
@@ -3878,13 +3909,31 @@ var init_getUiInspirationSample = __esm({
3878
3909
  });
3879
3910
 
3880
3911
  // src/subagents/designExpert/prompt.ts
3881
- import fs13 from "fs";
3912
+ import fs14 from "fs";
3882
3913
  function getDesignExpertPrompt() {
3883
3914
  const specContext = loadSpecContext();
3915
+ const indices = getSampleIndices(
3916
+ {
3917
+ uiInspiration: uiScreens.length,
3918
+ designReferences: inspirationImages.length,
3919
+ fonts: fontData.fonts.length
3920
+ },
3921
+ {
3922
+ uiInspiration: 50,
3923
+ designReferences: 50,
3924
+ fonts: 50
3925
+ }
3926
+ );
3884
3927
  let prompt = PROMPT_TEMPLATE.replace(
3885
3928
  "{{font_library}}",
3886
- getFontLibrarySample()
3887
- ).replace("{{visual_design_references}}", getDesignReferencesSample()).replace("{{ui_case_studies}}", getUiInspirationSample());
3929
+ getFontLibrarySample(indices.fonts)
3930
+ ).replace(
3931
+ "{{visual_design_references}}",
3932
+ getDesignReferencesSample(indices.designReferences)
3933
+ ).replace(
3934
+ "{{ui_case_studies}}",
3935
+ getUiInspirationSample(indices.uiInspiration)
3936
+ );
3888
3937
  prompt += "\n\n<!-- cache_breakpoint -->";
3889
3938
  if (specContext) {
3890
3939
  prompt += `
@@ -3892,7 +3941,7 @@ function getDesignExpertPrompt() {
3892
3941
  ${specContext}`;
3893
3942
  }
3894
3943
  try {
3895
- fs13.writeFileSync(`.design-prompt.md`, prompt);
3944
+ fs14.writeFileSync(`.design-prompt.md`, prompt);
3896
3945
  } catch {
3897
3946
  }
3898
3947
  return prompt;
@@ -3903,6 +3952,7 @@ var init_prompt2 = __esm({
3903
3952
  "use strict";
3904
3953
  init_assets();
3905
3954
  init_context();
3955
+ init_sampleCache();
3906
3956
  init_getFontLibrarySample();
3907
3957
  init_getDesignReferencesSample();
3908
3958
  init_getUiInspirationSample();
@@ -4143,7 +4193,7 @@ var init_tools3 = __esm({
4143
4193
  });
4144
4194
 
4145
4195
  // src/subagents/productVision/executor.ts
4146
- import fs14 from "fs";
4196
+ import fs15 from "fs";
4147
4197
  import path6 from "path";
4148
4198
  function formatRequires(requires) {
4149
4199
  return requires.length === 0 ? "[]" : `[${requires.map((r) => `"${r}"`).join(", ")}]`;
@@ -4161,8 +4211,8 @@ async function executeVisionTool(name, input) {
4161
4211
  } = input;
4162
4212
  const filePath = path6.join(ROADMAP_DIR, `${slug}.md`);
4163
4213
  try {
4164
- fs14.mkdirSync(ROADMAP_DIR, { recursive: true });
4165
- const oldContent = fs14.existsSync(filePath) ? fs14.readFileSync(filePath, "utf-8") : "";
4214
+ fs15.mkdirSync(ROADMAP_DIR, { recursive: true });
4215
+ const oldContent = fs15.existsSync(filePath) ? fs15.readFileSync(filePath, "utf-8") : "";
4166
4216
  const content = `---
4167
4217
  name: ${itemName}
4168
4218
  type: roadmap
@@ -4174,7 +4224,7 @@ requires: ${formatRequires(requires)}
4174
4224
 
4175
4225
  ${body}
4176
4226
  `;
4177
- fs14.writeFileSync(filePath, content, "utf-8");
4227
+ fs15.writeFileSync(filePath, content, "utf-8");
4178
4228
  const lineCount = content.split("\n").length;
4179
4229
  const label = oldContent ? "Updated" : "Wrote";
4180
4230
  return `${label} ${filePath} (${lineCount} lines)
@@ -4187,10 +4237,10 @@ ${unifiedDiff(filePath, oldContent, content)}`;
4187
4237
  const { slug } = input;
4188
4238
  const filePath = path6.join(ROADMAP_DIR, `${slug}.md`);
4189
4239
  try {
4190
- if (!fs14.existsSync(filePath)) {
4240
+ if (!fs15.existsSync(filePath)) {
4191
4241
  return `Error: ${filePath} does not exist`;
4192
4242
  }
4193
- const oldContent = fs14.readFileSync(filePath, "utf-8");
4243
+ const oldContent = fs15.readFileSync(filePath, "utf-8");
4194
4244
  let content = oldContent;
4195
4245
  if (input.status) {
4196
4246
  content = content.replace(
@@ -4243,7 +4293,7 @@ ${input.appendHistory}
4243
4293
  `;
4244
4294
  }
4245
4295
  }
4246
- fs14.writeFileSync(filePath, content, "utf-8");
4296
+ fs15.writeFileSync(filePath, content, "utf-8");
4247
4297
  const lineCount = content.split("\n").length;
4248
4298
  return `Updated ${filePath} (${lineCount} lines)
4249
4299
  ${unifiedDiff(filePath, oldContent, content)}`;
@@ -4255,11 +4305,11 @@ ${unifiedDiff(filePath, oldContent, content)}`;
4255
4305
  const { slug } = input;
4256
4306
  const filePath = path6.join(ROADMAP_DIR, `${slug}.md`);
4257
4307
  try {
4258
- if (!fs14.existsSync(filePath)) {
4308
+ if (!fs15.existsSync(filePath)) {
4259
4309
  return `Error: ${filePath} does not exist`;
4260
4310
  }
4261
- const oldContent = fs14.readFileSync(filePath, "utf-8");
4262
- fs14.unlinkSync(filePath);
4311
+ const oldContent = fs15.readFileSync(filePath, "utf-8");
4312
+ fs15.unlinkSync(filePath);
4263
4313
  return `Deleted ${filePath}
4264
4314
  ${unifiedDiff(filePath, oldContent, "")}`;
4265
4315
  } catch (err) {
@@ -4671,10 +4721,10 @@ var init_tools5 = __esm({
4671
4721
  });
4672
4722
 
4673
4723
  // src/session.ts
4674
- import fs15 from "fs";
4724
+ import fs16 from "fs";
4675
4725
  function loadSession(state) {
4676
4726
  try {
4677
- const raw = fs15.readFileSync(SESSION_FILE, "utf-8");
4727
+ const raw = fs16.readFileSync(SESSION_FILE, "utf-8");
4678
4728
  const data = JSON.parse(raw);
4679
4729
  if (Array.isArray(data.messages) && data.messages.length > 0) {
4680
4730
  state.messages = sanitizeMessages(data.messages);
@@ -4723,7 +4773,7 @@ function sanitizeMessages(messages) {
4723
4773
  }
4724
4774
  function saveSession(state) {
4725
4775
  try {
4726
- fs15.writeFileSync(
4776
+ fs16.writeFileSync(
4727
4777
  SESSION_FILE,
4728
4778
  JSON.stringify({ messages: state.messages }, null, 2),
4729
4779
  "utf-8"
@@ -4736,7 +4786,7 @@ function saveSession(state) {
4736
4786
  function clearSession(state) {
4737
4787
  state.messages = [];
4738
4788
  try {
4739
- fs15.unlinkSync(SESSION_FILE);
4789
+ fs16.unlinkSync(SESSION_FILE);
4740
4790
  } catch {
4741
4791
  }
4742
4792
  }
@@ -5465,12 +5515,12 @@ var init_agent = __esm({
5465
5515
  });
5466
5516
 
5467
5517
  // src/prompt/static/projectContext.ts
5468
- import fs16 from "fs";
5518
+ import fs17 from "fs";
5469
5519
  import path7 from "path";
5470
5520
  function loadProjectInstructions() {
5471
5521
  for (const file of AGENT_INSTRUCTION_FILES) {
5472
5522
  try {
5473
- const content = fs16.readFileSync(file, "utf-8").trim();
5523
+ const content = fs17.readFileSync(file, "utf-8").trim();
5474
5524
  if (content) {
5475
5525
  return `
5476
5526
  ## Project Instructions (${file})
@@ -5483,7 +5533,7 @@ ${content}`;
5483
5533
  }
5484
5534
  function loadProjectManifest() {
5485
5535
  try {
5486
- const manifest = fs16.readFileSync("mindstudio.json", "utf-8");
5536
+ const manifest = fs17.readFileSync("mindstudio.json", "utf-8");
5487
5537
  return `
5488
5538
  ## Project Manifest (mindstudio.json)
5489
5539
  \`\`\`json
@@ -5524,7 +5574,7 @@ ${entries.join("\n")}`;
5524
5574
  function walkMdFiles2(dir) {
5525
5575
  const results = [];
5526
5576
  try {
5527
- const entries = fs16.readdirSync(dir, { withFileTypes: true });
5577
+ const entries = fs17.readdirSync(dir, { withFileTypes: true });
5528
5578
  for (const entry of entries) {
5529
5579
  const full = path7.join(dir, entry.name);
5530
5580
  if (entry.isDirectory()) {
@@ -5539,7 +5589,7 @@ function walkMdFiles2(dir) {
5539
5589
  }
5540
5590
  function parseFrontmatter(filePath) {
5541
5591
  try {
5542
- const content = fs16.readFileSync(filePath, "utf-8");
5592
+ const content = fs17.readFileSync(filePath, "utf-8");
5543
5593
  const match = content.match(/^---\n([\s\S]*?)\n---/);
5544
5594
  if (!match) {
5545
5595
  return { name: "", description: "", type: "" };
@@ -5555,7 +5605,7 @@ function parseFrontmatter(filePath) {
5555
5605
  }
5556
5606
  function loadProjectFileListing() {
5557
5607
  try {
5558
- const entries = fs16.readdirSync(".", { withFileTypes: true });
5608
+ const entries = fs17.readdirSync(".", { withFileTypes: true });
5559
5609
  const listing = entries.filter((e) => e.name !== ".git" && e.name !== "node_modules").sort((a, b) => {
5560
5610
  if (a.isDirectory() && !b.isDirectory()) {
5561
5611
  return -1;
@@ -5735,12 +5785,12 @@ var init_prompt4 = __esm({
5735
5785
  });
5736
5786
 
5737
5787
  // src/config.ts
5738
- import fs17 from "fs";
5788
+ import fs18 from "fs";
5739
5789
  import path8 from "path";
5740
5790
  import os from "os";
5741
5791
  function loadConfigFile() {
5742
5792
  try {
5743
- const raw = fs17.readFileSync(CONFIG_PATH, "utf-8");
5793
+ const raw = fs18.readFileSync(CONFIG_PATH, "utf-8");
5744
5794
  log7.debug("Loaded config file", { path: CONFIG_PATH });
5745
5795
  return JSON.parse(raw);
5746
5796
  } catch (err) {
@@ -6689,7 +6739,7 @@ var init_headless = __esm({
6689
6739
  // src/index.tsx
6690
6740
  import { render } from "ink";
6691
6741
  import os2 from "os";
6692
- import fs18 from "fs";
6742
+ import fs19 from "fs";
6693
6743
  import path9 from "path";
6694
6744
 
6695
6745
  // src/tui/App.tsx
@@ -7008,7 +7058,7 @@ for (let i = 0; i < args.length; i++) {
7008
7058
  var startupLog = createLogger("startup");
7009
7059
  function printDebugInfo(config) {
7010
7060
  const pkg = JSON.parse(
7011
- fs18.readFileSync(
7061
+ fs19.readFileSync(
7012
7062
  path9.join(import.meta.dirname, "..", "package.json"),
7013
7063
  "utf-8"
7014
7064
  )
@@ -79,5 +79,53 @@
79
79
  "https://i.mscdn.ai/remy-ui-inspo/v2/78.png",
80
80
  "https://i.mscdn.ai/remy-ui-inspo/v2/79.png",
81
81
  "https://i.mscdn.ai/remy-ui-inspo/v2/80.png",
82
- "https://i.mscdn.ai/remy-ui-inspo/v2/81.png"
82
+ "https://i.mscdn.ai/remy-ui-inspo/v2/81.png",
83
+ "https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+08.56.51.png",
84
+ "https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+08.56.56.png",
85
+ "https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+08.57.03.png",
86
+ "https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+08.57.27.png",
87
+ "https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.00.26.png",
88
+ "https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.00.35.png",
89
+ "https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.01.33.png",
90
+ "https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.01.39.png",
91
+ "https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.01.50.png",
92
+ "https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.02.09.png",
93
+ "https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.03.39.png",
94
+ "https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.03.47.png",
95
+ "https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.04.29.png",
96
+ "https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.04.57.png",
97
+ "https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.05.12.png",
98
+ "https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.05.16.png",
99
+ "https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.05.29.png",
100
+ "https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.06.22.png",
101
+ "https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.06.47.png",
102
+ "https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.07.04.png",
103
+ "https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.07.23.png",
104
+ "https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.08.01.png",
105
+ "https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.08.15.png",
106
+ "https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.08.28.png",
107
+ "https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.08.33.png",
108
+ "https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.08.55.png",
109
+ "https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.09.04.png",
110
+ "https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.09.22.png",
111
+ "https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.09.27.png",
112
+ "https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.09.34.png",
113
+ "https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.10.49.png",
114
+ "https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.11.04.png",
115
+ "https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.11.19.png",
116
+ "https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.11.32.png",
117
+ "https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.11.44.png",
118
+ "https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.12.00.png",
119
+ "https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.12.10.png",
120
+ "https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.12.23.png",
121
+ "https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.12.54.png",
122
+ "https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.13.06.png",
123
+ "https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.13.33.png",
124
+ "https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.13.36.png",
125
+ "https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.13.46.png",
126
+ "https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.14.19.png",
127
+ "https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.14.45.png",
128
+ "https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.15.16.png",
129
+ "https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.15.20.png",
130
+ "https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.15.35.png"
83
131
  ]