@vibes.diy/use-vibes-base 0.18.27-dev → 0.19.0-dev-simpler

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 (95) hide show
  1. package/contexts/VibeContext.d.ts +0 -4
  2. package/contexts/VibeContext.js +4 -22
  3. package/contexts/VibeContext.js.map +1 -1
  4. package/index.d.ts +3 -24
  5. package/index.js +7 -24
  6. package/index.js.map +1 -1
  7. package/package.json +12 -19
  8. package/clerk-token-strategy.d.ts +0 -26
  9. package/clerk-token-strategy.js +0 -65
  10. package/clerk-token-strategy.js.map +0 -1
  11. package/components/BrutalistCard/BrutalistCard.d.ts +0 -10
  12. package/components/BrutalistCard/BrutalistCard.js +0 -15
  13. package/components/BrutalistCard/BrutalistCard.js.map +0 -1
  14. package/components/BrutalistCard/BrutalistCard.styles.d.ts +0 -4
  15. package/components/BrutalistCard/BrutalistCard.styles.js +0 -73
  16. package/components/BrutalistCard/BrutalistCard.styles.js.map +0 -1
  17. package/components/BrutalistCard/index.d.ts +0 -3
  18. package/components/BrutalistCard/index.js +0 -2
  19. package/components/BrutalistCard/index.js.map +0 -1
  20. package/components/HiddenMenuWrapper/HiddenMenuWrapper.d.ts +0 -8
  21. package/components/HiddenMenuWrapper/HiddenMenuWrapper.js +0 -181
  22. package/components/HiddenMenuWrapper/HiddenMenuWrapper.js.map +0 -1
  23. package/components/HiddenMenuWrapper/HiddenMenuWrapper.styles.d.ts +0 -31
  24. package/components/HiddenMenuWrapper/HiddenMenuWrapper.styles.js +0 -112
  25. package/components/HiddenMenuWrapper/HiddenMenuWrapper.styles.js.map +0 -1
  26. package/components/LabelContainer/LabelContainer.d.ts +0 -9
  27. package/components/LabelContainer/LabelContainer.js +0 -10
  28. package/components/LabelContainer/LabelContainer.js.map +0 -1
  29. package/components/LabelContainer/LabelContainer.styles.d.ts +0 -7
  30. package/components/LabelContainer/LabelContainer.styles.js +0 -159
  31. package/components/LabelContainer/LabelContainer.styles.js.map +0 -1
  32. package/components/LabelContainer/index.d.ts +0 -2
  33. package/components/LabelContainer/index.js +0 -2
  34. package/components/LabelContainer/index.js.map +0 -1
  35. package/components/VibeControl.d.ts +0 -13
  36. package/components/VibeControl.js +0 -74
  37. package/components/VibeControl.js.map +0 -1
  38. package/components/VibesButton/VibesButton.d.ts +0 -18
  39. package/components/VibesButton/VibesButton.js +0 -47
  40. package/components/VibesButton/VibesButton.js.map +0 -1
  41. package/components/VibesButton/VibesButton.styles.d.ts +0 -7
  42. package/components/VibesButton/VibesButton.styles.js +0 -98
  43. package/components/VibesButton/VibesButton.styles.js.map +0 -1
  44. package/components/VibesButton/index.d.ts +0 -1
  45. package/components/VibesButton/index.js +0 -2
  46. package/components/VibesButton/index.js.map +0 -1
  47. package/components/VibesPanel.d.ts +0 -9
  48. package/components/VibesPanel.js +0 -97
  49. package/components/VibesPanel.js.map +0 -1
  50. package/components/VibesPanel.styles.d.ts +0 -14
  51. package/components/VibesPanel.styles.js +0 -137
  52. package/components/VibesPanel.styles.js.map +0 -1
  53. package/components/VibesSwitch/VibesSwitch.d.ts +0 -9
  54. package/components/VibesSwitch/VibesSwitch.js +0 -68
  55. package/components/VibesSwitch/VibesSwitch.js.map +0 -1
  56. package/components/VibesSwitch/VibesSwitch.styles.d.ts +0 -4
  57. package/components/VibesSwitch/VibesSwitch.styles.js +0 -5
  58. package/components/VibesSwitch/VibesSwitch.styles.js.map +0 -1
  59. package/components/icons/BackIcon.d.ts +0 -9
  60. package/components/icons/BackIcon.js +0 -7
  61. package/components/icons/BackIcon.js.map +0 -1
  62. package/components/icons/InviteIcon.d.ts +0 -9
  63. package/components/icons/InviteIcon.js +0 -7
  64. package/components/icons/InviteIcon.js.map +0 -1
  65. package/components/icons/LoginIcon.d.ts +0 -9
  66. package/components/icons/LoginIcon.js +0 -7
  67. package/components/icons/LoginIcon.js.map +0 -1
  68. package/components/icons/RemixIcon.d.ts +0 -9
  69. package/components/icons/RemixIcon.js +0 -7
  70. package/components/icons/RemixIcon.js.map +0 -1
  71. package/components/icons/SettingsIcon.d.ts +0 -9
  72. package/components/icons/SettingsIcon.js +0 -7
  73. package/components/icons/SettingsIcon.js.map +0 -1
  74. package/components/icons/index.d.ts +0 -5
  75. package/components/icons/index.js +0 -6
  76. package/components/icons/index.js.map +0 -1
  77. package/mounting/index.d.ts +0 -4
  78. package/mounting/index.js +0 -4
  79. package/mounting/index.js.map +0 -1
  80. package/mounting/mountVibeCode.d.ts +0 -15
  81. package/mounting/mountVibeCode.js +0 -66
  82. package/mounting/mountVibeCode.js.map +0 -1
  83. package/mounting/mountVibeWithCleanup.d.ts +0 -1
  84. package/mounting/mountVibeWithCleanup.js +0 -55
  85. package/mounting/mountVibeWithCleanup.js.map +0 -1
  86. package/mounting/types.d.ts +0 -10
  87. package/mounting/types.js +0 -7
  88. package/mounting/types.js.map +0 -1
  89. package/stories/VibeControl.stories.d.ts +0 -13
  90. package/stories/VibeControl.stories.js +0 -195
  91. package/stories/VibeControl.stories.js.map +0 -1
  92. package/styles/colors.css +0 -198
  93. package/vibe-app-mount.d.ts +0 -13
  94. package/vibe-app-mount.js +0 -39
  95. package/vibe-app-mount.js.map +0 -1
@@ -1,181 +0,0 @@
1
- import React, { useRef, useState, useEffect, useLayoutEffect } from 'react';
2
- import { getWrapperStyle, getMenuStyle, getContentWrapperStyle, getContentStyle, getToggleButtonStyle, getInnerContentWrapperStyle, } from './HiddenMenuWrapper.styles.js';
3
- import { VibesSwitch } from '../VibesSwitch/VibesSwitch.js';
4
- export function HiddenMenuWrapper({ children, menuContent, triggerBounce, showVibesSwitch = true, }) {
5
- const [menuOpen, setMenuOpen] = useState(false);
6
- const [menuHeight, setMenuHeight] = useState(0);
7
- const menuRef = useRef(null);
8
- const buttonRef = useRef(null);
9
- const menuContainerRef = useRef(null);
10
- const rafIdRef = useRef(null);
11
- const cancelRef = useRef(null);
12
- const [isBouncing, setIsBouncing] = useState(false);
13
- const [hasBouncedOnMount, setHasBouncedOnMount] = useState(false);
14
- useEffect(() => {
15
- if (!hasBouncedOnMount && !menuOpen) {
16
- const prefersReducedMotion = window.matchMedia?.('(prefers-reduced-motion: reduce)')?.matches || false;
17
- if (!prefersReducedMotion) {
18
- setIsBouncing(true);
19
- setTimeout(() => setIsBouncing(false), 800);
20
- }
21
- setHasBouncedOnMount(true);
22
- }
23
- }, [hasBouncedOnMount, menuOpen]);
24
- useEffect(() => {
25
- const styleId = 'vibes-drop-to-close-keyframes';
26
- const existingStyle = document.getElementById(styleId);
27
- if (!existingStyle) {
28
- const style = document.createElement('style');
29
- style.id = styleId;
30
- style.textContent = `
31
- @keyframes vibes-drop-to-close {
32
- 0% { transform: translateY(-400px); } /* Start pushed up */
33
- 10% { transform: translateY(0); } /* First big drop */
34
- 25% { transform: translateY(-175px); } /* First bounce back up */
35
- 35% { transform: translateY(0); } /* Second drop */
36
- 48% { transform: translateY(-75px); } /* Second bounce back up */
37
- 62% { transform: translateY(0); } /* Third drop */
38
- 72% { transform: translateY(-25px); } /* Third bounce back up */
39
- 80% { transform: translateY(0); } /* Fourth drop - faster */
40
- 82% { transform: translateY(-10px); } /* Fourth bounce back up - much faster */
41
- 88% { transform: translateY(0); } /* Fifth drop */
42
- 91% { transform: translateY(-5px); } /* Final tiny bounce back up */
43
- 95% { transform: translateY(0); } /* Final settle */
44
- 100% { transform: translateY(0); }
45
- }
46
- `;
47
- document.head.appendChild(style);
48
- }
49
- }, []);
50
- useEffect(() => {
51
- if (triggerBounce) {
52
- setIsBouncing(true);
53
- const timeout = setTimeout(() => setIsBouncing(false), 800);
54
- return () => clearTimeout(timeout);
55
- }
56
- }, [triggerBounce]);
57
- useEffect(() => {
58
- if (menuRef.current) {
59
- const next = menuRef.current.offsetHeight;
60
- setMenuHeight((prev) => (prev !== next ? next : prev));
61
- }
62
- }, [menuContent]);
63
- useEffect(() => {
64
- const handleKeyDown = (e) => {
65
- if (e.key === 'Escape' && menuOpen) {
66
- setMenuOpen(false);
67
- buttonRef.current?.focus();
68
- }
69
- if (menuOpen && e.key === 'Tab' && menuContainerRef.current) {
70
- const focusableElements = menuContainerRef.current.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');
71
- const first = focusableElements[0];
72
- const last = focusableElements[focusableElements.length - 1];
73
- if (!first || !last)
74
- return;
75
- if (e.shiftKey) {
76
- if (document.activeElement === first) {
77
- e.preventDefault();
78
- last.focus();
79
- }
80
- }
81
- else {
82
- if (document.activeElement === last) {
83
- e.preventDefault();
84
- first.focus();
85
- }
86
- }
87
- }
88
- };
89
- document.addEventListener('keydown', handleKeyDown);
90
- return () => document.removeEventListener('keydown', handleKeyDown);
91
- }, [menuOpen]);
92
- useEffect(() => {
93
- if (menuOpen) {
94
- const firstFocusable = menuRef.current?.querySelector('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');
95
- firstFocusable?.focus();
96
- }
97
- }, [menuOpen]);
98
- const useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;
99
- useIsomorphicLayoutEffect(() => {
100
- const menuEl = menuRef.current;
101
- if (!menuEl)
102
- return;
103
- const scheduleSetHeight = (h) => {
104
- if (rafIdRef.current != null && cancelRef.current) {
105
- cancelRef.current(rafIdRef.current);
106
- rafIdRef.current = null;
107
- }
108
- const run = () => setMenuHeight((prev) => (prev !== h ? h : prev));
109
- if (typeof requestAnimationFrame !== 'undefined') {
110
- const id = requestAnimationFrame(() => run());
111
- rafIdRef.current = id;
112
- cancelRef.current = (cancelId) => cancelAnimationFrame(cancelId);
113
- }
114
- else {
115
- const id = setTimeout(run, 0);
116
- rafIdRef.current = id;
117
- cancelRef.current = (cancelId) => clearTimeout(cancelId);
118
- }
119
- };
120
- scheduleSetHeight(menuEl.offsetHeight);
121
- if (typeof window.ResizeObserver !==
122
- 'undefined') {
123
- const RO = window.ResizeObserver;
124
- const resizeObserver = new RO(() => {
125
- scheduleSetHeight(menuEl.offsetHeight);
126
- });
127
- resizeObserver.observe(menuEl);
128
- return () => {
129
- resizeObserver.disconnect();
130
- if (rafIdRef.current != null && cancelRef.current) {
131
- cancelRef.current(rafIdRef.current);
132
- rafIdRef.current = null;
133
- }
134
- };
135
- }
136
- const mutationObserver = new MutationObserver(() => {
137
- scheduleSetHeight(menuEl.offsetHeight);
138
- });
139
- mutationObserver.observe(menuEl, { childList: true, subtree: true });
140
- const onResize = () => scheduleSetHeight(menuEl.offsetHeight);
141
- window.addEventListener('resize', onResize);
142
- window.addEventListener('orientationchange', onResize);
143
- return () => {
144
- mutationObserver.disconnect();
145
- window.removeEventListener('resize', onResize);
146
- window.removeEventListener('orientationchange', onResize);
147
- if (rafIdRef.current != null && cancelRef.current) {
148
- cancelRef.current(rafIdRef.current);
149
- rafIdRef.current = null;
150
- }
151
- };
152
- }, []);
153
- useEffect(() => {
154
- const menuEl = menuRef.current;
155
- if (!menuEl)
156
- return;
157
- const defer = (cb) => {
158
- if (typeof queueMicrotask === 'function') {
159
- queueMicrotask(cb);
160
- }
161
- else if (typeof requestAnimationFrame !== 'undefined') {
162
- requestAnimationFrame(cb);
163
- }
164
- else {
165
- setTimeout(cb, 0);
166
- }
167
- };
168
- defer(() => {
169
- const next = menuEl.offsetHeight;
170
- setMenuHeight((prev) => (prev !== next ? next : prev));
171
- });
172
- }, [menuOpen]);
173
- return (React.createElement("div", { style: getWrapperStyle() },
174
- React.createElement("div", { id: "hidden-menu", role: "dialog", "aria-modal": "true", "aria-label": "Hidden menu", "aria-hidden": !menuOpen, ref: menuRef, style: getMenuStyle() }, menuContent),
175
- React.createElement("div", { style: getContentWrapperStyle(menuHeight, menuOpen, isBouncing), ref: menuContainerRef },
176
- React.createElement("div", { style: getInnerContentWrapperStyle(menuOpen) },
177
- React.createElement("div", { style: getContentStyle() }, children))),
178
- showVibesSwitch && (React.createElement("button", { "aria-haspopup": "dialog", "aria-expanded": menuOpen, "aria-controls": "hidden-menu", ref: buttonRef, onClick: () => setMenuOpen(!menuOpen), style: getToggleButtonStyle() },
179
- React.createElement(VibesSwitch, { size: 80 })))));
180
- }
181
- //# sourceMappingURL=HiddenMenuWrapper.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"HiddenMenuWrapper.js","sourceRoot":"","sources":["../../../jsr/components/HiddenMenuWrapper/HiddenMenuWrapper.tsx"],"names":[],"mappings":"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"}
@@ -1,31 +0,0 @@
1
- import type { CSSProperties } from 'react';
2
- export declare const hiddenMenuTheme: {
3
- colors: {
4
- menuBg: string;
5
- menuText: string;
6
- contentBg: string;
7
- shadow: string;
8
- gridLineColor: string;
9
- };
10
- zIndex: {
11
- menu: number;
12
- content: number;
13
- toggle: number;
14
- };
15
- dimensions: {
16
- gridSize: string;
17
- padding: string;
18
- bottomOffset: string;
19
- };
20
- animation: {
21
- duration: string;
22
- easing: string;
23
- blurAmount: string;
24
- };
25
- };
26
- export declare const getWrapperStyle: () => CSSProperties;
27
- export declare const getMenuStyle: () => CSSProperties;
28
- export declare const getContentStyle: () => CSSProperties;
29
- export declare const getContentWrapperStyle: (menuHeight: number, menuOpen: boolean, isBouncing: boolean) => CSSProperties;
30
- export declare const getInnerContentWrapperStyle: (menuOpen: boolean) => CSSProperties;
31
- export declare const getToggleButtonStyle: () => CSSProperties;
@@ -1,112 +0,0 @@
1
- if (typeof document !== 'undefined') {
2
- const styleId = 'hidden-menu-wrapper-vars';
3
- if (!document.getElementById(styleId)) {
4
- const style = document.createElement('style');
5
- style.id = styleId;
6
- style.textContent = `
7
- :root {
8
- --hm-menu-bg: var(--vibes-gray-lightest);
9
- --hm-menu-text: var(--vibes-white);
10
- --hm-content-bg: #1e1e1e;
11
- --hm-shadow: rgba(0, 0, 0, 0.3);
12
- --hm-grid-line: rgba(255, 255, 255, 0.5);
13
- }
14
-
15
- @media (prefers-color-scheme: dark) {
16
- :root {
17
- --hm-menu-bg: #2a2a2a;
18
- --hm-menu-text: var(--vibes-gray-ultralight);
19
- --hm-content-bg: var(--vibes-near-black);
20
- --hm-shadow: rgba(255, 255, 255, 0.1);
21
- }
22
- }
23
- `;
24
- document.head.appendChild(style);
25
- }
26
- }
27
- export const hiddenMenuTheme = {
28
- colors: {
29
- menuBg: 'var(--hm-menu-bg, var(--vibes-gray-lightest))',
30
- menuText: 'var(--hm-menu-text, var(--vibes-white))',
31
- contentBg: 'var(--hm-content-bg, #1e1e1e)',
32
- shadow: 'var(--hm-shadow, rgba(0, 0, 0, 0.3))',
33
- gridLineColor: 'var(--hm-grid-line, rgba(255, 255, 255, 0.5))',
34
- },
35
- zIndex: {
36
- menu: 5,
37
- content: 10,
38
- toggle: 20,
39
- },
40
- dimensions: {
41
- gridSize: '40px',
42
- padding: '24px',
43
- bottomOffset: '16px',
44
- },
45
- animation: {
46
- duration: '0.4s',
47
- easing: 'ease',
48
- blurAmount: '4px',
49
- },
50
- };
51
- export const getWrapperStyle = () => ({
52
- position: 'relative',
53
- overflow: 'hidden',
54
- });
55
- export const getMenuStyle = () => ({
56
- position: 'fixed',
57
- bottom: 0,
58
- left: 0,
59
- right: 0,
60
- zIndex: hiddenMenuTheme.zIndex.menu,
61
- color: hiddenMenuTheme.colors.menuText,
62
- padding: hiddenMenuTheme.dimensions.padding,
63
- boxShadow: `0 -2px 10px ${hiddenMenuTheme.colors.shadow}`,
64
- backgroundColor: hiddenMenuTheme.colors.menuBg,
65
- backgroundImage: `
66
- linear-gradient(${hiddenMenuTheme.colors.gridLineColor} 1px, transparent 1px),
67
- linear-gradient(90deg, ${hiddenMenuTheme.colors.gridLineColor} 1px, transparent 1px)
68
- `,
69
- backgroundSize: hiddenMenuTheme.dimensions.gridSize + ' ' + hiddenMenuTheme.dimensions.gridSize,
70
- });
71
- export const getContentStyle = () => ({
72
- filter: 'none',
73
- width: '100%',
74
- height: '100%',
75
- });
76
- export const getContentWrapperStyle = (menuHeight, menuOpen, isBouncing) => ({
77
- position: 'fixed',
78
- top: 0,
79
- left: 0,
80
- right: 0,
81
- bottom: 0,
82
- zIndex: hiddenMenuTheme.zIndex.content,
83
- transition: isBouncing
84
- ? `filter 0.3s ${hiddenMenuTheme.animation.easing}`
85
- : `transform ${hiddenMenuTheme.animation.duration} ${hiddenMenuTheme.animation.easing}, filter 0.3s ${hiddenMenuTheme.animation.easing}`,
86
- transform: menuOpen ? `translateY(-${menuHeight}px)` : 'translateY(0)',
87
- overflowY: 'auto',
88
- borderTopColor: hiddenMenuTheme.colors.menuBg,
89
- borderTopWidth: '1px',
90
- borderTopStyle: 'solid',
91
- boxShadow: `0 -2px 10px ${hiddenMenuTheme.colors.shadow}`,
92
- backgroundColor: hiddenMenuTheme.colors.contentBg,
93
- animation: isBouncing
94
- ? 'vibes-drop-to-close 0.8s cubic-bezier(0.25, 0.46, 0.45, 0.94)'
95
- : undefined,
96
- willChange: isBouncing ? 'transform' : undefined,
97
- });
98
- export const getInnerContentWrapperStyle = (menuOpen) => ({
99
- filter: menuOpen ? `blur(${hiddenMenuTheme.animation.blurAmount})` : 'none',
100
- width: '100%',
101
- height: '100%',
102
- });
103
- export const getToggleButtonStyle = () => ({
104
- position: 'fixed',
105
- bottom: hiddenMenuTheme.dimensions.bottomOffset,
106
- right: 0,
107
- zIndex: hiddenMenuTheme.zIndex.toggle,
108
- backgroundColor: 'transparent',
109
- border: 'none',
110
- cursor: 'pointer',
111
- });
112
- //# sourceMappingURL=HiddenMenuWrapper.styles.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"HiddenMenuWrapper.styles.js","sourceRoot":"","sources":["../../../jsr/components/HiddenMenuWrapper/HiddenMenuWrapper.styles.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- import React from 'react';
2
- export interface LabelContainerProps {
3
- label?: string;
4
- children: React.ReactNode;
5
- style?: React.CSSProperties;
6
- className?: string;
7
- disappear?: boolean;
8
- }
9
- export declare function LabelContainer({ label, children, style, className, disappear }: LabelContainerProps): React.JSX.Element;
@@ -1,10 +0,0 @@
1
- import React from 'react';
2
- import { getResponsiveContainerStyle, getResponsiveLabelStyle, getResponsiveButtonWrapperStyle, } from './LabelContainer.styles.js';
3
- import { useMobile } from '../../hooks/useMobile.js';
4
- export function LabelContainer({ label, children, style, className, disappear = false, }) {
5
- const isMobile = useMobile();
6
- return (React.createElement("div", { style: { ...getResponsiveContainerStyle(isMobile), ...style }, className: className },
7
- label && React.createElement("div", { style: getResponsiveLabelStyle(isMobile, disappear) }, label),
8
- React.createElement("div", { style: getResponsiveButtonWrapperStyle(isMobile, disappear) }, children)));
9
- }
10
- //# sourceMappingURL=LabelContainer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LabelContainer.js","sourceRoot":"","sources":["../../../jsr/components/LabelContainer/LabelContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,2BAA2B,EAC3B,uBAAuB,EACvB,+BAA+B,GAChC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAqBrD,MAAM,UAAU,cAAc,CAAC,EAC7B,KAAK,EACL,QAAQ,EACR,KAAK,EACL,SAAS,EACT,SAAS,GAAG,KAAK,GACG,EAAE;IACtB,MAAM,QAAQ,GAAG,SAAS,EAAE,CAAC;IAE7B,OAAO,CACL,6BAAK,KAAK,EAAE,EAAE,GAAG,2BAA2B,CAAC,QAAQ,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS;QACrF,KAAK,IAAI,6BAAK,KAAK,EAAE,uBAAuB,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAG,KAAK,CAAO;QACjF,6BAAK,KAAK,EAAE,+BAA+B,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAG,QAAQ,CAAO,CAC9E,CACP,CAAC;AAAA,CACH"}
@@ -1,7 +0,0 @@
1
- import type React from 'react';
2
- export declare function getContainerStyle(): React.CSSProperties;
3
- export declare function getLabelStyle(): React.CSSProperties;
4
- export declare function getButtonWrapperStyle(): React.CSSProperties;
5
- export declare function getResponsiveLabelStyle(isMobile: boolean, disappear?: boolean): React.CSSProperties;
6
- export declare function getResponsiveButtonWrapperStyle(isMobile: boolean, disappear?: boolean): React.CSSProperties;
7
- export declare function getResponsiveContainerStyle(isMobile: boolean): React.CSSProperties;
@@ -1,159 +0,0 @@
1
- export function getContainerStyle() {
2
- return {
3
- position: 'relative',
4
- display: 'inline-flex',
5
- alignItems: 'stretch',
6
- width: 'auto',
7
- marginBottom: '40px',
8
- };
9
- }
10
- export function getLabelStyle() {
11
- return {
12
- background: 'var(--vibes-card-bg)',
13
- border: '2px solid var(--vibes-card-border)',
14
- borderLeft: 'none',
15
- borderTopRightRadius: '8px',
16
- borderBottomRightRadius: '8px',
17
- padding: '12px 8px',
18
- fontWeight: 700,
19
- fontSize: '14px',
20
- textTransform: 'uppercase',
21
- letterSpacing: '1px',
22
- whiteSpace: 'nowrap',
23
- color: 'var(--vibes-card-text)',
24
- writingMode: 'vertical-rl',
25
- transform: 'rotate(180deg)',
26
- display: 'flex',
27
- alignItems: 'center',
28
- justifyContent: 'center',
29
- flexShrink: 0,
30
- margin: '32px 0px',
31
- };
32
- }
33
- export function getButtonWrapperStyle() {
34
- return {
35
- background: 'var(--vibes-card-bg)',
36
- border: '2px solid var(--vibes-card-border)',
37
- borderRadius: '8px',
38
- padding: '24px 24px 32px 24px',
39
- display: 'flex',
40
- alignItems: 'center',
41
- justifyContent: 'center',
42
- width: 'auto',
43
- };
44
- }
45
- export function getResponsiveLabelStyle(isMobile, disappear = false) {
46
- if (isMobile) {
47
- if (disappear) {
48
- return {
49
- display: 'none',
50
- };
51
- }
52
- return {
53
- background: 'var(--vibes-card-bg)',
54
- border: '2px solid var(--vibes-card-border)',
55
- borderLeft: '2px solid var(--vibes-card-border)', // Explicitly set to override desktop style
56
- borderBottom: 'none',
57
- borderTopLeftRadius: '8px',
58
- borderTopRightRadius: '8px',
59
- borderBottomRightRadius: '0', // Explicitly reset desktop radius
60
- padding: '8px 12px',
61
- fontWeight: 700,
62
- fontSize: '14px',
63
- textTransform: 'uppercase',
64
- letterSpacing: '1px',
65
- whiteSpace: 'nowrap',
66
- color: 'var(--vibes-card-text)',
67
- writingMode: 'horizontal-tb', // Explicitly reset from vertical-rl
68
- transform: 'none', // Explicitly reset rotation
69
- display: 'flex',
70
- alignItems: 'center',
71
- justifyContent: 'center',
72
- flexShrink: 0,
73
- width: 'calc(100% - 64px)',
74
- margin: '0px 32px',
75
- };
76
- }
77
- return {
78
- background: 'var(--vibes-card-bg)',
79
- border: '2px solid var(--vibes-card-border)',
80
- borderLeft: 'none',
81
- borderBottom: '2px solid var(--vibes-card-border)', // Explicitly set for desktop
82
- borderTopRightRadius: '8px',
83
- borderBottomRightRadius: '8px',
84
- borderTopLeftRadius: '0', // Explicitly set for desktop
85
- padding: '12px 8px',
86
- fontWeight: 700,
87
- fontSize: '14px',
88
- textTransform: 'uppercase',
89
- letterSpacing: '1px',
90
- whiteSpace: 'nowrap',
91
- color: 'var(--vibes-card-text)',
92
- writingMode: 'vertical-rl',
93
- transform: 'rotate(180deg)',
94
- display: 'flex',
95
- alignItems: 'center',
96
- justifyContent: 'center',
97
- flexShrink: 0,
98
- margin: '32px 0px',
99
- width: 'auto',
100
- };
101
- }
102
- export function getResponsiveButtonWrapperStyle(isMobile, disappear = false) {
103
- if (isMobile && disappear) {
104
- return {
105
- background: 'transparent',
106
- border: 'none',
107
- borderRadius: '0', // Explicitly reset
108
- padding: '0',
109
- paddingBottom: '24px',
110
- display: 'flex',
111
- alignItems: 'center',
112
- justifyContent: 'center',
113
- width: 'auto',
114
- };
115
- }
116
- if (isMobile && !disappear) {
117
- return {
118
- background: 'var(--vibes-card-bg)',
119
- border: '2px solid var(--vibes-card-border)',
120
- borderRadius: '8px',
121
- padding: '24px 24px 32px 24px',
122
- display: 'flex',
123
- alignItems: 'center',
124
- justifyContent: 'center',
125
- width: '100%',
126
- };
127
- }
128
- return {
129
- background: 'var(--vibes-card-bg)',
130
- border: '2px solid var(--vibes-card-border)',
131
- borderRadius: '8px',
132
- padding: '24px 24px 32px 24px',
133
- display: 'flex',
134
- alignItems: 'center',
135
- justifyContent: 'center',
136
- width: 'auto',
137
- };
138
- }
139
- export function getResponsiveContainerStyle(isMobile) {
140
- if (isMobile) {
141
- return {
142
- position: 'relative',
143
- display: 'inline-flex',
144
- alignItems: 'stretch',
145
- flexDirection: 'column',
146
- width: '100%',
147
- marginBottom: '40px',
148
- };
149
- }
150
- return {
151
- position: 'relative',
152
- display: 'inline-flex',
153
- alignItems: 'stretch',
154
- flexDirection: 'row', // Explicitly set to override mobile column
155
- width: 'auto',
156
- marginBottom: '40px',
157
- };
158
- }
159
- //# sourceMappingURL=LabelContainer.styles.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LabelContainer.styles.js","sourceRoot":"","sources":["../../../jsr/components/LabelContainer/LabelContainer.styles.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export { LabelContainer } from './LabelContainer.js';
2
- export type { LabelContainerProps } from './LabelContainer.js';
@@ -1,2 +0,0 @@
1
- export { LabelContainer } from './LabelContainer.js';
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../jsr/components/LabelContainer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
@@ -1,13 +0,0 @@
1
- import * as React from 'react';
2
- import { VibeControlClasses } from '../utils/vibe-control-styles.js';
3
- export interface VibeControlProps {
4
- readonly label?: string;
5
- readonly position?: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left';
6
- readonly onOpen?: () => void;
7
- readonly onClose?: () => void;
8
- readonly children?: React.ReactNode;
9
- readonly classes?: VibeControlClasses;
10
- readonly visible?: boolean;
11
- }
12
- export declare function VibeControl({ label, position, onOpen, onClose, children, classes, visible }: VibeControlProps): React.ReactElement | null;
13
- export default VibeControl;
@@ -1,74 +0,0 @@
1
- import * as React from 'react';
2
- import * as ReactDOM from 'react-dom';
3
- import { createVibeControlStyles, defaultVibeControlClasses, } from '../utils/vibe-control-styles.js';
4
- export function VibeControl({ label = 'Open Vibes', position = 'bottom-right', onOpen, onClose, children, classes = defaultVibeControlClasses, visible = true, }) {
5
- const [isOpen, setIsOpen] = React.useState(false);
6
- const [isHoveringButton, setIsHoveringButton] = React.useState(false);
7
- const [isHoveringClose, setIsHoveringClose] = React.useState(false);
8
- const handleOpen = React.useCallback(() => {
9
- setIsOpen(true);
10
- onOpen?.();
11
- }, [onOpen]);
12
- const handleClose = React.useCallback(() => {
13
- setIsOpen(false);
14
- onClose?.();
15
- }, [onClose]);
16
- React.useEffect(() => {
17
- const handleEscape = (event) => {
18
- if (event.key === 'Escape' && isOpen) {
19
- handleClose();
20
- }
21
- };
22
- if (isOpen) {
23
- document.addEventListener('keydown', handleEscape);
24
- document.body.style.overflow = 'hidden';
25
- }
26
- else {
27
- document.body.style.overflow = '';
28
- }
29
- return () => {
30
- document.removeEventListener('keydown', handleEscape);
31
- document.body.style.overflow = '';
32
- };
33
- }, [isOpen, handleClose]);
34
- const styles = createVibeControlStyles(position);
35
- const buttonStyles = {
36
- ...styles.button,
37
- ...(isHoveringButton ? styles.buttonHover : {}),
38
- };
39
- const closeButtonStyles = {
40
- ...styles.closeButton,
41
- ...(isHoveringClose ? styles.closeButtonHover : {}),
42
- };
43
- if (!visible) {
44
- return null;
45
- }
46
- const renderOverlay = () => {
47
- if (!isOpen)
48
- return null;
49
- return ReactDOM.createPortal(React.createElement("div", { style: styles.backdrop, onClick: handleClose, className: classes.backdrop },
50
- React.createElement("div", { style: styles.overlay, onClick: (e) => e.stopPropagation(), className: classes.overlay },
51
- React.createElement("h2", { style: styles.overlayTitle, className: classes.overlayTitle }, "Vibe Control"),
52
- React.createElement("button", { style: closeButtonStyles, onClick: handleClose, onMouseEnter: () => setIsHoveringClose(true), onMouseLeave: () => setIsHoveringClose(false), className: classes.closeButton, "aria-label": "Close overlay" }, "\u00D7"),
53
- React.createElement("div", { style: styles.content, className: classes.content }, children || (React.createElement("div", null,
54
- React.createElement("p", null, "Welcome to Vibe Control!"),
55
- React.createElement("p", null, "This is the default content. You can customize this by passing children to the VibeControl component."),
56
- React.createElement("div", { style: {
57
- marginTop: '20px',
58
- padding: '16px',
59
- backgroundColor: '#f5f5f5',
60
- borderRadius: '8px',
61
- } },
62
- React.createElement("h3", { style: { margin: '0 0 8px 0' } }, "Example Features:"),
63
- React.createElement("ul", { style: { margin: 0, paddingLeft: '20px' } },
64
- React.createElement("li", null, "Theme customization"),
65
- React.createElement("li", null, "Settings management"),
66
- React.createElement("li", null, "Component controls"),
67
- React.createElement("li", null, "Debug information")))))))), document.body);
68
- };
69
- return (React.createElement(React.Fragment, null,
70
- React.createElement("button", { style: buttonStyles, onClick: handleOpen, onMouseEnter: () => setIsHoveringButton(true), onMouseLeave: () => setIsHoveringButton(false), className: classes.button, "aria-label": label }, label),
71
- renderOverlay()));
72
- }
73
- export default VibeControl;
74
- //# sourceMappingURL=VibeControl.js.map