@clicoh/orion-library 1.2.0-beta.25 → 1.2.0-beta.27

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 (59) hide show
  1. package/dist/components/01-atoms/FileUpload/FileUpload.d.ts +5 -0
  2. package/dist/components/01-atoms/FileUpload/FileUpload.d.ts.map +1 -1
  3. package/dist/components/01-atoms/FileUpload/FileUpload.jsx +48 -13
  4. package/dist/components/01-atoms/FileUpload/FileUpload.jsx.map +1 -1
  5. package/dist/components/01-atoms/MultiSelect/MultiSelect.d.ts +33 -4
  6. package/dist/components/01-atoms/MultiSelect/MultiSelect.d.ts.map +1 -1
  7. package/dist/components/01-atoms/MultiSelect/MultiSelect.jsx +62 -13
  8. package/dist/components/01-atoms/MultiSelect/MultiSelect.jsx.map +1 -1
  9. package/dist/components/01-atoms/MultiSelect/index.d.ts +1 -1
  10. package/dist/components/01-atoms/MultiSelect/index.d.ts.map +1 -1
  11. package/dist/components/01-atoms/Select/Select.d.ts +1 -1
  12. package/dist/components/01-atoms/Select/Select.jsx +1 -1
  13. package/dist/components/01-atoms/Select/SelectList.d.ts +4 -0
  14. package/dist/components/01-atoms/Select/SelectList.d.ts.map +1 -1
  15. package/dist/components/01-atoms/Select/SelectList.jsx +8 -2
  16. package/dist/components/01-atoms/Select/SelectList.jsx.map +1 -1
  17. package/dist/components/02-molecules/Accordion/AccordionSection.d.ts +17 -1
  18. package/dist/components/02-molecules/Accordion/AccordionSection.d.ts.map +1 -1
  19. package/dist/components/02-molecules/Accordion/AccordionSection.jsx +46 -5
  20. package/dist/components/02-molecules/Accordion/AccordionSection.jsx.map +1 -1
  21. package/dist/components/02-molecules/DatePicker/DatePicker.d.ts +14 -1
  22. package/dist/components/02-molecules/DatePicker/DatePicker.d.ts.map +1 -1
  23. package/dist/components/02-molecules/DatePicker/DatePicker.jsx +18 -5
  24. package/dist/components/02-molecules/DatePicker/DatePicker.jsx.map +1 -1
  25. package/dist/components/02-molecules/Filter/Filter.d.ts +10 -2
  26. package/dist/components/02-molecules/Filter/Filter.d.ts.map +1 -1
  27. package/dist/components/02-molecules/Filter/Filter.jsx +20 -7
  28. package/dist/components/02-molecules/Filter/Filter.jsx.map +1 -1
  29. package/dist/components/02-molecules/Filter/index.d.ts +1 -0
  30. package/dist/components/02-molecules/Filter/index.d.ts.map +1 -1
  31. package/dist/components/02-molecules/Filter/index.js +1 -0
  32. package/dist/components/02-molecules/Filter/index.js.map +1 -1
  33. package/dist/components/02-molecules/Filter/types.d.ts +8 -0
  34. package/dist/components/02-molecules/Filter/types.d.ts.map +1 -1
  35. package/dist/components/02-molecules/Filter/utils/getFilterChips.d.ts +9 -2
  36. package/dist/components/02-molecules/Filter/utils/getFilterChips.d.ts.map +1 -1
  37. package/dist/components/02-molecules/Filter/utils/getFilterChips.js +15 -2
  38. package/dist/components/02-molecules/Filter/utils/getFilterChips.js.map +1 -1
  39. package/dist/components/02-molecules/Filter/utils/removeFilterChip.d.ts +9 -0
  40. package/dist/components/02-molecules/Filter/utils/removeFilterChip.d.ts.map +1 -0
  41. package/dist/components/02-molecules/Filter/utils/removeFilterChip.js +13 -0
  42. package/dist/components/02-molecules/Filter/utils/removeFilterChip.js.map +1 -0
  43. package/dist/components/02-molecules/FilterChips/FilterChips.d.ts +21 -5
  44. package/dist/components/02-molecules/FilterChips/FilterChips.d.ts.map +1 -1
  45. package/dist/components/02-molecules/FilterChips/FilterChips.jsx +22 -6
  46. package/dist/components/02-molecules/FilterChips/FilterChips.jsx.map +1 -1
  47. package/dist/components/02-molecules/ImageViewer/ImageViewer.d.ts +45 -4
  48. package/dist/components/02-molecules/ImageViewer/ImageViewer.d.ts.map +1 -1
  49. package/dist/components/02-molecules/ImageViewer/ImageViewer.jsx +106 -52
  50. package/dist/components/02-molecules/ImageViewer/ImageViewer.jsx.map +1 -1
  51. package/dist/components/02-molecules/ImageViewer/ImageViewerDocument.d.ts +16 -5
  52. package/dist/components/02-molecules/ImageViewer/ImageViewerDocument.d.ts.map +1 -1
  53. package/dist/components/02-molecules/ImageViewer/ImageViewerDocument.jsx +30 -13
  54. package/dist/components/02-molecules/ImageViewer/ImageViewerDocument.jsx.map +1 -1
  55. package/dist/components/04-templates/SideFilterTemplate/SideFilterTemplate.d.ts +7 -1
  56. package/dist/components/04-templates/SideFilterTemplate/SideFilterTemplate.d.ts.map +1 -1
  57. package/dist/components/04-templates/SideFilterTemplate/SideFilterTemplate.jsx +7 -3
  58. package/dist/components/04-templates/SideFilterTemplate/SideFilterTemplate.jsx.map +1 -1
  59. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"getFilterChips.js","sourceRoot":"","sources":["../../../../../src/components/02-molecules/Filter/utils/getFilterChips.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getFilterChips.js","sourceRoot":"","sources":["../../../../../src/components/02-molecules/Filter/utils/getFilterChips.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { OptionType } from '../../../01-atoms';
2
+ import type { TFilterValues } from '../types';
3
+ /**
4
+ * Returns the filter values without the removed chip. With a `value`, from a
5
+ * per-value chip of `chipPerValue`, only that option leaves its `multiselect`,
6
+ * and the key goes away with the last one. Without it, the whole key goes.
7
+ */
8
+ export declare const removeFilterChip: (values: Record<string, TFilterValues>, key: string, value?: OptionType["value"]) => Record<string, TFilterValues>;
9
+ //# sourceMappingURL=removeFilterChip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"removeFilterChip.d.ts","sourceRoot":"","sources":["../../../../../src/components/02-molecules/Filter/utils/removeFilterChip.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,WACnB,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,OAChC,MAAM,UACH,UAAU,CAAC,OAAO,CAAC,KAC1B,MAAM,CAAC,MAAM,EAAE,aAAa,CAQ9B,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Returns the filter values without the removed chip. With a `value`, from a
3
+ * per-value chip of `chipPerValue`, only that option leaves its `multiselect`,
4
+ * and the key goes away with the last one. Without it, the whole key goes.
5
+ */
6
+ export const removeFilterChip = (values, key, value) => {
7
+ const { [key]: current, ...rest } = values;
8
+ if (value === undefined || !Array.isArray(current))
9
+ return rest;
10
+ const remaining = current.filter((option) => option.value !== value);
11
+ return remaining.length ? { ...rest, [key]: remaining } : rest;
12
+ };
13
+ //# sourceMappingURL=removeFilterChip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"removeFilterChip.js","sourceRoot":"","sources":["../../../../../src/components/02-molecules/Filter/utils/removeFilterChip.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,MAAqC,EACrC,GAAW,EACX,KAA2B,EACI,EAAE;IACjC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;IAE3C,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IAEhE,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;IAErE,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACjE,CAAC,CAAC"}
@@ -4,11 +4,12 @@ import type { TFilterInputs, TFilterValues } from '../Filter/types';
4
4
  type FilterChipsProps = {
5
5
  inputs: TFilterInputs;
6
6
  values: Record<string, TFilterValues>;
7
- onRemove: (key: string) => void;
7
+ onRemove: (key: string, value?: OptionType['value']) => void;
8
8
  onClearAll?: () => void;
9
9
  clearAllText?: string;
10
- removeFilterLabel?: (filterLabel: string) => string;
10
+ removeFilterLabel?: (filterLabel: string, valueLabel?: string) => string;
11
11
  extraOptions?: Record<string, OptionType[]>;
12
+ chipPerValue?: boolean;
12
13
  } & Omit<HTMLAttributes<HTMLUListElement>, 'children'>;
13
14
  /**
14
15
  * FilterChips component for rendering the applied filters as removable chips.
@@ -17,6 +18,11 @@ type FilterChipsProps = {
17
18
  * the chips read the same inside the panel and outside of it. Renders nothing
18
19
  * while no filter is applied.
19
20
  *
21
+ * With `chipPerValue`, a `multiselect` with several options selected gives one
22
+ * chip per option (`Country: Mexico`, `Country: Colombia`), and removing one
23
+ * calls `onRemove` with the key and that option's value. `removeFilterChip`
24
+ * applies that removal to the values.
25
+ *
20
26
  * @component
21
27
  * @example
22
28
  * <FilterChips
@@ -27,18 +33,28 @@ type FilterChipsProps = {
27
33
  * clearAllText="Limpiar todos"
28
34
  * />
29
35
  *
36
+ * @example
37
+ * // One chip per selected option
38
+ * <FilterChips
39
+ * inputs={config}
40
+ * values={values}
41
+ * chipPerValue
42
+ * onRemove={(key, value) => setValues(removeFilterChip(values, key, value))}
43
+ * />
44
+ *
30
45
  * @param {Object} props - The properties of the FilterChips component.
31
46
  * @param {TFilterInputs} props.inputs - Filter configuration used to resolve the labels.
32
47
  * @param {Object} props.values - Applied filter values, keyed by filter key.
33
- * @param {Function} props.onRemove - Callback triggered with the key of the removed filter.
48
+ * @param {Function} props.onRemove - Callback triggered with the key of the removed filter and, on a per-value chip, the value of the removed option.
34
49
  * @param {Function} [props.onClearAll] - Callback that clears every filter. The action is hidden when omitted.
35
50
  * @param {string} [props.clearAllText] - Text of the clear all action.
36
- * @param {Function} [props.removeFilterLabel] - Builds the accessible label of each remove button.
51
+ * @param {Function} [props.removeFilterLabel] - Builds the accessible label of each remove button, from the filter label and, on a per-value chip, the option label.
37
52
  * @param {Object} [props.extraOptions] - Asynchronously loaded options, keyed by filter key.
53
+ * @param {boolean} [props.chipPerValue=false] - One chip per selected option of a `multiselect`, instead of one chip per control.
38
54
  * @param {HTMLAttributes<HTMLUListElement>} [props.restProps] - Additional attributes for the list element.
39
55
  *
40
56
  * @returns {ReactNode} The rendered FilterChips component.
41
57
  */
42
- export declare function FilterChips({ inputs, values, onRemove, onClearAll, clearAllText, removeFilterLabel, extraOptions, ...restProps }: FilterChipsProps): ReactNode;
58
+ export declare function FilterChips({ inputs, values, onRemove, onClearAll, clearAllText, removeFilterLabel, extraOptions, chipPerValue, ...restProps }: FilterChipsProps): ReactNode;
43
59
  export {};
44
60
  //# sourceMappingURL=FilterChips.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FilterChips.d.ts","sourceRoot":"","sources":["../../../../src/components/02-molecules/FilterChips/FilterChips.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAG5D,OAAO,EAAQ,KAAK,UAAU,EAAa,MAAM,gBAAgB,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGpE,KAAK,gBAAgB,GAAG;IACtB,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACtC,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,CAAC;IACpD,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;CAC7C,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,EAAE,UAAU,CAAC,CAAC;AAEvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,WAAW,CAAC,EAC1B,MAAM,EACN,MAAM,EACN,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,GAAG,SAAS,EACb,EAAE,gBAAgB,GAAG,SAAS,CA4C9B"}
1
+ {"version":3,"file":"FilterChips.d.ts","sourceRoot":"","sources":["../../../../src/components/02-molecules/FilterChips/FilterChips.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAG5D,OAAO,EAAQ,KAAK,UAAU,EAAa,MAAM,gBAAgB,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGpE,KAAK,gBAAgB,GAAG;IACtB,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACtC,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IAC7D,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IACzE,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IAC5C,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,EAAE,UAAU,CAAC,CAAC;AAEvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,wBAAgB,WAAW,CAAC,EAC1B,MAAM,EACN,MAAM,EACN,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,GAAG,SAAS,EACb,EAAE,gBAAgB,GAAG,SAAS,CAiD9B"}
@@ -11,6 +11,11 @@ import { getFilterChips } from '../Filter/utils/getFilterChips';
11
11
  * the chips read the same inside the panel and outside of it. Renders nothing
12
12
  * while no filter is applied.
13
13
  *
14
+ * With `chipPerValue`, a `multiselect` with several options selected gives one
15
+ * chip per option (`Country: Mexico`, `Country: Colombia`), and removing one
16
+ * calls `onRemove` with the key and that option's value. `removeFilterChip`
17
+ * applies that removal to the values.
18
+ *
14
19
  * @component
15
20
  * @example
16
21
  * <FilterChips
@@ -21,27 +26,38 @@ import { getFilterChips } from '../Filter/utils/getFilterChips';
21
26
  * clearAllText="Limpiar todos"
22
27
  * />
23
28
  *
29
+ * @example
30
+ * // One chip per selected option
31
+ * <FilterChips
32
+ * inputs={config}
33
+ * values={values}
34
+ * chipPerValue
35
+ * onRemove={(key, value) => setValues(removeFilterChip(values, key, value))}
36
+ * />
37
+ *
24
38
  * @param {Object} props - The properties of the FilterChips component.
25
39
  * @param {TFilterInputs} props.inputs - Filter configuration used to resolve the labels.
26
40
  * @param {Object} props.values - Applied filter values, keyed by filter key.
27
- * @param {Function} props.onRemove - Callback triggered with the key of the removed filter.
41
+ * @param {Function} props.onRemove - Callback triggered with the key of the removed filter and, on a per-value chip, the value of the removed option.
28
42
  * @param {Function} [props.onClearAll] - Callback that clears every filter. The action is hidden when omitted.
29
43
  * @param {string} [props.clearAllText] - Text of the clear all action.
30
- * @param {Function} [props.removeFilterLabel] - Builds the accessible label of each remove button.
44
+ * @param {Function} [props.removeFilterLabel] - Builds the accessible label of each remove button, from the filter label and, on a per-value chip, the option label.
31
45
  * @param {Object} [props.extraOptions] - Asynchronously loaded options, keyed by filter key.
46
+ * @param {boolean} [props.chipPerValue=false] - One chip per selected option of a `multiselect`, instead of one chip per control.
32
47
  * @param {HTMLAttributes<HTMLUListElement>} [props.restProps] - Additional attributes for the list element.
33
48
  *
34
49
  * @returns {ReactNode} The rendered FilterChips component.
35
50
  */
36
- export function FilterChips({ inputs, values, onRemove, onClearAll, clearAllText, removeFilterLabel, extraOptions, ...restProps }) {
37
- const chips = getFilterChips({ inputs, values, extraOptions });
51
+ export function FilterChips({ inputs, values, onRemove, onClearAll, clearAllText, removeFilterLabel, extraOptions, chipPerValue, ...restProps }) {
52
+ const chips = getFilterChips({ inputs, values, extraOptions, chipPerValue });
38
53
  if (!chips.length)
39
54
  return null;
40
55
  return (<List {...restProps} orientation="horizontal" className={clsx('flex-wrap gap-2', restProps.className)}>
41
- <Each of={chips} render={({ key, label, text }) => (<li key={key}>
56
+ <Each of={chips} render={({ key, label, text, value, valueLabel }) => (<li key={value === undefined ? key : `${key}:${value}`}>
42
57
  <div className="bg-gray-5 dark:bg-gray-1 inline-flex items-center rounded-full px-4 py-2 dark:text-white">
43
58
  <Paragraph size="chips">{text}</Paragraph>
44
- <button type="button" aria-label={removeFilterLabel?.(label) ?? label} onClick={() => onRemove(key)} className="bg-error ml-1.5 inline-flex h-4 w-4 cursor-pointer items-center justify-center rounded-full p-0.5 text-white">
59
+ <button type="button" aria-label={removeFilterLabel?.(label, valueLabel) ??
60
+ (valueLabel === undefined ? label : text)} onClick={() => value === undefined ? onRemove(key) : onRemove(key, value)} className="bg-error ml-1.5 inline-flex h-4 w-4 cursor-pointer items-center justify-center rounded-full p-0.5 text-white">
45
61
  <MdClose aria-hidden="true"/>
46
62
  </button>
47
63
  </div>
@@ -1 +1 @@
1
- {"version":3,"file":"FilterChips.jsx","sourceRoot":"","sources":["../../../../src/components/02-molecules/FilterChips/FilterChips.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAmB,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAElE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAYhE;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,UAAU,WAAW,CAAC,EAC1B,MAAM,EACN,MAAM,EACN,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,GAAG,SAAS,EACK;IACjB,MAAM,KAAK,GAAG,cAAc,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IAE/D,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAE/B,OAAO,CACL,CAAC,IAAI,CACH,IAAI,SAAS,CAAC,CACd,WAAW,CAAC,YAAY,CACxB,SAAS,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,CAExD;MAAA,CAAC,IAAI,CACH,EAAE,CAAC,CAAC,KAAK,CAAC,CACV,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAChC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CACX;YAAA,CAAC,GAAG,CAAC,SAAS,CAAC,0FAA0F,CACvG;cAAA,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,SAAS,CACzC;cAAA,CAAC,MAAM,CACL,IAAI,CAAC,QAAQ,CACb,UAAU,CAAC,CAAC,iBAAiB,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAChD,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAC7B,SAAS,CAAC,8GAA8G,CAExH;gBAAA,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,EAC7B;cAAA,EAAE,MAAM,CACV;YAAA,EAAE,GAAG,CACP;UAAA,EAAE,EAAE,CAAC,CACN,CAAC,EAEJ;MAAA,CAAC,IAAI,CACH;QAAA,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI,YAAY,CAAC,CAAC,CACrD;UAAA,CAAC,EAAE,CACD;YAAA,CAAC,MAAM,CACL,IAAI,CAAC,QAAQ,CACb,OAAO,CAAC,CAAC,UAAU,CAAC,CACpB,SAAS,CAAC,8GAA8G,CAExH;cAAA,CAAC,YAAY,CACf;YAAA,EAAE,MAAM,CACV;UAAA,EAAE,EAAE,CACN;QAAA,EAAE,IAAI,CAAC,IAAI,CACb;MAAA,EAAE,IAAI,CACR;IAAA,EAAE,IAAI,CAAC,CACR,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"FilterChips.jsx","sourceRoot":"","sources":["../../../../src/components/02-molecules/FilterChips/FilterChips.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAmB,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAElE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAahE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,MAAM,UAAU,WAAW,CAAC,EAC1B,MAAM,EACN,MAAM,EACN,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,GAAG,SAAS,EACK;IACjB,MAAM,KAAK,GAAG,cAAc,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC,CAAC;IAE7E,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAE/B,OAAO,CACL,CAAC,IAAI,CACH,IAAI,SAAS,CAAC,CACd,WAAW,CAAC,YAAY,CACxB,SAAS,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,CAExD;MAAA,CAAC,IAAI,CACH,EAAE,CAAC,CAAC,KAAK,CAAC,CACV,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CACnD,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC,CACrD;YAAA,CAAC,GAAG,CAAC,SAAS,CAAC,0FAA0F,CACvG;cAAA,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,SAAS,CACzC;cAAA,CAAC,MAAM,CACL,IAAI,CAAC,QAAQ,CACb,UAAU,CAAC,CACT,iBAAiB,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC;gBACtC,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAC1C,CAAC,CACD,OAAO,CAAC,CAAC,GAAG,EAAE,CACZ,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAC3D,CAAC,CACD,SAAS,CAAC,8GAA8G,CAExH;gBAAA,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,EAC7B;cAAA,EAAE,MAAM,CACV;YAAA,EAAE,GAAG,CACP;UAAA,EAAE,EAAE,CAAC,CACN,CAAC,EAEJ;MAAA,CAAC,IAAI,CACH;QAAA,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI,YAAY,CAAC,CAAC,CACrD;UAAA,CAAC,EAAE,CACD;YAAA,CAAC,MAAM,CACL,IAAI,CAAC,QAAQ,CACb,OAAO,CAAC,CAAC,UAAU,CAAC,CACpB,SAAS,CAAC,8GAA8G,CAExH;cAAA,CAAC,YAAY,CACf;YAAA,EAAE,MAAM,CACV;UAAA,EAAE,EAAE,CACN;QAAA,EAAE,IAAI,CAAC,IAAI,CACb;MAAA,EAAE,IAAI,CACR;IAAA,EAAE,IAAI,CAAC,CACR,CAAC;AACJ,CAAC"}
@@ -7,13 +7,15 @@ export type TImageViewType = 'image' | 'pdf';
7
7
  export type TImageView = {
8
8
  id: string;
9
9
  label: string;
10
- src: string;
10
+ src?: string;
11
11
  alt: string;
12
12
  type?: TImageViewType;
13
13
  indicator?: ReactNode;
14
14
  crop?: TImageCrop;
15
+ emptyContent?: ReactNode;
15
16
  };
16
17
  export type TImageViewerLayout = 'tabs' | 'split';
18
+ export type TImageViewerTabsPlacement = 'below' | 'toolbar';
17
19
  export type TImageViewerLabels = {
18
20
  zoomIn: string;
19
21
  zoomOut: string;
@@ -25,6 +27,8 @@ type ImageViewerProps = {
25
27
  views: TImageView[];
26
28
  labels: TImageViewerLabels;
27
29
  layout?: TImageViewerLayout;
30
+ tabsPlacement?: TImageViewerTabsPlacement;
31
+ showSingleTab?: boolean;
28
32
  title?: ReactNode;
29
33
  emptyState?: ReactNode;
30
34
  activeId?: string;
@@ -67,6 +71,19 @@ type ImageViewerProps = {
67
71
  * allow CORS; when it cannot be loaded, the view shows its description and
68
72
  * the same link.
69
73
  *
74
+ * `tabsPlacement="toolbar"` folds the tabs into the toolbar: one bar on top,
75
+ * tabs on the left and actions on the right. With no tabs and a PDF of several
76
+ * pages, the pager takes that left side instead of floating over the page.
77
+ * Every toolbar action shows its label as a tooltip, in both placements.
78
+ *
79
+ * A single view has no tabs unless `showSingleTab` is set: then its tab is
80
+ * drawn in either placement, so a one-sided file reads like the views of a
81
+ * two-sided one. Being a tab, a PDF with it keeps its pager over the page.
82
+ *
83
+ * A view without `src` keeps its tab and draws its `emptyContent` in the frame
84
+ * instead — a side that was never uploaded, for instance. With nothing to
85
+ * inspect, the toolbar actions are disabled.
86
+ *
70
87
  * @component
71
88
  * @example
72
89
  * const [viewId, setViewId] = useState('front');
@@ -126,10 +143,34 @@ type ImageViewerProps = {
126
143
  * }}
127
144
  * />
128
145
  *
146
+ * @example
147
+ * <ImageViewer
148
+ * tabsPlacement="toolbar"
149
+ * views={[
150
+ * { id: 'front', label: 'Front', src: '/front.jpg', alt: 'Document front' },
151
+ * {
152
+ * id: 'back',
153
+ * label: 'Back',
154
+ * alt: 'Document back',
155
+ * emptyContent: <p>Not uploaded yet</p>,
156
+ * },
157
+ * ]}
158
+ * labels={labels}
159
+ * />
160
+ *
161
+ * @example
162
+ * <ImageViewer
163
+ * showSingleTab
164
+ * views={[{ id: 'front', label: 'Front', src: '/front.jpg', alt: 'Document front' }]}
165
+ * labels={labels}
166
+ * />
167
+ *
129
168
  * @param {Object} props - The properties of the ImageViewer component.
130
- * @param {TImageView[]} props.views - Files 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. A view's `type` is `image` unless set to `pdf`; `crop` is ignored on a `pdf`.
131
- * @param {TImageViewerLabels} props.labels - Accessible names of the toolbar actions. With `pdf` views, `openDocument` names the action that opens the original file in a new tab, and `previousPage` / `nextPage` name the pager of a document with several pages; without the pair, only the first page is reachable.
169
+ * @param {TImageView[]} props.views - Files 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, unless `showSingleTab` is set. 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. A view's `type` is `image` unless set to `pdf`; `crop` is ignored on a `pdf`. A view without `src` draws its optional `emptyContent` in the frame (or its pane, in `split`) instead of a file.
170
+ * @param {TImageViewerLabels} props.labels - Accessible names of the toolbar actions, also shown as their tooltips. With `pdf` views, `openDocument` names the action that opens the original file in a new tab, and `previousPage` / `nextPage` name the pager of a document with several pages; without the pair, only the first page is reachable. `pageStatus(page, pageCount)` writes the pager text (for instance `Page 2 of 5`); without it the pager reads `2 / 5`.
132
171
  * @param {TImageViewerLayout} [props.layout='tabs'] - `tabs` shows one view at a time; `split` shows every view at once, one pane each.
172
+ * @param {TImageViewerTabsPlacement} [props.tabsPlacement='below'] - `below` puts the tabs in their own row under the toolbar; `toolbar` puts them on the left of the toolbar, after the title, and also moves the pager of a several-page PDF there when there are no tabs. Ignored in `split`.
173
+ * @param {boolean} [props.showSingleTab=false] - Draws the tab of a single view, in either `tabsPlacement`. With two or more views it changes nothing. Ignored in `split`.
133
174
  * @param {ReactNode} [props.title] - Optional heading rendered on the left of the toolbar.
134
175
  * @param {ReactNode} [props.emptyState] - Content rendered when there is no image.
135
176
  * @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`.
@@ -138,5 +179,5 @@ type ImageViewerProps = {
138
179
  *
139
180
  * @returns {ReactNode} The rendered ImageViewer component.
140
181
  */
141
- export declare function ImageViewer({ views, labels, layout, title, emptyState, activeId, onViewChange, ...restProps }: ImageViewerProps): ReactNode;
182
+ export declare function ImageViewer({ views, labels, layout, tabsPlacement, showSingleTab, title, emptyState, activeId, onViewChange, ...restProps }: ImageViewerProps): ReactNode;
142
183
  //# 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,EAKL,KAAK,cAAc,EAGnB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAaf,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,YAAY,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAExE,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,KAAK,CAAC;AAE7C,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,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,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,GAAG,0BAA0B,CAAC;AAE/B,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;AA0E5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2GG;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,CA6X9B"}
1
+ {"version":3,"file":"ImageViewer.d.ts","sourceRoot":"","sources":["../../../../src/components/02-molecules/ImageViewer/ImageViewer.tsx"],"names":[],"mappings":"AAGA,OAAO,EAKL,KAAK,cAAc,EAGnB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAaf,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,YAAY,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAExE,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,KAAK,CAAC;AAE7C,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,YAAY,CAAC,EAAE,SAAS,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,OAAO,CAAC;AAElD,MAAM,MAAM,yBAAyB,GAAG,OAAO,GAAG,SAAS,CAAC;AAE5D,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,GAAG,0BAA0B,CAAC;AAE/B,KAAK,gBAAgB,GAAG;IACtB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,aAAa,CAAC,EAAE,yBAAyB,CAAC;IAC1C,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,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;AA8E5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgJG;AACH,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,MAAM,EACN,MAAe,EACf,aAAuB,EACvB,aAAqB,EACrB,KAAK,EACL,UAAU,EACV,QAAQ,EACR,YAAY,EACZ,GAAG,SAAS,EACb,EAAE,gBAAgB,GAAG,SAAS,CA0a9B"}
@@ -4,7 +4,7 @@ import { useEffect, useId, useRef, useState, } from 'react';
4
4
  import { createPortal } from 'react-dom';
5
5
  import { MdFullscreen, MdFullscreenExit, MdOpenInNew, MdRotateRight, MdZoomIn, MdZoomOut, } from 'react-icons/md';
6
6
  import { Each, Show } from '../../00-base';
7
- import { List, Paragraph } from '../../01-atoms';
7
+ import { IconButton, List, Paragraph, Tooltip } from '../../01-atoms';
8
8
  import { TabItem } from '../Tab/TabItem';
9
9
  import { ImageViewerDocument, } from './ImageViewerDocument';
10
10
  import { IMAGE_VIEWER_IMAGE_ATTRIBUTE, ImageViewerImage, } from './ImageViewerImage';
@@ -30,7 +30,11 @@ const PAN_DIRECTIONS = {
30
30
  ArrowUp: { x: 0, y: 1 },
31
31
  ArrowDown: { x: 0, y: -1 },
32
32
  };
33
- const TOOL_CLASSNAME = 'hover:bg-gray-5 focus-visible:ring-lavender disabled:text-gray-3 dark:disabled:text-gray-1 dark:hover:bg-gray-1 flex h-8 w-8 cursor-pointer items-center justify-center rounded-sm text-lg text-black focus-visible:ring-2 focus-visible:outline-none disabled:cursor-not-allowed disabled:hover:bg-transparent dark:text-white';
33
+ /**
34
+ * The "open in a new tab" action is a link, so it cannot be an `IconButton`;
35
+ * it copies its look and gets the same `Tooltip`.
36
+ */
37
+ const LINK_ACTION_CLASSNAME = 'text-gray-1 dark:text-gray-5 focus-visible:ring-lavender dark:focus-visible:ring-lavender-dark flex items-center justify-center rounded-sm p-2 text-base transition-colors hover:bg-black hover:text-white focus-visible:ring-2 focus-visible:outline-none dark:hover:bg-white dark:hover:text-black';
34
38
  /**
35
39
  * How far the images may leave the center before their edge enters the pane:
36
40
  * half the overflow on each axis, none when the image already fits. Read from
@@ -89,6 +93,19 @@ const clampOffset = (offset, bounds) => ({
89
93
  * allow CORS; when it cannot be loaded, the view shows its description and
90
94
  * the same link.
91
95
  *
96
+ * `tabsPlacement="toolbar"` folds the tabs into the toolbar: one bar on top,
97
+ * tabs on the left and actions on the right. With no tabs and a PDF of several
98
+ * pages, the pager takes that left side instead of floating over the page.
99
+ * Every toolbar action shows its label as a tooltip, in both placements.
100
+ *
101
+ * A single view has no tabs unless `showSingleTab` is set: then its tab is
102
+ * drawn in either placement, so a one-sided file reads like the views of a
103
+ * two-sided one. Being a tab, a PDF with it keeps its pager over the page.
104
+ *
105
+ * A view without `src` keeps its tab and draws its `emptyContent` in the frame
106
+ * instead — a side that was never uploaded, for instance. With nothing to
107
+ * inspect, the toolbar actions are disabled.
108
+ *
92
109
  * @component
93
110
  * @example
94
111
  * const [viewId, setViewId] = useState('front');
@@ -148,10 +165,34 @@ const clampOffset = (offset, bounds) => ({
148
165
  * }}
149
166
  * />
150
167
  *
168
+ * @example
169
+ * <ImageViewer
170
+ * tabsPlacement="toolbar"
171
+ * views={[
172
+ * { id: 'front', label: 'Front', src: '/front.jpg', alt: 'Document front' },
173
+ * {
174
+ * id: 'back',
175
+ * label: 'Back',
176
+ * alt: 'Document back',
177
+ * emptyContent: <p>Not uploaded yet</p>,
178
+ * },
179
+ * ]}
180
+ * labels={labels}
181
+ * />
182
+ *
183
+ * @example
184
+ * <ImageViewer
185
+ * showSingleTab
186
+ * views={[{ id: 'front', label: 'Front', src: '/front.jpg', alt: 'Document front' }]}
187
+ * labels={labels}
188
+ * />
189
+ *
151
190
  * @param {Object} props - The properties of the ImageViewer component.
152
- * @param {TImageView[]} props.views - Files 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. A view's `type` is `image` unless set to `pdf`; `crop` is ignored on a `pdf`.
153
- * @param {TImageViewerLabels} props.labels - Accessible names of the toolbar actions. With `pdf` views, `openDocument` names the action that opens the original file in a new tab, and `previousPage` / `nextPage` name the pager of a document with several pages; without the pair, only the first page is reachable.
191
+ * @param {TImageView[]} props.views - Files 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, unless `showSingleTab` is set. 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. A view's `type` is `image` unless set to `pdf`; `crop` is ignored on a `pdf`. A view without `src` draws its optional `emptyContent` in the frame (or its pane, in `split`) instead of a file.
192
+ * @param {TImageViewerLabels} props.labels - Accessible names of the toolbar actions, also shown as their tooltips. With `pdf` views, `openDocument` names the action that opens the original file in a new tab, and `previousPage` / `nextPage` name the pager of a document with several pages; without the pair, only the first page is reachable. `pageStatus(page, pageCount)` writes the pager text (for instance `Page 2 of 5`); without it the pager reads `2 / 5`.
154
193
  * @param {TImageViewerLayout} [props.layout='tabs'] - `tabs` shows one view at a time; `split` shows every view at once, one pane each.
194
+ * @param {TImageViewerTabsPlacement} [props.tabsPlacement='below'] - `below` puts the tabs in their own row under the toolbar; `toolbar` puts them on the left of the toolbar, after the title, and also moves the pager of a several-page PDF there when there are no tabs. Ignored in `split`.
195
+ * @param {boolean} [props.showSingleTab=false] - Draws the tab of a single view, in either `tabsPlacement`. With two or more views it changes nothing. Ignored in `split`.
155
196
  * @param {ReactNode} [props.title] - Optional heading rendered on the left of the toolbar.
156
197
  * @param {ReactNode} [props.emptyState] - Content rendered when there is no image.
157
198
  * @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`.
@@ -160,11 +201,12 @@ const clampOffset = (offset, bounds) => ({
160
201
  *
161
202
  * @returns {ReactNode} The rendered ImageViewer component.
162
203
  */
163
- export function ImageViewer({ views, labels, layout = 'tabs', title, emptyState, activeId, onViewChange, ...restProps }) {
204
+ export function ImageViewer({ views, labels, layout = 'tabs', tabsPlacement = 'below', showSingleTab = false, title, emptyState, activeId, onViewChange, ...restProps }) {
164
205
  const [internalIndex, setInternalIndex] = useState(0);
165
206
  const [transform, setTransform] = useState(INITIAL_TRANSFORM);
166
207
  const [isFullscreen, setIsFullscreen] = useState(false);
167
208
  const [isDragging, setIsDragging] = useState(false);
209
+ const [pagerSlot, setPagerSlot] = useState(null);
168
210
  const panelRef = useRef(null);
169
211
  const dragRef = useRef(null);
170
212
  const generatedId = useId();
@@ -196,12 +238,16 @@ export function ImageViewer({ views, labels, layout = 'tabs', title, emptyState,
196
238
  const activeView = views[activeIndex] ?? views[0];
197
239
  const hasView = Boolean(activeView);
198
240
  const isSplit = layout === 'split';
199
- const hasTabs = !isSplit && views.length > 1;
241
+ const hasTabs = !isSplit && (views.length > 1 || (showSingleTab && views.length === 1));
242
+ const isToolbarPlacement = !isSplit && tabsPlacement === 'toolbar';
243
+ const hasToolbarTabs = isToolbarPlacement && hasTabs;
200
244
  const shownViews = isSplit ? views : activeView ? [activeView] : [];
245
+ const hasContent = shownViews.some(({ src }) => Boolean(src));
201
246
  const documentHref = !isSplit && activeView?.type === 'pdf' ? activeView.src : undefined;
247
+ const hasToolbarPager = isToolbarPlacement && !hasTabs && !!documentHref;
202
248
  const panelLabel = shownViews.map(({ alt }) => alt).join(', ') || undefined;
203
249
  const { zoom, rotation, offset } = transform;
204
- const canPan = hasView && zoom > MIN_ZOOM;
250
+ const canPan = hasContent && zoom > MIN_ZOOM;
205
251
  const imageStyle = {
206
252
  transform: `translate(${offset.x}px, ${offset.y}px) rotate(${rotation}deg) scale(${zoom})`,
207
253
  };
@@ -263,12 +309,18 @@ export function ImageViewer({ views, labels, layout = 'tabs', title, emptyState,
263
309
  };
264
310
  /**
265
311
  * Los controles que viven sobre la imagen (el paginador de un PDF) deben
266
- * recibir su clic: capturar el puntero aqui se lo quitaria.
312
+ * recibir su clic: capturar el puntero aqui se lo quitaria. El paginador en
313
+ * la barra llega por un portal, asi que React propaga sus eventos al panel
314
+ * aunque no este dentro de el en el DOM.
267
315
  */
268
- const isControl = (target) => target instanceof Element && target.closest('button, a') !== null;
316
+ const isControl = (target, panel) => target instanceof Element &&
317
+ (target.closest('button, a') !== null || !panel.contains(target));
269
318
  const startDrag = (event) => {
270
- if (!canPan || event.button !== 0 || isControl(event.target))
319
+ if (!canPan ||
320
+ event.button !== 0 ||
321
+ isControl(event.target, event.currentTarget)) {
271
322
  return;
323
+ }
272
324
  event.currentTarget.setPointerCapture(event.pointerId);
273
325
  dragRef.current = {
274
326
  pointerId: event.pointerId,
@@ -309,58 +361,60 @@ export function ImageViewer({ views, labels, layout = 'tabs', title, emptyState,
309
361
  }, bounds),
310
362
  }));
311
363
  };
312
- const renderView = (view) => (<Show key={view.id}>
313
- <Show.When isTrue={view.type === 'pdf'}>
314
- <ImageViewerDocument src={view.src} alt={view.alt} style={imageStyle} isAnimated={!isDragging} labels={labels} onPageChange={recenter}/>
315
- </Show.When>
316
- <Show.Else>
317
- <ImageViewerImage src={view.src} alt={view.alt} crop={view.crop} style={imageStyle} isAnimated={!isDragging}/>
318
- </Show.Else>
319
- </Show>);
364
+ const renderView = ({ id, src, alt, type, crop, emptyContent, }) => {
365
+ if (!src) {
366
+ return (<div key={id} className="flex h-full w-full items-center justify-center">
367
+ {emptyContent}
368
+ </div>);
369
+ }
370
+ return (<Show key={id}>
371
+ <Show.When isTrue={type === 'pdf'}>
372
+ <ImageViewerDocument src={src} alt={alt} style={imageStyle} isAnimated={!isDragging} labels={labels} pagerContainer={hasToolbarPager ? pagerSlot : undefined} onPageChange={recenter}/>
373
+ </Show.When>
374
+ <Show.Else>
375
+ <ImageViewerImage src={src} alt={alt} crop={crop} style={imageStyle} isAnimated={!isDragging}/>
376
+ </Show.Else>
377
+ </Show>);
378
+ };
379
+ const tabList = (<List role="tablist" aria-orientation="horizontal" orientation="horizontal" className={clsx('gap-6', hasToolbarTabs
380
+ ? 'min-w-0 self-stretch overflow-x-auto'
381
+ : 'border-gray-5 dark:border-gray-1 flex-none items-end border-b px-4')}>
382
+ <Each of={views} render={({ id, label, indicator }, index) => (<li key={id} role="presentation" className={hasToolbarTabs ? 'flex flex-none self-stretch' : undefined}>
383
+ <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={hasToolbarTabs ? 'h-full' : 'pb-2'}>
384
+ <span className="inline-flex items-center gap-1.5">
385
+ {label}
386
+ {!!indicator && (<span className="flex flex-none items-center">
387
+ {indicator}
388
+ </span>)}
389
+ </span>
390
+ </TabItem>
391
+ </li>)}/>
392
+ </List>);
320
393
  const frame = (<section {...restProps} className={clsx('border-gray-5 dark:border-gray-1 flex min-h-0 flex-col overflow-hidden rounded-lg border', isFullscreen ? 'h-full w-full bg-white dark:bg-black' : undefined, !isFullscreen ? restProps.className : undefined)}>
321
- <div className="border-gray-5 bg-gray-6 dark:border-gray-1 dark:bg-black-1 flex flex-none items-center justify-between gap-4 border-b px-4 py-3">
394
+ <div className={clsx('border-gray-5 bg-gray-6 dark:border-gray-1 dark:bg-black-1 flex flex-none justify-between gap-4 border-b px-4', hasToolbarTabs ? 'min-h-14 items-stretch' : 'items-center py-3')}>
322
395
  <Show>
323
396
  <Show.When isTrue={Boolean(title)}>
324
- <Paragraph size="subtitle-1" className="dark:text-white">
397
+ <Paragraph size="subtitle-1" className="self-center dark:text-white">
325
398
  {title}
326
399
  </Paragraph>
327
400
  </Show.When>
328
401
  </Show>
329
- <div className="ml-auto flex items-center gap-1.5">
330
- {!!documentHref && !!labels.openDocument && (<a href={documentHref} target="_blank" rel="noopener noreferrer" aria-label={labels.openDocument} className={TOOL_CLASSNAME}>
331
- <MdOpenInNew aria-hidden="true"/>
332
- </a>)}
333
- <button type="button" aria-label={labels.zoomOut} disabled={!hasView || zoom <= MIN_ZOOM} onClick={() => changeZoom(-ZOOM_STEP)} className={TOOL_CLASSNAME}>
334
- <MdZoomOut aria-hidden="true"/>
335
- </button>
336
- <button type="button" aria-label={labels.zoomIn} disabled={!hasView || zoom >= MAX_ZOOM} onClick={() => changeZoom(ZOOM_STEP)} className={TOOL_CLASSNAME}>
337
- <MdZoomIn aria-hidden="true"/>
338
- </button>
339
- <button type="button" aria-label={labels.rotate} disabled={!hasView} onClick={rotate} className={TOOL_CLASSNAME}>
340
- <MdRotateRight aria-hidden="true"/>
341
- </button>
342
- <button type="button" aria-label={isFullscreen ? labels.exitFullscreen : labels.enterFullscreen} aria-pressed={isFullscreen} disabled={!hasView} onClick={toggleFullscreen} className={TOOL_CLASSNAME}>
343
- {isFullscreen ? (<MdFullscreenExit aria-hidden="true"/>) : (<MdFullscreen aria-hidden="true"/>)}
344
- </button>
402
+ {!!hasToolbarTabs && tabList}
403
+ {!!hasToolbarPager && (<div ref={setPagerSlot} className="flex items-center gap-1"/>)}
404
+ <div className="ml-auto flex flex-none items-center gap-1 self-center">
405
+ {!!documentHref && !!labels.openDocument && (<Tooltip message={labels.openDocument}>
406
+ <a href={documentHref} target="_blank" rel="noopener noreferrer" aria-label={labels.openDocument} className={LINK_ACTION_CLASSNAME}>
407
+ <MdOpenInNew aria-hidden="true"/>
408
+ </a>
409
+ </Tooltip>)}
410
+ <IconButton icon={<MdZoomOut />} label={labels.zoomOut} disabled={!hasContent || zoom <= MIN_ZOOM} onClick={() => changeZoom(-ZOOM_STEP)}/>
411
+ <IconButton icon={<MdZoomIn />} label={labels.zoomIn} disabled={!hasContent || zoom >= MAX_ZOOM} onClick={() => changeZoom(ZOOM_STEP)}/>
412
+ <IconButton icon={<MdRotateRight />} label={labels.rotate} disabled={!hasContent} onClick={rotate}/>
413
+ <IconButton icon={isFullscreen ? <MdFullscreenExit /> : <MdFullscreen />} label={isFullscreen ? labels.exitFullscreen : labels.enterFullscreen} aria-pressed={isFullscreen} disabled={!hasContent && !isFullscreen} onClick={toggleFullscreen}/>
345
414
  </div>
346
415
  </div>
347
416
 
348
- <Show>
349
- <Show.When isTrue={hasTabs}>
350
- <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">
351
- <Each of={views} render={({ id, label, indicator }, index) => (<li key={id} role="presentation">
352
- <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">
353
- <span className="inline-flex items-center gap-1.5">
354
- {label}
355
- {!!indicator && (<span className="flex flex-none items-center">
356
- {indicator}
357
- </span>)}
358
- </span>
359
- </TabItem>
360
- </li>)}/>
361
- </List>
362
- </Show.When>
363
- </Show>
417
+ {!!hasTabs && !hasToolbarTabs && tabList}
364
418
 
365
419
  <div ref={panelRef} id={`${generatedId}-panel`} role={hasTabs ? 'tabpanel' : 'group'} aria-labelledby={hasTabs ? `${generatedId}-tab-${activeIndex}` : undefined} aria-label={hasTabs ? undefined : panelLabel} tabIndex={canPan ? 0 : undefined} onPointerDown={startDrag} onPointerMove={moveDrag} onPointerUp={endDrag} onPointerCancel={endDrag} onKeyDown={panWithKeyboard} className={clsx('bg-gray-7 dark:bg-black-2 focus-visible:ring-lavender flex min-h-0 flex-1 items-center justify-center overflow-hidden p-5 focus-visible:ring-2 focus-visible:outline-none focus-visible:ring-inset', canPan && 'touch-none select-none', canPan && (isDragging ? 'cursor-grabbing' : 'cursor-grab'))}>
366
420
  <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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"}