@vibes.diy/base 14.3.20 → 14.3.22

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 (222) hide show
  1. package/components/StyleControls.js +27 -3
  2. package/components/StyleControls.js.map +1 -1
  3. package/components/VibesSwitch.d.ts +1 -2
  4. package/components/VibesSwitch.js +4 -59
  5. package/components/VibesSwitch.js.map +1 -1
  6. package/components/chip-fast-path.d.ts +6 -0
  7. package/components/chip-fast-path.js +2 -0
  8. package/components/chip-fast-path.js.map +1 -0
  9. package/components/editor-tabs.d.ts +3 -0
  10. package/components/editor-tabs.js +1 -0
  11. package/components/editor-tabs.js.map +1 -1
  12. package/components/index.d.ts +2 -17
  13. package/components/index.js +2 -17
  14. package/components/index.js.map +1 -1
  15. package/components/vibe-menu/VibeMenu.d.ts +16 -0
  16. package/components/vibe-menu/VibeMenu.js +99 -0
  17. package/components/vibe-menu/VibeMenu.js.map +1 -0
  18. package/components/vibe-menu/cards/AccountCard.d.ts +40 -0
  19. package/components/vibe-menu/cards/AccountCard.js +234 -0
  20. package/components/vibe-menu/cards/AccountCard.js.map +1 -0
  21. package/components/vibe-menu/cards/CodeCard.d.ts +20 -0
  22. package/components/vibe-menu/cards/CodeCard.js +109 -0
  23. package/components/vibe-menu/cards/CodeCard.js.map +1 -0
  24. package/components/vibe-menu/cards/CodeModeWorkspace.d.ts +31 -0
  25. package/components/vibe-menu/cards/CodeModeWorkspace.js +107 -0
  26. package/components/vibe-menu/cards/CodeModeWorkspace.js.map +1 -0
  27. package/components/vibe-menu/cards/HomeCard.d.ts +22 -0
  28. package/components/vibe-menu/cards/HomeCard.js +64 -0
  29. package/components/vibe-menu/cards/HomeCard.js.map +1 -0
  30. package/components/vibe-menu/cards/ShareCard.d.ts +9 -0
  31. package/components/vibe-menu/cards/ShareCard.js +84 -0
  32. package/components/vibe-menu/cards/ShareCard.js.map +1 -0
  33. package/components/vibe-menu/cards/ShareDrills.d.ts +35 -0
  34. package/components/vibe-menu/cards/ShareDrills.js +146 -0
  35. package/components/vibe-menu/cards/ShareDrills.js.map +1 -0
  36. package/components/vibe-menu/cards/ShareLinkRows.d.ts +6 -0
  37. package/components/vibe-menu/cards/ShareLinkRows.js +27 -0
  38. package/components/vibe-menu/cards/ShareLinkRows.js.map +1 -0
  39. package/components/vibe-menu/cards/share-actions.d.ts +13 -0
  40. package/components/vibe-menu/cards/share-actions.js +37 -0
  41. package/components/vibe-menu/cards/share-actions.js.map +1 -0
  42. package/components/vibe-menu/cards/share-card.styles.d.ts +1 -0
  43. package/components/vibe-menu/cards/share-card.styles.js +90 -0
  44. package/components/vibe-menu/cards/share-card.styles.js.map +1 -0
  45. package/components/vibe-menu/cards/share-copy.d.ts +24 -0
  46. package/components/vibe-menu/cards/share-copy.js +64 -0
  47. package/components/vibe-menu/cards/share-copy.js.map +1 -0
  48. package/components/vibe-menu/cards/share-parts.d.ts +46 -0
  49. package/components/vibe-menu/cards/share-parts.js +87 -0
  50. package/components/vibe-menu/cards/share-parts.js.map +1 -0
  51. package/components/vibe-menu/code-tabs.d.ts +11 -0
  52. package/components/vibe-menu/code-tabs.js +32 -0
  53. package/components/vibe-menu/code-tabs.js.map +1 -0
  54. package/components/vibe-menu/copy.d.ts +7 -0
  55. package/components/vibe-menu/copy.js +13 -0
  56. package/components/vibe-menu/copy.js.map +1 -0
  57. package/components/vibe-menu/fixtures.d.ts +42 -0
  58. package/components/vibe-menu/fixtures.js +184 -0
  59. package/components/vibe-menu/fixtures.js.map +1 -0
  60. package/components/vibe-menu/geometry.d.ts +24 -0
  61. package/components/vibe-menu/geometry.js +28 -0
  62. package/components/vibe-menu/geometry.js.map +1 -0
  63. package/components/vibe-menu/index.d.ts +42 -0
  64. package/components/vibe-menu/index.js +43 -0
  65. package/components/vibe-menu/index.js.map +1 -0
  66. package/components/vibe-menu/menu-state.d.ts +42 -0
  67. package/components/vibe-menu/menu-state.js +82 -0
  68. package/components/vibe-menu/menu-state.js.map +1 -0
  69. package/components/vibe-menu/moments.d.ts +13 -0
  70. package/components/vibe-menu/moments.js +39 -0
  71. package/components/vibe-menu/moments.js.map +1 -0
  72. package/components/vibe-menu/motion.d.ts +10 -0
  73. package/components/vibe-menu/motion.js +10 -0
  74. package/components/vibe-menu/motion.js.map +1 -0
  75. package/components/vibe-menu/open-resolver.d.ts +46 -0
  76. package/components/vibe-menu/open-resolver.js +91 -0
  77. package/components/vibe-menu/open-resolver.js.map +1 -0
  78. package/components/vibe-menu/parts/AccessToggle.d.ts +13 -0
  79. package/components/vibe-menu/parts/AccessToggle.js +58 -0
  80. package/components/vibe-menu/parts/AccessToggle.js.map +1 -0
  81. package/components/vibe-menu/parts/ActionPill.d.ts +18 -0
  82. package/components/vibe-menu/parts/ActionPill.js +21 -0
  83. package/components/vibe-menu/parts/ActionPill.js.map +1 -0
  84. package/components/vibe-menu/parts/BackRow.d.ts +8 -0
  85. package/components/vibe-menu/parts/BackRow.js +10 -0
  86. package/components/vibe-menu/parts/BackRow.js.map +1 -0
  87. package/components/vibe-menu/parts/Chip.d.ts +37 -0
  88. package/components/vibe-menu/parts/Chip.js +62 -0
  89. package/components/vibe-menu/parts/Chip.js.map +1 -0
  90. package/components/vibe-menu/parts/Composer.d.ts +39 -0
  91. package/components/vibe-menu/parts/Composer.js +47 -0
  92. package/components/vibe-menu/parts/Composer.js.map +1 -0
  93. package/components/vibe-menu/parts/DoneButton.d.ts +5 -0
  94. package/components/vibe-menu/parts/DoneButton.js +5 -0
  95. package/components/vibe-menu/parts/DoneButton.js.map +1 -0
  96. package/components/vibe-menu/parts/Glyph.d.ts +9 -0
  97. package/components/vibe-menu/parts/Glyph.js +123 -0
  98. package/components/vibe-menu/parts/Glyph.js.map +1 -0
  99. package/components/vibe-menu/parts/GrantControls.d.ts +13 -0
  100. package/components/vibe-menu/parts/GrantControls.js +61 -0
  101. package/components/vibe-menu/parts/GrantControls.js.map +1 -0
  102. package/components/vibe-menu/parts/MemberRow.d.ts +37 -0
  103. package/components/vibe-menu/parts/MemberRow.js +70 -0
  104. package/components/vibe-menu/parts/MemberRow.js.map +1 -0
  105. package/components/vibe-menu/parts/MenuCard.d.ts +10 -0
  106. package/components/vibe-menu/parts/MenuCard.js +7 -0
  107. package/components/vibe-menu/parts/MenuCard.js.map +1 -0
  108. package/components/vibe-menu/parts/MomentLine.d.ts +23 -0
  109. package/components/vibe-menu/parts/MomentLine.js +58 -0
  110. package/components/vibe-menu/parts/MomentLine.js.map +1 -0
  111. package/components/vibe-menu/parts/Row.d.ts +41 -0
  112. package/components/vibe-menu/parts/Row.js +60 -0
  113. package/components/vibe-menu/parts/Row.js.map +1 -0
  114. package/components/vibe-menu/parts/SectionStrip.d.ts +14 -0
  115. package/components/vibe-menu/parts/SectionStrip.js +26 -0
  116. package/components/vibe-menu/parts/SectionStrip.js.map +1 -0
  117. package/components/vibe-menu/parts/VibesSwitchGlass.d.ts +24 -0
  118. package/components/vibe-menu/parts/VibesSwitchGlass.js +66 -0
  119. package/components/vibe-menu/parts/VibesSwitchGlass.js.map +1 -0
  120. package/components/vibe-menu/parts/radio-keys.d.ts +5 -0
  121. package/components/vibe-menu/parts/radio-keys.js +13 -0
  122. package/components/vibe-menu/parts/radio-keys.js.map +1 -0
  123. package/components/vibe-menu/parts/use-composer-draft.d.ts +9 -0
  124. package/components/vibe-menu/parts/use-composer-draft.js +94 -0
  125. package/components/vibe-menu/parts/use-composer-draft.js.map +1 -0
  126. package/components/vibe-menu/share-fixtures.d.ts +15 -0
  127. package/components/vibe-menu/share-fixtures.js +72 -0
  128. package/components/vibe-menu/share-fixtures.js.map +1 -0
  129. package/components/vibe-menu/shell/VibeMenuShell.d.ts +30 -0
  130. package/components/vibe-menu/shell/VibeMenuShell.js +124 -0
  131. package/components/vibe-menu/shell/VibeMenuShell.js.map +1 -0
  132. package/components/vibe-menu/shell/menu-sequence.d.ts +20 -0
  133. package/components/vibe-menu/shell/menu-sequence.js +35 -0
  134. package/components/vibe-menu/shell/menu-sequence.js.map +1 -0
  135. package/components/vibe-menu/shell/outline-geometry.d.ts +63 -0
  136. package/components/vibe-menu/shell/outline-geometry.js +83 -0
  137. package/components/vibe-menu/shell/outline-geometry.js.map +1 -0
  138. package/components/vibe-menu/shell/shell.styles.d.ts +1 -0
  139. package/components/vibe-menu/shell/shell.styles.js +386 -0
  140. package/components/vibe-menu/shell/shell.styles.js.map +1 -0
  141. package/components/vibe-menu/shell/useMenuSequencer.d.ts +33 -0
  142. package/components/vibe-menu/shell/useMenuSequencer.js +490 -0
  143. package/components/vibe-menu/shell/useMenuSequencer.js.map +1 -0
  144. package/components/vibe-menu/slices.d.ts +182 -0
  145. package/components/vibe-menu/slices.js +5 -0
  146. package/components/vibe-menu/slices.js.map +1 -0
  147. package/components/vibe-menu/use-remix-hint.d.ts +9 -0
  148. package/components/vibe-menu/use-remix-hint.js +21 -0
  149. package/components/vibe-menu/use-remix-hint.js.map +1 -0
  150. package/components/vibe-menu/vibe-menu.styles.d.ts +5 -0
  151. package/components/vibe-menu/vibe-menu.styles.js +1424 -0
  152. package/components/vibe-menu/vibe-menu.styles.js.map +1 -0
  153. package/package.json +4 -4
  154. package/components/AccountView.d.ts +0 -10
  155. package/components/AccountView.js +0 -31
  156. package/components/AccountView.js.map +0 -1
  157. package/components/AdminModeControl.d.ts +0 -7
  158. package/components/AdminModeControl.js +0 -9
  159. package/components/AdminModeControl.js.map +0 -1
  160. package/components/CodingIndicator.d.ts +0 -6
  161. package/components/CodingIndicator.js +0 -53
  162. package/components/CodingIndicator.js.map +0 -1
  163. package/components/CreditsDetailMenu.d.ts +0 -15
  164. package/components/CreditsDetailMenu.js +0 -97
  165. package/components/CreditsDetailMenu.js.map +0 -1
  166. package/components/CreditsRingView.d.ts +0 -15
  167. package/components/CreditsRingView.js +0 -77
  168. package/components/CreditsRingView.js.map +0 -1
  169. package/components/EditorTabStrip.d.ts +0 -10
  170. package/components/EditorTabStrip.js +0 -15
  171. package/components/EditorTabStrip.js.map +0 -1
  172. package/components/LinkLineControls.d.ts +0 -9
  173. package/components/LinkLineControls.js +0 -72
  174. package/components/LinkLineControls.js.map +0 -1
  175. package/components/MadeHereView.d.ts +0 -8
  176. package/components/MadeHereView.js +0 -37
  177. package/components/MadeHereView.js.map +0 -1
  178. package/components/RecentVibesList.d.ts +0 -19
  179. package/components/RecentVibesList.js +0 -106
  180. package/components/RecentVibesList.js.map +0 -1
  181. package/components/RecommendedView.d.ts +0 -22
  182. package/components/RecommendedView.js +0 -172
  183. package/components/RecommendedView.js.map +0 -1
  184. package/components/RemixInviteView.d.ts +0 -4
  185. package/components/RemixInviteView.js +0 -11
  186. package/components/RemixInviteView.js.map +0 -1
  187. package/components/SeedDataOffer.d.ts +0 -8
  188. package/components/SeedDataOffer.js +0 -15
  189. package/components/SeedDataOffer.js.map +0 -1
  190. package/components/SignedInDiscoveryView.d.ts +0 -17
  191. package/components/SignedInDiscoveryView.js +0 -30
  192. package/components/SignedInDiscoveryView.js.map +0 -1
  193. package/components/SignedOutDiscoveryView.d.ts +0 -7
  194. package/components/SignedOutDiscoveryView.js +0 -15
  195. package/components/SignedOutDiscoveryView.js.map +0 -1
  196. package/components/SignedOutSavePrompt.d.ts +0 -4
  197. package/components/SignedOutSavePrompt.js +0 -33
  198. package/components/SignedOutSavePrompt.js.map +0 -1
  199. package/components/UnifiedVibeCard.d.ts +0 -129
  200. package/components/UnifiedVibeCard.js +0 -1658
  201. package/components/UnifiedVibeCard.js.map +0 -1
  202. package/components/UnifiedVibeCardSettings.styles.d.ts +0 -3
  203. package/components/UnifiedVibeCardSettings.styles.js +0 -95
  204. package/components/UnifiedVibeCardSettings.styles.js.map +0 -1
  205. package/components/UnifiedVibeCardShare.styles.d.ts +0 -3
  206. package/components/UnifiedVibeCardShare.styles.js +0 -72
  207. package/components/UnifiedVibeCardShare.styles.js.map +0 -1
  208. package/components/ViewerAccessSummary.d.ts +0 -28
  209. package/components/ViewerAccessSummary.js +0 -105
  210. package/components/ViewerAccessSummary.js.map +0 -1
  211. package/components/ViewerStandingView.d.ts +0 -7
  212. package/components/ViewerStandingView.js +0 -10
  213. package/components/ViewerStandingView.js.map +0 -1
  214. package/hooks/useCardFloat.d.ts +0 -6
  215. package/hooks/useCardFloat.js +0 -191
  216. package/hooks/useCardFloat.js.map +0 -1
  217. package/hooks/useHomeMotionPress.d.ts +0 -17
  218. package/hooks/useHomeMotionPress.js +0 -93
  219. package/hooks/useHomeMotionPress.js.map +0 -1
  220. package/motion/card-motion-source.d.ts +0 -23
  221. package/motion/card-motion-source.js +0 -50
  222. package/motion/card-motion-source.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vibe-menu.styles.js","sourceRoot":"","sources":["../../../jsr/components/vibe-menu/vibe-menu.styles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AA2B/B,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCA0FJ,CAAC;AAEjC,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;2DAQwB,CAAC;AAE5D,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;6BAKA,oBAAoB;;;;+BAIlB,mBAAmB;;;;mCAIf,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyxCrD,CAAC;AAGF,MAAM,UAAU,cAAc;IAC5B,OAAO,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,uBAAuB,EAAE,EAAE,EAAE,EAAE,aAAa,CAAC,CAAC;AACtF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vibes.diy/base",
3
- "version": "14.3.20",
3
+ "version": "14.3.22",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "main": "./index.js",
@@ -10,9 +10,9 @@
10
10
  "dependencies": {
11
11
  "@adviser/cement": "~0.5.34",
12
12
  "@emotion/css": "~11.13.5",
13
- "@vibes.diy/use-vibes-types": "14.3.20",
14
- "@vibes.diy/vibe-runtime": "14.3.20",
15
- "@vibes.diy/vibe-types": "14.3.20",
13
+ "@vibes.diy/use-vibes-types": "14.3.22",
14
+ "@vibes.diy/vibe-runtime": "14.3.22",
15
+ "@vibes.diy/vibe-types": "14.3.22",
16
16
  "officeparser": "~8.0.0",
17
17
  "qrcode-generator": "~2.0.4",
18
18
  "react": "~19.2.8"
@@ -1,10 +0,0 @@
1
- import * as React from "react";
2
- export interface AccountViewProps {
3
- readonly slug: string;
4
- readonly displayName?: string;
5
- readonly avatarUrl?: string;
6
- readonly onPickFile?: (file: File) => void | Promise<void>;
7
- readonly settingsHref?: string;
8
- readonly onOpenSettings?: () => void;
9
- }
10
- export declare function AccountView({ slug, displayName, avatarUrl, onPickFile, settingsHref, onOpenSettings }: AccountViewProps): React.JSX.Element;
@@ -1,31 +0,0 @@
1
- import * as React from "react";
2
- import { ViewerTagView } from "./ViewerTagView.js";
3
- export function AccountView({ slug, displayName, avatarUrl, onPickFile, settingsHref, onOpenSettings }) {
4
- return (React.createElement("div", { "data-testid": "account-view", style: {
5
- display: "flex",
6
- flexDirection: "column",
7
- alignItems: "center",
8
- gap: 16,
9
- padding: "24px 16px 28px",
10
- } },
11
- React.createElement("div", { style: { transform: "scale(1.3)", transformOrigin: "center", margin: "6px 0 10px" } },
12
- React.createElement(ViewerTagView, { slug: slug, displayName: displayName, avatarUrl: avatarUrl, editable: Boolean(onPickFile), onPickFile: onPickFile })),
13
- React.createElement("a", { "data-testid": "account-view-settings-link", href: settingsHref ?? "/settings", onClick: onOpenSettings
14
- ? (e) => {
15
- if (e.button !== 0 || e.metaKey || e.ctrlKey || e.shiftKey || e.altKey)
16
- return;
17
- e.preventDefault();
18
- onOpenSettings();
19
- }
20
- : undefined, style: {
21
- border: "1px solid var(--border, light-dark(rgba(0,0,0,0.18), rgba(255,255,255,0.15)))",
22
- borderRadius: 999,
23
- padding: "7px 18px",
24
- fontSize: 14,
25
- color: "inherit",
26
- textDecoration: "none",
27
- cursor: "pointer",
28
- colorScheme: "light dark",
29
- } }, "Account settings")));
30
- }
31
- //# sourceMappingURL=AccountView.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AccountView.js","sourceRoot":"","sources":["../../jsr/components/AccountView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAyBnD,MAAM,UAAU,WAAW,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAoB;IACtH,OAAO,CACL,4CACc,cAAc,EAC1B,KAAK,EAAE;YACL,OAAO,EAAE,MAAM;YACf,aAAa,EAAE,QAAQ;YACvB,UAAU,EAAE,QAAQ;YACpB,GAAG,EAAE,EAAE;YACP,OAAO,EAAE,gBAAgB;SAC1B;QAOD,6BAAK,KAAK,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE;YACtF,oBAAC,aAAa,IACZ,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,EAC7B,UAAU,EAAE,UAAU,GACtB,CACE;QACN,0CACc,4BAA4B,EACxC,IAAI,EAAE,YAAY,IAAI,WAAW,EACjC,OAAO,EACL,cAAc;gBACZ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;oBAIJ,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,MAAM;wBAAE,OAAO;oBAC/E,CAAC,CAAC,cAAc,EAAE,CAAC;oBACnB,cAAc,EAAE,CAAC;gBACnB,CAAC;gBACH,CAAC,CAAC,SAAS,EAEf,KAAK,EAAE;gBACL,MAAM,EAAE,+EAA+E;gBACvF,YAAY,EAAE,GAAG;gBACjB,OAAO,EAAE,UAAU;gBACnB,QAAQ,EAAE,EAAE;gBACZ,KAAK,EAAE,SAAS;gBAChB,cAAc,EAAE,MAAM;gBACtB,MAAM,EAAE,SAAS;gBACjB,WAAW,EAAE,YAAY;aAC1B,uBAGC,CACA,CACP,CAAC;AACJ,CAAC"}
@@ -1,7 +0,0 @@
1
- import * as React from "react";
2
- export interface AdminModeControlProps {
3
- readonly isOwner: boolean;
4
- readonly adminMode: boolean;
5
- readonly onToggle?: () => void;
6
- }
7
- export declare function AdminModeControl({ isOwner, adminMode, onToggle }: AdminModeControlProps): React.JSX.Element | null;
@@ -1,9 +0,0 @@
1
- import * as React from "react";
2
- export function AdminModeControl({ isOwner, adminMode, onToggle }) {
3
- if (isOwner === false || onToggle === undefined)
4
- return null;
5
- return (React.createElement("label", { className: "flex items-center gap-2 text-sm text-neutral-700 dark:text-neutral-300" },
6
- React.createElement("input", { type: "checkbox", checked: adminMode, onChange: () => void onToggle(), className: "rounded border-gray-300 dark:border-gray-600" }),
7
- React.createElement("span", null, "Admin mode")));
8
- }
9
- //# sourceMappingURL=AdminModeControl.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AdminModeControl.js","sourceRoot":"","sources":["../../jsr/components/AdminModeControl.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,MAAM,UAAU,gBAAgB,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAyB;IACtF,IAAI,OAAO,KAAK,KAAK,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAC7D,OAAO,CACL,+BAAO,SAAS,EAAC,wEAAwE;QACvF,+BACE,IAAI,EAAC,UAAU,EACf,OAAO,EAAE,SAAS,EAClB,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,QAAQ,EAAE,EAC/B,SAAS,EAAC,8CAA8C,GACxD;QACF,+CAAuB,CACjB,CACT,CAAC;AACJ,CAAC"}
@@ -1,6 +0,0 @@
1
- import * as React from "react";
2
- export interface CodingIndicatorProps {
3
- readonly active: boolean;
4
- readonly label?: string;
5
- }
6
- export declare function CodingIndicator({ active, label }: CodingIndicatorProps): React.JSX.Element | null;
@@ -1,53 +0,0 @@
1
- import * as React from "react";
2
- const SWEEP_CLASS = "vibes-coding-indicator-sweep";
3
- const RING = "var(--uvc-purple-text, var(--accent, light-dark(#7c3aed, #c4b5fd)))";
4
- const CSS = `
5
- .${SWEEP_CLASS} {
6
- position: absolute;
7
- inset: 0;
8
- border-radius: inherit;
9
- pointer-events: none;
10
- }
11
- .${SWEEP_CLASS}-move {
12
- position: absolute;
13
- inset: 0;
14
- background-image: linear-gradient(100deg, transparent 35%, rgba(255,255,255,0.85) 50%, transparent 65%);
15
- background-size: 260% 100%;
16
- animation: vibesCodingIndicatorSweep 1.5s linear infinite;
17
- }
18
- @keyframes vibesCodingIndicatorSweep {
19
- 0% { background-position: 180% 0; }
20
- 100% { background-position: -180% 0; }
21
- }
22
- @media (prefers-reduced-motion: reduce) {
23
- /* No sweep at all — and the ring underneath is then the ONLY thing telling a
24
- building header from an idle one, which is why it is not decoration. */
25
- .${SWEEP_CLASS}-move { animation: none; background-position: 50% 0; opacity: 0.55; }
26
- }
27
- `;
28
- export function CodingIndicator({ active, label = "coding" }) {
29
- if (!active)
30
- return null;
31
- return (React.createElement("span", { "data-testid": "coding-indicator", className: SWEEP_CLASS, "aria-hidden": false },
32
- React.createElement("style", null, CSS),
33
- React.createElement("span", { "aria-hidden": true, style: {
34
- position: "absolute",
35
- inset: 0,
36
- borderRadius: "inherit",
37
- boxShadow: `inset 0 0 0 2px ${RING}`,
38
- } }),
39
- React.createElement("span", { "aria-hidden": true, className: `${SWEEP_CLASS}-move` }),
40
- React.createElement("span", { role: "status", style: {
41
- position: "absolute",
42
- width: 1,
43
- height: 1,
44
- margin: -1,
45
- padding: 0,
46
- overflow: "hidden",
47
- clip: "rect(0 0 0 0)",
48
- clipPath: "inset(50%)",
49
- whiteSpace: "nowrap",
50
- border: 0,
51
- } }, label)));
52
- }
53
- //# sourceMappingURL=CodingIndicator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CodingIndicator.js","sourceRoot":"","sources":["../../jsr/components/CodingIndicator.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AA4C/B,MAAM,WAAW,GAAG,8BAA8B,CAAC;AAOnD,MAAM,IAAI,GAAG,qEAAqE,CAAC;AAEnF,MAAM,GAAG,GAAG;GACT,WAAW;;;;;;GAMX,WAAW;;;;;;;;;;;;;;KAcT,WAAW;;CAEf,CAAC;AASF,MAAM,UAAU,eAAe,CAAC,EAAE,MAAM,EAAE,KAAK,GAAG,QAAQ,EAAwB;IAKhF,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,OAAO,CACL,6CAAkB,kBAAkB,EAAC,SAAS,EAAE,WAAW,iBAAe,KAAK;QAC7E,mCAAQ,GAAG,CAAS;QAGpB,mDAEE,KAAK,EAAE;gBACL,QAAQ,EAAE,UAAU;gBACpB,KAAK,EAAE,CAAC;gBACR,YAAY,EAAE,SAAS;gBACvB,SAAS,EAAE,mBAAmB,IAAI,EAAE;aACrC,GACD;QACF,mDAAkB,SAAS,EAAE,GAAG,WAAW,OAAO,GAAI;QAItD,8BACE,IAAI,EAAC,QAAQ,EACb,KAAK,EAAE;gBACL,QAAQ,EAAE,UAAU;gBACpB,KAAK,EAAE,CAAC;gBACR,MAAM,EAAE,CAAC;gBACT,MAAM,EAAE,CAAC,CAAC;gBACV,OAAO,EAAE,CAAC;gBACV,QAAQ,EAAE,QAAQ;gBAClB,IAAI,EAAE,eAAe;gBACrB,QAAQ,EAAE,YAAY;gBACtB,UAAU,EAAE,QAAQ;gBACpB,MAAM,EAAE,CAAC;aACV,IAEA,KAAK,CACD,CACF,CACR,CAAC;AACJ,CAAC"}
@@ -1,15 +0,0 @@
1
- import React from "react";
2
- export interface CreditsDetailMenuProps {
3
- readonly plan?: "free" | "plus";
4
- readonly remaining?: number;
5
- readonly grantRemaining?: number;
6
- readonly grantIncluded?: number;
7
- readonly grantResetsAt?: number;
8
- readonly purchasedRemaining?: number;
9
- readonly loading?: boolean;
10
- readonly onManage?: () => void;
11
- readonly manageLabel?: string;
12
- readonly placement?: "up" | "down";
13
- readonly style?: React.CSSProperties;
14
- }
15
- export declare function CreditsDetailMenu({ plan, remaining, grantRemaining, grantIncluded, grantResetsAt, purchasedRemaining, loading, onManage, manageLabel, placement, style, }: CreditsDetailMenuProps): React.ReactElement;
@@ -1,97 +0,0 @@
1
- import React from "react";
2
- const LEDGER_LABEL = {
3
- fontSize: 11,
4
- textTransform: "uppercase",
5
- letterSpacing: "0.075em",
6
- fontWeight: 600,
7
- };
8
- const FIGURE_WORD = {
9
- fontSize: 10,
10
- textTransform: "uppercase",
11
- letterSpacing: "0.06em",
12
- fontWeight: 600,
13
- };
14
- const HEADLINE_NUM = { fontSize: 22, fontWeight: 700 };
15
- const PROSE = { fontSize: 12, lineHeight: 1.4, margin: "6px 0 0" };
16
- function formatCredits(n) {
17
- return n.toLocaleString("en-US");
18
- }
19
- function formatResetsDate(epochMs) {
20
- return new Date(epochMs).toLocaleDateString("en-US", { month: "short", day: "numeric" });
21
- }
22
- function grantSentence({ plan, grantIncluded, grantResetsAt, }) {
23
- const source = plan === "plus"
24
- ? `Your membership includes ${formatCredits(grantIncluded)} credits a month`
25
- : `Every account includes ${formatCredits(grantIncluded)} credits a month`;
26
- return grantResetsAt === undefined ? `${source}.` : `${source}, and they refill on ${formatResetsDate(grantResetsAt)}.`;
27
- }
28
- function usageSentence(used, grantRemaining) {
29
- return `You’ve used ${formatCredits(used)} so far, leaving ${formatCredits(grantRemaining)}.`;
30
- }
31
- function purchasedSentence(purchasedRemaining) {
32
- if (purchasedRemaining > 0) {
33
- return `You also have ${formatCredits(purchasedRemaining)} purchased credits, which never expire.`;
34
- }
35
- return "Credits you buy on top of that never expire.";
36
- }
37
- export function CreditsDetailMenu({ plan, remaining, grantRemaining, grantIncluded, grantResetsAt, purchasedRemaining, loading, onManage, manageLabel, placement = "down", style, }) {
38
- const pending = loading === true || remaining === undefined;
39
- const vertical = placement === "up" ? { bottom: "calc(100% + 8px)" } : { top: "calc(100% + 8px)" };
40
- const showGrant = grantRemaining !== undefined && grantIncluded !== undefined;
41
- const used = showGrant ? Math.max(0, grantIncluded - grantRemaining) : undefined;
42
- return (React.createElement("div", { role: "menu", "aria-label": "Credits", "data-testid": "credits-detail-menu", style: {
43
- position: "absolute",
44
- right: 0,
45
- width: 230,
46
- maxWidth: "calc(100vw - 48px)",
47
- background: "var(--color-light-background-00, #fff)",
48
- border: "1px solid var(--color-light-decorative-01, #ddd)",
49
- borderRadius: 12,
50
- boxShadow: "0 10px 36px rgba(0,0,0,0.28)",
51
- padding: 6,
52
- zIndex: 10,
53
- ...vertical,
54
- ...style,
55
- }, className: "text-light-primary dark:text-dark-primary" },
56
- React.createElement("div", { className: "text-light-secondary dark:text-dark-secondary", style: { fontSize: 11, padding: "4px 8px" } }, "Credits"),
57
- pending ? (React.createElement("div", { className: "text-light-secondary dark:text-dark-secondary text-sm", style: { padding: "6px 8px" } }, "Checking your credits\u2026")) : (React.createElement("div", { style: { padding: "2px 8px 6px", fontVariantNumeric: "tabular-nums" } },
58
- React.createElement("p", { style: { margin: 0 } },
59
- React.createElement("span", { style: HEADLINE_NUM }, formatCredits(remaining)),
60
- " ",
61
- React.createElement("span", { style: FIGURE_WORD }, "credits left")),
62
- showGrant && (React.createElement("p", { style: PROSE, "data-testid": "credits-grant-line" }, grantSentence({ plan, grantIncluded, grantResetsAt }))),
63
- used !== undefined && used > 0 && grantRemaining !== undefined && (React.createElement("p", { style: PROSE, "data-testid": "credits-usage-line" }, usageSentence(used, grantRemaining))),
64
- purchasedRemaining !== undefined && (plan === "plus" || purchasedRemaining > 0) && (React.createElement("p", { style: PROSE, "data-testid": "credits-purchased-line" }, purchasedSentence(purchasedRemaining))))),
65
- React.createElement("div", { style: { display: "flex", alignItems: "center", padding: "2px 8px 4px" } },
66
- React.createElement("span", { "aria-hidden": true, style: { width: 1, height: 14, background: "currentColor", opacity: 0.3, marginRight: 8 } }),
67
- React.createElement("span", { style: LEDGER_LABEL }, plan === "plus" ? "Vibes Plus · $5/mo" : "Free plan")),
68
- onManage && (React.createElement(React.Fragment, null,
69
- React.createElement("div", { style: { height: 1, background: "var(--color-light-decorative-00, #eee)", margin: "6px 0" } }),
70
- React.createElement(MenuRow, { label: manageLabel ?? "Manage credits", onClick: onManage })))));
71
- }
72
- function MenuRow({ label, onClick }) {
73
- return (React.createElement("button", { type: "button", role: "menuitem", onClick: onClick, style: {
74
- display: "flex",
75
- alignItems: "center",
76
- gap: 8,
77
- width: "100%",
78
- textAlign: "left",
79
- padding: "7px 8px",
80
- borderRadius: 8,
81
- border: "none",
82
- cursor: "pointer",
83
- background: "transparent",
84
- }, className: "text-light-primary dark:text-dark-primary" },
85
- React.createElement("span", { "aria-hidden": true, style: {
86
- width: 24,
87
- height: 24,
88
- borderRadius: "50%",
89
- display: "flex",
90
- alignItems: "center",
91
- justifyContent: "center",
92
- fontSize: 13,
93
- flexShrink: 0,
94
- } }, "\u25CE"),
95
- React.createElement("span", { className: "text-sm", style: { flex: 1 } }, label)));
96
- }
97
- //# sourceMappingURL=CreditsDetailMenu.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CreditsDetailMenu.js","sourceRoot":"","sources":["../../jsr/components/CreditsDetailMenu.tsx"],"names":[],"mappings":"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"}
@@ -1,15 +0,0 @@
1
- import React from "react";
2
- export interface CreditsRingViewProps {
3
- readonly remaining?: number;
4
- readonly grantIncluded?: number;
5
- readonly loading?: boolean;
6
- readonly onClick?: () => void;
7
- readonly expanded?: boolean;
8
- readonly label?: string;
9
- readonly size?: number;
10
- readonly style?: React.CSSProperties;
11
- }
12
- export declare function creditsRingDenominator(remaining?: number, grantIncluded?: number): number;
13
- export declare function formatRingNumeral(n: number): string;
14
- export declare function creditsRingTone(remaining: number, denominator: number): "healthy" | "low" | "empty";
15
- export declare function CreditsRingView({ remaining, grantIncluded, loading, onClick, expanded, label, size, style, }: CreditsRingViewProps): React.ReactElement;
@@ -1,77 +0,0 @@
1
- import React from "react";
2
- export function creditsRingDenominator(remaining, grantIncluded) {
3
- return Math.max(1, grantIncluded ?? 0, remaining ?? 0);
4
- }
5
- export function formatRingNumeral(n) {
6
- if (n >= 10000)
7
- return `${Math.floor(n / 1000)}k`;
8
- if (n >= 1000) {
9
- const tenths = Math.floor(n / 100) / 10;
10
- return `${tenths}k`;
11
- }
12
- return String(Math.max(0, Math.round(n)));
13
- }
14
- export function creditsRingTone(remaining, denominator) {
15
- if (remaining <= 0)
16
- return "empty";
17
- return remaining / denominator <= 0.25 ? "low" : "healthy";
18
- }
19
- const TONE_COLOR = {
20
- healthy: "var(--vibes-blue, #3b82f6)",
21
- low: "#d97706",
22
- empty: "#dc2626",
23
- };
24
- export function CreditsRingView({ remaining, grantIncluded, loading, onClick, expanded, label, size = 28, style, }) {
25
- const pending = loading === true || remaining === undefined;
26
- const denominator = creditsRingDenominator(remaining, grantIncluded);
27
- const tone = pending ? "healthy" : creditsRingTone(remaining, denominator);
28
- const fraction = pending ? 0 : Math.min(1, Math.max(0, remaining / denominator));
29
- const stroke = Math.max(2, Math.round(size * 0.11));
30
- const radius = (size - stroke) / 2;
31
- const circumference = 2 * Math.PI * radius;
32
- const dashOffset = circumference * (1 - fraction);
33
- const accessibleLabel = label ?? (pending ? "Checking your credits" : `Credits: ${remaining.toLocaleString("en-US")} left`);
34
- const interactive = onClick !== undefined;
35
- const content = (React.createElement(React.Fragment, null,
36
- React.createElement("svg", { "aria-hidden": "true", width: size, height: size, viewBox: `0 0 ${size} ${size}`, style: { display: "block", transform: "rotate(-90deg)" } },
37
- React.createElement("circle", { cx: size / 2, cy: size / 2, r: radius, fill: "none", stroke: "currentColor", strokeOpacity: 0.18, strokeWidth: stroke }),
38
- !pending && (React.createElement("circle", { "data-testid": "credits-ring-arc", cx: size / 2, cy: size / 2, r: radius, fill: "none", stroke: TONE_COLOR[tone], strokeWidth: stroke, strokeLinecap: "round", strokeDasharray: circumference, strokeDashoffset: dashOffset }))),
39
- !pending && (React.createElement("span", { style: {
40
- position: "absolute",
41
- inset: 0,
42
- display: "flex",
43
- alignItems: "center",
44
- justifyContent: "center",
45
- fontSize: Math.max(8, Math.round(size * 0.32)),
46
- fontWeight: 700,
47
- lineHeight: 1,
48
- fontVariantNumeric: "tabular-nums",
49
- letterSpacing: "-0.02em",
50
- ...(tone === "healthy" ? {} : { color: TONE_COLOR[tone] }),
51
- } }, formatRingNumeral(remaining)))));
52
- const box = {
53
- position: "relative",
54
- display: "inline-flex",
55
- alignItems: "center",
56
- justifyContent: "center",
57
- width: size,
58
- height: size,
59
- flexShrink: 0,
60
- padding: 0,
61
- border: "none",
62
- background: "transparent",
63
- color: "var(--color-light-primary, light-dark(#3a3a3a, #e0e0e0))",
64
- colorScheme: "light dark",
65
- opacity: pending ? 0.55 : 1,
66
- cursor: interactive ? "pointer" : "default",
67
- ...style,
68
- };
69
- if (!interactive) {
70
- return (React.createElement("span", { role: "img", "aria-label": accessibleLabel, "aria-busy": pending ? "true" : undefined, style: box }, content));
71
- }
72
- return (React.createElement("button", { type: "button", "aria-haspopup": "menu", "aria-expanded": expanded ?? false, "aria-label": accessibleLabel, "aria-busy": pending ? "true" : undefined, onClick: (e) => {
73
- e.stopPropagation();
74
- onClick();
75
- }, style: box }, content));
76
- }
77
- //# sourceMappingURL=CreditsRingView.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CreditsRingView.js","sourceRoot":"","sources":["../../jsr/components/CreditsRingView.tsx"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- import * as React from "react";
2
- import { type EditorTabKey } from "./editor-tabs.js";
3
- import { type ViewerStandingState } from "./ViewerStandingView.js";
4
- export type { EditorTabKey } from "./editor-tabs.js";
5
- export declare function EditorTabStrip({ tab, onTab, standing, disabledTabs, }: {
6
- tab: EditorTabKey;
7
- onTab: (t: EditorTabKey) => void;
8
- standing?: ViewerStandingState;
9
- disabledTabs?: readonly EditorTabKey[];
10
- }): React.JSX.Element;
@@ -1,15 +0,0 @@
1
- import * as React from "react";
2
- import { EDITOR_TAB_DEFINITIONS, isEditorTabKey } from "./editor-tabs.js";
3
- import { SubTabStrip } from "./SubTabStrip.js";
4
- import { ViewerStandingGlyph, viewerStandingCopy } from "./ViewerStandingView.js";
5
- export function EditorTabStrip({ tab, onTab, standing, disabledTabs = [], }) {
6
- const copy = viewerStandingCopy(standing ?? {});
7
- return (React.createElement(SubTabStrip, { ariaLabel: "Vibe editor", active: tab, compact: true, disabledKeys: disabledTabs, onSelect: (key) => {
8
- if (isEditorTabKey(key))
9
- onTab(key);
10
- }, tabs: EDITOR_TAB_DEFINITIONS.map(({ key, label }) => key === "standing"
11
- ?
12
- { key, label: copy.label, icon: React.createElement(ViewerStandingGlyph, { tier: copy.tier }) }
13
- : { key, label }) }));
14
- }
15
- //# sourceMappingURL=EditorTabStrip.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EditorTabStrip.js","sourceRoot":"","sources":["../../jsr/components/EditorTabStrip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAqB,MAAM,kBAAkB,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAA4B,MAAM,yBAAyB,CAAC;AAW5G,MAAM,UAAU,cAAc,CAAC,EAC7B,GAAG,EACH,KAAK,EACL,QAAQ,EACR,YAAY,GAAG,EAAE,GASlB;IACC,MAAM,IAAI,GAAG,kBAAkB,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IAChD,OAAO,CACL,oBAAC,WAAW,IACV,SAAS,EAAC,aAAa,EACvB,MAAM,EAAE,GAAG,EACX,OAAO,QACP,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE;YAChB,IAAI,cAAc,CAAC,GAAG,CAAC;gBAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QACtC,CAAC,EACD,IAAI,EAAE,sBAAsB,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAClD,GAAG,KAAK,UAAU;YAChB,CAAC;gBAGC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,oBAAC,mBAAmB,IAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAI,EAAE;YAC5E,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CACnB,GACD,CACH,CAAC;AACJ,CAAC"}
@@ -1,9 +0,0 @@
1
- import * as React from "react";
2
- export declare function CopyLinkIconButton({ onCopy, color, }: {
3
- readonly onCopy: () => void | Promise<void>;
4
- readonly color?: string;
5
- }): React.JSX.Element;
6
- export declare function ShareLinkIconButton({ onShare, color }: {
7
- readonly onShare: () => void;
8
- readonly color?: string;
9
- }): React.JSX.Element;
@@ -1,72 +0,0 @@
1
- import * as React from "react";
2
- import { useEffect, useState } from "react";
3
- const LINK = "var(--accent, light-dark(#1d4ed8, #60a5fa))";
4
- export function CopyLinkIconButton({ onCopy, color = LINK, }) {
5
- const [copied, setCopied] = useState(false);
6
- useEffect(() => {
7
- if (!copied)
8
- return undefined;
9
- const timer = setTimeout(() => setCopied(false), 2000);
10
- return () => clearTimeout(timer);
11
- }, [copied]);
12
- return (React.createElement(React.Fragment, null,
13
- React.createElement(LinkIconButton, { testId: "copy-link-icon", label: copied ? "Copied" : "Copy link", color: color, onClick: () => {
14
- void (async () => {
15
- try {
16
- await onCopy();
17
- setCopied(true);
18
- }
19
- catch {
20
- setCopied(false);
21
- }
22
- })();
23
- } }, copied ? React.createElement(CheckGlyph, null) : React.createElement(CopyGlyph, null)),
24
- copied && (React.createElement("span", { "data-testid": "copy-link-copied", style: { fontSize: 10, opacity: 0.7, whiteSpace: "nowrap" } }, "Copied"))));
25
- }
26
- export function ShareLinkIconButton({ onShare, color = LINK }) {
27
- return (React.createElement(LinkIconButton, { testId: "share-link-icon", label: "Share link", color: color, onClick: onShare },
28
- React.createElement(ShareGlyph, null)));
29
- }
30
- function LinkIconButton({ testId, label, color, onClick, children, }) {
31
- return (React.createElement("button", { type: "button", "data-testid": testId, "aria-label": label, title: label, onClick: onClick, style: {
32
- flexShrink: 0,
33
- display: "inline-flex",
34
- alignItems: "center",
35
- justifyContent: "center",
36
- width: 24,
37
- height: 24,
38
- margin: "-6px 0",
39
- borderRadius: 4,
40
- border: "none",
41
- background: "none",
42
- padding: 0,
43
- color,
44
- cursor: "pointer",
45
- } }, children));
46
- }
47
- const GLYPH = {
48
- width: 12,
49
- height: 12,
50
- viewBox: "0 0 24 24",
51
- fill: "none",
52
- stroke: "currentColor",
53
- strokeWidth: 2,
54
- strokeLinecap: "round",
55
- strokeLinejoin: "round",
56
- };
57
- function CopyGlyph() {
58
- return (React.createElement("svg", { ...GLYPH, "aria-hidden": true },
59
- React.createElement("rect", { x: "9", y: "9", width: "12", height: "12", rx: "2" }),
60
- React.createElement("path", { d: "M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1" })));
61
- }
62
- function CheckGlyph() {
63
- return (React.createElement("svg", { ...GLYPH, "aria-hidden": true },
64
- React.createElement("path", { d: "M20 6 9 17l-5-5" })));
65
- }
66
- function ShareGlyph() {
67
- return (React.createElement("svg", { ...GLYPH, "aria-hidden": true },
68
- React.createElement("path", { d: "M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8" }),
69
- React.createElement("path", { d: "m16 6-4-4-4 4" }),
70
- React.createElement("path", { d: "M12 2v13" })));
71
- }
72
- //# sourceMappingURL=LinkLineControls.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LinkLineControls.js","sourceRoot":"","sources":["../../jsr/components/LinkLineControls.tsx"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- import React from "react";
2
- export interface MadeHereViewProps {
3
- readonly appTitle?: string;
4
- readonly ownerHandle?: string;
5
- readonly onMakeYours: () => void;
6
- readonly onDismiss: () => void;
7
- }
8
- export declare function MadeHereView(props: MadeHereViewProps): React.JSX.Element;
@@ -1,37 +0,0 @@
1
- import React from "react";
2
- export function MadeHereView(props) {
3
- const title = props.appTitle?.trim();
4
- const name = title === undefined || title === "" ? "This app" : title;
5
- const dismissLabel = title === undefined || title === "" ? "Keep using this app" : `Keep using ${title}`;
6
- return (React.createElement("div", { "data-testid": "made-here-view", style: { padding: "6px 2px 10px" } },
7
- React.createElement("div", { className: "text-light-primary dark:text-dark-primary", style: { fontSize: 19, fontWeight: 600, lineHeight: 1.25, margin: "0 0 8px" } },
8
- name,
9
- " was made on Vibes DIY."),
10
- React.createElement("p", { className: "text-light-secondary dark:text-dark-secondary", style: { fontSize: 14, lineHeight: 1.45, margin: "0 0 4px" } },
11
- props.ownerHandle
12
- ? `@${props.ownerHandle} described it in plain words and got a real app. `
13
- : "Someone described it in plain words and got a real app. ",
14
- "You can make one too \u2014 say what you want and it gets built."),
15
- React.createElement("div", { style: { display: "flex", flexDirection: "column", gap: 8, marginTop: 14 } },
16
- React.createElement("button", { type: "button", "data-testid": "made-here-make-yours", onClick: props.onMakeYours, style: {
17
- background: "var(--vibes-blue, #3b82f6)",
18
- color: "#ffffff",
19
- border: "1px solid var(--vibes-blue, #3b82f6)",
20
- borderRadius: 10,
21
- padding: "10px 14px",
22
- font: "inherit",
23
- fontSize: 15,
24
- fontWeight: 600,
25
- cursor: "pointer",
26
- } }, "Make your own"),
27
- React.createElement("button", { type: "button", "data-testid": "made-here-dismiss", onClick: props.onDismiss, className: "text-light-secondary dark:text-dark-secondary", style: {
28
- background: "none",
29
- border: "1px solid var(--color-light-decorative-00, #e5e5e5)",
30
- borderRadius: 10,
31
- padding: "10px 14px",
32
- font: "inherit",
33
- fontSize: 15,
34
- cursor: "pointer",
35
- } }, dismissLabel))));
36
- }
37
- //# sourceMappingURL=MadeHereView.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MadeHereView.js","sourceRoot":"","sources":["../../jsr/components/MadeHereView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAqC1B,MAAM,UAAU,YAAY,CAAC,KAAwB;IACnD,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;IACrC,MAAM,IAAI,GAAG,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC;IACtE,MAAM,YAAY,GAAG,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,cAAc,KAAK,EAAE,CAAC;IACzG,OAAO,CACL,4CAAiB,gBAAgB,EAAC,KAAK,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE;QAClE,6BACE,SAAS,EAAC,2CAA2C,EAGrD,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE;YAE5E,IAAI;sCACD;QACN,2BAAG,SAAS,EAAC,+CAA+C,EAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE;YACtH,KAAK,CAAC,WAAW;gBAChB,CAAC,CAAC,IAAI,KAAK,CAAC,WAAW,mDAAmD;gBAC1E,CAAC,CAAC,0DAA0D;+EAE5D;QACJ,6BAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE;YAC7E,gCACE,IAAI,EAAC,QAAQ,iBACD,sBAAsB,EAClC,OAAO,EAAE,KAAK,CAAC,WAAW,EAC1B,KAAK,EAAE;oBACL,UAAU,EAAE,4BAA4B;oBACxC,KAAK,EAAE,SAAS;oBAChB,MAAM,EAAE,sCAAsC;oBAC9C,YAAY,EAAE,EAAE;oBAChB,OAAO,EAAE,WAAW;oBACpB,IAAI,EAAE,SAAS;oBACf,QAAQ,EAAE,EAAE;oBACZ,UAAU,EAAE,GAAG;oBACf,MAAM,EAAE,SAAS;iBAClB,oBAGM;YACT,gCACE,IAAI,EAAC,QAAQ,iBACD,mBAAmB,EAC/B,OAAO,EAAE,KAAK,CAAC,SAAS,EACxB,SAAS,EAAC,+CAA+C,EACzD,KAAK,EAAE;oBACL,UAAU,EAAE,MAAM;oBAClB,MAAM,EAAE,qDAAqD;oBAC7D,YAAY,EAAE,EAAE;oBAChB,OAAO,EAAE,WAAW;oBACpB,IAAI,EAAE,SAAS;oBACf,QAAQ,EAAE,EAAE;oBACZ,MAAM,EAAE,SAAS;iBAClB,IAEA,YAAY,CACN,CACL,CACF,CACP,CAAC;AACJ,CAAC"}
@@ -1,19 +0,0 @@
1
- import * as React from "react";
2
- export type RecentVibeStatus = "draft" | "published" | "unpublished";
3
- export interface RecentVibeListItem {
4
- readonly id: string;
5
- readonly appSlug: string;
6
- readonly title?: string;
7
- readonly status?: RecentVibeStatus;
8
- readonly pinned?: boolean;
9
- readonly screenshotUrl?: string;
10
- readonly updatedLabel?: string;
11
- }
12
- export interface RecentVibesListProps {
13
- readonly items: readonly RecentVibeListItem[];
14
- readonly loading?: boolean;
15
- readonly emptyText?: string;
16
- readonly onOpenVibe?: (item: RecentVibeListItem) => void;
17
- readonly onTogglePin?: (item: RecentVibeListItem) => void;
18
- }
19
- export declare function RecentVibesList(props: RecentVibesListProps): React.JSX.Element;