@alveole/components 0.29.3 → 0.30.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 (46) hide show
  1. package/dist/stories/index.d.ts +2 -0
  2. package/dist/stories/index.d.ts.map +1 -1
  3. package/dist/stories/index.js +2 -0
  4. package/dist/ui/ActionMenu/ActionMenu.d.ts +10 -0
  5. package/dist/ui/ActionMenu/ActionMenu.d.ts.map +1 -0
  6. package/dist/ui/ActionMenu/ActionMenu.js +11 -0
  7. package/dist/ui/ActionMenu/ActionMenu.stories.d.ts +14 -0
  8. package/dist/ui/ActionMenu/ActionMenu.stories.d.ts.map +1 -0
  9. package/dist/ui/ActionMenu/ActionMenu.stories.js +30 -0
  10. package/dist/ui/ActionMenu/ActionMenuItem.d.ts +10 -0
  11. package/dist/ui/ActionMenu/ActionMenuItem.d.ts.map +1 -0
  12. package/dist/ui/ActionMenu/ActionMenuItem.js +15 -0
  13. package/dist/ui/ActionMenu/ActionMenuItem.styles.d.ts +6 -0
  14. package/dist/ui/ActionMenu/ActionMenuItem.styles.d.ts.map +1 -0
  15. package/dist/ui/ActionMenu/ActionMenuItem.styles.js +6 -0
  16. package/dist/ui/ActionMenu/index.d.ts +2 -0
  17. package/dist/ui/ActionMenu/index.d.ts.map +1 -0
  18. package/dist/ui/ActionMenu/index.js +1 -0
  19. package/dist/ui/Button/Button.d.ts +2 -0
  20. package/dist/ui/Button/Button.d.ts.map +1 -1
  21. package/dist/ui/Button/Button.js +16 -5
  22. package/dist/ui/Button/Button.stories.d.ts +14 -0
  23. package/dist/ui/Button/Button.stories.d.ts.map +1 -1
  24. package/dist/ui/Button/Button.stories.js +5 -4
  25. package/dist/ui/Button/Button.styles.d.ts +12 -0
  26. package/dist/ui/Button/Button.styles.d.ts.map +1 -1
  27. package/dist/ui/Button/Button.styles.js +12 -0
  28. package/dist/ui/Card/CardHeader.js +1 -1
  29. package/dist/ui/LucideIcon/LucideIcon.props.d.ts +4 -4
  30. package/dist/ui/LucideIcon/LucideIcon.stories.d.ts +2 -2
  31. package/dist/ui/Popover/Popover.d.ts +14 -0
  32. package/dist/ui/Popover/Popover.d.ts.map +1 -0
  33. package/dist/ui/Popover/Popover.js +21 -0
  34. package/dist/ui/Popover/Popover.stories.d.ts +53 -0
  35. package/dist/ui/Popover/Popover.stories.d.ts.map +1 -0
  36. package/dist/ui/Popover/Popover.stories.js +30 -0
  37. package/dist/ui/Popover/Popover.styles.d.ts +43 -0
  38. package/dist/ui/Popover/Popover.styles.d.ts.map +1 -0
  39. package/dist/ui/Popover/Popover.styles.js +15 -0
  40. package/dist/ui/Popover/index.d.ts +2 -0
  41. package/dist/ui/Popover/index.d.ts.map +1 -0
  42. package/dist/ui/Popover/index.js +1 -0
  43. package/dist/ui/index.d.ts +2 -0
  44. package/dist/ui/index.d.ts.map +1 -1
  45. package/dist/ui/index.js +2 -0
  46. package/package.json +1 -1
@@ -8,6 +8,7 @@ export * as PdfViewerStory from '../core/PdfViewer/PdfViewer.stories';
8
8
  export * as SectionStory from '../core/Section/Section.stories';
9
9
  export * as TypographyStory from '../core/Typography/Typography.stories';
10
10
  export * as VersionStory from '../core/Version/Version.stories';
11
+ export * as ActionMenuStory from '../ui/ActionMenu/ActionMenu.stories';
11
12
  export * as AvatarStory from '../ui/Avatar/Avatar.stories';
12
13
  export * as BadgeStory from '../ui/Badge/Badge.stories';
13
14
  export * as BreadcrumbsStory from '../ui/Breadcrumbs/Breadcrumbs.stories';
@@ -18,6 +19,7 @@ export * as EmptyStateStory from '../ui/EmptyState/EmptyState.stories';
18
19
  export * as ListItemStory from '../ui/ListItem/ListItem.stories';
19
20
  export * as LucideIconStory from '../ui/LucideIcon/LucideIcon.stories';
20
21
  export * as PageHeaderStory from '../ui/PageHeader/PageHeader.stories';
22
+ export * as PopoverStory from '../ui/Popover/Popover.stories';
21
23
  export * as ResourceListStory from '../ui/ResourceList/ResourceList.stories';
22
24
  export * as SidebarStory from '../ui/Sidebar/Sidebar.stories';
23
25
  export * as TabsStory from '../ui/Tabs/Tabs.stories';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/stories/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAC;AAC9C,OAAO,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AACpD,OAAO,KAAK,UAAU,MAAM,6BAA6B,CAAC;AAC1D,OAAO,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AACpD,OAAO,KAAK,aAAa,MAAM,mCAAmC,CAAC;AACnE,OAAO,KAAK,SAAS,MAAM,2BAA2B,CAAC;AACvD,OAAO,KAAK,cAAc,MAAM,qCAAqC,CAAC;AACtE,OAAO,KAAK,YAAY,MAAM,iCAAiC,CAAC;AAChE,OAAO,KAAK,eAAe,MAAM,uCAAuC,CAAC;AACzE,OAAO,KAAK,YAAY,MAAM,iCAAiC,CAAC;AAGhE,OAAO,KAAK,WAAW,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,UAAU,MAAM,2BAA2B,CAAC;AACxD,OAAO,KAAK,gBAAgB,MAAM,uCAAuC,CAAC;AAC1E,OAAO,KAAK,WAAW,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,SAAS,MAAM,yBAAyB,CAAC;AACrD,OAAO,KAAK,YAAY,MAAM,+BAA+B,CAAC;AAC9D,OAAO,KAAK,eAAe,MAAM,qCAAqC,CAAC;AACvE,OAAO,KAAK,aAAa,MAAM,iCAAiC,CAAC;AACjE,OAAO,KAAK,eAAe,MAAM,qCAAqC,CAAC;AACvE,OAAO,KAAK,eAAe,MAAM,qCAAqC,CAAC;AACvE,OAAO,KAAK,iBAAiB,MAAM,yCAAyC,CAAC;AAC7E,OAAO,KAAK,YAAY,MAAM,+BAA+B,CAAC;AAC9D,OAAO,KAAK,SAAS,MAAM,yBAAyB,CAAC;AACrD,OAAO,KAAK,QAAQ,MAAM,uBAAuB,CAAC;AAClD,OAAO,KAAK,qBAAqB,MAAM,iDAAiD,CAAC;AACzF,OAAO,KAAK,eAAe,MAAM,qCAAqC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/stories/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAC;AAC9C,OAAO,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AACpD,OAAO,KAAK,UAAU,MAAM,6BAA6B,CAAC;AAC1D,OAAO,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AACpD,OAAO,KAAK,aAAa,MAAM,mCAAmC,CAAC;AACnE,OAAO,KAAK,SAAS,MAAM,2BAA2B,CAAC;AACvD,OAAO,KAAK,cAAc,MAAM,qCAAqC,CAAC;AACtE,OAAO,KAAK,YAAY,MAAM,iCAAiC,CAAC;AAChE,OAAO,KAAK,eAAe,MAAM,uCAAuC,CAAC;AACzE,OAAO,KAAK,YAAY,MAAM,iCAAiC,CAAC;AAGhE,OAAO,KAAK,eAAe,MAAM,qCAAqC,CAAC;AACvE,OAAO,KAAK,WAAW,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,UAAU,MAAM,2BAA2B,CAAC;AACxD,OAAO,KAAK,gBAAgB,MAAM,uCAAuC,CAAC;AAC1E,OAAO,KAAK,WAAW,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,SAAS,MAAM,yBAAyB,CAAC;AACrD,OAAO,KAAK,YAAY,MAAM,+BAA+B,CAAC;AAC9D,OAAO,KAAK,eAAe,MAAM,qCAAqC,CAAC;AACvE,OAAO,KAAK,aAAa,MAAM,iCAAiC,CAAC;AACjE,OAAO,KAAK,eAAe,MAAM,qCAAqC,CAAC;AACvE,OAAO,KAAK,eAAe,MAAM,qCAAqC,CAAC;AACvE,OAAO,KAAK,YAAY,MAAM,+BAA+B,CAAC;AAC9D,OAAO,KAAK,iBAAiB,MAAM,yCAAyC,CAAC;AAC7E,OAAO,KAAK,YAAY,MAAM,+BAA+B,CAAC;AAC9D,OAAO,KAAK,SAAS,MAAM,yBAAyB,CAAC;AACrD,OAAO,KAAK,QAAQ,MAAM,uBAAuB,CAAC;AAClD,OAAO,KAAK,qBAAqB,MAAM,iDAAiD,CAAC;AACzF,OAAO,KAAK,eAAe,MAAM,qCAAqC,CAAC"}
@@ -10,6 +10,7 @@ export * as SectionStory from '../core/Section/Section.stories';
10
10
  export * as TypographyStory from '../core/Typography/Typography.stories';
11
11
  export * as VersionStory from '../core/Version/Version.stories';
12
12
  // UI
13
+ export * as ActionMenuStory from '../ui/ActionMenu/ActionMenu.stories';
13
14
  export * as AvatarStory from '../ui/Avatar/Avatar.stories';
14
15
  export * as BadgeStory from '../ui/Badge/Badge.stories';
15
16
  export * as BreadcrumbsStory from '../ui/Breadcrumbs/Breadcrumbs.stories';
@@ -20,6 +21,7 @@ export * as EmptyStateStory from '../ui/EmptyState/EmptyState.stories';
20
21
  export * as ListItemStory from '../ui/ListItem/ListItem.stories';
21
22
  export * as LucideIconStory from '../ui/LucideIcon/LucideIcon.stories';
22
23
  export * as PageHeaderStory from '../ui/PageHeader/PageHeader.stories';
24
+ export * as PopoverStory from '../ui/Popover/Popover.stories';
23
25
  export * as ResourceListStory from '../ui/ResourceList/ResourceList.stories';
24
26
  export * as SidebarStory from '../ui/Sidebar/Sidebar.stories';
25
27
  export * as TabsStory from '../ui/Tabs/Tabs.stories';
@@ -0,0 +1,10 @@
1
+ import { BoxProps, PopoverProps } from '@alveole/components';
2
+ import { ActionMenuItem } from './ActionMenuItem';
3
+ export type { ActionMenuItemProps } from './ActionMenuItem';
4
+ export type ActionMenuProps = BoxProps & PopoverProps;
5
+ declare const ActionMenuBase: (props: ActionMenuProps) => import("react/jsx-runtime").JSX.Element;
6
+ type ActionMenuCompoundComponent = typeof ActionMenuBase & {
7
+ Item: typeof ActionMenuItem;
8
+ };
9
+ export declare const ActionMenu: ActionMenuCompoundComponent;
10
+ //# sourceMappingURL=ActionMenu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionMenu.d.ts","sourceRoot":"","sources":["../../../src/ui/ActionMenu/ActionMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAW,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEtE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,YAAY,CAAC;AAEtD,QAAA,MAAM,cAAc,GAAI,OAAO,eAAe,4CAU7C,CAAC;AAEF,KAAK,2BAA2B,GAAG,OAAO,cAAc,GAAG;IACzD,IAAI,EAAE,OAAO,cAAc,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,2BAEvB,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Popover } from '@alveole/components';
3
+ import { Box } from '../../core';
4
+ import { ActionMenuItem } from './ActionMenuItem';
5
+ const ActionMenuBase = (props) => {
6
+ const { children, placement = 'bottom', renderTrigger, ...boxProps } = props;
7
+ return (_jsx(Popover, { placement: placement, renderTrigger: renderTrigger, children: _jsx(Box, { tag: "action-menu-content", ...boxProps, children: children }) }));
8
+ };
9
+ export const ActionMenu = Object.assign(ActionMenuBase, {
10
+ Item: ActionMenuItem,
11
+ });
@@ -0,0 +1,14 @@
1
+ declare const _default: {
2
+ title: string;
3
+ tags: "Components"[];
4
+ experimental: false;
5
+ figmaURL: string;
6
+ description: string;
7
+ component: ((props: import("./ActionMenu").ActionMenuProps) => import("react/jsx-runtime").JSX.Element) & {
8
+ Item: typeof import("./ActionMenuItem").ActionMenuItem;
9
+ };
10
+ styleFn: () => string;
11
+ };
12
+ export default _default;
13
+ export declare const Default: () => import("react/jsx-runtime").JSX.Element;
14
+ //# sourceMappingURL=ActionMenu.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionMenu.stories.d.ts","sourceRoot":"","sources":["../../../src/ui/ActionMenu/ActionMenu.stories.tsx"],"names":[],"mappings":";;;;;;;;;;;AAKA,wBAQkB;AAElB,eAAO,MAAM,OAAO,+CAuCnB,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box } from '../../core';
3
+ import { Button } from '../Button';
4
+ import { ActionMenu } from './ActionMenu';
5
+ export default {
6
+ title: 'ActionMenu',
7
+ tags: ['Components'],
8
+ experimental: false,
9
+ figmaURL: 'https://www.figma.com/design/xJz8Z6vfrnZPKTtRbuT2W8/Composants?node-id=1002-547',
10
+ description: 'Composant de type Box.',
11
+ component: ActionMenu,
12
+ styleFn: () => '',
13
+ };
14
+ export const Default = () => {
15
+ const alignments = [
16
+ 'top',
17
+ 'right',
18
+ 'bottom',
19
+ 'left',
20
+ 'top-start',
21
+ 'top-end',
22
+ 'right-start',
23
+ 'right-end',
24
+ 'bottom-start',
25
+ 'bottom-end',
26
+ 'left-start',
27
+ 'left-end',
28
+ ];
29
+ return (_jsx(Box, { display: "flex", flexWrap: "wrap", gap: "1W", flexDirection: "row", "justify-content": "center", "align-items": "center", width: "100%", children: alignments.map(alignment => (_jsxs(ActionMenu, { placement: alignment, renderTrigger: () => _jsx(Button, { variant: "secondary", title: alignment }), children: [_jsx(ActionMenu.Item, { title: "Contenu de l'action menu", icon: "Settings", selected: true }), _jsx(ActionMenu.Item, { title: "Contenu de l'action menu", icon: "Copy" }), _jsx(ActionMenu.Item, { title: "Contenu de l'action menu", icon: "Trash" })] }, alignment))) }));
30
+ };
@@ -0,0 +1,10 @@
1
+ import { BoxProps } from '../../core';
2
+ import { LucideIconProps } from '../LucideIcon';
3
+ export type ActionMenuItemProps = Omit<BoxProps, 'children'> & {
4
+ title: string;
5
+ icon?: LucideIconProps['name'];
6
+ onPress?: () => void;
7
+ selected?: boolean;
8
+ };
9
+ export declare const ActionMenuItem: (props: ActionMenuItemProps) => import("react/jsx-runtime").JSX.Element;
10
+ //# sourceMappingURL=ActionMenuItem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionMenuItem.d.ts","sourceRoot":"","sources":["../../../src/ui/ActionMenu/ActionMenuItem.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAO,QAAQ,EAAc,MAAM,YAAY,CAAC;AACvD,OAAO,EAAc,eAAe,EAAE,MAAM,eAAe,CAAC;AAI5D,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG;IAC7D,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,OAAO,mBAAmB,4CAmCxD,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Typography } from '../../core';
3
+ import { LucideIcon } from '../LucideIcon';
4
+ import { useStyles } from '../Sidebar/Sidebar.styles';
5
+ import { useStyles as useActionMenuItemStyles } from './ActionMenuItem.styles';
6
+ export const ActionMenuItem = (props) => {
7
+ const { title, icon, onPress, selected = false, style, ...boxProps } = props;
8
+ const styles = useStyles();
9
+ const actionMenuItemStyles = useActionMenuItemStyles();
10
+ const itemStyleSelected = selected ? styles.sidebarItemSelectedDesktop : {};
11
+ const titleStyleSelected = selected ? styles.sidebarItemTitleSelectedDesktop : {};
12
+ const sidebarItemHover = selected ? styles.sidebarItemCurrentHover : styles.sidebarItemHover;
13
+ const sidebarItemTitleDesktop = selected ? styles.sidebarItemTitleCurrentHoverDesktop : {};
14
+ return (_jsx(Box, { tag: "action-menu-item", onPress: onPress, style: style, ...boxProps, children: _jsxs(Box, { style: { ...styles.sidebarItemContainerDesktop, ...actionMenuItemStyles.actionMenuItemContainerDesktop }, children: [selected && (_jsx(Box, { tag: "sidebar-item-indicator", style: styles.sidebarItemSelectedIndicator, children: _jsx(Box, { style: styles.sidebarItemSelectedIndicatorContent }) })), _jsxs(Box, { tag: "sidebar-item", style: { ...styles.sidebarItemDesktop, ...itemStyleSelected }, hoverStyle: { ...sidebarItemHover }, children: [icon && _jsx(LucideIcon, { size: "md", name: icon }), _jsx(Typography, { style: { ...styles.sidebarItemTitleDesktop, ...titleStyleSelected }, hoverStyle: { ...sidebarItemTitleDesktop }, children: title })] })] }) }));
15
+ };
@@ -0,0 +1,6 @@
1
+ export declare const useStyles: () => {
2
+ actionMenuItemContainerDesktop: {
3
+ margin: number;
4
+ };
5
+ };
6
+ //# sourceMappingURL=ActionMenuItem.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionMenuItem.styles.d.ts","sourceRoot":"","sources":["../../../src/ui/ActionMenu/ActionMenuItem.styles.tsx"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS;;;;CAInB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { makeStyles } from '@alveole/theme';
2
+ export const useStyles = makeStyles(() => ({
3
+ actionMenuItemContainerDesktop: {
4
+ margin: 0,
5
+ },
6
+ }));
@@ -0,0 +1,2 @@
1
+ export * from './ActionMenu';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/ActionMenu/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC"}
@@ -0,0 +1 @@
1
+ export * from './ActionMenu';
@@ -8,6 +8,7 @@ export type ButtonProps = Omit<PressableProps, 'children' | 'style'> & {
8
8
  variant: 'primary' | 'secondary' | 'tertiary' | 'danger' | 'link';
9
9
  startIcon?: IconProps['name'];
10
10
  endIcon?: IconProps['name'];
11
+ selected?: boolean;
11
12
  ContainerProps?: BoxProps;
12
13
  fullWidth?: boolean;
13
14
  noPadding?: boolean;
@@ -22,6 +23,7 @@ export declare const Button: React.ForwardRefExoticComponent<Omit<PressableProps
22
23
  variant: "primary" | "secondary" | "tertiary" | "danger" | "link";
23
24
  startIcon?: IconProps["name"];
24
25
  endIcon?: IconProps["name"];
26
+ selected?: boolean;
25
27
  ContainerProps?: BoxProps;
26
28
  fullWidth?: boolean;
27
29
  noPadding?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../src/ui/Button/Button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAC7C,OAAO,EAA0C,cAAc,EAA8B,IAAI,EAAE,MAAM,cAAc,CAAC;AACxH,OAAO,EAAO,QAAQ,EAAc,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,SAAS,EAAc,MAAM,eAAe,CAAC;AAOtD,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,UAAU,GAAG,OAAO,CAAC,GAAG;IACrE,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACjC,OAAO,EAAE,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,CAAC;IAClE,SAAS,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IAC9B,OAAO,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IAC5B,cAAc,CAAC,EAAE,QAAQ,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC3B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,MAAM;WAdV,MAAM;WACN,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;aACvB,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM;gBACrD,SAAS,CAAC,MAAM,CAAC;cACnB,SAAS,CAAC,MAAM,CAAC;qBACV,QAAQ;gBACb,OAAO;gBACP,OAAO;iBACN,OAAO;gBACR,OAAO;WACZ,QAAQ,GAAG,QAAQ;gBACd,OAAO;8BAkMnB,CAAC"}
1
+ {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../src/ui/Button/Button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAC7C,OAAO,EAA0C,cAAc,EAA8B,IAAI,EAAE,MAAM,cAAc,CAAC;AACxH,OAAO,EAAO,QAAQ,EAAc,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,SAAS,EAAc,MAAM,eAAe,CAAC;AAOtD,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,UAAU,GAAG,OAAO,CAAC,GAAG;IACrE,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACjC,OAAO,EAAE,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,CAAC;IAClE,SAAS,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IAC9B,OAAO,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,QAAQ,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC3B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,MAAM;WAfV,MAAM;WACN,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;aACvB,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM;gBACrD,SAAS,CAAC,MAAM,CAAC;cACnB,SAAS,CAAC,MAAM,CAAC;eAChB,OAAO;qBACD,QAAQ;gBACb,OAAO;gBACP,OAAO;iBACN,OAAO;gBACR,OAAO;WACZ,QAAQ,GAAG,QAAQ;gBACd,OAAO;8BA0MnB,CAAC"}
@@ -5,7 +5,7 @@ import { Box, Typography } from '../../core';
5
5
  import { LucideIcon } from '../LucideIcon';
6
6
  import { useStyles } from './Button.styles';
7
7
  export const Button = React.forwardRef(function Button(props, ref) {
8
- const { title, type, size, variant, disabled, startIcon, endIcon, noPadding, borderNone, leftAlign, isLoading, fullWidth = false, ContainerProps = {}, ...buttonProps } = props;
8
+ const { title, type, size, variant, disabled, startIcon, endIcon, noPadding, borderNone, leftAlign, isLoading, selected, fullWidth = false, ContainerProps = {}, ...buttonProps } = props;
9
9
  const { style, hoverStyle, ...containerProps } = ContainerProps;
10
10
  const styles = useStyles();
11
11
  const containerSize = size === 'sm'
@@ -35,7 +35,10 @@ export const Button = React.forwardRef(function Button(props, ref) {
35
35
  : styles.mdContainerEndIcon
36
36
  : {}),
37
37
  };
38
- if (variant === 'primary') {
38
+ if (selected) {
39
+ applicableStyles = { ...applicableStyles, ...styles.selectedContainer };
40
+ }
41
+ else if (variant === 'primary') {
39
42
  applicableStyles = { ...applicableStyles, ...styles.primaryContainer };
40
43
  if (disabled)
41
44
  applicableStyles = { ...applicableStyles, ...styles.primaryContainerDisabled };
@@ -82,7 +85,9 @@ export const Button = React.forwardRef(function Button(props, ref) {
82
85
  const buttonContainerHoverStyle = () => {
83
86
  if (disabled)
84
87
  return {};
85
- if (variant === 'primary')
88
+ if (selected)
89
+ return styles.selectedContainerHover;
90
+ else if (variant === 'primary')
86
91
  return styles.primaryContainerHover;
87
92
  else if (variant === 'secondary')
88
93
  return styles.secondaryContainerHover;
@@ -95,7 +100,10 @@ export const Button = React.forwardRef(function Button(props, ref) {
95
100
  };
96
101
  const textStyle = (state) => {
97
102
  let applicableStyles = styles.title;
98
- if (variant === 'primary') {
103
+ if (selected) {
104
+ applicableStyles = { ...applicableStyles, ...styles.selectedTitle };
105
+ }
106
+ else if (variant === 'primary') {
99
107
  applicableStyles = { ...applicableStyles, ...styles.primaryTitle };
100
108
  if (disabled)
101
109
  applicableStyles = { ...applicableStyles, ...styles.primaryTitleDisabled };
@@ -136,7 +144,10 @@ export const Button = React.forwardRef(function Button(props, ref) {
136
144
  };
137
145
  const iconStyle = (state) => {
138
146
  const iconSize = size === 'lg' ? 'md' : 'sm';
139
- if (variant === 'primary') {
147
+ if (selected) {
148
+ return { size: iconSize, color: styles.selectedIcon.color };
149
+ }
150
+ else if (variant === 'primary') {
140
151
  if (disabled)
141
152
  return { size: iconSize, color: styles.primaryIconDisabled.color };
142
153
  else if (state.hovered)
@@ -10,6 +10,7 @@ declare const _default: {
10
10
  variant: "primary" | "secondary" | "tertiary" | "danger" | "link";
11
11
  startIcon?: import("..").IconProps["name"];
12
12
  endIcon?: import("..").IconProps["name"];
13
+ selected?: boolean;
13
14
  ContainerProps?: import("../..").BoxProps;
14
15
  fullWidth?: boolean;
15
16
  noPadding?: boolean;
@@ -129,6 +130,18 @@ declare const _default: {
129
130
  linkContainerPressed: {
130
131
  backgroundColor: "transparent";
131
132
  };
133
+ selectedContainer: {
134
+ backgroundColor: "#F2F9FF";
135
+ borderColor: "#0264C7";
136
+ borderWidth: number;
137
+ };
138
+ selectedContainerHover: {};
139
+ selectedTitle: {
140
+ color: "#012B53";
141
+ };
142
+ selectedIcon: {
143
+ color: "#012B53";
144
+ };
132
145
  xsContainer: {
133
146
  paddingLeft: import("@alveole/theme").Spacing;
134
147
  paddingRight: import("@alveole/theme").Spacing;
@@ -294,4 +307,5 @@ export declare const Danger: () => import("react/jsx-runtime").JSX.Element;
294
307
  export declare const Link: () => import("react/jsx-runtime").JSX.Element;
295
308
  export declare const Icons: () => import("react/jsx-runtime").JSX.Element;
296
309
  export declare const FullWidth: () => import("react/jsx-runtime").JSX.Element;
310
+ export declare const Selected: () => import("react/jsx-runtime").JSX.Element;
297
311
  //# sourceMappingURL=Button.stories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Button.stories.d.ts","sourceRoot":"","sources":["../../../src/ui/Button/Button.stories.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,wBAQkB;AAElB,eAAO,MAAM,KAAK,+CAMjB,CAAC;AAEF,eAAO,MAAM,OAAO,+CAKnB,CAAC;AAEF,eAAO,MAAM,SAAS,+CAKrB,CAAC;AAEF,eAAO,MAAM,QAAQ,+CAKpB,CAAC;AAEF,eAAO,MAAM,MAAM,+CAKlB,CAAC;AAEF,eAAO,MAAM,IAAI,+CAKhB,CAAC;AAEF,eAAO,MAAM,KAAK,+CAQjB,CAAC;AAEF,eAAO,MAAM,SAAS,+CAIrB,CAAC"}
1
+ {"version":3,"file":"Button.stories.d.ts","sourceRoot":"","sources":["../../../src/ui/Button/Button.stories.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,wBAQkB;AAElB,eAAO,MAAM,KAAK,+CAMjB,CAAC;AAEF,eAAO,MAAM,OAAO,+CAKnB,CAAC;AAEF,eAAO,MAAM,SAAS,+CAKrB,CAAC;AAEF,eAAO,MAAM,QAAQ,+CAKpB,CAAC;AAEF,eAAO,MAAM,MAAM,+CAKlB,CAAC;AAEF,eAAO,MAAM,IAAI,+CAQhB,CAAC;AAEF,eAAO,MAAM,KAAK,+CAQjB,CAAC;AAEF,eAAO,MAAM,SAAS,+CAAkE,CAAC;AAEzF,eAAO,MAAM,QAAQ,+CAIpB,CAAC"}
@@ -1,5 +1,5 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Box } from '../../core';
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { Box, Typography } from '../../core';
3
3
  import { Button } from './Button';
4
4
  import { useStyles } from './Button.styles';
5
5
  import { ButtonIcon } from './ButtonIcon';
@@ -17,6 +17,7 @@ export const Primary = () => (_jsxs(Box, { display: "flex", flexDirection: "row"
17
17
  export const Secondary = () => (_jsxs(Box, { display: "flex", flexDirection: "row", gap: 4, children: [_jsx(Button, { variant: "secondary", title: "Bouton secondary" }), _jsx(Button, { variant: "secondary", title: "Disabled", disabled: true })] }));
18
18
  export const Tertiary = () => (_jsxs(Box, { display: "flex", flexDirection: "row", gap: 4, children: [_jsx(Button, { variant: "tertiary", title: "Bouton tertiary" }), _jsx(Button, { variant: "tertiary", title: "Disabled", disabled: true })] }));
19
19
  export const Danger = () => (_jsxs(Box, { display: "flex", flexDirection: "row", gap: 4, children: [_jsx(Button, { variant: "danger", title: "Bouton danger" }), _jsx(Button, { variant: "danger", title: "Disabled", disabled: true })] }));
20
- export const Link = () => (_jsxs(Box, { display: "flex", flexDirection: "row", gap: 4, children: [_jsx(Button, { variant: "link", title: "Bouton link" }), _jsx(Button, { variant: "link", title: "Disabled", disabled: true })] }));
20
+ export const Link = () => (_jsxs(_Fragment, { children: [_jsx(Typography, { children: "Deprecated" }), _jsxs(Box, { display: "flex", flexDirection: "row", gap: 4, children: [_jsx(Button, { variant: "link", title: "Bouton link" }), _jsx(Button, { variant: "link", title: "Disabled", disabled: true })] })] }));
21
21
  export const Icons = () => (_jsxs(Box, { display: "flex", flexDirection: "row", gap: 4, children: [_jsx(Button, { variant: "primary", title: "Start Icon", startIcon: "Plus" }), _jsx(Button, { variant: "primary", title: "End Icon", endIcon: "Plus" }), _jsx(Button, { variant: "primary", title: "End Icon", endIcon: "Plus" }), _jsx(ButtonIcon, { variant: "primary", icon: "CircleUser" }), _jsx(ButtonIcon, { variant: "primary", icon: "CircleUser" })] }));
22
- export const FullWidth = () => (_jsx(Box, { display: "flex", flexDirection: "row", gap: 6, children: _jsx(Button, { variant: "primary", title: "Full Width", fullWidth: true }) }));
22
+ export const FullWidth = () => _jsx(Button, { variant: "primary", title: "Full Width", fullWidth: true });
23
+ export const Selected = () => (_jsx(Box, { display: "flex", flexDirection: "row", gap: 4, children: _jsx(Button, { variant: "secondary", title: "Selected", selected: true }) }));
@@ -109,6 +109,18 @@ export declare const useStyles: () => {
109
109
  linkContainerPressed: {
110
110
  backgroundColor: "transparent";
111
111
  };
112
+ selectedContainer: {
113
+ backgroundColor: "#F2F9FF";
114
+ borderColor: "#0264C7";
115
+ borderWidth: number;
116
+ };
117
+ selectedContainerHover: {};
118
+ selectedTitle: {
119
+ color: "#012B53";
120
+ };
121
+ selectedIcon: {
122
+ color: "#012B53";
123
+ };
112
124
  xsContainer: {
113
125
  paddingLeft: import("@alveole/theme").Spacing;
114
126
  paddingRight: import("@alveole/theme").Spacing;
@@ -1 +1 @@
1
- {"version":3,"file":"Button.styles.d.ts","sourceRoot":"","sources":["../../../src/ui/Button/Button.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoQnB,CAAC"}
1
+ {"version":3,"file":"Button.styles.d.ts","sourceRoot":"","sources":["../../../src/ui/Button/Button.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiRnB,CAAC"}
@@ -111,6 +111,18 @@ export const useStyles = makeStyles(({ text, color, spacing, radius }) => ({
111
111
  linkContainerPressed: {
112
112
  backgroundColor: color.background.button.tertiary.default,
113
113
  },
114
+ selectedContainer: {
115
+ backgroundColor: color.light.background['alt-primary'],
116
+ borderColor: color.light.border['default-primary'],
117
+ borderWidth: 1,
118
+ },
119
+ selectedContainerHover: {},
120
+ selectedTitle: {
121
+ color: color.light.text['action-high-primary'],
122
+ },
123
+ selectedIcon: {
124
+ color: color.light.text['action-high-primary'],
125
+ },
114
126
  // Sizes
115
127
  xsContainer: {
116
128
  paddingLeft: spacing('075'),
@@ -5,5 +5,5 @@ export const CardHeader = (props) => {
5
5
  const { variant = 'default', titre, sousTitre, image, badge, style, children, ...boxProps } = props;
6
6
  const styles = useStyles();
7
7
  const disabledTextStyle = variant === 'disabled' ? styles.disabledText : {};
8
- return (_jsxs(Box, { tag: "card-header", style: [styles.cardHeader, disabledTextStyle, style], ...boxProps, children: [image, _jsxs(Box, { tag: "card-header-texte", style: styles.texte, children: [_jsx(Typography, { style: [styles.titre, disabledTextStyle], children: titre }), _jsx(Typography, { style: [styles.sousTitre, disabledTextStyle], children: sousTitre })] }), badge] }));
8
+ return (_jsxs(Box, { tag: "card-header", style: [styles.cardHeader, disabledTextStyle, style], ...boxProps, children: [image, _jsxs(Box, { tag: "card-header-texte", style: styles.texte, children: [_jsx(Typography, { style: [styles.titre, disabledTextStyle], children: titre }), sousTitre && _jsx(Typography, { style: [styles.sousTitre, disabledTextStyle], children: sousTitre })] }), badge] }));
9
9
  };
@@ -8,10 +8,10 @@ export type IconName = LucideIconName | LabIconName;
8
8
  export declare const isLucideIconName: (name: string) => name is LucideIconName;
9
9
  declare const PublicPropsSchema: z.ZodObject<{
10
10
  size: z.ZodEnum<{
11
+ xs: "xs";
11
12
  sm: "sm";
12
13
  md: "md";
13
14
  lg: "lg";
14
- xs: "xs";
15
15
  xl: "xl";
16
16
  }>;
17
17
  name: z.ZodEnum<{
@@ -20,7 +20,6 @@ declare const PublicPropsSchema: z.ZodObject<{
20
20
  olive: "olive";
21
21
  Menu: "Menu";
22
22
  toolbox: "toolbox";
23
- Image: "Image";
24
23
  AArrowDown: "AArrowDown";
25
24
  AArrowUp: "AArrowUp";
26
25
  ALargeSmall: "ALargeSmall";
@@ -835,6 +834,7 @@ declare const PublicPropsSchema: z.ZodObject<{
835
834
  IceCreamCone: "IceCreamCone";
836
835
  IdCard: "IdCard";
837
836
  IdCardLanyard: "IdCardLanyard";
837
+ Image: "Image";
838
838
  ImageDown: "ImageDown";
839
839
  ImageMinus: "ImageMinus";
840
840
  ImageOff: "ImageOff";
@@ -2106,10 +2106,10 @@ type PrivateProps = {
2106
2106
  export type LucideIconProps = z.infer<typeof PublicPropsSchema> & PrivateProps;
2107
2107
  export declare const LucideIconPropsJSON: z.core.ZodStandardJSONSchemaPayload<z.ZodObject<{
2108
2108
  size: z.ZodEnum<{
2109
+ xs: "xs";
2109
2110
  sm: "sm";
2110
2111
  md: "md";
2111
2112
  lg: "lg";
2112
- xs: "xs";
2113
2113
  xl: "xl";
2114
2114
  }>;
2115
2115
  name: z.ZodEnum<{
@@ -2118,7 +2118,6 @@ export declare const LucideIconPropsJSON: z.core.ZodStandardJSONSchemaPayload<z.
2118
2118
  olive: "olive";
2119
2119
  Menu: "Menu";
2120
2120
  toolbox: "toolbox";
2121
- Image: "Image";
2122
2121
  AArrowDown: "AArrowDown";
2123
2122
  AArrowUp: "AArrowUp";
2124
2123
  ALargeSmall: "ALargeSmall";
@@ -2933,6 +2932,7 @@ export declare const LucideIconPropsJSON: z.core.ZodStandardJSONSchemaPayload<z.
2933
2932
  IceCreamCone: "IceCreamCone";
2934
2933
  IdCard: "IdCard";
2935
2934
  IdCardLanyard: "IdCardLanyard";
2935
+ Image: "Image";
2936
2936
  ImageDown: "ImageDown";
2937
2937
  ImageMinus: "ImageMinus";
2938
2938
  ImageOff: "ImageOff";
@@ -6,10 +6,10 @@ declare const _default: {
6
6
  description: string;
7
7
  props: import("zod/v4/core").ZodStandardJSONSchemaPayload<import("zod").ZodObject<{
8
8
  size: import("zod").ZodEnum<{
9
+ xs: "xs";
9
10
  sm: "sm";
10
11
  md: "md";
11
12
  lg: "lg";
12
- xs: "xs";
13
13
  xl: "xl";
14
14
  }>;
15
15
  name: import("zod").ZodEnum<{
@@ -18,7 +18,6 @@ declare const _default: {
18
18
  olive: "olive";
19
19
  Menu: "Menu";
20
20
  toolbox: "toolbox";
21
- Image: "Image";
22
21
  AArrowDown: "AArrowDown";
23
22
  AArrowUp: "AArrowUp";
24
23
  ALargeSmall: "ALargeSmall";
@@ -833,6 +832,7 @@ declare const _default: {
833
832
  IceCreamCone: "IceCreamCone";
834
833
  IdCard: "IdCard";
835
834
  IdCardLanyard: "IdCardLanyard";
835
+ Image: "Image";
836
836
  ImageDown: "ImageDown";
837
837
  ImageMinus: "ImageMinus";
838
838
  ImageOff: "ImageOff";
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ import { PopoverProps as TamaguiPopoverProps } from 'tamagui';
3
+ export type PopoverStyles = {
4
+ maxW?: number;
5
+ maxH?: number;
6
+ };
7
+ export type PopoverProps = PopoverStyles & React.PropsWithChildren<{
8
+ placement: TamaguiPopoverProps['placement'];
9
+ renderTrigger: (context: {
10
+ open: boolean;
11
+ }) => React.ReactNode;
12
+ }>;
13
+ export declare const Popover: (props: PopoverProps) => import("react/jsx-runtime").JSX.Element;
14
+ //# sourceMappingURL=Popover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Popover.d.ts","sourceRoot":"","sources":["../../../src/ui/Popover/Popover.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAyC,YAAY,IAAI,mBAAmB,EAAU,MAAM,SAAS,CAAC;AAG7G,MAAM,MAAM,aAAa,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAC7D,MAAM,MAAM,YAAY,GAAG,aAAa,GACtC,KAAK,CAAC,iBAAiB,CAAC;IACtB,SAAS,EAAE,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAC5C,aAAa,EAAE,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,KAAK,KAAK,CAAC,SAAS,CAAC;CAChE,CAAC,CAAC;AAEL,eAAO,MAAM,OAAO,GAAI,OAAO,YAAY,4CAqC1C,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useTheme } from '@alveole/theme';
3
+ import React from 'react';
4
+ import { ScrollView, Popover as TamaguiPopover, YStack } from 'tamagui';
5
+ import { useStyles } from './Popover.styles';
6
+ export const Popover = (props) => {
7
+ const { children, placement, renderTrigger, ...popoverStyles } = props;
8
+ const [open, setOpen] = React.useState(false);
9
+ const styles = useStyles();
10
+ const { spacing } = useTheme();
11
+ const spacings = {
12
+ p: 0,
13
+ mr: placement?.includes('left') ? spacing('025') : undefined,
14
+ mb: placement?.includes('top') ? spacing('025') : undefined,
15
+ ml: placement?.includes('right') ? spacing('025') : undefined,
16
+ mt: placement?.includes('bottom') ? spacing('025') : undefined,
17
+ };
18
+ const maxH = popoverStyles.maxH ?? 500;
19
+ const maxW = popoverStyles.maxW ?? '100%';
20
+ return (_jsxs(TamaguiPopover, { placement: placement, disableFocus: true, open: open, onOpenChange: setOpen, children: [_jsx(TamaguiPopover.Trigger, { asChild: true, children: renderTrigger({ open }) }), _jsx(TamaguiPopover.Content, { trapFocus: false, disableFocusScope: true, overflow: "hidden", style: { maxHeight: maxH, maxWidth: maxW }, ...spacings, ...styles.content, children: _jsx(YStack, { style: { maxHeight: maxH, overflow: 'hidden' }, children: _jsx(ScrollView, { style: { maxHeight: maxH - spacing('025') }, children: children }) }) })] }));
21
+ };
@@ -0,0 +1,53 @@
1
+ declare const _default: {
2
+ title: string;
3
+ tags: "Kit"[];
4
+ experimental: false;
5
+ description: string;
6
+ figmaURL: string;
7
+ component: (props: import("@alveole/components").PopoverProps) => import("react/jsx-runtime").JSX.Element;
8
+ styleFn: () => {
9
+ content: {
10
+ display: "flex";
11
+ padding: import("@alveole/theme").Spacing;
12
+ flexDirection: "column";
13
+ alignItems: "flex-start";
14
+ borderRadius: import("@alveole/theme/dist/constants/Radius").Radius;
15
+ borderWidth: number;
16
+ borderStyle: "solid";
17
+ borderColor: "#DEE3EC";
18
+ backgroundColor: "#FFFFFF";
19
+ } | {
20
+ shadowColor: import("@alveole/theme").Color;
21
+ shadowOffset: {
22
+ width: number;
23
+ height: number;
24
+ };
25
+ shadowOpacity: number;
26
+ shadowRadius: number;
27
+ elevation: number;
28
+ display: "flex";
29
+ padding: import("@alveole/theme").Spacing;
30
+ flexDirection: "column";
31
+ alignItems: "flex-start";
32
+ borderRadius: import("@alveole/theme/dist/constants/Radius").Radius;
33
+ borderWidth: number;
34
+ borderStyle: "solid";
35
+ borderColor: "#DEE3EC";
36
+ backgroundColor: "#FFFFFF";
37
+ } | {
38
+ boxShadow: string;
39
+ display: "flex";
40
+ padding: import("@alveole/theme").Spacing;
41
+ flexDirection: "column";
42
+ alignItems: "flex-start";
43
+ borderRadius: import("@alveole/theme/dist/constants/Radius").Radius;
44
+ borderWidth: number;
45
+ borderStyle: "solid";
46
+ borderColor: "#DEE3EC";
47
+ backgroundColor: "#FFFFFF";
48
+ };
49
+ };
50
+ };
51
+ export default _default;
52
+ export declare const Default: () => import("react/jsx-runtime").JSX.Element;
53
+ //# sourceMappingURL=Popover.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Popover.stories.d.ts","sourceRoot":"","sources":["../../../src/ui/Popover/Popover.stories.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,wBASkB;AAElB,eAAO,MAAM,OAAO,+CA2BnB,CAAA"}
@@ -0,0 +1,30 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Box, Button, Typography } from '@alveole/components';
3
+ import { Popover } from './Popover';
4
+ import { useStyles } from './Popover.styles';
5
+ export default {
6
+ title: 'Popover',
7
+ tags: ['Kit'],
8
+ experimental: false,
9
+ description: 'Zone cliquable avec ouverture d’un Popover (Tamagui Popover).',
10
+ figmaURL: 'https://www.figma.com/design/xJz8Z6vfrnZPKTtRbuT2W8/Alveole---Composants?node-id=2881-442&t=A0jkRqZdoWBKbIWd-4',
11
+ component: Popover,
12
+ styleFn: useStyles,
13
+ };
14
+ export const Default = () => {
15
+ const alignments = [
16
+ 'top',
17
+ 'right',
18
+ 'bottom',
19
+ 'left',
20
+ 'top-start',
21
+ 'top-end',
22
+ 'right-start',
23
+ 'right-end',
24
+ 'bottom-start',
25
+ 'bottom-end',
26
+ 'left-start',
27
+ 'left-end'
28
+ ];
29
+ return (_jsx(Box, { display: "flex", flexWrap: "wrap", gap: "1W", flexDirection: "row", "justify-content": "center", "align-items": "center", width: "100%", children: alignments.map((alignment) => (_jsx(Popover, { placement: alignment, renderTrigger: () => _jsx(Button, { variant: "secondary", title: alignment }), children: _jsx(Typography, { children: "Contenu du popover" }) }, alignment))) }));
30
+ };
@@ -0,0 +1,43 @@
1
+ export declare const useStyles: () => {
2
+ content: {
3
+ display: "flex";
4
+ padding: import("@alveole/theme").Spacing;
5
+ flexDirection: "column";
6
+ alignItems: "flex-start";
7
+ borderRadius: import("@alveole/theme/dist/constants/Radius").Radius;
8
+ borderWidth: number;
9
+ borderStyle: "solid";
10
+ borderColor: "#DEE3EC";
11
+ backgroundColor: "#FFFFFF";
12
+ } | {
13
+ shadowColor: import("@alveole/theme").Color;
14
+ shadowOffset: {
15
+ width: number;
16
+ height: number;
17
+ };
18
+ shadowOpacity: number;
19
+ shadowRadius: number;
20
+ elevation: number;
21
+ display: "flex";
22
+ padding: import("@alveole/theme").Spacing;
23
+ flexDirection: "column";
24
+ alignItems: "flex-start";
25
+ borderRadius: import("@alveole/theme/dist/constants/Radius").Radius;
26
+ borderWidth: number;
27
+ borderStyle: "solid";
28
+ borderColor: "#DEE3EC";
29
+ backgroundColor: "#FFFFFF";
30
+ } | {
31
+ boxShadow: string;
32
+ display: "flex";
33
+ padding: import("@alveole/theme").Spacing;
34
+ flexDirection: "column";
35
+ alignItems: "flex-start";
36
+ borderRadius: import("@alveole/theme/dist/constants/Radius").Radius;
37
+ borderWidth: number;
38
+ borderStyle: "solid";
39
+ borderColor: "#DEE3EC";
40
+ backgroundColor: "#FFFFFF";
41
+ };
42
+ };
43
+ //# sourceMappingURL=Popover.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Popover.styles.d.ts","sourceRoot":"","sources":["../../../src/ui/Popover/Popover.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAanB,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { makeStyles } from '@alveole/theme';
2
+ export const useStyles = makeStyles(({ color, spacing, shadows, radius }) => ({
3
+ content: {
4
+ display: 'flex',
5
+ padding: spacing('1W'),
6
+ flexDirection: 'column',
7
+ alignItems: 'flex-start',
8
+ borderRadius: radius('lg'),
9
+ borderWidth: 1,
10
+ borderStyle: 'solid',
11
+ borderColor: color.light.border['default-grey'],
12
+ backgroundColor: color.light.background['active-inverted'],
13
+ ...shadows(2),
14
+ },
15
+ }));
@@ -0,0 +1,2 @@
1
+ export * from './Popover';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/Popover/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC"}
@@ -0,0 +1 @@
1
+ export * from './Popover';
@@ -1,3 +1,4 @@
1
+ export * from './ActionMenu';
1
2
  export * from './Avatar';
2
3
  export * from './Badge';
3
4
  export * from './Breadcrumbs';
@@ -8,6 +9,7 @@ export * from './EmptyState';
8
9
  export * from './ListItem';
9
10
  export * from './LucideIcon';
10
11
  export * from './PageHeader';
12
+ export * from './Popover';
11
13
  export * from './ResourceList';
12
14
  export * from './Sidebar';
13
15
  export * from './Tabs';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC"}
package/dist/ui/index.js CHANGED
@@ -1,3 +1,4 @@
1
+ export * from './ActionMenu';
1
2
  export * from './Avatar';
2
3
  export * from './Badge';
3
4
  export * from './Breadcrumbs';
@@ -8,6 +9,7 @@ export * from './EmptyState';
8
9
  export * from './ListItem';
9
10
  export * from './LucideIcon';
10
11
  export * from './PageHeader';
12
+ export * from './Popover';
11
13
  export * from './ResourceList';
12
14
  export * from './Sidebar';
13
15
  export * from './Tabs';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alveole/components",
3
- "version": "0.29.3",
3
+ "version": "0.30.0",
4
4
  "description": "Shared UI components.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",