@windrun-huaiin/third-ui 26.0.0 → 27.0.0

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 (173) hide show
  1. package/dist/ai/ai-prompt-textarea.d.ts +72 -0
  2. package/dist/ai/ai-prompt-textarea.js +114 -0
  3. package/dist/ai/ai-prompt-textarea.mjs +112 -0
  4. package/dist/ai/index.d.ts +1 -0
  5. package/dist/ai/index.js +2 -0
  6. package/dist/ai/index.mjs +1 -0
  7. package/dist/clerk/clerk-provider-client.js +0 -1
  8. package/dist/clerk/clerk-provider-client.mjs +0 -1
  9. package/dist/clerk/fingerprint/fingerprint-client.js +0 -4
  10. package/dist/clerk/fingerprint/fingerprint-client.mjs +0 -4
  11. package/dist/clerk/fingerprint/use-fingerprint.js +0 -6
  12. package/dist/clerk/fingerprint/use-fingerprint.mjs +0 -6
  13. package/dist/clerk/signin-with-fingerprint-client.js +0 -9
  14. package/dist/clerk/signin-with-fingerprint-client.mjs +0 -9
  15. package/dist/clerk/signup-button-with-fingerprint-client.js +0 -16
  16. package/dist/clerk/signup-button-with-fingerprint-client.mjs +0 -16
  17. package/dist/clerk/signup-with-fingerprint-client.js +0 -9
  18. package/dist/clerk/signup-with-fingerprint-client.mjs +0 -9
  19. package/dist/fuma/base/custom-header.js +10 -8
  20. package/dist/fuma/base/custom-header.mjs +10 -8
  21. package/dist/fuma/base/custom-home-layout.d.ts +1 -0
  22. package/dist/fuma/base/index.d.ts +1 -0
  23. package/dist/fuma/base/index.js +4 -0
  24. package/dist/fuma/base/index.mjs +1 -0
  25. package/dist/fuma/base/nav-config.d.ts +10 -0
  26. package/dist/fuma/base/nav-config.js +32 -0
  27. package/dist/fuma/base/nav-config.mjs +28 -0
  28. package/dist/fuma/base/site-layout.d.ts +4 -0
  29. package/dist/fuma/base/site-layout.js +2 -2
  30. package/dist/fuma/base/site-layout.mjs +2 -2
  31. package/dist/fuma/fuma-page-genarator.d.ts +1 -1
  32. package/dist/fuma/fuma-page-genarator.js +60 -5
  33. package/dist/fuma/fuma-page-genarator.mjs +60 -5
  34. package/dist/fuma/llm-copy-handler.js +0 -9
  35. package/dist/fuma/llm-copy-handler.mjs +0 -9
  36. package/dist/fuma/mdx/index.d.ts +0 -1
  37. package/dist/fuma/mdx/index.js +0 -2
  38. package/dist/fuma/mdx/index.mjs +0 -1
  39. package/dist/fuma/mdx/suno-embed.js +3 -1
  40. package/dist/fuma/mdx/suno-embed.mjs +3 -1
  41. package/dist/fuma/mdx/toc-base.js +0 -1
  42. package/dist/fuma/mdx/toc-base.mjs +0 -1
  43. package/dist/fuma/server/features/widgets.js +5 -1
  44. package/dist/fuma/server/features/widgets.mjs +5 -1
  45. package/dist/lib/site-docs-helper.d.ts +51 -0
  46. package/dist/lib/site-docs-helper.js +68 -0
  47. package/dist/lib/site-docs-helper.mjs +66 -0
  48. package/dist/main/alert-dialog/index.js +14 -0
  49. package/dist/main/alert-dialog/index.mjs +5 -0
  50. package/dist/main/buttons/gradient-button.d.ts +20 -0
  51. package/dist/main/buttons/gradient-button.js +88 -0
  52. package/dist/main/buttons/gradient-button.mjs +86 -0
  53. package/dist/main/buttons/index.d.ts +3 -0
  54. package/dist/main/buttons/index.js +12 -0
  55. package/dist/main/buttons/index.mjs +4 -0
  56. package/dist/main/buttons/x-button.d.ts +39 -0
  57. package/dist/main/buttons/x-button.js +92 -0
  58. package/dist/main/buttons/x-button.mjs +90 -0
  59. package/dist/main/buttons/x-toggle-button.d.ts +32 -0
  60. package/dist/main/buttons/x-toggle-button.js +95 -0
  61. package/dist/main/buttons/x-toggle-button.mjs +74 -0
  62. package/dist/main/credit/credit-overview-client.js +3 -2
  63. package/dist/main/credit/credit-overview-client.mjs +3 -2
  64. package/dist/main/credit/index.d.ts +4 -0
  65. package/dist/main/credit/index.js +10 -0
  66. package/dist/main/credit/index.mjs +3 -0
  67. package/dist/main/credit/server.d.ts +2 -0
  68. package/dist/main/credit/server.js +7 -0
  69. package/dist/main/credit/server.mjs +1 -0
  70. package/dist/main/cta.js +4 -2
  71. package/dist/main/cta.mjs +4 -2
  72. package/dist/main/hero/index.d.ts +2 -0
  73. package/dist/main/hero/index.js +10 -0
  74. package/dist/main/hero/index.mjs +3 -0
  75. package/dist/main/home/server.d.ts +7 -0
  76. package/dist/main/home/server.js +19 -0
  77. package/dist/main/home/server.mjs +7 -0
  78. package/dist/main/index.d.ts +0 -15
  79. package/dist/main/index.js +0 -43
  80. package/dist/main/index.mjs +0 -21
  81. package/dist/main/loading/index.d.ts +1 -0
  82. package/dist/main/loading/index.js +9 -0
  83. package/dist/main/loading/index.mjs +2 -0
  84. package/dist/main/loading-frame/index.d.ts +1 -0
  85. package/dist/main/loading-frame/index.js +9 -0
  86. package/dist/main/loading-frame/index.mjs +2 -0
  87. package/dist/main/money-price/index.d.ts +4 -0
  88. package/dist/main/money-price/index.js +15 -0
  89. package/dist/main/money-price/index.mjs +4 -0
  90. package/dist/main/money-price/money-price-button.d.ts +1 -1
  91. package/dist/main/money-price/money-price-button.js +10 -7
  92. package/dist/main/money-price/money-price-button.mjs +10 -7
  93. package/dist/main/money-price/money-price-interactive.js +9 -8
  94. package/dist/main/money-price/money-price-interactive.mjs +9 -8
  95. package/dist/main/money-price/money-price-types.d.ts +1 -0
  96. package/dist/main/money-price/server.d.ts +5 -0
  97. package/dist/main/money-price/server.js +18 -0
  98. package/dist/main/money-price/server.mjs +4 -0
  99. package/package.json +54 -4
  100. package/src/ai/index.ts +1 -0
  101. package/src/clerk/clerk-provider-client.tsx +1 -3
  102. package/src/clerk/fingerprint/fingerprint-client.ts +0 -4
  103. package/src/clerk/fingerprint/use-fingerprint.ts +0 -6
  104. package/src/clerk/signin-with-fingerprint-client.tsx +0 -10
  105. package/src/clerk/signup-button-with-fingerprint-client.tsx +0 -17
  106. package/src/clerk/signup-with-fingerprint-client.tsx +0 -10
  107. package/src/fuma/base/custom-header.tsx +12 -8
  108. package/src/fuma/base/custom-home-layout.tsx +7 -4
  109. package/src/fuma/base/index.ts +1 -0
  110. package/src/fuma/base/nav-config.ts +81 -0
  111. package/src/fuma/base/site-layout.tsx +6 -0
  112. package/src/fuma/fuma-banner-suit.tsx +1 -1
  113. package/src/fuma/fuma-page-genarator.tsx +60 -7
  114. package/src/fuma/llm-copy-handler.ts +0 -11
  115. package/src/fuma/mdx/index.ts +0 -1
  116. package/src/fuma/mdx/suno-embed.tsx +1 -1
  117. package/src/fuma/mdx/toc-base.tsx +0 -1
  118. package/src/fuma/mdx/toc-footer-wrapper.tsx +2 -2
  119. package/src/fuma/server/features/widgets.tsx +1 -1
  120. package/src/lib/server.ts +1 -1
  121. package/src/{fuma/mdx → main/buttons}/gradient-button.tsx +10 -21
  122. package/src/main/buttons/index.ts +5 -0
  123. package/src/main/{x-button.tsx → buttons/x-button.tsx} +28 -42
  124. package/src/main/credit/credit-overview-client.tsx +1 -1
  125. package/src/main/credit/index.ts +11 -0
  126. package/src/main/credit/server.ts +7 -0
  127. package/src/main/cta.tsx +1 -1
  128. package/src/main/hero/index.ts +4 -0
  129. package/src/main/home/server.ts +7 -0
  130. package/src/main/index.ts +1 -20
  131. package/src/main/language-detector.tsx +0 -1
  132. package/src/main/loading/index.ts +3 -0
  133. package/src/main/loading-frame/index.ts +3 -0
  134. package/src/main/money-price/index.ts +18 -0
  135. package/src/main/money-price/money-price-button.tsx +12 -6
  136. package/src/main/money-price/money-price-interactive.tsx +17 -10
  137. package/src/main/money-price/money-price-types.ts +1 -0
  138. package/src/main/money-price/server.ts +22 -0
  139. package/dist/fuma/mdx/features.d.ts +0 -8
  140. package/dist/fuma/mdx/features.js +0 -92
  141. package/dist/fuma/mdx/features.mjs +0 -85
  142. package/dist/fuma/mdx/image-grid.d.ts +0 -6
  143. package/dist/fuma/mdx/image-grid.js +0 -17
  144. package/dist/fuma/mdx/image-grid.mjs +0 -15
  145. package/dist/fuma/mdx/image-zoom.d.ts +0 -22
  146. package/dist/fuma/mdx/image-zoom.js +0 -39
  147. package/dist/fuma/mdx/image-zoom.mjs +0 -37
  148. package/dist/fuma/mdx/markdown-component-map.d.ts +0 -3
  149. package/dist/fuma/mdx/markdown-component-map.js +0 -79
  150. package/dist/fuma/mdx/markdown-component-map.mjs +0 -77
  151. package/dist/fuma/mdx/math.d.ts +0 -17
  152. package/dist/fuma/mdx/math.js +0 -60
  153. package/dist/fuma/mdx/math.mjs +0 -57
  154. package/dist/fuma/mdx/mermaid.d.ts +0 -13
  155. package/dist/fuma/mdx/mermaid.js +0 -360
  156. package/dist/fuma/mdx/mermaid.mjs +0 -358
  157. package/dist/fuma/mdx/site-mdx-components.d.ts +0 -13
  158. package/dist/fuma/mdx/site-mdx-components.js +0 -19
  159. package/dist/fuma/mdx/site-mdx-components.mjs +0 -17
  160. package/dist/fuma/mdx/site-mdx-presets.d.ts +0 -13
  161. package/dist/fuma/mdx/site-mdx-presets.js +0 -49
  162. package/dist/fuma/mdx/site-mdx-presets.mjs +0 -45
  163. package/dist/fuma/server/optional-features.d.ts +0 -6
  164. package/dist/fuma/server/optional-features.js +0 -17
  165. package/dist/fuma/server/optional-features.mjs +0 -6
  166. package/dist/fuma/server/site-mdx-components.d.ts +0 -13
  167. package/dist/fuma/server/site-mdx-components.js +0 -18
  168. package/dist/fuma/server/site-mdx-components.mjs +0 -16
  169. package/dist/fuma/server/site-mdx-presets.d.ts +0 -195
  170. package/dist/fuma/server/site-mdx-presets.js +0 -55
  171. package/dist/fuma/server/site-mdx-presets.mjs +0 -52
  172. /package/src/{main → ai}/ai-prompt-textarea.tsx +0 -0
  173. /package/src/main/{x-toggle-button.tsx → buttons/x-toggle-button.tsx} +0 -0
@@ -0,0 +1,90 @@
1
+ "use client";
2
+ import { __awaiter } from 'tslib';
3
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
4
+ import React__default, { useState, useRef, useEffect } from 'react';
5
+ import { Loader2Icon, ChevronDownIcon } from '@windrun-huaiin/base-ui/icons';
6
+ import { themeIconColor, themeBgColor, themeBorderColor, themeMainBgColor } from '@windrun-huaiin/base-ui/lib';
7
+ import { cn } from '@windrun-huaiin/lib/utils';
8
+
9
+ function XButton(props) {
10
+ var _a, _b, _c;
11
+ const [isLoading, setIsLoading] = useState(false);
12
+ const [menuOpen, setMenuOpen] = useState(false);
13
+ const menuRef = useRef(null);
14
+ const { iconClassName } = props;
15
+ const defaultIconClass = "w-5 h-5";
16
+ const variant = (_a = props.variant) !== null && _a !== void 0 ? _a : 'default';
17
+ const finalIconClass = cn(variant === 'default' ? '' : themeIconColor, iconClassName || defaultIconClass);
18
+ const loadingIconClass = cn(finalIconClass, "mr-1 animate-spin");
19
+ const chevronIconClass = "w-6 h-6";
20
+ const renderIcon = (icon) => {
21
+ if (React__default.isValidElement(icon)) {
22
+ return React__default.cloneElement(icon, {
23
+ className: cn(finalIconClass, icon.props.className),
24
+ });
25
+ }
26
+ return icon;
27
+ };
28
+ useEffect(() => {
29
+ if (props.type === 'split') {
30
+ const handleClickOutside = (event) => {
31
+ if (menuRef.current && !menuRef.current.contains(event.target)) {
32
+ setMenuOpen(false);
33
+ }
34
+ };
35
+ if (menuOpen) {
36
+ document.addEventListener('mousedown', handleClickOutside);
37
+ }
38
+ return () => {
39
+ document.removeEventListener('mousedown', handleClickOutside);
40
+ };
41
+ }
42
+ }, [menuOpen, props.type]);
43
+ const handleButtonClick = (onClick) => __awaiter(this, void 0, void 0, function* () {
44
+ if (isLoading)
45
+ return;
46
+ setIsLoading(true);
47
+ try {
48
+ yield onClick();
49
+ }
50
+ catch (error) {
51
+ console.error('Button click error:', error);
52
+ }
53
+ finally {
54
+ setIsLoading(false);
55
+ }
56
+ });
57
+ const baseButtonClass = "flex items-center justify-center gap-2 px-4 py-2 text-sm font-semibold transition-colors";
58
+ const singleButtonVariantClass = variant === 'soft'
59
+ ? cn(themeBgColor, themeIconColor, themeBorderColor, "border hover:brightness-95")
60
+ : variant === 'subtle'
61
+ ? cn(themeMainBgColor, themeIconColor, "border border-neutral-200 hover:bg-neutral-50 dark:border-neutral-800 dark:hover:bg-neutral-800")
62
+ : "bg-neutral-200 dark:bg-neutral-800 text-neutral-700 dark:text-white hover:bg-neutral-300 dark:hover:bg-neutral-700";
63
+ const splitMainButtonVariantClass = variant === 'soft'
64
+ ? cn("bg-transparent hover:bg-black/5 dark:hover:bg-white/5", themeIconColor)
65
+ : variant === 'subtle'
66
+ ? cn("bg-transparent hover:bg-neutral-50 dark:hover:bg-neutral-800", themeIconColor)
67
+ : "bg-neutral-200 dark:bg-neutral-800 text-neutral-700 dark:text-white hover:bg-neutral-300 dark:hover:bg-neutral-700";
68
+ const splitDropdownVariantClass = variant === 'soft'
69
+ ? cn("bg-transparent hover:bg-black/5 dark:hover:bg-white/5 sm:border-l", themeIconColor, themeBorderColor)
70
+ : variant === 'subtle'
71
+ ? cn("bg-transparent hover:bg-neutral-50 dark:hover:bg-neutral-800 sm:border-l", themeIconColor, "border-neutral-200 dark:border-neutral-800")
72
+ : "bg-neutral-200 dark:bg-neutral-800 text-neutral-700 dark:text-white hover:bg-neutral-300 dark:hover:bg-neutral-700 sm:border-l sm:border-neutral-300 sm:dark:border-neutral-700";
73
+ const disabledClass = "opacity-60 cursor-not-allowed";
74
+ if (props.type === 'single') {
75
+ const { button, loadingText, minWidth = 'min-w-[110px]', className = '' } = props;
76
+ const isDisabled = button.disabled || isLoading;
77
+ const actualLoadingText = loadingText || ((_b = button.text) === null || _b === void 0 ? void 0 : _b.trim()) || 'Loading...';
78
+ return (jsx("button", { onClick: () => handleButtonClick(button.onClick), disabled: isDisabled, className: cn("w-full sm:w-auto", minWidth, baseButtonClass, singleButtonVariantClass, "rounded-full", isDisabled && disabledClass, className), title: button.text, children: isLoading ? (jsxs(Fragment, { children: [jsx(Loader2Icon, { className: loadingIconClass }), jsx("span", { children: actualLoadingText })] })) : (jsxs(Fragment, { children: [renderIcon(button.icon), jsx("span", { children: button.text })] })) }));
79
+ }
80
+ const { mainButton, menuItems, loadingText, menuWidth = 'w-full sm:w-40', className = '', mainButtonClassName = '', dropdownButtonClassName = '' } = props;
81
+ const isMainDisabled = mainButton.disabled || isLoading;
82
+ const actualLoadingText = loadingText || ((_c = mainButton.text) === null || _c === void 0 ? void 0 : _c.trim()) || 'Loading...';
83
+ return (jsxs("div", { className: cn("relative flex flex-row items-stretch w-full sm:w-auto rounded-full gap-0", menuOpen && "z-90", className), children: [jsx("button", { onClick: () => handleButtonClick(mainButton.onClick), disabled: isMainDisabled, className: cn("flex-1 min-w-0 sm:min-w-[100px] sm:flex-initial rounded-l-full", baseButtonClass, splitMainButtonVariantClass, isMainDisabled && disabledClass, mainButtonClassName), onMouseDown: e => { if (e.button === 2)
84
+ e.preventDefault(); }, title: mainButton.text, children: isLoading ? (jsxs(Fragment, { children: [jsx(Loader2Icon, { className: loadingIconClass }), jsx("span", { children: actualLoadingText })] })) : (jsxs(Fragment, { children: [renderIcon(mainButton.icon), jsx("span", { children: mainButton.text })] })) }), jsx("button", { type: "button", onClick: () => setMenuOpen(!menuOpen), disabled: isLoading, className: cn("w-12 rounded-r-full", baseButtonClass, splitDropdownVariantClass, isLoading && disabledClass, dropdownButtonClassName), "aria-label": "Open menu", children: jsx(ChevronDownIcon, { className: cn(chevronIconClass, menuOpen && "rotate-180", "transition-transform") }) }), menuOpen && (jsx("div", { ref: menuRef, className: cn("absolute top-full right-0 mt-2 bg-white dark:bg-neutral-800 border border-neutral-200 dark:border-neutral-700 rounded-lg shadow-lg z-50 overflow-hidden", menuWidth), children: menuItems.map((item, index) => (jsxs("button", { type: "button", onClick: () => {
85
+ setMenuOpen(false);
86
+ handleButtonClick(item.onClick);
87
+ }, disabled: item.disabled || isLoading, className: cn("w-full flex items-center gap-2 px-3 py-2 text-sm text-left hover:bg-neutral-100 dark:hover:bg-neutral-700 transition-colors", item.disabled && disabledClass, item.splitTopBorder && "border-t border-neutral-200 dark:border-neutral-700"), children: [renderIcon(item.icon), jsx("span", { className: "flex-1", children: item.text }), item.tag && (jsx("span", { className: cn("px-1.5 py-0.5 text-xs rounded", item.tag.color || "bg-blue-100 text-blue-800"), children: item.tag.text }))] }, index))) }))] }));
88
+ }
89
+
90
+ export { XButton };
@@ -0,0 +1,32 @@
1
+ import * as React from 'react';
2
+ export type XToggleButtonOption = {
3
+ value: string;
4
+ label: React.ReactNode;
5
+ disabled?: boolean;
6
+ className?: string;
7
+ badge?: React.ReactNode;
8
+ mobileIcon?: React.ReactNode;
9
+ };
10
+ type XToggleButtonSize = 'default' | 'compact';
11
+ export type XToggleButtonProps = {
12
+ options: XToggleButtonOption[];
13
+ value?: string;
14
+ defaultValue?: string;
15
+ onChange?: (value: string) => void;
16
+ disabled?: boolean;
17
+ className?: string;
18
+ itemClassName?: string;
19
+ activeItemClassName?: string;
20
+ inactiveItemClassName?: string;
21
+ badgeClassName?: string;
22
+ minItemWidthClassName?: string;
23
+ maxItemWidthClassName?: string;
24
+ itemTextClassName?: string;
25
+ itemPaddingClassName?: string;
26
+ size?: XToggleButtonSize;
27
+ fullWidth?: boolean;
28
+ name?: string;
29
+ ariaLabel?: string;
30
+ };
31
+ export declare function XToggleButton({ options, value, defaultValue, onChange, disabled, className, itemClassName, activeItemClassName, inactiveItemClassName, badgeClassName, minItemWidthClassName, maxItemWidthClassName, itemTextClassName, itemPaddingClassName, size, fullWidth, name, ariaLabel, }: XToggleButtonProps): import("react/jsx-runtime").JSX.Element;
32
+ export {};
@@ -0,0 +1,95 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var React = require('react');
6
+ var utils = require('@windrun-huaiin/lib/utils');
7
+ var lib = require('@windrun-huaiin/base-ui/lib');
8
+
9
+ function _interopNamespaceDefault(e) {
10
+ var n = Object.create(null);
11
+ if (e) {
12
+ Object.keys(e).forEach(function (k) {
13
+ if (k !== 'default') {
14
+ var d = Object.getOwnPropertyDescriptor(e, k);
15
+ Object.defineProperty(n, k, d.get ? d : {
16
+ enumerable: true,
17
+ get: function () { return e[k]; }
18
+ });
19
+ }
20
+ });
21
+ }
22
+ n.default = e;
23
+ return Object.freeze(n);
24
+ }
25
+
26
+ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
27
+
28
+ function XToggleButton({ options, value, defaultValue, onChange, disabled = false, className, itemClassName, activeItemClassName, inactiveItemClassName, badgeClassName, minItemWidthClassName, maxItemWidthClassName, itemTextClassName, itemPaddingClassName, size = 'default', fullWidth = false, name, ariaLabel, }) {
29
+ const containerRef = React__namespace.useRef(null);
30
+ const activeButtonRef = React__namespace.useRef(null);
31
+ const [badgeOffset, setBadgeOffset] = React__namespace.useState(0);
32
+ const normalizedOptions = React__namespace.useMemo(() => options.filter((option) => option.value.trim()), [options]);
33
+ const fallbackValue = React__namespace.useMemo(() => {
34
+ var _a, _b;
35
+ if (defaultValue && normalizedOptions.some((option) => option.value === defaultValue)) {
36
+ return defaultValue;
37
+ }
38
+ return (_b = (_a = normalizedOptions[0]) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : '';
39
+ }, [defaultValue, normalizedOptions]);
40
+ const isControlled = value !== undefined;
41
+ const [internalValue, setInternalValue] = React__namespace.useState(fallbackValue);
42
+ React__namespace.useEffect(() => {
43
+ if (!isControlled) {
44
+ setInternalValue(fallbackValue);
45
+ }
46
+ }, [fallbackValue, isControlled]);
47
+ const selectedValue = isControlled ? value !== null && value !== void 0 ? value : '' : internalValue;
48
+ React__namespace.useEffect(() => {
49
+ if (activeButtonRef.current && containerRef.current) {
50
+ const buttonRect = activeButtonRef.current.getBoundingClientRect();
51
+ const containerRect = containerRef.current.getBoundingClientRect();
52
+ const buttonCenterX = buttonRect.left - containerRect.left + buttonRect.width / 2;
53
+ setBadgeOffset(buttonCenterX);
54
+ }
55
+ }, [selectedValue]);
56
+ function handleSelect(nextValue, optionDisabled) {
57
+ if (disabled || optionDisabled || nextValue === selectedValue) {
58
+ return;
59
+ }
60
+ if (!isControlled) {
61
+ setInternalValue(nextValue);
62
+ }
63
+ onChange === null || onChange === void 0 ? void 0 : onChange(nextValue);
64
+ }
65
+ const containerSizeClass = size === 'compact'
66
+ ? 'px-1.5 py-1.5 gap-0'
67
+ : 'px-2 py-2 gap-0 sm:px-3 sm:py-3 sm:gap-0';
68
+ const defaultItemTextClass = size === 'compact'
69
+ ? 'text-xs'
70
+ : 'text-xs sm:text-sm md:text-base';
71
+ const finalItemTextClassName = itemTextClassName !== null && itemTextClassName !== void 0 ? itemTextClassName : defaultItemTextClass;
72
+ const defaultItemPaddingClass = size === 'compact'
73
+ ? 'px-2 py-1'
74
+ : 'px-2 py-1.5 sm:px-3 sm:py-2';
75
+ const finalItemPaddingClassName = itemPaddingClassName !== null && itemPaddingClassName !== void 0 ? itemPaddingClassName : defaultItemPaddingClass;
76
+ const minItemWidthClass = minItemWidthClassName !== null && minItemWidthClassName !== void 0 ? minItemWidthClassName : 'min-w-[80px] sm:min-w-[100px] md:min-w-[120px]';
77
+ const maxItemWidthClass = maxItemWidthClassName !== null && maxItemWidthClassName !== void 0 ? maxItemWidthClassName : 'max-w-[120px] sm:max-w-[160px]';
78
+ const selectedOption = normalizedOptions.find((opt) => opt.value === selectedValue);
79
+ return (jsxRuntime.jsxs("div", { ref: containerRef, role: "radiogroup", "aria-label": ariaLabel, "aria-disabled": disabled, className: utils.cn('relative inline-flex items-center rounded-full border border-gray-300 bg-white shadow-sm dark:border-gray-700 dark:bg-gray-900', fullWidth && 'flex w-full', containerSizeClass, className), children: [(selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.badge) ? (jsxRuntime.jsx("span", { style: {
80
+ left: `${badgeOffset}px`,
81
+ transform: 'translate(-50%, calc(-50% - 1px))'
82
+ }, className: utils.cn('absolute top-0 z-20 whitespace-nowrap rounded-md bg-yellow-100 px-2.5 py-0.5 text-[0.625rem] font-semibold text-yellow-800 shadow-sm sm:text-xs', badgeClassName), children: selectedOption.badge })) : null, normalizedOptions.map((option) => {
83
+ const active = option.value === selectedValue;
84
+ const optionDisabled = disabled || option.disabled;
85
+ return (jsxRuntime.jsx("div", { className: utils.cn('relative flex items-center justify-center', fullWidth && 'flex-1'), children: jsxRuntime.jsx("button", { ref: active ? activeButtonRef : null, type: "button", role: "radio", name: name, "aria-checked": active, "aria-pressed": active, disabled: optionDisabled, onClick: () => handleSelect(option.value, option.disabled), className: utils.cn('relative z-10 inline-flex items-center justify-center rounded-full font-medium text-center transition truncate', fullWidth && 'w-full', !fullWidth && minItemWidthClass, !fullWidth && maxItemWidthClass, finalItemPaddingClassName, finalItemTextClassName, active
86
+ ? utils.cn('text-white shadow-sm', lib.themeButtonGradientClass, lib.themeButtonGradientHoverClass, activeItemClassName)
87
+ : utils.cn('text-gray-800 hover:text-gray-900 dark:text-gray-200 dark:hover:text-gray-100', inactiveItemClassName), optionDisabled && 'cursor-not-allowed opacity-60', itemClassName, option.className), children: option.mobileIcon ? (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("span", { className: "hidden sm:block", children: option.label }), jsxRuntime.jsx("span", { className: "block sm:hidden", children: active && React__namespace.isValidElement(option.mobileIcon)
88
+ ? React__namespace.cloneElement(option.mobileIcon, {
89
+ className: utils.cn(option.mobileIcon.props.className, 'text-white'),
90
+ })
91
+ : option.mobileIcon })] })) : (option.label) }) }, option.value));
92
+ })] }));
93
+ }
94
+
95
+ exports.XToggleButton = XToggleButton;
@@ -0,0 +1,74 @@
1
+ "use client";
2
+ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
3
+ import * as React from 'react';
4
+ import { cn } from '@windrun-huaiin/lib/utils';
5
+ import { themeButtonGradientClass, themeButtonGradientHoverClass } from '@windrun-huaiin/base-ui/lib';
6
+
7
+ function XToggleButton({ options, value, defaultValue, onChange, disabled = false, className, itemClassName, activeItemClassName, inactiveItemClassName, badgeClassName, minItemWidthClassName, maxItemWidthClassName, itemTextClassName, itemPaddingClassName, size = 'default', fullWidth = false, name, ariaLabel, }) {
8
+ const containerRef = React.useRef(null);
9
+ const activeButtonRef = React.useRef(null);
10
+ const [badgeOffset, setBadgeOffset] = React.useState(0);
11
+ const normalizedOptions = React.useMemo(() => options.filter((option) => option.value.trim()), [options]);
12
+ const fallbackValue = React.useMemo(() => {
13
+ var _a, _b;
14
+ if (defaultValue && normalizedOptions.some((option) => option.value === defaultValue)) {
15
+ return defaultValue;
16
+ }
17
+ return (_b = (_a = normalizedOptions[0]) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : '';
18
+ }, [defaultValue, normalizedOptions]);
19
+ const isControlled = value !== undefined;
20
+ const [internalValue, setInternalValue] = React.useState(fallbackValue);
21
+ React.useEffect(() => {
22
+ if (!isControlled) {
23
+ setInternalValue(fallbackValue);
24
+ }
25
+ }, [fallbackValue, isControlled]);
26
+ const selectedValue = isControlled ? value !== null && value !== void 0 ? value : '' : internalValue;
27
+ React.useEffect(() => {
28
+ if (activeButtonRef.current && containerRef.current) {
29
+ const buttonRect = activeButtonRef.current.getBoundingClientRect();
30
+ const containerRect = containerRef.current.getBoundingClientRect();
31
+ const buttonCenterX = buttonRect.left - containerRect.left + buttonRect.width / 2;
32
+ setBadgeOffset(buttonCenterX);
33
+ }
34
+ }, [selectedValue]);
35
+ function handleSelect(nextValue, optionDisabled) {
36
+ if (disabled || optionDisabled || nextValue === selectedValue) {
37
+ return;
38
+ }
39
+ if (!isControlled) {
40
+ setInternalValue(nextValue);
41
+ }
42
+ onChange === null || onChange === void 0 ? void 0 : onChange(nextValue);
43
+ }
44
+ const containerSizeClass = size === 'compact'
45
+ ? 'px-1.5 py-1.5 gap-0'
46
+ : 'px-2 py-2 gap-0 sm:px-3 sm:py-3 sm:gap-0';
47
+ const defaultItemTextClass = size === 'compact'
48
+ ? 'text-xs'
49
+ : 'text-xs sm:text-sm md:text-base';
50
+ const finalItemTextClassName = itemTextClassName !== null && itemTextClassName !== void 0 ? itemTextClassName : defaultItemTextClass;
51
+ const defaultItemPaddingClass = size === 'compact'
52
+ ? 'px-2 py-1'
53
+ : 'px-2 py-1.5 sm:px-3 sm:py-2';
54
+ const finalItemPaddingClassName = itemPaddingClassName !== null && itemPaddingClassName !== void 0 ? itemPaddingClassName : defaultItemPaddingClass;
55
+ const minItemWidthClass = minItemWidthClassName !== null && minItemWidthClassName !== void 0 ? minItemWidthClassName : 'min-w-[80px] sm:min-w-[100px] md:min-w-[120px]';
56
+ const maxItemWidthClass = maxItemWidthClassName !== null && maxItemWidthClassName !== void 0 ? maxItemWidthClassName : 'max-w-[120px] sm:max-w-[160px]';
57
+ const selectedOption = normalizedOptions.find((opt) => opt.value === selectedValue);
58
+ return (jsxs("div", { ref: containerRef, role: "radiogroup", "aria-label": ariaLabel, "aria-disabled": disabled, className: cn('relative inline-flex items-center rounded-full border border-gray-300 bg-white shadow-sm dark:border-gray-700 dark:bg-gray-900', fullWidth && 'flex w-full', containerSizeClass, className), children: [(selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.badge) ? (jsx("span", { style: {
59
+ left: `${badgeOffset}px`,
60
+ transform: 'translate(-50%, calc(-50% - 1px))'
61
+ }, className: cn('absolute top-0 z-20 whitespace-nowrap rounded-md bg-yellow-100 px-2.5 py-0.5 text-[0.625rem] font-semibold text-yellow-800 shadow-sm sm:text-xs', badgeClassName), children: selectedOption.badge })) : null, normalizedOptions.map((option) => {
62
+ const active = option.value === selectedValue;
63
+ const optionDisabled = disabled || option.disabled;
64
+ return (jsx("div", { className: cn('relative flex items-center justify-center', fullWidth && 'flex-1'), children: jsx("button", { ref: active ? activeButtonRef : null, type: "button", role: "radio", name: name, "aria-checked": active, "aria-pressed": active, disabled: optionDisabled, onClick: () => handleSelect(option.value, option.disabled), className: cn('relative z-10 inline-flex items-center justify-center rounded-full font-medium text-center transition truncate', fullWidth && 'w-full', !fullWidth && minItemWidthClass, !fullWidth && maxItemWidthClass, finalItemPaddingClassName, finalItemTextClassName, active
65
+ ? cn('text-white shadow-sm', themeButtonGradientClass, themeButtonGradientHoverClass, activeItemClassName)
66
+ : cn('text-gray-800 hover:text-gray-900 dark:text-gray-200 dark:hover:text-gray-100', inactiveItemClassName), optionDisabled && 'cursor-not-allowed opacity-60', itemClassName, option.className), children: option.mobileIcon ? (jsxs(Fragment, { children: [jsx("span", { className: "hidden sm:block", children: option.label }), jsx("span", { className: "block sm:hidden", children: active && React.isValidElement(option.mobileIcon)
67
+ ? React.cloneElement(option.mobileIcon, {
68
+ className: cn(option.mobileIcon.props.className, 'text-white'),
69
+ })
70
+ : option.mobileIcon })] })) : (option.label) }) }, option.value));
71
+ })] }));
72
+ }
73
+
74
+ export { XToggleButton };
@@ -4,10 +4,11 @@
4
4
  var tslib = require('tslib');
5
5
  var jsxRuntime = require('react/jsx-runtime');
6
6
  var nextjs = require('@clerk/nextjs');
7
- var gradientButton = require('../../fuma/mdx/gradient-button.js');
7
+ var gradientButton = require('../buttons/gradient-button.js');
8
+ var React = require('react');
8
9
  var icons = require('@windrun-huaiin/base-ui/icons');
10
+ require('@windrun-huaiin/base-ui/lib');
9
11
  var utils = require('@windrun-huaiin/lib/utils');
10
- var React = require('react');
11
12
  var customerPortal = require('../money-price/customer-portal.js');
12
13
  var creditNavButton = require('./credit-nav-button.js');
13
14
 
@@ -2,10 +2,11 @@
2
2
  import { __awaiter } from 'tslib';
3
3
  import { jsxs, jsx } from 'react/jsx-runtime';
4
4
  import { useClerk } from '@clerk/nextjs';
5
- import { GradientButton } from '../../fuma/mdx/gradient-button.mjs';
5
+ import { GradientButton } from '../buttons/gradient-button.mjs';
6
+ import { useState, useRef, useCallback, useMemo, useLayoutEffect } from 'react';
6
7
  import { GemIcon, Settings2Icon, BellIcon, ChevronUpIcon, ChevronDownIcon, ShoppingCartIcon, CircleQuestionMarkIcon } from '@windrun-huaiin/base-ui/icons';
8
+ import '@windrun-huaiin/base-ui/lib';
7
9
  import { cn } from '@windrun-huaiin/lib/utils';
8
- import { useState, useRef, useCallback, useMemo, useLayoutEffect } from 'react';
9
10
  import { redirectToCustomerPortal } from '../money-price/customer-portal.mjs';
10
11
  import { useCreditNavPopover } from './credit-nav-button.mjs';
11
12
 
@@ -0,0 +1,4 @@
1
+ export { CreditOverviewClient } from './credit-overview-client';
2
+ export { CreditNavButton } from './credit-nav-button';
3
+ export type { CreditOverviewTranslations } from './credit-overview-client';
4
+ export type { CreditOverviewData, CreditBucket, CreditBucketStatus, SubscriptionInfo, } from './types';
@@ -0,0 +1,10 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var creditOverviewClient = require('./credit-overview-client.js');
5
+ var creditNavButton = require('./credit-nav-button.js');
6
+
7
+
8
+
9
+ exports.CreditOverviewClient = creditOverviewClient.CreditOverviewClient;
10
+ exports.CreditNavButton = creditNavButton.CreditNavButton;
@@ -0,0 +1,3 @@
1
+ "use client";
2
+ export { CreditOverviewClient } from './credit-overview-client.mjs';
3
+ export { CreditNavButton } from './credit-nav-button.mjs';
@@ -0,0 +1,2 @@
1
+ export { CreditOverview } from './credit-overview';
2
+ export type { CreditOverviewData, CreditBucket, CreditBucketStatus, SubscriptionInfo, } from './types';
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ var creditOverview = require('./credit-overview.js');
4
+
5
+
6
+
7
+ exports.CreditOverview = creditOverview.CreditOverview;
@@ -0,0 +1 @@
1
+ export { CreditOverview } from './credit-overview.mjs';
package/dist/main/cta.js CHANGED
@@ -3,9 +3,11 @@
3
3
  var tslib = require('tslib');
4
4
  var jsxRuntime = require('react/jsx-runtime');
5
5
  var server = require('next-intl/server');
6
- var gradientButton = require('../fuma/mdx/gradient-button.js');
7
- var utils = require('@windrun-huaiin/lib/utils');
6
+ var gradientButton = require('./buttons/gradient-button.js');
7
+ require('react');
8
+ require('@windrun-huaiin/base-ui/icons');
8
9
  var lib = require('@windrun-huaiin/base-ui/lib');
10
+ var utils = require('@windrun-huaiin/lib/utils');
9
11
  var richTextExpert = require('./rich-text-expert.js');
10
12
  var sectionLayout = require('./section-layout.js');
11
13
 
package/dist/main/cta.mjs CHANGED
@@ -1,9 +1,11 @@
1
1
  import { __awaiter } from 'tslib';
2
2
  import { jsx, jsxs } from 'react/jsx-runtime';
3
3
  import { getTranslations } from 'next-intl/server';
4
- import { GradientButton } from '../fuma/mdx/gradient-button.mjs';
5
- import { cn } from '@windrun-huaiin/lib/utils';
4
+ import { GradientButton } from './buttons/gradient-button.mjs';
5
+ import 'react';
6
+ import '@windrun-huaiin/base-ui/icons';
6
7
  import { themeIconColor } from '@windrun-huaiin/base-ui/lib';
8
+ import { cn } from '@windrun-huaiin/lib/utils';
7
9
  import { richText } from './rich-text-expert.mjs';
8
10
  import { responsiveSection } from './section-layout.mjs';
9
11
 
@@ -0,0 +1,2 @@
1
+ export { HeroMedia } from '../hero-media';
2
+ export { HeroSection } from '../hero-section';
@@ -0,0 +1,10 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var heroMedia = require('../hero-media.js');
5
+ var heroSection = require('../hero-section.js');
6
+
7
+
8
+
9
+ exports.HeroMedia = heroMedia.HeroMedia;
10
+ exports.HeroSection = heroSection.HeroSection;
@@ -0,0 +1,3 @@
1
+ "use client";
2
+ export { HeroMedia } from '../hero-media.mjs';
3
+ export { HeroSection } from '../hero-section.mjs';
@@ -0,0 +1,7 @@
1
+ export * from '../gallery/gallery-server';
2
+ export * from '../usage';
3
+ export * from '../features';
4
+ export * from '../tips';
5
+ export * from '../faq';
6
+ export * from '../seo-content';
7
+ export * from '../cta';
@@ -0,0 +1,19 @@
1
+ 'use strict';
2
+
3
+ var galleryServer = require('../gallery/gallery-server.js');
4
+ var usage = require('../usage.js');
5
+ var features = require('../features.js');
6
+ var tips = require('../tips.js');
7
+ var faq = require('../faq.js');
8
+ var seoContent = require('../seo-content.js');
9
+ var cta = require('../cta.js');
10
+
11
+
12
+
13
+ exports.Gallery = galleryServer.Gallery;
14
+ exports.Usage = usage.Usage;
15
+ exports.Features = features.Features;
16
+ exports.Tips = tips.Tips;
17
+ exports.FAQ = faq.FAQ;
18
+ exports.SeoContent = seoContent.SeoContent;
19
+ exports.CTA = cta.CTA;
@@ -0,0 +1,7 @@
1
+ export { Gallery } from '../gallery/gallery-server.mjs';
2
+ export { Usage } from '../usage.mjs';
3
+ export { Features } from '../features.mjs';
4
+ export { Tips } from '../tips.mjs';
5
+ export { FAQ } from '../faq.mjs';
6
+ export { SeoContent } from '../seo-content.mjs';
7
+ export { CTA } from '../cta.mjs';
@@ -1,21 +1,6 @@
1
1
  export * from './go-to-top';
2
2
  export * from './loading';
3
3
  export * from './nprogress-bar';
4
- export * from './alert-dialog';
5
- export * from './x-button';
6
- export * from './x-toggle-button';
7
- export * from './ai-prompt-textarea';
8
4
  export * from './rich-text-expert';
9
5
  export * from './faq-interactive';
10
- export * from './price-plan-interactive';
11
- export * from './gallery/gallery-interactive';
12
- export * from './delayed-img';
13
- export * from './snake-loading-frame';
14
- export * from './pill-select';
15
- export { MoneyPriceInteractive } from './money-price/money-price-interactive';
16
- export { MoneyPriceButton } from './money-price/money-price-button';
17
- export { CreditOverviewClient } from './credit/credit-overview-client';
18
- export { CreditNavButton } from './credit/credit-nav-button';
19
- export { HeroMedia } from './hero-media';
20
- export { HeroSection } from './hero-section';
21
6
  export { InfoTooltip } from './info-tooltip';
@@ -4,29 +4,8 @@
4
4
  var goToTop = require('./go-to-top.js');
5
5
  var loading = require('./loading.js');
6
6
  var nprogressBar = require('./nprogress-bar.js');
7
- var adsAlertDialog = require('./alert-dialog/ads-alert-dialog.js');
8
- var confirmDialog = require('./alert-dialog/confirm-dialog.js');
9
- var highPriorityConfirmDialog = require('./alert-dialog/high-priority-confirm-dialog.js');
10
- var infoDialog = require('./alert-dialog/info-dialog.js');
11
- var xButton = require('./x-button.js');
12
- var xToggleButton = require('./x-toggle-button.js');
13
- var aiPromptTextarea = require('./ai-prompt-textarea.js');
14
7
  var richTextExpert = require('./rich-text-expert.js');
15
8
  var faqInteractive = require('./faq-interactive.js');
16
- var pricePlanInteractive = require('./price-plan-interactive.js');
17
- var galleryInteractive = require('./gallery/gallery-interactive.js');
18
- var delayedImg = require('./delayed-img.js');
19
- var snakeLoadingFrame = require('./snake-loading-frame.js');
20
- var xPillSelect = require('./pill-select/x-pill-select.js');
21
- var xFilterPills = require('./pill-select/x-filter-pills.js');
22
- var xFormPills = require('./pill-select/x-form-pills.js');
23
- var xTokenInput = require('./pill-select/x-token-input.js');
24
- var moneyPriceInteractive = require('./money-price/money-price-interactive.js');
25
- var moneyPriceButton = require('./money-price/money-price-button.js');
26
- var creditOverviewClient = require('./credit/credit-overview-client.js');
27
- var creditNavButton = require('./credit/credit-nav-button.js');
28
- var heroMedia = require('./hero-media.js');
29
- var heroSection = require('./hero-section.js');
30
9
  var infoTooltip = require('./info-tooltip.js');
31
10
 
32
11
 
@@ -35,29 +14,7 @@ exports.GoToTop = goToTop.GoToTop;
35
14
  exports.Loading = loading.Loading;
36
15
  exports.getLoadingCycleDurationMs = loading.getLoadingCycleDurationMs;
37
16
  exports.NProgressBar = nprogressBar.NProgressBar;
38
- exports.AdsAlertDialog = adsAlertDialog.AdsAlertDialog;
39
- exports.ConfirmDialog = confirmDialog.ConfirmDialog;
40
- exports.HighPriorityConfirmDialog = highPriorityConfirmDialog.HighPriorityConfirmDialog;
41
- exports.InfoDialog = infoDialog.InfoDialog;
42
- exports.XButton = xButton.XButton;
43
- exports.XToggleButton = xToggleButton.XToggleButton;
44
- exports.AIPromptTextarea = aiPromptTextarea.AIPromptTextarea;
45
17
  exports.createRichTextRenderer = richTextExpert.createRichTextRenderer;
46
18
  exports.richText = richTextExpert.richText;
47
19
  exports.FAQInteractive = faqInteractive.FAQInteractive;
48
- exports.PricePlanInteractive = pricePlanInteractive.PricePlanInteractive;
49
- exports.GalleryInteractive = galleryInteractive.GalleryInteractive;
50
- exports.DelayedImg = delayedImg.DelayedImg;
51
- exports.SnakeLoadingFrame = snakeLoadingFrame.SnakeLoadingFrame;
52
- exports.SnakeLoadingPreview = snakeLoadingFrame.SnakeLoadingPreview;
53
- exports.XPillSelect = xPillSelect.XPillSelect;
54
- exports.XFilterPills = xFilterPills.XFilterPills;
55
- exports.XFormPills = xFormPills.XFormPills;
56
- exports.XTokenInput = xTokenInput.XTokenInput;
57
- exports.MoneyPriceInteractive = moneyPriceInteractive.MoneyPriceInteractive;
58
- exports.MoneyPriceButton = moneyPriceButton.MoneyPriceButton;
59
- exports.CreditOverviewClient = creditOverviewClient.CreditOverviewClient;
60
- exports.CreditNavButton = creditNavButton.CreditNavButton;
61
- exports.HeroMedia = heroMedia.HeroMedia;
62
- exports.HeroSection = heroSection.HeroSection;
63
20
  exports.InfoTooltip = infoTooltip.InfoTooltip;
@@ -2,27 +2,6 @@
2
2
  export { GoToTop } from './go-to-top.mjs';
3
3
  export { Loading, getLoadingCycleDurationMs } from './loading.mjs';
4
4
  export { NProgressBar } from './nprogress-bar.mjs';
5
- export { AdsAlertDialog } from './alert-dialog/ads-alert-dialog.mjs';
6
- export { ConfirmDialog } from './alert-dialog/confirm-dialog.mjs';
7
- export { HighPriorityConfirmDialog } from './alert-dialog/high-priority-confirm-dialog.mjs';
8
- export { InfoDialog } from './alert-dialog/info-dialog.mjs';
9
- export { XButton } from './x-button.mjs';
10
- export { XToggleButton } from './x-toggle-button.mjs';
11
- export { AIPromptTextarea } from './ai-prompt-textarea.mjs';
12
5
  export { createRichTextRenderer, richText } from './rich-text-expert.mjs';
13
6
  export { FAQInteractive } from './faq-interactive.mjs';
14
- export { PricePlanInteractive } from './price-plan-interactive.mjs';
15
- export { GalleryInteractive } from './gallery/gallery-interactive.mjs';
16
- export { DelayedImg } from './delayed-img.mjs';
17
- export { SnakeLoadingFrame, SnakeLoadingPreview } from './snake-loading-frame.mjs';
18
- export { XPillSelect } from './pill-select/x-pill-select.mjs';
19
- export { XFilterPills } from './pill-select/x-filter-pills.mjs';
20
- export { XFormPills } from './pill-select/x-form-pills.mjs';
21
- export { XTokenInput } from './pill-select/x-token-input.mjs';
22
- export { MoneyPriceInteractive } from './money-price/money-price-interactive.mjs';
23
- export { MoneyPriceButton } from './money-price/money-price-button.mjs';
24
- export { CreditOverviewClient } from './credit/credit-overview-client.mjs';
25
- export { CreditNavButton } from './credit/credit-nav-button.mjs';
26
- export { HeroMedia } from './hero-media.mjs';
27
- export { HeroSection } from './hero-section.mjs';
28
7
  export { InfoTooltip } from './info-tooltip.mjs';
@@ -0,0 +1 @@
1
+ export { Loading, getLoadingCycleDurationMs } from '../loading';
@@ -0,0 +1,9 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var loading = require('../loading.js');
5
+
6
+
7
+
8
+ exports.Loading = loading.Loading;
9
+ exports.getLoadingCycleDurationMs = loading.getLoadingCycleDurationMs;
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ export { Loading, getLoadingCycleDurationMs } from '../loading.mjs';
@@ -0,0 +1 @@
1
+ export { SnakeLoadingFrame, SnakeLoadingPreview } from '../snake-loading-frame';
@@ -0,0 +1,9 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var snakeLoadingFrame = require('../snake-loading-frame.js');
5
+
6
+
7
+
8
+ exports.SnakeLoadingFrame = snakeLoadingFrame.SnakeLoadingFrame;
9
+ exports.SnakeLoadingPreview = snakeLoadingFrame.SnakeLoadingPreview;
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ export { SnakeLoadingFrame, SnakeLoadingPreview } from '../snake-loading-frame.mjs';
@@ -0,0 +1,4 @@
1
+ export { MoneyPriceInteractive } from './money-price-interactive';
2
+ export { MoneyPriceButton } from './money-price-button';
3
+ export type { MoneyPriceConfig, MoneyPriceData, InitUserContext, MoneyPriceInteractiveProps, MoneyPriceButtonProps, PaymentProvider, PaymentProviderConfig, EnhancePricePlan, SubscriptionProductConfig, CreditPackProductConfig, UserContext, } from './money-price-types';
4
+ export { UserState } from './money-price-types';
@@ -0,0 +1,15 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var moneyPriceInteractive = require('./money-price-interactive.js');
5
+ var moneyPriceButton = require('./money-price-button.js');
6
+ var moneyPriceTypes = require('./money-price-types.js');
7
+
8
+
9
+
10
+ exports.MoneyPriceInteractive = moneyPriceInteractive.MoneyPriceInteractive;
11
+ exports.MoneyPriceButton = moneyPriceButton.MoneyPriceButton;
12
+ Object.defineProperty(exports, "UserState", {
13
+ enumerable: true,
14
+ get: function () { return moneyPriceTypes.UserState; }
15
+ });