@persona/design-system 0.10.1 → 0.10.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/dist/{CheckboxGroupField-4dc7YXJY.d.mts → CheckboxGroupField-BrPGNIyD.d.mts} +2 -2
- package/dist/CheckboxGroupField.d.mts +1 -1
- package/dist/{Combobox-CcFJo68g.mjs → Combobox-BXHCfVpE.mjs} +2 -2
- package/dist/{Combobox-CcFJo68g.mjs.map → Combobox-BXHCfVpE.mjs.map} +1 -1
- package/dist/{Combobox-Bm2eSg56.d.mts → Combobox-D0dMN5eY.d.mts} +3 -3
- package/dist/Combobox.d.mts +2 -2
- package/dist/{ComboboxBase-B7ZcqU9p.d.mts → ComboboxBase-BlNi9OnF.d.mts} +2 -2
- package/dist/ComboboxBase.d.mts +1 -1
- package/dist/{ComboboxMultiSelect-BkdRrH6K.d.mts → ComboboxMultiSelect-DbTYO-Yz.d.mts} +2 -2
- package/dist/ComboboxMultiSelect.d.mts +1 -1
- package/dist/{ComboboxSingleSelect-DIBRZmvS.d.mts → ComboboxSingleSelect-Cd6VYdwr.d.mts} +3 -3
- package/dist/ComboboxSingleSelect.d.mts +1 -1
- package/dist/{ConfigFormGroup-CidT_cE9.mjs → ConfigFormGroup-BE3yR_VU.mjs} +1 -1
- package/dist/{ConfigFormGroup-CidT_cE9.mjs.map → ConfigFormGroup-BE3yR_VU.mjs.map} +1 -1
- package/dist/{DataTable--_f1Obhj.d.mts → DataTable-BdKUCgcZ.d.mts} +5 -5
- package/dist/{DataTable-BoAAKhVH.mjs → DataTable-F9R-aQCg.mjs} +7 -7
- package/dist/{DataTable-BoAAKhVH.mjs.map → DataTable-F9R-aQCg.mjs.map} +1 -1
- package/dist/DataTable.d.mts +1 -1
- package/dist/{DatePicker-D0cvVbzq.mjs → DatePicker-CkNQjfCN.mjs} +2 -2
- package/dist/{DatePicker-D0cvVbzq.mjs.map → DatePicker-CkNQjfCN.mjs.map} +1 -1
- package/dist/DropdownButton.d.mts +1 -1
- package/dist/{DropdownMenu-Bie2cWjb.d.mts → DropdownMenu-nxFNS1kH.d.mts} +2 -2
- package/dist/DropdownMenu.d.mts +1 -1
- package/dist/{FormField-C4B2qFgh.mjs → FormField-D0y1uRV5.mjs} +5 -5
- package/dist/{FormField-C4B2qFgh.mjs.map → FormField-D0y1uRV5.mjs.map} +1 -1
- package/dist/{HoverCopyableField-D-BubaRd.mjs → HoverCopyableField-DkOosH8z.mjs} +2 -2
- package/dist/{HoverCopyableField-D-BubaRd.mjs.map → HoverCopyableField-DkOosH8z.mjs.map} +1 -1
- package/dist/ImageThumbnail.d.mts +43 -0
- package/dist/IndexTableLayout.d.mts +3 -3
- package/dist/InlineCombobox.d.mts +1 -1
- package/dist/InlineInput.d.mts +1 -1
- package/dist/{Link-Cf__H8gD.mjs → Link-BSuXrvTu.mjs} +1 -1
- package/dist/{Link-Cf__H8gD.mjs.map → Link-BSuXrvTu.mjs.map} +1 -1
- package/dist/{ListBox-eoyBHtnJ.mjs → ListBox-BLoJVezh.mjs} +2 -2
- package/dist/{ListBox-eoyBHtnJ.mjs.map → ListBox-BLoJVezh.mjs.map} +1 -1
- package/dist/{ListBox-DIk8suJM.d.mts → ListBox-CXFI-0nG.d.mts} +2 -2
- package/dist/ListBox.d.mts +1 -1
- package/dist/{ListBoxField-DF8rqPsu.d.mts → ListBoxField-BCOrph2k.d.mts} +4 -4
- package/dist/ListBoxField.d.mts +1 -1
- package/dist/{LogicRow-uxpe1vZ1.d.mts → LogicRow-8oYRkwz5.d.mts} +2 -2
- package/dist/LogicRow.d.mts +1 -1
- package/dist/MaskedInput.d.mts +1 -1
- package/dist/{Menu-CrThaUX2.d.mts → Menu-DHnQZ5yN.d.mts} +2 -2
- package/dist/Menu.d.mts +1 -1
- package/dist/{Modal-kjUptzg1.mjs → Modal-IJdbLORi.mjs} +1 -1
- package/dist/{Modal-kjUptzg1.mjs.map → Modal-IJdbLORi.mjs.map} +1 -1
- package/dist/{Pagination-DtK-jbEY.mjs → Pagination-C5ANr9M0.mjs} +2 -2
- package/dist/{Pagination-DtK-jbEY.mjs.map → Pagination-C5ANr9M0.mjs.map} +1 -1
- package/dist/{Pii-DueIK287.mjs → Pii-G16_b7Yk.mjs} +1 -1
- package/dist/{Pii-DueIK287.mjs.map → Pii-G16_b7Yk.mjs.map} +1 -1
- package/dist/{Popover-BcII7usF.mjs → Popover-532iYFek.mjs} +1 -1
- package/dist/{Popover-BcII7usF.mjs.map → Popover-532iYFek.mjs.map} +1 -1
- package/dist/{Select-CsxK6A5m.d.mts → Select-CSbamhJO.d.mts} +2 -2
- package/dist/{Select-BJ9ACmRD.mjs → Select-hnXfPywt.mjs} +1 -1
- package/dist/{Select-BJ9ACmRD.mjs.map → Select-hnXfPywt.mjs.map} +1 -1
- package/dist/Select.d.mts +1 -1
- package/dist/SelectionCard.d.mts +51 -0
- package/dist/SelectionCardGroup.d.mts +37 -0
- package/dist/SmartTextInputField.d.mts +2 -2
- package/dist/{Spinner-uVZyOh1T.mjs → Spinner-AnIk8d9M.mjs} +1 -1
- package/dist/{Spinner-uVZyOh1T.mjs.map → Spinner-AnIk8d9M.mjs.map} +1 -1
- package/dist/{Table--o4ZLRbb.mjs → Table-CmuWqmVN.mjs} +2 -2
- package/dist/{Table--o4ZLRbb.mjs.map → Table-CmuWqmVN.mjs.map} +1 -1
- package/dist/{TableBox-3qunC9Nl.mjs → TableBox-BRJunn09.mjs} +4 -4
- package/dist/{TableBox-3qunC9Nl.mjs.map → TableBox-BRJunn09.mjs.map} +1 -1
- package/dist/TableBox.d.mts +1 -1
- package/dist/{TableBoxCell-okcOQ5Ec.d.mts → TableBoxCell-Cag3ZYRs.d.mts} +4 -4
- package/dist/TableBoxCell.d.mts +1 -1
- package/dist/{TableBoxField-DR-SJY9z.d.mts → TableBoxField-C3Cg6Lv5.d.mts} +5 -5
- package/dist/TableBoxField.d.mts +1 -1
- package/dist/{TableBoxRow-DiuAB_rV.d.mts → TableBoxRow-y5ay5lMt.d.mts} +2 -2
- package/dist/TableBoxRow.d.mts +1 -1
- package/dist/{TableBoxRowActions-Cm4KJsAD.d.mts → TableBoxRowActions-CDdVjAPQ.d.mts} +2 -2
- package/dist/TableBoxRowActions.d.mts +1 -1
- package/dist/{TableControls-n16XKO9S.mjs → TableControls-C5fNNdmT.mjs} +64 -25
- package/dist/TableControls-C5fNNdmT.mjs.map +1 -0
- package/dist/{TableControls-B9bvsNUc.d.mts → TableControls-DCtTiWk6.d.mts} +3 -3
- package/dist/TableControls.d.mts +1 -1
- package/dist/{TableControlsContext-CZThYoj5.d.mts → TableControlsContext-CzJCMrSe.d.mts} +2 -2
- package/dist/TableControlsContext.d.mts +1 -1
- package/dist/{TableViewConfigurationDropdown-CvN7tE98.d.mts → TableViewConfigurationDropdown-BvOlDkJy.d.mts} +2 -2
- package/dist/TableViewConfigurationDropdown.d.mts +1 -1
- package/dist/{clientFilterUtils-BXEpzorX.d.mts → clientFilterUtils-BqDn44aM.d.mts} +2 -2
- package/dist/clientFilterUtils.d.mts +1 -1
- package/dist/components/Combobox/index.d.mts +2 -2
- package/dist/components/Combobox/index.mjs +1 -1
- package/dist/components/ConfigFormGroup/index.mjs +1 -1
- package/dist/components/DataTable/TableControls/index.d.mts +5 -5
- package/dist/components/DataTable/TableControls/index.mjs +1 -1
- package/dist/components/DataTable/index.d.mts +5 -5
- package/dist/components/DataTable/index.mjs +1 -1
- package/dist/components/DataTable/types.d.mts +1 -1
- package/dist/components/DatePicker/index.mjs +1 -1
- package/dist/components/DropdownMenu/index.d.mts +1 -1
- package/dist/components/FormField/index.d.mts +4 -4
- package/dist/components/FormField/index.mjs +1 -1
- package/dist/components/HoverCopyableField/index.mjs +1 -1
- package/dist/components/ImageTile/index.mjs +82 -52
- package/dist/components/ImageTile/index.mjs.map +1 -1
- package/dist/components/Link/index.mjs +1 -1
- package/dist/components/ListBox/index.d.mts +3 -3
- package/dist/components/ListBox/index.mjs +1 -1
- package/dist/components/Menu/index.d.mts +1 -1
- package/dist/components/Modal/index.mjs +1 -1
- package/dist/components/Pagination/index.mjs +1 -1
- package/dist/components/Pii/index.mjs +1 -1
- package/dist/components/Popover/index.mjs +1 -1
- package/dist/components/Select/index.d.mts +1 -1
- package/dist/components/Select/index.mjs +1 -1
- package/dist/components/SelectionCard/index.d.mts +3 -0
- package/dist/components/SelectionCard/index.mjs +264 -0
- package/dist/components/SelectionCard/index.mjs.map +1 -0
- package/dist/components/SmartTextInput/index.mjs +1 -1
- package/dist/components/Spinner/index.mjs +1 -1
- package/dist/components/Table/index.mjs +1 -1
- package/dist/components/TableBox/index.d.mts +1 -1
- package/dist/components/TableBox/index.mjs +1 -1
- package/dist/components/VersionHistory/index.mjs +2 -2
- package/dist/fieldPickerOptions.d.mts +1 -1
- package/dist/{filters-ogUUmLEf.d.mts → filters-jG9Y3UKb.d.mts} +2 -2
- package/dist/filters.d.mts +1 -1
- package/dist/{helpers-Dqw5PEva.d.mts → helpers-DCIto6aY.d.mts} +2 -2
- package/dist/helpers.d.mts +1 -1
- package/dist/{index-Ck939aXd.d.mts → index-C3uFHTo0.d.mts} +3 -3
- package/dist/{inputFields-DVLg_2wz.d.mts → inputFields-mUsms2tO.d.mts} +4 -4
- package/dist/inputFields.d.mts +1 -1
- package/dist/patterns/IndexTableLayout/index.mjs +1 -1
- package/dist/patterns/LayoutLoadingShimmer/index.mjs +1 -1
- package/dist/patterns/WizardModal/index.mjs +1 -1
- package/dist/{types-Bdi8Y7ll.d.mts → types-CrRWZ0Ia.d.mts} +3 -3
- package/dist/{types-BQP14Fng.d.mts → types-DxJyE_U8.d.mts} +2 -2
- package/dist/types5.d.mts +1 -1
- package/dist/useColumnConfiguration.d.mts +2 -2
- package/dist/useComboboxFooterAction.d.mts +1 -1
- package/dist/{useTableColumns-DdU0CLcU.d.mts → useTableColumns-DSXRInPb.d.mts} +2 -2
- package/dist/useTableColumns.d.mts +1 -1
- package/dist/useTruncation.d.mts +1 -1
- package/package.json +3 -1
- package/skills/ui-authoring/COMPONENTS.md +1 -0
- package/skills/ui-authoring/PATTERNS.md +5 -1
- package/dist/TableControls-n16XKO9S.mjs.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { n as ControlBarProps } from "./ControlBar-D9KflqmH.mjs";
|
|
2
2
|
import { n as FilterBarProps } from "./FilterBar-BQWpTi2b.mjs";
|
|
3
|
-
import { i as BaseFilterConfig, s as FilterConfig, u as FilterTypeResolver } from "./types-
|
|
4
|
-
import { i as TableViewConfigurationProps } from "./TableViewConfigurationDropdown-
|
|
3
|
+
import { i as BaseFilterConfig, s as FilterConfig, u as FilterTypeResolver } from "./types-CrRWZ0Ia.mjs";
|
|
4
|
+
import { i as TableViewConfigurationProps } from "./TableViewConfigurationDropdown-BvOlDkJy.mjs";
|
|
5
5
|
import { ReactNode } from "react";
|
|
6
6
|
import * as _$react_jsx_runtime0 from "react/jsx-runtime";
|
|
7
7
|
|
|
@@ -80,4 +80,4 @@ declare const TableControls: <TFilter extends BaseFilterConfig = FilterConfig>({
|
|
|
80
80
|
}: TableControlsProps<TFilter>) => _$react_jsx_runtime0.JSX.Element;
|
|
81
81
|
//#endregion
|
|
82
82
|
export { TableControlsFiltersV2Props as n, TableControlsProps as r, TableControls as t };
|
|
83
|
-
//# sourceMappingURL=TableControls-
|
|
83
|
+
//# sourceMappingURL=TableControls-DCtTiWk6.d.mts.map
|
package/dist/TableControls.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as TableControlsFiltersV2Props, r as TableControlsProps, t as TableControls } from "./TableControls-
|
|
1
|
+
import { n as TableControlsFiltersV2Props, r as TableControlsProps, t as TableControls } from "./TableControls-DCtTiWk6.mjs";
|
|
2
2
|
export { TableControlsFiltersV2Props, TableControlsProps, TableControls as default };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i as BaseFilterConfig, r as BaseActiveFilter } from "./types-
|
|
1
|
+
import { i as BaseFilterConfig, r as BaseActiveFilter } from "./types-CrRWZ0Ia.mjs";
|
|
2
2
|
import * as _$react from "react";
|
|
3
3
|
import { Dispatch, ReactNode, SetStateAction } from "react";
|
|
4
4
|
|
|
@@ -18,4 +18,4 @@ declare function TableControlsProvider<TFilter extends BaseFilterConfig = BaseFi
|
|
|
18
18
|
}): _$react.FunctionComponentElement<_$react.ProviderProps<TableControlsContextProps<BaseFilterConfig, BaseActiveFilter<BaseFilterConfig>>>>;
|
|
19
19
|
//#endregion
|
|
20
20
|
export { useTableControls as i, TableControlsContextProps as n, TableControlsProvider as r, TableControlsContext as t };
|
|
21
|
-
//# sourceMappingURL=TableControlsContext-
|
|
21
|
+
//# sourceMappingURL=TableControlsContext-CzJCMrSe.d.mts.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { i as useTableControls, n as TableControlsContextProps, r as TableControlsProvider, t as TableControlsContext } from "./TableControlsContext-
|
|
1
|
+
import { i as useTableControls, n as TableControlsContextProps, r as TableControlsProvider, t as TableControlsContext } from "./TableControlsContext-CzJCMrSe.mjs";
|
|
2
2
|
export { TableControlsContextProps, TableControlsProvider, TableControlsContext as default, useTableControls };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as AttributeColumn } from "./types-
|
|
1
|
+
import { n as AttributeColumn } from "./types-CrRWZ0Ia.mjs";
|
|
2
2
|
import * as _$react_jsx_runtime0 from "react/jsx-runtime";
|
|
3
3
|
|
|
4
4
|
//#region components/DataTable/TableControls/TableViewConfigurationDropdown.d.ts
|
|
@@ -31,4 +31,4 @@ declare const TableViewConfiguration: ({
|
|
|
31
31
|
}: TableViewConfigurationProps) => _$react_jsx_runtime0.JSX.Element;
|
|
32
32
|
//#endregion
|
|
33
33
|
export { TableViewConfigurationProps as i, TableViewConfigurationDropdown as n, TableViewConfigurationDropdownProps as r, TableViewConfiguration as t };
|
|
34
|
-
//# sourceMappingURL=TableViewConfigurationDropdown-
|
|
34
|
+
//# sourceMappingURL=TableViewConfigurationDropdown-BvOlDkJy.d.mts.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { i as TableViewConfigurationProps, n as TableViewConfigurationDropdown, r as TableViewConfigurationDropdownProps, t as TableViewConfiguration } from "./TableViewConfigurationDropdown-
|
|
1
|
+
import { i as TableViewConfigurationProps, n as TableViewConfigurationDropdown, r as TableViewConfigurationDropdownProps, t as TableViewConfiguration } from "./TableViewConfigurationDropdown-BvOlDkJy.mjs";
|
|
2
2
|
export { TableViewConfiguration, TableViewConfigurationDropdownProps, TableViewConfigurationProps, TableViewConfigurationDropdown as default };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { s as FilterConfig } from "./types-
|
|
1
|
+
import { s as FilterConfig } from "./types-CrRWZ0Ia.mjs";
|
|
2
2
|
import { Dispatch, SetStateAction } from "react";
|
|
3
3
|
import { Column, ColumnFiltersState, Header, RowData, Table } from "@tanstack/react-table";
|
|
4
4
|
|
|
@@ -17,4 +17,4 @@ declare const generateClientFilters: <TData extends RowData>(columns: Array<{
|
|
|
17
17
|
}>, columnFilters: ColumnFiltersState, setColumnFilters: Dispatch<SetStateAction<ColumnFiltersState>>) => FilterConfig[];
|
|
18
18
|
//#endregion
|
|
19
19
|
export { getFilterFnName as n, generateClientFilters as t };
|
|
20
|
-
//# sourceMappingURL=clientFilterUtils-
|
|
20
|
+
//# sourceMappingURL=clientFilterUtils-BqDn44aM.d.mts.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as getFilterFnName, t as generateClientFilters } from "./clientFilterUtils-
|
|
1
|
+
import { n as getFilterFnName, t as generateClientFilters } from "./clientFilterUtils-BqDn44aM.mjs";
|
|
2
2
|
export { generateClientFilters, getFilterFnName };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { D as flattenOptions, a as ComboboxOptionGroup, i as ComboboxOption, o as ComboboxOptionsOrGroups, t as CaretButton } from "../../ComboboxBase-
|
|
2
|
-
import { n as ComboboxProps, t as Combobox } from "../../Combobox-
|
|
1
|
+
import { D as flattenOptions, a as ComboboxOptionGroup, i as ComboboxOption, o as ComboboxOptionsOrGroups, t as CaretButton } from "../../ComboboxBase-BlNi9OnF.mjs";
|
|
2
|
+
import { n as ComboboxProps, t as Combobox } from "../../Combobox-D0dMN5eY.mjs";
|
|
3
3
|
export { CaretButton, Combobox, Combobox as default, ComboboxOption, ComboboxOptionGroup, ComboboxOptionsOrGroups, ComboboxProps, flattenOptions };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as CaretButton, r as flattenOptions, t as Combobox } from "../../Combobox-
|
|
1
|
+
import { n as CaretButton, r as flattenOptions, t as Combobox } from "../../Combobox-BXHCfVpE.mjs";
|
|
2
2
|
export { CaretButton, Combobox, Combobox as default, flattenOptions };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { n as useFormGroup, t as FormGroupContext } from "../../useFormGroup-CsKC93Pt.mjs";
|
|
2
|
-
import { t as ConfigFormGroup } from "../../ConfigFormGroup-
|
|
2
|
+
import { t as ConfigFormGroup } from "../../ConfigFormGroup-BE3yR_VU.mjs";
|
|
3
3
|
export { ConfigFormGroup, ConfigFormGroup as default, FormGroupContext, useFormGroup };
|
|
@@ -3,12 +3,12 @@ import { a as FilterConditionOperator, c as FilterFieldType, d as FilterRuleValu
|
|
|
3
3
|
import { n as RawFieldInfo, r as buildFieldRegistry, t as FieldRegistry } from "../../../FieldRegistry-B5E-GN91.mjs";
|
|
4
4
|
import { n as ValueControlResolver, r as resolveValueControl, t as ResolveValueControlOptions } from "../../../value-control-resolver-C-UrXVlB.mjs";
|
|
5
5
|
import { t as FilterBar } from "../../../FilterBar-BQWpTi2b.mjs";
|
|
6
|
-
import { a as ComboboxFilterConfig, c as FilterRenderOptions, d as InputFilterConfig, f as MultiSelectFilterConfig, i as BaseFilterConfig, l as FilterTypeDefinition, o as DateRangeFilterConfig, p as SelectFilterConfig, r as BaseActiveFilter, s as FilterConfig, t as ActiveFilter, u as FilterTypeResolver } from "../../../types-
|
|
7
|
-
import { i as TableViewConfigurationProps, n as TableViewConfigurationDropdown, r as TableViewConfigurationDropdownProps, t as TableViewConfiguration } from "../../../TableViewConfigurationDropdown-
|
|
8
|
-
import { n as TableControlsFiltersV2Props, r as TableControlsProps, t as TableControls } from "../../../TableControls-
|
|
6
|
+
import { a as ComboboxFilterConfig, c as FilterRenderOptions, d as InputFilterConfig, f as MultiSelectFilterConfig, i as BaseFilterConfig, l as FilterTypeDefinition, o as DateRangeFilterConfig, p as SelectFilterConfig, r as BaseActiveFilter, s as FilterConfig, t as ActiveFilter, u as FilterTypeResolver } from "../../../types-CrRWZ0Ia.mjs";
|
|
7
|
+
import { i as TableViewConfigurationProps, n as TableViewConfigurationDropdown, r as TableViewConfigurationDropdownProps, t as TableViewConfiguration } from "../../../TableViewConfigurationDropdown-BvOlDkJy.mjs";
|
|
8
|
+
import { n as TableControlsFiltersV2Props, r as TableControlsProps, t as TableControls } from "../../../TableControls-DCtTiWk6.mjs";
|
|
9
9
|
import { n as DataTableCompactBar } from "../../../CompactBar-CfrrZ69k.mjs";
|
|
10
|
-
import { i as useTableControls, n as TableControlsContextProps, r as TableControlsProvider, t as TableControlsContext } from "../../../TableControlsContext-
|
|
11
|
-
import { a as resolveFilterTypeDefinition, i as isFilterActive, n as FiltersContainer, r as getActiveFilters } from "../../../filters-
|
|
10
|
+
import { i as useTableControls, n as TableControlsContextProps, r as TableControlsProvider, t as TableControlsContext } from "../../../TableControlsContext-CzJCMrSe.mjs";
|
|
11
|
+
import { a as resolveFilterTypeDefinition, i as isFilterActive, n as FiltersContainer, r as getActiveFilters } from "../../../filters-jG9Y3UKb.mjs";
|
|
12
12
|
import { t as dateRuleIntent } from "../../../date-rule-intent-C5C8HB1v.mjs";
|
|
13
13
|
import { t as resolveDateRangeRuleValue } from "../../../date-range-rule-value-Dk6pZHnD.mjs";
|
|
14
14
|
import { t as FilterBarProps } from "../../../index-DTAcGzW4.mjs";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { A as isNumericComparisonOperator, B as useTableControls, C as useFilterBarSize, D as getOperatorsForField, E as getDefaultOperatorForType, F as getActiveFilters, H as DataTableCompactBar, I as isFilterActive, L as resolveFilterTypeDefinition, M as isValuelessOperator, N as reconcileValueForOperator, O as getOperatorsForType, P as FiltersContainer, R as TableControlsContext, S as FILTER_SIZE_TOKENS, T as emptyValueForRule, V as ControlBar, _ as EMPTY_FILTER_STATE, a as encodeFilterStateToUrlParam, b as resolveValueControl, c as FilterBar_default, d as TableViewConfiguration, f as TableViewConfigurationDropdown, g as pruneToRegistry, h as isFilterStateV2, i as decodeFilterStateFromUrl, j as isRangeOperator, k as isCompleteDateRange, l as resolveDateRangeRuleValue, m as hasCompleteValue, n as applyFilterStateToSearchParams, o as FieldRegistry, p as useFilterStateV2, r as decodeFilterStateFromString, s as buildFieldRegistry, t as FILTER_STATE_URL_PARAM, u as TableControls, v as isEmptyState, w as NUMERIC_COMPARISON_OPERATORS, x as dateRuleIntent, y as PillShell, z as TableControlsProvider } from "../../../TableControls-
|
|
1
|
+
import { A as isNumericComparisonOperator, B as useTableControls, C as useFilterBarSize, D as getOperatorsForField, E as getDefaultOperatorForType, F as getActiveFilters, H as DataTableCompactBar, I as isFilterActive, L as resolveFilterTypeDefinition, M as isValuelessOperator, N as reconcileValueForOperator, O as getOperatorsForType, P as FiltersContainer, R as TableControlsContext, S as FILTER_SIZE_TOKENS, T as emptyValueForRule, V as ControlBar, _ as EMPTY_FILTER_STATE, a as encodeFilterStateToUrlParam, b as resolveValueControl, c as FilterBar_default, d as TableViewConfiguration, f as TableViewConfigurationDropdown, g as pruneToRegistry, h as isFilterStateV2, i as decodeFilterStateFromUrl, j as isRangeOperator, k as isCompleteDateRange, l as resolveDateRangeRuleValue, m as hasCompleteValue, n as applyFilterStateToSearchParams, o as FieldRegistry, p as useFilterStateV2, r as decodeFilterStateFromString, s as buildFieldRegistry, t as FILTER_STATE_URL_PARAM, u as TableControls, v as isEmptyState, w as NUMERIC_COMPARISON_OPERATORS, x as dateRuleIntent, y as PillShell, z as TableControlsProvider } from "../../../TableControls-C5fNNdmT.mjs";
|
|
2
2
|
export { ControlBar, DataTableCompactBar, EMPTY_FILTER_STATE, FILTER_SIZE_TOKENS, FILTER_STATE_URL_PARAM, FieldRegistry, FilterBar_default as FilterBar, FiltersContainer, NUMERIC_COMPARISON_OPERATORS, PillShell, TableControlsContext, TableControlsProvider, TableViewConfiguration, TableViewConfigurationDropdown, applyFilterStateToSearchParams, buildFieldRegistry, dateRuleIntent, decodeFilterStateFromString, decodeFilterStateFromUrl, TableControls as default, emptyValueForRule, encodeFilterStateToUrlParam, getActiveFilters, getDefaultOperatorForType, getOperatorsForField, getOperatorsForType, hasCompleteValue, isCompleteDateRange, isEmptyState, isFilterActive, isFilterStateV2, isNumericComparisonOperator, isRangeOperator, isValuelessOperator, pruneToRegistry, reconcileValueForOperator, resolveDateRangeRuleValue, resolveFilterTypeDefinition, resolveValueControl, useFilterBarSize, useFilterStateV2, useTableControls };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { C as RowAction, D as RowDataWithTourTarget, E as RowDataWithSubrowsToAlwaysShowIds, O as SortProps, S as RenderValueStickerFormatConfig, T as RowDataWithSubrows, _ as DataTableColumns, a as DataTableColumnBaseFormat, b as DatetimeConfig, c as DataTableColumnDatetimeFormat, d as DataTableColumnImageFormat, f as DataTableColumnNumberFormat, g as DataTableColumnURLFormat, h as DataTableColumnStringFormat, i as ColumnConfig, k as StickerMapping, l as DataTableColumnFormat, m as DataTableColumnStickerFormat, n as ClientFilterConfig, o as DataTableColumnCheckboxFormat, p as DataTableColumnPiiFormat, r as ClientFilterType, s as DataTableColumnDateFormat, t as BulkAction, u as DataTableColumnIDFormat, v as DataTableVariables, w as RowDataWithDetails, x as HeadlessFilterConfig, y as DateConfig } from "../../types-
|
|
2
|
-
import { r as useTableColumns, t as RenderFormatFn } from "../../useTableColumns-
|
|
3
|
-
import { a as FloatingActionBarContainer, i as DataTableProps, n as DataTableContainer, r as DataTableControls, t as DataTable } from "../../DataTable
|
|
1
|
+
import { C as RowAction, D as RowDataWithTourTarget, E as RowDataWithSubrowsToAlwaysShowIds, O as SortProps, S as RenderValueStickerFormatConfig, T as RowDataWithSubrows, _ as DataTableColumns, a as DataTableColumnBaseFormat, b as DatetimeConfig, c as DataTableColumnDatetimeFormat, d as DataTableColumnImageFormat, f as DataTableColumnNumberFormat, g as DataTableColumnURLFormat, h as DataTableColumnStringFormat, i as ColumnConfig, k as StickerMapping, l as DataTableColumnFormat, m as DataTableColumnStickerFormat, n as ClientFilterConfig, o as DataTableColumnCheckboxFormat, p as DataTableColumnPiiFormat, r as ClientFilterType, s as DataTableColumnDateFormat, t as BulkAction, u as DataTableColumnIDFormat, v as DataTableVariables, w as RowDataWithDetails, x as HeadlessFilterConfig, y as DateConfig } from "../../types-DxJyE_U8.mjs";
|
|
2
|
+
import { r as useTableColumns, t as RenderFormatFn } from "../../useTableColumns-DSXRInPb.mjs";
|
|
3
|
+
import { a as FloatingActionBarContainer, i as DataTableProps, n as DataTableContainer, r as DataTableControls, t as DataTable } from "../../DataTable-BdKUCgcZ.mjs";
|
|
4
4
|
import { t as FloatingActionBar } from "../../FloatingActionBar-CpvLefPm.mjs";
|
|
5
5
|
import { t as Inserter } from "../../Inserter-BKVrJ4M5.mjs";
|
|
6
|
-
import { n as getFilterFnName, t as generateClientFilters } from "../../clientFilterUtils-
|
|
6
|
+
import { n as getFilterFnName, t as generateClientFilters } from "../../clientFilterUtils-BqDn44aM.mjs";
|
|
7
7
|
import { t as getColumnWidths } from "../../constants-BaMvTUbS.mjs";
|
|
8
|
-
import { a as renderAsDate, c as renderAsNumber, d as renderAsSticker, f as renderAsString, i as renderAsCopyableString, l as renderAsPDSFormat, n as renderAsCheckbox, o as renderAsDatetime, p as renderAsURL, r as renderAsCheckboxHeader, s as renderAsLightweightImage, t as PDSFormatOptions, u as renderAsPii } from "../../helpers-
|
|
8
|
+
import { a as renderAsDate, c as renderAsNumber, d as renderAsSticker, f as renderAsString, i as renderAsCopyableString, l as renderAsPDSFormat, n as renderAsCheckbox, o as renderAsDatetime, p as renderAsURL, r as renderAsCheckboxHeader, s as renderAsLightweightImage, t as PDSFormatOptions, u as renderAsPii } from "../../helpers-DCIto6aY.mjs";
|
|
9
9
|
export { BulkAction, ClientFilterConfig, ClientFilterType, ColumnConfig, DataTable, DataTable as default, DataTableColumnBaseFormat, DataTableColumnCheckboxFormat, DataTableColumnDateFormat, DataTableColumnDatetimeFormat, DataTableColumnFormat, DataTableColumnIDFormat, DataTableColumnImageFormat, DataTableColumnNumberFormat, DataTableColumnPiiFormat, DataTableColumnStickerFormat, DataTableColumnStringFormat, DataTableColumnURLFormat, DataTableColumns, DataTableContainer, DataTableControls, DataTableProps, DataTableVariables, DateConfig, DatetimeConfig, FloatingActionBar, FloatingActionBarContainer, HeadlessFilterConfig, Inserter, PDSFormatOptions, RenderFormatFn, RenderValueStickerFormatConfig, RowAction, RowDataWithDetails, RowDataWithSubrows, RowDataWithSubrowsToAlwaysShowIds, RowDataWithTourTarget, SortProps, StickerMapping, generateClientFilters, getColumnWidths, getFilterFnName, renderAsCheckbox, renderAsCheckboxHeader, renderAsCopyableString, renderAsDate, renderAsDatetime, renderAsLightweightImage, renderAsNumber, renderAsPDSFormat, renderAsPii, renderAsSticker, renderAsString, renderAsURL, useTableColumns };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { S as getFilterFnName, _ as renderAsString, a as useTableColumns, b as getColumnWidths, c as renderAsCheckboxHeader, d as renderAsDatetime, f as renderAsLightweightImage, g as renderAsSticker, h as renderAsPii, i as FloatingActionBarContainer, l as renderAsCopyableString, m as renderAsPDSFormat, n as DataTableContainer, o as Inserter, p as renderAsNumber, r as DataTableControls, s as renderAsCheckbox, t as DataTable, u as renderAsDate, v as renderAsURL, x as generateClientFilters, y as FloatingActionBar } from "../../DataTable-
|
|
1
|
+
import { S as getFilterFnName, _ as renderAsString, a as useTableColumns, b as getColumnWidths, c as renderAsCheckboxHeader, d as renderAsDatetime, f as renderAsLightweightImage, g as renderAsSticker, h as renderAsPii, i as FloatingActionBarContainer, l as renderAsCopyableString, m as renderAsPDSFormat, n as DataTableContainer, o as Inserter, p as renderAsNumber, r as DataTableControls, s as renderAsCheckbox, t as DataTable, u as renderAsDate, v as renderAsURL, x as generateClientFilters, y as FloatingActionBar } from "../../DataTable-F9R-aQCg.mjs";
|
|
2
2
|
export { DataTable, DataTable as default, DataTableContainer, DataTableControls, FloatingActionBar, FloatingActionBarContainer, Inserter, generateClientFilters, getColumnWidths, getFilterFnName, renderAsCheckbox, renderAsCheckboxHeader, renderAsCopyableString, renderAsDate, renderAsDatetime, renderAsLightweightImage, renderAsNumber, renderAsPDSFormat, renderAsPii, renderAsSticker, renderAsString, renderAsURL, useTableColumns };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { C as RowAction, D as RowDataWithTourTarget, E as RowDataWithSubrowsToAlwaysShowIds, O as SortProps, S as RenderValueStickerFormatConfig, T as RowDataWithSubrows, _ as DataTableColumns, a as DataTableColumnBaseFormat, b as DatetimeConfig, c as DataTableColumnDatetimeFormat, d as DataTableColumnImageFormat, f as DataTableColumnNumberFormat, g as DataTableColumnURLFormat, h as DataTableColumnStringFormat, i as ColumnConfig, k as StickerMapping, l as DataTableColumnFormat, m as DataTableColumnStickerFormat, n as ClientFilterConfig, o as DataTableColumnCheckboxFormat, p as DataTableColumnPiiFormat, r as ClientFilterType, s as DataTableColumnDateFormat, t as BulkAction, u as DataTableColumnIDFormat, v as DataTableVariables, w as RowDataWithDetails, x as HeadlessFilterConfig, y as DateConfig } from "../../types-
|
|
1
|
+
import { C as RowAction, D as RowDataWithTourTarget, E as RowDataWithSubrowsToAlwaysShowIds, O as SortProps, S as RenderValueStickerFormatConfig, T as RowDataWithSubrows, _ as DataTableColumns, a as DataTableColumnBaseFormat, b as DatetimeConfig, c as DataTableColumnDatetimeFormat, d as DataTableColumnImageFormat, f as DataTableColumnNumberFormat, g as DataTableColumnURLFormat, h as DataTableColumnStringFormat, i as ColumnConfig, k as StickerMapping, l as DataTableColumnFormat, m as DataTableColumnStickerFormat, n as ClientFilterConfig, o as DataTableColumnCheckboxFormat, p as DataTableColumnPiiFormat, r as ClientFilterType, s as DataTableColumnDateFormat, t as BulkAction, u as DataTableColumnIDFormat, v as DataTableVariables, w as RowDataWithDetails, x as HeadlessFilterConfig, y as DateConfig } from "../../types-DxJyE_U8.mjs";
|
|
2
2
|
export { BulkAction, ClientFilterConfig, ClientFilterType, ColumnConfig, DataTableColumnBaseFormat, DataTableColumnCheckboxFormat, DataTableColumnDateFormat, DataTableColumnDatetimeFormat, DataTableColumnFormat, DataTableColumnIDFormat, DataTableColumnImageFormat, DataTableColumnNumberFormat, DataTableColumnPiiFormat, DataTableColumnStickerFormat, DataTableColumnStringFormat, DataTableColumnURLFormat, DataTableColumns, DataTableVariables, DateConfig, DatetimeConfig, HeadlessFilterConfig, RenderValueStickerFormatConfig, RowAction, RowDataWithDetails, RowDataWithSubrows, RowDataWithSubrowsToAlwaysShowIds, RowDataWithTourTarget, SortProps, StickerMapping };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as RangeCalendar, i as DateField, n as Calendar, r as DateRangePicker, t as DatePicker } from "../../DatePicker-
|
|
1
|
+
import { a as RangeCalendar, i as DateField, n as Calendar, r as DateRangePicker, t as DatePicker } from "../../DatePicker-CkNQjfCN.mjs";
|
|
2
2
|
export { Calendar, DateField, DatePicker, DatePicker as default, DateRangePicker, RangeCalendar };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as DropdownMenuProps, r as _default, t as DropdownMenu } from "../../DropdownMenu-
|
|
1
|
+
import { n as DropdownMenuProps, r as _default, t as DropdownMenu } from "../../DropdownMenu-nxFNS1kH.mjs";
|
|
2
2
|
export { DropdownMenu, DropdownMenuProps, _default as default };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { n as FormFieldBaseProps, r as FormFieldProps, t as FormField } from "../../FormField-mLbXDJ9B.mjs";
|
|
2
|
-
import { _ as ToggleField, a as ComboboxSingleSelectFieldProps, c as RadioGroupFieldProps, d as SelectField, f as SelectFieldProps, g as TextFieldProps, h as TextField, i as ComboboxMultiSelectFieldProps, l as SegmentedControlField, m as TextAreaFieldProps, n as CheckboxFieldProps, o as ImplementsFormField, p as TextAreaField, r as ComboboxField, s as RadioGroupField, t as CheckboxField, u as SegmentedControlFieldProps, v as ToggleFieldProps, y as splitOutFormFieldProps } from "../../inputFields-
|
|
3
|
-
import { t as CheckboxGroupField } from "../../CheckboxGroupField-
|
|
4
|
-
import { t as ListBoxField } from "../../ListBoxField-
|
|
5
|
-
import { a as TableBoxFieldActionGroup, i as TableBoxFieldActionEntry, n as TableBoxField, r as TableBoxFieldAction, t as TABLE_BOX_FIELD_ADD_BUTTON_ARIA_LABEL } from "../../TableBoxField-
|
|
2
|
+
import { _ as ToggleField, a as ComboboxSingleSelectFieldProps, c as RadioGroupFieldProps, d as SelectField, f as SelectFieldProps, g as TextFieldProps, h as TextField, i as ComboboxMultiSelectFieldProps, l as SegmentedControlField, m as TextAreaFieldProps, n as CheckboxFieldProps, o as ImplementsFormField, p as TextAreaField, r as ComboboxField, s as RadioGroupField, t as CheckboxField, u as SegmentedControlFieldProps, v as ToggleFieldProps, y as splitOutFormFieldProps } from "../../inputFields-mUsms2tO.mjs";
|
|
3
|
+
import { t as CheckboxGroupField } from "../../CheckboxGroupField-BrPGNIyD.mjs";
|
|
4
|
+
import { t as ListBoxField } from "../../ListBoxField-BCOrph2k.mjs";
|
|
5
|
+
import { a as TableBoxFieldActionGroup, i as TableBoxFieldActionEntry, n as TableBoxField, r as TableBoxFieldAction, t as TABLE_BOX_FIELD_ADD_BUTTON_ARIA_LABEL } from "../../TableBoxField-C3Cg6Lv5.mjs";
|
|
6
6
|
export { CheckboxField, CheckboxFieldProps, CheckboxGroupField, ComboboxField, ComboboxMultiSelectFieldProps, ComboboxSingleSelectFieldProps, FormField, FormField as default, FormFieldBaseProps, FormFieldProps, ImplementsFormField, ListBoxField, RadioGroupField, RadioGroupFieldProps, SegmentedControlField, SegmentedControlFieldProps, SelectField, SelectFieldProps, TABLE_BOX_FIELD_ADD_BUTTON_ARIA_LABEL, TableBoxField, TableBoxFieldAction, TableBoxFieldActionEntry, TableBoxFieldActionGroup, TextAreaField, TextAreaFieldProps, TextField, TextFieldProps, ToggleField, ToggleFieldProps, splitOutFormFieldProps };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as CheckboxField, c as SegmentedControlField, d as TextField, f as ToggleField, i as CheckboxGroupField, l as SelectField, m as FormField, n as TableBoxField, o as ComboboxField, p as splitOutFormFieldProps, r as ListBoxField, s as RadioGroupField, t as TABLE_BOX_FIELD_ADD_BUTTON_ARIA_LABEL, u as TextAreaField } from "../../FormField-
|
|
1
|
+
import { a as CheckboxField, c as SegmentedControlField, d as TextField, f as ToggleField, i as CheckboxGroupField, l as SelectField, m as FormField, n as TableBoxField, o as ComboboxField, p as splitOutFormFieldProps, r as ListBoxField, s as RadioGroupField, t as TABLE_BOX_FIELD_ADD_BUTTON_ARIA_LABEL, u as TextAreaField } from "../../FormField-D0y1uRV5.mjs";
|
|
2
2
|
export { CheckboxField, CheckboxGroupField, ComboboxField, FormField, FormField as default, ListBoxField, RadioGroupField, SegmentedControlField, SelectField, TABLE_BOX_FIELD_ADD_BUTTON_ARIA_LABEL, TableBoxField, TextAreaField, TextField, ToggleField, splitOutFormFieldProps };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as HoverCopyableField } from "../../HoverCopyableField-
|
|
1
|
+
import { t as HoverCopyableField } from "../../HoverCopyableField-DkOosH8z.mjs";
|
|
2
2
|
export { HoverCopyableField as default };
|
|
@@ -14,14 +14,45 @@ import { Spacing } from "@persona/design-tokens";
|
|
|
14
14
|
import { useCallback, useState } from "react";
|
|
15
15
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
16
16
|
import { ImageIcon, LockedIcon, MoreIcon } from "@persona/icons";
|
|
17
|
-
//#region components/ImageTile/
|
|
18
|
-
const MIN_WIDTH = "180px";
|
|
19
|
-
const MAX_WIDTH = "420px";
|
|
20
|
-
const OVERLAY_INSET = Spacing[2];
|
|
17
|
+
//#region components/ImageTile/ImageThumbnail.tsx
|
|
21
18
|
const EMPTY_COPY = "No available preview";
|
|
22
|
-
|
|
19
|
+
/**
|
|
20
|
+
* Tracks decode, error, and src changes for a thumbnail. ImageTile also reads
|
|
21
|
+
* `isLoading` so its metadata row can shimmer in step with the image.
|
|
22
|
+
*/
|
|
23
|
+
const useThumbnailStatus = (src) => {
|
|
24
|
+
const [resolved, setResolved] = useState(null);
|
|
25
|
+
if (resolved && resolved.src !== src) setResolved(null);
|
|
26
|
+
const hasSrc = Boolean(src);
|
|
27
|
+
const loaded = resolved?.src === src && resolved.status === "loaded";
|
|
28
|
+
const hasError = resolved?.src === src && resolved.status === "error";
|
|
29
|
+
const markResolved = (status) => {
|
|
30
|
+
if (!src) return;
|
|
31
|
+
setResolved((current) => current?.src === src && current.status === status ? current : {
|
|
32
|
+
src,
|
|
33
|
+
status
|
|
34
|
+
});
|
|
35
|
+
};
|
|
36
|
+
const handleImageRef = useCallback((node) => {
|
|
37
|
+
if (!node || !src || !node.complete || node.naturalWidth === 0) return;
|
|
38
|
+
setResolved((current) => current?.src === src && current.status === "loaded" ? current : {
|
|
39
|
+
src,
|
|
40
|
+
status: "loaded"
|
|
41
|
+
});
|
|
42
|
+
}, [src]);
|
|
43
|
+
return {
|
|
44
|
+
hasSrc,
|
|
45
|
+
hasError,
|
|
46
|
+
loaded,
|
|
47
|
+
isLoading: hasSrc && !loaded && !hasError,
|
|
48
|
+
showEmpty: !hasSrc || hasError,
|
|
49
|
+
markResolved,
|
|
50
|
+
handleImageRef
|
|
51
|
+
};
|
|
52
|
+
};
|
|
23
53
|
const ImageContainer = styled.div`
|
|
24
54
|
position: relative;
|
|
55
|
+
width: 100%;
|
|
25
56
|
aspect-ratio: 200 / 144;
|
|
26
57
|
background-color: ${({ theme }) => semanticColor(theme, "SurfaceSecondary", theme.color.background.secondary)};
|
|
27
58
|
overflow: hidden;
|
|
@@ -55,6 +86,36 @@ const EmptyState = styled.div`
|
|
|
55
86
|
padding: ${Spacing[3]};
|
|
56
87
|
text-align: center;
|
|
57
88
|
`;
|
|
89
|
+
const ThumbnailFrame = ({ src, alt = "", objectFit = "cover", status }) => {
|
|
90
|
+
const { hasSrc, hasError, loaded, isLoading, showEmpty, markResolved, handleImageRef } = status;
|
|
91
|
+
return /* @__PURE__ */ jsxs(ImageContainer, { children: [
|
|
92
|
+
hasSrc && !hasError && /* @__PURE__ */ jsx(Thumbnail, {
|
|
93
|
+
ref: handleImageRef,
|
|
94
|
+
$visible: loaded,
|
|
95
|
+
$objectFit: objectFit,
|
|
96
|
+
src: src ?? void 0,
|
|
97
|
+
alt,
|
|
98
|
+
onLoad: () => markResolved("loaded"),
|
|
99
|
+
onError: () => markResolved("error")
|
|
100
|
+
}),
|
|
101
|
+
isLoading && /* @__PURE__ */ jsx(ImageShimmer, {}),
|
|
102
|
+
showEmpty && /* @__PURE__ */ jsxs(EmptyState, { children: [/* @__PURE__ */ jsx(ImageIcon, {
|
|
103
|
+
size: 24,
|
|
104
|
+
"aria-hidden": true
|
|
105
|
+
}), /* @__PURE__ */ jsx(Paragraph, {
|
|
106
|
+
size: "sm",
|
|
107
|
+
color: "secondary",
|
|
108
|
+
as: "span",
|
|
109
|
+
children: EMPTY_COPY
|
|
110
|
+
})] })
|
|
111
|
+
] });
|
|
112
|
+
};
|
|
113
|
+
//#endregion
|
|
114
|
+
//#region components/ImageTile/ImageTile.tsx
|
|
115
|
+
const MIN_WIDTH = "180px";
|
|
116
|
+
const MAX_WIDTH = "420px";
|
|
117
|
+
const OVERLAY_INSET = Spacing[2];
|
|
118
|
+
const DEFAULT_SELECTION_LABEL = "Select image";
|
|
58
119
|
const MetadataContainer = styled.div`
|
|
59
120
|
padding: ${Spacing[3]};
|
|
60
121
|
background-color: ${({ theme }) => semanticColor(theme, "SurfacePrimary", theme.color.background.primary)};
|
|
@@ -118,27 +179,8 @@ const stopPropagation = (e) => {
|
|
|
118
179
|
e.stopPropagation();
|
|
119
180
|
};
|
|
120
181
|
const ImageTile = ({ src, alt = "", objectFit = "cover", selectable = false, selected = false, onSelectedChange, selectionLabel, actions, locked = false, lockedTooltip, metadata, onClick, ...props }) => {
|
|
121
|
-
const
|
|
122
|
-
|
|
123
|
-
const hasSrc = Boolean(src);
|
|
124
|
-
const loaded = resolved?.src === src && resolved.status === "loaded";
|
|
125
|
-
const hasError = resolved?.src === src && resolved.status === "error";
|
|
126
|
-
const isLoading = hasSrc && !loaded && !hasError;
|
|
127
|
-
const showEmpty = !hasSrc || hasError;
|
|
128
|
-
const markResolved = (status) => {
|
|
129
|
-
if (!src) return;
|
|
130
|
-
setResolved((current) => current?.src === src && current.status === status ? current : {
|
|
131
|
-
src,
|
|
132
|
-
status
|
|
133
|
-
});
|
|
134
|
-
};
|
|
135
|
-
const handleImageRef = useCallback((node) => {
|
|
136
|
-
if (!node || !src || !node.complete || node.naturalWidth === 0) return;
|
|
137
|
-
setResolved((current) => current?.src === src && current.status === "loaded" ? current : {
|
|
138
|
-
src,
|
|
139
|
-
status: "loaded"
|
|
140
|
-
});
|
|
141
|
-
}, [src]);
|
|
182
|
+
const thumbnail = useThumbnailStatus(src);
|
|
183
|
+
const { isLoading } = thumbnail;
|
|
142
184
|
const visibleActions = actions?.filter((action) => !action.hidden) ?? [];
|
|
143
185
|
const renderActions = !locked && visibleActions.length > 0;
|
|
144
186
|
const clickable = Boolean(onClick);
|
|
@@ -159,26 +201,13 @@ const ImageTile = ({ src, alt = "", objectFit = "cover", selectable = false, sel
|
|
|
159
201
|
role: clickable ? "button" : void 0,
|
|
160
202
|
tabIndex: clickable ? 0 : void 0,
|
|
161
203
|
...props,
|
|
162
|
-
children: [
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
$visible: loaded,
|
|
166
|
-
$objectFit: objectFit,
|
|
167
|
-
src: src ?? void 0,
|
|
204
|
+
children: [
|
|
205
|
+
/* @__PURE__ */ jsx(ThumbnailFrame, {
|
|
206
|
+
src,
|
|
168
207
|
alt,
|
|
169
|
-
|
|
170
|
-
|
|
208
|
+
objectFit,
|
|
209
|
+
status: thumbnail
|
|
171
210
|
}),
|
|
172
|
-
isLoading && /* @__PURE__ */ jsx(ImageShimmer, {}),
|
|
173
|
-
showEmpty && /* @__PURE__ */ jsxs(EmptyState, { children: [/* @__PURE__ */ jsx(ImageIcon, {
|
|
174
|
-
size: 24,
|
|
175
|
-
"aria-hidden": true
|
|
176
|
-
}), /* @__PURE__ */ jsx(Paragraph, {
|
|
177
|
-
size: "sm",
|
|
178
|
-
color: "secondary",
|
|
179
|
-
as: "span",
|
|
180
|
-
children: EMPTY_COPY
|
|
181
|
-
})] }),
|
|
182
211
|
selectable && /* @__PURE__ */ jsx(SelectionOverlay, {
|
|
183
212
|
onClick: stopPropagation,
|
|
184
213
|
children: /* @__PURE__ */ jsx(Checkbox, {
|
|
@@ -220,14 +249,15 @@ const ImageTile = ({ src, alt = "", objectFit = "cover", selectable = false, sel
|
|
|
220
249
|
size: 16,
|
|
221
250
|
"aria-label": "Locked"
|
|
222
251
|
})
|
|
223
|
-
})
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
252
|
+
}),
|
|
253
|
+
hasMetadata && /* @__PURE__ */ jsx(MetadataContainer, { children: isLoading ? /* @__PURE__ */ jsx(LoadingShimmer, {
|
|
254
|
+
width: "60%",
|
|
255
|
+
height: "14px"
|
|
256
|
+
}) : /* @__PURE__ */ jsx(Stack, {
|
|
257
|
+
spacing: Spacing[2],
|
|
258
|
+
children: metadata?.map((row, idx) => /* @__PURE__ */ jsx(MetadataRow, { children: row }, idx))
|
|
259
|
+
}) })
|
|
260
|
+
]
|
|
231
261
|
});
|
|
232
262
|
};
|
|
233
263
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["DropdownMenu"],"sources":["../../../components/ImageTile/ImageTile.tsx"],"sourcesContent":["import {\n type ComponentPropsWithoutRef,\n type KeyboardEvent,\n type MouseEvent,\n type ReactNode,\n useCallback,\n useState,\n} from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { IconButton } from '@persona/design-system/components/Button';\nimport Checkbox from '@persona/design-system/components/Checkbox';\nimport DropdownMenu from '@persona/design-system/components/DropdownMenu';\nimport { LoadingShimmer } from '@persona/design-system/components/LoadingShimmer';\nimport Stack from '@persona/design-system/components/Stack';\nimport { Paragraph } from '@persona/design-system/components/Text';\nimport { Tooltip } from '@persona/design-system/components/Tooltip';\nimport { focusOutline } from '@persona/design-system/mixins/focus';\nimport { TransitionDuration } from '@persona/design-system/variables/transitions';\nimport { Spacing } from '@persona/design-tokens';\nimport { ImageIcon, LockedIcon, MoreIcon } from '@persona/icons';\nimport { withAlpha } from 'design-system/lib/color';\nimport { semanticColor, semanticTokens } from 'design-system/lib/semanticColor';\nimport type { TextAction } from 'design-system/types/Action';\n\nconst MIN_WIDTH = '180px';\nconst MAX_WIDTH = '420px';\nconst OVERLAY_INSET = Spacing[2];\nconst EMPTY_COPY = 'No available preview';\nconst DEFAULT_SELECTION_LABEL = 'Select image';\n\nexport interface ImageTileProps extends Omit<ComponentPropsWithoutRef<'div'>, 'children'> {\n /** URL of the thumbnail. While loading shows shimmer; on error shows the empty fallback. */\n src: string | null;\n /** Alt text for the thumbnail. Also seeds the default checkbox label. */\n alt?: string;\n /** How the thumbnail fills its area. `cover` crops overflow; `contain` letterboxes to fit. Defaults to `cover`. */\n objectFit?: 'cover' | 'contain';\n\n /** Enables the selection checkbox (top-left). */\n selectable?: boolean;\n /** Controlled checked state for the selection checkbox. */\n selected?: boolean;\n /** Called with the new checked value when the checkbox is toggled. */\n onSelectedChange?: (selected: boolean) => void;\n /** Accessible label for the checkbox. Defaults to \"Select {alt}\" or \"Select image\". */\n selectionLabel?: string;\n\n /**\n * Action menu items rendered behind a 3-dot IconButton in the top-right.\n * Ignored when `locked` is true. Pass an empty array (or omit) to hide the menu.\n */\n actions?: TextAction[];\n /**\n * Replaces the action menu with a non-interactive lock icon. Indicates the\n * viewer does not have permission to edit. `actions` are ignored.\n */\n locked?: boolean;\n /** Tooltip string shown when hovering the lock icon. */\n lockedTooltip?: string;\n\n /**\n * Metadata rows rendered beneath the thumbnail. Each entry becomes a\n * full-width, left-aligned row in a vertical Stack. Block content fills the\n * row; inline content (e.g. a Sticker) hugs the left. The region is omitted\n * entirely — including while the image is loading — when the array is empty\n * or undefined, so the tile is only the image.\n */\n metadata?: ReactNode[];\n\n /** Optional click handler for the whole tile. When provided, the tile is keyboard-activatable. */\n onClick?: (e: MouseEvent<HTMLDivElement>) => void;\n}\n\nconst ImageContainer = styled.div`\n position: relative;\n aspect-ratio: 200 / 144;\n background-color: ${({ theme }) => semanticColor(theme, 'SurfaceSecondary', theme.color.background.secondary)};\n overflow: hidden;\n`;\n\nconst Thumbnail = styled.img<{ $visible: boolean; $objectFit: 'cover' | 'contain' }>`\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n object-fit: ${({ $objectFit }) => $objectFit};\n display: block;\n opacity: ${({ $visible }) => ($visible ? 1 : 0)};\n transition: opacity ${TransitionDuration.Fast};\n`;\n\nconst ImageShimmer = styled(LoadingShimmer)`\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n border-radius: 0;\n`;\n\nconst EmptyState = styled.div`\n position: absolute;\n inset: 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: ${Spacing[1]};\n color: ${({ theme }) => semanticColor(theme, 'FgSecondary', theme.color.text.secondary)};\n padding: ${Spacing[3]};\n text-align: center;\n`;\n\nconst MetadataContainer = styled.div`\n padding: ${Spacing[3]};\n background-color: ${({ theme }) => semanticColor(theme, 'SurfacePrimary', theme.color.background.primary)};\n border-top: 1px solid ${({ theme }) => semanticColor(theme, 'BorderDivider', theme.color.border.primary)};\n transition: background-color ${TransitionDuration.Fast};\n`;\n\nconst MetadataRow = styled.div`\n width: 100%;\n // Without these Stickers get bottom aligned\n display: flex;\n align-items: flex-start;\n`;\n\nconst SelectionOverlay = styled.div`\n position: absolute;\n top: ${OVERLAY_INSET};\n left: ${OVERLAY_INSET};\n z-index: 1;\n`;\n\nconst ActionsOverlay = styled.div`\n position: absolute;\n top: ${OVERLAY_INSET};\n right: ${OVERLAY_INSET};\n z-index: 1;\n`;\n\nconst LockedOverlay = styled.div`\n position: absolute;\n top: ${OVERLAY_INSET};\n right: ${OVERLAY_INSET};\n z-index: 1;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: ${({ theme }) => semanticColor(theme, 'FgSecondary', theme.color.text.secondary)};\n`;\n\nconst Root = styled.div<{ $clickable: boolean }>`\n position: relative;\n display: flex;\n flex-direction: column;\n width: 100%;\n min-width: ${MIN_WIDTH};\n max-width: ${MAX_WIDTH};\n background-color: ${({ theme }) => semanticColor(theme, 'SurfacePrimary', theme.color.background.primary)};\n border: 1px solid ${({ theme }) => semanticColor(theme, 'BorderDivider', theme.color.border.primary)};\n border-radius: ${({ theme }) => theme.card.borderRadius};\n box-sizing: border-box;\n overflow: hidden;\n ${focusOutline};\n\n ${({ $clickable }) =>\n $clickable &&\n css`\n cursor: pointer;\n `}\n\n &:hover ${MetadataContainer} {\n background-color: ${({ theme }) => {\n const tokens = semanticTokens(theme);\n return tokens\n ? withAlpha(tokens.SurfaceAccent, tokens.Opacity25)\n : theme.color.background.highlight;\n }};\n }\n`;\n\nconst stopPropagation = (e: MouseEvent) => {\n e.stopPropagation();\n};\n\nexport const ImageTile = ({\n src,\n alt = '',\n objectFit = 'cover',\n selectable = false,\n selected = false,\n onSelectedChange,\n selectionLabel,\n actions,\n locked = false,\n lockedTooltip,\n metadata,\n onClick,\n ...props\n}: ImageTileProps) => {\n // Keyed by src so a new image starts loading without an effect that can\n // reset state after a cached image has already decoded.\n const [resolved, setResolved] = useState<{\n src: string;\n status: 'loaded' | 'error';\n } | null>(null);\n\n if (resolved && resolved.src !== src) {\n setResolved(null);\n }\n\n const hasSrc = Boolean(src);\n const loaded = resolved?.src === src && resolved.status === 'loaded';\n const hasError = resolved?.src === src && resolved.status === 'error';\n const isLoading = hasSrc && !loaded && !hasError;\n const showEmpty = !hasSrc || hasError;\n\n const markResolved = (status: 'loaded' | 'error') => {\n if (!src) {\n return;\n }\n setResolved((current) =>\n current?.src === src && current.status === status ? current : { src, status },\n );\n };\n\n const handleImageRef = useCallback(\n (node: HTMLImageElement | null) => {\n // A cached image can finish before React attaches onLoad, which leaves\n // the tile shimmering forever. Adopt an already-decoded image here.\n if (!node || !src || !node.complete || node.naturalWidth === 0) {\n return;\n }\n setResolved((current) =>\n current?.src === src && current.status === 'loaded' ? current : { src, status: 'loaded' },\n );\n },\n [src],\n );\n\n const visibleActions = actions?.filter((action) => !action.hidden) ?? [];\n const renderActions = !locked && visibleActions.length > 0;\n const clickable = Boolean(onClick);\n\n const handleKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\n if (!onClick) {\n return;\n }\n // Only activate when the key event originates from the tile root itself.\n // Interactive descendants (selection checkbox, action buttons) must keep\n // their own native Space/Enter behavior.\n if (e.target !== e.currentTarget) {\n return;\n }\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n e.currentTarget.click();\n }\n };\n\n const accessibleSelectionLabel =\n selectionLabel ?? (alt ? `Select ${alt}` : DEFAULT_SELECTION_LABEL);\n\n const hasMetadata = (metadata?.length ?? 0) > 0;\n\n return (\n <Root\n $clickable={clickable}\n onClick={onClick}\n onKeyDown={clickable ? handleKeyDown : undefined}\n role={clickable ? 'button' : undefined}\n tabIndex={clickable ? 0 : undefined}\n {...props}\n >\n <ImageContainer>\n {hasSrc && !hasError && (\n <Thumbnail\n ref={handleImageRef}\n $visible={loaded}\n $objectFit={objectFit}\n src={src ?? undefined}\n alt={alt}\n onLoad={() => markResolved('loaded')}\n onError={() => markResolved('error')}\n />\n )}\n {isLoading && <ImageShimmer />}\n {showEmpty && (\n <EmptyState>\n <ImageIcon size={24} aria-hidden />\n <Paragraph size='sm' color='secondary' as='span'>\n {EMPTY_COPY}\n </Paragraph>\n </EmptyState>\n )}\n\n {selectable && (\n <SelectionOverlay onClick={stopPropagation}>\n <Checkbox\n size='sm'\n checked={selected}\n onChange={(e) => onSelectedChange?.(e.target.checked)}\n aria-label={accessibleSelectionLabel}\n />\n </SelectionOverlay>\n )}\n\n {renderActions && (\n <ActionsOverlay onClick={stopPropagation}>\n <DropdownMenu\n portal\n trigger={\n <IconButton size='sm' aria-label='More actions'>\n <MoreIcon />\n </IconButton>\n }\n >\n {visibleActions.map((action, idx) => (\n <DropdownMenu.Item\n key={action.id ?? `${action.label}-${idx}`}\n prefixIcon={action.prefixIcon}\n suffixIcon={action.suffixIcon}\n disabled={action.disabled}\n variant={action.variant === 'danger' ? 'danger' : 'basic'}\n onClick={(e) => {\n if (action.disabled) {\n return;\n }\n return action.onClick?.(e);\n }}\n >\n {action.label}\n </DropdownMenu.Item>\n ))}\n </DropdownMenu>\n </ActionsOverlay>\n )}\n\n {locked && (\n <LockedOverlay onClick={stopPropagation}>\n {lockedTooltip ? (\n <Tooltip iconTrigger={<LockedIcon size={16} />} aria-label={lockedTooltip}>\n {lockedTooltip}\n </Tooltip>\n ) : (\n <LockedIcon size={16} aria-label='Locked' />\n )}\n </LockedOverlay>\n )}\n </ImageContainer>\n\n {hasMetadata && (\n <MetadataContainer>\n {isLoading ? (\n <LoadingShimmer width='60%' height='14px' />\n ) : (\n <Stack spacing={Spacing[2]}>\n {metadata?.map((row, idx) => (\n <MetadataRow key={idx}>{row}</MetadataRow>\n ))}\n </Stack>\n )}\n </MetadataContainer>\n )}\n </Root>\n );\n};\n\nexport default ImageTile;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["DropdownMenu"],"sources":["../../../components/ImageTile/ImageThumbnail.tsx","../../../components/ImageTile/ImageTile.tsx"],"sourcesContent":["import { type Ref, useCallback, useState } from 'react';\nimport styled from 'styled-components';\n\nimport { LoadingShimmer } from '@persona/design-system/components/LoadingShimmer';\nimport { Paragraph } from '@persona/design-system/components/Text';\nimport { TransitionDuration } from '@persona/design-system/variables/transitions';\nimport { Spacing } from '@persona/design-tokens';\nimport { ImageIcon } from '@persona/icons';\nimport { semanticColor } from 'design-system/lib/semanticColor';\n\nconst EMPTY_COPY = 'No available preview';\n\nexport interface ImageThumbnailProps {\n /** URL of the thumbnail. While loading shows shimmer; on error shows the empty fallback. */\n src: string | null;\n /** Alt text for the thumbnail. */\n alt?: string;\n /** How the thumbnail fills its area. `cover` crops overflow; `contain` letterboxes to fit. */\n objectFit?: 'cover' | 'contain';\n}\n\ninterface ThumbnailStatus {\n hasSrc: boolean;\n hasError: boolean;\n loaded: boolean;\n isLoading: boolean;\n showEmpty: boolean;\n markResolved: (status: 'loaded' | 'error') => void;\n handleImageRef: Ref<HTMLImageElement>;\n}\n\n/**\n * Tracks decode, error, and src changes for a thumbnail. ImageTile also reads\n * `isLoading` so its metadata row can shimmer in step with the image.\n */\nexport const useThumbnailStatus = (src: string | null): ThumbnailStatus => {\n // Keyed by src so a new image starts loading without an effect that can\n // reset state after a cached image has already decoded.\n const [resolved, setResolved] = useState<{\n src: string;\n status: 'loaded' | 'error';\n } | null>(null);\n\n if (resolved && resolved.src !== src) {\n setResolved(null);\n }\n\n const hasSrc = Boolean(src);\n const loaded = resolved?.src === src && resolved.status === 'loaded';\n const hasError = resolved?.src === src && resolved.status === 'error';\n\n const markResolved = (status: 'loaded' | 'error') => {\n if (!src) {\n return;\n }\n setResolved((current) =>\n current?.src === src && current.status === status ? current : { src, status },\n );\n };\n\n const handleImageRef = useCallback(\n (node: HTMLImageElement | null) => {\n // A cached image can finish before React attaches onLoad, which leaves\n // the tile shimmering forever. Adopt an already-decoded image here.\n if (!node || !src || !node.complete || node.naturalWidth === 0) {\n return;\n }\n setResolved((current) =>\n current?.src === src && current.status === 'loaded' ? current : { src, status: 'loaded' },\n );\n },\n [src],\n );\n\n return {\n hasSrc,\n hasError,\n loaded,\n isLoading: hasSrc && !loaded && !hasError,\n showEmpty: !hasSrc || hasError,\n markResolved,\n handleImageRef,\n };\n};\n\nconst ImageContainer = styled.div`\n position: relative;\n width: 100%;\n aspect-ratio: 200 / 144;\n background-color: ${({ theme }) => semanticColor(theme, 'SurfaceSecondary', theme.color.background.secondary)};\n overflow: hidden;\n`;\n\nconst Thumbnail = styled.img<{ $visible: boolean; $objectFit: 'cover' | 'contain' }>`\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n object-fit: ${({ $objectFit }) => $objectFit};\n display: block;\n opacity: ${({ $visible }) => ($visible ? 1 : 0)};\n transition: opacity ${TransitionDuration.Fast};\n`;\n\nconst ImageShimmer = styled(LoadingShimmer)`\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n border-radius: 0;\n`;\n\nconst EmptyState = styled.div`\n position: absolute;\n inset: 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: ${Spacing[1]};\n color: ${({ theme }) => semanticColor(theme, 'FgSecondary', theme.color.text.secondary)};\n padding: ${Spacing[3]};\n text-align: center;\n`;\n\nexport const ThumbnailFrame = ({\n src,\n alt = '',\n objectFit = 'cover',\n status,\n}: ImageThumbnailProps & { status: ThumbnailStatus }) => {\n const { hasSrc, hasError, loaded, isLoading, showEmpty, markResolved, handleImageRef } = status;\n\n return (\n <ImageContainer>\n {hasSrc && !hasError && (\n <Thumbnail\n ref={handleImageRef}\n $visible={loaded}\n $objectFit={objectFit}\n src={src ?? undefined}\n alt={alt}\n onLoad={() => markResolved('loaded')}\n onError={() => markResolved('error')}\n />\n )}\n {isLoading && <ImageShimmer />}\n {showEmpty && (\n <EmptyState>\n <ImageIcon size={24} aria-hidden />\n <Paragraph size='sm' color='secondary' as='span'>\n {EMPTY_COPY}\n </Paragraph>\n </EmptyState>\n )}\n </ImageContainer>\n );\n};\n\n/** Image area used by ImageTile. Not a card chrome. */\nexport const ImageThumbnail = ({ src, alt = '', objectFit = 'cover' }: ImageThumbnailProps) => {\n const status = useThumbnailStatus(src);\n return <ThumbnailFrame src={src} alt={alt} objectFit={objectFit} status={status} />;\n};\n","import type { ComponentPropsWithoutRef, KeyboardEvent, MouseEvent, ReactNode } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { IconButton } from '@persona/design-system/components/Button';\nimport Checkbox from '@persona/design-system/components/Checkbox';\nimport DropdownMenu from '@persona/design-system/components/DropdownMenu';\nimport { LoadingShimmer } from '@persona/design-system/components/LoadingShimmer';\nimport Stack from '@persona/design-system/components/Stack';\nimport { Tooltip } from '@persona/design-system/components/Tooltip';\nimport { focusOutline } from '@persona/design-system/mixins/focus';\nimport { TransitionDuration } from '@persona/design-system/variables/transitions';\nimport { Spacing } from '@persona/design-tokens';\nimport { LockedIcon, MoreIcon } from '@persona/icons';\nimport { withAlpha } from 'design-system/lib/color';\nimport { semanticColor, semanticTokens } from 'design-system/lib/semanticColor';\nimport type { TextAction } from 'design-system/types/Action';\n\nimport { ThumbnailFrame, useThumbnailStatus } from './ImageThumbnail';\n\nconst MIN_WIDTH = '180px';\nconst MAX_WIDTH = '420px';\nconst OVERLAY_INSET = Spacing[2];\nconst DEFAULT_SELECTION_LABEL = 'Select image';\n\nexport interface ImageTileProps extends Omit<ComponentPropsWithoutRef<'div'>, 'children'> {\n /** URL of the thumbnail. While loading shows shimmer; on error shows the empty fallback. */\n src: string | null;\n /** Alt text for the thumbnail. Also seeds the default checkbox label. */\n alt?: string;\n /** How the thumbnail fills its area. `cover` crops overflow; `contain` letterboxes to fit. Defaults to `cover`. */\n objectFit?: 'cover' | 'contain';\n\n /** Enables the selection checkbox (top-left). */\n selectable?: boolean;\n /** Controlled checked state for the selection checkbox. */\n selected?: boolean;\n /** Called with the new checked value when the checkbox is toggled. */\n onSelectedChange?: (selected: boolean) => void;\n /** Accessible label for the checkbox. Defaults to \"Select {alt}\" or \"Select image\". */\n selectionLabel?: string;\n\n /**\n * Action menu items rendered behind a 3-dot IconButton in the top-right.\n * Ignored when `locked` is true. Pass an empty array (or omit) to hide the menu.\n */\n actions?: TextAction[];\n /**\n * Replaces the action menu with a non-interactive lock icon. Indicates the\n * viewer does not have permission to edit. `actions` are ignored.\n */\n locked?: boolean;\n /** Tooltip string shown when hovering the lock icon. */\n lockedTooltip?: string;\n\n /**\n * Metadata rows rendered beneath the thumbnail. Each entry becomes a\n * full-width, left-aligned row in a vertical Stack. Block content fills the\n * row; inline content (e.g. a Sticker) hugs the left. The region is omitted\n * entirely — including while the image is loading — when the array is empty\n * or undefined, so the tile is only the image.\n */\n metadata?: ReactNode[];\n\n /** Optional click handler for the whole tile. When provided, the tile is keyboard-activatable. */\n onClick?: (e: MouseEvent<HTMLDivElement>) => void;\n}\n\nconst MetadataContainer = styled.div`\n padding: ${Spacing[3]};\n background-color: ${({ theme }) => semanticColor(theme, 'SurfacePrimary', theme.color.background.primary)};\n border-top: 1px solid ${({ theme }) => semanticColor(theme, 'BorderDivider', theme.color.border.primary)};\n transition: background-color ${TransitionDuration.Fast};\n`;\n\nconst MetadataRow = styled.div`\n width: 100%;\n // Without these Stickers get bottom aligned\n display: flex;\n align-items: flex-start;\n`;\n\nconst SelectionOverlay = styled.div`\n position: absolute;\n top: ${OVERLAY_INSET};\n left: ${OVERLAY_INSET};\n z-index: 1;\n`;\n\nconst ActionsOverlay = styled.div`\n position: absolute;\n top: ${OVERLAY_INSET};\n right: ${OVERLAY_INSET};\n z-index: 1;\n`;\n\nconst LockedOverlay = styled.div`\n position: absolute;\n top: ${OVERLAY_INSET};\n right: ${OVERLAY_INSET};\n z-index: 1;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: ${({ theme }) => semanticColor(theme, 'FgSecondary', theme.color.text.secondary)};\n`;\n\nconst Root = styled.div<{ $clickable: boolean }>`\n position: relative;\n display: flex;\n flex-direction: column;\n width: 100%;\n min-width: ${MIN_WIDTH};\n max-width: ${MAX_WIDTH};\n background-color: ${({ theme }) => semanticColor(theme, 'SurfacePrimary', theme.color.background.primary)};\n border: 1px solid ${({ theme }) => semanticColor(theme, 'BorderDivider', theme.color.border.primary)};\n border-radius: ${({ theme }) => theme.card.borderRadius};\n box-sizing: border-box;\n overflow: hidden;\n ${focusOutline};\n\n ${({ $clickable }) =>\n $clickable &&\n css`\n cursor: pointer;\n `}\n\n &:hover ${MetadataContainer} {\n background-color: ${({ theme }) => {\n const tokens = semanticTokens(theme);\n return tokens\n ? withAlpha(tokens.SurfaceAccent, tokens.Opacity25)\n : theme.color.background.highlight;\n }};\n }\n`;\n\nconst stopPropagation = (e: MouseEvent) => {\n e.stopPropagation();\n};\n\nexport const ImageTile = ({\n src,\n alt = '',\n objectFit = 'cover',\n selectable = false,\n selected = false,\n onSelectedChange,\n selectionLabel,\n actions,\n locked = false,\n lockedTooltip,\n metadata,\n onClick,\n ...props\n}: ImageTileProps) => {\n const thumbnail = useThumbnailStatus(src);\n const { isLoading } = thumbnail;\n\n const visibleActions = actions?.filter((action) => !action.hidden) ?? [];\n const renderActions = !locked && visibleActions.length > 0;\n const clickable = Boolean(onClick);\n\n const handleKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\n if (!onClick) {\n return;\n }\n // Only activate when the key event originates from the tile root itself.\n // Interactive descendants (selection checkbox, action buttons) must keep\n // their own native Space/Enter behavior.\n if (e.target !== e.currentTarget) {\n return;\n }\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n e.currentTarget.click();\n }\n };\n\n const accessibleSelectionLabel =\n selectionLabel ?? (alt ? `Select ${alt}` : DEFAULT_SELECTION_LABEL);\n\n const hasMetadata = (metadata?.length ?? 0) > 0;\n\n return (\n <Root\n $clickable={clickable}\n onClick={onClick}\n onKeyDown={clickable ? handleKeyDown : undefined}\n role={clickable ? 'button' : undefined}\n tabIndex={clickable ? 0 : undefined}\n {...props}\n >\n <ThumbnailFrame src={src} alt={alt} objectFit={objectFit} status={thumbnail} />\n\n {selectable && (\n <SelectionOverlay onClick={stopPropagation}>\n <Checkbox\n size='sm'\n checked={selected}\n onChange={(e) => onSelectedChange?.(e.target.checked)}\n aria-label={accessibleSelectionLabel}\n />\n </SelectionOverlay>\n )}\n\n {renderActions && (\n <ActionsOverlay onClick={stopPropagation}>\n <DropdownMenu\n portal\n trigger={\n <IconButton size='sm' aria-label='More actions'>\n <MoreIcon />\n </IconButton>\n }\n >\n {visibleActions.map((action, idx) => (\n <DropdownMenu.Item\n key={action.id ?? `${action.label}-${idx}`}\n prefixIcon={action.prefixIcon}\n suffixIcon={action.suffixIcon}\n disabled={action.disabled}\n variant={action.variant === 'danger' ? 'danger' : 'basic'}\n onClick={(e) => {\n if (action.disabled) {\n return;\n }\n return action.onClick?.(e);\n }}\n >\n {action.label}\n </DropdownMenu.Item>\n ))}\n </DropdownMenu>\n </ActionsOverlay>\n )}\n\n {locked && (\n <LockedOverlay onClick={stopPropagation}>\n {lockedTooltip ? (\n <Tooltip iconTrigger={<LockedIcon size={16} />} aria-label={lockedTooltip}>\n {lockedTooltip}\n </Tooltip>\n ) : (\n <LockedIcon size={16} aria-label='Locked' />\n )}\n </LockedOverlay>\n )}\n\n {hasMetadata && (\n <MetadataContainer>\n {isLoading ? (\n <LoadingShimmer width='60%' height='14px' />\n ) : (\n <Stack spacing={Spacing[2]}>\n {metadata?.map((row, idx) => (\n <MetadataRow key={idx}>{row}</MetadataRow>\n ))}\n </Stack>\n )}\n </MetadataContainer>\n )}\n </Root>\n );\n};\n\nexport default ImageTile;\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as Link } from "../../Link-
|
|
1
|
+
import { t as Link } from "../../Link-BSuXrvTu.mjs";
|
|
2
2
|
export { Link, Link as default };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i as useListBoxContext, n as ListBoxItemProps, r as ListBoxProps } from "../../ListBox-
|
|
2
|
-
import { n as LogicRowProps } from "../../LogicRow-
|
|
3
|
-
import { t as ListBox } from "../../index-
|
|
1
|
+
import { i as useListBoxContext, n as ListBoxItemProps, r as ListBoxProps } from "../../ListBox-CXFI-0nG.mjs";
|
|
2
|
+
import { n as LogicRowProps } from "../../LogicRow-8oYRkwz5.mjs";
|
|
3
|
+
import { t as ListBox } from "../../index-C3uFHTo0.mjs";
|
|
4
4
|
export { ListBox, ListBox as default, ListBoxItemProps, ListBoxProps, LogicRowProps, useListBoxContext };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as useListBoxContext, t as ListBox } from "../../ListBox-
|
|
1
|
+
import { n as useListBoxContext, t as ListBox } from "../../ListBox-BLoJVezh.mjs";
|
|
2
2
|
export { ListBox, ListBox as default, useListBoxContext };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as MenuDivider, c as MenuItem, d as MenuList, f as MenuProps, i as Menu, l as MenuItemProps, n as IconContainer, o as MenuHeading, r as ListItem, s as MenuHeadingProps, t as FloatingCard, u as MenuItemType } from "../../Menu-
|
|
1
|
+
import { a as MenuDivider, c as MenuItem, d as MenuList, f as MenuProps, i as Menu, l as MenuItemProps, n as IconContainer, o as MenuHeading, r as ListItem, s as MenuHeadingProps, t as FloatingCard, u as MenuItemType } from "../../Menu-DHnQZ5yN.mjs";
|
|
2
2
|
export { FloatingCard, IconContainer, ListItem, Menu, Menu as default, MenuDivider, MenuHeading, MenuHeadingProps, MenuItem, MenuItemProps, MenuItemType, MenuList, MenuProps };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { i as Modal_default, n as ModalContent, r as ModalTrigger, t as ModalClose } from "../../Modal-
|
|
1
|
+
import { i as Modal_default, n as ModalContent, r as ModalTrigger, t as ModalClose } from "../../Modal-IJdbLORi.mjs";
|
|
2
2
|
export { ModalClose, ModalContent, ModalTrigger, Modal_default as default };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as MIN_PAGE_SIZE, i as DEFAULT_PAGE_SIZE_OPTIONS, n as PAGE_LIMIT_BEFORE_SCROLL_MODE, r as PageSelector, t as Pagination_default } from "../../Pagination-
|
|
1
|
+
import { a as MIN_PAGE_SIZE, i as DEFAULT_PAGE_SIZE_OPTIONS, n as PAGE_LIMIT_BEFORE_SCROLL_MODE, r as PageSelector, t as Pagination_default } from "../../Pagination-C5ANr9M0.mjs";
|
|
2
2
|
export { DEFAULT_PAGE_SIZE_OPTIONS, MIN_PAGE_SIZE, PAGE_LIMIT_BEFORE_SCROLL_MODE, PageSelector, Pagination_default as default };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as Pii_default } from "../../Pii-
|
|
1
|
+
import { t as Pii_default } from "../../Pii-G16_b7Yk.mjs";
|
|
2
2
|
export { Pii_default as default };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as PopoverPortal, i as PopoverContent, n as PopoverCard, o as PopoverTrigger, r as PopoverClose, s as Popover_default, t as PopoverAnchor } from "../../Popover-
|
|
1
|
+
import { a as PopoverPortal, i as PopoverContent, n as PopoverCard, o as PopoverTrigger, r as PopoverClose, s as Popover_default, t as PopoverAnchor } from "../../Popover-532iYFek.mjs";
|
|
2
2
|
export { PopoverAnchor, PopoverCard, PopoverClose, PopoverContent, PopoverPortal, PopoverTrigger, Popover_default as default };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { i as SelectProps, n as Select, r as SelectHeader, t as Option } from "../../Select-
|
|
1
|
+
import { i as SelectProps, n as Select, r as SelectHeader, t as Option } from "../../Select-CSbamhJO.mjs";
|
|
2
2
|
export { Option, Select, Select as default, SelectHeader, SelectProps };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as Select, r as SelectHeader, t as Option } from "../../Select-
|
|
1
|
+
import { n as Select, r as SelectHeader, t as Option } from "../../Select-hnXfPywt.mjs";
|
|
2
2
|
export { Option, Select, Select as default, SelectHeader };
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { SelectionCard, SelectionCardProps } from "../../SelectionCard.mjs";
|
|
2
|
+
import { SelectionCardGroup, SelectionCardGroupMultipleProps, SelectionCardGroupProps, SelectionCardGroupSingleProps } from "../../SelectionCardGroup.mjs";
|
|
3
|
+
export { SelectionCard, SelectionCard as default, SelectionCardGroup, type SelectionCardGroupMultipleProps, type SelectionCardGroupProps, type SelectionCardGroupSingleProps, type SelectionCardProps };
|