@q2devel/q2-storybook 1.0.174 → 1.0.177
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Ecommerce/product-card/ProductCard.d.ts +37 -1
- package/dist/components/Ecommerce/product-card/ProductCard.js +43 -6
- package/dist/components/Ecommerce/product-detail/ProductDetail.d.ts +24 -1
- package/dist/components/Ecommerce/product-detail/ProductDetail.js +7 -7
- package/dist/components/Ecommerce/wishlist/WishlistDropdown.d.ts +24 -1
- package/dist/components/Ecommerce/wishlist/WishlistDropdown.js +18 -7
- package/dist/components/MIKS/movie-detail/MovieDetail.js +1 -1
- package/dist/components/MIKS/navbar/NavBar.js +1 -1
- package/dist/components/MIKS/theatre-event/TheatreEvent.js +1 -1
- package/dist/components/Web/dynamic-grid/DynamicLayout.js +4 -4
- package/package.json +84 -84
|
@@ -83,5 +83,41 @@ export type ProductCardProps = {
|
|
|
83
83
|
discountPriceClassName?: string;
|
|
84
84
|
mainQuantUnitClassName?: string;
|
|
85
85
|
discountQuantUnitClassName?: string;
|
|
86
|
+
classNames?: {
|
|
87
|
+
container?: string;
|
|
88
|
+
imageLayout?: string;
|
|
89
|
+
badges?: {
|
|
90
|
+
container?: string;
|
|
91
|
+
badge?: string;
|
|
92
|
+
};
|
|
93
|
+
deleteButton?: string;
|
|
94
|
+
wishlistButton?: string;
|
|
95
|
+
image?: string;
|
|
96
|
+
button?: string;
|
|
97
|
+
content?: string;
|
|
98
|
+
title?: string;
|
|
99
|
+
variationName?: string;
|
|
100
|
+
label?: {
|
|
101
|
+
country?: string;
|
|
102
|
+
volume?: string;
|
|
103
|
+
};
|
|
104
|
+
description?: string;
|
|
105
|
+
price?: {
|
|
106
|
+
container?: string;
|
|
107
|
+
mainPrice?: string;
|
|
108
|
+
mainQuantUnit?: string;
|
|
109
|
+
discountPrice?: string;
|
|
110
|
+
discountQuantUnit?: string;
|
|
111
|
+
control?: {
|
|
112
|
+
container?: string;
|
|
113
|
+
quantity?: string;
|
|
114
|
+
decrementButton?: string;
|
|
115
|
+
incrementButton?: string;
|
|
116
|
+
addButton?: string;
|
|
117
|
+
};
|
|
118
|
+
};
|
|
119
|
+
actionButton?: string;
|
|
120
|
+
footer?: string;
|
|
121
|
+
};
|
|
86
122
|
};
|
|
87
|
-
export declare const ProductCard: ({ product, href, className, imageClassName, contentClassName, titleClassName, priceClassName, priceDiscountClassName, descriptionClassName, labelClassName, aspectRatio, imagePosition, imageObjectFit, layout, hoverEffect, renderBadges, renderColor, renderDescription, elevationLevel, rounded, titleLines, onCardClick, onImageClick, renderFooter, renderHeader, renderVariationName, variationNameClassName, actionButton, linkToCatalog, showCountry, showVolume, showAddButton, showAddButtonOnHover, addButtonPosition, addButtonAlignment, addButtonText, addButtonBottomClassName, borderOnHoverClassName, currentQuantity, onQuantityChange, addButtonIcon, maxQuantity, controlsClassName, buttonClassName, quantityClassName, customAddButton, disabled, locale, cartMode, showSpinnerInAdd, addToCartButtonCustomAction, showWishlistButton, isInWishlist, onWishlistToggle, wishlistButtonClassName, isWishlistPending, enableMultipleWishlists, wishlists, onAddToWishlist, onRemoveFromWishlist, onCreateWishlist, wishlistDropdownClassName, productWishlistIds, showDeleteButton, onDelete, deleteButtonClassName, isDeletePending, deleteButtonSize, deleteButtonPosition, mainPriceFormatOptions, discountPriceFormatOptions, mainPriceClassName, discountPriceClassName, mainQuantUnitClassName, discountQuantUnitClassName, quantUnit, }: ProductCardProps) => import("react/jsx-runtime").JSX.Element;
|
|
123
|
+
export declare const ProductCard: ({ product, href, className, imageClassName, contentClassName, titleClassName, priceClassName, priceDiscountClassName, descriptionClassName, labelClassName, aspectRatio, imagePosition, imageObjectFit, layout, hoverEffect, renderBadges, renderColor, renderDescription, elevationLevel, rounded, titleLines, onCardClick, onImageClick, renderFooter, renderHeader, renderVariationName, variationNameClassName, actionButton, linkToCatalog, showCountry, showVolume, showAddButton, showAddButtonOnHover, addButtonPosition, addButtonAlignment, addButtonText, addButtonBottomClassName, borderOnHoverClassName, currentQuantity, onQuantityChange, addButtonIcon, maxQuantity, controlsClassName, buttonClassName, quantityClassName, customAddButton, disabled, locale, cartMode, showSpinnerInAdd, addToCartButtonCustomAction, showWishlistButton, isInWishlist, onWishlistToggle, wishlistButtonClassName, isWishlistPending, enableMultipleWishlists, wishlists, onAddToWishlist, onRemoveFromWishlist, onCreateWishlist, wishlistDropdownClassName, productWishlistIds, showDeleteButton, onDelete, deleteButtonClassName, isDeletePending, deleteButtonSize, deleteButtonPosition, classNames, mainPriceFormatOptions, discountPriceFormatOptions, mainPriceClassName, discountPriceClassName, mainQuantUnitClassName, discountQuantUnitClassName, quantUnit, }: ProductCardProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -21,6 +21,43 @@ showWishlistButton = false, isInWishlist = false, onWishlistToggle, wishlistButt
|
|
|
21
21
|
enableMultipleWishlists = false, wishlists = [], onAddToWishlist, onRemoveFromWishlist, onCreateWishlist, wishlistDropdownClassName = '', productWishlistIds = [],
|
|
22
22
|
// Delete functionality
|
|
23
23
|
showDeleteButton = false, onDelete, deleteButtonClassName = '', isDeletePending = false, deleteButtonSize = 'md', deleteButtonPosition = 'top-right',
|
|
24
|
+
// classnames
|
|
25
|
+
classNames = {
|
|
26
|
+
container: '',
|
|
27
|
+
imageLayout: '',
|
|
28
|
+
badges: {
|
|
29
|
+
container: '',
|
|
30
|
+
badge: '',
|
|
31
|
+
},
|
|
32
|
+
deleteButton: '',
|
|
33
|
+
wishlistButton: '',
|
|
34
|
+
image: '',
|
|
35
|
+
button: '',
|
|
36
|
+
content: '',
|
|
37
|
+
title: '',
|
|
38
|
+
variationName: '',
|
|
39
|
+
label: {
|
|
40
|
+
country: '',
|
|
41
|
+
volume: '',
|
|
42
|
+
},
|
|
43
|
+
description: '',
|
|
44
|
+
price: {
|
|
45
|
+
container: '',
|
|
46
|
+
mainPrice: '',
|
|
47
|
+
mainQuantUnit: '',
|
|
48
|
+
discountPrice: '',
|
|
49
|
+
discountQuantUnit: '',
|
|
50
|
+
control: {
|
|
51
|
+
container: '',
|
|
52
|
+
quantity: '',
|
|
53
|
+
decrementButton: '',
|
|
54
|
+
incrementButton: '',
|
|
55
|
+
addButton: '',
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
actionButton: '',
|
|
59
|
+
footer: '',
|
|
60
|
+
},
|
|
24
61
|
// Price formatting - NOVÉ JEDNODUCHÉ API
|
|
25
62
|
mainPriceFormatOptions, discountPriceFormatOptions, mainPriceClassName, discountPriceClassName, mainQuantUnitClassName, discountQuantUnitClassName, quantUnit = '', }) => {
|
|
26
63
|
const [showWishlistDropdown, setShowWishlistDropdown] = useState(false);
|
|
@@ -171,19 +208,19 @@ mainPriceFormatOptions, discountPriceFormatOptions, mainPriceClassName, discount
|
|
|
171
208
|
onDelete(product);
|
|
172
209
|
}
|
|
173
210
|
}, [onDelete, product]);
|
|
174
|
-
return (_jsxs("div", { className: buildClassesByJoining('group relative h-full', layoutClass, elevationClass, onCardClick ? 'cursor-pointer' : '', borderOnHoverClassName, className), onClick: handleCardClick, children: [renderHeader && renderHeader(product), _jsxs("div", { className: buildClassesByJoining(imageLayoutClass, 'relative'), children: [product.badges && renderBadges && (_jsx("div", { className: "absolute top-2 left-2 z-10 flex flex-wrap gap-1", children: product.badges.map((badge, index) => (_jsx(Badge, { color: badge.color, children: badge.text }, index))) })), showDeleteButton ? (_jsx(DeleteButton, { show: showDeleteButton, onDelete: handleDelete, deleteButtonClassName: deleteButtonClassName, isDeletePending: isDeletePending, size: deleteButtonSize, position: deleteButtonPosition })) : (_jsx(LikeButton, { show: showWishlistButton, enableMultiple: enableMultipleWishlists, isInWishlist: isInWishlist, wishlists: wishlists, productWishlistIds: productWishlistIds, wishlistButtonClassName: wishlistButtonClassName, wishlistDropdownClassName: wishlistDropdownClassName, isWishlistPending: isWishlistPending, handleAddToWishlist: handleAddToWishlist, handleRemoveFromWishlist: handleRemoveFromWishlist, handleCreateNewWishlist: handleCreateNewWishlist, handleWishlistToggle: handleWishlistToggle })), _jsx("img", { alt: product.all_images[0]?.alt, src: product.all_images[0]?.href, className: buildClassesByJoining(aspectRatioClass, objectFitClass, objectPositionClass, hoverEffect !== 'none' ? hoverClass : '', roundedClass, 'bg-gray-200', onImageClick ? 'cursor-pointer' : '', imageClassName), onClick: handleImageClick }), addButtonPosition === 'overlay' && (_jsx(AddToCart, { buttonClassName: buttonClassName, addButtonIcon: getButtonIcon(), handleAddToCart: handleAddToCart, showAddButton: shouldShowAddButton(), disabled: disabled, customAddButton: customAddButton }))] }), _jsxs("div", { className: buildClassesByJoining('mt-4 h-full flex flex-col justify-between grow', contentLayoutClass, compactClass, contentClassName), children: [_jsxs("div", { className: "flex flex-col h-full justify-between", children: [_jsxs("div", { children: [_jsx(Heading, { level: 3, className: buildClassesByJoining('text-lg text-gray-700', titleLineClampClass, titleClassName), children: _jsxs(Button, { asLink: true, unstyled: true, href: href, children: [!onCardClick && (_jsx("span", { "aria-hidden": "true", className: "absolute inset-0" })), product.product_name] }) }), renderVariationName && product.variation_name && (_jsx("span", { className: buildClassesByJoining('text-md', variationNameClassName), children: product.variation_name })), (product.country || product.field_volume) && (_jsxs("p", { children: [showCountry && product.country && (_jsxs("span", { className: buildClassesByJoining('text-sm', labelClassName), children: [product.country, showVolume &&
|
|
211
|
+
return (_jsxs("div", { className: buildClassesByJoining('group relative h-full', layoutClass, elevationClass, onCardClick ? 'cursor-pointer' : '', borderOnHoverClassName, className, classNames?.container), onClick: handleCardClick, children: [renderHeader && renderHeader(product), _jsxs("div", { className: buildClassesByJoining(imageLayoutClass, 'relative', classNames?.imageLayout), children: [product.badges && renderBadges && (_jsx("div", { className: buildClassesByJoining("absolute top-2 left-2 z-10 flex flex-wrap gap-1", classNames?.badges?.container), children: product.badges.map((badge, index) => (_jsx(Badge, { color: badge.color, className: classNames?.badges?.badge, children: badge.text }, index))) })), showDeleteButton ? (_jsx(DeleteButton, { show: showDeleteButton, onDelete: handleDelete, deleteButtonClassName: buildClassesByJoining(deleteButtonClassName, classNames?.deleteButton), isDeletePending: isDeletePending, size: deleteButtonSize, position: deleteButtonPosition })) : (_jsx(LikeButton, { show: showWishlistButton, enableMultiple: enableMultipleWishlists, isInWishlist: isInWishlist, wishlists: wishlists, productWishlistIds: productWishlistIds, wishlistButtonClassName: buildClassesByJoining(wishlistButtonClassName, classNames?.wishlistButton), wishlistDropdownClassName: wishlistDropdownClassName, isWishlistPending: isWishlistPending, handleAddToWishlist: handleAddToWishlist, handleRemoveFromWishlist: handleRemoveFromWishlist, handleCreateNewWishlist: handleCreateNewWishlist, handleWishlistToggle: handleWishlistToggle })), _jsx("img", { alt: product.all_images[0]?.alt, src: product.all_images[0]?.href, className: buildClassesByJoining(aspectRatioClass, objectFitClass, objectPositionClass, hoverEffect !== 'none' ? hoverClass : '', roundedClass, 'bg-gray-200', onImageClick ? 'cursor-pointer' : '', imageClassName, classNames?.image), onClick: handleImageClick }), addButtonPosition === 'overlay' && (_jsx(AddToCart, { buttonClassName: buildClassesByJoining(buttonClassName, classNames?.button), addButtonIcon: getButtonIcon(), handleAddToCart: handleAddToCart, showAddButton: shouldShowAddButton(), disabled: disabled, customAddButton: customAddButton }))] }), _jsxs("div", { className: buildClassesByJoining('mt-4 h-full flex flex-col justify-between grow', contentLayoutClass, compactClass, contentClassName, classNames?.content), children: [_jsxs("div", { className: "flex flex-col h-full justify-between", children: [_jsxs("div", { children: [_jsx(Heading, { level: 3, className: buildClassesByJoining('text-lg text-gray-700', classNames?.title, titleLineClampClass, titleClassName), children: _jsxs(Button, { asLink: true, unstyled: true, href: href, children: [!onCardClick && (_jsx("span", { "aria-hidden": "true", className: buildClassesByJoining("absolute inset-0", classNames?.button?.link) })), product.product_name] }) }), renderVariationName && product.variation_name && (_jsx("span", { className: buildClassesByJoining('text-md', variationNameClassName, classNames?.variationName), children: product.variation_name })), (product.country || product.field_volume) && (_jsxs("p", { className: buildClassesByJoining(classNames?.label), children: [showCountry && product.country && (_jsxs("span", { className: buildClassesByJoining('text-sm', labelClassName, classNames?.label?.country), children: [product.country, showVolume &&
|
|
175
212
|
product.field_volume &&
|
|
176
|
-
', '] })), showVolume && product.field_volume && (_jsx("span", { className: buildClassesByJoining('text-sm', labelClassName), children: product.field_volume }))] })), renderDescription && product.description && (_jsx("span", { className: buildClassesByJoining('mt-1 text-sm text-gray-500 line-clamp-2', descriptionClassName), children: parseHTML(product.description) }))] }), _jsx("div", { className: "flex flex-col justify-between", children: _jsxs("div", { className: "flex flex-col justify-between", children: [_jsx(Price, { value: product.price, locale: locale, options: mainPriceFormatOptions, className: buildClassesByJoining('text-md font-bold text-gray-900', mainPriceClassName), quantUnit: quantUnit, quantUnitClassName: buildClassesByJoining('text-md font-bold text-black', mainQuantUnitClassName) }), product?.discountPercent != null &&
|
|
213
|
+
', '] })), showVolume && product.field_volume && (_jsx("span", { className: buildClassesByJoining('text-sm', labelClassName, classNames?.label?.volume), children: product.field_volume }))] })), renderDescription && product.description && (_jsx("span", { className: buildClassesByJoining('mt-1 text-sm text-gray-500 line-clamp-2', descriptionClassName, classNames?.description), children: parseHTML(product.description) }))] }), _jsx("div", { className: "flex flex-col justify-between", children: _jsxs("div", { className: buildClassesByJoining("flex flex-col justify-between", classNames?.price?.container), children: [_jsx(Price, { value: product.price, locale: locale, options: mainPriceFormatOptions, className: buildClassesByJoining('text-md font-bold text-gray-900', mainPriceClassName, classNames?.price?.mainPrice), quantUnit: quantUnit, quantUnitClassName: buildClassesByJoining('text-md font-bold text-black', mainQuantUnitClassName, classNames?.price?.mainQuantUnit) }), product?.discountPercent != null &&
|
|
177
214
|
product.discountPercent > 0 && (_jsx(Price, { value: product.price /
|
|
178
215
|
(1 - product.discountPercent / 100), locale: locale, options: discountPriceFormatOptions ||
|
|
179
|
-
mainPriceFormatOptions, className: buildClassesByJoining('text-sm font-normal text-gray-900 line-through', discountPriceClassName), quantUnit: quantUnit, quantUnitClassName: buildClassesByJoining('text-sm font-normal text-black line-through', discountQuantUnitClassName) })), addButtonPosition === 'bottom' && (_jsx("div", { className: buildClassesByJoining('mt-3 flex w-full relative z-10', getBottomButtonAlignment()), onClick: (e) => e.stopPropagation(), children: shouldShowQuantityControls() ? (
|
|
216
|
+
mainPriceFormatOptions, className: buildClassesByJoining('text-sm font-normal text-gray-900 line-through', discountPriceClassName, classNames?.price?.discountPrice), quantUnit: quantUnit, quantUnitClassName: buildClassesByJoining('text-sm font-normal text-black line-through', discountQuantUnitClassName, classNames?.price?.discountQuantUnit) })), addButtonPosition === 'bottom' && (_jsx("div", { className: buildClassesByJoining('mt-3 flex w-full relative z-10', getBottomButtonAlignment(), classNames?.price?.control), onClick: (e) => e.stopPropagation(), children: shouldShowQuantityControls() ? (
|
|
180
217
|
// Quantity controls
|
|
181
|
-
_jsxs("div", { className: buildClassesByJoining('flex items-center gap-2', controlsClassName), children: [_jsx(Button, { onClick: handleDecrement, className: buildClassesByJoining('w-8 h-8 flex items-center justify-center rounded border', addButtonBottomClassName), disabled: disabled ||
|
|
182
|
-
currentQuantity <= 0, children: "\u2212" }), _jsx("span", { className: buildClassesByJoining('mx-2 font-medium', quantityClassName), children: currentQuantity }), _jsx(Button, { onClick: handleIncrement, className: buildClassesByJoining('w-8 h-8 flex items-center justify-center rounded border', addButtonBottomClassName), disabled: disabled ||
|
|
218
|
+
_jsxs("div", { className: buildClassesByJoining('flex items-center gap-2', controlsClassName, classNames?.price?.control?.quantity), children: [_jsx(Button, { onClick: handleDecrement, className: buildClassesByJoining('w-8 h-8 flex items-center justify-center rounded border', addButtonBottomClassName, classNames?.price?.control?.decrementButton), disabled: disabled ||
|
|
219
|
+
currentQuantity <= 0, children: "\u2212" }), _jsx("span", { className: buildClassesByJoining('mx-2 font-medium', quantityClassName, classNames?.price?.control?.quantity), children: currentQuantity }), _jsx(Button, { onClick: handleIncrement, className: buildClassesByJoining('w-8 h-8 flex items-center justify-center rounded border', addButtonBottomClassName, classNames?.price?.control?.incrementButton), disabled: disabled ||
|
|
183
220
|
currentQuantity >=
|
|
184
221
|
maxQuantity, children: "+" })] })) : shouldShowAddButton() ? (
|
|
185
222
|
// Add button
|
|
186
223
|
customAddButton || (_jsxs(Button, { onClick: handleAddToCart, className: buildClassesByJoining('flex items-center gap-2 px-4 py-2 rounded-md transition-colors', disabled
|
|
187
224
|
? 'opacity-50 cursor-not-allowed'
|
|
188
|
-
: '', addButtonBottomClassName), disabled: disabled, children: [getButtonIcon(), _jsx("span", { children: addButtonText })] }))) : null }))] }) })] }), actionButton && _jsx("div", { className: "mt-2", children: actionButton }), renderFooter && renderFooter(product)] })] }));
|
|
225
|
+
: '', addButtonBottomClassName, classNames?.price?.control?.addButton), disabled: disabled, children: [getButtonIcon(), _jsx("span", { children: addButtonText })] }))) : null }))] }) })] }), actionButton && _jsx("div", { className: buildClassesByJoining("mt-2", classNames?.actionButton), children: actionButton }), renderFooter && _jsx("div", { className: buildClassesByJoining("mt-2", classNames?.footer), children: renderFooter(product) })] })] }));
|
|
189
226
|
};
|
|
@@ -141,6 +141,29 @@ export type ProductProps = {
|
|
|
141
141
|
onAddToSpecificWishlist?: (wishlistId: string) => void;
|
|
142
142
|
onRemoveFromSpecificWishlist?: (wishlistId: string) => void;
|
|
143
143
|
onCreateNewWishlistFromDropdown?: (name: string) => void;
|
|
144
|
+
translationsWishlistDropdown?: {
|
|
145
|
+
wishlistLists?: string;
|
|
146
|
+
createNewWishlist?: string;
|
|
147
|
+
createNewWishlistCancel?: string;
|
|
148
|
+
wishlistOptions?: string;
|
|
149
|
+
close?: string;
|
|
150
|
+
createNewWishlistInputPlaceholder?: string;
|
|
151
|
+
};
|
|
152
|
+
classNamesWishlistDropdown?: {
|
|
153
|
+
wishlistLists?: string;
|
|
154
|
+
wishlistItem?: string;
|
|
155
|
+
icon?: {
|
|
156
|
+
remove?: string;
|
|
157
|
+
add?: string;
|
|
158
|
+
check?: string;
|
|
159
|
+
};
|
|
160
|
+
button?: {
|
|
161
|
+
createNewWishlist?: string;
|
|
162
|
+
createNewWishlistCancel?: string;
|
|
163
|
+
};
|
|
164
|
+
form?: string;
|
|
165
|
+
input?: string;
|
|
166
|
+
};
|
|
144
167
|
onShippingOptionsClick?: () => void;
|
|
145
168
|
isWatchdogEnabled?: boolean;
|
|
146
169
|
onWatchdogClick?: () => void;
|
|
@@ -180,4 +203,4 @@ export type ProductProps = {
|
|
|
180
203
|
volumeQuantUnitClassName?: string;
|
|
181
204
|
breakpointForFreeShipping?: number;
|
|
182
205
|
};
|
|
183
|
-
export declare const ProductDetail: ({ name, price, discountPercent, description, detail, buttonText, className, specification, conversionToOtherUnit, hiddenStock, classNames, buttonClassName, descriptionClassName, product, currentQuantity, onQuantityChange, maxQuantity, disabled, badges, showVariations, variations, currentVariationId, cartMode, onOpenBasket, addToCartButtonCustomAction, selectedVariationGradient, showWishlistButton, isInWishlist, onWishlistToggle, enableMultipleWishlists, wishlists, onAddToWishlist, onRemoveFromWishlist, onCreateWishlist, productWishlistIds, isWishlistPending, isLogged, onWishlistTextClick, showWishlistDropdown, onCloseWishlistDropdown, onAddToSpecificWishlist, onRemoveFromSpecificWishlist, onCreateNewWishlistFromDropdown, onShippingOptionsClick, isWatchdogEnabled, onWatchdogClick, onDemandClick, translations, locale, quantUnit, mainPriceFormatOptions, discountPriceFormatOptions, variationPriceFormatOptions, volumePriceFormatOptions, mainPriceClassName, discountPriceClassName, variationPriceClassName, mainQuantUnitClassName, discountQuantUnitClassName, volumePriceClassName, volumeQuantUnitClassName, breakpointForFreeShipping, }: ProductProps) => import("react/jsx-runtime").JSX.Element | null;
|
|
206
|
+
export declare const ProductDetail: ({ name, price, discountPercent, description, detail, buttonText, className, specification, conversionToOtherUnit, hiddenStock, classNames, buttonClassName, descriptionClassName, product, currentQuantity, onQuantityChange, maxQuantity, disabled, badges, showVariations, variations, currentVariationId, cartMode, onOpenBasket, addToCartButtonCustomAction, selectedVariationGradient, showWishlistButton, isInWishlist, onWishlistToggle, enableMultipleWishlists, wishlists, onAddToWishlist, onRemoveFromWishlist, onCreateWishlist, productWishlistIds, isWishlistPending, isLogged, onWishlistTextClick, showWishlistDropdown, onCloseWishlistDropdown, onAddToSpecificWishlist, onRemoveFromSpecificWishlist, onCreateNewWishlistFromDropdown, translationsWishlistDropdown, classNamesWishlistDropdown, onShippingOptionsClick, isWatchdogEnabled, onWatchdogClick, onDemandClick, translations, locale, quantUnit, mainPriceFormatOptions, discountPriceFormatOptions, variationPriceFormatOptions, volumePriceFormatOptions, mainPriceClassName, discountPriceClassName, variationPriceClassName, mainQuantUnitClassName, discountQuantUnitClassName, volumePriceClassName, volumeQuantUnitClassName, breakpointForFreeShipping, }: ProductProps) => import("react/jsx-runtime").JSX.Element | null;
|
|
@@ -81,7 +81,7 @@ product, currentQuantity = 0, onQuantityChange, maxQuantity = 99, disabled = fal
|
|
|
81
81
|
// Wishlist props
|
|
82
82
|
showWishlistButton = false, isInWishlist = false, onWishlistToggle, enableMultipleWishlists = false, wishlists = [], onAddToWishlist, onRemoveFromWishlist, onCreateWishlist, productWishlistIds = [], isWishlistPending = false, isLogged = false, onWishlistTextClick,
|
|
83
83
|
// Wishlist dropdown props
|
|
84
|
-
showWishlistDropdown = false, onCloseWishlistDropdown, onAddToSpecificWishlist, onRemoveFromSpecificWishlist, onCreateNewWishlistFromDropdown,
|
|
84
|
+
showWishlistDropdown = false, onCloseWishlistDropdown, onAddToSpecificWishlist, onRemoveFromSpecificWishlist, onCreateNewWishlistFromDropdown, translationsWishlistDropdown, classNamesWishlistDropdown,
|
|
85
85
|
//modals
|
|
86
86
|
onShippingOptionsClick, isWatchdogEnabled = false, onWatchdogClick, onDemandClick, translations = {
|
|
87
87
|
recommendedPrice: 'Doporučená cena',
|
|
@@ -184,11 +184,11 @@ mainPriceFormatOptions, discountPriceFormatOptions, variationPriceFormatOptions,
|
|
|
184
184
|
variation.id && (_jsx("div", { className: buildClassesByJoining('absolute inset-0 pointer-events-none', classNames
|
|
185
185
|
?.variations
|
|
186
186
|
?.variationActiveButton), style: {
|
|
187
|
-
background: `
|
|
188
|
-
radial-gradient(circle at top left, var(--primary) 0%, transparent 20%),
|
|
189
|
-
radial-gradient(circle at top right, var(--primary) 0%, transparent 20%),
|
|
190
|
-
radial-gradient(circle at bottom left, var(--primary) 0%, transparent 20%),
|
|
191
|
-
radial-gradient(circle at bottom right, var(--primary) 0%, transparent 20%)
|
|
187
|
+
background: `
|
|
188
|
+
radial-gradient(circle at top left, var(--primary) 0%, transparent 20%),
|
|
189
|
+
radial-gradient(circle at top right, var(--primary) 0%, transparent 20%),
|
|
190
|
+
radial-gradient(circle at bottom left, var(--primary) 0%, transparent 20%),
|
|
191
|
+
radial-gradient(circle at bottom right, var(--primary) 0%, transparent 20%)
|
|
192
192
|
`,
|
|
193
193
|
opacity: 0.2,
|
|
194
194
|
} })), _jsxs("div", { className: buildClassesByJoining('flex flex-col justify-between gap-1 relative z-10 flex-1 min-w-0 pr-2', classNames?.variations
|
|
@@ -260,7 +260,7 @@ mainPriceFormatOptions, discountPriceFormatOptions, variationPriceFormatOptions,
|
|
|
260
260
|
[], isWishlistPending: isWishlistPending, onAddToWishlist: onAddToSpecificWishlist ||
|
|
261
261
|
(() => { }), onRemoveFromWishlist: onRemoveFromSpecificWishlist ||
|
|
262
262
|
(() => { }), onCreateNewWishlist: onCreateNewWishlistFromDropdown ||
|
|
263
|
-
(() => { }), onClose: onCloseWishlistDropdown, isModal: false }) })] }))] }))] }) })] }), specification && specification.length > 0 && (_jsxs("section", { className: "mt-10", children: [_jsx(Heading, { level: 3, className: classNames?.specification?.heading, children: translations.specification }), specification.map((item, index) => {
|
|
263
|
+
(() => { }), onClose: onCloseWishlistDropdown, isModal: false, translationsWishlistDropdown: translationsWishlistDropdown, classNamesWishlistDropdown: classNamesWishlistDropdown }) })] }))] }))] }) })] }), specification && specification.length > 0 && (_jsxs("section", { className: "mt-10", children: [_jsx(Heading, { level: 3, className: classNames?.specification?.heading, children: translations.specification }), specification.map((item, index) => {
|
|
264
264
|
if ('separator' in item) {
|
|
265
265
|
return (_jsx("div", { className: "h-4" }, index));
|
|
266
266
|
}
|
|
@@ -13,6 +13,29 @@ export interface WishlistDropdownProps {
|
|
|
13
13
|
onClose?: () => void;
|
|
14
14
|
className?: string;
|
|
15
15
|
isModal?: boolean;
|
|
16
|
+
translationsWishlistDropdown?: {
|
|
17
|
+
wishlistLists?: string;
|
|
18
|
+
createNewWishlist?: string;
|
|
19
|
+
createNewWishlistCancel?: string;
|
|
20
|
+
wishlistOptions?: string;
|
|
21
|
+
close?: string;
|
|
22
|
+
createNewWishlistInputPlaceholder?: string;
|
|
23
|
+
};
|
|
24
|
+
classNamesWishlistDropdown?: {
|
|
25
|
+
wishlistLists?: string;
|
|
26
|
+
wishlistItem?: string;
|
|
27
|
+
icon?: {
|
|
28
|
+
remove?: string;
|
|
29
|
+
add?: string;
|
|
30
|
+
check?: string;
|
|
31
|
+
};
|
|
32
|
+
button?: {
|
|
33
|
+
createNewWishlist?: string;
|
|
34
|
+
createNewWishlistCancel?: string;
|
|
35
|
+
};
|
|
36
|
+
form?: string;
|
|
37
|
+
input?: string;
|
|
38
|
+
};
|
|
16
39
|
}
|
|
17
|
-
export declare const WishlistDropdown: ({ show, wishlists, productWishlistIds, isWishlistPending, onAddToWishlist, onRemoveFromWishlist, onCreateNewWishlist, onClose, className, isModal, }: WishlistDropdownProps) => import("react/jsx-runtime").JSX.Element | null;
|
|
40
|
+
export declare const WishlistDropdown: ({ show, wishlists, productWishlistIds, isWishlistPending, onAddToWishlist, onRemoveFromWishlist, onCreateNewWishlist, onClose, className, isModal, translationsWishlistDropdown, classNamesWishlistDropdown, }: WishlistDropdownProps) => import("react/jsx-runtime").JSX.Element | null;
|
|
18
41
|
export default WishlistDropdown;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
-
import buildClassesByJoining from '../../../utils/StyleHelper';
|
|
4
3
|
import { CheckIcon, PlusCircleIcon, TrashIcon, } from '@heroicons/react/24/outline';
|
|
5
4
|
import { useRef, useState } from 'react';
|
|
5
|
+
import buildClassesByJoining from '../../../utils/StyleHelper';
|
|
6
6
|
import TextField from '../../Forms/text-field/TextField';
|
|
7
|
-
export const WishlistDropdown = ({ show, wishlists, productWishlistIds, isWishlistPending, onAddToWishlist, onRemoveFromWishlist, onCreateNewWishlist, onClose, className, isModal = false, }) => {
|
|
7
|
+
export const WishlistDropdown = ({ show, wishlists, productWishlistIds, isWishlistPending, onAddToWishlist, onRemoveFromWishlist, onCreateNewWishlist, onClose, className, isModal = false, translationsWishlistDropdown, classNamesWishlistDropdown, }) => {
|
|
8
8
|
const [showNewWishlistInput, setShowNewWishlistInput] = useState(false);
|
|
9
9
|
const [newWishlistName, setNewWishlistName] = useState('');
|
|
10
10
|
const inputRef = useRef(null);
|
|
@@ -33,16 +33,27 @@ export const WishlistDropdown = ({ show, wishlists, productWishlistIds, isWishli
|
|
|
33
33
|
};
|
|
34
34
|
if (!show)
|
|
35
35
|
return null;
|
|
36
|
-
const dropdownContent = (_jsxs("div", { className: "py-1", children: [wishlists.length > 0 && (_jsxs(_Fragment, { children: [_jsx("div", { className:
|
|
36
|
+
const dropdownContent = (_jsxs("div", { className: "py-1", children: [wishlists.length > 0 && (_jsxs(_Fragment, { children: [_jsx("div", { className: buildClassesByJoining('px-3 py-1.5 text-xs font-semibold text-gray-500 uppercase tracking-wider', classNamesWishlistDropdown?.wishlistLists), children: translationsWishlistDropdown?.wishlistLists ||
|
|
37
|
+
'Seznamy' }), wishlists.map((wishlist) => {
|
|
37
38
|
const isInWishlist = productWishlistIds.includes(wishlist.id);
|
|
38
|
-
return (_jsxs("button", { onClick: () => handleWishlistClick(wishlist.id, isInWishlist), className:
|
|
39
|
-
|
|
39
|
+
return (_jsxs("button", { onClick: () => handleWishlistClick(wishlist.id, isInWishlist), className: buildClassesByJoining('w-full text-left px-3 py-1.5 text-sm text-gray-700 hover:bg-gray-100 flex items-center justify-between', classNamesWishlistDropdown?.wishlistItem), disabled: isWishlistPending, children: [_jsxs("div", { className: "flex items-center", children: [isInWishlist ? (_jsx(TrashIcon, { className: buildClassesByJoining('h-3.5 w-3.5 mr-2 text-red-600', classNamesWishlistDropdown?.icon
|
|
40
|
+
?.remove) })) : (_jsx(PlusCircleIcon, { className: buildClassesByJoining('h-3.5 w-3.5 mr-2 text-green-600', classNamesWishlistDropdown?.icon
|
|
41
|
+
?.add) })), _jsx("span", { className: "truncate", children: wishlist.name })] }), isInWishlist && (_jsx(CheckIcon, { className: buildClassesByJoining('h-4 w-4 text-green-600 flex-shrink-0', classNamesWishlistDropdown?.icon
|
|
42
|
+
?.check) }))] }, wishlist.id));
|
|
43
|
+
})] })), showNewWishlistInput ? (_jsx("form", { onSubmit: handleCreateNewWishlist, className: buildClassesByJoining('px-3 py-2 border-t', classNamesWishlistDropdown?.form), children: _jsxs("div", { className: "space-y-2", children: [_jsx(TextField, { ref: inputRef, value: newWishlistName, onChange: (e) => setNewWishlistName(e.target.value), placeholder: translationsWishlistDropdown?.createNewWishlistInputPlaceholder ||
|
|
44
|
+
'Název nového seznamu', size: "sm", className: buildClassesByJoining('text-xs', classNamesWishlistDropdown?.input), onClick: (e) => e.stopPropagation(), disabled: isWishlistPending }), _jsxs("div", { className: "flex gap-1.5", children: [_jsx("button", { type: "submit", disabled: !newWishlistName.trim() || isWishlistPending, className: buildClassesByJoining('flex-1 px-2 py-1 text-xs text-white bg-green-600 rounded hover:bg-green-700 disabled:opacity-50', classNamesWishlistDropdown?.button
|
|
45
|
+
?.createNewWishlist), children: translationsWishlistDropdown?.createNewWishlist ||
|
|
46
|
+
'Vytvořit' }), _jsx("button", { type: "button", onClick: (e) => {
|
|
40
47
|
e.stopPropagation();
|
|
41
48
|
setShowNewWishlistInput(false);
|
|
42
49
|
setNewWishlistName('');
|
|
43
|
-
}, className:
|
|
50
|
+
}, className: buildClassesByJoining('flex-1 px-2 py-1 text-xs text-gray-600 bg-gray-200 rounded hover:bg-gray-300', classNamesWishlistDropdown?.button
|
|
51
|
+
?.createNewWishlistCancel), children: translationsWishlistDropdown?.createNewWishlistCancel ||
|
|
52
|
+
'Zrušit' })] })] }) })) : (_jsxs("button", { onClick: handleShowNewWishlistInput, className: buildClassesByJoining('w-full text-left px-3 py-1.5 text-sm text-green-600 hover:bg-gray-100 flex items-center border-t', classNamesWishlistDropdown?.button?.createNewWishlist), disabled: isWishlistPending, children: [_jsx(PlusCircleIcon, { className: "h-3.5 w-3.5 mr-2" }), _jsx("span", { className: "truncate", children: translationsWishlistDropdown?.createNewWishlist ||
|
|
53
|
+
'Vytvořit nový seznam' })] }))] }));
|
|
44
54
|
if (isModal) {
|
|
45
|
-
return (_jsx("div", { className: "fixed inset-0 z-50 flex items-center justify-center bg-black/50", children: _jsxs("div", { className: "bg-white rounded-lg shadow-xl p-6 m-4 max-w-md w-full", onClick: (e) => e.stopPropagation(), children: [_jsx("h3", { className: "text-lg font-semibold mb-4", children:
|
|
55
|
+
return (_jsx("div", { className: "fixed inset-0 z-50 flex items-center justify-center bg-black/50", children: _jsxs("div", { className: "bg-white rounded-lg shadow-xl p-6 m-4 max-w-md w-full", onClick: (e) => e.stopPropagation(), children: [_jsx("h3", { className: "text-lg font-semibold mb-4", children: translationsWishlistDropdown?.wishlistOptions ||
|
|
56
|
+
'Možnosti seznamu' }), _jsx("div", { className: "bg-white rounded-md shadow-xs border border-gray-200", children: dropdownContent }), onClose && (_jsx("button", { onClick: onClose, className: "mt-4 w-full px-4 py-2 border border-gray-300 rounded hover:bg-gray-50", children: translationsWishlistDropdown?.close || 'Zavřít' }))] }) }));
|
|
46
57
|
}
|
|
47
58
|
return (_jsx("div", { className: buildClassesByJoining('absolute right-0 mt-1 w-52 bg-white rounded-md shadow-xl z-50 border border-gray-200', className), children: dropdownContent }));
|
|
48
59
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
-
import
|
|
3
|
+
import Button from '../../Base/button/Button';
|
|
4
4
|
import parse from 'html-react-parser';
|
|
5
5
|
import { useState } from 'react';
|
|
6
6
|
/**
|
|
@@ -142,10 +142,10 @@ export const DynamicLayout = ({ x, y, gap = 4, }) => {
|
|
|
142
142
|
if (isDragging && !isExistingBlock) {
|
|
143
143
|
setEnd(i);
|
|
144
144
|
}
|
|
145
|
-
}, onContextMenu: (e) => handleRightClick(e, i), className: `
|
|
146
|
-
border border-dashed rounded cursor-pointer relative
|
|
147
|
-
transition-colors duration-300
|
|
148
|
-
${color ?? 'bg-gray-800 border-gray-600'}
|
|
145
|
+
}, onContextMenu: (e) => handleRightClick(e, i), className: `
|
|
146
|
+
border border-dashed rounded cursor-pointer relative
|
|
147
|
+
transition-colors duration-300
|
|
148
|
+
${color ?? 'bg-gray-800 border-gray-600'}
|
|
149
149
|
`, children: block && i === block.start && (_jsx("div", { className: "absolute top-0 left-0 px-1 py-0.5", children: editingBlockId === block.id ? (_jsx("input", { autoFocus: true, className: "text-xs font-semibold bg-white text-gray-800 px-1 py-0.5 rounded outline-none w-24", value: block.title, onChange: (e) => handleRename(block.id, e.target.value), onBlur: () => setEditingBlockId(null), onKeyDown: (e) => {
|
|
150
150
|
if (e.key === 'Enter')
|
|
151
151
|
setEditingBlockId(null);
|
package/package.json
CHANGED
|
@@ -1,84 +1,84 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@q2devel/q2-storybook",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"main": "dist/index.js",
|
|
5
|
-
"module": "dist/index.js",
|
|
6
|
-
"types": "dist/index.d.ts",
|
|
7
|
-
"exports": {
|
|
8
|
-
".": {
|
|
9
|
-
"types": "./dist/index.d.ts",
|
|
10
|
-
"default": "./dist/index.js"
|
|
11
|
-
},
|
|
12
|
-
"./styles": "./dist/style.css"
|
|
13
|
-
},
|
|
14
|
-
"files": [
|
|
15
|
-
"dist"
|
|
16
|
-
],
|
|
17
|
-
"scripts": {
|
|
18
|
-
"test": "echo \"Error: no test specified\" && exit 1",
|
|
19
|
-
"storybook": "storybook dev -p 6006",
|
|
20
|
-
"build-storybook": "storybook build",
|
|
21
|
-
"build": "tsc && npm run build:css",
|
|
22
|
-
"build:css": "postcss src/global.css -o dist/style.css",
|
|
23
|
-
"prepublishOnly": "npm version patch && npm run build",
|
|
24
|
-
"publish:patch": "npm publish && npm run build",
|
|
25
|
-
"publish:minor": "npm version minor && npm run build && npm publish",
|
|
26
|
-
"publish:major": "npm version major && npm run build && npm publish",
|
|
27
|
-
"chromatic": "chromatic --project-token=chpt_371d8e65041a19e "
|
|
28
|
-
},
|
|
29
|
-
"keywords": [],
|
|
30
|
-
"author": "Q2",
|
|
31
|
-
"license": "ISC",
|
|
32
|
-
"description": "Komponenty nebo konfigurace pro storybook",
|
|
33
|
-
"devDependencies": {
|
|
34
|
-
"@storybook/addon-actions": "^8.6.14",
|
|
35
|
-
"@storybook/addon-essentials": "^8.6.14",
|
|
36
|
-
"@storybook/addon-interactions": "^8.6.14",
|
|
37
|
-
"@storybook/addon-links": "^8.6.14",
|
|
38
|
-
"@storybook/addon-onboarding": "^8.6.14",
|
|
39
|
-
"@storybook/addon-viewport": "^8.6.14",
|
|
40
|
-
"@storybook/blocks": "^8.6.14",
|
|
41
|
-
"@storybook/nextjs": "^8.6.14",
|
|
42
|
-
"@storybook/react": "^8.6.14",
|
|
43
|
-
"@storybook/test": "^8.6.14",
|
|
44
|
-
"@tailwindcss/postcss": "^4.1.8",
|
|
45
|
-
"@types/body-parser": "^1.19.6",
|
|
46
|
-
"@types/classnames": "^2.3.0",
|
|
47
|
-
"@types/express": "^5.0.3",
|
|
48
|
-
"@types/node": "^22.14.1",
|
|
49
|
-
"@types/react": "^19.1.2",
|
|
50
|
-
"@types/react-dom": "^19.1.2",
|
|
51
|
-
"autoprefixer": "^10.4.21",
|
|
52
|
-
"chromatic": "^12.0.0",
|
|
53
|
-
"cssnano": "^7.0.7",
|
|
54
|
-
"postcss": "^8.5.4",
|
|
55
|
-
"postcss-cli": "^11.0.1",
|
|
56
|
-
"react": "^19.0.0",
|
|
57
|
-
"react-dom": "^19.0.0",
|
|
58
|
-
"rollup-plugin-postcss": "^4.0.2",
|
|
59
|
-
"storybook": "^8.6.14",
|
|
60
|
-
"tailwindcss": "^4.1.8",
|
|
61
|
-
"typescript": "^5.8.3"
|
|
62
|
-
},
|
|
63
|
-
"peerDependencies": {
|
|
64
|
-
"react": "^19.0.0",
|
|
65
|
-
"react-dom": "^19.0.0"
|
|
66
|
-
},
|
|
67
|
-
"dependencies": {
|
|
68
|
-
"@headlessui/react": "^2.2.2",
|
|
69
|
-
"@heroicons/react": "^2.2.0",
|
|
70
|
-
"@q2devel/q2-core": "^1.0.
|
|
71
|
-
"@tanstack/react-query": "^5.76.1",
|
|
72
|
-
"axios": "^1.9.0",
|
|
73
|
-
"body-parser": "^2.2.0",
|
|
74
|
-
"classnames": "^2.5.1",
|
|
75
|
-
"express": "^5.1.0",
|
|
76
|
-
"html-react-parser": "^5.2.3",
|
|
77
|
-
"react-select": "^5.10.1",
|
|
78
|
-
"tailwind-merge": "^3.2.0",
|
|
79
|
-
"zod": "^4.0.14"
|
|
80
|
-
},
|
|
81
|
-
"overrides": {
|
|
82
|
-
"storybook": "$storybook"
|
|
83
|
-
}
|
|
84
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@q2devel/q2-storybook",
|
|
3
|
+
"version": "1.0.177",
|
|
4
|
+
"main": "dist/index.js",
|
|
5
|
+
"module": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"default": "./dist/index.js"
|
|
11
|
+
},
|
|
12
|
+
"./styles": "./dist/style.css"
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist"
|
|
16
|
+
],
|
|
17
|
+
"scripts": {
|
|
18
|
+
"test": "echo \"Error: no test specified\" && exit 1",
|
|
19
|
+
"storybook": "storybook dev -p 6006",
|
|
20
|
+
"build-storybook": "storybook build",
|
|
21
|
+
"build": "tsc && npm run build:css",
|
|
22
|
+
"build:css": "postcss src/global.css -o dist/style.css",
|
|
23
|
+
"prepublishOnly": "npm version patch && npm run build",
|
|
24
|
+
"publish:patch": "npm publish && npm run build",
|
|
25
|
+
"publish:minor": "npm version minor && npm run build && npm publish",
|
|
26
|
+
"publish:major": "npm version major && npm run build && npm publish",
|
|
27
|
+
"chromatic": "chromatic --project-token=chpt_371d8e65041a19e "
|
|
28
|
+
},
|
|
29
|
+
"keywords": [],
|
|
30
|
+
"author": "Q2",
|
|
31
|
+
"license": "ISC",
|
|
32
|
+
"description": "Komponenty nebo konfigurace pro storybook",
|
|
33
|
+
"devDependencies": {
|
|
34
|
+
"@storybook/addon-actions": "^8.6.14",
|
|
35
|
+
"@storybook/addon-essentials": "^8.6.14",
|
|
36
|
+
"@storybook/addon-interactions": "^8.6.14",
|
|
37
|
+
"@storybook/addon-links": "^8.6.14",
|
|
38
|
+
"@storybook/addon-onboarding": "^8.6.14",
|
|
39
|
+
"@storybook/addon-viewport": "^8.6.14",
|
|
40
|
+
"@storybook/blocks": "^8.6.14",
|
|
41
|
+
"@storybook/nextjs": "^8.6.14",
|
|
42
|
+
"@storybook/react": "^8.6.14",
|
|
43
|
+
"@storybook/test": "^8.6.14",
|
|
44
|
+
"@tailwindcss/postcss": "^4.1.8",
|
|
45
|
+
"@types/body-parser": "^1.19.6",
|
|
46
|
+
"@types/classnames": "^2.3.0",
|
|
47
|
+
"@types/express": "^5.0.3",
|
|
48
|
+
"@types/node": "^22.14.1",
|
|
49
|
+
"@types/react": "^19.1.2",
|
|
50
|
+
"@types/react-dom": "^19.1.2",
|
|
51
|
+
"autoprefixer": "^10.4.21",
|
|
52
|
+
"chromatic": "^12.0.0",
|
|
53
|
+
"cssnano": "^7.0.7",
|
|
54
|
+
"postcss": "^8.5.4",
|
|
55
|
+
"postcss-cli": "^11.0.1",
|
|
56
|
+
"react": "^19.0.0",
|
|
57
|
+
"react-dom": "^19.0.0",
|
|
58
|
+
"rollup-plugin-postcss": "^4.0.2",
|
|
59
|
+
"storybook": "^8.6.14",
|
|
60
|
+
"tailwindcss": "^4.1.8",
|
|
61
|
+
"typescript": "^5.8.3"
|
|
62
|
+
},
|
|
63
|
+
"peerDependencies": {
|
|
64
|
+
"react": "^19.0.0",
|
|
65
|
+
"react-dom": "^19.0.0"
|
|
66
|
+
},
|
|
67
|
+
"dependencies": {
|
|
68
|
+
"@headlessui/react": "^2.2.2",
|
|
69
|
+
"@heroicons/react": "^2.2.0",
|
|
70
|
+
"@q2devel/q2-core": "^1.0.71",
|
|
71
|
+
"@tanstack/react-query": "^5.76.1",
|
|
72
|
+
"axios": "^1.9.0",
|
|
73
|
+
"body-parser": "^2.2.0",
|
|
74
|
+
"classnames": "^2.5.1",
|
|
75
|
+
"express": "^5.1.0",
|
|
76
|
+
"html-react-parser": "^5.2.3",
|
|
77
|
+
"react-select": "^5.10.1",
|
|
78
|
+
"tailwind-merge": "^3.2.0",
|
|
79
|
+
"zod": "^4.0.14"
|
|
80
|
+
},
|
|
81
|
+
"overrides": {
|
|
82
|
+
"storybook": "$storybook"
|
|
83
|
+
}
|
|
84
|
+
}
|