@clicoh/orion-library 1.2.0-beta.7 → 1.2.0-beta.8

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/components/01-atoms/IconButton/IconButton.d.ts +28 -0
  2. package/dist/components/01-atoms/IconButton/IconButton.d.ts.map +1 -0
  3. package/dist/components/01-atoms/IconButton/IconButton.jsx +32 -0
  4. package/dist/components/01-atoms/IconButton/IconButton.jsx.map +1 -0
  5. package/dist/components/01-atoms/IconButton/index.d.ts +2 -0
  6. package/dist/components/01-atoms/IconButton/index.d.ts.map +1 -0
  7. package/dist/components/01-atoms/IconButton/index.js +2 -0
  8. package/dist/components/01-atoms/IconButton/index.js.map +1 -0
  9. package/dist/components/01-atoms/ProgressBar/ProgressBar.d.ts +12 -1
  10. package/dist/components/01-atoms/ProgressBar/ProgressBar.d.ts.map +1 -1
  11. package/dist/components/01-atoms/ProgressBar/ProgressBar.jsx +18 -2
  12. package/dist/components/01-atoms/ProgressBar/ProgressBar.jsx.map +1 -1
  13. package/dist/components/01-atoms/index.d.ts +1 -0
  14. package/dist/components/01-atoms/index.d.ts.map +1 -1
  15. package/dist/components/01-atoms/index.js +1 -0
  16. package/dist/components/01-atoms/index.js.map +1 -1
  17. package/dist/components/02-molecules/Accordion/Accordion.d.ts +15 -4
  18. package/dist/components/02-molecules/Accordion/Accordion.d.ts.map +1 -1
  19. package/dist/components/02-molecules/Accordion/Accordion.jsx +20 -6
  20. package/dist/components/02-molecules/Accordion/Accordion.jsx.map +1 -1
  21. package/dist/components/02-molecules/Accordion/AccordionContext.d.ts +5 -1
  22. package/dist/components/02-molecules/Accordion/AccordionContext.d.ts.map +1 -1
  23. package/dist/components/02-molecules/Accordion/AccordionContext.jsx +4 -3
  24. package/dist/components/02-molecules/Accordion/AccordionContext.jsx.map +1 -1
  25. package/dist/components/02-molecules/Accordion/AccordionSection.d.ts +2 -1
  26. package/dist/components/02-molecules/Accordion/AccordionSection.d.ts.map +1 -1
  27. package/dist/components/02-molecules/Accordion/AccordionSection.jsx +35 -8
  28. package/dist/components/02-molecules/Accordion/AccordionSection.jsx.map +1 -1
  29. package/dist/components/02-molecules/Accordion/index.d.ts +1 -0
  30. package/dist/components/02-molecules/Accordion/index.d.ts.map +1 -1
  31. package/dist/components/02-molecules/Accordion/index.js.map +1 -1
  32. package/dist/components/02-molecules/Filter/Filter.d.ts.map +1 -1
  33. package/dist/components/02-molecules/Filter/Filter.jsx +45 -1
  34. package/dist/components/02-molecules/Filter/Filter.jsx.map +1 -1
  35. package/dist/components/02-molecules/ImageViewer/ImageViewer.d.ts +35 -5
  36. package/dist/components/02-molecules/ImageViewer/ImageViewer.d.ts.map +1 -1
  37. package/dist/components/02-molecules/ImageViewer/ImageViewer.jsx +54 -13
  38. package/dist/components/02-molecules/ImageViewer/ImageViewer.jsx.map +1 -1
  39. package/dist/components/02-molecules/ImageViewer/ImageViewerImage.d.ts +40 -0
  40. package/dist/components/02-molecules/ImageViewer/ImageViewerImage.d.ts.map +1 -0
  41. package/dist/components/02-molecules/ImageViewer/ImageViewerImage.jsx +108 -0
  42. package/dist/components/02-molecules/ImageViewer/ImageViewerImage.jsx.map +1 -0
  43. package/dist/components/04-templates/SideFilterTemplate/SideFilterTemplate.d.ts.map +1 -1
  44. package/dist/components/04-templates/SideFilterTemplate/SideFilterTemplate.jsx +4 -1
  45. package/dist/components/04-templates/SideFilterTemplate/SideFilterTemplate.jsx.map +1 -1
  46. package/package.json +1 -1
@@ -0,0 +1,28 @@
1
+ import type { ButtonHTMLAttributes, ComponentProps, ReactNode } from 'react';
2
+ import { Tooltip } from '../Tooltip';
3
+ export type IconButtonProps = {
4
+ icon: ReactNode;
5
+ label: string;
6
+ tooltipPlacement?: ComponentProps<typeof Tooltip>['placement'];
7
+ } & Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children' | 'aria-label'>;
8
+ /**
9
+ * Button that shows only an icon, for secondary actions in dense rows (lists,
10
+ * timelines, cards). The `label` is required because the icon alone says
11
+ * nothing to a screen reader or to someone who does not recognise it: it
12
+ * becomes the accessible name and the tooltip shown on hover and focus.
13
+ *
14
+ * @component
15
+ * @example
16
+ * // Example usage of IconButton component
17
+ * <IconButton icon={<FiInfo />} label="See details" onClick={openDetails} />
18
+ *
19
+ * @param {Object} props - The properties of the IconButton component.
20
+ * @param {ReactNode} props.icon - The icon to render. Sized by the button's font size (16px).
21
+ * @param {string} props.label - Accessible name of the button and text of its tooltip.
22
+ * @param {UseFloatingOptions['placement']} [props.tooltipPlacement='top'] - Placement of the tooltip relative to the button.
23
+ * @param {ButtonHTMLAttributes<HTMLButtonElement>} restProps - Additional properties for the button element. `type` defaults to `button`.
24
+ *
25
+ * @returns {ReactNode} The rendered IconButton component.
26
+ */
27
+ export declare function IconButton({ icon, label, tooltipPlacement, type, ...restProps }: IconButtonProps): ReactNode;
28
+ //# sourceMappingURL=IconButton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IconButton.d.ts","sourceRoot":"","sources":["../../../../src/components/01-atoms/IconButton/IconButton.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,cAAc,CAAC,OAAO,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC;CAChE,GAAG,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC,CAAC;AAE7E;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,UAAU,CAAC,EACzB,IAAI,EACJ,KAAK,EACL,gBAAwB,EACxB,IAAe,EACf,GAAG,SAAS,EACb,EAAE,eAAe,GAAG,SAAS,CAuB7B"}
@@ -0,0 +1,32 @@
1
+ import clsx from 'clsx';
2
+ import { Tooltip } from '../Tooltip';
3
+ /**
4
+ * Button that shows only an icon, for secondary actions in dense rows (lists,
5
+ * timelines, cards). The `label` is required because the icon alone says
6
+ * nothing to a screen reader or to someone who does not recognise it: it
7
+ * becomes the accessible name and the tooltip shown on hover and focus.
8
+ *
9
+ * @component
10
+ * @example
11
+ * // Example usage of IconButton component
12
+ * <IconButton icon={<FiInfo />} label="See details" onClick={openDetails} />
13
+ *
14
+ * @param {Object} props - The properties of the IconButton component.
15
+ * @param {ReactNode} props.icon - The icon to render. Sized by the button's font size (16px).
16
+ * @param {string} props.label - Accessible name of the button and text of its tooltip.
17
+ * @param {UseFloatingOptions['placement']} [props.tooltipPlacement='top'] - Placement of the tooltip relative to the button.
18
+ * @param {ButtonHTMLAttributes<HTMLButtonElement>} restProps - Additional properties for the button element. `type` defaults to `button`.
19
+ *
20
+ * @returns {ReactNode} The rendered IconButton component.
21
+ */
22
+ export function IconButton({ icon, label, tooltipPlacement = 'top', type = 'button', ...restProps }) {
23
+ const className = clsx('flex items-center justify-center rounded-sm p-2 text-base transition-colors', 'text-gray-1 disabled:text-gray-3 not-disabled:hover:bg-black not-disabled:hover:text-white disabled:cursor-not-allowed', 'dark:text-gray-5 dark:disabled:text-gray-2 dark:not-disabled:hover:bg-white dark:not-disabled:hover:text-black', 'focus-visible:ring-lavender dark:focus-visible:ring-lavender-dark focus-visible:ring-2 focus-visible:outline-none', restProps.className);
24
+ return (<Tooltip message={label} placement={tooltipPlacement}>
25
+ <button {...restProps} type={type} aria-label={label} className={className}>
26
+ <span aria-hidden="true" className="flex">
27
+ {icon}
28
+ </span>
29
+ </button>
30
+ </Tooltip>);
31
+ }
32
+ //# sourceMappingURL=IconButton.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IconButton.jsx","sourceRoot":"","sources":["../../../../src/components/01-atoms/IconButton/IconButton.tsx"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAQrC;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,UAAU,CAAC,EACzB,IAAI,EACJ,KAAK,EACL,gBAAgB,GAAG,KAAK,EACxB,IAAI,GAAG,QAAQ,EACf,GAAG,SAAS,EACI;IAChB,MAAM,SAAS,GAAG,IAAI,CACpB,6EAA6E,EAC7E,wHAAwH,EACxH,gHAAgH,EAChH,mHAAmH,EACnH,SAAS,CAAC,SAAS,CACpB,CAAC;IAEF,OAAO,CACL,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC,CACnD;MAAA,CAAC,MAAM,CACL,IAAI,SAAS,CAAC,CACd,IAAI,CAAC,CAAC,IAAI,CAAC,CACX,UAAU,CAAC,CAAC,KAAK,CAAC,CAClB,SAAS,CAAC,CAAC,SAAS,CAAC,CAErB;QAAA,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CACvC;UAAA,CAAC,IAAI,CACP;QAAA,EAAE,IAAI,CACR;MAAA,EAAE,MAAM,CACV;IAAA,EAAE,OAAO,CAAC,CACX,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './IconButton';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/01-atoms/IconButton/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './IconButton';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/01-atoms/IconButton/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC"}
@@ -1,9 +1,12 @@
1
1
  import type { HTMLAttributes, ReactNode } from 'react';
2
+ export type ProgressBarModifier = 'default' | 'success' | 'warning' | 'error';
2
3
  export type ProgressBarProps = {
3
4
  /** Progress between 0 and 100. Omit it for an indeterminate bar. */
4
5
  value?: number;
5
6
  /** Accessible name of the operation being tracked. */
6
7
  ariaLabel: string;
8
+ /** Color of the fill. Defaults to the brand accent. */
9
+ modifier?: ProgressBarModifier;
7
10
  } & Omit<HTMLAttributes<HTMLDivElement>, 'children' | 'role'>;
8
11
  /**
9
12
  * Thin linear progress bar. With `value` it fills from the left up to that
@@ -12,6 +15,9 @@ export type ProgressBarProps = {
12
15
  * where a line reads better than a ring, and of `Spinner` for waits that
13
16
  * deserve a headline and copy under them.
14
17
  *
18
+ * `modifier` colors the fill to grade the value (a score, a quota). Color is
19
+ * never the only signal: pair it with the value or a label in text.
20
+ *
15
21
  * @component
16
22
  * @example
17
23
  * // Indeterminate
@@ -21,11 +27,16 @@ export type ProgressBarProps = {
21
27
  * // Determinate
22
28
  * <ProgressBar value={64} ariaLabel="Upload" />
23
29
  *
30
+ * @example
31
+ * // Graded value
32
+ * <ProgressBar value={72} modifier="warning" ariaLabel="Match score" />
33
+ *
24
34
  * @param {Object} props - The properties of the ProgressBar component.
25
35
  * @param {number} [props.value] - Progress between 0 and 100. Omit for indeterminate.
26
36
  * @param {string} props.ariaLabel - Accessible name for the progress bar.
37
+ * @param {'default' | 'success' | 'warning' | 'error'} [props.modifier='default'] - Color of the fill.
27
38
  *
28
39
  * @returns {ReactNode} The rendered ProgressBar component.
29
40
  */
30
- export declare function ProgressBar({ value, ariaLabel, ...restProps }: ProgressBarProps): ReactNode;
41
+ export declare function ProgressBar({ value, ariaLabel, modifier, ...restProps }: ProgressBarProps): ReactNode;
31
42
  //# sourceMappingURL=ProgressBar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProgressBar.d.ts","sourceRoot":"","sources":["../../../../src/components/01-atoms/ProgressBar/ProgressBar.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC,CAAC;AAM9D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,SAAS,EACT,GAAG,SAAS,EACb,EAAE,gBAAgB,GAAG,SAAS,CA4B9B"}
1
+ {"version":3,"file":"ProgressBar.d.ts","sourceRoot":"","sources":["../../../../src/components/01-atoms/ProgressBar/ProgressBar.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvD,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAE9E,MAAM,MAAM,gBAAgB,GAAG;IAC7B,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,SAAS,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,QAAQ,CAAC,EAAE,mBAAmB,CAAC;CAChC,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC,CAAC;AAe9D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,SAAS,EACT,QAAoB,EACpB,GAAG,SAAS,EACb,EAAE,gBAAgB,GAAG,SAAS,CA6B9B"}
@@ -1,4 +1,12 @@
1
1
  import clsx from 'clsx';
2
+ // `warning` uses the amber family: the yellow `warning` token sits near 1.4:1
3
+ // against the track, below the 3:1 a graphic needs to be told apart.
4
+ const styleMap = {
5
+ default: 'bg-lavender dark:bg-lavender-dark',
6
+ success: 'bg-success dark:bg-success-dark',
7
+ warning: 'bg-amber dark:bg-amber-dark',
8
+ error: 'bg-error dark:bg-error-dark',
9
+ };
2
10
  function clamp(value) {
3
11
  return Math.min(100, Math.max(0, value));
4
12
  }
@@ -9,6 +17,9 @@ function clamp(value) {
9
17
  * where a line reads better than a ring, and of `Spinner` for waits that
10
18
  * deserve a headline and copy under them.
11
19
  *
20
+ * `modifier` colors the fill to grade the value (a score, a quota). Color is
21
+ * never the only signal: pair it with the value or a label in text.
22
+ *
12
23
  * @component
13
24
  * @example
14
25
  * // Indeterminate
@@ -18,17 +29,22 @@ function clamp(value) {
18
29
  * // Determinate
19
30
  * <ProgressBar value={64} ariaLabel="Upload" />
20
31
  *
32
+ * @example
33
+ * // Graded value
34
+ * <ProgressBar value={72} modifier="warning" ariaLabel="Match score" />
35
+ *
21
36
  * @param {Object} props - The properties of the ProgressBar component.
22
37
  * @param {number} [props.value] - Progress between 0 and 100. Omit for indeterminate.
23
38
  * @param {string} props.ariaLabel - Accessible name for the progress bar.
39
+ * @param {'default' | 'success' | 'warning' | 'error'} [props.modifier='default'] - Color of the fill.
24
40
  *
25
41
  * @returns {ReactNode} The rendered ProgressBar component.
26
42
  */
27
- export function ProgressBar({ value, ariaLabel, ...restProps }) {
43
+ export function ProgressBar({ value, ariaLabel, modifier = 'default', ...restProps }) {
28
44
  const isDeterminate = typeof value === 'number';
29
45
  const percent = isDeterminate ? clamp(value) : undefined;
30
46
  return (<div {...restProps} role="progressbar" aria-label={ariaLabel} aria-valuemin={0} aria-valuemax={100} aria-valuenow={percent} className={clsx('bg-gray-6 dark:bg-gray-dark-1 h-1 overflow-hidden rounded-full', restProps.className)}>
31
- <div className={clsx('bg-lavender dark:bg-lavender-dark h-full rounded-full', isDeterminate
47
+ <div className={clsx('h-full rounded-full', styleMap[modifier], isDeterminate
32
48
  ? 'transition-[width] duration-300 ease-out'
33
49
  : 'animate-progress-indeterminate w-2/5 motion-reduce:w-full motion-reduce:animate-none motion-reduce:opacity-60')} style={isDeterminate ? { width: `${percent}%` } : undefined}/>
34
50
  </div>);
@@ -1 +1 @@
1
- {"version":3,"file":"ProgressBar.jsx","sourceRoot":"","sources":["../../../../src/components/01-atoms/ProgressBar/ProgressBar.tsx"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAUxB,SAAS,KAAK,CAAC,KAAa;IAC1B,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,WAAW,CAAC,EAC1B,KAAK,EACL,SAAS,EACT,GAAG,SAAS,EACK;IACjB,MAAM,aAAa,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC;IAChD,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAEzD,OAAO,CACL,CAAC,GAAG,CACF,IAAI,SAAS,CAAC,CACd,IAAI,CAAC,aAAa,CAClB,UAAU,CAAC,CAAC,SAAS,CAAC,CACtB,aAAa,CAAC,CAAC,CAAC,CAAC,CACjB,aAAa,CAAC,CAAC,GAAG,CAAC,CACnB,aAAa,CAAC,CAAC,OAAO,CAAC,CACvB,SAAS,CAAC,CAAC,IAAI,CACb,gEAAgE,EAChE,SAAS,CAAC,SAAS,CACpB,CAAC,CAEF;MAAA,CAAC,GAAG,CACF,SAAS,CAAC,CAAC,IAAI,CACb,uDAAuD,EACvD,aAAa;YACX,CAAC,CAAC,0CAA0C;YAC5C,CAAC,CAAC,+GAA+G,CACpH,CAAC,CACF,KAAK,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EAEhE;IAAA,EAAE,GAAG,CAAC,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"ProgressBar.jsx","sourceRoot":"","sources":["../../../../src/components/01-atoms/ProgressBar/ProgressBar.tsx"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAcxB,8EAA8E;AAC9E,qEAAqE;AACrE,MAAM,QAAQ,GAAwC;IACpD,OAAO,EAAE,mCAAmC;IAC5C,OAAO,EAAE,iCAAiC;IAC1C,OAAO,EAAE,6BAA6B;IACtC,KAAK,EAAE,6BAA6B;CACrC,CAAC;AAEF,SAAS,KAAK,CAAC,KAAa;IAC1B,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,UAAU,WAAW,CAAC,EAC1B,KAAK,EACL,SAAS,EACT,QAAQ,GAAG,SAAS,EACpB,GAAG,SAAS,EACK;IACjB,MAAM,aAAa,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC;IAChD,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAEzD,OAAO,CACL,CAAC,GAAG,CACF,IAAI,SAAS,CAAC,CACd,IAAI,CAAC,aAAa,CAClB,UAAU,CAAC,CAAC,SAAS,CAAC,CACtB,aAAa,CAAC,CAAC,CAAC,CAAC,CACjB,aAAa,CAAC,CAAC,GAAG,CAAC,CACnB,aAAa,CAAC,CAAC,OAAO,CAAC,CACvB,SAAS,CAAC,CAAC,IAAI,CACb,gEAAgE,EAChE,SAAS,CAAC,SAAS,CACpB,CAAC,CAEF;MAAA,CAAC,GAAG,CACF,SAAS,CAAC,CAAC,IAAI,CACb,qBAAqB,EACrB,QAAQ,CAAC,QAAQ,CAAC,EAClB,aAAa;YACX,CAAC,CAAC,0CAA0C;YAC5C,CAAC,CAAC,+GAA+G,CACpH,CAAC,CACF,KAAK,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EAEhE;IAAA,EAAE,GAAG,CAAC,CACP,CAAC;AACJ,CAAC"}
@@ -5,6 +5,7 @@ export * from './Input';
5
5
  export * from './Textarea';
6
6
  export * from './Radio';
7
7
  export * from './Button';
8
+ export * from './IconButton';
8
9
  export * from './Select';
9
10
  export * from './Heading';
10
11
  export * from './Checkbox';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/01-atoms/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/01-atoms/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC"}
@@ -5,6 +5,7 @@ export * from './Input';
5
5
  export * from './Textarea';
6
6
  export * from './Radio';
7
7
  export * from './Button';
8
+ export * from './IconButton';
8
9
  export * from './Select';
9
10
  export * from './Heading';
10
11
  export * from './Checkbox';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/01-atoms/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/01-atoms/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC"}
@@ -1,8 +1,12 @@
1
1
  import { ReactElement, ReactNode } from 'react';
2
2
  import { AccordionSectionProps } from './AccordionSection';
3
+ import { type AccordionModifier } from './AccordionContext';
4
+ export type { AccordionModifier };
3
5
  type AccordionProps = {
4
6
  children: ReactElement<AccordionSectionProps> | ReactElement<AccordionSectionProps>[];
5
7
  className?: string;
8
+ modifier?: AccordionModifier;
9
+ defaultActivated?: string[];
6
10
  };
7
11
  /**
8
12
  * Accordion component for displaying a list of collapsible sections.
@@ -11,16 +15,23 @@ type AccordionProps = {
11
15
  * @example
12
16
  * // Example usage of Accordion component
13
17
  * <Accordion className="custom-class">
14
- * <AccordionSection title="Section 1">Content 1</AccordionSection>
15
- * <AccordionSection title="Section 2">Content 2</AccordionSection>
18
+ * <AccordionSection title="Section 1" id="1">Content 1</AccordionSection>
19
+ * <AccordionSection title="Section 2" id="2">Content 2</AccordionSection>
20
+ * </Accordion>
21
+ *
22
+ * @example
23
+ * // Flat headers, with the first section open on mount
24
+ * <Accordion modifier="plain" defaultActivated={['1']}>
25
+ * <AccordionSection title="Section 1" id="1">Content 1</AccordionSection>
16
26
  * </Accordion>
17
27
  *
18
28
  * @param {Object} props - The properties of the Accordion component.
19
29
  * @param {ReactElement<AccordionSectionProps> | ReactElement<AccordionSectionProps>[]} props.children - The AccordionSection components to be displayed within the Accordion.
20
30
  * @param {string} [props.className] - Optional additional class names for the Accordion container.
31
+ * @param {AccordionModifier} [props.modifier='pill'] - `pill` draws each header as a pill with a bottom border; `plain` draws a flat header and separates the sections with a rule.
32
+ * @param {string[]} [props.defaultActivated=[]] - Ids of the sections that start open. Read on mount only; afterwards the user toggles them.
21
33
  *
22
34
  * @returns {ReactNode} The rendered Accordion component.
23
35
  */
24
- export declare function Accordion({ children, className }: AccordionProps): ReactNode;
25
- export {};
36
+ export declare function Accordion({ children, className, modifier, defaultActivated, }: AccordionProps): ReactNode;
26
37
  //# sourceMappingURL=Accordion.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Accordion.d.ts","sourceRoot":"","sources":["../../../../src/components/02-molecules/Accordion/Accordion.tsx"],"names":[],"mappings":"AAEA,OAAc,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAI3D,KAAK,cAAc,GAAG;IACpB,QAAQ,EACJ,YAAY,CAAC,qBAAqB,CAAC,GACnC,YAAY,CAAC,qBAAqB,CAAC,EAAE,CAAC;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,SAAS,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,cAAc,GAAG,SAAS,CAM5E"}
1
+ {"version":3,"file":"Accordion.d.ts","sourceRoot":"","sources":["../../../../src/components/02-molecules/Accordion/Accordion.tsx"],"names":[],"mappings":"AAEA,OAAc,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EACL,KAAK,iBAAiB,EAEvB,MAAM,oBAAoB,CAAC;AAG5B,YAAY,EAAE,iBAAiB,EAAE,CAAC;AAElC,KAAK,cAAc,GAAG;IACpB,QAAQ,EACJ,YAAY,CAAC,qBAAqB,CAAC,GACnC,YAAY,CAAC,qBAAqB,CAAC,EAAE,CAAC;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B,CAAC;AAOF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,SAAS,CAAC,EACxB,QAAQ,EACR,SAAS,EACT,QAAiB,EACjB,gBAAgB,GACjB,EAAE,cAAc,GAAG,SAAS,CAW5B"}
@@ -1,7 +1,11 @@
1
1
  'use client';
2
2
  import React from 'react';
3
- import { AccordionContextProvider } from './AccordionContext';
3
+ import { AccordionContextProvider, } from './AccordionContext';
4
4
  import clsx from 'clsx';
5
+ const styleMap = {
6
+ pill: 'gap-3',
7
+ plain: 'divide-gray-5 dark:divide-gray-1 divide-y',
8
+ };
5
9
  /**
6
10
  * Accordion component for displaying a list of collapsible sections.
7
11
  *
@@ -9,19 +13,29 @@ import clsx from 'clsx';
9
13
  * @example
10
14
  * // Example usage of Accordion component
11
15
  * <Accordion className="custom-class">
12
- * <AccordionSection title="Section 1">Content 1</AccordionSection>
13
- * <AccordionSection title="Section 2">Content 2</AccordionSection>
16
+ * <AccordionSection title="Section 1" id="1">Content 1</AccordionSection>
17
+ * <AccordionSection title="Section 2" id="2">Content 2</AccordionSection>
18
+ * </Accordion>
19
+ *
20
+ * @example
21
+ * // Flat headers, with the first section open on mount
22
+ * <Accordion modifier="plain" defaultActivated={['1']}>
23
+ * <AccordionSection title="Section 1" id="1">Content 1</AccordionSection>
14
24
  * </Accordion>
15
25
  *
16
26
  * @param {Object} props - The properties of the Accordion component.
17
27
  * @param {ReactElement<AccordionSectionProps> | ReactElement<AccordionSectionProps>[]} props.children - The AccordionSection components to be displayed within the Accordion.
18
28
  * @param {string} [props.className] - Optional additional class names for the Accordion container.
29
+ * @param {AccordionModifier} [props.modifier='pill'] - `pill` draws each header as a pill with a bottom border; `plain` draws a flat header and separates the sections with a rule.
30
+ * @param {string[]} [props.defaultActivated=[]] - Ids of the sections that start open. Read on mount only; afterwards the user toggles them.
19
31
  *
20
32
  * @returns {ReactNode} The rendered Accordion component.
21
33
  */
22
- export function Accordion({ children, className }) {
23
- return (<div className={clsx('grid gap-3', className)}>
24
- <AccordionContextProvider>{children}</AccordionContextProvider>
34
+ export function Accordion({ children, className, modifier = 'pill', defaultActivated, }) {
35
+ return (<div className={clsx('grid', styleMap[modifier], className)}>
36
+ <AccordionContextProvider defaultActivated={defaultActivated} modifier={modifier}>
37
+ {children}
38
+ </AccordionContextProvider>
25
39
  </div>);
26
40
  }
27
41
  //# sourceMappingURL=Accordion.jsx.map
@@ -1 +1 @@
1
- {"version":3,"file":"Accordion.jsx","sourceRoot":"","sources":["../../../../src/components/02-molecules/Accordion/Accordion.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,KAAkC,MAAM,OAAO,CAAC;AAEvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,IAAI,MAAM,MAAM,CAAC;AASxB;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,SAAS,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAkB;IAC/D,OAAO,CACL,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,CAC5C;MAAA,CAAC,wBAAwB,CAAC,CAAC,QAAQ,CAAC,EAAE,wBAAwB,CAChE;IAAA,EAAE,GAAG,CAAC,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"Accordion.jsx","sourceRoot":"","sources":["../../../../src/components/02-molecules/Accordion/Accordion.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,KAAkC,MAAM,OAAO,CAAC;AAEvD,OAAO,EAEL,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,IAAI,MAAM,MAAM,CAAC;AAaxB,MAAM,QAAQ,GAAsC;IAClD,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,2CAA2C;CACnD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,SAAS,CAAC,EACxB,QAAQ,EACR,SAAS,EACT,QAAQ,GAAG,MAAM,EACjB,gBAAgB,GACD;IACf,OAAO,CACL,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,CAAC,CAC1D;MAAA,CAAC,wBAAwB,CACvB,gBAAgB,CAAC,CAAC,gBAAgB,CAAC,CACnC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAEnB;QAAA,CAAC,QAAQ,CACX;MAAA,EAAE,wBAAwB,CAC5B;IAAA,EAAE,GAAG,CAAC,CACP,CAAC;AACJ,CAAC"}
@@ -1,9 +1,13 @@
1
+ export type AccordionModifier = 'pill' | 'plain';
1
2
  export interface AccordionContextProps {
2
3
  activated: string[];
3
4
  toggleId: (id: string) => void;
5
+ modifier: AccordionModifier;
4
6
  }
5
- export declare function AccordionContextProvider({ children, }: {
7
+ export declare function AccordionContextProvider({ children, defaultActivated, modifier, }: {
6
8
  readonly children: React.ReactNode;
9
+ readonly defaultActivated?: string[];
10
+ readonly modifier?: AccordionModifier;
7
11
  }): import("react").JSX.Element;
8
12
  export declare function useAccordionContext(): AccordionContextProps;
9
13
  //# sourceMappingURL=AccordionContext.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AccordionContext.d.ts","sourceRoot":"","sources":["../../../../src/components/02-molecules/Accordion/AccordionContext.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC;AAMD,wBAAgB,wBAAwB,CAAC,EACvC,QAAQ,GACT,EAAE;IACD,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CACpC,+BAwBA;AAED,wBAAgB,mBAAmB,0BAUlC"}
1
+ {"version":3,"file":"AccordionContext.d.ts","sourceRoot":"","sources":["../../../../src/components/02-molecules/Accordion/AccordionContext.tsx"],"names":[],"mappings":"AAIA,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,OAAO,CAAC;AAEjD,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,QAAQ,EAAE,iBAAiB,CAAC;CAC7B;AAMD,wBAAgB,wBAAwB,CAAC,EACvC,QAAQ,EACR,gBAAqB,EACrB,QAAiB,GAClB,EAAE;IACD,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IACnC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;CACvC,+BAyBA;AAED,wBAAgB,mBAAmB,0BAUlC"}
@@ -1,8 +1,8 @@
1
1
  'use client';
2
2
  import { createContext, useContext, useMemo, useState } from 'react';
3
3
  const AccordionContext = createContext(undefined);
4
- export function AccordionContextProvider({ children, }) {
5
- const [activated, setActivated] = useState([]);
4
+ export function AccordionContextProvider({ children, defaultActivated = [], modifier = 'pill', }) {
5
+ const [activated, setActivated] = useState(defaultActivated);
6
6
  const stableActivated = useMemo(() => [...activated], [activated]);
7
7
  const toggleId = (id) => {
8
8
  if (activated.includes(id)) {
@@ -15,7 +15,8 @@ export function AccordionContextProvider({ children, }) {
15
15
  const value = useMemo(() => ({
16
16
  activated: stableActivated,
17
17
  toggleId,
18
- }), [stableActivated]);
18
+ modifier,
19
+ }), [stableActivated, modifier]);
19
20
  return (<AccordionContext.Provider value={value}>
20
21
  {children}
21
22
  </AccordionContext.Provider>);
@@ -1 +1 @@
1
- {"version":3,"file":"AccordionContext.jsx","sourceRoot":"","sources":["../../../../src/components/02-molecules/Accordion/AccordionContext.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAOrE,MAAM,gBAAgB,GAAG,aAAa,CACpC,SAAS,CACV,CAAC;AAEF,MAAM,UAAU,wBAAwB,CAAC,EACvC,QAAQ,GAGT;IACC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAW,EAAE,CAAC,CAAC;IACzD,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IACnE,MAAM,QAAQ,GAAG,CAAC,EAAU,EAAE,EAAE;QAC9B,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;YAC3B,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC;QACxD,CAAC;aAAM,CAAC;YACN,YAAY,CAAC,CAAC,GAAG,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;QACnC,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,OAAO,CACnB,GAAG,EAAE,CAAC,CAAC;QACL,SAAS,EAAE,eAAe;QAC1B,QAAQ;KACT,CAAC,EACF,CAAC,eAAe,CAAC,CAClB,CAAC;IAEF,OAAO,CACL,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CACtC;MAAA,CAAC,QAAQ,CACX;IAAA,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAC7B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,MAAM,OAAO,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAE7C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,oEAAoE,CACrE,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"AccordionContext.jsx","sourceRoot":"","sources":["../../../../src/components/02-molecules/Accordion/AccordionContext.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAUrE,MAAM,gBAAgB,GAAG,aAAa,CACpC,SAAS,CACV,CAAC;AAEF,MAAM,UAAU,wBAAwB,CAAC,EACvC,QAAQ,EACR,gBAAgB,GAAG,EAAE,EACrB,QAAQ,GAAG,MAAM,GAKlB;IACC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAW,gBAAgB,CAAC,CAAC;IACvE,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IACnE,MAAM,QAAQ,GAAG,CAAC,EAAU,EAAE,EAAE;QAC9B,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;YAC3B,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC;QACxD,CAAC;aAAM,CAAC;YACN,YAAY,CAAC,CAAC,GAAG,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;QACnC,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,OAAO,CACnB,GAAG,EAAE,CAAC,CAAC;QACL,SAAS,EAAE,eAAe;QAC1B,QAAQ;QACR,QAAQ;KACT,CAAC,EACF,CAAC,eAAe,EAAE,QAAQ,CAAC,CAC5B,CAAC;IAEF,OAAO,CACL,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CACtC;MAAA,CAAC,QAAQ,CACX;IAAA,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAC7B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,MAAM,OAAO,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAE7C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,oEAAoE,CACrE,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -6,6 +6,7 @@ export type AccordionSectionProps = {
6
6
  };
7
7
  /**
8
8
  * AccordionSection component for displaying a collapsible section within an Accordion.
9
+ * The header takes the `modifier` of the parent Accordion.
9
10
  *
10
11
  * @component
11
12
  * @example
@@ -17,7 +18,7 @@ export type AccordionSectionProps = {
17
18
  * @param {Object} props - The properties of the AccordionSection component.
18
19
  * @param {string} props.title - The title of the section.
19
20
  * @param {ReactNode} props.children - The content to be displayed within the section.
20
- * @param {string} props.id - The unique identifier for the section.
21
+ * @param {string} props.id - The unique identifier for the section, also used by the Accordion `defaultActivated` prop.
21
22
  *
22
23
  * @returns {ReactNode} The rendered AccordionSection component.
23
24
  */
@@ -1 +1 @@
1
- {"version":3,"file":"AccordionSection.d.ts","sourceRoot":"","sources":["../../../../src/components/02-molecules/Accordion/AccordionSection.tsx"],"names":[],"mappings":"AAGA,OAAO,EACL,SAAS,EAMV,MAAM,OAAO,CAAC;AAIf,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,SAAS,CAAC;IACpB,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,QAAQ,EACR,EAAE,GACH,EAAE,qBAAqB,GAAG,SAAS,CA+DnC"}
1
+ {"version":3,"file":"AccordionSection.d.ts","sourceRoot":"","sources":["../../../../src/components/02-molecules/Accordion/AccordionSection.tsx"],"names":[],"mappings":"AAGA,OAAO,EACL,SAAS,EAMV,MAAM,OAAO,CAAC;AAOf,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,SAAS,CAAC;IACpB,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AA0BF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,QAAQ,EACR,EAAE,GACH,EAAE,qBAAqB,GAAG,SAAS,CA8EnC"}
@@ -2,9 +2,28 @@
2
2
  import clsx from 'clsx';
3
3
  import { useCallback, useEffect, useId, useRef, useState, } from 'react';
4
4
  import { FaChevronDown } from 'react-icons/fa';
5
- import { useAccordionContext } from './AccordionContext';
5
+ import { useAccordionContext, } from './AccordionContext';
6
+ const triggerStyleMap = {
7
+ pill: 'mb-2 rounded-full border-b-[3px] px-4 py-2',
8
+ plain: 'rounded-sm py-3',
9
+ };
10
+ const triggerStateStyleMap = {
11
+ pill: {
12
+ active: 'border-lavender dark:border-lavender-dark',
13
+ inactive: 'border-gray-2 dark:border-gray-1',
14
+ },
15
+ plain: {
16
+ active: '',
17
+ inactive: '',
18
+ },
19
+ };
20
+ const chevronStyleMap = {
21
+ pill: '',
22
+ plain: 'size-3 text-gray-1 dark:text-gray-2',
23
+ };
6
24
  /**
7
25
  * AccordionSection component for displaying a collapsible section within an Accordion.
26
+ * The header takes the `modifier` of the parent Accordion.
8
27
  *
9
28
  * @component
10
29
  * @example
@@ -16,7 +35,7 @@ import { useAccordionContext } from './AccordionContext';
16
35
  * @param {Object} props - The properties of the AccordionSection component.
17
36
  * @param {string} props.title - The title of the section.
18
37
  * @param {ReactNode} props.children - The content to be displayed within the section.
19
- * @param {string} props.id - The unique identifier for the section.
38
+ * @param {string} props.id - The unique identifier for the section, also used by the Accordion `defaultActivated` prop.
20
39
  *
21
40
  * @returns {ReactNode} The rendered AccordionSection component.
22
41
  */
@@ -24,7 +43,8 @@ export function AccordionSection({ title, children, id, }) {
24
43
  const context = useAccordionContext();
25
44
  const isActivated = context.activated.includes(id);
26
45
  const contentRef = useRef(null);
27
- const [maxHeight, setMaxHeight] = useState('0px');
46
+ // A section that starts open renders at full height instead of animating in.
47
+ const [maxHeight, setMaxHeight] = useState(isActivated ? 'none' : '0px');
28
48
  const generatedId = useId();
29
49
  const triggerId = `${generatedId}-trigger`;
30
50
  const panelId = `${generatedId}-panel`;
@@ -41,15 +61,22 @@ export function AccordionSection({ title, children, id, }) {
41
61
  window.addEventListener('resize', updateHeight);
42
62
  return () => window.removeEventListener('resize', updateHeight);
43
63
  }, [updateHeight]);
64
+ useEffect(() => {
65
+ const content = contentRef.current?.firstElementChild;
66
+ if (!content || typeof ResizeObserver === 'undefined') {
67
+ return;
68
+ }
69
+ const observer = new ResizeObserver(updateHeight);
70
+ observer.observe(content);
71
+ return () => observer.disconnect();
72
+ }, [updateHeight]);
44
73
  return (<section className="text-black dark:text-white">
45
- <button type="button" id={triggerId} aria-expanded={isActivated} aria-controls={panelId} className={clsx('focus-visible:ring-lavender mb-2 flex w-full cursor-pointer items-center justify-between rounded-full border-b-[3px] px-4 py-2 text-left text-sm font-semibold transition-colors duration-300 ease-in-out focus-visible:ring-2 focus-visible:outline-none', isActivated
46
- ? 'border-lavender dark:border-lavender-dark'
47
- : 'border-gray-2 dark:border-gray-1')} onClick={() => context.toggleId(id)}>
74
+ <button type="button" id={triggerId} aria-expanded={isActivated} aria-controls={panelId} className={clsx('focus-visible:ring-lavender flex w-full cursor-pointer items-center justify-between text-left text-sm font-semibold transition-colors duration-300 ease-in-out focus-visible:ring-2 focus-visible:outline-none', triggerStyleMap[context.modifier], triggerStateStyleMap[context.modifier][isActivated ? 'active' : 'inactive'])} onClick={() => context.toggleId(id)}>
48
75
  <span>{title}</span>
49
- <FaChevronDown aria-hidden className={clsx('transition-transform duration-300 ease-in-out', isActivated && 'rotate-180 transform')}/>
76
+ <FaChevronDown aria-hidden className={clsx('transition-transform duration-300 ease-in-out', chevronStyleMap[context.modifier], isActivated && 'rotate-180 transform')}/>
50
77
  </button>
51
78
  <div ref={contentRef} id={panelId} role="region" aria-labelledby={triggerId} hidden={!isActivated} style={{ maxHeight }} className="overflow-hidden text-black transition-all duration-300 ease-in-out dark:text-white">
52
- {children}
79
+ <div>{children}</div>
53
80
  </div>
54
81
  </section>);
55
82
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AccordionSection.jsx","sourceRoot":"","sources":["../../../../src/components/02-molecules/Accordion/AccordionSection.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AccordionSection.jsx","sourceRoot":"","sources":["../../../../src/components/02-molecules/Accordion/AccordionSection.tsx"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  export { Accordion } from './Accordion';
2
+ export type { AccordionModifier } from './Accordion';
2
3
  export { AccordionSection } from './AccordionSection';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/02-molecules/Accordion/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/02-molecules/Accordion/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/02-molecules/Accordion/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/02-molecules/Accordion/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Filter.d.ts","sourceRoot":"","sources":["../../../../src/components/02-molecules/Filter/Filter.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAkB,KAAK,SAAS,EAAuB,MAAM,OAAO,CAAC;AAe5E,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE5D,KAAK,YAAY,GAAG;IAClB,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,IAAI,CAAC;IAChE,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,CAAC;IACpD,sFAAsF;IACtF,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,WAAW,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,IAAI,CAAC;KACtB,CAAC;IACF,YAAY,EAAE;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,IAAI,CAAC;KACzD,CAAC;IACF,MAAM,EAAE,aAAa,CAAC;CACvB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,wBAAgB,MAAM,CAAC,EACrB,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACX,MAAM,EACN,eAAe,EACf,iBAAiB,EACjB,kBAAyB,GAC1B,EAAE,YAAY,GAAG,SAAS,CAqZ1B"}
1
+ {"version":3,"file":"Filter.d.ts","sourceRoot":"","sources":["../../../../src/components/02-molecules/Filter/Filter.tsx"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,SAAS,EAIf,MAAM,OAAO,CAAC;AAef,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE5D,KAAK,YAAY,GAAG;IAClB,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,IAAI,CAAC;IAChE,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,CAAC;IACpD,sFAAsF;IACtF,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,WAAW,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,IAAI,CAAC;KACtB,CAAC;IACF,YAAY,EAAE;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,IAAI,CAAC;KACzD,CAAC;IACF,MAAM,EAAE,aAAa,CAAC;CACvB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,wBAAgB,MAAM,CAAC,EACrB,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACX,MAAM,EACN,eAAe,EACf,iBAAiB,EACjB,kBAAyB,GAC1B,EAAE,YAAY,GAAG,SAAS,CAod1B"}
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
  import clsx from 'clsx';
3
- import { useEffect, useState } from 'react';
3
+ import { useEffect, useMemo, useState, } from 'react';
4
4
  import { Each, Show } from '../../00-base';
5
5
  import { Button, Checkbox, Input, MultiSelect, Paragraph, Radio, Select, Switch, } from '../../01-atoms';
6
6
  import { Autocomplete } from '../Autocomplete';
@@ -87,6 +87,50 @@ export function Filter({ filtersEnabledText, submitButton, resetButton, inputs,
87
87
  return previousValue;
88
88
  }, {}));
89
89
  const [autocompleteOptions, setAutocompleteOptions] = useState({});
90
+ const optionsFingerprint = useMemo(() => JSON.stringify(inputArr.map(([name, { config }]) => [
91
+ name,
92
+ config.map(({ type, options }) => ({ type, options })),
93
+ ])), [inputs]);
94
+ useEffect(() => {
95
+ setFilters((prev) => {
96
+ let changed = false;
97
+ const next = { ...prev };
98
+ for (const [name, { config }] of inputArr) {
99
+ config.forEach((inputConfig, index) => {
100
+ const filterKey = config.length > 1 ? `${name}__${index}` : name;
101
+ const value = next[filterKey];
102
+ if (value === undefined || value === null || value === '')
103
+ return;
104
+ const { type, options } = inputConfig;
105
+ if ((type === 'multiselect' || type === 'autocomplete') &&
106
+ Array.isArray(options) &&
107
+ Array.isArray(value)) {
108
+ const allowed = new Set(options.map((option) => String(option.value)));
109
+ const pruned = value.filter((option) => allowed.has(String(option.value)));
110
+ if (pruned.length !== value.length) {
111
+ changed = true;
112
+ if (pruned.length)
113
+ next[filterKey] = pruned;
114
+ else
115
+ delete next[filterKey];
116
+ }
117
+ return;
118
+ }
119
+ if ((type === 'select' || type === 'radio') &&
120
+ options &&
121
+ typeof options === 'object' &&
122
+ !Array.isArray(options) &&
123
+ typeof value === 'string') {
124
+ if (!(value in options)) {
125
+ changed = true;
126
+ delete next[filterKey];
127
+ }
128
+ }
129
+ });
130
+ }
131
+ return changed ? next : prev;
132
+ });
133
+ }, [optionsFingerprint]);
90
134
  const handlerChange = (name, value) => {
91
135
  setFilters((prevValues) => {
92
136
  if (!value || (Array.isArray(value) && !value.length)) {
@@ -1 +1 @@
1
- {"version":3,"file":"Filter.jsx","sourceRoot":"","sources":["../../../../src/components/02-molecules/Filter/Filter.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Filter.jsx","sourceRoot":"","sources":["../../../../src/components/02-molecules/Filter/Filter.tsx"],"names":[],"mappings":"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"}
@@ -1,11 +1,15 @@
1
1
  import { type HTMLAttributes, type ReactNode } from 'react';
2
+ import { type TImageCrop } from './ImageViewerImage';
3
+ export type { TImageCrop } from './ImageViewerImage';
2
4
  export type TImageView = {
3
5
  id: string;
4
6
  label: string;
5
7
  src: string;
6
8
  alt: string;
7
9
  indicator?: ReactNode;
10
+ crop?: TImageCrop;
8
11
  };
12
+ export type TImageViewerLayout = 'tabs' | 'split';
9
13
  export type TImageViewerLabels = {
10
14
  zoomIn: string;
11
15
  zoomOut: string;
@@ -16,6 +20,7 @@ export type TImageViewerLabels = {
16
20
  type ImageViewerProps = {
17
21
  views: TImageView[];
18
22
  labels: TImageViewerLabels;
23
+ layout?: TImageViewerLayout;
19
24
  title?: ReactNode;
20
25
  emptyState?: ReactNode;
21
26
  activeId?: string;
@@ -36,6 +41,14 @@ type ImageViewerProps = {
36
41
  * Renders `emptyState` while `views` is empty, and disables the toolbar with it,
37
42
  * so the frame keeps its size instead of collapsing.
38
43
  *
44
+ * `layout="split"` is for comparing different subjects instead: every view
45
+ * gets its own pane with its label, side by side from `sm` and stacked below
46
+ * it. The toolbar acts on all panes at once, so both stay at the same scale,
47
+ * and there is no active view.
48
+ *
49
+ * A view's `crop` draws only that region of its image, fitted to the frame
50
+ * like the whole image would be — a face inside a document, for instance.
51
+ *
39
52
  * @component
40
53
  * @example
41
54
  * const [viewId, setViewId] = useState('front');
@@ -64,17 +77,34 @@ type ImageViewerProps = {
64
77
  * emptyState={<p>Nothing uploaded yet</p>}
65
78
  * />
66
79
  *
80
+ * @example
81
+ * <ImageViewer
82
+ * layout="split"
83
+ * title="Compared images"
84
+ * views={[
85
+ * { id: 'photo', label: 'Photo', src: '/photo.jpg', alt: 'Photo taken today' },
86
+ * {
87
+ * id: 'card',
88
+ * label: 'ID card',
89
+ * src: '/card.jpg',
90
+ * alt: 'Face on the ID card',
91
+ * crop: { left: 0.08, top: 0.2, width: 0.3, height: 0.5 },
92
+ * },
93
+ * ]}
94
+ * labels={labels}
95
+ * />
96
+ *
67
97
  * @param {Object} props - The properties of the ImageViewer component.
68
- * @param {TImageView[]} props.views - Images to display. More than one renders a tab per view. A view's optional `indicator` sits after its tab label and becomes part of the tab's accessible name, so give it its own (for an icon, `role="img"` and `aria-label`). With a single view there are no tabs, so no indicator is shown.
98
+ * @param {TImageView[]} props.views - Images to display. In `tabs`, more than one renders a tab per view; in `split`, a pane per view. A view's optional `indicator` sits after its label and becomes part of the tab's accessible name, so give it its own (for an icon, `role="img"` and `aria-label`). In `tabs` with a single view there are no tabs, so no indicator is shown. A view's optional `crop` (`left`, `top`, `width`, `height` as fractions from 0 to 1 of the image) shows only that region; a crop outside the image is clamped to it, and one with no area left falls back to the whole image.
69
99
  * @param {TImageViewerLabels} props.labels - Accessible names of the toolbar actions.
100
+ * @param {TImageViewerLayout} [props.layout='tabs'] - `tabs` shows one view at a time; `split` shows every view at once, one pane each.
70
101
  * @param {ReactNode} [props.title] - Optional heading rendered on the left of the toolbar.
71
102
  * @param {ReactNode} [props.emptyState] - Content rendered when there is no image.
72
- * @param {string} [props.activeId] - Id of the view to show. Makes the viewer controlled; an id that matches no view falls back to the first one.
73
- * @param {(id: string) => void} [props.onViewChange] - Called with the id of the tab the user picks, only when it differs from the active one.
103
+ * @param {string} [props.activeId] - Id of the view to show. Makes the viewer controlled; an id that matches no view falls back to the first one. Ignored in `split`.
104
+ * @param {(id: string) => void} [props.onViewChange] - Called with the id of the tab the user picks, only when it differs from the active one. Never called in `split`.
74
105
  * @param {HTMLAttributes<HTMLElement>} [props.restProps] - Additional attributes for the root element.
75
106
  *
76
107
  * @returns {ReactNode} The rendered ImageViewer component.
77
108
  */
78
- export declare function ImageViewer({ views, labels, title, emptyState, activeId, onViewChange, ...restProps }: ImageViewerProps): ReactNode;
79
- export {};
109
+ export declare function ImageViewer({ views, labels, layout, title, emptyState, activeId, onViewChange, ...restProps }: ImageViewerProps): ReactNode;
80
110
  //# sourceMappingURL=ImageViewer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ImageViewer.d.ts","sourceRoot":"","sources":["../../../../src/components/02-molecules/ImageViewer/ImageViewer.tsx"],"names":[],"mappings":"AAGA,OAAO,EAIL,KAAK,cAAc,EACnB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAaf,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACtB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,CAAC;AAiB5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACH,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,MAAM,EACN,KAAK,EACL,UAAU,EACV,QAAQ,EACR,YAAY,EACZ,GAAG,SAAS,EACb,EAAE,gBAAgB,GAAG,SAAS,CAqN9B"}
1
+ {"version":3,"file":"ImageViewer.d.ts","sourceRoot":"","sources":["../../../../src/components/02-molecules/ImageViewer/ImageViewer.tsx"],"names":[],"mappings":"AAGA,OAAO,EAIL,KAAK,cAAc,EACnB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAYf,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEvE,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,OAAO,CAAC;AAElD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACtB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,CAAC;AAiB5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+EG;AACH,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,MAAM,EACN,MAAe,EACf,KAAK,EACL,UAAU,EACV,QAAQ,EACR,YAAY,EACZ,GAAG,SAAS,EACb,EAAE,gBAAgB,GAAG,SAAS,CAqP9B"}
@@ -6,6 +6,7 @@ import { MdFullscreen, MdFullscreenExit, MdRotateRight, MdZoomIn, MdZoomOut, } f
6
6
  import { Each, Show } from '../../00-base';
7
7
  import { List, Paragraph } from '../../01-atoms';
8
8
  import { TabItem } from '../Tab/TabItem';
9
+ import { ImageViewerImage } from './ImageViewerImage';
9
10
  const MIN_ZOOM = 1;
10
11
  const MAX_ZOOM = 3;
11
12
  const ZOOM_STEP = 0.5;
@@ -28,6 +29,14 @@ const TOOL_CLASSNAME = 'hover:bg-gray-5 focus-visible:ring-lavender disabled:tex
28
29
  * Renders `emptyState` while `views` is empty, and disables the toolbar with it,
29
30
  * so the frame keeps its size instead of collapsing.
30
31
  *
32
+ * `layout="split"` is for comparing different subjects instead: every view
33
+ * gets its own pane with its label, side by side from `sm` and stacked below
34
+ * it. The toolbar acts on all panes at once, so both stay at the same scale,
35
+ * and there is no active view.
36
+ *
37
+ * A view's `crop` draws only that region of its image, fitted to the frame
38
+ * like the whole image would be — a face inside a document, for instance.
39
+ *
31
40
  * @component
32
41
  * @example
33
42
  * const [viewId, setViewId] = useState('front');
@@ -56,18 +65,36 @@ const TOOL_CLASSNAME = 'hover:bg-gray-5 focus-visible:ring-lavender disabled:tex
56
65
  * emptyState={<p>Nothing uploaded yet</p>}
57
66
  * />
58
67
  *
68
+ * @example
69
+ * <ImageViewer
70
+ * layout="split"
71
+ * title="Compared images"
72
+ * views={[
73
+ * { id: 'photo', label: 'Photo', src: '/photo.jpg', alt: 'Photo taken today' },
74
+ * {
75
+ * id: 'card',
76
+ * label: 'ID card',
77
+ * src: '/card.jpg',
78
+ * alt: 'Face on the ID card',
79
+ * crop: { left: 0.08, top: 0.2, width: 0.3, height: 0.5 },
80
+ * },
81
+ * ]}
82
+ * labels={labels}
83
+ * />
84
+ *
59
85
  * @param {Object} props - The properties of the ImageViewer component.
60
- * @param {TImageView[]} props.views - Images to display. More than one renders a tab per view. A view's optional `indicator` sits after its tab label and becomes part of the tab's accessible name, so give it its own (for an icon, `role="img"` and `aria-label`). With a single view there are no tabs, so no indicator is shown.
86
+ * @param {TImageView[]} props.views - Images to display. In `tabs`, more than one renders a tab per view; in `split`, a pane per view. A view's optional `indicator` sits after its label and becomes part of the tab's accessible name, so give it its own (for an icon, `role="img"` and `aria-label`). In `tabs` with a single view there are no tabs, so no indicator is shown. A view's optional `crop` (`left`, `top`, `width`, `height` as fractions from 0 to 1 of the image) shows only that region; a crop outside the image is clamped to it, and one with no area left falls back to the whole image.
61
87
  * @param {TImageViewerLabels} props.labels - Accessible names of the toolbar actions.
88
+ * @param {TImageViewerLayout} [props.layout='tabs'] - `tabs` shows one view at a time; `split` shows every view at once, one pane each.
62
89
  * @param {ReactNode} [props.title] - Optional heading rendered on the left of the toolbar.
63
90
  * @param {ReactNode} [props.emptyState] - Content rendered when there is no image.
64
- * @param {string} [props.activeId] - Id of the view to show. Makes the viewer controlled; an id that matches no view falls back to the first one.
65
- * @param {(id: string) => void} [props.onViewChange] - Called with the id of the tab the user picks, only when it differs from the active one.
91
+ * @param {string} [props.activeId] - Id of the view to show. Makes the viewer controlled; an id that matches no view falls back to the first one. Ignored in `split`.
92
+ * @param {(id: string) => void} [props.onViewChange] - Called with the id of the tab the user picks, only when it differs from the active one. Never called in `split`.
66
93
  * @param {HTMLAttributes<HTMLElement>} [props.restProps] - Additional attributes for the root element.
67
94
  *
68
95
  * @returns {ReactNode} The rendered ImageViewer component.
69
96
  */
70
- export function ImageViewer({ views, labels, title, emptyState, activeId, onViewChange, ...restProps }) {
97
+ export function ImageViewer({ views, labels, layout = 'tabs', title, emptyState, activeId, onViewChange, ...restProps }) {
71
98
  const [internalIndex, setInternalIndex] = useState(0);
72
99
  const [transform, setTransform] = useState(INITIAL_TRANSFORM);
73
100
  const [isFullscreen, setIsFullscreen] = useState(false);
@@ -98,7 +125,10 @@ export function ImageViewer({ views, labels, title, emptyState, activeId, onView
98
125
  : internalIndex;
99
126
  const activeView = views[activeIndex] ?? views[0];
100
127
  const hasImage = Boolean(activeView);
128
+ const isSplit = layout === 'split';
129
+ const hasTabs = !isSplit && views.length > 1;
101
130
  const { zoom, rotation } = transform;
131
+ const imageStyle = { transform: `rotate(${rotation}deg) scale(${zoom})` };
102
132
  /**
103
133
  * En modo controlado la vista puede cambiar sin pasar por `selectView`, asi
104
134
  * que el reinicio se ata a la vista activa y no al clic. Guardar el zoom por
@@ -154,7 +184,7 @@ export function ImageViewer({ views, labels, title, emptyState, activeId, onView
154
184
  </div>
155
185
 
156
186
  <Show>
157
- <Show.When isTrue={views.length > 1}>
187
+ <Show.When isTrue={hasTabs}>
158
188
  <List role="tablist" aria-orientation="horizontal" orientation="horizontal" className="border-gray-5 dark:border-gray-1 flex-none items-end gap-6 border-b px-4">
159
189
  <Each of={views} render={({ id, label, indicator }, index) => (<li key={id} role="presentation">
160
190
  <TabItem id={`${generatedId}-tab-${index}`} aria-controls={`${generatedId}-panel`} aria-selected={index === activeIndex} tabIndex={index === activeIndex ? 0 : -1} isActive={index === activeIndex} onClick={() => selectView(index)} className="pb-2">
@@ -170,16 +200,27 @@ export function ImageViewer({ views, labels, title, emptyState, activeId, onView
170
200
  </Show.When>
171
201
  </Show>
172
202
 
173
- <div id={`${generatedId}-panel`} role={views.length > 1 ? 'tabpanel' : undefined} aria-labelledby={views.length > 1 ? `${generatedId}-tab-${activeIndex}` : undefined} className="bg-gray-7 dark:bg-black-2 flex min-h-0 flex-1 items-center justify-center overflow-hidden p-5">
203
+ <div id={`${generatedId}-panel`} role={hasTabs ? 'tabpanel' : undefined} aria-labelledby={hasTabs ? `${generatedId}-tab-${activeIndex}` : undefined} className="bg-gray-7 dark:bg-black-2 flex min-h-0 flex-1 items-center justify-center overflow-hidden p-5">
174
204
  <Show>
205
+ <Show.When isTrue={hasImage && isSplit}>
206
+ <div className="grid h-full w-full auto-rows-fr grid-cols-1 gap-5 sm:auto-cols-fr sm:grid-flow-col sm:grid-cols-none sm:grid-rows-1">
207
+ <Each of={views} render={({ id, label, indicator, src, alt, crop }) => (<figure key={id} className="flex min-h-0 min-w-0 flex-col gap-2">
208
+ <figcaption className="flex flex-none items-center gap-1.5">
209
+ <Paragraph size="subtitle-2" className="dark:text-white">
210
+ {label}
211
+ </Paragraph>
212
+ {!!indicator && (<span className="flex flex-none items-center">
213
+ {indicator}
214
+ </span>)}
215
+ </figcaption>
216
+ <div className="flex min-h-0 flex-1 items-center justify-center overflow-hidden">
217
+ <ImageViewerImage src={src} alt={alt} crop={crop} style={imageStyle}/>
218
+ </div>
219
+ </figure>)}/>
220
+ </div>
221
+ </Show.When>
175
222
  <Show.When isTrue={hasImage}>
176
- {/**
177
- * `next/image` exigiria que cada consumidor declare el dominio de
178
- * sus imagenes en `remotePatterns`. Estas son cargas de usuario en
179
- * almacenamiento externo, asi que la lista no se puede conocer.
180
- */}
181
- {/* eslint-disable-next-line @next/next/no-img-element */}
182
- <img src={activeView?.src} alt={activeView?.alt} style={{ transform: `rotate(${rotation}deg) scale(${zoom})` }} className="max-h-full max-w-full object-contain transition-transform duration-200 ease-out"/>
223
+ {activeView && (<ImageViewerImage key={activeView.id} src={activeView.src} alt={activeView.alt} crop={activeView.crop} style={imageStyle}/>)}
183
224
  </Show.When>
184
225
  <Show.Else>{emptyState}</Show.Else>
185
226
  </Show>
@@ -1 +1 @@
1
- {"version":3,"file":"ImageViewer.jsx","sourceRoot":"","sources":["../../../../src/components/02-molecules/ImageViewer/ImageViewer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ImageViewer.jsx","sourceRoot":"","sources":["../../../../src/components/02-molecules/ImageViewer/ImageViewer.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import { type CSSProperties, type ReactNode } from 'react';
2
+ export type TImageCrop = {
3
+ left: number;
4
+ top: number;
5
+ width: number;
6
+ height: number;
7
+ };
8
+ type ImageViewerImageProps = {
9
+ src: string;
10
+ alt: string;
11
+ crop?: TImageCrop;
12
+ style: CSSProperties;
13
+ };
14
+ /**
15
+ * Image of one `ImageViewer` view, fitted inside its frame. With `crop`, only
16
+ * that region of the image is drawn, scaled to fit the frame the same way the
17
+ * whole image would be.
18
+ *
19
+ * Internal to `ImageViewer`: it is not exported from the library.
20
+ *
21
+ * @component
22
+ * @example
23
+ * <ImageViewerImage
24
+ * src="/document.jpg"
25
+ * alt="Document front"
26
+ * crop={{ left: 0.1, top: 0.2, width: 0.3, height: 0.4 }}
27
+ * style={{ transform: 'rotate(0deg) scale(1)' }}
28
+ * />
29
+ *
30
+ * @param {Object} props - The properties of the ImageViewerImage component.
31
+ * @param {string} props.src - Image URL.
32
+ * @param {string} props.alt - Accessible description of the image.
33
+ * @param {TImageCrop} [props.crop] - Region to show, as fractions (0 to 1) of the image width and height.
34
+ * @param {CSSProperties} props.style - Zoom and rotation computed by the viewer.
35
+ *
36
+ * @returns {ReactNode} The rendered image.
37
+ */
38
+ export declare function ImageViewerImage({ src, alt, crop, style, }: ImageViewerImageProps): ReactNode;
39
+ export {};
40
+ //# sourceMappingURL=ImageViewerImage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImageViewerImage.d.ts","sourceRoot":"","sources":["../../../../src/components/02-molecules/ImageViewer/ImageViewerImage.tsx"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,SAAS,EAIf,MAAM,OAAO,CAAC;AAEf,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAOF,KAAK,qBAAqB,GAAG;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,KAAK,EAAE,aAAa,CAAC;CACtB,CAAC;AA0DF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,GAAG,EACH,GAAG,EACH,IAAI,EACJ,KAAK,GACN,EAAE,qBAAqB,GAAG,SAAS,CA4DnC"}
@@ -0,0 +1,108 @@
1
+ 'use client';
2
+ import clsx from 'clsx';
3
+ import { useEffect, useId, useState, } from 'react';
4
+ const TRANSFORM_CLASSNAME = 'transition-transform duration-200 ease-out';
5
+ const clampFraction = (value) => Math.min(Math.max(value, 0), 1);
6
+ /**
7
+ * Keeps the region inside the image, and drops it when nothing is left to
8
+ * show, so a malformed crop falls back to the whole image.
9
+ */
10
+ const normalizeCrop = (crop) => {
11
+ if (!crop)
12
+ return null;
13
+ const left = clampFraction(crop.left);
14
+ const top = clampFraction(crop.top);
15
+ const width = clampFraction(crop.left + crop.width) - left;
16
+ const height = clampFraction(crop.top + crop.height) - top;
17
+ return width > 0 && height > 0 ? { left, top, width, height } : null;
18
+ };
19
+ /**
20
+ * The crop is expressed in fractions, but an SVG `viewBox` needs pixels to keep
21
+ * the region undistorted, so the image is decoded once to read its size.
22
+ */
23
+ const useNaturalSize = (src, isEnabled) => {
24
+ const [size, setSize] = useState(null);
25
+ useEffect(() => {
26
+ if (!isEnabled)
27
+ return;
28
+ let isCurrent = true;
29
+ const image = new window.Image();
30
+ setSize(null);
31
+ image.onload = () => {
32
+ if (isCurrent) {
33
+ setSize({ width: image.naturalWidth, height: image.naturalHeight });
34
+ }
35
+ };
36
+ image.onerror = () => {
37
+ if (isCurrent)
38
+ setSize('error');
39
+ };
40
+ image.src = src;
41
+ return () => {
42
+ isCurrent = false;
43
+ image.onload = null;
44
+ image.onerror = null;
45
+ };
46
+ }, [src, isEnabled]);
47
+ return size;
48
+ };
49
+ /**
50
+ * Image of one `ImageViewer` view, fitted inside its frame. With `crop`, only
51
+ * that region of the image is drawn, scaled to fit the frame the same way the
52
+ * whole image would be.
53
+ *
54
+ * Internal to `ImageViewer`: it is not exported from the library.
55
+ *
56
+ * @component
57
+ * @example
58
+ * <ImageViewerImage
59
+ * src="/document.jpg"
60
+ * alt="Document front"
61
+ * crop={{ left: 0.1, top: 0.2, width: 0.3, height: 0.4 }}
62
+ * style={{ transform: 'rotate(0deg) scale(1)' }}
63
+ * />
64
+ *
65
+ * @param {Object} props - The properties of the ImageViewerImage component.
66
+ * @param {string} props.src - Image URL.
67
+ * @param {string} props.alt - Accessible description of the image.
68
+ * @param {TImageCrop} [props.crop] - Region to show, as fractions (0 to 1) of the image width and height.
69
+ * @param {CSSProperties} props.style - Zoom and rotation computed by the viewer.
70
+ *
71
+ * @returns {ReactNode} The rendered image.
72
+ */
73
+ export function ImageViewerImage({ src, alt, crop, style, }) {
74
+ const region = normalizeCrop(crop);
75
+ const size = useNaturalSize(src, region !== null);
76
+ const clipId = `crop${useId().replace(/[^\w-]/g, '')}`;
77
+ if (!region || size === 'error') {
78
+ return (
79
+ /**
80
+ * `next/image` exigiria que cada consumidor declare el dominio de sus
81
+ * imagenes en `remotePatterns`. Estas son cargas de usuario en
82
+ * almacenamiento externo, asi que la lista no se puede conocer.
83
+ */
84
+ // eslint-disable-next-line @next/next/no-img-element
85
+ <img src={src} alt={alt} style={style} className={clsx('max-h-full max-w-full object-contain', TRANSFORM_CLASSNAME)}/>);
86
+ }
87
+ if (!size)
88
+ return null;
89
+ const box = {
90
+ x: region.left * size.width,
91
+ y: region.top * size.height,
92
+ width: region.width * size.width,
93
+ height: region.height * size.height,
94
+ };
95
+ /**
96
+ * `meet` centers the region but the SVG still paints whatever falls in the
97
+ * letterbox, which is the rest of the image: the clip keeps only the region.
98
+ */
99
+ return (<svg role="img" aria-label={alt} viewBox={[box.x, box.y, box.width, box.height].join(' ')} preserveAspectRatio="xMidYMid meet" style={style} className={clsx('h-full w-full', TRANSFORM_CLASSNAME)}>
100
+ <defs>
101
+ <clipPath id={clipId}>
102
+ <rect {...box}/>
103
+ </clipPath>
104
+ </defs>
105
+ <image href={src} width={size.width} height={size.height} clipPath={`url(#${clipId})`}/>
106
+ </svg>);
107
+ }
108
+ //# sourceMappingURL=ImageViewerImage.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImageViewerImage.jsx","sourceRoot":"","sources":["../../../../src/components/02-molecules/ImageViewer/ImageViewerImage.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SideFilterTemplate.d.ts","sourceRoot":"","sources":["../../../../src/components/04-templates/SideFilterTemplate/SideFilterTemplate.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAY,MAAM,OAAO,CAAC;AAM5C,KAAK,uBAAuB,GAAG;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,GAAG,CAAC;IACrB,kBAAkB,EAAE,GAAG,CAAC;IACxB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;IACnD,MAAM,EAAE,GAAG,CAAC;IACZ,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,MAAM,EACN,YAAY,EACZ,kBAAyB,GAC1B,EAAE,uBAAuB,GAAG,SAAS,CAiDrC"}
1
+ {"version":3,"file":"SideFilterTemplate.d.ts","sourceRoot":"","sources":["../../../../src/components/04-templates/SideFilterTemplate/SideFilterTemplate.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAY,MAAM,OAAO,CAAC;AAM5C,KAAK,uBAAuB,GAAG;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,GAAG,CAAC;IACrB,kBAAkB,EAAE,GAAG,CAAC;IACxB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;IACnD,MAAM,EAAE,GAAG,CAAC;IACZ,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,MAAM,EACN,YAAY,EACZ,kBAAyB,GAC1B,EAAE,uBAAuB,GAAG,SAAS,CAoDrC"}
@@ -43,7 +43,10 @@ export function SideFilterTemplate({ filterCount, handleSetFilter, handledClearF
43
43
  filtersEnabledText: 'Filtros activos:',
44
44
  submitButton: {
45
45
  text: 'Aplicar filtros',
46
- callback: handleSetFilter,
46
+ callback: (data) => {
47
+ handleSetFilter(data);
48
+ setIsOpen(false);
49
+ },
47
50
  },
48
51
  resetButton: {
49
52
  text: 'Limpiar',
@@ -1 +1 @@
1
- {"version":3,"file":"SideFilterTemplate.jsx","sourceRoot":"","sources":["../../../../src/components/04-templates/SideFilterTemplate/SideFilterTemplate.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAa,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAWlD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,kBAAkB,CAAC,EACjC,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,MAAM,EACN,YAAY,EACZ,kBAAkB,GAAG,IAAI,GACD;IACxB,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAU,KAAK,CAAC,CAAC;IAErD,OAAO,CACL,EACE;MAAA,CAAC,GAAG,CAAC,SAAS,CAAC,oDAAoD,CACjE;QAAA,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CACvB,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CACxC;YAAA,CAAC,WAAW,CAAE;UAChB,EAAE,SAAS,CAAC,CACb,CACD;QAAA,CAAC,MAAM,CACL,QAAQ,CAAC,MAAM,CACf,KAAK,CAAC,CAAC,CAAC,uBAAuB,CAAC,AAAD,EAAG,CAAC,CACnC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAC/B,aAAa,CAAC,CAAC,MAAM,CAAC,CACtB,aAAa,CAAC,QAAQ,CAEtB;;QACF,EAAE,MAAM,CACV;MAAA,EAAE,GAAG,CACL;MAAA,CAAC,CAAC,CAAC,MAAM;YACP,YAAY,CACV,CAAC,YAAY,CACX,KAAK,CAAC,SAAS,CACf,aAAa,CAAC,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CACtC,MAAM,CAAC,CAAC;oBACN,kBAAkB;oBAClB,kBAAkB,EAAE,kBAAkB;oBACtC,YAAY,EAAE;wBACZ,IAAI,EAAE,iBAAiB;wBACvB,QAAQ,EAAE,eAAe;qBAC1B;oBACD,WAAW,EAAE;wBACX,IAAI,EAAE,SAAS;wBACf,QAAQ,EAAE,kBAAkB;qBAC7B;oBACD,eAAe,EAAE,CAAC,IAAI,EAAE,EAAE;wBACxB,IAAI,YAAY,EAAE,CAAC;4BACjB,YAAY,CAAC,IAAI,CAAC,CAAC;wBACrB,CAAC;oBACH,CAAC;oBACD,MAAM,EAAE,MAAM;iBACf,CAAC,EACF,EACF,QAAQ,CAAC,IAAI,CACd,CACL;IAAA,GAAG,CACJ,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"SideFilterTemplate.jsx","sourceRoot":"","sources":["../../../../src/components/04-templates/SideFilterTemplate/SideFilterTemplate.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAa,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAWlD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,kBAAkB,CAAC,EACjC,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,MAAM,EACN,YAAY,EACZ,kBAAkB,GAAG,IAAI,GACD;IACxB,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAU,KAAK,CAAC,CAAC;IAErD,OAAO,CACL,EACE;MAAA,CAAC,GAAG,CAAC,SAAS,CAAC,oDAAoD,CACjE;QAAA,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CACvB,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CACxC;YAAA,CAAC,WAAW,CAAE;UAChB,EAAE,SAAS,CAAC,CACb,CACD;QAAA,CAAC,MAAM,CACL,QAAQ,CAAC,MAAM,CACf,KAAK,CAAC,CAAC,CAAC,uBAAuB,CAAC,AAAD,EAAG,CAAC,CACnC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAC/B,aAAa,CAAC,CAAC,MAAM,CAAC,CACtB,aAAa,CAAC,QAAQ,CAEtB;;QACF,EAAE,MAAM,CACV;MAAA,EAAE,GAAG,CACL;MAAA,CAAC,CAAC,CAAC,MAAM;YACP,YAAY,CACV,CAAC,YAAY,CACX,KAAK,CAAC,SAAS,CACf,aAAa,CAAC,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CACtC,MAAM,CAAC,CAAC;oBACN,kBAAkB;oBAClB,kBAAkB,EAAE,kBAAkB;oBACtC,YAAY,EAAE;wBACZ,IAAI,EAAE,iBAAiB;wBACvB,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE;4BACjB,eAAe,CAAC,IAAI,CAAC,CAAC;4BACtB,SAAS,CAAC,KAAK,CAAC,CAAC;wBACnB,CAAC;qBACF;oBACD,WAAW,EAAE;wBACX,IAAI,EAAE,SAAS;wBACf,QAAQ,EAAE,kBAAkB;qBAC7B;oBACD,eAAe,EAAE,CAAC,IAAI,EAAE,EAAE;wBACxB,IAAI,YAAY,EAAE,CAAC;4BACjB,YAAY,CAAC,IAAI,CAAC,CAAC;wBACrB,CAAC;oBACH,CAAC;oBACD,MAAM,EAAE,MAAM;iBACf,CAAC,EACF,EACF,QAAQ,CAAC,IAAI,CACd,CACL;IAAA,GAAG,CACJ,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clicoh/orion-library",
3
- "version": "1.2.0-beta.7",
3
+ "version": "1.2.0-beta.8",
4
4
  "main": "index.js",
5
5
  "dependencies": {
6
6
  "@floating-ui/react": "0.26.19",