@caratlogic/design-system 0.1.19 → 0.1.21

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 (26) hide show
  1. package/dist/components/molecules/CustomCombobox/CustomCombobox.d.ts +1 -1
  2. package/dist/components/molecules/CustomCombobox/CustomCombobox.d.ts.map +1 -1
  3. package/dist/components/molecules/CustomCombobox/CustomCombobox.types.d.ts +2 -0
  4. package/dist/components/molecules/CustomCombobox/CustomCombobox.types.d.ts.map +1 -1
  5. package/dist/components/molecules/DataEditableTable/DataEditableTable.d.ts +1 -1
  6. package/dist/components/molecules/DataEditableTable/DataEditableTable.d.ts.map +1 -1
  7. package/dist/components/molecules/DataEditableTable/DataEditableTable.types.d.ts +2 -0
  8. package/dist/components/molecules/DataEditableTable/DataEditableTable.types.d.ts.map +1 -1
  9. package/dist/components/molecules/ShareModal/ShareModal.d.ts.map +1 -1
  10. package/dist/components/molecules/ShareModal/ShareModal.types.d.ts +12 -0
  11. package/dist/components/molecules/ShareModal/ShareModal.types.d.ts.map +1 -1
  12. package/dist/components/molecules/ShareModal/ShareModal.utils.d.ts +7 -0
  13. package/dist/components/molecules/ShareModal/ShareModal.utils.d.ts.map +1 -1
  14. package/dist/components/molecules/ShareModal/index.d.ts +2 -1
  15. package/dist/components/molecules/ShareModal/index.d.ts.map +1 -1
  16. package/dist/components/ui/select.d.ts +3 -1
  17. package/dist/components/ui/select.d.ts.map +1 -1
  18. package/dist/index.cjs.js +102 -78
  19. package/dist/index.cjs.js.map +1 -1
  20. package/dist/index.esm.js +102 -79
  21. package/dist/index.esm.js.map +1 -1
  22. package/dist/ui.cjs.js +4 -2
  23. package/dist/ui.cjs.js.map +1 -1
  24. package/dist/ui.esm.js +4 -2
  25. package/dist/ui.esm.js.map +1 -1
  26. package/package.json +1 -1
@@ -1,3 +1,3 @@
1
1
  import type { CustomComboboxProps } from './CustomCombobox.types';
2
- export declare function CustomCombobox({ options, placeholder, value, onChange, className, }: CustomComboboxProps): import("react/jsx-runtime").JSX.Element;
2
+ export declare function CustomCombobox({ options, placeholder, value, onChange, className, emptyMessage, }: CustomComboboxProps): import("react/jsx-runtime").JSX.Element;
3
3
  //# sourceMappingURL=CustomCombobox.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CustomCombobox.d.ts","sourceRoot":"","sources":["../../../../src/components/molecules/CustomCombobox/CustomCombobox.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,mBAAmB,EACpB,MAAM,wBAAwB,CAAC;AAEhC,wBAAgB,cAAc,CAAC,EAC7B,OAAO,EACP,WAAgC,EAChC,KAAK,EACL,QAAQ,EACR,SAAS,GACV,EAAE,mBAAmB,2CAerB"}
1
+ {"version":3,"file":"CustomCombobox.d.ts","sourceRoot":"","sources":["../../../../src/components/molecules/CustomCombobox/CustomCombobox.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,mBAAmB,EACpB,MAAM,wBAAwB,CAAC;AAEhC,wBAAgB,cAAc,CAAC,EAC7B,OAAO,EACP,WAAgC,EAChC,KAAK,EACL,QAAQ,EACR,SAAS,EACT,YAAiC,GAClC,EAAE,mBAAmB,2CAerB"}
@@ -8,5 +8,7 @@ export interface CustomComboboxProps {
8
8
  value: string;
9
9
  onChange: (label: string) => void;
10
10
  className?: string;
11
+ /** Shown when no option matches (or none exist). Defaults to "No option found." */
12
+ emptyMessage?: string;
11
13
  }
12
14
  //# sourceMappingURL=CustomCombobox.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CustomCombobox.types.d.ts","sourceRoot":"","sources":["../../../../src/components/molecules/CustomCombobox/CustomCombobox.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
1
+ {"version":3,"file":"CustomCombobox.types.d.ts","sourceRoot":"","sources":["../../../../src/components/molecules/CustomCombobox/CustomCombobox.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mFAAmF;IACnF,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB"}
@@ -1,6 +1,6 @@
1
1
  import type { DataEditableTableProps } from './DataEditableTable.types';
2
2
  declare function DataEditableTable<T extends {
3
3
  id: string;
4
- }>({ data, columns, onRowClick, enableSelection, columnStyles, onEditChange, onSaveRow, sortBy, setSortBy, sortOrder, setSortOrder, saving, selectedRows, onSelectionChange, isArchiveView, selectionInArchiveView, permissionKey, columnWidths, onColumnResize, pagination, fetchBusinessContacts, showGrid, }: DataEditableTableProps<T>): import("react/jsx-runtime").JSX.Element;
4
+ }>({ data, columns, onRowClick, enableSelection, columnStyles, onEditChange, onSaveRow, sortBy, setSortBy, sortOrder, setSortOrder, saving, selectedRows, onSelectionChange, isArchiveView, selectionInArchiveView, permissionKey, columnWidths, onColumnResize, pagination, fetchBusinessContacts, showGrid, emptyState, }: DataEditableTableProps<T>): import("react/jsx-runtime").JSX.Element;
5
5
  export { DataEditableTable };
6
6
  //# sourceMappingURL=DataEditableTable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DataEditableTable.d.ts","sourceRoot":"","sources":["../../../../src/components/molecules/DataEditableTable/DataEditableTable.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAExE,iBAAS,iBAAiB,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE,EACnD,IAAI,EACJ,OAAO,EACP,UAAU,EACV,eAAuB,EACvB,YAAiB,EACjB,YAAY,EACZ,SAAS,EACT,MAAM,EACN,SAAS,EACT,SAAS,EACT,YAAY,EACZ,MAAM,EACN,YAAiB,EACjB,iBAAiB,EACjB,aAAqB,EACrB,sBAA8B,EAC9B,aAAkB,EAClB,YAAY,EACZ,cAAc,EACd,UAAU,EACV,qBAAqB,EACrB,QAAe,GAChB,EAAE,sBAAsB,CAAC,CAAC,CAAC,2CA2S3B;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
1
+ {"version":3,"file":"DataEditableTable.d.ts","sourceRoot":"","sources":["../../../../src/components/molecules/DataEditableTable/DataEditableTable.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAExE,iBAAS,iBAAiB,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE,EACnD,IAAI,EACJ,OAAO,EACP,UAAU,EACV,eAAuB,EACvB,YAAiB,EACjB,YAAY,EACZ,SAAS,EACT,MAAM,EACN,SAAS,EACT,SAAS,EACT,YAAY,EACZ,MAAM,EACN,YAAiB,EACjB,iBAAiB,EACjB,aAAqB,EACrB,sBAA8B,EAC9B,aAAkB,EAClB,YAAY,EACZ,cAAc,EACd,UAAU,EACV,qBAAqB,EACrB,QAAe,EACf,UAAU,GACX,EAAE,sBAAsB,CAAC,CAAC,CAAC,2CA+R3B;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
@@ -46,6 +46,8 @@ export interface DataEditableTableProps<T extends {
46
46
  onColumnResize?: (key: string, width: number) => void;
47
47
  pagination?: React.ReactNode;
48
48
  fetchBusinessContacts?: FetchBusinessContacts;
49
+ /** Rendered when `data` is empty; pinned to the visible scroll area. Defaults to "No data available". */
50
+ emptyState?: React.ReactNode;
49
51
  }
50
52
  export interface UseColumnResizeArgs {
51
53
  columnWidths?: Record<string, number>;
@@ -1 +1 @@
1
- {"version":3,"file":"DataEditableTable.types.d.ts","sourceRoot":"","sources":["../../../../src/components/molecules/DataEditableTable/DataEditableTable.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DataEditableTable.types.d.ts","sourceRoot":"","sources":["../../../../src/components/molecules/DataEditableTable/DataEditableTable.types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ShareModal.d.ts","sourceRoot":"","sources":["../../../../src/components/molecules/ShareModal/ShareModal.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,EAAE,EAAkB,MAAM,OAAO,CAAC;AAyB1D,OAAO,KAAK,EAEV,gBAAgB,EAChB,cAAc,EACf,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AA6N3E,eAAO,MAAM,SAAS,EAAE,EAAE,CAAC,cAAc,CA+BxC,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,EAAE,CAAC,gBAAgB,CA2C5C,CAAC"}
1
+ {"version":3,"file":"ShareModal.d.ts","sourceRoot":"","sources":["../../../../src/components/molecules/ShareModal/ShareModal.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,EAAE,EAAkB,MAAM,OAAO,CAAC;AA0B1D,OAAO,KAAK,EAEV,gBAAgB,EAChB,cAAc,EACf,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AA4O3E,eAAO,MAAM,SAAS,EAAE,EAAE,CAAC,cAAc,CAiCxC,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,EAAE,CAAC,gBAAgB,CA6C5C,CAAC"}
@@ -1,9 +1,21 @@
1
1
  import type { ReactNode } from 'react';
2
+ export interface ShareItem {
3
+ /** One-line description of the item, e.g. "Emerald · RRT1 · 2.50 ct". */
4
+ label: string;
5
+ /** Public URL for that item. */
6
+ url: string;
7
+ }
2
8
  export interface ShareContentProps {
3
9
  /** Public URL to share (single-item mode). */
4
10
  url: string;
5
11
  /** Multiple public URLs to share as one message (bulk mode). When non-empty, single-URL social tiles (Facebook/X) are hidden. */
6
12
  urls?: string[];
13
+ /**
14
+ * Bulk mode with a caption per link, shared as a numbered list. Preferred over
15
+ * `urls`, which sends bare links the recipient cannot tell apart. Takes
16
+ * precedence when both are given.
17
+ */
18
+ items?: ShareItem[];
7
19
  /** Title used in social share prefills. */
8
20
  title?: string;
9
21
  /** Entity label used in the subtitle copy ("public view of this {entityLabel}."). Default "item". */
@@ -1 +1 @@
1
- {"version":3,"file":"ShareModal.types.d.ts","sourceRoot":"","sources":["../../../../src/components/molecules/ShareModal/ShareModal.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,WAAW,iBAAiB;IAChC,8CAA8C;IAC9C,GAAG,EAAE,MAAM,CAAC;IACZ,iIAAiI;IACjI,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qGAAqG;IACrG,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACxD,iDAAiD;IACjD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,+EAA+E;IAC/E,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,cAAe,SAAQ,iBAAiB;IACvD,0GAA0G;IAC1G,QAAQ,EAAE,SAAS,CAAC;IACpB,sCAAsC;IACtC,IAAI,CAAC,EAAE,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC3C,8EAA8E;IAC9E,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IACnC,2EAA2E;IAC3E,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,4CAA4C;IAC5C,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACxC;AAED,MAAM,WAAW,gBAAiB,SAAQ,iBAAiB;IACzD,6BAA6B;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd,4CAA4C;IAC5C,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB"}
1
+ {"version":3,"file":"ShareModal.types.d.ts","sourceRoot":"","sources":["../../../../src/components/molecules/ShareModal/ShareModal.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,WAAW,SAAS;IACxB,yEAAyE;IACzE,KAAK,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,iBAAiB;IAChC,8CAA8C;IAC9C,GAAG,EAAE,MAAM,CAAC;IACZ,iIAAiI;IACjI,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;IACpB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qGAAqG;IACrG,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACxD,iDAAiD;IACjD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,+EAA+E;IAC/E,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,cAAe,SAAQ,iBAAiB;IACvD,0GAA0G;IAC1G,QAAQ,EAAE,SAAS,CAAC;IACpB,sCAAsC;IACtC,IAAI,CAAC,EAAE,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC3C,8EAA8E;IAC9E,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IACnC,2EAA2E;IAC3E,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,4CAA4C;IAC5C,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACxC;AAED,MAAM,WAAW,gBAAiB,SAAQ,iBAAiB;IACzD,6BAA6B;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd,4CAA4C;IAC5C,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB"}
@@ -1,3 +1,4 @@
1
+ import type { ShareItem } from './ShareModal.types';
1
2
  export declare const buildInventoryPublicUrl: (entity: "gem" | "diamond", id?: string | null) => string;
2
3
  export interface InventoryShareTitleParams {
3
4
  entity: 'gem' | 'diamond';
@@ -11,4 +12,10 @@ export declare const buildFacebookUrl: (url: string) => string;
11
12
  export declare const buildXUrl: (text: string, url: string) => string;
12
13
  export declare const isWebShareAvailable: () => boolean;
13
14
  export declare const isValidEmail: (value: string) => boolean;
15
+ /**
16
+ * Bulk share message: the title, then one numbered entry per item with its
17
+ * caption above its link. Blank lines between entries stop chat clients from
18
+ * running the links together.
19
+ */
20
+ export declare const buildBulkShareMessage: (title: string, items: ShareItem[]) => string;
14
21
  //# sourceMappingURL=ShareModal.utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ShareModal.utils.d.ts","sourceRoot":"","sources":["../../../../src/components/molecules/ShareModal/ShareModal.utils.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,uBAAuB,GAClC,QAAQ,KAAK,GAAG,SAAS,EACzB,KAAK,MAAM,GAAG,IAAI,KACjB,MAKF,CAAC;AAEF,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,KAAK,GAAG,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CACtC;AAED,eAAO,MAAM,wBAAwB,GAAI,qCAItC,yBAAyB,KAAG,MAY9B,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,QAAQ,KAAK,GAAG,SAAS,EACzB,OAAO,MAAM,KACZ,MAAiE,CAAC;AAErE,eAAO,MAAM,gBAAgB,GAAI,MAAM,MAAM,EAAE,KAAK,MAAM,KAAG,MACS,CAAC;AAEvE,eAAO,MAAM,gBAAgB,GAAI,KAAK,MAAM,KAAG,MAC4B,CAAC;AAE5E,eAAO,MAAM,SAAS,GAAI,MAAM,MAAM,EAAE,KAAK,MAAM,KAAG,MAC8C,CAAC;AAErG,eAAO,MAAM,mBAAmB,QAAO,OACoC,CAAC;AAE5E,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,KAAG,OACI,CAAC"}
1
+ {"version":3,"file":"ShareModal.utils.d.ts","sourceRoot":"","sources":["../../../../src/components/molecules/ShareModal/ShareModal.utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAIpD,eAAO,MAAM,uBAAuB,GAClC,QAAQ,KAAK,GAAG,SAAS,EACzB,KAAK,MAAM,GAAG,IAAI,KACjB,MAKF,CAAC;AAEF,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,KAAK,GAAG,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CACtC;AAED,eAAO,MAAM,wBAAwB,GAAI,qCAItC,yBAAyB,KAAG,MAY9B,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,QAAQ,KAAK,GAAG,SAAS,EACzB,OAAO,MAAM,KACZ,MAAiE,CAAC;AAErE,eAAO,MAAM,gBAAgB,GAAI,MAAM,MAAM,EAAE,KAAK,MAAM,KAAG,MACS,CAAC;AAEvE,eAAO,MAAM,gBAAgB,GAAI,KAAK,MAAM,KAAG,MAC4B,CAAC;AAE5E,eAAO,MAAM,SAAS,GAAI,MAAM,MAAM,EAAE,KAAK,MAAM,KAAG,MAC8C,CAAC;AAErG,eAAO,MAAM,mBAAmB,QAAO,OACoC,CAAC;AAE5E,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,KAAG,OACI,CAAC;AAElD;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,GAChC,OAAO,MAAM,EACb,OAAO,SAAS,EAAE,KACjB,MAMW,CAAC"}
@@ -1,5 +1,6 @@
1
1
  export { ShareMenu, ShareDialog } from './ShareModal';
2
2
  export type { ShareMenuProps, ShareDialogProps } from './ShareModal';
3
- export { buildInventoryShareTitle, buildInventoryPublicUrl, buildBulkShareTitle, buildWhatsappUrl, } from './ShareModal.utils';
3
+ export type { ShareItem } from './ShareModal.types';
4
+ export { buildInventoryShareTitle, buildInventoryPublicUrl, buildBulkShareTitle, buildBulkShareMessage, buildWhatsappUrl, } from './ShareModal.utils';
4
5
  export type { InventoryShareTitleParams } from './ShareModal.utils';
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/molecules/ShareModal/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACtD,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/molecules/ShareModal/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACtD,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrE,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -11,9 +11,11 @@ declare function SelectTrigger({ className, size, children, ...props }: React.Co
11
11
  type SelectContentProps = React.ComponentProps<typeof SelectPrimitive.Content> & {
12
12
  searchable?: boolean;
13
13
  searchPlaceholder?: string;
14
+ /** Shown when the list has no options. A search with no matches shows "No matching options". */
15
+ emptyMessage?: string;
14
16
  };
15
17
  declare function SelectContent({ className, children, position, searchable, // default: all selects are searchable
16
- searchPlaceholder, ...props }: SelectContentProps): import("react/jsx-runtime").JSX.Element;
18
+ searchPlaceholder, emptyMessage, ...props }: SelectContentProps): import("react/jsx-runtime").JSX.Element;
17
19
  declare function SelectLabel({ className, ...props }: React.ComponentProps<typeof SelectPrimitive.Label>): import("react/jsx-runtime").JSX.Element;
18
20
  declare function SelectItem({ className, children, searchValue, withCheckbox, ...props }: React.ComponentProps<typeof SelectPrimitive.Item> & {
19
21
  searchValue?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../../src/components/ui/select.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAC;AA4B1D,iBAAS,MAAM,CAAC,EACd,YAAY,EACZ,QAAQ,EACR,gBAAwB,EACxB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,GAAG;IACrD,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,2CAqCA;AAED,iBAAS,WAAW,CAAC,EACnB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,2CAEpD;AAED,iBAAS,WAAW,CAAC,EACnB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,2CAWpD;AAED,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,IAAgB,EAChB,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC,GAAG;IACxD,IAAI,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;CACzB,2CAiBA;AAGD,KAAK,kBAAkB,GAAG,KAAK,CAAC,cAAc,CAC5C,OAAO,eAAe,CAAC,OAAO,CAC/B,GAAG;IACF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,QAAQ,EACR,QAAmB,EACnB,UAAiB,EAAE,sCAAsC;AACzD,iBAA+B,EAC/B,GAAG,KAAK,EACT,EAAE,kBAAkB,2CA2DpB;AAED,iBAAS,WAAW,CAAC,EACnB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,2CAQpD;AAGD,iBAAS,UAAU,CAAC,EAClB,SAAS,EACT,QAAQ,EACR,WAAW,EACX,YAAoB,EACpB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,GAAG;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,kDAuDA;AAED,iBAAS,eAAe,CAAC,EACvB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,SAAS,CAAC,2CAQxD;AAED,iBAAS,oBAAoB,CAAC,EAC5B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,cAAc,CAAC,2CAa7D;AAED,iBAAS,sBAAsB,CAAC,EAC9B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,gBAAgB,CAAC,2CAa/D;AAED,OAAO,EACL,MAAM,EACN,aAAa,EACb,WAAW,EACX,UAAU,EACV,WAAW,EACX,sBAAsB,EACtB,oBAAoB,EACpB,eAAe,EACf,aAAa,EACb,WAAW,GACZ,CAAC"}
1
+ {"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../../src/components/ui/select.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAC;AA4B1D,iBAAS,MAAM,CAAC,EACd,YAAY,EACZ,QAAQ,EACR,gBAAwB,EACxB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,GAAG;IACrD,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,2CAqCA;AAED,iBAAS,WAAW,CAAC,EACnB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,2CAEpD;AAED,iBAAS,WAAW,CAAC,EACnB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,2CAWpD;AAED,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,IAAgB,EAChB,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC,GAAG;IACxD,IAAI,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;CACzB,2CAiBA;AAGD,KAAK,kBAAkB,GAAG,KAAK,CAAC,cAAc,CAC5C,OAAO,eAAe,CAAC,OAAO,CAC/B,GAAG;IACF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gGAAgG;IAChG,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,QAAQ,EACR,QAAmB,EACnB,UAAiB,EAAE,sCAAsC;AACzD,iBAA+B,EAC/B,YAAqC,EACrC,GAAG,KAAK,EACT,EAAE,kBAAkB,2CAqEpB;AAED,iBAAS,WAAW,CAAC,EACnB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,2CAQpD;AAGD,iBAAS,UAAU,CAAC,EAClB,SAAS,EACT,QAAQ,EACR,WAAW,EACX,YAAoB,EACpB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,GAAG;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,kDAuDA;AAED,iBAAS,eAAe,CAAC,EACvB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,SAAS,CAAC,2CAQxD;AAED,iBAAS,oBAAoB,CAAC,EAC5B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,cAAc,CAAC,2CAa7D;AAED,iBAAS,sBAAsB,CAAC,EAC9B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,gBAAgB,CAAC,2CAa/D;AAED,OAAO,EACL,MAAM,EACN,aAAa,EACb,WAAW,EACX,UAAU,EACV,WAAW,EACX,sBAAsB,EACtB,oBAAoB,EACpB,eAAe,EACf,aAAa,EACb,WAAW,GACZ,CAAC"}
package/dist/index.cjs.js CHANGED
@@ -21208,9 +21208,9 @@ function useSelectedComboboxOption(value, options) {
21208
21208
  }, [normalizedValue, options]);
21209
21209
  }
21210
21210
 
21211
- function CustomCombobox({ options, placeholder = 'Select option...', value, onChange, className, }) {
21211
+ function CustomCombobox({ options, placeholder = 'Select option...', value, onChange, className, emptyMessage = 'No option found.', }) {
21212
21212
  const selectedItem = useSelectedComboboxOption(value, options);
21213
- return (jsxRuntime.jsx(SearchableSelect, { selectedItem: selectedItem, onChange: (opt) => onChange(opt.label), getOptionKey: (o) => o.value, getOptionLabel: (o) => o.label, options: options, searchPlaceholder: placeholder, emptyMessage: "No option found.", className: className }));
21213
+ return (jsxRuntime.jsx(SearchableSelect, { selectedItem: selectedItem, onChange: (opt) => onChange(opt.label), getOptionKey: (o) => o.value, getOptionLabel: (o) => o.label, options: options, searchPlaceholder: placeholder, emptyMessage: emptyMessage, className: className }));
21214
21214
  }
21215
21215
 
21216
21216
  function useExpandableRows() {
@@ -21609,7 +21609,7 @@ function EditableCellContent({ col, row, value, isEditing, width, onEditValueCha
21609
21609
  return jsxRuntime.jsx(jsxRuntime.Fragment, { children: clipToWidth(stringValue, width) });
21610
21610
  }
21611
21611
 
21612
- function DataEditableTable({ data, columns, onRowClick, enableSelection = false, columnStyles = {}, onEditChange, onSaveRow, sortBy, setSortBy, sortOrder, setSortOrder, saving, selectedRows = [], onSelectionChange, isArchiveView = false, selectionInArchiveView = false, permissionKey = '', columnWidths, onColumnResize, pagination, fetchBusinessContacts, showGrid = true, }) {
21612
+ function DataEditableTable({ data, columns, onRowClick, enableSelection = false, columnStyles = {}, onEditChange, onSaveRow, sortBy, setSortBy, sortOrder, setSortOrder, saving, selectedRows = [], onSelectionChange, isArchiveView = false, selectionInArchiveView = false, permissionKey = '', columnWidths, onColumnResize, pagination, fetchBusinessContacts, showGrid = true, emptyState, }) {
21613
21613
  const showSelectionColumn = enableSelection && (!isArchiveView || selectionInArchiveView);
21614
21614
  const vBorder = showGrid ? 'border-r' : '';
21615
21615
  const { localWidths, draggingKey, tableRef, handleResizeMouseDown } = useColumnResize({
@@ -21633,77 +21633,73 @@ function DataEditableTable({ data, columns, onRowClick, enableSelection = false,
21633
21633
  setSortOrder('asc');
21634
21634
  }
21635
21635
  };
21636
- return (jsxRuntime.jsxs("div", { className: "w-full h-full rounded-lg border border-border bg-card flex flex-col overflow-hidden", children: [jsxRuntime.jsx("div", { className: "overflow-auto flex-1", children: jsxRuntime.jsxs("table", { ref: tableRef, className: "min-w-[70vh] w-full text-xs text-center border-separate", style: { borderSpacing: 0 }, children: [jsxRuntime.jsx("thead", { className: "sticky top-0 z-20 !bg-table-header border-b border-border text-secondary-foreground text-sm", children: jsxRuntime.jsxs("tr", { className: "h-[40px]", children: [!isArchiveView && (jsxRuntime.jsx("th", { className: cn('px-3 py-1.5 text-left font-semibold w-8 first:!pl-6 border-b border-solid !border-border', vBorder) })), showSelectionColumn && (jsxRuntime.jsx("th", { className: cn('px-3 py-1.5 text-center font-semibold first:!pl-6 border-b border-solid !border-border', vBorder), children: jsxRuntime.jsx(Checkbox, { checked: allSelected
21637
- ? true
21638
- : someSelected
21639
- ? 'indeterminate'
21640
- : false, onCheckedChange: toggleSelectAll }) })), columns.map((col) => {
21641
- const w = localWidths[col.key];
21642
- const isDragging = draggingKey === col.key;
21643
- const isPinnedRight = col.key === 'actions';
21644
- const thStyle = w || isDragging
21645
- ? {
21646
- width: `var(--col-w-${col.key})`,
21647
- minWidth: `var(--col-w-${col.key})`,
21648
- maxWidth: `var(--col-w-${col.key})`,
21649
- }
21650
- : isPinnedRight
21651
- ? { width: '72px', minWidth: '72px', maxWidth: '72px' }
21652
- : undefined;
21653
- return (jsxRuntime.jsxs("th", { className: cn('px-4 py-1.5 relative first:!pl-6 text-left whitespace-nowrap font-semibold text-sm border-b border-solid !border-border', vBorder, isArchiveView && !isPinnedRight && 'pl-1', col.sortable && '!cursor-pointer hover:bg-muted/60', isDragging && 'bg-primary/10', isPinnedRight && pinnedHeaderClass()), style: thStyle, onClick: () => handleColumnClick(col.key, col.sortable), children: [jsxRuntime.jsxs("div", { className: cn('gap-2', w && 'overflow-hidden', col.sortable && 'flex items-center !cursor-pointer', isPinnedRight && 'flex items-center justify-center'), children: [w && typeof col.header === 'string' ? (jsxRuntime.jsx("span", { className: "truncate", title: col.header, children: col.header })) : (col.header), col.sortable && (jsxRuntime.jsx(SortIcon, { active: sortBy === col.key, order: sortOrder }))] }), jsxRuntime.jsx("div", { className: cn('absolute right-0 top-0 h-full w-1.5 z-20 cursor-col-resize select-none transition-colors hover:bg-primary/40', isDragging && 'bg-primary/40'), onMouseDown: (e) => handleResizeMouseDown(e, col.key), onClick: (e) => e.stopPropagation() })] }, col.key.toString()));
21654
- })] }) }), jsxRuntime.jsx("tbody", { children: data.length === 0 ? (jsxRuntime.jsx("tr", { className: "h-12", children: jsxRuntime.jsx("td", { colSpan: columns.length +
21655
- (!isArchiveView ? 1 : 0) +
21656
- (showSelectionColumn ? 1 : 0), className: "text-center p-6 text-muted-foreground", children: "No data available" }) })) : (data.map((row, rowIndex) => {
21657
- const isEditing = editingRow === row.id && editingRow !== null;
21658
- const isSaving = savingRow === row.id;
21659
- const isSelected = selectedSet.has(row.id);
21660
- const bgClass = isEditing
21661
- ? 'bg-warning/10 hover:bg-warning/10'
21662
- : isSelected
21663
- ? 'bg-primary/10 hover:bg-primary/10'
21664
- : rowIndex % 2 === 0
21665
- ? 'bg-card hover:bg-secondary'
21666
- : 'bg-background hover:bg-secondary';
21667
- return (jsxRuntime.jsxs("tr", { className: cn('group/row h-[46px] transition-colors text-sm text-table-cell', bgClass, onRowClick && 'cursor-pointer'), onClick: () => onRowClick?.(row), children: [isArchiveView ? null : (jsxRuntime.jsx("td", { className: cn('px-3 py-1.5 text-center first:!pl-6 border-b border-solid !border-border', vBorder), children: jsxRuntime.jsx(Protected, { module: permissionKey, minLevel: PERMISSIONS.WRITE, children: jsxRuntime.jsx("button", { onClick: (e) => {
21668
- e.stopPropagation();
21669
- handleEditIconClick(row.id, row);
21670
- }, disabled: isSaving, className: cn('p-1 rounded hover:bg-primary/20 transition-colors !cursor-pointer', isEditing
21671
- ? 'text-success'
21672
- : 'text-muted-foreground'), children: isSaving ? (jsxRuntime.jsx(LoaderCircle, { size: 16, className: "animate-spin text-primary" })) : isEditing ? (jsxRuntime.jsx(Check, { size: 16 })) : (jsxRuntime.jsx(Pencil, { size: 16 })) }) }) })), showSelectionColumn && (jsxRuntime.jsx("td", { className: cn('px-3 py-1.5 first:!pl-6 border-b border-solid !border-border', vBorder), onClick: (e) => e.stopPropagation(), children: jsxRuntime.jsx(Checkbox, { checked: isSelected, onCheckedChange: () => toggleRow(row.id) }) })), columns.map((col) => {
21673
- const value = isEditing
21674
- ? editValues[col.key]
21675
- : row[col.key];
21636
+ return (jsxRuntime.jsxs("div", { className: "w-full h-full rounded-lg border border-border bg-card flex flex-col overflow-hidden", children: [jsxRuntime.jsxs("div", { className: "overflow-auto flex-1", children: [jsxRuntime.jsxs("table", { ref: tableRef, className: "min-w-[70vh] w-full text-xs text-center border-separate", style: { borderSpacing: 0 }, children: [jsxRuntime.jsx("thead", { className: "sticky top-0 z-20 !bg-table-header border-b border-border text-secondary-foreground text-sm", children: jsxRuntime.jsxs("tr", { className: "h-[40px]", children: [!isArchiveView && (jsxRuntime.jsx("th", { className: cn('px-3 py-1.5 text-left font-semibold w-8 first:!pl-6 border-b border-solid !border-border', vBorder) })), showSelectionColumn && (jsxRuntime.jsx("th", { className: cn('px-3 py-1.5 text-center font-semibold first:!pl-6 border-b border-solid !border-border', vBorder), children: jsxRuntime.jsx(Checkbox, { checked: allSelected
21637
+ ? true
21638
+ : someSelected
21639
+ ? 'indeterminate'
21640
+ : false, onCheckedChange: toggleSelectAll }) })), columns.map((col) => {
21676
21641
  const w = localWidths[col.key];
21642
+ const isDragging = draggingKey === col.key;
21677
21643
  const isPinnedRight = col.key === 'actions';
21678
- const tdStyle = w || draggingKey === col.key
21644
+ const thStyle = w || isDragging
21679
21645
  ? {
21680
21646
  width: `var(--col-w-${col.key})`,
21681
21647
  minWidth: `var(--col-w-${col.key})`,
21682
21648
  maxWidth: `var(--col-w-${col.key})`,
21683
21649
  }
21684
21650
  : isPinnedRight
21651
+ ? { width: '72px', minWidth: '72px', maxWidth: '72px' }
21652
+ : undefined;
21653
+ return (jsxRuntime.jsxs("th", { className: cn('px-4 py-1.5 relative first:!pl-6 text-left whitespace-nowrap font-semibold text-sm border-b border-solid !border-border', vBorder, isArchiveView && !isPinnedRight && 'pl-1', col.sortable && '!cursor-pointer hover:bg-muted/60', isDragging && 'bg-primary/10', isPinnedRight && pinnedHeaderClass()), style: thStyle, onClick: () => handleColumnClick(col.key, col.sortable), children: [jsxRuntime.jsxs("div", { className: cn('gap-2', w && 'overflow-hidden', col.sortable && 'flex items-center !cursor-pointer', isPinnedRight && 'flex items-center justify-center'), children: [w && typeof col.header === 'string' ? (jsxRuntime.jsx("span", { className: "truncate", title: col.header, children: col.header })) : (col.header), col.sortable && (jsxRuntime.jsx(SortIcon, { active: sortBy === col.key, order: sortOrder }))] }), jsxRuntime.jsx("div", { className: cn('absolute right-0 top-0 h-full w-1.5 z-20 cursor-col-resize select-none transition-colors hover:bg-primary/40', isDragging && 'bg-primary/40'), onMouseDown: (e) => handleResizeMouseDown(e, col.key), onClick: (e) => e.stopPropagation() })] }, col.key.toString()));
21654
+ })] }) }), jsxRuntime.jsx("tbody", { children: data.map((row, rowIndex) => {
21655
+ const isEditing = editingRow === row.id && editingRow !== null;
21656
+ const isSaving = savingRow === row.id;
21657
+ const isSelected = selectedSet.has(row.id);
21658
+ const bgClass = isEditing
21659
+ ? 'bg-warning/10 hover:bg-warning/10'
21660
+ : isSelected
21661
+ ? 'bg-primary/10 hover:bg-primary/10'
21662
+ : rowIndex % 2 === 0
21663
+ ? 'bg-card hover:bg-secondary'
21664
+ : 'bg-background hover:bg-secondary';
21665
+ return (jsxRuntime.jsxs("tr", { className: cn('group/row h-[46px] transition-colors text-sm text-table-cell', bgClass, onRowClick && 'cursor-pointer'), onClick: () => onRowClick?.(row), children: [isArchiveView ? null : (jsxRuntime.jsx("td", { className: cn('px-3 py-1.5 text-center first:!pl-6 border-b border-solid !border-border', vBorder), children: jsxRuntime.jsx(Protected, { module: permissionKey, minLevel: PERMISSIONS.WRITE, children: jsxRuntime.jsx("button", { onClick: (e) => {
21666
+ e.stopPropagation();
21667
+ handleEditIconClick(row.id, row);
21668
+ }, disabled: isSaving, className: cn('p-1 rounded hover:bg-primary/20 transition-colors !cursor-pointer', isEditing ? 'text-success' : 'text-muted-foreground'), children: isSaving ? (jsxRuntime.jsx(LoaderCircle, { size: 16, className: "animate-spin text-primary" })) : isEditing ? (jsxRuntime.jsx(Check, { size: 16 })) : (jsxRuntime.jsx(Pencil, { size: 16 })) }) }) })), showSelectionColumn && (jsxRuntime.jsx("td", { className: cn('px-3 py-1.5 first:!pl-6 border-b border-solid !border-border', vBorder), onClick: (e) => e.stopPropagation(), children: jsxRuntime.jsx(Checkbox, { checked: isSelected, onCheckedChange: () => toggleRow(row.id) }) })), columns.map((col) => {
21669
+ const value = isEditing
21670
+ ? editValues[col.key]
21671
+ : row[col.key];
21672
+ const w = localWidths[col.key];
21673
+ const isPinnedRight = col.key === 'actions';
21674
+ const tdStyle = w || draggingKey === col.key
21685
21675
  ? {
21686
- width: '72px',
21687
- minWidth: '72px',
21688
- maxWidth: '72px',
21676
+ width: `var(--col-w-${col.key})`,
21677
+ minWidth: `var(--col-w-${col.key})`,
21678
+ maxWidth: `var(--col-w-${col.key})`,
21689
21679
  }
21690
- : undefined;
21691
- // Pinned cells need an OPAQUE bg matching the row state so the
21692
- // scrolling content underneath doesn't bleed through — no alpha tints.
21693
- const pinnedBg = isPinnedRight
21694
- ? isEditing
21695
- ? 'bg-[#FEFCE8] dark:bg-[#422006]'
21696
- : isSelected
21697
- ? 'bg-[#EFF6FF] dark:bg-[#172554]'
21698
- : 'bg-card group-hover/row:bg-table-header'
21699
- : '';
21700
- return (jsxRuntime.jsx("td", { className: cn('px-4 py-1.5 first:!pl-6 border-b border-border whitespace-nowrap text-table-cell border-solid !border-border', vBorder, isPinnedRight || col.align === 'center'
21701
- ? 'text-center'
21702
- : typeof value === 'number'
21703
- ? 'text-right'
21704
- : 'text-left', isArchiveView && !isPinnedRight && 'pl-2', columnStyles?.[col.key.toString()] || '', draggingKey === col.key && 'bg-primary/5', isPinnedRight && pinnedCellClass(pinnedBg)), style: tdStyle, children: jsxRuntime.jsx(EditableCellContent, { col: col, row: row, value: value, isEditing: isEditing, width: w, onEditValueChange: handleEditValueChange, fetchBusinessContacts: fetchBusinessContacts }) }, col.key.toString()));
21705
- })] }, row.id));
21706
- })) })] }) }), pagination] }));
21680
+ : isPinnedRight
21681
+ ? {
21682
+ width: '72px',
21683
+ minWidth: '72px',
21684
+ maxWidth: '72px',
21685
+ }
21686
+ : undefined;
21687
+ // Pinned cells need an OPAQUE bg matching the row state so the
21688
+ // scrolling content underneath doesn't bleed through — no alpha tints.
21689
+ const pinnedBg = isPinnedRight
21690
+ ? isEditing
21691
+ ? 'bg-[#FEFCE8] dark:bg-[#422006]'
21692
+ : isSelected
21693
+ ? 'bg-[#EFF6FF] dark:bg-[#172554]'
21694
+ : 'bg-card group-hover/row:bg-table-header'
21695
+ : '';
21696
+ return (jsxRuntime.jsx("td", { className: cn('px-4 py-1.5 first:!pl-6 border-b border-border whitespace-nowrap text-table-cell border-solid !border-border', vBorder, isPinnedRight || col.align === 'center'
21697
+ ? 'text-center'
21698
+ : typeof value === 'number'
21699
+ ? 'text-right'
21700
+ : 'text-left', isArchiveView && !isPinnedRight && 'pl-2', columnStyles?.[col.key.toString()] || '', draggingKey === col.key && 'bg-primary/5', isPinnedRight && pinnedCellClass(pinnedBg)), style: tdStyle, children: jsxRuntime.jsx(EditableCellContent, { col: col, row: row, value: value, isEditing: isEditing, width: w, onEditValueChange: handleEditValueChange, fetchBusinessContacts: fetchBusinessContacts }) }, col.key.toString()));
21701
+ })] }, row.id));
21702
+ }) })] }), data.length === 0 && (jsxRuntime.jsx("div", { className: "sticky left-0 flex w-full items-center justify-center p-6 text-sm text-muted-foreground", children: emptyState ?? 'No data available' }))] }), pagination] }));
21707
21703
  }
21708
21704
 
21709
21705
  /**
@@ -37177,7 +37173,7 @@ function SelectTrigger({ className, size = 'default', children, ...props }) {
37177
37173
  return (jsxRuntime.jsxs(SelectPrimitive__namespace.Trigger, { "data-slot": "select-trigger", "data-size": size, className: cn("border-input-border cursor-pointer data-[placeholder]:!text-[var(--placeholder)] data-[placeholder]:!text-sm [&_[data-placeholder]]:!text-[var(--placeholder)] [&_[data-placeholder]]:!text-sm [&_span[data-placeholder]]:!text-[var(--placeholder)] [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-full items-center justify-between gap-2 rounded-md border bg-input-background px-3 py-2 text-sm whitespace-nowrap shadow-[0_1px_2px_0_rgba(0,0,0,0.05)] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:bg-muted/50 disabled:text-label data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className), ...props, children: [children, jsxRuntime.jsx(SelectPrimitive__namespace.Icon, { asChild: true, children: jsxRuntime.jsx(ChevronDown, { className: "size-4 text-gray-600" }) })] }));
37178
37174
  }
37179
37175
  function SelectContent({ className, children, position = 'popper', searchable = true, // default: all selects are searchable
37180
- searchPlaceholder = 'Search...', ...props }) {
37176
+ searchPlaceholder = 'Search...', emptyMessage = 'No options available', ...props }) {
37181
37177
  // Use the shared search context provided by Select root
37182
37178
  const searchCtx = useSelectSearchContext();
37183
37179
  const searchTerm = searchCtx?.searchTerm ?? '';
@@ -37189,7 +37185,9 @@ searchPlaceholder = 'Search...', ...props }) {
37189
37185
  return (jsxRuntime.jsx(SelectPrimitive__namespace.Portal, { children: jsxRuntime.jsxs(SelectPrimitive__namespace.Content, { "data-slot": "select-content", className: cn('bg-card cursor-pointer text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg border border-border shadow-[0_10px_15px_-3px_rgba(0,0,0,0.10),0_4px_6px_-4px_rgba(0,0,0,0.10)]', position === 'popper' &&
37190
37186
  'data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1', className), position: position, ...props, children: [searchable && (jsxRuntime.jsx("div", { className: "p-2 pb-1", children: jsxRuntime.jsxs("div", { className: "flex h-9 w-full items-center gap-2 rounded-lg bg-secondary px-3", children: [jsxRuntime.jsx(Search, { className: "h-4 w-4 shrink-0 text-[#737373]", "aria-hidden": "true" }), jsxRuntime.jsx("input", { type: "search", className: "min-w-0 flex-1 bg-transparent text-sm text-foreground outline-none placeholder:text-placeholder", placeholder: searchPlaceholder, value: searchTerm, onChange: (e) => setSearchTerm?.(e.target.value),
37191
37187
  // prevent keys from interfering with Radix keyboard nav
37192
- onKeyDown: (e) => e.stopPropagation() })] }) })), jsxRuntime.jsx(SelectScrollUpButton, {}), jsxRuntime.jsx(SelectPrimitive__namespace.Viewport, { className: cn('p-1 max-h-[12.5rem] overflow-y-auto', position === 'popper' &&
37188
+ onKeyDown: (e) => e.stopPropagation() })] }) })), jsxRuntime.jsx(SelectScrollUpButton, {}), jsxRuntime.jsx(SelectPrimitive__namespace.Viewport, { "data-slot": "select-viewport", style: {
37189
+ '--select-empty-message': JSON.stringify(searchTerm ? 'No matching options' : emptyMessage),
37190
+ }, className: cn('p-1 max-h-[12.5rem] overflow-y-auto', 'empty:after:block empty:after:px-2 empty:after:py-4 empty:after:text-center empty:after:text-sm empty:after:text-muted-foreground empty:after:content-(--select-empty-message)', position === 'popper' &&
37193
37191
  'w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1'), children: children }), jsxRuntime.jsx(SelectScrollDownButton, {})] }) }));
37194
37192
  }
37195
37193
  // 👇 Add searchValue + withCheckbox props here
@@ -66692,16 +66690,43 @@ const buildFacebookUrl = (url) => `https://www.facebook.com/sharer/sharer.php?u=
66692
66690
  const buildXUrl = (text, url) => `https://twitter.com/intent/tweet?text=${encodeURIComponent(text)}&url=${encodeURIComponent(url)}`;
66693
66691
  const isWebShareAvailable = () => typeof navigator !== 'undefined' && typeof navigator.share === 'function';
66694
66692
  const isValidEmail = (value) => /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value.trim());
66693
+ /**
66694
+ * Bulk share message: the title, then one numbered entry per item with its
66695
+ * caption above its link. Blank lines between entries stop chat clients from
66696
+ * running the links together.
66697
+ */
66698
+ const buildBulkShareMessage = (title, items) => [
66699
+ title,
66700
+ ...items.map((item, index) => `\n${index + 1}. ${item.label}\n${item.url}`),
66701
+ ].join('\n');
66695
66702
 
66696
66703
  const WhatsappIcon = ({ className }) => (jsxRuntime.jsxs("svg", { viewBox: "0 0 24 24", fill: "currentColor", "aria-hidden": "true", className: className, children: [jsxRuntime.jsx("path", { d: "M17.5 14.4c-.3-.1-1.7-.8-1.9-.9-.3-.1-.5-.1-.7.1s-.8.9-1 1.1-.4.2-.7.1c-1.6-.8-2.7-1.4-3.7-3.2-.3-.5.3-.5.8-1.5.1-.2.1-.4 0-.5l-.9-2.1c-.2-.6-.5-.5-.7-.5h-.6c-.2 0-.5.1-.8.4-.3.3-1 1-1 2.5s1.1 2.9 1.2 3.1c.2.2 2.2 3.3 5.3 4.6 2 .8 2.7.9 3.7.8.6-.1 1.7-.7 1.9-1.3.2-.7.2-1.2.2-1.3-.1-.2-.3-.3-.6-.4Z" }), jsxRuntime.jsx("path", { d: "M20 4A11 11 0 0 0 4 4a10.9 10.9 0 0 0-1.7 13.4L1 23l5.7-1.5A11 11 0 0 0 23 12 10.9 10.9 0 0 0 20 4Zm-8 18a9.1 9.1 0 0 1-4.6-1.3l-.3-.2-3.4.9.9-3.3-.2-.4A9 9 0 1 1 12 22Z" })] }));
66697
66704
  const SocialTile = ({ icon, label, bg, fg, onClick }) => (jsxRuntime.jsxs("button", { type: "button", onClick: onClick, className: "flex cursor-pointer flex-col items-center gap-2 focus-visible:outline-none", children: [jsxRuntime.jsx("span", { className: cn('flex h-12 w-12 items-center justify-center rounded-full transition-transform hover:scale-105', bg, fg), children: icon }), jsxRuntime.jsx("span", { className: "text-xs text-foreground", children: label })] }));
66698
- const ShareBody = ({ url, urls, title = 'Check this out', entityLabel = 'item', onInviteEmail, hideInvite = false, hideHeader = false, }) => {
66705
+ const ShareBody = ({ url, urls, items, title = 'Check this out', entityLabel = 'item', onInviteEmail, hideInvite = false, hideHeader = false, }) => {
66699
66706
  const [email, setEmail] = React.useState('');
66700
66707
  const [sending, setSending] = React.useState(false);
66701
- const isMulti = (urls?.length ?? 0) > 0;
66702
- const shareUrls = isMulti ? (urls ?? []) : url ? [url] : [];
66708
+ const shareItems = items ?? [];
66709
+ const isMulti = shareItems.length > 0 || (urls?.length ?? 0) > 0;
66710
+ const shareUrls = shareItems.length
66711
+ ? shareItems.map((item) => item.url)
66712
+ : isMulti
66713
+ ? (urls ?? [])
66714
+ : url
66715
+ ? [url]
66716
+ : [];
66703
66717
  const hasContent = shareUrls.length > 0;
66704
- const shareBody = isMulti ? [title, ...shareUrls].join('\n') : url;
66718
+ // Captioned items read as a numbered list; bare urls keep the older format.
66719
+ const shareBody = shareItems.length
66720
+ ? buildBulkShareMessage(title, shareItems)
66721
+ : isMulti
66722
+ ? [title, ...shareUrls].join('\n')
66723
+ : url;
66724
+ /**
66725
+ * What chat apps receive. A single share puts its link on its own line, the
66726
+ * same shape as one entry of a bulk message — glued to the caption it reads
66727
+ * as one run-on sentence. Copy Link still copies the bare url.
66728
+ */
66729
+ const shareMessage = isMulti ? shareBody : [title, url].filter(Boolean).join('\n');
66705
66730
  const openInPopup = (href) => {
66706
66731
  if (!hasContent)
66707
66732
  return;
@@ -66728,7 +66753,7 @@ const ShareBody = ({ url, urls, title = 'Check this out', entityLabel = 'item',
66728
66753
  return;
66729
66754
  }
66730
66755
  try {
66731
- await navigator.share(isMulti ? { title, text: shareBody } : { url, title });
66756
+ await navigator.share(isMulti ? { title, text: shareMessage } : { url, title, text: shareMessage });
66732
66757
  }
66733
66758
  catch (e) {
66734
66759
  const err = e;
@@ -66763,16 +66788,14 @@ const ShareBody = ({ url, urls, title = 'Check this out', entityLabel = 'item',
66763
66788
  };
66764
66789
  return (jsxRuntime.jsxs("div", { className: "flex flex-col gap-3", children: [!hideHeader && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs("header", { className: "flex flex-col gap-1", children: [jsxRuntime.jsx("h3", { className: "text-base font-semibold text-foreground", children: "Share" }), jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground", children: isMulti
66765
66790
  ? `Anyone with these links can open the public view of the selected ${entityLabel}s.`
66766
- : `Anyone with the link can open the public view of this ${entityLabel}.` })] }), jsxRuntime.jsx(Separator, {})] })), jsxRuntime.jsxs("section", { className: "flex flex-col gap-3", children: [jsxRuntime.jsx("h4", { className: "text-sm font-medium text-foreground", children: "Social" }), jsxRuntime.jsxs("div", { className: "grid grid-cols-3 gap-3", children: [jsxRuntime.jsx(SocialTile, { icon: jsxRuntime.jsx(WhatsappIcon, { className: "h-6 w-6" }), label: "Whatsapp", bg: "bg-[#25D366]", fg: "text-white", onClick: () => openInPopup(isMulti
66767
- ? buildWhatsappUrl('', shareBody)
66768
- : buildWhatsappUrl(title, url)) }), !isMulti && (jsxRuntime.jsx(SocialTile, { icon: jsxRuntime.jsx(Facebook, { className: "h-6 w-6", fill: "currentColor" }), label: "Facebook", bg: "bg-[#1877F2]", fg: "text-white", onClick: () => openInPopup(buildFacebookUrl(url)) })), !isMulti && (jsxRuntime.jsx(SocialTile, { icon: jsxRuntime.jsx(X$2, { className: "h-6 w-6", strokeWidth: 2.5 }), label: "X", bg: "bg-black", fg: "text-white", onClick: () => openInPopup(buildXUrl(title, url)) })), jsxRuntime.jsx(SocialTile, { icon: jsxRuntime.jsx(Link2, { className: "h-6 w-6", strokeWidth: 1.5 }), label: "Copy Link", bg: "bg-muted", fg: "text-foreground", onClick: handleCopy }), jsxRuntime.jsx(SocialTile, { icon: jsxRuntime.jsx(Share2, { className: "h-6 w-6", strokeWidth: 1.5 }), label: "System Share", bg: "bg-muted", fg: "text-foreground", onClick: handleSystemShare })] })] }), !hideInvite && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(Separator, {}), jsxRuntime.jsxs("section", { className: "flex flex-col gap-2", children: [jsxRuntime.jsx("h4", { className: "text-sm font-medium text-foreground", children: "Invite your Merchants" }), jsxRuntime.jsxs("form", { className: "flex items-center gap-2", onSubmit: (e) => {
66791
+ : `Anyone with the link can open the public view of this ${entityLabel}.` })] }), jsxRuntime.jsx(Separator, {})] })), jsxRuntime.jsxs("section", { className: "flex flex-col gap-3", children: [jsxRuntime.jsx("h4", { className: "text-sm font-medium text-foreground", children: "Social" }), jsxRuntime.jsxs("div", { className: "grid grid-cols-3 gap-3", children: [jsxRuntime.jsx(SocialTile, { icon: jsxRuntime.jsx(WhatsappIcon, { className: "h-6 w-6" }), label: "Whatsapp", bg: "bg-[#25D366]", fg: "text-white", onClick: () => openInPopup(buildWhatsappUrl('', shareMessage)) }), !isMulti && (jsxRuntime.jsx(SocialTile, { icon: jsxRuntime.jsx(Facebook, { className: "h-6 w-6", fill: "currentColor" }), label: "Facebook", bg: "bg-[#1877F2]", fg: "text-white", onClick: () => openInPopup(buildFacebookUrl(url)) })), !isMulti && (jsxRuntime.jsx(SocialTile, { icon: jsxRuntime.jsx(X$2, { className: "h-6 w-6", strokeWidth: 2.5 }), label: "X", bg: "bg-black", fg: "text-white", onClick: () => openInPopup(buildXUrl(title, url)) })), jsxRuntime.jsx(SocialTile, { icon: jsxRuntime.jsx(Link2, { className: "h-6 w-6", strokeWidth: 1.5 }), label: "Copy Link", bg: "bg-muted", fg: "text-foreground", onClick: handleCopy }), jsxRuntime.jsx(SocialTile, { icon: jsxRuntime.jsx(Share2, { className: "h-6 w-6", strokeWidth: 1.5 }), label: "System Share", bg: "bg-muted", fg: "text-foreground", onClick: handleSystemShare })] })] }), !hideInvite && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(Separator, {}), jsxRuntime.jsxs("section", { className: "flex flex-col gap-2", children: [jsxRuntime.jsx("h4", { className: "text-sm font-medium text-foreground", children: "Invite your Merchants" }), jsxRuntime.jsxs("form", { className: "flex items-center gap-2", onSubmit: (e) => {
66769
66792
  e.preventDefault();
66770
66793
  void handleSend();
66771
66794
  }, children: [jsxRuntime.jsx("input", { type: "email", value: email, onChange: (e) => setEmail(e.target.value), placeholder: "Example@gmail.com", className: "flex-1 rounded-md border border-border bg-input-background px-3 py-2 text-sm text-foreground outline-none placeholder:text-muted-foreground focus:border-primary focus:ring-2 focus:ring-primary/10" }), jsxRuntime.jsx(Button$1, { type: "submit", size: "sm", style: { width: '118px' }, className: "bg-primary text-primary-foreground hover:bg-primary/90", disabled: sending, children: sending ? 'Sending…' : 'Send' })] })] })] }))] }));
66772
66795
  };
66773
- const ShareMenu = ({ children, url, urls, title, entityLabel, onInviteEmail, hideInvite, side = 'bottom', align = 'end', open, onOpenChange, }) => (jsxRuntime.jsxs(Popover, { open: open, onOpenChange: onOpenChange, children: [jsxRuntime.jsx(PopoverTrigger, { asChild: true, children: children }), jsxRuntime.jsx(PopoverContent, { side: side, align: align, sideOffset: 8, className: "w-[360px] p-4", children: jsxRuntime.jsx(ShareBody, { url: url, urls: urls, title: title, entityLabel: entityLabel, onInviteEmail: onInviteEmail, hideInvite: hideInvite }) })] }));
66774
- const ShareDialog = ({ open, onOpenChange, url, urls, title, entityLabel = 'item', onInviteEmail, hideInvite, stockId, }) => {
66775
- const count = urls?.length ?? 0;
66796
+ const ShareMenu = ({ children, url, urls, items, title, entityLabel, onInviteEmail, hideInvite, side = 'bottom', align = 'end', open, onOpenChange, }) => (jsxRuntime.jsxs(Popover, { open: open, onOpenChange: onOpenChange, children: [jsxRuntime.jsx(PopoverTrigger, { asChild: true, children: children }), jsxRuntime.jsx(PopoverContent, { side: side, align: align, sideOffset: 8, className: "w-[360px] p-4", children: jsxRuntime.jsx(ShareBody, { url: url, urls: urls, items: items, title: title, entityLabel: entityLabel, onInviteEmail: onInviteEmail, hideInvite: hideInvite }) })] }));
66797
+ const ShareDialog = ({ open, onOpenChange, url, urls, items, title, entityLabel = 'item', onInviteEmail, hideInvite, stockId, }) => {
66798
+ const count = items?.length ?? urls?.length ?? 0;
66776
66799
  const isMulti = count > 0;
66777
66800
  const trimmedStockId = stockId?.trim();
66778
66801
  const heading = isMulti
@@ -66782,7 +66805,7 @@ const ShareDialog = ({ open, onOpenChange, url, urls, title, entityLabel = 'item
66782
66805
  : 'Share';
66783
66806
  return (jsxRuntime.jsx(Dialog, { open: open, onOpenChange: onOpenChange, children: jsxRuntime.jsxs(DialogContent, { className: "sm:max-w-[400px]", children: [jsxRuntime.jsxs(DialogHeader, { children: [jsxRuntime.jsx(DialogTitle, { children: heading }), jsxRuntime.jsx(DialogDescription, { children: isMulti
66784
66807
  ? `Anyone with these links can open the public view of the selected ${entityLabel}s.`
66785
- : `Anyone with the link can open the public view of this ${entityLabel}.` })] }), jsxRuntime.jsx(ShareBody, { url: url, urls: urls, title: title, entityLabel: entityLabel, onInviteEmail: onInviteEmail, hideInvite: hideInvite, hideHeader: true })] }) }));
66808
+ : `Anyone with the link can open the public view of this ${entityLabel}.` })] }), jsxRuntime.jsx(ShareBody, { url: url, urls: urls, items: items, title: title, entityLabel: entityLabel, onInviteEmail: onInviteEmail, hideInvite: hideInvite, hideHeader: true })] }) }));
66786
66809
  };
66787
66810
 
66788
66811
  const Table = React__namespace.forwardRef(({ className, ...props }, ref) => (jsxRuntime.jsx("table", { ref: ref, className: cn('w-full text-sm text-left border-collapse', className), ...props })));
@@ -77832,6 +77855,7 @@ exports.ZoomSplitViewer = ZoomSplitViewer;
77832
77855
  exports.asList = asList;
77833
77856
  exports.asText = asText;
77834
77857
  exports.badgeVariants = badgeVariants;
77858
+ exports.buildBulkShareMessage = buildBulkShareMessage;
77835
77859
  exports.buildBulkShareTitle = buildBulkShareTitle;
77836
77860
  exports.buildInventoryPublicUrl = buildInventoryPublicUrl;
77837
77861
  exports.buildInventoryRowProps = buildInventoryRowProps;