@faststore/components 3.18.0 → 3.20.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.
@@ -81,6 +81,8 @@ export { default as RatingField } from './molecules/RatingField';
81
81
  export type { RatingFieldProps } from './molecules/RatingField';
82
82
  export { default as RegionBar } from './molecules/RegionBar';
83
83
  export type { RegionBarProps } from './molecules/RegionBar';
84
+ export { default as Tooltip } from './molecules/Tooltip';
85
+ export type { TooltipProps } from './molecules/Tooltip';
84
86
  export { default as SearchProvider } from './molecules/SearchProvider';
85
87
  export type { SearchProviderContextValue } from './molecules/SearchProvider';
86
88
  export { default as SearchInputField } from './molecules/SearchInputField';
package/dist/cjs/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.NavbarLinksList = exports.NavbarLinks = exports.ModalFooter = exports.ModalBody = exports.ModalHeader = exports.Modal = exports.LinkButton = exports.InputField = exports.GiftImage = exports.GiftContent = exports.Gift = exports.DropdownMenu = exports.DropdownItem = exports.DropdownButton = exports.Dropdown = exports.DiscountBadge = exports.IconButton = exports.CheckboxField = exports.CartItemSummary = exports.CartItemImage = exports.CartItem = exports.Card = exports.CarouselBullets = exports.CarouselItem = exports.Carousel = exports.BuyButton = exports.Breadcrumb = exports.BreadcrumbPure = exports.Alert = exports.AccordionPanel = exports.AccordionButton = exports.AccordionItem = exports.Accordion = exports.SROnly = exports.Slider = exports.Select = exports.Skeleton = exports.Radio = exports.Price = exports.Overlay = exports.List = exports.Loader = exports.Link = exports.Label = exports.Textarea = exports.Input = exports.Icon = exports.Checkbox = exports.Button = exports.Badge = void 0;
4
- exports.FilterFacets = exports.FilterFacetRange = exports.FilterFacetBooleanItem = exports.FilterFacetBoolean = exports.Filter = exports.EmptyState = exports.CartSidebarFooter = exports.CartSidebarList = exports.CartSidebar = exports.BannerTextContent = exports.BannerText = exports.QuantitySelector = exports.ToggleField = exports.Toggle = exports.Toast = exports.Tag = exports.TableRow = exports.TableHead = exports.TableFooter = exports.TableCell = exports.TableBody = exports.Table = exports.SkuSelector = exports.SelectField = exports.SearchTopTerm = exports.SearchTop = exports.SearchProductItemContent = exports.SearchProductItemImage = exports.SearchProductItem = exports.SearchProducts = exports.SearchHistoryTerm = exports.SearchHistory = exports.SearchDropdown = exports.SearchAutoCompleteTerm = exports.SearchAutoComplete = exports.SearchInputField = exports.SearchProvider = exports.RegionBar = exports.RatingField = exports.Rating = exports.RadioOption = exports.RadioGroup = exports.RadioField = exports.ProductTitle = exports.ProductPrice = exports.ProductCardContent = exports.ProductCardImage = exports.ProductCard = exports.OrderSummary = exports.NavbarLinksListItem = void 0;
5
- exports.SKUMatrixSidebar = exports.SKUMatrixTrigger = exports.SKUMatrix = exports.SlideOverHeader = exports.SlideOver = exports.ShippingSimulation = exports.SearchInput = exports.RegionModal = exports.ProductShelfItem = exports.ProductShelfItems = exports.ProductShelf = exports.ProductGridItem = exports.ProductGrid = exports.PriceRange = exports.PaymentMethods = exports.OutOfStock = exports.NewsletterHeader = exports.NewsletterForm = exports.NewsletterContent = exports.NewsletterAddendum = exports.Newsletter = exports.NavbarSliderFooter = exports.NavbarSliderContent = exports.NavbarSliderHeader = exports.NavbarSlider = exports.NavbarButtons = exports.NavbarRow = exports.NavbarHeader = exports.Navbar = exports.ImageGalleryViewer = exports.ImageGallerySelector = exports.ImageGallery = exports.HeroHeader = exports.HeroImage = exports.Hero = exports.FilterSlider = void 0;
4
+ exports.FilterFacetRange = exports.FilterFacetBooleanItem = exports.FilterFacetBoolean = exports.Filter = exports.EmptyState = exports.CartSidebarFooter = exports.CartSidebarList = exports.CartSidebar = exports.BannerTextContent = exports.BannerText = exports.QuantitySelector = exports.ToggleField = exports.Toggle = exports.Toast = exports.Tag = exports.TableRow = exports.TableHead = exports.TableFooter = exports.TableCell = exports.TableBody = exports.Table = exports.SkuSelector = exports.SelectField = exports.SearchTopTerm = exports.SearchTop = exports.SearchProductItemContent = exports.SearchProductItemImage = exports.SearchProductItem = exports.SearchProducts = exports.SearchHistoryTerm = exports.SearchHistory = exports.SearchDropdown = exports.SearchAutoCompleteTerm = exports.SearchAutoComplete = exports.SearchInputField = exports.SearchProvider = exports.Tooltip = exports.RegionBar = exports.RatingField = exports.Rating = exports.RadioOption = exports.RadioGroup = exports.RadioField = exports.ProductTitle = exports.ProductPrice = exports.ProductCardContent = exports.ProductCardImage = exports.ProductCard = exports.OrderSummary = exports.NavbarLinksListItem = void 0;
5
+ exports.SKUMatrixSidebar = exports.SKUMatrixTrigger = exports.SKUMatrix = exports.SlideOverHeader = exports.SlideOver = exports.ShippingSimulation = exports.SearchInput = exports.RegionModal = exports.ProductShelfItem = exports.ProductShelfItems = exports.ProductShelf = exports.ProductGridItem = exports.ProductGrid = exports.PriceRange = exports.PaymentMethods = exports.OutOfStock = exports.NewsletterHeader = exports.NewsletterForm = exports.NewsletterContent = exports.NewsletterAddendum = exports.Newsletter = exports.NavbarSliderFooter = exports.NavbarSliderContent = exports.NavbarSliderHeader = exports.NavbarSlider = exports.NavbarButtons = exports.NavbarRow = exports.NavbarHeader = exports.Navbar = exports.ImageGalleryViewer = exports.ImageGallerySelector = exports.ImageGallery = exports.HeroHeader = exports.HeroImage = exports.Hero = exports.FilterSlider = exports.FilterFacets = void 0;
6
6
  const tslib_1 = require("tslib");
7
7
  // Hooks
8
8
  tslib_1.__exportStar(require("./hooks"), exports);
@@ -113,6 +113,8 @@ var RatingField_1 = require("./molecules/RatingField");
113
113
  Object.defineProperty(exports, "RatingField", { enumerable: true, get: function () { return tslib_1.__importDefault(RatingField_1).default; } });
114
114
  var RegionBar_1 = require("./molecules/RegionBar");
115
115
  Object.defineProperty(exports, "RegionBar", { enumerable: true, get: function () { return tslib_1.__importDefault(RegionBar_1).default; } });
116
+ var Tooltip_1 = require("./molecules/Tooltip");
117
+ Object.defineProperty(exports, "Tooltip", { enumerable: true, get: function () { return tslib_1.__importDefault(Tooltip_1).default; } });
116
118
  var SearchProvider_1 = require("./molecules/SearchProvider");
117
119
  Object.defineProperty(exports, "SearchProvider", { enumerable: true, get: function () { return tslib_1.__importDefault(SearchProvider_1).default; } });
118
120
  var SearchInputField_1 = require("./molecules/SearchInputField");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import React, { type ReactNode, type HTMLAttributes } from 'react';
2
+ /**
3
+ * Specifies tooltip position.
4
+ */
5
+ export type Side = 'top' | 'right' | 'bottom' | 'left';
6
+ /**
7
+ * Specifies tooltip alignment.
8
+ */
9
+ export type Alignment = 'start' | 'center' | 'end';
10
+ /**
11
+ * Combines side + alignment (e.g., "top-start").
12
+ */
13
+ export type Placement = `${Side}-${Alignment}`;
14
+ export interface TooltipProps extends Omit<HTMLAttributes<HTMLDivElement>, 'content'> {
15
+ /**
16
+ * Text/content of the tooltip.
17
+ */
18
+ content: ReactNode;
19
+ /**
20
+ * Defines the side or side-alignment (e.g., "top-center", "right-end") of the tooltip.
21
+ */
22
+ placement?: Placement;
23
+ /**
24
+ * If the tooltip can be closed by a button.
25
+ */
26
+ dismissible?: boolean;
27
+ /**
28
+ * Called when the dismiss button is clicked.
29
+ */
30
+ onDismiss?: (ev: React.KeyboardEvent<HTMLDivElement> | React.MouseEvent<HTMLButtonElement>) => void;
31
+ /**
32
+ * Element that activates the tooltip on hover/focus.
33
+ */
34
+ children: ReactNode;
35
+ /**
36
+ * ID to find this component in testing tools (e.g.: cypress, testing library, and jest).
37
+ */
38
+ testId?: string;
39
+ /**
40
+ * Maximum width of the tooltip.
41
+ */
42
+ maxWidth?: number;
43
+ /**
44
+ * ID for the tooltip content to be used with aria-describedby.
45
+ */
46
+ describedById?: string;
47
+ }
48
+ declare const Tooltip: React.ForwardRefExoticComponent<TooltipProps & React.RefAttributes<HTMLDivElement>>;
49
+ export default Tooltip;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const react_1 = tslib_1.__importStar(require("react"));
5
+ const Icon_1 = tslib_1.__importDefault(require("../../atoms/Icon"));
6
+ const IconButton_1 = tslib_1.__importDefault(require("../IconButton"));
7
+ const Tooltip = (0, react_1.forwardRef)(function Tooltip({ content, placement = 'top-center', dismissible = false, onDismiss, children, testId = 'fs-tooltip', maxWidth = 300, describedById = 'tooltip-content', ...otherProps }, ref) {
8
+ const [open, setOpen] = (0, react_1.useState)(false);
9
+ const [dismissed, setDismissed] = (0, react_1.useState)(false);
10
+ const dismissButtonRef = (0, react_1.useRef)(null);
11
+ const triggerRef = (0, react_1.useRef)(null);
12
+ const handleDismiss = (ev) => {
13
+ onDismiss?.(ev);
14
+ setOpen(false);
15
+ setDismissed(true);
16
+ };
17
+ const toggleOpen = () => {
18
+ if (dismissed) {
19
+ setDismissed(false);
20
+ }
21
+ setOpen(true);
22
+ };
23
+ const handleKeyDown = (event) => {
24
+ if (event.key === 'Escape') {
25
+ handleDismiss(event);
26
+ }
27
+ };
28
+ (0, react_1.useEffect)(() => {
29
+ if (open && dismissible) {
30
+ dismissButtonRef.current?.focus();
31
+ }
32
+ }, [open, dismissible]);
33
+ return (react_1.default.createElement("div", { "data-fs-tooltip": true, onMouseEnter: toggleOpen, onMouseLeave: () => setOpen(false), onFocus: toggleOpen, onBlur: () => setOpen(false), "data-testid": testId, "aria-describedby": describedById, onKeyDown: handleKeyDown, tabIndex: 0, ref: triggerRef },
34
+ children,
35
+ open && !dismissed && (react_1.default.createElement("div", { ref: ref, "data-fs-tooltip-wrapper": true, "data-fs-tooltip-placement": placement, "data-fs-tooltip-dismissible": dismissible, role: "tooltip", onKeyDown: handleKeyDown, style: { maxWidth }, ...otherProps },
36
+ react_1.default.createElement("div", { "data-fs-tooltip-content": true, id: describedById }, content),
37
+ dismissible && (react_1.default.createElement(IconButton_1.default, { size: "small", variant: "tertiary", inverse: true, icon: react_1.default.createElement(Icon_1.default, { name: "X", width: 20, height: 20 }), "aria-label": "Dismiss tooltip", "data-fs-tooltip-dismiss-button": true, onClick: handleDismiss, ref: dismissButtonRef })),
38
+ react_1.default.createElement("div", { "data-fs-tooltip-indicator": true, "aria-hidden": "true" })))));
39
+ });
40
+ exports.default = Tooltip;
41
+ //# sourceMappingURL=Tooltip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tooltip.js","sourceRoot":"","sources":["../../../../src/molecules/Tooltip/Tooltip.tsx"],"names":[],"mappings":";;;AAAA,uDAOc;AACd,oEAAmC;AACnC,uEAAsC;AAyDtC,MAAM,OAAO,GAAG,IAAA,kBAAU,EAA+B,SAAS,OAAO,CACvE,EACE,OAAO,EACP,SAAS,GAAG,YAAY,EACxB,WAAW,GAAG,KAAK,EACnB,SAAS,EACT,QAAQ,EACR,MAAM,GAAG,YAAY,EACrB,QAAQ,GAAG,GAAG,EACd,aAAa,GAAG,iBAAiB,EACjC,GAAG,UAAU,EACd,EACD,GAAG;IAEH,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAA;IACvC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAA;IACjD,MAAM,gBAAgB,GAAG,IAAA,cAAM,EAAoB,IAAI,CAAC,CAAA;IACxD,MAAM,UAAU,GAAG,IAAA,cAAM,EAAiB,IAAI,CAAC,CAAA;IAE/C,MAAM,aAAa,GAAG,CACpB,EAEuC,EACvC,EAAE;QACF,SAAS,EAAE,CAAC,EAAE,CAAC,CAAA;QACf,OAAO,CAAC,KAAK,CAAC,CAAA;QACd,YAAY,CAAC,IAAI,CAAC,CAAA;IACpB,CAAC,CAAA;IAED,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,IAAI,SAAS,EAAE,CAAC;YACd,YAAY,CAAC,KAAK,CAAC,CAAA;QACrB,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAA;IACf,CAAC,CAAA;IAED,MAAM,aAAa,GAAG,CAAC,KAA0C,EAAE,EAAE;QACnE,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC3B,aAAa,CAAC,KAAK,CAAC,CAAA;QACtB,CAAC;IACH,CAAC,CAAA;IAED,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,IAAI,IAAI,WAAW,EAAE,CAAC;YACxB,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,CAAA;QACnC,CAAC;IACH,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAA;IAEvB,OAAO,CACL,gEAEE,YAAY,EAAE,UAAU,EACxB,YAAY,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAClC,OAAO,EAAE,UAAU,EACnB,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,iBACf,MAAM,sBACD,aAAa,EAC/B,SAAS,EAAE,aAAa,EACxB,QAAQ,EAAE,CAAC,EACX,GAAG,EAAE,UAAU;QAEd,QAAQ;QAER,IAAI,IAAI,CAAC,SAAS,IAAI,CACrB,uCACE,GAAG,EAAE,GAAG,gEAEmB,SAAS,iCACP,WAAW,EACxC,IAAI,EAAC,SAAS,EACd,SAAS,EAAE,aAAa,EACxB,KAAK,EAAE,EAAE,QAAQ,EAAE,KACf,UAAU;YAEd,wEAA6B,EAAE,EAAE,aAAa,IAC3C,OAAO,CACJ;YACL,WAAW,IAAI,CACd,8BAAC,oBAAU,IACT,IAAI,EAAC,OAAO,EACZ,OAAO,EAAC,UAAU,EAClB,OAAO,QACP,IAAI,EAAE,8BAAC,cAAI,IAAC,IAAI,EAAC,GAAG,EAAC,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,GAAI,gBACnC,iBAAiB,0CAE5B,OAAO,EAAE,aAAa,EACtB,GAAG,EAAE,gBAAgB,GACrB,CACH;YACD,yFAA2C,MAAM,GAAG,CAChD,CACP,CACG,CACP,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,kBAAe,OAAO,CAAA"}
@@ -0,0 +1,2 @@
1
+ export { default } from './Tooltip';
2
+ export { TooltipProps } from './Tooltip';
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.default = void 0;
7
+ var Tooltip_1 = require("./Tooltip");
8
+ Object.defineProperty(exports, "default", { enumerable: true, get: function () { return __importDefault(Tooltip_1).default; } });
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/molecules/Tooltip/index.ts"],"names":[],"mappings":";;;;;;AAAA,qCAAmC;AAA1B,mHAAA,OAAO,OAAA"}
@@ -81,6 +81,8 @@ export { default as RatingField } from './molecules/RatingField';
81
81
  export type { RatingFieldProps } from './molecules/RatingField';
82
82
  export { default as RegionBar } from './molecules/RegionBar';
83
83
  export type { RegionBarProps } from './molecules/RegionBar';
84
+ export { default as Tooltip } from './molecules/Tooltip';
85
+ export type { TooltipProps } from './molecules/Tooltip';
84
86
  export { default as SearchProvider } from './molecules/SearchProvider';
85
87
  export type { SearchProviderContextValue } from './molecules/SearchProvider';
86
88
  export { default as SearchInputField } from './molecules/SearchInputField';
package/dist/esm/index.js CHANGED
@@ -44,6 +44,7 @@ export { default as RadioGroup, RadioOption } from './molecules/RadioGroup';
44
44
  export { default as Rating } from './molecules/Rating';
45
45
  export { default as RatingField } from './molecules/RatingField';
46
46
  export { default as RegionBar } from './molecules/RegionBar';
47
+ export { default as Tooltip } from './molecules/Tooltip';
47
48
  export { default as SearchProvider } from './molecules/SearchProvider';
48
49
  export { default as SearchInputField } from './molecules/SearchInputField';
49
50
  export { default as SearchAutoComplete, SearchAutoCompleteTerm, } from './molecules/SearchAutoComplete';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import React, { type ReactNode, type HTMLAttributes } from 'react';
2
+ /**
3
+ * Specifies tooltip position.
4
+ */
5
+ export type Side = 'top' | 'right' | 'bottom' | 'left';
6
+ /**
7
+ * Specifies tooltip alignment.
8
+ */
9
+ export type Alignment = 'start' | 'center' | 'end';
10
+ /**
11
+ * Combines side + alignment (e.g., "top-start").
12
+ */
13
+ export type Placement = `${Side}-${Alignment}`;
14
+ export interface TooltipProps extends Omit<HTMLAttributes<HTMLDivElement>, 'content'> {
15
+ /**
16
+ * Text/content of the tooltip.
17
+ */
18
+ content: ReactNode;
19
+ /**
20
+ * Defines the side or side-alignment (e.g., "top-center", "right-end") of the tooltip.
21
+ */
22
+ placement?: Placement;
23
+ /**
24
+ * If the tooltip can be closed by a button.
25
+ */
26
+ dismissible?: boolean;
27
+ /**
28
+ * Called when the dismiss button is clicked.
29
+ */
30
+ onDismiss?: (ev: React.KeyboardEvent<HTMLDivElement> | React.MouseEvent<HTMLButtonElement>) => void;
31
+ /**
32
+ * Element that activates the tooltip on hover/focus.
33
+ */
34
+ children: ReactNode;
35
+ /**
36
+ * ID to find this component in testing tools (e.g.: cypress, testing library, and jest).
37
+ */
38
+ testId?: string;
39
+ /**
40
+ * Maximum width of the tooltip.
41
+ */
42
+ maxWidth?: number;
43
+ /**
44
+ * ID for the tooltip content to be used with aria-describedby.
45
+ */
46
+ describedById?: string;
47
+ }
48
+ declare const Tooltip: React.ForwardRefExoticComponent<TooltipProps & React.RefAttributes<HTMLDivElement>>;
49
+ export default Tooltip;
@@ -0,0 +1,38 @@
1
+ import React, { useState, forwardRef, useRef, useEffect, } from 'react';
2
+ import Icon from '../../atoms/Icon';
3
+ import IconButton from '../IconButton';
4
+ const Tooltip = forwardRef(function Tooltip({ content, placement = 'top-center', dismissible = false, onDismiss, children, testId = 'fs-tooltip', maxWidth = 300, describedById = 'tooltip-content', ...otherProps }, ref) {
5
+ const [open, setOpen] = useState(false);
6
+ const [dismissed, setDismissed] = useState(false);
7
+ const dismissButtonRef = useRef(null);
8
+ const triggerRef = useRef(null);
9
+ const handleDismiss = (ev) => {
10
+ onDismiss?.(ev);
11
+ setOpen(false);
12
+ setDismissed(true);
13
+ };
14
+ const toggleOpen = () => {
15
+ if (dismissed) {
16
+ setDismissed(false);
17
+ }
18
+ setOpen(true);
19
+ };
20
+ const handleKeyDown = (event) => {
21
+ if (event.key === 'Escape') {
22
+ handleDismiss(event);
23
+ }
24
+ };
25
+ useEffect(() => {
26
+ if (open && dismissible) {
27
+ dismissButtonRef.current?.focus();
28
+ }
29
+ }, [open, dismissible]);
30
+ return (React.createElement("div", { "data-fs-tooltip": true, onMouseEnter: toggleOpen, onMouseLeave: () => setOpen(false), onFocus: toggleOpen, onBlur: () => setOpen(false), "data-testid": testId, "aria-describedby": describedById, onKeyDown: handleKeyDown, tabIndex: 0, ref: triggerRef },
31
+ children,
32
+ open && !dismissed && (React.createElement("div", { ref: ref, "data-fs-tooltip-wrapper": true, "data-fs-tooltip-placement": placement, "data-fs-tooltip-dismissible": dismissible, role: "tooltip", onKeyDown: handleKeyDown, style: { maxWidth }, ...otherProps },
33
+ React.createElement("div", { "data-fs-tooltip-content": true, id: describedById }, content),
34
+ dismissible && (React.createElement(IconButton, { size: "small", variant: "tertiary", inverse: true, icon: React.createElement(Icon, { name: "X", width: 20, height: 20 }), "aria-label": "Dismiss tooltip", "data-fs-tooltip-dismiss-button": true, onClick: handleDismiss, ref: dismissButtonRef })),
35
+ React.createElement("div", { "data-fs-tooltip-indicator": true, "aria-hidden": "true" })))));
36
+ });
37
+ export default Tooltip;
38
+ //# sourceMappingURL=Tooltip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tooltip.js","sourceRoot":"","sources":["../../../../src/molecules/Tooltip/Tooltip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAEZ,QAAQ,EACR,UAAU,EAEV,MAAM,EACN,SAAS,GACV,MAAM,OAAO,CAAA;AACd,OAAO,IAAI,MAAM,kBAAkB,CAAA;AACnC,OAAO,UAAU,MAAM,eAAe,CAAA;AAyDtC,MAAM,OAAO,GAAG,UAAU,CAA+B,SAAS,OAAO,CACvE,EACE,OAAO,EACP,SAAS,GAAG,YAAY,EACxB,WAAW,GAAG,KAAK,EACnB,SAAS,EACT,QAAQ,EACR,MAAM,GAAG,YAAY,EACrB,QAAQ,GAAG,GAAG,EACd,aAAa,GAAG,iBAAiB,EACjC,GAAG,UAAU,EACd,EACD,GAAG;IAEH,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACvC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACjD,MAAM,gBAAgB,GAAG,MAAM,CAAoB,IAAI,CAAC,CAAA;IACxD,MAAM,UAAU,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAA;IAE/C,MAAM,aAAa,GAAG,CACpB,EAEuC,EACvC,EAAE;QACF,SAAS,EAAE,CAAC,EAAE,CAAC,CAAA;QACf,OAAO,CAAC,KAAK,CAAC,CAAA;QACd,YAAY,CAAC,IAAI,CAAC,CAAA;IACpB,CAAC,CAAA;IAED,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,IAAI,SAAS,EAAE,CAAC;YACd,YAAY,CAAC,KAAK,CAAC,CAAA;QACrB,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAA;IACf,CAAC,CAAA;IAED,MAAM,aAAa,GAAG,CAAC,KAA0C,EAAE,EAAE;QACnE,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC3B,aAAa,CAAC,KAAK,CAAC,CAAA;QACtB,CAAC;IACH,CAAC,CAAA;IAED,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,IAAI,IAAI,WAAW,EAAE,CAAC;YACxB,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,CAAA;QACnC,CAAC;IACH,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAA;IAEvB,OAAO,CACL,sDAEE,YAAY,EAAE,UAAU,EACxB,YAAY,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAClC,OAAO,EAAE,UAAU,EACnB,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,iBACf,MAAM,sBACD,aAAa,EAC/B,SAAS,EAAE,aAAa,EACxB,QAAQ,EAAE,CAAC,EACX,GAAG,EAAE,UAAU;QAEd,QAAQ;QAER,IAAI,IAAI,CAAC,SAAS,IAAI,CACrB,6BACE,GAAG,EAAE,GAAG,gEAEmB,SAAS,iCACP,WAAW,EACxC,IAAI,EAAC,SAAS,EACd,SAAS,EAAE,aAAa,EACxB,KAAK,EAAE,EAAE,QAAQ,EAAE,KACf,UAAU;YAEd,8DAA6B,EAAE,EAAE,aAAa,IAC3C,OAAO,CACJ;YACL,WAAW,IAAI,CACd,oBAAC,UAAU,IACT,IAAI,EAAC,OAAO,EACZ,OAAO,EAAC,UAAU,EAClB,OAAO,QACP,IAAI,EAAE,oBAAC,IAAI,IAAC,IAAI,EAAC,GAAG,EAAC,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,GAAI,gBACnC,iBAAiB,0CAE5B,OAAO,EAAE,aAAa,EACtB,GAAG,EAAE,gBAAgB,GACrB,CACH;YACD,+EAA2C,MAAM,GAAG,CAChD,CACP,CACG,CACP,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,OAAO,CAAA"}
@@ -0,0 +1,2 @@
1
+ export { default } from './Tooltip';
2
+ export { TooltipProps } from './Tooltip';
@@ -0,0 +1,2 @@
1
+ export { default } from './Tooltip';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/molecules/Tooltip/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@faststore/components",
3
- "version": "3.18.0",
3
+ "version": "3.20.0",
4
4
  "main": "dist/cjs/index.js",
5
5
  "module": "dist/esm/index.js",
6
6
  "typings": "dist/esm/index.d.ts",
@@ -56,5 +56,5 @@
56
56
  "volta": {
57
57
  "extends": "../../package.json"
58
58
  },
59
- "gitHead": "ba979131660bdfcfb18ed1f144c50f9643b49ecb"
59
+ "gitHead": "f7dd89e672e1ad4bb9a425a5d94463513781741c"
60
60
  }
package/src/index.ts CHANGED
@@ -153,6 +153,8 @@ export { default as RatingField } from './molecules/RatingField'
153
153
  export type { RatingFieldProps } from './molecules/RatingField'
154
154
  export { default as RegionBar } from './molecules/RegionBar'
155
155
  export type { RegionBarProps } from './molecules/RegionBar'
156
+ export { default as Tooltip } from './molecules/Tooltip'
157
+ export type { TooltipProps } from './molecules/Tooltip'
156
158
 
157
159
  export { default as SearchProvider } from './molecules/SearchProvider'
158
160
  export type { SearchProviderContextValue } from './molecules/SearchProvider'
@@ -0,0 +1,163 @@
1
+ import React, {
2
+ type ReactNode,
3
+ useState,
4
+ forwardRef,
5
+ type HTMLAttributes,
6
+ useRef,
7
+ useEffect,
8
+ } from 'react'
9
+ import Icon from '../../atoms/Icon'
10
+ import IconButton from '../IconButton'
11
+
12
+ /**
13
+ * Specifies tooltip position.
14
+ */
15
+ export type Side = 'top' | 'right' | 'bottom' | 'left'
16
+
17
+ /**
18
+ * Specifies tooltip alignment.
19
+ */
20
+ export type Alignment = 'start' | 'center' | 'end'
21
+
22
+ /**
23
+ * Combines side + alignment (e.g., "top-start").
24
+ */
25
+ export type Placement = `${Side}-${Alignment}`
26
+
27
+ export interface TooltipProps
28
+ extends Omit<HTMLAttributes<HTMLDivElement>, 'content'> {
29
+ /**
30
+ * Text/content of the tooltip.
31
+ */
32
+ content: ReactNode
33
+ /**
34
+ * Defines the side or side-alignment (e.g., "top-center", "right-end") of the tooltip.
35
+ */
36
+ placement?: Placement
37
+ /**
38
+ * If the tooltip can be closed by a button.
39
+ */
40
+ dismissible?: boolean
41
+ /**
42
+ * Called when the dismiss button is clicked.
43
+ */
44
+ onDismiss?: (
45
+ ev:
46
+ | React.KeyboardEvent<HTMLDivElement>
47
+ | React.MouseEvent<HTMLButtonElement>
48
+ ) => void
49
+ /**
50
+ * Element that activates the tooltip on hover/focus.
51
+ */
52
+ children: ReactNode
53
+ /**
54
+ * ID to find this component in testing tools (e.g.: cypress, testing library, and jest).
55
+ */
56
+ testId?: string
57
+ /**
58
+ * Maximum width of the tooltip.
59
+ */
60
+ maxWidth?: number
61
+ /**
62
+ * ID for the tooltip content to be used with aria-describedby.
63
+ */
64
+ describedById?: string
65
+ }
66
+
67
+ const Tooltip = forwardRef<HTMLDivElement, TooltipProps>(function Tooltip(
68
+ {
69
+ content,
70
+ placement = 'top-center',
71
+ dismissible = false,
72
+ onDismiss,
73
+ children,
74
+ testId = 'fs-tooltip',
75
+ maxWidth = 300,
76
+ describedById = 'tooltip-content',
77
+ ...otherProps
78
+ },
79
+ ref
80
+ ) {
81
+ const [open, setOpen] = useState(false)
82
+ const [dismissed, setDismissed] = useState(false)
83
+ const dismissButtonRef = useRef<HTMLButtonElement>(null)
84
+ const triggerRef = useRef<HTMLDivElement>(null)
85
+
86
+ const handleDismiss = (
87
+ ev:
88
+ | React.KeyboardEvent<HTMLDivElement>
89
+ | React.MouseEvent<HTMLButtonElement>
90
+ ) => {
91
+ onDismiss?.(ev)
92
+ setOpen(false)
93
+ setDismissed(true)
94
+ }
95
+
96
+ const toggleOpen = () => {
97
+ if (dismissed) {
98
+ setDismissed(false)
99
+ }
100
+ setOpen(true)
101
+ }
102
+
103
+ const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {
104
+ if (event.key === 'Escape') {
105
+ handleDismiss(event)
106
+ }
107
+ }
108
+
109
+ useEffect(() => {
110
+ if (open && dismissible) {
111
+ dismissButtonRef.current?.focus()
112
+ }
113
+ }, [open, dismissible])
114
+
115
+ return (
116
+ <div
117
+ data-fs-tooltip
118
+ onMouseEnter={toggleOpen}
119
+ onMouseLeave={() => setOpen(false)}
120
+ onFocus={toggleOpen}
121
+ onBlur={() => setOpen(false)}
122
+ data-testid={testId}
123
+ aria-describedby={describedById}
124
+ onKeyDown={handleKeyDown}
125
+ tabIndex={0}
126
+ ref={triggerRef}
127
+ >
128
+ {children}
129
+
130
+ {open && !dismissed && (
131
+ <div
132
+ ref={ref}
133
+ data-fs-tooltip-wrapper
134
+ data-fs-tooltip-placement={placement}
135
+ data-fs-tooltip-dismissible={dismissible}
136
+ role="tooltip"
137
+ onKeyDown={handleKeyDown}
138
+ style={{ maxWidth }}
139
+ {...otherProps}
140
+ >
141
+ <div data-fs-tooltip-content id={describedById}>
142
+ {content}
143
+ </div>
144
+ {dismissible && (
145
+ <IconButton
146
+ size="small"
147
+ variant="tertiary"
148
+ inverse
149
+ icon={<Icon name="X" width={20} height={20} />}
150
+ aria-label="Dismiss tooltip"
151
+ data-fs-tooltip-dismiss-button
152
+ onClick={handleDismiss}
153
+ ref={dismissButtonRef}
154
+ />
155
+ )}
156
+ <div data-fs-tooltip-indicator aria-hidden="true" />
157
+ </div>
158
+ )}
159
+ </div>
160
+ )
161
+ })
162
+
163
+ export default Tooltip
@@ -0,0 +1,2 @@
1
+ export { default } from './Tooltip'
2
+ export { TooltipProps } from './Tooltip'