@epam/ai-dial-attachment-input 1.3.0-dev.6 → 1.3.0-dev.63

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.
@@ -1 +1 @@
1
- {"version":3,"file":"AttachmentCard.d.ts","sourceRoot":"","sources":["../../../src/components/AttachmentCard/AttachmentCard.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,EAAW,MAAM,OAAO,CAAC;AACzC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAKxE,8GAA8G;AAC9G,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,mBAAmB,CAwElD,CAAC"}
1
+ {"version":3,"file":"AttachmentCard.d.ts","sourceRoot":"","sources":["../../../src/components/AttachmentCard/AttachmentCard.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,EAAW,MAAM,OAAO,CAAC;AACzC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAKxE,8GAA8G;AAC9G,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,mBAAmB,CAyElD,CAAC"}
@@ -14,6 +14,8 @@ interface ActionProps {
14
14
  onClick: (id: string) => void;
15
15
  /** ID of the attachment the action applies to. */
16
16
  id?: string;
17
+ /** Whether the button stays visible without hover or keyboard focus on the tile. */
18
+ isAlwaysVisible?: boolean;
17
19
  }
18
20
  /** Retry button for failed uploads. */
19
21
  export declare const ReloadAction: FC<Omit<ActionProps, 'icon'>>;
@@ -21,7 +23,7 @@ export declare const ReloadAction: FC<Omit<ActionProps, 'icon'>>;
21
23
  export declare const DownloadAction: FC<Omit<ActionProps, 'icon'>>;
22
24
  /** Open-in-new-tab button for link attachments. */
23
25
  export declare const OpenLinkAction: FC<Omit<ActionProps, 'icon'>>;
24
- /** Remove button for attachments. */
26
+ /** Remove button for attachments; always visible below the desktop breakpoint, where there is no hover to reveal it. */
25
27
  export declare const RemoveAction: FC<Omit<ActionProps, 'icon'>>;
26
28
  export {};
27
29
  //# sourceMappingURL=Actions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Actions.d.ts","sourceRoot":"","sources":["../../../../src/components/AttachmentCard/Attachments/Actions.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,EAAmB,MAAM,OAAO,CAAC;AAI5D,UAAU,WAAW;IACnB,wCAAwC;IACxC,IAAI,EAAE,SAAS,CAAC;IAChB,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sDAAsD;IACtD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8CAA8C;IAC9C,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,kDAAkD;IAClD,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAgCD,uCAAuC;AACvC,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CActD,CAAC;AAEF,6CAA6C;AAC7C,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAaxD,CAAC;AAEF,mDAAmD;AACnD,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAaxD,CAAC;AAEF,qCAAqC;AACrC,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAatD,CAAC"}
1
+ {"version":3,"file":"Actions.d.ts","sourceRoot":"","sources":["../../../../src/components/AttachmentCard/Attachments/Actions.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,EAAmB,MAAM,OAAO,CAAC;AAI5D,UAAU,WAAW;IACnB,wCAAwC;IACxC,IAAI,EAAE,SAAS,CAAC;IAChB,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sDAAsD;IACtD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8CAA8C;IAC9C,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,kDAAkD;IAClD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,oFAAoF;IACpF,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAmCD,uCAAuC;AACvC,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CActD,CAAC;AAEF,6CAA6C;AAC7C,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAaxD,CAAC;AAEF,mDAAmD;AACnD,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAaxD,CAAC;AAEF,wHAAwH;AACxH,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAiBtD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"File.d.ts","sourceRoot":"","sources":["../../../../src/components/AttachmentCard/Attachments/File.tsx"],"names":[],"mappings":"AAMA,OAAO,EACL,KAAK,EAAE,EAMR,MAAM,OAAO,CAAC;AAGf,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAoB/E,2HAA2H;AAC3H,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,mBAAmB,CAyQlD,CAAC"}
1
+ {"version":3,"file":"File.d.ts","sourceRoot":"","sources":["../../../../src/components/AttachmentCard/Attachments/File.tsx"],"names":[],"mappings":"AAaA,OAAO,EACL,KAAK,EAAE,EAMR,MAAM,OAAO,CAAC;AAMf,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAsB/E,2HAA2H;AAC3H,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,mBAAmB,CAyRlD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Image.d.ts","sourceRoot":"","sources":["../../../../src/components/AttachmentCard/Attachments/Image.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,iBAAiB,EAElB,MAAM,2BAA2B,CAAC;AAQnC,OAAO,EACL,aAAa,EACb,KAAK,EAAE,EAIR,MAAM,OAAO,CAAC;AAOf,OAAO,KAAK,EACV,oBAAoB,EACpB,oBAAoB,EACrB,MAAM,iCAAiC,CAAC;AAKzC,UAAU,oBAAoB;IAC5B,UAAU,EAAE,iBAAiB,CAAC;IAC9B,QAAQ,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,QAAQ,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,uHAAuH;IACvH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,0EAA0E;AAC1E,eAAO,MAAM,eAAe,EAAE,EAAE,CAAC,oBAAoB,CA6IpD,CAAC"}
1
+ {"version":3,"file":"Image.d.ts","sourceRoot":"","sources":["../../../../src/components/AttachmentCard/Attachments/Image.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,iBAAiB,EAElB,MAAM,2BAA2B,CAAC;AASnC,OAAO,EACL,aAAa,EACb,KAAK,EAAE,EAIR,MAAM,OAAO,CAAC;AAUf,OAAO,KAAK,EACV,oBAAoB,EACpB,oBAAoB,EACrB,MAAM,iCAAiC,CAAC;AAKzC,UAAU,oBAAoB;IAC5B,UAAU,EAAE,iBAAiB,CAAC;IAC9B,QAAQ,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,QAAQ,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,uHAAuH;IACvH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,0EAA0E;AAC1E,eAAO,MAAM,eAAe,EAAE,EAAE,CAAC,oBAAoB,CAwKpD,CAAC"}
@@ -1,5 +1,7 @@
1
1
  /** Total attachment count at/above which the tile list switches from a wrapping flex row to a fixed 5-column grid. */
2
2
  export declare const ATTACHMENT_COLLAPSE_THRESHOLD = 5;
3
- /** Base Tailwind classes shared by every square attachment tile (84 × 84 px). */
4
- export declare const ATTACHMENT_TILE_BASE_CLASS = "flex size-[84px] items-center justify-center rounded-xl border";
3
+ /** Base Tailwind classes shared by every square attachment tile (100 × 100 px). */
4
+ export declare const ATTACHMENT_TILE_BASE_CLASS = "flex size-[100px] items-center justify-center rounded-xl border";
5
+ /** Tailwind classes drawing the 1px tile focus ring, 1px clear of the border, on keyboard focus of the tile itself. */
6
+ export declare const ATTACHMENT_TILE_FOCUS_RING_CLASS = "outline-1 outline-offset-1 focus-visible:outline";
5
7
  //# sourceMappingURL=attachment-group.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"attachment-group.d.ts","sourceRoot":"","sources":["../../src/constants/attachment-group.ts"],"names":[],"mappings":"AAAA,sHAAsH;AACtH,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAC/C,iFAAiF;AACjF,eAAO,MAAM,0BAA0B,mEAC2B,CAAC"}
1
+ {"version":3,"file":"attachment-group.d.ts","sourceRoot":"","sources":["../../src/constants/attachment-group.ts"],"names":[],"mappings":"AAAA,sHAAsH;AACtH,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAC/C,mFAAmF;AACnF,eAAO,MAAM,0BAA0B,oEAC4B,CAAC;AACpE,uHAAuH;AACvH,eAAO,MAAM,gCAAgC,qDACO,CAAC"}
package/index.css CHANGED
@@ -1,2 +1,2 @@
1
- ._tile_1tdbq_12{box-sizing:border-box;background:var(--ai-tile-bg,var(--bg-layer-raised,#fcfcfc));border-style:solid;border-color:var(--ai-tile-border,var(--stroke-secondary,#d1dbea))}._tile_1tdbq_12._hovered_1tdbq_18:hover{background:var(--ai-tile-bg-hover,var(--bg-control-neutral-hover-muted,#e0e6f0));border-color:var(--ai-tile-border-hover,var(--ai-tile-border,var(--stroke-secondary,#d1dbea)))}._tile_1tdbq_12:focus-visible{outline-color:var(--ai-tile-focus-outline,var(--stroke-focus,#161b2d))}._selected_1tdbq_28{background:var(--ai-tile-bg-selected,var(--bg-control-accent-alpha,#2764d90f));border-color:var(--ai-tile-border-selected,var(--stroke-accent-alpha,#2764d933))}._tileError_1tdbq_33{background:var(--ai-tile-bg-error,var(--bg-error,#f3d6d8));border-color:var(--ai-tile-border-error,var(--stroke-error,#ae2f2f))}._nameText_1tdbq_38{color:var(--ai-tile-name-text,var(--text-primary,#161b2d))}._typeText_1tdbq_42{color:var(--ai-tile-type-text,var(--text-secondary,#57647a))}._retryIcon_1tdbq_46{color:var(--ai-tile-error-text,var(--text-error,#ae2f2f))}._track_1tdbq_50{background:var(--ai-tile-progress-track,var(--bg-backdrop,#161b2d4d))}._actionButton_1tdbq_56{background:var(--ai-tile-hover-icon-bg,var(--bg-control-neutral-hover-muted,#e0e6f0))}._imageActionButton_1tdbq_60{background:var(--ai-tile-hover-icon-bg,var(--bg-layer-base,#f5f7fa));color:var(--ai-tile-hover-icon-color,var(--text-secondary,#57647a))}._headerIcon_1dmgi_1,._headerLabel_1dmgi_2{color:var(--ai-group-text,var(--text-secondary,#57647a))}._overlay_mzpdp_1{background:var(--ai-fd-bg,var(--bg-backdrop,#161b2d4d))}._icon_mzpdp_5{color:var(--ai-fd-icon,var(--text-accent,#1d4ed8))}._deniedIcon_mzpdp_9{color:var(--ai-fd-denied-icon,var(--text-error,#ae2f2f))}
2
- /*$vite$:1*/.sr-only{height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0,0,0,0);border-width:0;white-space:nowrap}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.end-1{inset-inline-end:.25rem}.start-\[-1px\]{inset-inline-start:-1px}.top-1{top:.25rem}.top-\[-1px\]{top:-1px}.z-10{z-index:10}.z-\[9999\]{z-index:9999}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.line-clamp-2{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.size-\[84px\]{height:84px;width:84px}.size-full{width:100%}.h-full,.size-full{height:100%}.w-full{width:100%}.min-w-0{min-width:0}.max-w-\[420px\]{max-width:420px}.max-w-\[492px\]{max-width:492px}.flex-1{flex:1 1 0%}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.grid-cols-\[repeat\(5\2c 83px\)\]{grid-template-columns:repeat(5,83px)}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.break-words{overflow-wrap:break-word}.rounded{border-radius:4px}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.object-cover{-o-object-fit:cover;object-fit:cover}.p-1\.5{padding:.375rem}.pe-11{padding-inline-end:2.75rem}.pe-5{padding-inline-end:1.25rem}.text-center{text-align:center}.opacity-0{opacity:0}.opacity-100{opacity:1}.outline{outline-style:solid;outline-width:1px}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-sm{--tw-backdrop-blur:blur(4px);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-200{transition-duration:.2s}.focus-within\:outline:focus-within{outline-style:solid;outline-width:1px}.focus-within\:outline-1:focus-within{outline-width:1px}.focus-within\:outline-offset-1:focus-within{outline-offset:1px}.focus-visible\:opacity-100:focus-visible{opacity:1}.group\/attachment-tile:focus-within .group-focus-within\/attachment-tile\:opacity-100{opacity:1}.group\/attachment-tile:hover .group-hover\/attachment-tile\:opacity-100{opacity:1}
1
+ ._tile_1sjdm_12{box-sizing:border-box;background:var(--ai-tile-bg,var(--bg-layer-raised,#fcfcfc));border-style:solid;border-color:var(--ai-tile-border,var(--stroke-secondary,#d1dbea))}._tile_1sjdm_12._hovered_1sjdm_18:hover{background:var(--ai-tile-bg-hover,var(--bg-control-neutral-hover-muted,#e0e6f0));border-color:var(--ai-tile-border-hover,var(--ai-tile-border,var(--stroke-secondary,#d1dbea)))}._tile_1sjdm_12{outline-color:var(--ai-tile-focus-outline,var(--stroke-focus,#161b2d))}._selected_1sjdm_28{background:var(--ai-tile-bg-selected,var(--bg-control-accent-alpha,#2764d90f));border-color:var(--ai-tile-border-selected,var(--stroke-accent-alpha,#2764d933))}._tileError_1sjdm_33{background:var(--ai-tile-bg-error,var(--bg-error,#f3d6d8));border-color:var(--ai-tile-border-error,var(--stroke-error,#ae2f2f))}._nameText_1sjdm_38{color:var(--ai-tile-name-text,var(--text-primary,#161b2d))}._typeText_1sjdm_42{color:var(--ai-tile-type-text,var(--text-primary,#161b2d))}._placeholderIcon_1sjdm_46{color:var(--ai-tile-placeholder-icon,var(--text-secondary,#57647a))}._retryIcon_1sjdm_50{color:var(--ai-tile-error-text,var(--text-error,#ae2f2f))}._track_1sjdm_54{background:var(--ai-tile-progress-track,var(--bg-backdrop,#161b2d4d))}._tile_1sjdm_12 ._actionButton_1sjdm_65{background:var(--ai-tile-hover-icon-bg,var(--ai-tile-bg,var(--bg-layer-raised,#fcfcfc)))}._tile_1sjdm_12._hovered_1sjdm_18:hover ._actionButton_1sjdm_65{background:var(--ai-tile-hover-icon-bg,var(--ai-tile-bg-hover,var(--bg-control-neutral-hover-muted,#e0e6f0)))}._tile_1sjdm_12._selected_1sjdm_28 ._actionButton_1sjdm_65{background:var(--ai-tile-hover-icon-bg,linear-gradient(var(--ai-tile-bg-selected,var(--bg-control-accent-alpha,#2764d90f)), var(--ai-tile-bg-selected,var(--bg-control-accent-alpha,#2764d90f))), var(--ai-tile-bg,var(--bg-layer-raised,#fcfcfc)))}._tile_1sjdm_12._tileError_1sjdm_33 ._actionButton_1sjdm_65{background:var(--ai-tile-bg-error,var(--bg-error,#f3d6d8));color:var(--ai-tile-error-text,var(--text-error,#ae2f2f))}._tile_1sjdm_12._loading_1sjdm_86 ._actionButton_1sjdm_65,._tile_1sjdm_12 ._imageActionButton_1sjdm_87,._tile_1sjdm_12._selected_1sjdm_28 ._imageActionButton_1sjdm_87{background:var(--ai-tile-hover-icon-bg,var(--bg-layer-base,#f5f7fa));color:var(--ai-tile-hover-icon-color,var(--text-secondary,#57647a))}._tile_1sjdm_12._proxyFocus_1sjdm_96:has(:focus-visible){outline-style:solid}._tile_1sjdm_12._proxyFocus_1sjdm_96 ._actionButton_1sjdm_65:focus-visible{outline:none}._loading_1sjdm_86{cursor:progress}._headerIcon_1dmgi_1,._headerLabel_1dmgi_2{color:var(--ai-group-text,var(--text-secondary,#57647a))}._overlay_mzpdp_1{background:var(--ai-fd-bg,var(--bg-backdrop,#161b2d4d))}._icon_mzpdp_5{color:var(--ai-fd-icon,var(--text-accent,#1d4ed8))}._deniedIcon_mzpdp_9{color:var(--ai-fd-denied-icon,var(--text-error,#ae2f2f))}
2
+ /*$vite$:1*/.sr-only{height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0,0,0,0);border-width:0;white-space:nowrap}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.end-1{inset-inline-end:.25rem}.top-1{top:.25rem}.z-10{z-index:10}.z-\[9999\]{z-index:9999}.-m-0\.5{margin:-.125rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.box-border{box-sizing:border-box}.line-clamp-2{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.size-\[100px\]{height:100px;width:100px}.h-full{height:100%}.w-full{width:100%}.min-w-0{min-width:0}.max-w-\[424px\]{max-width:424px}.max-w-\[532px\]{max-width:532px}.flex-1{flex:1 1 0%}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.grid-cols-\[repeat\(5\2c 100px\)\]{grid-template-columns:repeat(5,100px)}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.break-words{overflow-wrap:break-word}.rounded-\[11px\]{border-radius:11px}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0\.5{padding:.125rem}.p-3{padding:.75rem}.text-center{text-align:center}.opacity-0{opacity:0}.opacity-100{opacity:1}.outline-1{outline-width:1px}.outline-offset-1{outline-offset:1px}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-sm{--tw-backdrop-blur:blur(4px);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-200{transition-duration:.2s}.focus-visible\:outline:focus-visible{outline-style:solid;outline-width:1px}.group\/attachment-tile:hover .group-hover\/attachment-tile\:opacity-100{opacity:1}.group\/attachment-tile:focus-visible .group-focus-visible\/attachment-tile\:opacity-100{opacity:1}.group\/attachment-tile:has(:focus-visible) .group-has-\[\:focus-visible\]\/attachment-tile\:opacity-100{opacity:1}@media (max-width:1279px){.mobile\:opacity-100{opacity:1}}
package/index.js CHANGED
@@ -1,32 +1,32 @@
1
1
  import { AttachmentErrorReason as e, AttachmentType as t, MIME_TYPE_EXT_MAP as n, RequestStatus as r, buildCssVars as i, getBaseMimeType as a, mergeClasses as o, normalizeMimeType as s } from "@epam/ai-dial-chat-shared";
2
2
  import { useCallback as c, useEffect as l, useId as u, useMemo as d, useRef as f, useState as p } from "react";
3
- import { IconClipboard as m, IconDownload as h, IconExternalLink as g, IconFile as _, IconFileDescription as v, IconFileTypeBmp as y, IconFileTypeCss as b, IconFileTypeCsv as x, IconFileTypeDoc as S, IconFileTypeDocx as C, IconFileTypeHtml as w, IconFileTypeJpg as T, IconFileTypeJs as E, IconFileTypeJsx as D, IconFileTypePdf as O, IconFileTypePhp as k, IconFileTypePng as A, IconFileTypePpt as j, IconFileTypeRs as M, IconFileTypeSql as N, IconFileTypeSvg as P, IconFileTypeTs as F, IconFileTypeTsx as I, IconFileTypeTxt as L, IconFileTypeVue as R, IconFileTypeXls as z, IconFileTypeXml as B, IconFileTypeZip as V, IconFileX as ee, IconMusic as te, IconPaperclip as ne, IconPhoto as H, IconReload as re, IconTerminal2 as ie, IconVideo as ae, IconX as U } from "@tabler/icons-react";
4
- import { DIAL_ICON_SIZE as W, DIAL_KIT_ICON_STROKE as G, ElementSize as oe, GhostIconButton as se, Highlight as ce, Skeleton as le, SkeletonVariant as ue, Spinner as de, StaticIconButton as fe } from "@epam/ai-dial-ui-kit";
5
- import { Fragment as pe, jsx as K, jsxs as q } from "react/jsx-runtime";
3
+ import { IconClipboard as m, IconDownload as h, IconExternalLink as g, IconFile as _, IconFileDescription as v, IconFileTypeBmp as y, IconFileTypeCss as b, IconFileTypeCsv as x, IconFileTypeDoc as S, IconFileTypeDocx as C, IconFileTypeHtml as w, IconFileTypeJpg as T, IconFileTypeJs as E, IconFileTypeJsx as D, IconFileTypePdf as O, IconFileTypePhp as k, IconFileTypePng as A, IconFileTypePpt as j, IconFileTypeRs as M, IconFileTypeSql as N, IconFileTypeSvg as P, IconFileTypeTs as F, IconFileTypeTsx as I, IconFileTypeTxt as L, IconFileTypeVue as R, IconFileTypeXls as z, IconFileTypeXml as ee, IconFileTypeZip as te, IconFileX as ne, IconMusic as re, IconPaperclip as B, IconPhoto as V, IconReload as ie, IconTerminal2 as ae, IconVideo as oe, IconX as se } from "@tabler/icons-react";
4
+ import { DIAL_ICON_SIZE as H, DIAL_KIT_ICON_STROKE as U, DialItemType as ce, ElementSize as W, FileIcon as le, GhostIconButton as ue, Highlight as de, Skeleton as fe, SkeletonVariant as pe, Spinner as me, StaticIconButton as he } from "@epam/ai-dial-ui-kit";
5
+ import { Fragment as ge, jsx as G, jsxs as K } from "react/jsx-runtime";
6
6
  //#region src/utils/attachment.ts
7
- var me = () => `${Date.now()}-${Math.random().toString(36).slice(2)}`, he = (e) => {
7
+ var q = () => `${Date.now()}-${Math.random().toString(36).slice(2)}`, _e = (e) => {
8
8
  if (e == null) return "";
9
9
  let t = e.lastIndexOf(".");
10
10
  return t > 0 ? e.slice(0, t) : e;
11
- }, ge = {
11
+ }, ve = {
12
12
  image: "Image files",
13
13
  audio: "Audio files",
14
14
  video: "Video files",
15
15
  text: "Text files",
16
16
  "*": "All files"
17
- }, _e = { "image/jpeg": "JPEG" }, ve = (e, t = ge) => e.map((e) => {
17
+ }, ye = { "image/jpeg": "JPEG" }, be = (e, t = ve) => e.map((e) => {
18
18
  let r = a(e);
19
19
  if (r.endsWith("/*")) {
20
20
  let e = r.slice(0, -2);
21
21
  return t[e] ?? `${e} files`;
22
22
  }
23
- let i = s(r), o = _e[i];
23
+ let i = s(r), o = ye[i];
24
24
  if (o) return o;
25
25
  let c = n[i];
26
26
  if (c) return c.toUpperCase();
27
27
  let l = i.split("/")[1];
28
28
  return l == null ? e.toUpperCase() : l.toUpperCase();
29
- }).join(", "), ye = (e, t) => {
29
+ }).join(", "), xe = (e, t) => {
30
30
  if (t.length === 0) return !1;
31
31
  let n = a(e), r = s(n);
32
32
  return t.some((e) => {
@@ -38,7 +38,7 @@ var me = () => `${Date.now()}-${Math.random().toString(36).slice(2)}`, he = (e)
38
38
  }
39
39
  return r === s(t);
40
40
  });
41
- }, be = (e) => {
41
+ }, Se = (e) => {
42
42
  if (!e) return _;
43
43
  let t = s(e);
44
44
  if (t.startsWith("image/")) switch (t) {
@@ -46,10 +46,10 @@ var me = () => `${Date.now()}-${Math.random().toString(36).slice(2)}`, he = (e)
46
46
  case "image/png": return A;
47
47
  case "image/svg+xml": return P;
48
48
  case "image/bmp": return y;
49
- default: return H;
49
+ default: return V;
50
50
  }
51
- if (t.startsWith("video/")) return ae;
52
- if (t.startsWith("audio/")) return te;
51
+ if (t.startsWith("video/")) return oe;
52
+ if (t.startsWith("audio/")) return re;
53
53
  switch (t) {
54
54
  case "application/pdf": return O;
55
55
  case "application/msword": return S;
@@ -62,12 +62,12 @@ var me = () => `${Date.now()}-${Math.random().toString(36).slice(2)}`, he = (e)
62
62
  case "application/vnd.rar":
63
63
  case "application/x-7z-compressed":
64
64
  case "application/gzip":
65
- case "application/x-tar": return V;
65
+ case "application/x-tar": return te;
66
66
  case "text/csv": return x;
67
67
  case "text/plain": return L;
68
68
  case "text/html":
69
69
  case "application/xhtml+xml": return w;
70
- case "application/xml": return B;
70
+ case "application/xml": return ee;
71
71
  case "application/sql": return N;
72
72
  case "text/javascript": return E;
73
73
  case "text/jsx": return D;
@@ -79,26 +79,30 @@ var me = () => `${Date.now()}-${Math.random().toString(36).slice(2)}`, he = (e)
79
79
  case "text/x-vue": return R;
80
80
  default: return _;
81
81
  }
82
- }, xe = (e) => {
82
+ }, Ce = (e) => {
83
83
  let { type: n, contentType: r } = e;
84
- return n === t.Prompt ? ie : n === t.Pasted ? m : n === t.Image ? H : be(r ?? "");
85
- }, Se = (e) => {
84
+ return n === t.Prompt ? ae : n === t.Pasted ? m : n === t.Image ? V : Se(r ?? "");
85
+ }, we = (e) => {
86
86
  let t = s(e), r = n[t];
87
87
  if (r) return r;
88
88
  let i = t.split("/")[1];
89
89
  if (i && !i.startsWith("vnd.") && !i.includes("+")) return i;
90
- }, Ce = (e, n) => {
91
- let { type: r, name: i, contentType: a } = e;
90
+ }, Te = (e) => {
91
+ let { name: t, contentType: n } = e;
92
+ if (n) {
93
+ let e = we(n);
94
+ if (e) return e;
95
+ }
96
+ if (t == null) return;
97
+ let r = t.lastIndexOf(".");
98
+ if (r > 0 && r < t.length - 1) return t.slice(r + 1).toLowerCase();
99
+ }, Ee = (e) => e.type !== t.Prompt && e.type !== t.Pasted, De = (e, n) => {
100
+ let { type: r, name: i } = e;
92
101
  if (r === t.Prompt) return n.promptLabel ?? "Prompt";
93
102
  if (r === t.Pasted) return n.pastedLabel ?? "Pasted";
94
103
  if (r === t.Image) return n.imageLabel ?? "Image";
95
- if (a) {
96
- let e = Se(a);
97
- if (e) return `.${e}`;
98
- }
99
- if (i == null) return "";
100
- let o = i.lastIndexOf(".");
101
- return o > 0 && o < i.length - 1 ? `.${i.slice(o + 1).toLowerCase()}` : i;
104
+ let a = Te(e);
105
+ return a ? `.${a}` : i ?? "";
102
106
  }, J = (e, n = {}) => {
103
107
  let { type: i, status: a, previewUrl: o, url: s } = e, c = a === r.Loading, l = a === r.Error, u = i === t.Image && !!(o ?? s) && !l, d = i === t.Link && !l;
104
108
  return {
@@ -106,10 +110,10 @@ var me = () => `${Date.now()}-${Math.random().toString(36).slice(2)}`, he = (e)
106
110
  isError: l,
107
111
  isImage: u,
108
112
  isLink: d,
109
- BottomIcon: d ? null : xe(e),
110
- typeLabel: d ? null : Ce(e, n)
113
+ BottomIcon: d ? null : Ce(e),
114
+ typeLabel: d ? null : De(e, n)
111
115
  };
112
- }, we = 5, Te = "flex size-[84px] items-center justify-center rounded-xl border", Y = {
116
+ }, Oe = 5, ke = "flex size-[100px] items-center justify-center rounded-xl border", Ae = "outline-1 outline-offset-1 focus-visible:outline", Y = {
113
117
  tray: "dial-ai-attachment-tray",
114
118
  trayItem: "dial-ai-attachment-tray-item",
115
119
  tile: "dial-ai-attachment-tile",
@@ -118,131 +122,143 @@ var me = () => `${Date.now()}-${Math.random().toString(36).slice(2)}`, he = (e)
118
122
  tileType: "dial-ai-attachment-tile-type",
119
123
  tileAction: "dial-ai-attachment-tile-action"
120
124
  }, X = {
121
- tile: "_tile_1tdbq_12",
122
- hovered: "_hovered_1tdbq_18",
123
- selected: "_selected_1tdbq_28",
124
- tileError: "_tileError_1tdbq_33",
125
- nameText: "_nameText_1tdbq_38",
126
- typeText: "_typeText_1tdbq_42",
127
- retryIcon: "_retryIcon_1tdbq_46",
128
- track: "_track_1tdbq_50",
129
- actionButton: "_actionButton_1tdbq_56",
130
- imageActionButton: "_imageActionButton_1tdbq_60"
131
- }, Z = ({ ariaLabel: e, errorTitle: t, errorDescId: n, onClick: r, id: i, icon: a, className: s }) => /* @__PURE__ */ K(fe, {
125
+ tile: "_tile_1sjdm_12",
126
+ hovered: "_hovered_1sjdm_18",
127
+ selected: "_selected_1sjdm_28",
128
+ tileError: "_tileError_1sjdm_33",
129
+ nameText: "_nameText_1sjdm_38",
130
+ typeText: "_typeText_1sjdm_42",
131
+ placeholderIcon: "_placeholderIcon_1sjdm_46",
132
+ retryIcon: "_retryIcon_1sjdm_50",
133
+ track: "_track_1sjdm_54",
134
+ actionButton: "_actionButton_1sjdm_65",
135
+ loading: "_loading_1sjdm_86",
136
+ imageActionButton: "_imageActionButton_1sjdm_87",
137
+ proxyFocus: "_proxyFocus_1sjdm_96"
138
+ }, Z = ({ ariaLabel: e, errorTitle: t, errorDescId: n, onClick: r, id: i, icon: a, className: s, isAlwaysVisible: c }) => /* @__PURE__ */ G(he, {
132
139
  icon: a,
133
- size: oe.Small,
134
- className: o("opacity-0 focus-visible:opacity-100 group-focus-within/attachment-tile:opacity-100 group-hover/attachment-tile:opacity-100", X.actionButton, s, Y.tileAction),
140
+ size: W.Small,
141
+ className: o(c ? "opacity-100" : "opacity-0 group-hover/attachment-tile:opacity-100 group-focus-visible/attachment-tile:opacity-100 group-has-[:focus-visible]/attachment-tile:opacity-100", X.actionButton, s, Y.tileAction),
135
142
  "aria-label": e,
136
143
  "aria-describedby": t ? n : void 0,
137
144
  onClick: (e) => {
138
145
  e.stopPropagation(), r(i);
139
146
  }
140
- }), Ee = ({ ...e }) => /* @__PURE__ */ K(Z, {
141
- icon: /* @__PURE__ */ K(re, {
142
- size: W.SM,
147
+ }), je = ({ ...e }) => /* @__PURE__ */ G(Z, {
148
+ icon: /* @__PURE__ */ G(ie, {
149
+ size: H.SM,
143
150
  "aria-hidden": !0,
144
- stroke: G
151
+ stroke: U
145
152
  }),
146
153
  className: X.retryIcon,
147
154
  ...e
148
- }), De = ({ ...e }) => /* @__PURE__ */ K(Z, {
149
- icon: /* @__PURE__ */ K(h, {
150
- size: W.SM,
155
+ }), Me = ({ ...e }) => /* @__PURE__ */ G(Z, {
156
+ icon: /* @__PURE__ */ G(h, {
157
+ size: H.SM,
151
158
  "aria-hidden": !0,
152
- stroke: G
159
+ stroke: U
153
160
  }),
154
161
  ...e
155
- }), Oe = ({ ...e }) => /* @__PURE__ */ K(Z, {
156
- icon: /* @__PURE__ */ K(g, {
157
- size: W.SM,
162
+ }), Ne = ({ ...e }) => /* @__PURE__ */ G(Z, {
163
+ icon: /* @__PURE__ */ G(g, {
164
+ size: H.SM,
158
165
  "aria-hidden": !0,
159
- stroke: G
166
+ stroke: U
160
167
  }),
161
168
  ...e
162
- }), ke = ({ ...e }) => /* @__PURE__ */ K(Z, {
163
- icon: /* @__PURE__ */ K(U, {
164
- size: W.SM,
169
+ }), Pe = ({ className: e, ...t }) => /* @__PURE__ */ G(Z, {
170
+ icon: /* @__PURE__ */ G(se, {
171
+ size: H.SM,
165
172
  "aria-hidden": !0,
166
- stroke: G
173
+ stroke: U
167
174
  }),
168
- ...e
169
- }), Ae = {
175
+ className: o("mobile:opacity-100", e),
176
+ ...t
177
+ }), Fe = {
170
178
  [e.Network]: "Upload failed · network error",
171
179
  [e.UnsupportedType]: "Upload failed · unsupported file type",
172
180
  [e.FileTooLarge]: "Upload failed · file too large"
173
- }, je = ({ attachment: t, searchQuery: n = "", onClick: i, onRetry: a, labels: s, styles: l, onDownload: f, isLink: p, cssVars: m, onExpand: h, isExpandable: g, onRemove: _, isSelected: v }) => {
174
- let { clickLabel: y = "Download attachment", expandLabel: b = "Expand pasted text", downloadLabel: x = "Download attachment", retryLabel: S = "Retry upload", removeLabel: C = "Remove attachment", openInNewTabLabel: w = "Open in new tab", sizeLabel: T, uploadingLabel: E = "Uploading", errorReasonLabels: D, genericErrorLabel: O = "Upload failed" } = s ?? {}, { typography: k, className: A } = l ?? {}, { id: j, name: M, status: N, errorReason: P } = t, F = N === r.Loading, I = N === r.Error, L = u(), R = I ? P && (D?.[P] ?? Ae[P]) || O : "", { BottomIcon: z, typeLabel: B } = J(t), V = !I && !F && f && !p, ee = I && !!a && P !== e.UnsupportedType && P !== e.FileTooLarge, te = Number(!!V) + Number(!!ee) + Number(!!p) + Number(!!_), ne = te > 1 ? "pe-11" : te === 1 ? "pe-5" : void 0, H = !!g && h !== void 0, re = H || i !== void 0, ie = () => {
175
- H ? h(j) : i?.(j);
176
- }, ae = (e) => {
177
- e.target === e.currentTarget && (e.key === "Enter" || e.key === " ") && (e.preventDefault(), ie());
178
- }, U = d(() => he(M), [M]), W = c(() => {
181
+ }, Ie = ({ attachment: t, searchQuery: n = "", onClick: i, onRetry: a, labels: s, styles: l, onDownload: f, isLink: p, cssVars: m, onExpand: h, isExpandable: g, onRemove: _, isSelected: v }) => {
182
+ let { clickLabel: y = "Download attachment", expandLabel: b = "Expand pasted text", downloadLabel: x = "Download attachment", retryLabel: S = "Retry upload", removeLabel: C = "Remove attachment", openInNewTabLabel: w = "Open in new tab", sizeLabel: T, uploadingLabel: E = "Uploading", errorReasonLabels: D, genericErrorLabel: O = "Upload failed" } = s ?? {}, { typography: k, className: A } = l ?? {}, { id: j, name: M, status: N, errorReason: P } = t, F = N === r.Loading, I = N === r.Error, L = u(), R = I ? P && (D?.[P] ?? Fe[P]) || O : "", { BottomIcon: z, typeLabel: ee } = J(t), te = Ee(t), ne = !I && !F && f && !p, re = I && !!a && P !== e.UnsupportedType && P !== e.FileTooLarge, B = !!g && h !== void 0, V = B || i !== void 0, ie = Number(!!ne) + Number(!!re) + Number(!!p) + Number(!!_), ae = !V && ie === 1, oe = () => {
183
+ B ? h(j) : i?.(j);
184
+ }, se = (e) => {
185
+ e.target === e.currentTarget && (e.key === "Enter" || e.key === " ") && (e.preventDefault(), oe());
186
+ }, W = d(() => _e(M), [M]), ue = c(() => {
179
187
  window.open(t.referenceUrl, "_blank", "noopener,noreferrer");
180
- }, [t]), G = o(Te, "group/attachment-tile relative flex-col justify-between items-start gap-1 overflow-hidden p-1.5", X.tile, !I && X.hovered, v && X.selected, I && X.tileError, Y.tile, v && Y.tileSelected), oe = /* @__PURE__ */ K("div", {
181
- title: U,
182
- className: o(k?.nameClassName ?? "dial-caption-text", "line-clamp-2 w-full min-w-0 break-words", X.nameText, !I && ne, Y.tileName),
183
- children: n ? /* @__PURE__ */ K(ce, {
184
- text: U,
188
+ }, [t]), fe = o(ke, "group/attachment-tile relative flex-col justify-between items-start gap-2 overflow-hidden p-3", X.tile, V && !I && !F && X.hovered, F && X.loading, v && X.selected, I && X.tileError, ae && X.proxyFocus, Y.tile, v && Y.tileSelected), pe = /* @__PURE__ */ G("div", {
189
+ title: W,
190
+ className: o(k?.nameClassName ?? "dial-tiny-text", "line-clamp-2 w-full min-w-0 break-words", X.nameText, Y.tileName),
191
+ children: n ? /* @__PURE__ */ G(de, {
192
+ text: W,
185
193
  query: n,
186
194
  maxLines: 2
187
- }) : U
188
- }), se = z && /* @__PURE__ */ q("div", {
189
- className: o("flex w-full items-center gap-1", I && ne, Y.tileType),
190
- children: [/* @__PURE__ */ K(z, {
191
- size: 16,
195
+ }) : W
196
+ }), he = z && /* @__PURE__ */ K("div", {
197
+ className: o("flex w-full items-end gap-1", Y.tileType),
198
+ children: [te ? /* @__PURE__ */ G(le, {
199
+ type: ce.File,
200
+ name: M ?? "",
201
+ fileExtension: Te(t),
202
+ size: H.MD,
203
+ decorative: !0
204
+ }) : /* @__PURE__ */ G(z, {
205
+ size: H.MD,
192
206
  className: X.typeText,
207
+ stroke: U,
193
208
  "aria-hidden": !0
194
- }), /* @__PURE__ */ K("span", {
195
- className: o(k?.metaClassName ?? "dial-caption-text", "min-w-0 flex-1 truncate", X.typeText),
196
- children: T ? `${B} · ${T}` : B
209
+ }), /* @__PURE__ */ G("span", {
210
+ className: o(k?.metaClassName ?? "dial-tiny-text", "min-w-0 flex-1 truncate", X.typeText),
211
+ children: T ? `${ee} · ${T}` : ee
197
212
  })]
198
- }), le = re ? {
213
+ }), q = V ? {
199
214
  role: "button",
200
215
  tabIndex: 0,
201
- "aria-label": H ? b : y,
202
- onClick: ie,
203
- onKeyDown: ae
204
- } : {}, ue = /* @__PURE__ */ q(pe, { children: [
205
- oe,
206
- se,
207
- F && /* @__PURE__ */ K("div", {
216
+ "aria-label": B ? b : y,
217
+ onClick: oe,
218
+ onKeyDown: se
219
+ } : {}, ve = /* @__PURE__ */ K(ge, { children: [
220
+ pe,
221
+ he,
222
+ F && /* @__PURE__ */ G("div", {
208
223
  role: "progressbar",
209
224
  "aria-label": E,
210
- className: o("absolute start-[-1px] top-[-1px] flex size-full items-center justify-center rounded", X.track),
211
- children: /* @__PURE__ */ K(de, { size: 32 })
225
+ className: o("absolute inset-0 flex items-center justify-center rounded-[11px]", X.track),
226
+ children: /* @__PURE__ */ G(me, { size: 32 })
212
227
  }),
213
- /* @__PURE__ */ q("div", {
214
- className: "absolute end-1 top-1 flex gap-1",
228
+ /* @__PURE__ */ K("div", {
229
+ className: "absolute end-1 top-1 flex",
215
230
  children: [
216
- V && /* @__PURE__ */ K(De, {
231
+ ne && /* @__PURE__ */ G(Me, {
217
232
  ariaLabel: x,
218
233
  errorTitle: R,
219
234
  errorDescId: L,
220
235
  onClick: f,
221
236
  id: j
222
237
  }),
223
- ee && /* @__PURE__ */ K(Ee, {
238
+ re && /* @__PURE__ */ G(je, {
224
239
  ariaLabel: S,
225
240
  errorTitle: R,
226
241
  errorDescId: L,
227
242
  onClick: a,
228
243
  id: j
229
244
  }),
230
- p && /* @__PURE__ */ K(Oe, {
245
+ p && /* @__PURE__ */ G(Ne, {
231
246
  ariaLabel: w,
232
247
  errorTitle: R,
233
248
  errorDescId: L,
234
- onClick: W
249
+ onClick: ue
235
250
  }),
236
- _ && /* @__PURE__ */ K(ke, {
251
+ _ && /* @__PURE__ */ G(Pe, {
237
252
  ariaLabel: C,
238
253
  errorTitle: R,
239
254
  errorDescId: L,
240
255
  onClick: _,
241
- id: j
256
+ id: j,
257
+ isAlwaysVisible: F
242
258
  })
243
259
  ]
244
260
  }),
245
- I && /* @__PURE__ */ K("span", {
261
+ I && /* @__PURE__ */ G("span", {
246
262
  id: L,
247
263
  role: "status",
248
264
  "aria-live": "polite",
@@ -250,20 +266,20 @@ var me = () => `${Date.now()}-${Math.random().toString(36).slice(2)}`, he = (e)
250
266
  children: R
251
267
  })
252
268
  ] });
253
- return /* @__PURE__ */ K("div", {
269
+ return /* @__PURE__ */ G("div", {
254
270
  style: m,
255
271
  className: o("inline-flex", A),
256
- children: /* @__PURE__ */ K("div", {
257
- ...le,
272
+ children: /* @__PURE__ */ G("div", {
273
+ ...q,
258
274
  "aria-busy": F,
259
275
  style: m,
260
- className: o(G, re && "cursor-pointer", "focus-within:outline focus-within:outline-1 focus-within:outline-offset-1"),
261
- children: ue
276
+ className: o(fe, V && "cursor-pointer", Ae),
277
+ children: ve
262
278
  })
263
279
  });
264
280
  }, Q = /* @__PURE__ */ function(e) {
265
281
  return e.Idle = "idle", e.Loading = "loading", e.Loaded = "loaded", e.Error = "error", e;
266
- }({}), Me = ({ enabled: e, src: t }) => {
282
+ }({}), Le = ({ enabled: e, src: t }) => {
267
283
  let n = f(null), [r, i] = p("idle");
268
284
  return l(() => {
269
285
  i(e && t ? "loading" : "idle");
@@ -278,67 +294,75 @@ var me = () => `${Date.now()}-${Math.random().toString(36).slice(2)}`, he = (e)
278
294
  imageRef: n,
279
295
  imageLoadStatus: r
280
296
  };
281
- }, Ne = ({ attachment: e, onExpand: n, onClick: r, labels: i, onRemove: a, cssVars: s, onDownload: c, styles: l, isSelected: u }) => {
282
- let { clickLabel: f = "Open attachment", expandLabel: p = "Expand pasted text", removeLabel: m = "Remove attachment", downloadLabel: h = "Download attachment" } = i ?? {}, { className: g } = l ?? {}, { id: _, name: v } = e, y = e.previewUrl ?? e.url, b = e.type === t.Pasted && n !== void 0, { isLoading: x, isError: S, isImage: C } = d(() => J(e), [e]), w = r !== void 0 && !b && !x && !S, T = b || w, { imageRef: E, imageLoadStatus: D } = Me({
283
- enabled: C,
284
- src: y
285
- }), O = () => {
286
- b && n ? n(_) : w && r && r(_);
287
- }, k = T ? {
297
+ }, Re = ({ attachment: e, onExpand: n, onClick: r, labels: i, onRemove: a, cssVars: s, onDownload: c, styles: l, isSelected: u }) => {
298
+ let { clickLabel: f = "Open attachment", expandLabel: p = "Expand pasted text", removeLabel: m = "Remove attachment", downloadLabel: h = "Download attachment", uploadingLabel: g = "Uploading" } = i ?? {}, { className: _ } = l ?? {}, { id: v, name: y } = e, b = e.previewUrl ?? e.url, x = e.type === t.Pasted && n !== void 0, { isLoading: S, isError: C, isImage: w } = d(() => J(e), [e]), T = r !== void 0 && !x && !S && !C, E = x || T, D = !!c && !S, O = !E && Number(!!a) + Number(D) === 1, { imageRef: k, imageLoadStatus: A } = Le({
299
+ enabled: w,
300
+ src: b
301
+ }), j = () => {
302
+ x && n ? n(v) : T && r && r(v);
303
+ }, M = E ? {
288
304
  role: "button",
289
305
  tabIndex: 0,
290
- "aria-label": b ? p : f,
291
- onClick: O,
306
+ "aria-label": x ? p : f,
307
+ onClick: j,
292
308
  onKeyDown: (e) => {
293
- e.target === e.currentTarget && (e.key === "Enter" || e.key === " ") && (e.preventDefault(), O());
309
+ e.target === e.currentTarget && (e.key === "Enter" || e.key === " ") && (e.preventDefault(), j());
294
310
  }
295
311
  } : {};
296
- return /* @__PURE__ */ K("div", {
297
- className: o(Te, "group/attachment-tile", T && "cursor-pointer", X.tile, u && X.selected, g, Y.tile, u && Y.tileSelected),
298
- ...k,
312
+ return /* @__PURE__ */ G("div", {
313
+ className: o(ke, "group/attachment-tile", E && "cursor-pointer", X.tile, u && X.selected, S && X.loading, O && X.proxyFocus, Ae, _, Y.tile, u && Y.tileSelected),
314
+ ...M,
315
+ "aria-busy": S,
299
316
  style: s,
300
- children: /* @__PURE__ */ q("div", {
317
+ children: /* @__PURE__ */ K("div", {
301
318
  className: "relative h-full w-full overflow-hidden",
302
319
  children: [
303
- /* @__PURE__ */ q("div", {
304
- className: "absolute end-1 top-1 z-10 flex gap-1",
305
- children: [a && /* @__PURE__ */ K(ke, {
320
+ /* @__PURE__ */ K("div", {
321
+ className: "absolute end-1 top-1 z-10 flex",
322
+ children: [a && /* @__PURE__ */ G(Pe, {
306
323
  ariaLabel: m,
307
324
  onClick: a,
308
- id: _,
309
- className: X.imageActionButton
310
- }), c && /* @__PURE__ */ K(De, {
325
+ id: v,
326
+ className: X.imageActionButton,
327
+ isAlwaysVisible: S
328
+ }), D && /* @__PURE__ */ G(Me, {
311
329
  ariaLabel: h,
312
330
  onClick: c,
313
- id: _,
331
+ id: v,
314
332
  className: X.imageActionButton
315
333
  })]
316
334
  }),
317
- D !== Q.Loaded && /* @__PURE__ */ K(le, {
318
- variant: ue.Rectangular,
335
+ A !== Q.Loaded && /* @__PURE__ */ G(fe, {
336
+ variant: pe.Rectangular,
319
337
  width: "100%",
320
338
  height: "100%",
321
- active: D === Q.Loading,
322
- overlay: /* @__PURE__ */ K(H, {
323
- size: W.LG,
324
- className: X.typeText,
339
+ active: A === Q.Loading,
340
+ overlay: /* @__PURE__ */ G(V, {
341
+ size: H.LG,
342
+ className: X.placeholderIcon,
325
343
  "aria-hidden": !0,
326
- stroke: G
344
+ stroke: U
327
345
  }),
328
346
  className: "absolute inset-0 rounded-xl"
329
347
  }),
330
- /* @__PURE__ */ K("img", {
331
- ref: E,
332
- src: y,
333
- alt: v,
348
+ /* @__PURE__ */ G("img", {
349
+ ref: k,
350
+ src: b,
351
+ alt: y,
334
352
  loading: "lazy",
335
353
  decoding: "async",
336
- className: o("h-full w-full rounded-xl object-cover transition-opacity duration-200", D === Q.Loaded ? "opacity-100" : "opacity-0")
354
+ className: o("h-full w-full rounded-xl object-cover transition-opacity duration-200", A === Q.Loaded ? "opacity-100" : "opacity-0")
355
+ }),
356
+ S && /* @__PURE__ */ G("div", {
357
+ role: "progressbar",
358
+ "aria-label": g,
359
+ className: o("absolute inset-0 flex items-center justify-center rounded-xl", X.track),
360
+ children: /* @__PURE__ */ G(me, { size: 32 })
337
361
  })
338
362
  ]
339
363
  })
340
364
  });
341
- }, Pe = ({ attachment: e, searchQuery: n = "", onRemove: r, onRetry: a, onExpand: o, onClick: s, onDownload: c, labels: l, styles: u, isSelected: f }) => {
365
+ }, ze = ({ attachment: e, searchQuery: n = "", onRemove: r, onRetry: a, onExpand: o, onClick: s, onDownload: c, labels: l, styles: u, isSelected: f }) => {
342
366
  let { colors: p } = u ?? {}, m = e.type === t.Pasted && o !== void 0, h = i({
343
367
  "--ai-tile-bg": p?.background,
344
368
  "--ai-tile-border": p?.border,
@@ -352,11 +376,12 @@ var me = () => `${Date.now()}-${Math.random().toString(36).slice(2)}`, he = (e)
352
376
  "--ai-tile-error-text": p?.errorText,
353
377
  "--ai-tile-name-text": p?.nameText,
354
378
  "--ai-tile-type-text": p?.typeText,
379
+ "--ai-tile-placeholder-icon": p?.placeholderIcon,
355
380
  "--ai-tile-hover-icon-bg": p?.hoverIconBackground,
356
381
  "--ai-tile-hover-icon-color": p?.hoverIconColor,
357
382
  "--ai-tile-progress-track": p?.trackBackground
358
383
  }), { isImage: g, isLink: _ } = d(() => J(e), [e]);
359
- return g ? /* @__PURE__ */ K(Ne, {
384
+ return g ? /* @__PURE__ */ G(Re, {
360
385
  attachment: e,
361
386
  labels: l,
362
387
  onClick: s,
@@ -366,7 +391,7 @@ var me = () => `${Date.now()}-${Math.random().toString(36).slice(2)}`, he = (e)
366
391
  cssVars: h,
367
392
  onDownload: c,
368
393
  isSelected: f
369
- }) : /* @__PURE__ */ K(je, {
394
+ }) : /* @__PURE__ */ G(Ie, {
370
395
  attachment: e,
371
396
  searchQuery: n,
372
397
  onClick: s,
@@ -381,16 +406,16 @@ var me = () => `${Date.now()}-${Math.random().toString(36).slice(2)}`, he = (e)
381
406
  isExpandable: m,
382
407
  isSelected: f
383
408
  });
384
- }, Fe = ({ attachments: e, onRemove: t, onRetry: n, onExpand: r, onAttachmentClick: i, labels: a, styles: s }) => {
409
+ }, Be = ({ attachments: e, onRemove: t, onRetry: n, onExpand: r, onAttachmentClick: i, labels: a, styles: s }) => {
385
410
  let { ariaLabel: c = "Attached files", removeLabel: l, retryLabel: u, clickLabel: d, expandLabel: f, uploadingLabel: p } = a ?? {}, { className: m, card: h } = s ?? {};
386
- return e.length === 0 ? null : /* @__PURE__ */ K("div", {
411
+ return e.length === 0 ? null : /* @__PURE__ */ G("div", {
387
412
  role: "list",
388
413
  "aria-label": c,
389
- className: o("flex w-full min-w-0 gap-2 overflow-x-auto", m, Y.tray),
390
- children: e.map((e) => /* @__PURE__ */ K("div", {
414
+ className: o("-m-0.5 box-border flex min-w-0 gap-2 overflow-x-auto p-0.5", m, Y.tray),
415
+ children: e.map((e) => /* @__PURE__ */ G("div", {
391
416
  role: "listitem",
392
417
  className: Y.trayItem,
393
- children: /* @__PURE__ */ K(Pe, {
418
+ children: /* @__PURE__ */ G(ze, {
394
419
  attachment: e,
395
420
  onRemove: t,
396
421
  onRetry: n,
@@ -407,53 +432,53 @@ var me = () => `${Date.now()}-${Math.random().toString(36).slice(2)}`, he = (e)
407
432
  })
408
433
  }, e.id))
409
434
  });
410
- }, Ie = {
435
+ }, Ve = {
411
436
  headerIcon: "_headerIcon_1dmgi_1",
412
437
  headerLabel: "_headerLabel_1dmgi_2"
413
- }, Le = (e, t) => `${e} ${t}${e === 1 ? "" : "s"}`, Re = ({ attachments: e, onAttachmentClick: n, onDownloadAll: a, onRetry: s, labels: c, styles: l, selectedAttachmentId: u }) => {
414
- let { ariaLabel: d = "Attachments", clickLabel: f = "Download attachment", downloadLabel: p = "Download attachment", retryLabel: m = "Retry upload", downloadAllLabel: g = "Download all", openInNewTabLabel: v, getHeaderLabel: y = (e) => Le(e, "attachment"), promptLabel: b, pastedLabel: x, imageLabel: S } = c ?? {}, { typography: C, colors: w, className: T } = l ?? {}, E = i({ "--ai-group-text": w?.text });
438
+ }, He = (e, t) => `${e} ${t}${e === 1 ? "" : "s"}`, Ue = ({ attachments: e, onAttachmentClick: n, onDownloadAll: a, onRetry: s, labels: c, styles: l, selectedAttachmentId: u }) => {
439
+ let { ariaLabel: d = "Attachments", clickLabel: f = "Download attachment", downloadLabel: p = "Download attachment", retryLabel: m = "Retry upload", downloadAllLabel: g = "Download all", openInNewTabLabel: v, getHeaderLabel: y = (e) => He(e, "attachment"), promptLabel: b, pastedLabel: x, imageLabel: S } = c ?? {}, { typography: C, colors: w, className: T } = l ?? {}, E = i({ "--ai-group-text": w?.text });
415
440
  if (e.length === 0) return null;
416
- let D = e.some((e) => e.type === t.Image), O = e.some((e) => e.type !== t.Image), k = D && O, A = e.length >= 5, j = k ? ne : D ? H : _, M = y(e.length), N = () => {
441
+ let D = e.some((e) => e.type === t.Image), O = e.some((e) => e.type !== t.Image), k = D && O, A = e.length >= 5, j = k ? B : D ? V : _, M = y(e.length), N = () => {
417
442
  let t = e.filter((e) => e.status === r.Idle);
418
443
  a ? a(t) : t.forEach((e) => n?.(e.id));
419
444
  }, P = (t) => {
420
445
  let n = e.find((e) => e.id === t);
421
446
  n && a?.([n]);
422
447
  };
423
- return /* @__PURE__ */ q("div", {
448
+ return /* @__PURE__ */ K("div", {
424
449
  role: "group",
425
450
  "aria-label": d,
426
451
  style: E,
427
- className: o("flex flex-col gap-1", A ? "w-full min-w-0 max-w-[492px]" : "max-w-[420px]", Ie.container, T),
428
- children: [/* @__PURE__ */ q("div", {
452
+ className: o("flex flex-col gap-2", A ? "w-full min-w-0 max-w-[532px]" : "max-w-[424px]", Ve.container, T),
453
+ children: [/* @__PURE__ */ K("div", {
429
454
  className: "flex items-center justify-between",
430
- children: [/* @__PURE__ */ q("div", {
455
+ children: [/* @__PURE__ */ K("div", {
431
456
  className: "flex items-center gap-1",
432
- children: [/* @__PURE__ */ K(j, {
433
- size: W.SM,
434
- className: o("shrink-0", Ie.headerIcon),
457
+ children: [/* @__PURE__ */ G(j, {
458
+ size: H.SM,
459
+ className: o("shrink-0", Ve.headerIcon),
435
460
  "aria-hidden": !0
436
- }), /* @__PURE__ */ K("span", {
437
- className: o(C?.headerLabelClassName ?? "dial-tiny-semi-text", Ie.headerLabel),
461
+ }), /* @__PURE__ */ G("span", {
462
+ className: o(C?.headerLabelClassName ?? "dial-tiny-semi-text", Ve.headerLabel),
438
463
  children: M
439
464
  })]
440
- }), e.length >= 2 && (a || n) && /* @__PURE__ */ K(se, {
441
- icon: /* @__PURE__ */ K(h, {
442
- size: W.SM,
465
+ }), e.length >= 2 && (a || n) && /* @__PURE__ */ G(ue, {
466
+ icon: /* @__PURE__ */ G(h, {
467
+ size: H.SM,
443
468
  "aria-hidden": !0,
444
- stroke: G
469
+ stroke: U
445
470
  }),
446
- size: oe.Small,
471
+ size: W.Small,
447
472
  "aria-label": g,
448
473
  onClick: N
449
474
  })]
450
- }), /* @__PURE__ */ K("div", {
475
+ }), /* @__PURE__ */ G("div", {
451
476
  role: "list",
452
477
  "aria-label": M,
453
- className: o("gap-3", A ? "grid grid-cols-[repeat(5,83px)]" : "flex flex-wrap"),
454
- children: e.map((e, t) => /* @__PURE__ */ K("div", {
478
+ className: o("gap-2", A ? "grid grid-cols-[repeat(5,100px)]" : "flex flex-wrap"),
479
+ children: e.map((e, t) => /* @__PURE__ */ G("div", {
455
480
  role: "listitem",
456
- children: /* @__PURE__ */ K(Pe, {
481
+ children: /* @__PURE__ */ G(ze, {
457
482
  attachment: e,
458
483
  onClick: n,
459
484
  onDownload: a ? P : void 0,
@@ -472,51 +497,51 @@ var me = () => `${Date.now()}-${Math.random().toString(36).slice(2)}`, he = (e)
472
497
  }, `${e.id}-${t}`))
473
498
  })]
474
499
  });
475
- }, ze = {
500
+ }, We = {
476
501
  overlay: "_overlay_mzpdp_1",
477
502
  icon: "_icon_mzpdp_5",
478
503
  deniedIcon: "_deniedIcon_mzpdp_9"
479
- }, Be = ({ isVisible: e, isAttachmentsAllowed: t = !0, labels: n, styles: r }) => {
504
+ }, Ge = ({ isVisible: e, isAttachmentsAllowed: t = !0, labels: n, styles: r }) => {
480
505
  let { title: a, subtitle: s } = n ?? {}, { colors: c, typography: l } = r ?? {};
481
506
  if (!e) return null;
482
507
  let u = i({
483
508
  "--ai-fd-bg": c?.background,
484
509
  "--ai-fd-icon": c?.icon,
485
510
  "--ai-fd-denied-icon": c?.deniedIcon
486
- }), d = a ?? (t ? "Attach files" : "No attachments allowed"), f = s ?? (t ? "Drop files here to attach them to message" : "Attachments can't be added to message"), p = t ? ze.icon : ze.deniedIcon, m = (e) => {
511
+ }), d = a ?? (t ? "Attach files" : "No attachments allowed"), f = s ?? (t ? "Drop files here to attach them to message" : "Attachments can't be added to message"), p = t ? We.icon : We.deniedIcon, m = (e) => {
487
512
  e.preventDefault();
488
- }, h = t ? v : ee;
489
- return /* @__PURE__ */ K("div", {
513
+ }, h = t ? v : ne;
514
+ return /* @__PURE__ */ G("div", {
490
515
  role: "status",
491
516
  "aria-live": "polite",
492
- className: o("fixed inset-0 z-[9999] flex items-center justify-center backdrop-blur-sm", ze.overlay, t ? "pointer-events-none" : "pointer-events-auto cursor-not-allowed"),
517
+ className: o("fixed inset-0 z-[9999] flex items-center justify-center backdrop-blur-sm", We.overlay, t ? "pointer-events-none" : "pointer-events-auto cursor-not-allowed"),
493
518
  onDragOver: t ? void 0 : m,
494
519
  onDrop: t ? void 0 : m,
495
520
  style: u,
496
- children: /* @__PURE__ */ q("div", {
521
+ children: /* @__PURE__ */ K("div", {
497
522
  className: "flex flex-col items-center text-center",
498
523
  children: [
499
- /* @__PURE__ */ K(h, {
524
+ /* @__PURE__ */ G(h, {
500
525
  size: 100,
501
526
  stroke: 1,
502
527
  className: p,
503
528
  "aria-hidden": !0
504
529
  }),
505
- /* @__PURE__ */ K("span", {
530
+ /* @__PURE__ */ G("span", {
506
531
  className: o("mt-5", l?.titleClassName ?? "dial-h3-text"),
507
532
  children: d
508
533
  }),
509
- /* @__PURE__ */ K("span", {
534
+ /* @__PURE__ */ G("span", {
510
535
  className: o("mt-4", l?.subtitleClassName ?? "dial-small-text"),
511
536
  children: f
512
537
  })
513
538
  ]
514
539
  })
515
540
  });
516
- }, $ = (e) => String(e).padStart(2, "0"), Ve = (e) => `${e.getFullYear()}-${$(e.getMonth() + 1)}-${$(e.getDate())} ${$(e.getHours())}-${$(e.getMinutes())}-${$(e.getSeconds())}`, He = (e, t, n) => {
541
+ }, $ = (e) => String(e).padStart(2, "0"), Ke = (e) => `${e.getFullYear()}-${$(e.getMonth() + 1)}-${$(e.getDate())} ${$(e.getHours())}-${$(e.getMinutes())}-${$(e.getSeconds())}`, qe = (e, t, n) => {
517
542
  let r = e.lastIndexOf("."), i = r > 0, a = i ? e.slice(0, r) : e, o = i ? e.slice(r) : "", s = n === 0 ? "" : ` (${n + 1})`;
518
- return `${a} ${Ve(t)}${s}${o}`;
519
- }, Ue = (e, n, i = {}) => {
543
+ return `${a} ${Ke(t)}${s}${o}`;
544
+ }, Je = (e, n, i = {}) => {
520
545
  let { screenshotName: a = "Screenshot.png", pastedTextName: o = "Pasted text" } = i;
521
546
  return { handlePaste: c((i) => {
522
547
  if (!i.clipboardData) return;
@@ -526,8 +551,8 @@ var me = () => `${Date.now()}-${Math.random().toString(36).slice(2)}`, he = (e)
526
551
  for (let e of s) {
527
552
  let i = e.getAsFile();
528
553
  if (!i) continue;
529
- let s = He(a, o, n.length), c = new File([i], s, { type: i.type }), l = {
530
- id: me(),
554
+ let s = qe(a, o, n.length), c = new File([i], s, { type: i.type }), l = {
555
+ id: q(),
531
556
  name: s,
532
557
  contentType: i.type,
533
558
  file: c,
@@ -542,8 +567,8 @@ var me = () => `${Date.now()}-${Math.random().toString(36).slice(2)}`, he = (e)
542
567
  }
543
568
  let l = i.clipboardData.getData("text/plain");
544
569
  if (l.length > n) {
545
- let n = `${o} ${Ve(/* @__PURE__ */ new Date())}.txt`, a = new File([l], n, { type: "text/plain" }), s = {
546
- id: me(),
570
+ let n = `${o} ${Ke(/* @__PURE__ */ new Date())}.txt`, a = new File([l], n, { type: "text/plain" }), s = {
571
+ id: q(),
547
572
  name: n,
548
573
  contentType: "text/plain",
549
574
  file: a,
@@ -558,6 +583,6 @@ var me = () => `${Date.now()}-${Math.random().toString(36).slice(2)}`, he = (e)
558
583
  a,
559
584
  o
560
585
  ]) };
561
- }, We = 100;
586
+ }, Ye = 100;
562
587
  //#endregion
563
- export { we as ATTACHMENT_COLLAPSE_THRESHOLD, Y as ATTACHMENT_INPUT_CLASS, Pe as AttachmentCard, Re as AttachmentGroup, Fe as AttachmentTray, Be as FileDndOverlay, Q as LazyImageLoadStatus, We as MAX_UPLOADS_PER_MINUTE, me as generateAttachmentId, J as getAttachmentCardState, be as getAttachmentIcon, Se as getExtFromContentType, he as getNameWithoutExtension, ye as isMimeTypeAllowed, ve as mimeTypesToExtensionLabels, Ue as useClipboardPaste, Me as useLazyImageLoad };
588
+ export { Oe as ATTACHMENT_COLLAPSE_THRESHOLD, Y as ATTACHMENT_INPUT_CLASS, ze as AttachmentCard, Ue as AttachmentGroup, Be as AttachmentTray, Ge as FileDndOverlay, Q as LazyImageLoadStatus, Ye as MAX_UPLOADS_PER_MINUTE, q as generateAttachmentId, J as getAttachmentCardState, Se as getAttachmentIcon, we as getExtFromContentType, _e as getNameWithoutExtension, xe as isMimeTypeAllowed, be as mimeTypesToExtensionLabels, Je as useClipboardPaste, Le as useLazyImageLoad };
@@ -38,21 +38,23 @@ export interface AttachmentCardColors {
38
38
  backgroundSelected?: string;
39
39
  /** Tile border color in the selected state. */
40
40
  borderSelected?: string;
41
- /** Tile focus outline color. */
41
+ /** Tile focus ring color. Defaults to `--stroke-focus`. */
42
42
  focusOutline?: string;
43
43
  /** Tile background color in the error state. */
44
44
  backgroundError?: string;
45
45
  /** Tile border color in the error state. */
46
46
  borderError?: string;
47
- /** File name/type text color in the error state. */
47
+ /** Corner action icon color in the error state. Defaults to `--text-error`. */
48
48
  errorText?: string;
49
49
  /** File name text color. */
50
50
  nameText?: string;
51
51
  /** Type/meta text color. */
52
52
  typeText?: string;
53
- /** Hover download icon background color. */
53
+ /** Image placeholder icon color while the preview loads. Defaults to `--text-secondary`. */
54
+ placeholderIcon?: string;
55
+ /** Corner action button background, overriding the default of matching the tile's current background (not applied in the error state). */
54
56
  hoverIconBackground?: string;
55
- /** Hover download icon color. */
57
+ /** Corner action icon color on image tiles and during upload. Defaults to `--text-secondary`. */
56
58
  hoverIconColor?: string;
57
59
  /** Upload progress track background color. */
58
60
  trackBackground?: string;
@@ -61,7 +63,7 @@ export interface AttachmentCardColors {
61
63
  export interface AttachmentCardTypography {
62
64
  /** Utility class applied to the file name text. Defaults to `'dial-tiny-text'`. */
63
65
  fontClassName?: string;
64
- /** Utility class applied to the bottom meta label (file type / status). Defaults to `'dial-caption-text'`. */
66
+ /** Utility class applied to the bottom meta label (file type / status). Defaults to `'dial-tiny-text'`. */
65
67
  metaClassName?: string;
66
68
  }
67
69
  /** Combined style overrides (colors, typography, and shape) for the `AttachmentCard` component. */
@@ -1 +1 @@
1
- {"version":3,"file":"attachment-card.d.ts","sourceRoot":"","sources":["../../src/models/attachment-card.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"attachment-card.d.ts","sourceRoot":"","sources":["../../src/models/attachment-card.ts"],"names":[],"mappings":"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"}
@@ -26,9 +26,9 @@ export interface FileAttachmentLabels extends AttachmentTypeLabels {
26
26
  }
27
27
  /** Typography overrides for the `FileAttachment` component. */
28
28
  export interface FileAttachmentTypography {
29
- /** Typography class applied to the file name text. Defaults to `'dial-caption-text'`. */
29
+ /** Typography class applied to the file name text. Defaults to `'dial-tiny-text'`. */
30
30
  nameClassName?: string;
31
- /** Typography class applied to the bottom meta label (file type / status). Defaults to `'dial-caption-text'`. */
31
+ /** Typography class applied to the bottom meta label (file type / status). Defaults to `'dial-tiny-text'`. */
32
32
  metaClassName?: string;
33
33
  }
34
34
  /** Style overrides for the `FileAttachment` component. */
@@ -1 +1 @@
1
- {"version":3,"file":"attachment-file-row.d.ts","sourceRoot":"","sources":["../../src/models/attachment-file-row.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,iBAAiB,EAClB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,2DAA2D;AAC3D,MAAM,WAAW,oBAAqB,SAAQ,oBAAoB;IAChE,6GAA6G;IAC7G,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oNAAoN;IACpN,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uHAAuH;IACvH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2EAA2E;IAC3E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iFAAiF;IACjF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4GAA4G;IAC5G,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,2KAA2K;IAC3K,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2FAA2F;IAC3F,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gJAAgJ;IAChJ,iBAAiB,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC,CAAC;IACnE,oIAAoI;IACpI,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,+DAA+D;AAC/D,MAAM,WAAW,wBAAwB;IACvC,yFAAyF;IACzF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iHAAiH;IACjH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,0DAA0D;AAC1D,MAAM,WAAW,oBAAoB;IACnC,kEAAkE;IAClE,UAAU,CAAC,EAAE,wBAAwB,CAAC;IACtC,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wDAAwD;AACxD,MAAM,WAAW,mBAAmB;IAClC,0DAA0D;IAC1D,UAAU,EAAE,iBAAiB,CAAC;IAC9B,mGAAmG;IACnG,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,oDAAoD;IACpD,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,wDAAwD;IACxD,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,uDAAuD;IACvD,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,qDAAqD;IACrD,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,qIAAqI;IACrI,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,mCAAmC;IACnC,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,0EAA0E;IAC1E,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,yDAAyD;IACzD,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,iFAAiF;IACjF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,uHAAuH;IACvH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB"}
1
+ {"version":3,"file":"attachment-file-row.d.ts","sourceRoot":"","sources":["../../src/models/attachment-file-row.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,iBAAiB,EAClB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,2DAA2D;AAC3D,MAAM,WAAW,oBAAqB,SAAQ,oBAAoB;IAChE,6GAA6G;IAC7G,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oNAAoN;IACpN,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uHAAuH;IACvH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2EAA2E;IAC3E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iFAAiF;IACjF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4GAA4G;IAC5G,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,2KAA2K;IAC3K,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2FAA2F;IAC3F,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gJAAgJ;IAChJ,iBAAiB,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC,CAAC;IACnE,oIAAoI;IACpI,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,+DAA+D;AAC/D,MAAM,WAAW,wBAAwB;IACvC,sFAAsF;IACtF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,8GAA8G;IAC9G,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,0DAA0D;AAC1D,MAAM,WAAW,oBAAoB;IACnC,kEAAkE;IAClE,UAAU,CAAC,EAAE,wBAAwB,CAAC;IACtC,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wDAAwD;AACxD,MAAM,WAAW,mBAAmB;IAClC,0DAA0D;IAC1D,UAAU,EAAE,iBAAiB,CAAC;IAC9B,mGAAmG;IACnG,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,oDAAoD;IACpD,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,wDAAwD;IACxD,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,uDAAuD;IACvD,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,qDAAqD;IACrD,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,qIAAqI;IACrI,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,mCAAmC;IACnC,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,0EAA0E;IAC1E,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,yDAAyD;IACzD,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,iFAAiF;IACjF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,uHAAuH;IACvH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@epam/ai-dial-attachment-input",
3
3
  "description": "File attachment input components with upload validation, drag-and-drop, and progress tracking",
4
- "version": "1.3.0-dev.6",
4
+ "version": "1.3.0-dev.63",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
7
7
  "main": "./index.js",
@@ -20,9 +20,9 @@
20
20
  "@tabler/icons-react": "^3.44.0"
21
21
  },
22
22
  "peerDependencies": {
23
- "@epam/ai-dial-chat-shared": "1.3.0-dev.6",
23
+ "@epam/ai-dial-chat-shared": "1.3.0-dev.63",
24
24
  "react": "^19.2.8",
25
- "@epam/ai-dial-ui-kit": "^0.15.0"
25
+ "@epam/ai-dial-ui-kit": "^0.15.4"
26
26
  },
27
27
  "repository": {
28
28
  "type": "git",
@@ -24,6 +24,10 @@ export declare const isMimeTypeAllowed: (mimeType: string, allowedTypes: string[
24
24
  export declare const getAttachmentIcon: (rawContentType: string) => Icon;
25
25
  /** Derives a bare file extension (no leading dot) from a MIME type, e.g. `'application/pdf'` -> `'pdf'`. */
26
26
  export declare const getExtFromContentType: (contentType: string) => string | undefined;
27
+ /** Returns the attachment's bare file extension (no leading dot), from its content type first and its name second, or `undefined` when neither yields one. */
28
+ export declare const getAttachmentExtension: (attachment: DisplayAttachment) => string | undefined;
29
+ /** Returns `true` when the attachment's type glyph is a file-type icon rather than a prompt or pasted-text glyph. */
30
+ export declare const hasFileTypeGlyph: (attachment: DisplayAttachment) => boolean;
27
31
  /** Derives the display state (icons, labels, color classes) an AttachmentCard needs to render a given attachment. */
28
32
  export declare const getAttachmentCardState: (attachment: DisplayAttachment, typeLabels?: AttachmentTypeLabels) => AttachmentCardState;
29
33
  //# sourceMappingURL=attachment.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"attachment.d.ts","sourceRoot":"","sources":["../../src/utils/attachment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAQnE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAgChD,OAAO,KAAK,EACV,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,2BAA2B,CAAC;AAEnC,uDAAuD;AACvD,eAAO,MAAM,oBAAoB,QAAO,MACgB,CAAC;AAEzD,4GAA4G;AAC5G,eAAO,MAAM,uBAAuB,GAAI,MAAM,MAAM,KAAG,MAItD,CAAC;AAcF,uHAAuH;AACvH,eAAO,MAAM,0BAA0B,GACrC,OAAO,MAAM,EAAE,EACf,iBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAwB,KAC5D,MAoBF,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,iBAAiB,GAC5B,UAAU,MAAM,EAChB,cAAc,MAAM,EAAE,KACrB,OAsBF,CAAC;AAEF,uJAAuJ;AACvJ,eAAO,MAAM,iBAAiB,GAAI,gBAAgB,MAAM,KAAG,IAkF1D,CAAC;AAUF,4GAA4G;AAC5G,eAAO,MAAM,qBAAqB,GAChC,aAAa,MAAM,KAClB,MAAM,GAAG,SAUX,CAAC;AA6BF,qHAAqH;AACrH,eAAO,MAAM,sBAAsB,GACjC,YAAY,iBAAiB,EAC7B,aAAY,oBAAyB,KACpC,mBAiBF,CAAC"}
1
+ {"version":3,"file":"attachment.d.ts","sourceRoot":"","sources":["../../src/utils/attachment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAQnE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAgChD,OAAO,KAAK,EACV,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,2BAA2B,CAAC;AAEnC,uDAAuD;AACvD,eAAO,MAAM,oBAAoB,QAAO,MACgB,CAAC;AAEzD,4GAA4G;AAC5G,eAAO,MAAM,uBAAuB,GAAI,MAAM,MAAM,KAAG,MAItD,CAAC;AAcF,uHAAuH;AACvH,eAAO,MAAM,0BAA0B,GACrC,OAAO,MAAM,EAAE,EACf,iBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAwB,KAC5D,MAoBF,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,iBAAiB,GAC5B,UAAU,MAAM,EAChB,cAAc,MAAM,EAAE,KACrB,OAsBF,CAAC;AAEF,uJAAuJ;AACvJ,eAAO,MAAM,iBAAiB,GAAI,gBAAgB,MAAM,KAAG,IAkF1D,CAAC;AAUF,4GAA4G;AAC5G,eAAO,MAAM,qBAAqB,GAChC,aAAa,MAAM,KAClB,MAAM,GAAG,SAUX,CAAC;AAEF,8JAA8J;AAC9J,eAAO,MAAM,sBAAsB,GACjC,YAAY,iBAAiB,KAC5B,MAAM,GAAG,SAcX,CAAC;AAEF,qHAAqH;AACrH,eAAO,MAAM,gBAAgB,GAAI,YAAY,iBAAiB,KAAG,OAEtB,CAAC;AAkB5C,qHAAqH;AACrH,eAAO,MAAM,sBAAsB,GACjC,YAAY,iBAAiB,EAC7B,aAAY,oBAAyB,KACpC,mBAiBF,CAAC"}