sunpeak 0.10.7 → 0.11.1

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 (103) hide show
  1. package/README.md +44 -19
  2. package/bin/commands/dev.mjs +173 -12
  3. package/bin/sunpeak.js +3 -11
  4. package/dist/chatgpt/index.cjs +1 -1
  5. package/dist/chatgpt/index.js +1 -1
  6. package/dist/index.cjs +1 -1
  7. package/dist/index.js +2 -2
  8. package/dist/mcp/entry.cjs +1 -1
  9. package/dist/mcp/entry.js +1 -1
  10. package/dist/mcp/favicon.d.ts +2 -0
  11. package/dist/mcp/index.cjs +3 -1
  12. package/dist/mcp/index.cjs.map +1 -1
  13. package/dist/mcp/index.d.ts +1 -0
  14. package/dist/mcp/index.js +3 -1
  15. package/dist/{server-BLKltt88.js → server-BI9Y531R.js} +31 -3
  16. package/dist/{server-BLKltt88.js.map → server-BI9Y531R.js.map} +1 -1
  17. package/dist/{server-D_oRdZjX.cjs → server-CcLDAGBE.cjs} +31 -3
  18. package/dist/{server-D_oRdZjX.cjs.map → server-CcLDAGBE.cjs.map} +1 -1
  19. package/dist/{simulator-url-B6DZi3vV.cjs → simulator-url-CYMOGoB1.cjs} +5 -5
  20. package/dist/{simulator-url-B6DZi3vV.cjs.map → simulator-url-CYMOGoB1.cjs.map} +1 -1
  21. package/dist/{simulator-url-izFV6mji.js → simulator-url-DG79-dU3.js} +4 -4
  22. package/dist/{simulator-url-izFV6mji.js.map → simulator-url-DG79-dU3.js.map} +1 -1
  23. package/package.json +1 -1
  24. package/template/README.md +6 -7
  25. package/template/_gitignore +4 -0
  26. package/template/dist/albums/albums.json +1 -1
  27. package/template/dist/carousel/carousel.json +1 -1
  28. package/template/dist/map/map.json +1 -1
  29. package/template/dist/review/review.json +1 -1
  30. package/template/index.html +0 -1
  31. package/template/node_modules/.vite/deps/@openai_apps-sdk-ui_components_Button.js +7 -7
  32. package/template/node_modules/.vite/deps/@openai_apps-sdk-ui_components_SegmentedControl.js +1 -1
  33. package/template/node_modules/.vite/deps/@openai_apps-sdk-ui_components_Select.js +7 -7
  34. package/template/node_modules/.vite/deps/_metadata.json +33 -33
  35. package/template/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
  36. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/@openai_apps-sdk-ui_components_Avatar.js +96 -0
  37. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/@openai_apps-sdk-ui_components_Avatar.js.map +7 -0
  38. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/@openai_apps-sdk-ui_components_Button.js +625 -0
  39. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/@openai_apps-sdk-ui_components_Button.js.map +7 -0
  40. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/@openai_apps-sdk-ui_components_Checkbox.js +33 -0
  41. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/@openai_apps-sdk-ui_components_Checkbox.js.map +7 -0
  42. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/@openai_apps-sdk-ui_components_Icon.js +1498 -0
  43. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/@openai_apps-sdk-ui_components_Icon.js.map +7 -0
  44. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/@openai_apps-sdk-ui_components_Input.js +13 -0
  45. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/@openai_apps-sdk-ui_components_Input.js.map +7 -0
  46. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/@openai_apps-sdk-ui_components_SegmentedControl.js +103 -0
  47. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/@openai_apps-sdk-ui_components_SegmentedControl.js.map +7 -0
  48. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/@openai_apps-sdk-ui_components_Select.js +3680 -0
  49. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/@openai_apps-sdk-ui_components_Select.js.map +7 -0
  50. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/@openai_apps-sdk-ui_components_Textarea.js +95 -0
  51. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/@openai_apps-sdk-ui_components_Textarea.js.map +7 -0
  52. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/@openai_apps-sdk-ui_theme.js +45 -0
  53. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/@openai_apps-sdk-ui_theme.js.map +7 -0
  54. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/chunk-2UDYPUBJ.js +15201 -0
  55. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/chunk-2UDYPUBJ.js.map +7 -0
  56. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/chunk-6QVG4F2X.js +93 -0
  57. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/chunk-6QVG4F2X.js.map +7 -0
  58. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/chunk-BUOVMFCD.js +1004 -0
  59. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/chunk-BUOVMFCD.js.map +7 -0
  60. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/chunk-CNYJBM5F.js +21 -0
  61. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/chunk-CNYJBM5F.js.map +7 -0
  62. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/chunk-EGRHWZRV.js +1 -0
  63. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/chunk-EGRHWZRV.js.map +7 -0
  64. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/chunk-ILHRZGIS.js +46 -0
  65. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/chunk-ILHRZGIS.js.map +7 -0
  66. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/chunk-JAGHY6H6.js +231 -0
  67. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/chunk-JAGHY6H6.js.map +7 -0
  68. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/chunk-JGVISENQ.js +292 -0
  69. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/chunk-JGVISENQ.js.map +7 -0
  70. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/chunk-P5LK4A7U.js +112 -0
  71. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/chunk-P5LK4A7U.js.map +7 -0
  72. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/chunk-QPJAV452.js +13 -0
  73. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/chunk-QPJAV452.js.map +7 -0
  74. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/chunk-RYYR2YMB.js +111 -0
  75. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/chunk-RYYR2YMB.js.map +7 -0
  76. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/chunk-UM3ZGDFR.js +4480 -0
  77. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/chunk-UM3ZGDFR.js.map +7 -0
  78. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/chunk-XZTIOEPG.js +280 -0
  79. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/chunk-XZTIOEPG.js.map +7 -0
  80. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/clsx.js +10 -0
  81. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/clsx.js.map +7 -0
  82. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/embla-carousel-react.js +1712 -0
  83. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/embla-carousel-react.js.map +7 -0
  84. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/embla-carousel-wheel-gestures.js +589 -0
  85. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/embla-carousel-wheel-gestures.js.map +7 -0
  86. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/mapbox-gl.js +32835 -0
  87. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/mapbox-gl.js.map +7 -0
  88. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/package.json +3 -0
  89. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/react-dom.js +7 -0
  90. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/react-dom.js.map +7 -0
  91. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/react-dom_client.js +20217 -0
  92. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/react-dom_client.js.map +7 -0
  93. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/react.js +6 -0
  94. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/react.js.map +7 -0
  95. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/react_jsx-dev-runtime.js +278 -0
  96. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/react_jsx-dev-runtime.js.map +7 -0
  97. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/react_jsx-runtime.js +7 -0
  98. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/react_jsx-runtime.js.map +7 -0
  99. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/tailwind-merge.js +3095 -0
  100. package/template/node_modules/.vite-mcp/deps_temp_c8c8077a/tailwind-merge.js.map +7 -0
  101. package/template/package.json +0 -1
  102. package/bin/commands/mcp.mjs +0 -244
  103. package/template/public/favicon.ico +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sunpeak",
3
- "version": "0.10.7",
3
+ "version": "0.11.1",
4
4
  "description": "The ChatGPT App framework. Quickstart, build, & test your ChatGPT App locally!",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -19,9 +19,8 @@ That's it! Edit the resource files in [./src/resources/](./src/resources/) to bu
19
19
  # Core commands:
20
20
  pnpm test # Run tests with Vitest.
21
21
  pnpm test:e2e # Run end-to-end tests with Playwright.
22
- sunpeak dev # Start development server.
22
+ sunpeak dev # Start dev server + MCP endpoint.
23
23
  sunpeak build # Build all resources for production.
24
- sunpeak mcp # Start MCP server for ChatGPT testing with mock data.
25
24
 
26
25
  # sunpeak repository (think ECR for ChatGPT Apps):
27
26
  sunpeak login # Authenticate with the sunpeak repository.
@@ -45,11 +44,11 @@ The template includes a minimal test setup with Vitest. You can add additional t
45
44
 
46
45
  ## Testing in ChatGPT
47
46
 
48
- Test your app directly in ChatGPT using the built-in MCP server:
47
+ Test your app directly in ChatGPT using the built-in MCP endpoint (starts automatically with `sunpeak dev`):
49
48
 
50
49
  ```bash
51
- # Start the MCP server (rebuilds and restarts on file changes).
52
- sunpeak mcp
50
+ # Start the dev server + MCP endpoint.
51
+ sunpeak dev
53
52
 
54
53
  # In another terminal, run a tunnel. For example:
55
54
  ngrok http 6766
@@ -59,7 +58,7 @@ You can then connect to the tunnel forwarding URL at the `/mcp` path from ChatGP
59
58
 
60
59
  Once your app is connected, send the name of the app and a tool, like `/sunpeak show review`, to ChatGPT.
61
60
 
62
- When you make changes to the UI, refresh your app in ChatGPT after the MCP server has finished rebuilding your app: `User > Settings > Apps & Connectors > My App > Refresh`
61
+ When you make changes to the UI, refresh your app in ChatGPT after the dev server has finished rebuilding: `User > Settings > Apps & Connectors > My App > Refresh`
63
62
 
64
63
  ## Build & Deploy
65
64
 
@@ -108,7 +107,7 @@ src/resources/NAME/
108
107
  └── components/ # UI components (optional)
109
108
  ```
110
109
 
111
- Only the resource files (`.tsx` and `.json`) are required to generate a production build and ship a UI. Create the simulation file if you want to preview your resource in `sunpeak dev` or `sunpeak mcp`.
110
+ Only the resource files (`.tsx` and `.json`) are required to generate a production build and ship a UI. Create the simulation file if you want to preview your resource in `sunpeak dev`.
112
111
 
113
112
  ## Resources
114
113
 
@@ -45,3 +45,7 @@ CLAUDE.md
45
45
  .temp
46
46
  .tmp
47
47
  tmp
48
+
49
+ # Vite cache
50
+ node_modules/.vite
51
+ node_modules/.vite-mcp
@@ -12,5 +12,5 @@
12
12
  ]
13
13
  }
14
14
  },
15
- "uri": "ui://albums-mkhk2bj6"
15
+ "uri": "ui://albums-mkixiljp"
16
16
  }
@@ -12,5 +12,5 @@
12
12
  ]
13
13
  }
14
14
  },
15
- "uri": "ui://carousel-mkhk2bj6"
15
+ "uri": "ui://carousel-mkixiljp"
16
16
  }
@@ -18,5 +18,5 @@
18
18
  ]
19
19
  }
20
20
  },
21
- "uri": "ui://map-mkhk2bj6"
21
+ "uri": "ui://map-mkixiljp"
22
22
  }
@@ -12,5 +12,5 @@
12
12
  ]
13
13
  }
14
14
  },
15
- "uri": "ui://review-mkhk2bj6"
15
+ "uri": "ui://review-mkixiljp"
16
16
  }
@@ -4,7 +4,6 @@
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>Sunpeak - ChatGPT App framework</title>
7
- <link rel="icon" type="image/x-icon" href="/favicon.ico" />
8
7
  <!-- Establish CSS layer order BEFORE any JS-injected CSS modules -->
9
8
  <style>@layer properties, theme, base, components, utilities;</style>
10
9
  </head>
@@ -1,9 +1,10 @@
1
+ import {
2
+ Check_default,
3
+ Copy_default
4
+ } from "./chunk-UM3ZGDFR.js";
1
5
  import {
2
6
  useTimeout
3
7
  } from "./chunk-JAGHY6H6.js";
4
- import {
5
- o
6
- } from "./chunk-QPJAV452.js";
7
8
  import {
8
9
  handlePressableMouseEnter,
9
10
  isDev,
@@ -15,13 +16,12 @@ import {
15
16
  toTransformProperty,
16
17
  waitForAnimationFrame
17
18
  } from "./chunk-RYYR2YMB.js";
19
+ import {
20
+ o
21
+ } from "./chunk-QPJAV452.js";
18
22
  import {
19
23
  clsx_default
20
24
  } from "./chunk-CNYJBM5F.js";
21
- import {
22
- Check_default,
23
- Copy_default
24
- } from "./chunk-UM3ZGDFR.js";
25
25
  import {
26
26
  require_jsx_runtime
27
27
  } from "./chunk-JGVISENQ.js";
@@ -2,7 +2,6 @@ import {
2
2
  handlePressableMouseEnter,
3
3
  waitForAnimationFrame
4
4
  } from "./chunk-6QVG4F2X.js";
5
- import "./chunk-EGRHWZRV.js";
6
5
  import {
7
6
  useResizeObserver
8
7
  } from "./chunk-JAGHY6H6.js";
@@ -10,6 +9,7 @@ import {
10
9
  dist_exports4 as dist_exports
11
10
  } from "./chunk-2UDYPUBJ.js";
12
11
  import "./chunk-XZTIOEPG.js";
12
+ import "./chunk-EGRHWZRV.js";
13
13
  import {
14
14
  clsx_default
15
15
  } from "./chunk-CNYJBM5F.js";
@@ -1,6 +1,3 @@
1
- import {
2
- Input
3
- } from "./chunk-P5LK4A7U.js";
4
1
  import {
5
2
  handlePressableMouseEnter,
6
3
  isDev,
@@ -9,19 +6,22 @@ import {
9
6
  toCssVariables,
10
7
  waitForAnimationFrame
11
8
  } from "./chunk-6QVG4F2X.js";
12
- import "./chunk-EGRHWZRV.js";
13
9
  import {
14
10
  useTimeout
15
11
  } from "./chunk-JAGHY6H6.js";
16
- import {
17
- o
18
- } from "./chunk-QPJAV452.js";
19
12
  import {
20
13
  dist_exports,
21
14
  dist_exports3 as dist_exports2,
22
15
  dist_exports5 as dist_exports3
23
16
  } from "./chunk-2UDYPUBJ.js";
24
17
  import "./chunk-XZTIOEPG.js";
18
+ import {
19
+ Input
20
+ } from "./chunk-P5LK4A7U.js";
21
+ import "./chunk-EGRHWZRV.js";
22
+ import {
23
+ o
24
+ } from "./chunk-QPJAV452.js";
25
25
  import {
26
26
  clsx_default
27
27
  } from "./chunk-CNYJBM5F.js";
@@ -1,140 +1,134 @@
1
1
  {
2
- "hash": "44587b56",
3
- "configHash": "f56e5903",
2
+ "hash": "4a7f9e31",
3
+ "configHash": "b26b5701",
4
4
  "lockfileHash": "9d20b726",
5
- "browserHash": "5011344d",
5
+ "browserHash": "0def6af7",
6
6
  "optimized": {
7
7
  "react": {
8
8
  "src": "../../../../node_modules/.pnpm/react@19.2.3/node_modules/react/index.js",
9
9
  "file": "react.js",
10
- "fileHash": "4158ad30",
10
+ "fileHash": "416bfe9c",
11
11
  "needsInterop": true
12
12
  },
13
13
  "react-dom": {
14
14
  "src": "../../../../node_modules/.pnpm/react-dom@19.2.3_react@19.2.3/node_modules/react-dom/index.js",
15
15
  "file": "react-dom.js",
16
- "fileHash": "eceb9ce1",
16
+ "fileHash": "12c24b96",
17
17
  "needsInterop": true
18
18
  },
19
19
  "react/jsx-dev-runtime": {
20
20
  "src": "../../../../node_modules/.pnpm/react@19.2.3/node_modules/react/jsx-dev-runtime.js",
21
21
  "file": "react_jsx-dev-runtime.js",
22
- "fileHash": "7a7f1ddd",
22
+ "fileHash": "7b5060e6",
23
23
  "needsInterop": true
24
24
  },
25
25
  "react/jsx-runtime": {
26
26
  "src": "../../../../node_modules/.pnpm/react@19.2.3/node_modules/react/jsx-runtime.js",
27
27
  "file": "react_jsx-runtime.js",
28
- "fileHash": "346c243c",
28
+ "fileHash": "85915065",
29
29
  "needsInterop": true
30
30
  },
31
31
  "@openai/apps-sdk-ui/components/Avatar": {
32
32
  "src": "../../../../node_modules/.pnpm/@openai+apps-sdk-ui@0.2.1_@types+react-dom@19.2.3_@types+react@19.2.7__@types+react@19._90324f97b7190ccfdbe40a9e8bef3385/node_modules/@openai/apps-sdk-ui/dist/es/components/Avatar/index.js",
33
33
  "file": "@openai_apps-sdk-ui_components_Avatar.js",
34
- "fileHash": "4e36254d",
34
+ "fileHash": "9e2bc881",
35
35
  "needsInterop": false
36
36
  },
37
37
  "@openai/apps-sdk-ui/components/Button": {
38
38
  "src": "../../../../node_modules/.pnpm/@openai+apps-sdk-ui@0.2.1_@types+react-dom@19.2.3_@types+react@19.2.7__@types+react@19._90324f97b7190ccfdbe40a9e8bef3385/node_modules/@openai/apps-sdk-ui/dist/es/components/Button/index.js",
39
39
  "file": "@openai_apps-sdk-ui_components_Button.js",
40
- "fileHash": "0ba30b65",
40
+ "fileHash": "e81630c1",
41
41
  "needsInterop": false
42
42
  },
43
43
  "@openai/apps-sdk-ui/components/Checkbox": {
44
44
  "src": "../../../../node_modules/.pnpm/@openai+apps-sdk-ui@0.2.1_@types+react-dom@19.2.3_@types+react@19.2.8__@types+react@19._10810175a7ab45acace17e46639bb69b/node_modules/@openai/apps-sdk-ui/dist/es/components/Checkbox/index.js",
45
45
  "file": "@openai_apps-sdk-ui_components_Checkbox.js",
46
- "fileHash": "c0e24dfb",
46
+ "fileHash": "417ae842",
47
47
  "needsInterop": false
48
48
  },
49
49
  "@openai/apps-sdk-ui/components/Icon": {
50
50
  "src": "../../../../node_modules/.pnpm/@openai+apps-sdk-ui@0.2.1_@types+react-dom@19.2.3_@types+react@19.2.7__@types+react@19._90324f97b7190ccfdbe40a9e8bef3385/node_modules/@openai/apps-sdk-ui/dist/es/components/Icon/index.js",
51
51
  "file": "@openai_apps-sdk-ui_components_Icon.js",
52
- "fileHash": "c5c6ed08",
52
+ "fileHash": "7838ceab",
53
53
  "needsInterop": false
54
54
  },
55
55
  "@openai/apps-sdk-ui/components/Input": {
56
56
  "src": "../../../../node_modules/.pnpm/@openai+apps-sdk-ui@0.2.1_@types+react-dom@19.2.3_@types+react@19.2.8__@types+react@19._10810175a7ab45acace17e46639bb69b/node_modules/@openai/apps-sdk-ui/dist/es/components/Input/index.js",
57
57
  "file": "@openai_apps-sdk-ui_components_Input.js",
58
- "fileHash": "a8f4808e",
58
+ "fileHash": "5505fcba",
59
59
  "needsInterop": false
60
60
  },
61
61
  "@openai/apps-sdk-ui/components/SegmentedControl": {
62
62
  "src": "../../../../node_modules/.pnpm/@openai+apps-sdk-ui@0.2.1_@types+react-dom@19.2.3_@types+react@19.2.8__@types+react@19._10810175a7ab45acace17e46639bb69b/node_modules/@openai/apps-sdk-ui/dist/es/components/SegmentedControl/index.js",
63
63
  "file": "@openai_apps-sdk-ui_components_SegmentedControl.js",
64
- "fileHash": "d5c8173c",
64
+ "fileHash": "ebdf4e6d",
65
65
  "needsInterop": false
66
66
  },
67
67
  "@openai/apps-sdk-ui/components/Select": {
68
68
  "src": "../../../../node_modules/.pnpm/@openai+apps-sdk-ui@0.2.1_@types+react-dom@19.2.3_@types+react@19.2.8__@types+react@19._10810175a7ab45acace17e46639bb69b/node_modules/@openai/apps-sdk-ui/dist/es/components/Select/index.js",
69
69
  "file": "@openai_apps-sdk-ui_components_Select.js",
70
- "fileHash": "4240ac61",
70
+ "fileHash": "74a9ac3b",
71
71
  "needsInterop": false
72
72
  },
73
73
  "@openai/apps-sdk-ui/components/Textarea": {
74
74
  "src": "../../../../node_modules/.pnpm/@openai+apps-sdk-ui@0.2.1_@types+react-dom@19.2.3_@types+react@19.2.8__@types+react@19._10810175a7ab45acace17e46639bb69b/node_modules/@openai/apps-sdk-ui/dist/es/components/Textarea/index.js",
75
75
  "file": "@openai_apps-sdk-ui_components_Textarea.js",
76
- "fileHash": "fb143e76",
76
+ "fileHash": "de06e9c1",
77
77
  "needsInterop": false
78
78
  },
79
79
  "@openai/apps-sdk-ui/theme": {
80
80
  "src": "../../../../node_modules/.pnpm/@openai+apps-sdk-ui@0.2.1_@types+react-dom@19.2.3_@types+react@19.2.8__@types+react@19._10810175a7ab45acace17e46639bb69b/node_modules/@openai/apps-sdk-ui/dist/es/lib/theme.js",
81
81
  "file": "@openai_apps-sdk-ui_theme.js",
82
- "fileHash": "d63096a5",
82
+ "fileHash": "fcfba56d",
83
83
  "needsInterop": false
84
84
  },
85
85
  "clsx": {
86
86
  "src": "../../../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs",
87
87
  "file": "clsx.js",
88
- "fileHash": "f58131a9",
88
+ "fileHash": "1cf6a50a",
89
89
  "needsInterop": false
90
90
  },
91
91
  "embla-carousel-react": {
92
92
  "src": "../../../../node_modules/.pnpm/embla-carousel-react@8.6.0_react@19.2.3/node_modules/embla-carousel-react/esm/embla-carousel-react.esm.js",
93
93
  "file": "embla-carousel-react.js",
94
- "fileHash": "a3f7e176",
94
+ "fileHash": "93fbfb3b",
95
95
  "needsInterop": false
96
96
  },
97
97
  "embla-carousel-wheel-gestures": {
98
98
  "src": "../../../../node_modules/.pnpm/embla-carousel-wheel-gestures@8.1.0_embla-carousel@8.6.0/node_modules/embla-carousel-wheel-gestures/dist/embla-carousel-wheel-gestures.esm.js",
99
99
  "file": "embla-carousel-wheel-gestures.js",
100
- "fileHash": "5d368aee",
100
+ "fileHash": "195bec07",
101
101
  "needsInterop": false
102
102
  },
103
103
  "mapbox-gl": {
104
104
  "src": "../../../../node_modules/.pnpm/mapbox-gl@3.17.0/node_modules/mapbox-gl/dist/mapbox-gl.js",
105
105
  "file": "mapbox-gl.js",
106
- "fileHash": "8d8a5e1a",
106
+ "fileHash": "17a20191",
107
107
  "needsInterop": true
108
108
  },
109
109
  "react-dom/client": {
110
110
  "src": "../../../../node_modules/.pnpm/react-dom@19.2.3_react@19.2.3/node_modules/react-dom/client.js",
111
111
  "file": "react-dom_client.js",
112
- "fileHash": "1170d116",
112
+ "fileHash": "b58b4826",
113
113
  "needsInterop": true
114
114
  },
115
115
  "tailwind-merge": {
116
116
  "src": "../../../../node_modules/.pnpm/tailwind-merge@3.4.0/node_modules/tailwind-merge/dist/bundle-mjs.mjs",
117
117
  "file": "tailwind-merge.js",
118
- "fileHash": "fdab5cd1",
118
+ "fileHash": "2f27906e",
119
119
  "needsInterop": false
120
120
  }
121
121
  },
122
122
  "chunks": {
123
- "chunk-P5LK4A7U": {
124
- "file": "chunk-P5LK4A7U.js"
125
- },
126
123
  "chunk-6QVG4F2X": {
127
124
  "file": "chunk-6QVG4F2X.js"
128
125
  },
129
- "chunk-EGRHWZRV": {
130
- "file": "chunk-EGRHWZRV.js"
126
+ "chunk-UM3ZGDFR": {
127
+ "file": "chunk-UM3ZGDFR.js"
131
128
  },
132
129
  "chunk-JAGHY6H6": {
133
130
  "file": "chunk-JAGHY6H6.js"
134
131
  },
135
- "chunk-QPJAV452": {
136
- "file": "chunk-QPJAV452.js"
137
- },
138
132
  "chunk-RYYR2YMB": {
139
133
  "file": "chunk-RYYR2YMB.js"
140
134
  },
@@ -144,12 +138,18 @@
144
138
  "chunk-XZTIOEPG": {
145
139
  "file": "chunk-XZTIOEPG.js"
146
140
  },
141
+ "chunk-P5LK4A7U": {
142
+ "file": "chunk-P5LK4A7U.js"
143
+ },
144
+ "chunk-EGRHWZRV": {
145
+ "file": "chunk-EGRHWZRV.js"
146
+ },
147
+ "chunk-QPJAV452": {
148
+ "file": "chunk-QPJAV452.js"
149
+ },
147
150
  "chunk-CNYJBM5F": {
148
151
  "file": "chunk-CNYJBM5F.js"
149
152
  },
150
- "chunk-UM3ZGDFR": {
151
- "file": "chunk-UM3ZGDFR.js"
152
- },
153
153
  "chunk-JGVISENQ": {
154
154
  "file": "chunk-JGVISENQ.js"
155
155
  },
@@ -1 +1 @@
1
- {"version":"4.0.16","results":[[":src/resources/albums/components/albums.test.tsx",{"duration":410.5030049999998,"failed":false}],[":src/resources/carousel/carousel-resource.test.tsx",{"duration":310.719329,"failed":false}],[":src/resources/review/review-resource.test.tsx",{"duration":598.5615620000003,"failed":false}],[":src/resources/map/components/map-view.test.tsx",{"duration":96.15135400000008,"failed":false}],[":src/resources/map/components/place-inspector.test.tsx",{"duration":460.02958199999966,"failed":false}],[":src/resources/albums/components/fullscreen-viewer.test.tsx",{"duration":273.1299219999996,"failed":false}],[":src/resources/map/components/place-list.test.tsx",{"duration":143.12914500000034,"failed":false}],[":src/resources/map/components/place-card.test.tsx",{"duration":351.79216799999995,"failed":false}],[":src/resources/map/components/place-carousel.test.tsx",{"duration":449.5401650000001,"failed":false}],[":src/resources/albums/components/album-carousel.test.tsx",{"duration":70.63576599999988,"failed":false}],[":src/resources/carousel/components/carousel.test.tsx",{"duration":105.63132599999994,"failed":false}],[":src/resources/map/map-resource.test.tsx",{"duration":294.368154,"failed":false}],[":src/resources/albums/albums-resource.test.tsx",{"duration":253.63618599999995,"failed":false}],[":src/resources/albums/components/film-strip.test.tsx",{"duration":482.764449,"failed":false}],[":src/resources/albums/components/album-card.test.tsx",{"duration":269.0116419999997,"failed":false}],[":src/resources/carousel/components/card.test.tsx",{"duration":102.7438790000001,"failed":false}]]}
1
+ {"version":"4.0.16","results":[[":src/resources/albums/components/albums.test.tsx",{"duration":368.913192,"failed":false}],[":src/resources/review/review-resource.test.tsx",{"duration":548.241282,"failed":false}],[":src/resources/carousel/carousel-resource.test.tsx",{"duration":270.03080899999986,"failed":false}],[":src/resources/map/components/map-view.test.tsx",{"duration":95.30531999999994,"failed":false}],[":src/resources/map/components/place-inspector.test.tsx",{"duration":461.01467,"failed":false}],[":src/resources/albums/components/fullscreen-viewer.test.tsx",{"duration":265.73868300000004,"failed":false}],[":src/resources/map/components/place-list.test.tsx",{"duration":141.19271300000037,"failed":false}],[":src/resources/map/components/place-card.test.tsx",{"duration":368.02030500000023,"failed":false}],[":src/resources/map/components/place-carousel.test.tsx",{"duration":447.1268270000003,"failed":false}],[":src/resources/albums/components/album-carousel.test.tsx",{"duration":76.99177499999996,"failed":false}],[":src/resources/carousel/components/carousel.test.tsx",{"duration":82.18443700000012,"failed":false}],[":src/resources/map/map-resource.test.tsx",{"duration":307.5362889999999,"failed":false}],[":src/resources/albums/albums-resource.test.tsx",{"duration":275.64505599999984,"failed":false}],[":src/resources/albums/components/film-strip.test.tsx",{"duration":442.6262569999999,"failed":false}],[":src/resources/albums/components/album-card.test.tsx",{"duration":334.53105099999993,"failed":false}],[":src/resources/carousel/components/card.test.tsx",{"duration":78.75377200000003,"failed":false}]]}
@@ -0,0 +1,96 @@
1
+ import {
2
+ toCssVariables
3
+ } from "./chunk-RYYR2YMB.js";
4
+ import {
5
+ clsx_default
6
+ } from "./chunk-CNYJBM5F.js";
7
+ import {
8
+ require_jsx_runtime
9
+ } from "./chunk-JGVISENQ.js";
10
+ import {
11
+ require_react
12
+ } from "./chunk-BUOVMFCD.js";
13
+ import {
14
+ __toESM
15
+ } from "./chunk-ILHRZGIS.js";
16
+
17
+ // ../node_modules/.pnpm/@openai+apps-sdk-ui@0.2.1_@types+react-dom@19.2.3_@types+react@19.2.7__@types+react@19._90324f97b7190ccfdbe40a9e8bef3385/node_modules/@openai/apps-sdk-ui/dist/es/components/Avatar/Avatar.js
18
+ var import_jsx_runtime = __toESM(require_jsx_runtime());
19
+ var import_react = __toESM(require_react());
20
+ var import_react2 = __toESM(require_react());
21
+ import s from "/home/runner/work/sunpeak/sunpeak/node_modules/.pnpm/@openai+apps-sdk-ui@0.2.1_@types+react-dom@19.2.3_@types+react@19.2.7__@types+react@19._90324f97b7190ccfdbe40a9e8bef3385/node_modules/@openai/apps-sdk-ui/dist/es/components/Avatar/Avatar.module.css";
22
+ var Avatar = (props) => {
23
+ const validImageUrl = validateImageUrl(props.imageUrl);
24
+ return (0, import_react.createElement)(AvatarInner, { ...props, imageUrl: validImageUrl, key: validImageUrl });
25
+ };
26
+ var AvatarInner = (props) => {
27
+ const {
28
+ className,
29
+ size,
30
+ overflowCount,
31
+ name,
32
+ color = "secondary",
33
+ variant = "soft",
34
+ imageUrl,
35
+ Icon,
36
+ // asChild support
37
+ ...restProps
38
+ } = props;
39
+ const [imageStatus, setImageStatus] = (0, import_react2.useState)();
40
+ const isInteractive = !!(restProps.onPointerDown || restProps.onClick);
41
+ const TagName = isInteractive ? "button" : "span";
42
+ return (0, import_jsx_runtime.jsx)(TagName, { className: clsx_default(s.Avatar, className), style: toCssVariables({
43
+ "avatar-size": size
44
+ }), role: isInteractive ? void 0 : "presentation", "data-color": color, "data-variant": variant, type: isInteractive ? "button" : void 0, ...restProps, children: (() => {
45
+ if (imageUrl && imageStatus !== "error") {
46
+ return (0, import_jsx_runtime.jsx)(AvatarImage, { status: imageStatus, url: imageUrl, onError: () => setImageStatus("error"), onLoad: () => setImageStatus("loaded") });
47
+ }
48
+ if (Icon) {
49
+ return (0, import_jsx_runtime.jsx)(Icon, { className: s.AvatarIcon });
50
+ }
51
+ return overflowCount ? (0, import_jsx_runtime.jsx)(AvatarOverflowCount, { count: overflowCount }) : (0, import_jsx_runtime.jsx)(AvatarInitial, { name });
52
+ })() });
53
+ };
54
+ var validateImageUrl = (imageUrl) => {
55
+ if (!imageUrl) {
56
+ return;
57
+ }
58
+ if (imageUrl.includes("gravatar.com") && imageUrl.includes("cdn.auth0.com")) {
59
+ return;
60
+ }
61
+ return imageUrl;
62
+ };
63
+ var AvatarImage = ({ url, status, onLoad, onError }) => {
64
+ return (0, import_jsx_runtime.jsx)("span", { className: s.AvatarImageContainer, children: (0, import_jsx_runtime.jsx)("img", { src: url, className: s.AvatarImage, "data-loaded": status === "loaded" ? "" : void 0, onLoad, onError, alt: "", role: "presentation" }) });
65
+ };
66
+ var AvatarInitial = ({ name = "" }) => {
67
+ const firstInitial = (0, import_react2.useMemo)(() => name.charAt(0).toUpperCase(), [name]);
68
+ return (0, import_jsx_runtime.jsx)("span", { className: s.AvatarInitial, children: firstInitial });
69
+ };
70
+ var AvatarOverflowCount = ({ count }) => {
71
+ const formattedCount = (0, import_react2.useMemo)(() => {
72
+ return new Intl.NumberFormat("en", {
73
+ notation: "compact",
74
+ compactDisplay: "short",
75
+ maximumFractionDigits: 0
76
+ }).format(count).toLocaleLowerCase();
77
+ }, [count]);
78
+ return (0, import_jsx_runtime.jsxs)("span", { className: s.AvatarOverflowCount, "data-letter-count": formattedCount.length, children: [(0, import_jsx_runtime.jsx)("span", { className: s.AvatarOverflowCountSymbol, children: "+" }), formattedCount] });
79
+ };
80
+
81
+ // ../node_modules/.pnpm/@openai+apps-sdk-ui@0.2.1_@types+react-dom@19.2.3_@types+react@19.2.7__@types+react@19._90324f97b7190ccfdbe40a9e8bef3385/node_modules/@openai/apps-sdk-ui/dist/es/components/Avatar/AvatarGroup.js
82
+ var import_jsx_runtime2 = __toESM(require_jsx_runtime());
83
+ var import_react3 = __toESM(require_react());
84
+ import s2 from "/home/runner/work/sunpeak/sunpeak/node_modules/.pnpm/@openai+apps-sdk-ui@0.2.1_@types+react-dom@19.2.3_@types+react@19.2.7__@types+react@19._90324f97b7190ccfdbe40a9e8bef3385/node_modules/@openai/apps-sdk-ui/dist/es/components/Avatar/AvatarGroup.module.css";
85
+ var AvatarGroup = ({ className, stack = "start", size, children }) => {
86
+ const childrenArray = import_react3.Children.toArray(children);
87
+ const maybeReversedChildren = stack === "start" ? childrenArray.slice().reverse() : childrenArray;
88
+ return (0, import_jsx_runtime2.jsx)("div", { className: clsx_default(s2.Group, className), "data-stack": stack, style: toCssVariables({
89
+ "avatar-size": size
90
+ }), children: maybeReversedChildren.map((child) => (0, import_react3.isValidElement)(child) ? (0, import_react3.cloneElement)(child) : child) });
91
+ };
92
+ export {
93
+ Avatar,
94
+ AvatarGroup
95
+ };
96
+ //# sourceMappingURL=@openai_apps-sdk-ui_components_Avatar.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../node_modules/.pnpm/@openai+apps-sdk-ui@0.2.1_@types+react-dom@19.2.3_@types+react@19.2.7__@types+react@19._90324f97b7190ccfdbe40a9e8bef3385/node_modules/@openai/apps-sdk-ui/src/components/Avatar/Avatar.tsx", "../../../../node_modules/.pnpm/@openai+apps-sdk-ui@0.2.1_@types+react-dom@19.2.3_@types+react@19.2.7__@types+react@19._90324f97b7190ccfdbe40a9e8bef3385/node_modules/@openai/apps-sdk-ui/src/components/Avatar/AvatarGroup.tsx"],
4
+ "sourcesContent": ["\"use client\"\n\nimport clsx from \"clsx\"\nimport { useMemo, useState } from \"react\"\nimport { toCssVariables } from \"../../lib/helpers\"\nimport { type SemanticColors, type Variants } from \"../../types\"\nimport s from \"./Avatar.module.css\"\n\ntype ImageStatus = undefined | \"error\" | \"loaded\"\n\nexport type AvatarProps = {\n /** Class name applied to the avatar */\n className?: string\n /** Size of the avatar's width & height, in pixels. */\n size?: number\n /** Display a formatted count of overflow objects. */\n overflowCount?: number\n /** Name used to display initials from */\n name?: string\n /**\n * Color used for the avatar\n * @default secondary\n */\n color?: SemanticColors<\"primary\" | \"secondary\" | \"success\" | \"info\" | \"discovery\" | \"danger\">\n /**\n * Style variant of the avatar\n * @default soft\n */\n variant?: Variants<\"soft\" | \"solid\">\n /** URL of the image to display as the avatar */\n imageUrl?: string\n /** Icon to render in the avatar circle */\n Icon?: React.ComponentType<React.SVGProps<SVGSVGElement>>\n /** Optional click handler, which also enables semantic interactions */\n onClick?: () => void\n /** Optional pointer handler, which also enables semantic interactions */\n onPointerDown?: () => void\n}\n\nexport const Avatar = (props: AvatarProps) => {\n // Validate the image url before sending to the component\n const validImageUrl = validateImageUrl(props.imageUrl)\n\n // Keying off of imageUrl allows us to refresh imageStatus automatically through React rendering\n return <AvatarInner {...props} imageUrl={validImageUrl} key={validImageUrl} />\n}\n\nexport const AvatarInner = (props: AvatarProps) => {\n const {\n className,\n size,\n overflowCount,\n name,\n color = \"secondary\",\n variant = \"soft\",\n imageUrl,\n Icon,\n // asChild support\n ...restProps\n } = props\n const [imageStatus, setImageStatus] = useState<ImageStatus>()\n const isInteractive = !!(restProps.onPointerDown || restProps.onClick)\n const TagName = isInteractive ? \"button\" : \"span\"\n\n return (\n <TagName\n className={clsx(s.Avatar, className)}\n style={toCssVariables({\n \"avatar-size\": size,\n })}\n role={isInteractive ? undefined : \"presentation\"}\n data-color={color}\n data-variant={variant}\n type={isInteractive ? \"button\" : undefined}\n {...restProps}\n >\n {(() => {\n if (imageUrl && imageStatus !== \"error\") {\n return (\n <AvatarImage\n status={imageStatus}\n url={imageUrl}\n onError={() => setImageStatus(\"error\")}\n onLoad={() => setImageStatus(\"loaded\")}\n />\n )\n }\n if (Icon) {\n return <Icon className={s.AvatarIcon} />\n }\n return overflowCount ? (\n <AvatarOverflowCount count={overflowCount} />\n ) : (\n <AvatarInitial name={name} />\n )\n })()}\n </TagName>\n )\n}\n\nconst validateImageUrl = (imageUrl?: string): string | undefined => {\n if (!imageUrl) {\n return\n }\n\n // Avoid specific pattern of images from gravatar.com, which use a pair of initials, instead of a single initial.\n if (imageUrl.includes(\"gravatar.com\") && imageUrl.includes(\"cdn.auth0.com\")) {\n return\n }\n\n return imageUrl\n}\n\nconst AvatarImage = ({\n url,\n status,\n onLoad,\n onError,\n}: {\n url: string\n status: ImageStatus\n onLoad: () => void\n onError: () => void\n}) => {\n return (\n <span className={s.AvatarImageContainer}>\n <img\n src={url}\n className={s.AvatarImage}\n data-loaded={status === \"loaded\" ? \"\" : undefined}\n onLoad={onLoad}\n onError={onError}\n alt=\"\"\n role=\"presentation\"\n />\n </span>\n )\n}\n\nconst AvatarInitial = ({ name = \"\" }: { name?: string }) => {\n const firstInitial = useMemo(() => name.charAt(0).toUpperCase(), [name])\n\n return <span className={s.AvatarInitial}>{firstInitial}</span>\n}\n\nconst AvatarOverflowCount = ({ count }: { count: number }) => {\n const formattedCount = useMemo<string>(() => {\n return new Intl.NumberFormat(\"en\", {\n notation: \"compact\",\n compactDisplay: \"short\",\n maximumFractionDigits: 0,\n })\n .format(count)\n .toLocaleLowerCase()\n }, [count])\n\n return (\n <span className={s.AvatarOverflowCount} data-letter-count={formattedCount.length}>\n <span className={s.AvatarOverflowCountSymbol}>+</span>\n {formattedCount}\n </span>\n )\n}\n", "import clsx from \"clsx\"\nimport { Children, cloneElement, isValidElement, type ReactNode } from \"react\"\nimport { toCssVariables } from \"../../lib/helpers\"\nimport s from \"./AvatarGroup.module.css\"\n\nexport type AvatarGroupProps = {\n /** Class name passed to the group container */\n className?: string\n /**\n * Determines stacking layer order\n * @default start\n */\n stack?: \"start\" | \"end\"\n /** Size all avatars in the group, in pixels. */\n size?: number\n children: ReactNode\n}\n\nexport const AvatarGroup = ({ className, stack = \"start\", size, children }: AvatarGroupProps) => {\n const childrenArray = Children.toArray(children)\n // Conditionally reverse the array depending on desired stacking priority\n const maybeReversedChildren = stack === \"start\" ? childrenArray.slice().reverse() : childrenArray\n\n return (\n <div\n className={clsx(s.Group, className)}\n data-stack={stack}\n style={toCssVariables({\n \"avatar-size\": size,\n })}\n >\n {maybeReversedChildren.map((child) => (isValidElement(child) ? cloneElement(child) : child))}\n </div>\n )\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["import_react", "_createElement", "_jsx", "_jsxs", "import_react", "s", "_jsx"]
7
+ }