@epam/ai-dial-attachment-input 1.2.0-dev.3 → 1.2.0-dev.300

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":"Actions.d.ts","sourceRoot":"","sources":["../../../../src/components/AttachmentCard/Attachments/Actions.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,EAAmB,MAAM,OAAO,CAAC;AAG5D,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;AA+BD,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;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 +1 @@
1
- {"version":3,"file":"File.d.ts","sourceRoot":"","sources":["../../../../src/components/AttachmentCard/Attachments/File.tsx"],"names":[],"mappings":"AAMA,OAAO,EACL,KAAK,EAAE,EAKR,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAmB/E,2HAA2H;AAC3H,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,mBAAmB,CAkPlD,CAAC"}
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,CA4QlD,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,EAAE,aAAa,EAAE,KAAK,EAAE,EAA+B,MAAM,OAAO,CAAC;AAM5E,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,CAkIpD,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;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 +1 @@
1
- {"version":3,"file":"AttachmentGroup.d.ts","sourceRoot":"","sources":["../../../src/components/AttachmentGroup/AttachmentGroup.tsx"],"names":[],"mappings":"AAkBA,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAO1E,kIAAkI;AAClI,eAAO,MAAM,eAAe,EAAE,EAAE,CAAC,oBAAoB,CAyIpD,CAAC"}
1
+ {"version":3,"file":"AttachmentGroup.d.ts","sourceRoot":"","sources":["../../../src/components/AttachmentGroup/AttachmentGroup.tsx"],"names":[],"mappings":"AAkBA,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAO1E,kIAAkI;AAClI,eAAO,MAAM,eAAe,EAAE,EAAE,CAAC,oBAAoB,CA2IpD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"AttachmentTray.d.ts","sourceRoot":"","sources":["../../../src/components/AttachmentTray/AttachmentTray.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAGxE,gHAAgH;AAChH,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,mBAAmB,CA2ClD,CAAC"}
1
+ {"version":3,"file":"AttachmentTray.d.ts","sourceRoot":"","sources":["../../../src/components/AttachmentTray/AttachmentTray.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAGxE,gHAAgH;AAChH,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,mBAAmB,CAwDlD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"FileDndOverlay.d.ts","sourceRoot":"","sources":["../../../src/components/FileDndOverlay/FileDndOverlay.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAa,EAAE,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAGzE,uGAAuG;AACvG,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,mBAAmB,CAsElD,CAAC"}
1
+ {"version":3,"file":"FileDndOverlay.d.ts","sourceRoot":"","sources":["../../../src/components/FileDndOverlay/FileDndOverlay.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAa,EAAE,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAGzE,uGAAuG;AACvG,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,mBAAmB,CA4ElD,CAAC"}
@@ -0,0 +1,17 @@
1
+ export declare const ATTACHMENT_INPUT_CLASS: {
2
+ /** The tray's `role="list"` root. */
3
+ readonly tray: "dial-ai-attachment-tray";
4
+ /** Each `role="listitem"` wrapper inside the tray. */
5
+ readonly trayItem: "dial-ai-attachment-tray-item";
6
+ /** The square tile element, for both image and non-previewable attachments. */
7
+ readonly tile: "dial-ai-attachment-tile";
8
+ /** The tile when selected, additive to `tile`. */
9
+ readonly tileSelected: "dial-ai-attachment-tile-selected";
10
+ /** The tile's filename element. */
11
+ readonly tileName: "dial-ai-attachment-tile-name";
12
+ /** The tile's type and size row. */
13
+ readonly tileType: "dial-ai-attachment-tile-type";
14
+ /** Every corner action button: download, retry, open-link, remove. */
15
+ readonly tileAction: "dial-ai-attachment-tile-action";
16
+ };
17
+ //# sourceMappingURL=public-class-names.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-class-names.d.ts","sourceRoot":"","sources":["../../src/constants/public-class-names.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,sBAAsB;IACjC,qCAAqC;;IAErC,sDAAsD;;IAEtD,+EAA+E;;IAE/E,kDAAkD;;IAElD,mCAAmC;;IAEnC,oCAAoC;;IAEpC,sEAAsE;;CAE9D,CAAC"}
package/index.css CHANGED
@@ -1,2 +1,2 @@
1
- ._tile_1whwz_1{background:var(--ai-tile-bg,var(--bg-layer-raised,#fcfcfc));border-color:var(--ai-tile-border,var(--stroke-secondary,#d1dbea))}._tile_1whwz_1._hovered_1whwz_5: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_1whwz_1:focus-visible{outline-color:var(--ai-tile-focus-outline,var(--stroke-focus-black,#161b2d))}._selected_1whwz_15{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_1whwz_20{background:var(--ai-tile-bg-error,var(--bg-error,#f3d6d8));border-color:var(--ai-tile-border-error,var(--stroke-error,#ae2f2f))}._nameText_1whwz_25{color:var(--ai-tile-name-text,var(--text-primary,#161b2d))}._typeText_1whwz_29{color:var(--ai-tile-type-text,var(--text-secondary,#57647a))}._retryIcon_1whwz_33{color:var(--ai-tile-error-text,var(--text-error,#ae2f2f))}._track_1whwz_37{background:var(--ai-tile-progress-track,var(--bg-backdrop,#161b2d4d))}._actionButton_1whwz_43{background:var(--ai-tile-hover-icon-bg,var(--bg-control-neutral-hover-muted,#e0e6f0))}._imageActionButton_1whwz_47{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*/
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}
package/index.d.ts CHANGED
@@ -11,5 +11,6 @@ export { useClipboardPaste, type UseClipboardPasteLabels, } from './hooks/useCli
11
11
  export { useLazyImageLoad, LazyImageLoadStatus, } from './hooks/useLazyImageLoad';
12
12
  export { generateAttachmentId, getAttachmentCardState, getExtFromContentType, getAttachmentIcon, getNameWithoutExtension, mimeTypesToExtensionLabels, isMimeTypeAllowed, } from './utils/attachment';
13
13
  export { ATTACHMENT_COLLAPSE_THRESHOLD } from './constants/attachment-group';
14
+ export { ATTACHMENT_INPUT_CLASS } from './constants/public-class-names';
14
15
  export { MAX_UPLOADS_PER_MINUTE } from './constants/upload';
15
16
  //# sourceMappingURL=index.d.ts.map
package/index.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAE5E,YAAY,EACV,mBAAmB,EACnB,oBAAoB,EACpB,wBAAwB,EACxB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAC9B,KAAK,qBAAqB,GAC3B,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,oBAAoB,EACpB,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,iBAAiB,EACjB,KAAK,uBAAuB,GAC7B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,iBAAiB,EACjB,uBAAuB,EACvB,0BAA0B,EAC1B,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAE5E,YAAY,EACV,mBAAmB,EACnB,oBAAoB,EACpB,wBAAwB,EACxB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAC9B,KAAK,qBAAqB,GAC3B,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,oBAAoB,EACpB,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,iBAAiB,EACjB,KAAK,uBAAuB,GAC7B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,iBAAiB,EACjB,uBAAuB,EACvB,0BAA0B,EAC1B,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC"}
package/index.js CHANGED
@@ -1,102 +1,99 @@
1
- import { AttachmentErrorReason as e, AttachmentType as t, MIME_TYPE_EXT_MAP as n, RequestStatus as r, buildCssVars as i, mergeClasses as a } from "@epam/ai-dial-chat-shared";
2
- import { useCallback as o, useEffect as s, useId as c, useMemo as l, useRef as u, useState as d } from "react";
3
- import { IconClipboard as f, IconDownload as p, IconExternalLink as m, IconFile as h, IconFileDescription as g, IconFileTypeBmp as _, IconFileTypeCss as v, IconFileTypeCsv as y, IconFileTypeDoc as b, IconFileTypeDocx as x, IconFileTypeHtml as S, IconFileTypeJpg as C, IconFileTypeJs as w, IconFileTypeJsx as T, IconFileTypePdf as E, IconFileTypePhp as D, IconFileTypePng as O, IconFileTypePpt as k, IconFileTypeRs as A, IconFileTypeSql as j, IconFileTypeSvg as M, IconFileTypeTs as N, IconFileTypeTsx as P, IconFileTypeTxt as F, IconFileTypeVue as I, IconFileTypeXls as L, IconFileTypeXml as R, IconFileTypeZip as ee, IconFileX as te, IconMusic as z, IconPaperclip as B, IconPhoto as V, IconReload as ne, IconTerminal2 as H, IconVideo as re, IconX as ie } from "@tabler/icons-react";
4
- import { DIAL_ICON_SIZE as U, DIAL_KIT_ICON_STROKE as W, ElementSize as ae, GhostIconButton as oe, Highlight as se, Skeleton as ce, SkeletonVariant as le, Spinner as ue, StaticIconButton as de } from "@epam/ai-dial-ui-kit";
5
- import { Fragment as fe, jsx as G, jsxs as K } from "react/jsx-runtime";
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
+ 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 ee, IconFileTypeZip as te, IconFileX as ne, IconMusic as re, IconPaperclip as ie, IconPhoto as B, IconReload as V, IconTerminal2 as ae, IconVideo as H, IconX as oe } from "@tabler/icons-react";
4
+ import { DIAL_ICON_SIZE as U, DIAL_KIT_ICON_STROKE as W, ElementSize as G, 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";
6
6
  //#region src/utils/attachment.ts
7
- var q = () => `${Date.now()}-${Math.random().toString(36).slice(2)}`, pe = (e) => {
7
+ var me = () => `${Date.now()}-${Math.random().toString(36).slice(2)}`, he = (e) => {
8
8
  if (e == null) return "";
9
9
  let t = e.lastIndexOf(".");
10
10
  return t > 0 ? e.slice(0, t) : e;
11
- }, me = {
11
+ }, ge = {
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
- }, he = { "image/jpeg": "JPEG" }, ge = (e, t = me) => e.map((e) => {
18
- let r = e.toLowerCase().split(";")[0].trim();
17
+ }, _e = { "image/jpeg": "JPEG" }, ve = (e, t = ge) => e.map((e) => {
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 = he[r];
24
- if (i) return i;
25
- let a = n[r];
26
- if (a) return a.toUpperCase();
27
- let o = r.split("/")[1];
28
- return o == null ? e.toUpperCase() : o.toUpperCase();
29
- }).join(", "), _e = (e, t) => t.length === 0 ? !1 : t.some((t) => {
30
- if (t === "*" || t === "*/*") return !0;
31
- if (t.endsWith("/*")) {
32
- let n = t.slice(0, -2);
33
- return e.startsWith(`${n}/`);
34
- }
35
- return e === t;
36
- }), ve = (e) => {
37
- if (!e) return h;
38
- if (e.startsWith("image/")) switch (e) {
39
- case "image/jpeg":
40
- case "image/jpg": return C;
41
- case "image/png": return O;
42
- case "image/svg+xml": return M;
43
- case "image/bmp": return _;
44
- default: return V;
23
+ let i = s(r), o = _e[i];
24
+ if (o) return o;
25
+ let c = n[i];
26
+ if (c) return c.toUpperCase();
27
+ let l = i.split("/")[1];
28
+ return l == null ? e.toUpperCase() : l.toUpperCase();
29
+ }).join(", "), ye = (e, t) => {
30
+ if (t.length === 0) return !1;
31
+ let n = a(e), r = s(n);
32
+ return t.some((e) => {
33
+ let t = a(e);
34
+ if (t === "*" || t === "*/*") return !0;
35
+ if (t.endsWith("/*")) {
36
+ let e = t.slice(0, -2);
37
+ return n.startsWith(`${e}/`) || r.startsWith(`${e}/`);
38
+ }
39
+ return r === s(t);
40
+ });
41
+ }, be = (e) => {
42
+ if (!e) return _;
43
+ let t = s(e);
44
+ if (t.startsWith("image/")) switch (t) {
45
+ case "image/jpeg": return T;
46
+ case "image/png": return A;
47
+ case "image/svg+xml": return P;
48
+ case "image/bmp": return y;
49
+ default: return B;
45
50
  }
46
- if (e.startsWith("video/")) return re;
47
- if (e.startsWith("audio/")) return z;
48
- switch (e) {
49
- case "application/pdf": return E;
50
- case "application/msword":
51
- case "application/vnd.ms-word": return b;
52
- case "application/vnd.openxmlformats-officedocument.wordprocessingml.document": return x;
53
- case "application/vnd.ms-powerpoint": return k;
54
- case "application/vnd.openxmlformats-officedocument.presentationml.presentation": return k;
55
- case "application/vnd.ms-excel": return L;
56
- case "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": return L;
51
+ if (t.startsWith("video/")) return H;
52
+ if (t.startsWith("audio/")) return re;
53
+ switch (t) {
54
+ case "application/pdf": return O;
55
+ case "application/msword": return S;
56
+ case "application/vnd.openxmlformats-officedocument.wordprocessingml.document": return C;
57
+ case "application/vnd.ms-powerpoint": return j;
58
+ case "application/vnd.openxmlformats-officedocument.presentationml.presentation": return j;
59
+ case "application/vnd.ms-excel": return z;
60
+ case "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": return z;
57
61
  case "application/zip":
58
- case "application/x-zip-compressed":
59
- case "application/x-rar-compressed":
62
+ case "application/vnd.rar":
60
63
  case "application/x-7z-compressed":
61
64
  case "application/gzip":
62
- case "application/x-tar": return ee;
63
- case "text/csv": return y;
64
- case "text/plain": return F;
65
+ case "application/x-tar": return te;
66
+ case "text/csv": return x;
67
+ case "text/plain": return L;
65
68
  case "text/html":
66
- case "application/xhtml+xml": return S;
67
- case "text/xml":
68
- case "application/xml": return R;
69
- case "application/sql":
70
- case "text/x-sql": return j;
71
- case "text/javascript":
72
- case "application/javascript": return w;
73
- case "text/jsx": return T;
74
- case "application/typescript":
75
- case "text/typescript": return N;
76
- case "text/tsx": return P;
77
- case "text/css": return v;
78
- case "text/x-php":
79
- case "application/x-php": return D;
80
- case "text/x-rustsrc":
81
- case "application/x-rust": return A;
82
- case "text/x-vue": return I;
83
- default: return h;
69
+ case "application/xhtml+xml": return w;
70
+ case "application/xml": return ee;
71
+ case "application/sql": return N;
72
+ case "text/javascript": return E;
73
+ case "text/jsx": return D;
74
+ case "text/typescript": return F;
75
+ case "text/tsx": return I;
76
+ case "text/css": return b;
77
+ case "text/x-php": return k;
78
+ case "text/x-rustsrc": return M;
79
+ case "text/x-vue": return R;
80
+ default: return _;
84
81
  }
85
- }, ye = (e) => {
82
+ }, xe = (e) => {
86
83
  let { type: n, contentType: r } = e;
87
- return n === t.Prompt ? H : n === t.Pasted ? f : n === t.Image ? V : ve(r ?? "");
88
- }, be = (e) => {
89
- let t = e.toLowerCase().split(";")[0].trim(), r = n[t];
84
+ return n === t.Prompt ? ae : n === t.Pasted ? m : n === t.Image ? B : be(r ?? "");
85
+ }, Se = (e) => {
86
+ let t = s(e), r = n[t];
90
87
  if (r) return r;
91
88
  let i = t.split("/")[1];
92
89
  if (i && !i.startsWith("vnd.") && !i.includes("+")) return i;
93
- }, xe = (e, n) => {
90
+ }, Ce = (e, n) => {
94
91
  let { type: r, name: i, contentType: a } = e;
95
92
  if (r === t.Prompt) return n.promptLabel ?? "Prompt";
96
93
  if (r === t.Pasted) return n.pastedLabel ?? "Pasted";
97
94
  if (r === t.Image) return n.imageLabel ?? "Image";
98
95
  if (a) {
99
- let e = be(a);
96
+ let e = Se(a);
100
97
  if (e) return `.${e}`;
101
98
  }
102
99
  if (i == null) return "";
@@ -109,157 +106,168 @@ var q = () => `${Date.now()}-${Math.random().toString(36).slice(2)}`, pe = (e) =
109
106
  isError: l,
110
107
  isImage: u,
111
108
  isLink: d,
112
- BottomIcon: d ? null : ye(e),
113
- typeLabel: d ? null : xe(e, n)
109
+ BottomIcon: d ? null : xe(e),
110
+ typeLabel: d ? null : Ce(e, n)
114
111
  };
115
- }, Se = 5, Ce = "flex size-[84px] items-center justify-center rounded-xl border", Y = {
116
- tile: "_tile_1whwz_1",
117
- hovered: "_hovered_1whwz_5",
118
- selected: "_selected_1whwz_15",
119
- tileError: "_tileError_1whwz_20",
120
- nameText: "_nameText_1whwz_25",
121
- typeText: "_typeText_1whwz_29",
122
- retryIcon: "_retryIcon_1whwz_33",
123
- track: "_track_1whwz_37",
124
- actionButton: "_actionButton_1whwz_43",
125
- imageActionButton: "_imageActionButton_1whwz_47"
126
- }, X = ({ ariaLabel: e, errorTitle: t, errorDescId: n, onClick: r, id: i, icon: o, className: s }) => /* @__PURE__ */ G(de, {
127
- icon: o,
128
- size: ae.Small,
129
- className: a("opacity-0 focus-visible:opacity-100 group-focus-within/attachment-tile:opacity-100 group-hover/attachment-tile:opacity-100", Y.actionButton, s),
112
+ }, we = 5, Te = "flex size-[84px] items-center justify-center rounded-xl border", Y = {
113
+ tray: "dial-ai-attachment-tray",
114
+ trayItem: "dial-ai-attachment-tray-item",
115
+ tile: "dial-ai-attachment-tile",
116
+ tileSelected: "dial-ai-attachment-tile-selected",
117
+ tileName: "dial-ai-attachment-tile-name",
118
+ tileType: "dial-ai-attachment-tile-type",
119
+ tileAction: "dial-ai-attachment-tile-action"
120
+ }, 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, {
132
+ icon: a,
133
+ size: G.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),
130
135
  "aria-label": e,
131
136
  "aria-describedby": t ? n : void 0,
132
137
  onClick: (e) => {
133
138
  e.stopPropagation(), r(i);
134
139
  }
135
- }), we = ({ ...e }) => /* @__PURE__ */ G(X, {
136
- icon: /* @__PURE__ */ G(ne, {
140
+ }), Ee = ({ ...e }) => /* @__PURE__ */ K(Z, {
141
+ icon: /* @__PURE__ */ K(V, {
137
142
  size: U.SM,
138
143
  "aria-hidden": !0,
139
144
  stroke: W
140
145
  }),
141
- className: Y.retryIcon,
146
+ className: X.retryIcon,
142
147
  ...e
143
- }), Te = ({ ...e }) => /* @__PURE__ */ G(X, {
144
- icon: /* @__PURE__ */ G(p, {
148
+ }), De = ({ ...e }) => /* @__PURE__ */ K(Z, {
149
+ icon: /* @__PURE__ */ K(h, {
145
150
  size: U.SM,
146
151
  "aria-hidden": !0,
147
152
  stroke: W
148
153
  }),
149
154
  ...e
150
- }), Ee = ({ ...e }) => /* @__PURE__ */ G(X, {
151
- icon: /* @__PURE__ */ G(m, {
155
+ }), Oe = ({ ...e }) => /* @__PURE__ */ K(Z, {
156
+ icon: /* @__PURE__ */ K(g, {
152
157
  size: U.SM,
153
158
  "aria-hidden": !0,
154
159
  stroke: W
155
160
  }),
156
161
  ...e
157
- }), De = ({ ...e }) => /* @__PURE__ */ G(X, {
158
- icon: /* @__PURE__ */ G(ie, {
162
+ }), ke = ({ ...e }) => /* @__PURE__ */ K(Z, {
163
+ icon: /* @__PURE__ */ K(oe, {
159
164
  size: U.SM,
160
165
  "aria-hidden": !0,
161
166
  stroke: W
162
167
  }),
163
168
  ...e
164
- }), Oe = {
169
+ }), Ae = {
165
170
  [e.Network]: "Upload failed · network error",
166
- [e.UnsupportedType]: "Upload failed · unsupported file type"
167
- }, ke = ({ attachment: t, searchQuery: n = "", onClick: i, onRetry: s, labels: u, styles: d, onDownload: f, isPasted: p, isLink: m, cssVars: h, onExpand: g, isExpandable: _, onRemove: v, isSelected: y }) => {
168
- let { clickLabel: b = "Download attachment", retryLabel: x = "Retry upload", removeLabel: S = "Remove attachment", openInNewTabLabel: C = "Open in new tab", sizeLabel: w, uploadingLabel: T = "Uploading", errorReasonLabels: E, genericErrorLabel: D = "Upload failed" } = u ?? {}, { typography: O, className: k } = d ?? {}, { id: A, name: j, status: M, errorReason: N } = t, P = M === r.Loading, F = M === r.Error, I = c(), L = F ? N && (E?.[N] ?? Oe[N]) || D : "", { BottomIcon: R, typeLabel: ee } = J(t), te = !F && !P && f && !m, z = F && !!s && N !== e.UnsupportedType, B = Number(!!te) + Number(!!z) + Number(!!m) + Number(!!v), V = B > 1 ? "pe-11" : B === 1 ? "pe-5" : void 0, ne = (e) => {
169
- e.target === e.currentTarget && (e.key === "Enter" || e.key === " ") && (e.preventDefault(), i?.(t.id));
170
- }, H = l(() => p ? j : pe(j), [p, j]), re = o(() => {
171
+ [e.UnsupportedType]: "Upload failed · unsupported file type",
172
+ [e.FileTooLarge]: "Upload failed · file too large"
173
+ }, je = ({ attachment: t, searchQuery: n = "", onClick: i, onRetry: a, labels: s, styles: l, onDownload: f, isPasted: p, isLink: m, cssVars: h, onExpand: g, isExpandable: _, onRemove: v, isSelected: y }) => {
174
+ let { clickLabel: b = "Download attachment", expandLabel: x = "Expand pasted text", downloadLabel: S = "Download attachment", retryLabel: C = "Retry upload", removeLabel: w = "Remove attachment", openInNewTabLabel: T = "Open in new tab", sizeLabel: E, uploadingLabel: D = "Uploading", errorReasonLabels: O, genericErrorLabel: k = "Upload failed" } = s ?? {}, { typography: A, className: j } = l ?? {}, { id: M, name: N, status: P, errorReason: F } = t, I = P === r.Loading, L = P === r.Error, R = u(), z = L ? F && (O?.[F] ?? Ae[F]) || k : "", { BottomIcon: ee, typeLabel: te } = J(t), ne = !L && !I && f && !m, re = L && !!a && F !== e.UnsupportedType && F !== e.FileTooLarge, ie = Number(!!ne) + Number(!!re) + Number(!!m) + Number(!!v), B = ie > 1 ? "pe-11" : ie === 1 ? "pe-5" : void 0, V = !!_ && g !== void 0, ae = V || i !== void 0, H = () => {
175
+ V ? g(M) : i?.(M);
176
+ }, oe = (e) => {
177
+ e.target === e.currentTarget && (e.key === "Enter" || e.key === " ") && (e.preventDefault(), H());
178
+ }, U = d(() => p ? N : he(N), [p, N]), W = c(() => {
171
179
  window.open(t.referenceUrl, "_blank", "noopener,noreferrer");
172
- }, [t]), ie = a(Ce, "group/attachment-tile relative flex-col justify-between items-start gap-1 overflow-hidden p-1.5", Y.tile, !F && Y.hovered, y && Y.selected, F && Y.tileError), U = /* @__PURE__ */ G("div", {
173
- title: H,
174
- className: a(O?.nameClassName ?? "dial-caption-text", "line-clamp-2 w-full min-w-0 break-words", Y.nameText, !F && V),
175
- children: n ? /* @__PURE__ */ G(se, {
176
- text: H,
180
+ }, [t]), G = o(Te, "group/attachment-tile relative flex-col justify-between items-start gap-1 overflow-hidden p-1.5", X.tile, !L && X.hovered, y && X.selected, L && X.tileError, Y.tile, y && Y.tileSelected), se = /* @__PURE__ */ K("div", {
181
+ title: U,
182
+ className: o(A?.nameClassName ?? "dial-caption-text", "line-clamp-2 w-full min-w-0 break-words", X.nameText, !L && B, Y.tileName),
183
+ children: n ? /* @__PURE__ */ K(ce, {
184
+ text: U,
177
185
  query: n,
178
186
  maxLines: 2
179
- }) : H
180
- }), W = R && /* @__PURE__ */ K("div", {
181
- className: a("flex w-full items-center gap-1", F && V),
182
- children: [/* @__PURE__ */ G(R, {
187
+ }) : U
188
+ }), le = ee && /* @__PURE__ */ q("div", {
189
+ className: o("flex w-full items-center gap-1", L && B, Y.tileType),
190
+ children: [/* @__PURE__ */ K(ee, {
183
191
  size: 16,
184
- className: Y.typeText,
192
+ className: X.typeText,
185
193
  "aria-hidden": !0
186
- }), /* @__PURE__ */ G("span", {
187
- className: a(O?.metaClassName ?? "dial-caption-text", "min-w-0 flex-1 truncate", Y.typeText),
188
- children: w ? `${ee} · ${w}` : ee
194
+ }), /* @__PURE__ */ K("span", {
195
+ className: o(A?.metaClassName ?? "dial-caption-text", "min-w-0 flex-1 truncate", X.typeText),
196
+ children: E ? `${te} · ${E}` : te
189
197
  })]
190
- }), ae = () => {
191
- _ && g ? g(A) : i && i(A);
192
- }, oe = /* @__PURE__ */ K(fe, { children: [
193
- U,
194
- W,
195
- P && /* @__PURE__ */ G("div", {
198
+ }), ue = ae ? {
199
+ role: "button",
200
+ tabIndex: 0,
201
+ "aria-label": V ? x : b,
202
+ onClick: H,
203
+ onKeyDown: oe
204
+ } : {}, fe = /* @__PURE__ */ q(pe, { children: [
205
+ se,
206
+ le,
207
+ I && /* @__PURE__ */ K("div", {
196
208
  role: "progressbar",
197
- "aria-label": T,
198
- className: a("absolute start-[-1px] top-[-1px] flex size-full items-center justify-center rounded", Y.track),
199
- children: /* @__PURE__ */ G(ue, { size: 32 })
209
+ "aria-label": D,
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 })
200
212
  }),
201
- /* @__PURE__ */ K("div", {
213
+ /* @__PURE__ */ q("div", {
202
214
  className: "absolute end-1 top-1 flex gap-1",
203
215
  children: [
204
- te && /* @__PURE__ */ G(Te, {
205
- ariaLabel: b,
206
- errorTitle: L,
207
- errorDescId: I,
216
+ ne && /* @__PURE__ */ K(De, {
217
+ ariaLabel: S,
218
+ errorTitle: z,
219
+ errorDescId: R,
208
220
  onClick: f,
209
- id: A
210
- }),
211
- z && /* @__PURE__ */ G(we, {
212
- ariaLabel: x,
213
- errorTitle: L,
214
- errorDescId: I,
215
- onClick: s,
216
- id: A
221
+ id: M
217
222
  }),
218
- m && /* @__PURE__ */ G(Ee, {
223
+ re && /* @__PURE__ */ K(Ee, {
219
224
  ariaLabel: C,
220
- errorTitle: L,
221
- errorDescId: I,
222
- onClick: re
225
+ errorTitle: z,
226
+ errorDescId: R,
227
+ onClick: a,
228
+ id: M
223
229
  }),
224
- v && /* @__PURE__ */ G(De, {
225
- ariaLabel: S,
226
- errorTitle: L,
227
- errorDescId: I,
230
+ m && /* @__PURE__ */ K(Oe, {
231
+ ariaLabel: T,
232
+ errorTitle: z,
233
+ errorDescId: R,
234
+ onClick: W
235
+ }),
236
+ v && /* @__PURE__ */ K(ke, {
237
+ ariaLabel: w,
238
+ errorTitle: z,
239
+ errorDescId: R,
228
240
  onClick: v,
229
- id: A
241
+ id: M
230
242
  })
231
243
  ]
232
244
  }),
233
- F && /* @__PURE__ */ G("span", {
234
- id: I,
245
+ L && /* @__PURE__ */ K("span", {
246
+ id: R,
235
247
  role: "status",
236
248
  "aria-live": "polite",
237
249
  className: "sr-only",
238
- children: L
250
+ children: z
239
251
  })
240
252
  ] });
241
- return /* @__PURE__ */ G("div", {
253
+ return /* @__PURE__ */ K("div", {
242
254
  style: h,
243
- className: a("inline-flex", k),
244
- children: /* @__PURE__ */ G("div", {
245
- role: "button",
246
- tabIndex: 0,
247
- "aria-label": b,
248
- "aria-busy": P,
249
- onClick: ae,
250
- onKeyDown: ne,
255
+ className: o("inline-flex", j),
256
+ children: /* @__PURE__ */ K("div", {
257
+ ...ue,
258
+ "aria-busy": I,
251
259
  style: h,
252
- className: a(ie, "cursor-pointer focus-within:outline focus-within:outline-1 focus-within:outline-offset-1"),
253
- children: oe
260
+ className: o(G, ae && "cursor-pointer", "focus-within:outline focus-within:outline-1 focus-within:outline-offset-1"),
261
+ children: fe
254
262
  })
255
263
  });
256
- }, Z = /* @__PURE__ */ function(e) {
264
+ }, Q = /* @__PURE__ */ function(e) {
257
265
  return e.Idle = "idle", e.Loading = "loading", e.Loaded = "loaded", e.Error = "error", e;
258
- }({}), Ae = ({ enabled: e, src: t }) => {
259
- let n = u(null), [r, i] = d("idle");
260
- return s(() => {
266
+ }({}), Me = ({ enabled: e, src: t }) => {
267
+ let n = f(null), [r, i] = p("idle");
268
+ return l(() => {
261
269
  i(e && t ? "loading" : "idle");
262
- }, [e, t]), s(() => {
270
+ }, [e, t]), l(() => {
263
271
  let r = n.current;
264
272
  if (!r || !e || !t) return;
265
273
  let a = () => i("loaded"), o = () => i("error");
@@ -270,66 +278,68 @@ var q = () => `${Date.now()}-${Math.random().toString(36).slice(2)}`, pe = (e) =
270
278
  imageRef: n,
271
279
  imageLoadStatus: r
272
280
  };
273
- }, je = ({ attachment: e, onExpand: n, onClick: r, labels: i, onRemove: o, cssVars: s, onDownload: c, styles: u, isSelected: d }) => {
274
- let { clickLabel: f = "Open attachment", expandLabel: p = "Expand pasted text", removeLabel: m = "Remove attachment", downloadLabel: h = "Download attachment" } = i ?? {}, { className: g } = u ?? {}, { id: _, name: v } = e, y = e.previewUrl ?? e.url, b = e.type === t.Pasted && n !== void 0, { isLoading: x, isError: S, isImage: C } = l(() => J(e), [e]), w = r !== void 0 && !b && !x && !S, { imageRef: T, imageLoadStatus: E } = Ae({
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({
275
283
  enabled: C,
276
284
  src: y
277
- }), D = () => {
285
+ }), O = () => {
278
286
  b && n ? n(_) : w && r && r(_);
279
- };
280
- return /* @__PURE__ */ G("div", {
281
- className: a(Ce, "group/attachment-tile", w && "cursor-pointer", Y.tile, d && Y.selected, g),
282
- onClick: D,
283
- onKeyDown: (e) => {
284
- e.target === e.currentTarget && (e.key === "Enter" || e.key === " ") && (e.preventDefault(), D());
285
- },
286
- tabIndex: 0,
287
+ }, k = T ? {
287
288
  role: "button",
289
+ tabIndex: 0,
290
+ "aria-label": b ? p : f,
291
+ onClick: O,
292
+ onKeyDown: (e) => {
293
+ e.target === e.currentTarget && (e.key === "Enter" || e.key === " ") && (e.preventDefault(), O());
294
+ }
295
+ } : {};
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,
288
299
  style: s,
289
- "aria-label": w ? f : b ? p : void 0,
290
- children: /* @__PURE__ */ K("div", {
300
+ children: /* @__PURE__ */ q("div", {
291
301
  className: "relative h-full w-full overflow-hidden",
292
302
  children: [
293
- /* @__PURE__ */ K("div", {
303
+ /* @__PURE__ */ q("div", {
294
304
  className: "absolute end-1 top-1 z-10 flex gap-1",
295
- children: [o && /* @__PURE__ */ G(De, {
305
+ children: [a && /* @__PURE__ */ K(ke, {
296
306
  ariaLabel: m,
297
- onClick: o,
307
+ onClick: a,
298
308
  id: _,
299
- className: Y.imageActionButton
300
- }), c && /* @__PURE__ */ G(Te, {
309
+ className: X.imageActionButton
310
+ }), c && /* @__PURE__ */ K(De, {
301
311
  ariaLabel: h,
302
312
  onClick: c,
303
313
  id: _,
304
- className: Y.imageActionButton
314
+ className: X.imageActionButton
305
315
  })]
306
316
  }),
307
- E !== Z.Loaded && /* @__PURE__ */ G(ce, {
308
- variant: le.Rectangular,
317
+ D !== Q.Loaded && /* @__PURE__ */ K(le, {
318
+ variant: ue.Rectangular,
309
319
  width: "100%",
310
320
  height: "100%",
311
- active: E === Z.Loading,
312
- overlay: /* @__PURE__ */ G(V, {
321
+ active: D === Q.Loading,
322
+ overlay: /* @__PURE__ */ K(B, {
313
323
  size: U.LG,
314
- className: Y.typeText,
324
+ className: X.typeText,
315
325
  "aria-hidden": !0,
316
326
  stroke: W
317
327
  }),
318
328
  className: "absolute inset-0 rounded-xl"
319
329
  }),
320
- /* @__PURE__ */ G("img", {
321
- ref: T,
330
+ /* @__PURE__ */ K("img", {
331
+ ref: E,
322
332
  src: y,
323
333
  alt: v,
324
334
  loading: "lazy",
325
335
  decoding: "async",
326
- className: a("h-full w-full rounded-xl object-cover transition-opacity duration-200", E === Z.Loaded ? "opacity-100" : "opacity-0")
336
+ className: o("h-full w-full rounded-xl object-cover transition-opacity duration-200", D === Q.Loaded ? "opacity-100" : "opacity-0")
327
337
  })
328
338
  ]
329
339
  })
330
340
  });
331
- }, Q = ({ attachment: e, searchQuery: n = "", onRemove: r, onRetry: a, onExpand: o, onClick: s, onDownload: c, labels: u, styles: d, isSelected: f }) => {
332
- let { colors: p } = d ?? {}, m = e.type === t.Pasted, h = m && o !== void 0, g = i({
341
+ }, Pe = ({ attachment: e, searchQuery: n = "", onRemove: r, onRetry: a, onExpand: o, onClick: s, onDownload: c, labels: l, styles: u, isSelected: f }) => {
342
+ let { colors: p } = u ?? {}, m = e.type === t.Pasted, h = m && o !== void 0, g = i({
333
343
  "--ai-tile-bg": p?.background,
334
344
  "--ai-tile-border": p?.border,
335
345
  "--ai-tile-bg-hover": p?.backgroundHover,
@@ -345,18 +355,18 @@ var q = () => `${Date.now()}-${Math.random().toString(36).slice(2)}`, pe = (e) =
345
355
  "--ai-tile-hover-icon-bg": p?.hoverIconBackground,
346
356
  "--ai-tile-hover-icon-color": p?.hoverIconColor,
347
357
  "--ai-tile-progress-track": p?.trackBackground
348
- }), { isImage: _, isLink: v } = l(() => J(e), [e]);
349
- return _ ? /* @__PURE__ */ G(je, {
358
+ }), { isImage: _, isLink: v } = d(() => J(e), [e]);
359
+ return _ ? /* @__PURE__ */ K(Ne, {
350
360
  attachment: e,
351
- labels: u,
361
+ labels: l,
352
362
  onClick: s,
353
363
  onExpand: o,
354
- styles: d,
364
+ styles: u,
355
365
  onRemove: r,
356
366
  cssVars: g,
357
367
  onDownload: c,
358
368
  isSelected: f
359
- }) : /* @__PURE__ */ G(ke, {
369
+ }) : /* @__PURE__ */ K(je, {
360
370
  attachment: e,
361
371
  searchQuery: n,
362
372
  onClick: s,
@@ -365,22 +375,23 @@ var q = () => `${Date.now()}-${Math.random().toString(36).slice(2)}`, pe = (e) =
365
375
  onDownload: c,
366
376
  isLink: v,
367
377
  isPasted: m,
368
- styles: d,
369
- labels: u,
378
+ styles: u,
379
+ labels: l,
370
380
  onExpand: o,
371
381
  cssVars: g,
372
382
  isExpandable: h,
373
383
  isSelected: f
374
384
  });
375
- }, Me = ({ attachments: e, onRemove: t, onRetry: n, onExpand: r, onAttachmentClick: i, labels: o, styles: s }) => {
376
- let { ariaLabel: c = "Attached files", removeLabel: l, retryLabel: u, clickLabel: d, uploadingLabel: f } = o ?? {}, { className: p } = s ?? {};
377
- return e.length === 0 ? null : /* @__PURE__ */ G("div", {
385
+ }, Fe = ({ attachments: e, onRemove: t, onRetry: n, onExpand: r, onAttachmentClick: i, labels: a, styles: s }) => {
386
+ let { ariaLabel: c = "Attached files", removeLabel: l, retryLabel: u, clickLabel: d, expandLabel: f, uploadingLabel: p } = a ?? {}, { className: m, card: h } = s ?? {};
387
+ return e.length === 0 ? null : /* @__PURE__ */ K("div", {
378
388
  role: "list",
379
389
  "aria-label": c,
380
- className: a("flex w-full min-w-0 gap-2 overflow-x-auto", p),
381
- children: e.map((e) => /* @__PURE__ */ G("div", {
390
+ className: o("flex w-full min-w-0 gap-2 overflow-x-auto", m, Y.tray),
391
+ children: e.map((e) => /* @__PURE__ */ K("div", {
382
392
  role: "listitem",
383
- children: /* @__PURE__ */ G(Q, {
393
+ className: Y.trayItem,
394
+ children: /* @__PURE__ */ K(Pe, {
384
395
  attachment: e,
385
396
  onRemove: t,
386
397
  onRetry: n,
@@ -389,132 +400,136 @@ var q = () => `${Date.now()}-${Math.random().toString(36).slice(2)}`, pe = (e) =
389
400
  removeLabel: l,
390
401
  retryLabel: u,
391
402
  clickLabel: d,
392
- uploadingLabel: f
403
+ expandLabel: f,
404
+ uploadingLabel: p
393
405
  },
406
+ styles: h,
394
407
  onClick: i
395
408
  })
396
409
  }, e.id))
397
410
  });
398
- }, Ne = {
411
+ }, Ie = {
399
412
  headerIcon: "_headerIcon_1dmgi_1",
400
413
  headerLabel: "_headerLabel_1dmgi_2"
401
- }, Pe = (e, t) => `${e} ${t}${e === 1 ? "" : "s"}`, Fe = ({ attachments: e, onAttachmentClick: n, onDownloadAll: o, onRetry: s, labels: c, styles: l, selectedAttachmentId: u }) => {
402
- let { ariaLabel: d = "Attachments", clickLabel: f = "Download attachment", retryLabel: m = "Retry upload", downloadAllLabel: g = "Download all", openInNewTabLabel: _, getHeaderLabel: v = (e) => Pe(e, "attachment"), promptLabel: y, pastedLabel: b, imageLabel: x } = c ?? {}, { typography: S, colors: C, className: w } = l ?? {}, T = i({ "--ai-group-text": C?.text });
414
+ }, Le = (e, t) => `${e} ${t}${e === 1 ? "" : "s"}`, Re = ({ attachments: e, onAttachmentClick: n, onDownloadAll: a, onRetry: s, labels: c, styles: l, selectedAttachmentId: u }) => {
415
+ 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 });
403
416
  if (e.length === 0) return null;
404
- let E = e.some((e) => e.type === t.Image), D = e.some((e) => e.type !== t.Image), O = E && D, k = e.length >= 5, A = O ? B : E ? V : h, j = v(e.length), M = () => {
417
+ 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 ? ie : D ? B : _, M = y(e.length), N = () => {
405
418
  let t = e.filter((e) => e.status === r.Idle);
406
- o ? o(t) : t.forEach((e) => n?.(e.id));
407
- }, N = (t) => {
419
+ a ? a(t) : t.forEach((e) => n?.(e.id));
420
+ }, P = (t) => {
408
421
  let n = e.find((e) => e.id === t);
409
- n && o?.([n]);
422
+ n && a?.([n]);
410
423
  };
411
- return /* @__PURE__ */ K("div", {
424
+ return /* @__PURE__ */ q("div", {
412
425
  role: "group",
413
426
  "aria-label": d,
414
- style: T,
415
- className: a("flex flex-col gap-1", k ? "w-full min-w-0 max-w-[492px]" : "max-w-[420px]", Ne.container, w),
416
- children: [/* @__PURE__ */ K("div", {
427
+ style: E,
428
+ className: o("flex flex-col gap-1", A ? "w-full min-w-0 max-w-[492px]" : "max-w-[420px]", Ie.container, T),
429
+ children: [/* @__PURE__ */ q("div", {
417
430
  className: "flex items-center justify-between",
418
- children: [/* @__PURE__ */ K("div", {
431
+ children: [/* @__PURE__ */ q("div", {
419
432
  className: "flex items-center gap-1",
420
- children: [/* @__PURE__ */ G(A, {
433
+ children: [/* @__PURE__ */ K(j, {
421
434
  size: U.SM,
422
- className: a("shrink-0", Ne.headerIcon),
435
+ className: o("shrink-0", Ie.headerIcon),
423
436
  "aria-hidden": !0
424
- }), /* @__PURE__ */ G("span", {
425
- className: a(S?.headerLabelClassName ?? "dial-tiny-semi-text", Ne.headerLabel),
426
- children: j
437
+ }), /* @__PURE__ */ K("span", {
438
+ className: o(C?.headerLabelClassName ?? "dial-tiny-semi-text", Ie.headerLabel),
439
+ children: M
427
440
  })]
428
- }), e.length >= 2 && (o || n) && /* @__PURE__ */ G(oe, {
429
- icon: /* @__PURE__ */ G(p, {
441
+ }), e.length >= 2 && (a || n) && /* @__PURE__ */ K(se, {
442
+ icon: /* @__PURE__ */ K(h, {
430
443
  size: U.SM,
431
444
  "aria-hidden": !0,
432
445
  stroke: W
433
446
  }),
434
- size: ae.Small,
447
+ size: G.Small,
435
448
  "aria-label": g,
436
- onClick: M
449
+ onClick: N
437
450
  })]
438
- }), /* @__PURE__ */ G("div", {
451
+ }), /* @__PURE__ */ K("div", {
439
452
  role: "list",
440
- "aria-label": j,
441
- className: a("gap-3", k ? "grid grid-cols-[repeat(5,83px)]" : "flex flex-wrap"),
442
- children: e.map((e, t) => /* @__PURE__ */ G("div", {
453
+ "aria-label": M,
454
+ className: o("gap-3", A ? "grid grid-cols-[repeat(5,83px)]" : "flex flex-wrap"),
455
+ children: e.map((e, t) => /* @__PURE__ */ K("div", {
443
456
  role: "listitem",
444
- children: /* @__PURE__ */ G(Q, {
457
+ children: /* @__PURE__ */ K(Pe, {
445
458
  attachment: e,
446
459
  onClick: n,
447
- onDownload: N,
460
+ onDownload: a ? P : void 0,
448
461
  onRetry: s,
449
462
  labels: {
450
463
  clickLabel: f,
464
+ downloadLabel: p,
451
465
  retryLabel: m,
452
- promptLabel: y,
453
- pastedLabel: b,
454
- imageLabel: x,
455
- openInNewTabLabel: _
466
+ promptLabel: b,
467
+ pastedLabel: x,
468
+ imageLabel: S,
469
+ openInNewTabLabel: v
456
470
  },
457
471
  isSelected: e.id === u
458
472
  })
459
473
  }, `${e.id}-${t}`))
460
474
  })]
461
475
  });
462
- }, Ie = {
476
+ }, ze = {
463
477
  overlay: "_overlay_mzpdp_1",
464
478
  icon: "_icon_mzpdp_5",
465
479
  deniedIcon: "_deniedIcon_mzpdp_9"
466
- }, Le = ({ isVisible: e, isAttachmentsAllowed: t = !0, labels: n, styles: r }) => {
467
- let { title: o, subtitle: s } = n ?? {}, { colors: c, typography: l } = r ?? {};
480
+ }, Be = ({ isVisible: e, isAttachmentsAllowed: t = !0, labels: n, styles: r }) => {
481
+ let { title: a, subtitle: s } = n ?? {}, { colors: c, typography: l } = r ?? {};
468
482
  if (!e) return null;
469
483
  let u = i({
470
484
  "--ai-fd-bg": c?.background,
471
485
  "--ai-fd-icon": c?.icon,
472
486
  "--ai-fd-denied-icon": c?.deniedIcon
473
- }), d = o ?? (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 ? Ie.icon : Ie.deniedIcon, m = (e) => {
487
+ }), 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) => {
474
488
  e.preventDefault();
475
- }, h = t ? g : te;
476
- return /* @__PURE__ */ G("div", {
489
+ }, h = t ? v : ne;
490
+ return /* @__PURE__ */ K("div", {
477
491
  role: "status",
478
492
  "aria-live": "polite",
479
- className: a("fixed inset-0 z-[9999] flex items-center justify-center backdrop-blur-sm", Ie.overlay, t ? "pointer-events-none" : "pointer-events-auto cursor-not-allowed"),
493
+ 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"),
480
494
  onDragOver: t ? void 0 : m,
481
495
  onDrop: t ? void 0 : m,
482
496
  style: u,
483
- children: /* @__PURE__ */ K("div", {
497
+ children: /* @__PURE__ */ q("div", {
484
498
  className: "flex flex-col items-center text-center",
485
499
  children: [
486
- /* @__PURE__ */ G(h, {
500
+ /* @__PURE__ */ K(h, {
487
501
  size: 100,
502
+ stroke: 1,
488
503
  className: p,
489
504
  "aria-hidden": !0
490
505
  }),
491
- /* @__PURE__ */ G("span", {
492
- className: a("mt-5", l?.titleClassName ?? "dial-h3-text"),
506
+ /* @__PURE__ */ K("span", {
507
+ className: o("mt-5", l?.titleClassName ?? "dial-h3-text"),
493
508
  children: d
494
509
  }),
495
- /* @__PURE__ */ G("span", {
496
- className: a("mt-4", l?.subtitleClassName ?? "dial-small-text"),
510
+ /* @__PURE__ */ K("span", {
511
+ className: o("mt-4", l?.subtitleClassName ?? "dial-small-text"),
497
512
  children: f
498
513
  })
499
514
  ]
500
515
  })
501
516
  });
502
- }, $ = (e) => String(e).padStart(2, "0"), Re = (e) => `${e.getFullYear()}-${$(e.getMonth() + 1)}-${$(e.getDate())} ${$(e.getHours())}-${$(e.getMinutes())}-${$(e.getSeconds())}`, ze = (e, t, n) => {
517
+ }, $ = (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) => {
503
518
  let r = e.lastIndexOf("."), i = r > 0, a = i ? e.slice(0, r) : e, o = i ? e.slice(r) : "", s = n === 0 ? "" : ` (${n + 1})`;
504
- return `${a} ${Re(t)}${s}${o}`;
505
- }, Be = (e, n, i = {}) => {
506
- let { screenshotName: a = "Screenshot.png", pastedTextName: s = "Pasted text" } = i;
507
- return { handlePaste: o((i) => {
519
+ return `${a} ${Ve(t)}${s}${o}`;
520
+ }, Ue = (e, n, i = {}) => {
521
+ let { screenshotName: a = "Screenshot.png", pastedTextName: o = "Pasted text" } = i;
522
+ return { handlePaste: c((i) => {
508
523
  if (!i.clipboardData) return;
509
- let o = Array.from(i.clipboardData.items).filter((e) => e.kind === "file" && e.type.startsWith("image/")), c = i.clipboardData.getData("text/plain").length > 0;
510
- if (o.length > 0 && !c) {
511
- let n = [], s = /* @__PURE__ */ new Date();
512
- for (let e of o) {
524
+ let s = Array.from(i.clipboardData.items).filter((e) => e.kind === "file" && e.type.startsWith("image/")), c = i.clipboardData.getData("text/plain").length > 0;
525
+ if (s.length > 0 && !c) {
526
+ let n = [], o = /* @__PURE__ */ new Date();
527
+ for (let e of s) {
513
528
  let i = e.getAsFile();
514
529
  if (!i) continue;
515
- let o = ze(a, s, n.length), c = new File([i], o, { type: i.type }), l = {
516
- id: q(),
517
- name: o,
530
+ let s = He(a, o, n.length), c = new File([i], s, { type: i.type }), l = {
531
+ id: me(),
532
+ name: s,
518
533
  contentType: i.type,
519
534
  file: c,
520
535
  type: t.Image,
@@ -528,11 +543,11 @@ var q = () => `${Date.now()}-${Math.random().toString(36).slice(2)}`, pe = (e) =
528
543
  }
529
544
  let l = i.clipboardData.getData("text/plain");
530
545
  if (l.length > n) {
531
- let n = l.trim(), a = (n.length > 80 ? `${n.slice(0, 80).trimEnd()}…` : n) || s, o = new File([l], a, { type: "text/plain" }), c = {
532
- id: q(),
546
+ let n = l.trim(), a = (n.length > 80 ? `${n.slice(0, 80).trimEnd()}…` : n) || o, s = new File([l], a, { type: "text/plain" }), c = {
547
+ id: me(),
533
548
  name: a,
534
549
  contentType: "text/plain",
535
- file: o,
550
+ file: s,
536
551
  type: t.Pasted,
537
552
  status: r.Idle
538
553
  };
@@ -542,8 +557,8 @@ var q = () => `${Date.now()}-${Math.random().toString(36).slice(2)}`, pe = (e) =
542
557
  e,
543
558
  n,
544
559
  a,
545
- s
560
+ o
546
561
  ]) };
547
- }, Ve = 100;
562
+ }, We = 100;
548
563
  //#endregion
549
- export { Se as ATTACHMENT_COLLAPSE_THRESHOLD, Q as AttachmentCard, Fe as AttachmentGroup, Me as AttachmentTray, Le as FileDndOverlay, Z as LazyImageLoadStatus, Ve as MAX_UPLOADS_PER_MINUTE, q as generateAttachmentId, J as getAttachmentCardState, ve as getAttachmentIcon, be as getExtFromContentType, pe as getNameWithoutExtension, _e as isMimeTypeAllowed, ge as mimeTypesToExtensionLabels, Be as useClipboardPaste, Ae as useLazyImageLoad };
564
+ 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 };
@@ -79,15 +79,15 @@ export interface AttachmentCardLabels extends AttachmentTypeLabels {
79
79
  removeLabel?: string;
80
80
  /** Accessible label for the retry button (error state only). Defaults to `'Retry upload'`. */
81
81
  retryLabel?: string;
82
- /** Accessible label applied to the card root when it is interactive via `onClick`. Defaults to `'Open attachment'`. */
82
+ /** Accessible name of the card root when it is interactive via `onClick`. Defaults to `'Open attachment'` on an image tile and `'Download attachment'` on a file, link or pasted-text tile. Unused when the card has no `onClick`. */
83
83
  clickLabel?: string;
84
- /** Accessible label applied to the card root when it is interactive via `onExpand` (pasted-text cards). Defaults to `'Expand pasted text'`. */
84
+ /** Accessible name of the card root when it is interactive via `onExpand` (pasted-text cards; takes precedence over `clickLabel`). Defaults to `'Expand pasted text'`. */
85
85
  expandLabel?: string;
86
86
  /** Accessible label for the loading spinner shown while the attachment is uploading. Defaults to `'Loading attachment'`. */
87
87
  loadingLabel?: string;
88
88
  /** Accessible label for the file card's in-progress upload progress bar. Defaults to `'Uploading'`. */
89
89
  uploadingLabel?: string;
90
- /** Accessible label for the download button. Defaults to `'Download attachment'`. */
90
+ /** Accessible label for the corner download button on image and file tiles (rendered when `onDownload` is given). Defaults to `'Download attachment'`. */
91
91
  downloadLabel?: string;
92
92
  /** Accessible label for the open-in-new-tab button. Defaults to `'Open in new tab'`. */
93
93
  openInNewTabLabel?: string;
@@ -102,9 +102,9 @@ export interface AttachmentCardProps {
102
102
  onRemove?: (id: string) => void;
103
103
  /** Called when the user activates the retry button (error state only). */
104
104
  onRetry?: (id: string) => void;
105
- /** Called when the user clicks or activates a pasted-text card to expand its content back into the input. */
105
+ /** Called when the user clicks or keyboard-activates (Enter/Space) a pasted-text card to expand its content back into the input. Takes precedence over `onClick` on pasted-text cards. */
106
106
  onExpand?: (id: string) => void;
107
- /** Called when the user clicks or keyboard-activates the card. Receives the attachment `id`. */
107
+ /** Called when the user clicks or keyboard-activates (Enter/Space) the card. Receives the attachment `id`. When neither this nor an applicable `onExpand` is given, the card renders as a non-interactive element (no `role="button"`, no Tab stop). */
108
108
  onClick?: (id: string) => void;
109
109
  /** Localised accessible labels for the remove/retry actions, the interactive card root, and the non-extension attachment type names (prompt/pasted/image). */
110
110
  labels?: AttachmentCardLabels;
@@ -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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"}
@@ -3,8 +3,12 @@ import { CSSProperties } from 'react';
3
3
  import { AttachmentTypeLabels } from './attachment-card';
4
4
  /** Localised labels for the `FileAttachment` component. */
5
5
  export interface FileAttachmentLabels extends AttachmentTypeLabels {
6
- /** Accessible label for the download action. Defaults to `'Download attachment'`. */
6
+ /** Accessible name of the tile when it is interactive via `onClick`. Defaults to `'Download attachment'`. */
7
7
  clickLabel?: string;
8
+ /** Accessible label for the corner download action. Kept separate from `clickLabel` so a tile that is both clickable and downloadable exposes two distinctly named buttons. Defaults to `'Download attachment'`. */
9
+ downloadLabel?: string;
10
+ /** Accessible name of a pasted-text tile when it is interactive via `onExpand`. Defaults to `'Expand pasted text'`. */
11
+ expandLabel?: string;
8
12
  /** Accessible label for the retry action. Defaults to `'Retry upload'`. */
9
13
  retryLabel?: string;
10
14
  /** Accessible label for the remove action. Defaults to `'Remove attachment'`. */
@@ -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,qFAAqF;IACrF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,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,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,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,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,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,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"}
@@ -6,6 +6,8 @@ export interface AttachmentGroupLabels extends AttachmentTypeLabels {
6
6
  ariaLabel?: string;
7
7
  /** Accessible label for each tile/row's click action. Defaults to `'Download attachment'`. */
8
8
  clickLabel?: string;
9
+ /** Accessible label for each tile's own download button (rendered when `onDownloadAll` is given). Defaults to `'Download attachment'`. */
10
+ downloadLabel?: string;
9
11
  /** Accessible label for each row's retry action. Defaults to `'Retry upload'`. */
10
12
  retryLabel?: string;
11
13
  /** Label for the "download all" header action, shown whenever the group has 2+ attachments. Defaults to `'Download all'`. */
@@ -1 +1 @@
1
- {"version":3,"file":"attachment-group.d.ts","sourceRoot":"","sources":["../../src/models/attachment-group.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,uEAAuE;AACvE,MAAM,WAAW,qBAAsB,SAAQ,oBAAoB;IACjE,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8FAA8F;IAC9F,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kFAAkF;IAClF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6HAA6H;IAC7H,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gGAAgG;IAChG,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CAC5C;AAED,yEAAyE;AACzE,MAAM,WAAW,qBAAqB;IACpC,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,gEAAgE;AAChE,MAAM,WAAW,yBAAyB;IACxC,4GAA4G;IAC5G,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,2DAA2D;AAC3D,MAAM,WAAW,qBAAqB;IACpC,wDAAwD;IACxD,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,iDAAiD;IACjD,UAAU,CAAC,EAAE,yBAAyB,CAAC;IACvC,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,yDAAyD;AACzD,MAAM,WAAW,oBAAoB;IACnC,sEAAsE;IACtE,WAAW,EAAE,iBAAiB,EAAE,CAAC;IACjC,mGAAmG;IACnG,iBAAiB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,WAAW,EAAE,iBAAiB,EAAE,KAAK,IAAI,CAAC;IAC3D,oDAAoD;IACpD,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,gKAAgK;IAChK,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,qCAAqC;IACrC,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,kHAAkH;IAClH,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B"}
1
+ {"version":3,"file":"attachment-group.d.ts","sourceRoot":"","sources":["../../src/models/attachment-group.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,uEAAuE;AACvE,MAAM,WAAW,qBAAsB,SAAQ,oBAAoB;IACjE,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8FAA8F;IAC9F,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0IAA0I;IAC1I,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kFAAkF;IAClF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6HAA6H;IAC7H,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gGAAgG;IAChG,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CAC5C;AAED,yEAAyE;AACzE,MAAM,WAAW,qBAAqB;IACpC,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,gEAAgE;AAChE,MAAM,WAAW,yBAAyB;IACxC,4GAA4G;IAC5G,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,2DAA2D;AAC3D,MAAM,WAAW,qBAAqB;IACpC,wDAAwD;IACxD,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,iDAAiD;IACjD,UAAU,CAAC,EAAE,yBAAyB,CAAC;IACvC,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,yDAAyD;AACzD,MAAM,WAAW,oBAAoB;IACnC,sEAAsE;IACtE,WAAW,EAAE,iBAAiB,EAAE,CAAC;IACjC,mGAAmG;IACnG,iBAAiB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,WAAW,EAAE,iBAAiB,EAAE,KAAK,IAAI,CAAC;IAC3D,oDAAoD;IACpD,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,gKAAgK;IAChK,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,qCAAqC;IACrC,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,kHAAkH;IAClH,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B"}
@@ -1,4 +1,5 @@
1
1
  import { DisplayAttachment } from '@epam/ai-dial-chat-shared';
2
+ import { AttachmentCardStyles } from './attachment-card';
2
3
  /** Localised accessible labels for the `AttachmentTray` component. */
3
4
  export interface AttachmentTrayLabels {
4
5
  /** Accessible label for the tray region. Defaults to `'Attached files'`. */
@@ -7,8 +8,10 @@ export interface AttachmentTrayLabels {
7
8
  removeLabel?: string;
8
9
  /** Accessible label for each card's retry button (error state only). */
9
10
  retryLabel?: string;
10
- /** Accessible label forwarded to each card's root when it is interactive. When omitted, the card's own default (`'Open attachment'`) applies. */
11
+ /** Accessible name forwarded to each card's root when it is interactive via `onAttachmentClick`. When omitted, the card's own default applies (`'Open attachment'` on image tiles, `'Download attachment'` on file, link and pasted-text tiles). */
11
12
  clickLabel?: string;
13
+ /** Accessible name forwarded to each pasted-text card's root when it is interactive via `onExpand`. Defaults to `'Expand pasted text'`. */
14
+ expandLabel?: string;
12
15
  /** Accessible label for each card's in-progress upload progress bar. Defaults to `'Uploading'`. */
13
16
  uploadingLabel?: string;
14
17
  }
@@ -16,6 +19,8 @@ export interface AttachmentTrayLabels {
16
19
  export interface AttachmentTrayStyles {
17
20
  /** Extra class name(s) merged onto the root element. */
18
21
  className?: string;
22
+ /** Colors, typography, and shape forwarded to every card in the tray. */
23
+ card?: AttachmentCardStyles;
19
24
  }
20
25
  /** Props accepted by the `AttachmentTray` component. */
21
26
  export interface AttachmentTrayProps {
@@ -25,9 +30,9 @@ export interface AttachmentTrayProps {
25
30
  onRemove?: (id: string) => void;
26
31
  /** Called when the user retries a failed attachment upload. */
27
32
  onRetry?: (id: string) => void;
28
- /** Called when the user clicks a pasted-text card to expand its content back into the input. */
33
+ /** Called when the user clicks or keyboard-activates a pasted-text card to expand its content back into the input. Takes precedence over `onAttachmentClick` on pasted-text cards. */
29
34
  onExpand?: (id: string) => void;
30
- /** Called when the user clicks or keyboard-activates an attachment card. Receives the full `DisplayAttachment` object. */
35
+ /** Called when the user clicks or keyboard-activates an attachment card. Receives the attachment `id`. When omitted, cards without an applicable `onExpand` are non-interactive. */
31
36
  onAttachmentClick?: (id: string) => void;
32
37
  /** Localised accessible labels for the tray region and each card's interactive elements. */
33
38
  labels?: AttachmentTrayLabels;
@@ -1 +1 @@
1
- {"version":3,"file":"attachment-tray.d.ts","sourceRoot":"","sources":["../../src/models/attachment-tray.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEnE,sEAAsE;AACtE,MAAM,WAAW,oBAAoB;IACnC,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sDAAsD;IACtD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wEAAwE;IACxE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iJAAiJ;IACjJ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mGAAmG;IACnG,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,0DAA0D;AAC1D,MAAM,WAAW,oBAAoB;IACnC,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wDAAwD;AACxD,MAAM,WAAW,mBAAmB;IAClC,0CAA0C;IAC1C,WAAW,EAAE,iBAAiB,EAAE,CAAC;IACjC,uDAAuD;IACvD,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,+DAA+D;IAC/D,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,gGAAgG;IAChG,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,0HAA0H;IAC1H,iBAAiB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,4FAA4F;IAC5F,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,oCAAoC;IACpC,MAAM,CAAC,EAAE,oBAAoB,CAAC;CAC/B"}
1
+ {"version":3,"file":"attachment-tray.d.ts","sourceRoot":"","sources":["../../src/models/attachment-tray.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,sEAAsE;AACtE,MAAM,WAAW,oBAAoB;IACnC,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sDAAsD;IACtD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wEAAwE;IACxE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oPAAoP;IACpP,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2IAA2I;IAC3I,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mGAAmG;IACnG,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,0DAA0D;AAC1D,MAAM,WAAW,oBAAoB;IACnC,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,IAAI,CAAC,EAAE,oBAAoB,CAAC;CAC7B;AAED,wDAAwD;AACxD,MAAM,WAAW,mBAAmB;IAClC,0CAA0C;IAC1C,WAAW,EAAE,iBAAiB,EAAE,CAAC;IACjC,uDAAuD;IACvD,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,+DAA+D;IAC/D,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,sLAAsL;IACtL,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,oLAAoL;IACpL,iBAAiB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,4FAA4F;IAC5F,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,oCAAoC;IACpC,MAAM,CAAC,EAAE,oBAAoB,CAAC;CAC/B"}
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.2.0-dev.3",
4
+ "version": "1.2.0-dev.300",
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.2.0-dev.3",
23
+ "@epam/ai-dial-chat-shared": "1.2.0-dev.300",
24
24
  "react": "^19.2.8",
25
- "@epam/ai-dial-ui-kit": "^0.14.2"
25
+ "@epam/ai-dial-ui-kit": "^0.15.0-dev.39"
26
26
  },
27
27
  "repository": {
28
28
  "type": "git",
@@ -13,12 +13,15 @@ export declare const mimeTypesToExtensionLabels: (types: string[], wildcardLabel
13
13
  * Matching rules:
14
14
  * - Exact match: `'application/pdf'` allows `'application/pdf'`.
15
15
  * - Wildcard prefix: `'image/*'` allows any `'image/...'` MIME type.
16
+ * - Alias match: both sides are canonicalized, so `'text/json'` allows
17
+ * `'application/json'` and vice versa.
18
+ * - Parameters and letter case are ignored on both sides.
16
19
  *
17
20
  * Returns `false` when `allowedTypes` is empty (no attachment types allowed).
18
21
  */
19
22
  export declare const isMimeTypeAllowed: (mimeType: string, allowedTypes: string[]) => boolean;
20
- /** Returns the Tabler icon component for a given MIME content type, or `IconFile` for unknown types. */
21
- export declare const getAttachmentIcon: (contentType: string) => Icon;
23
+ /** Returns the Tabler icon component for a given MIME content type, or `IconFile` for unknown types. Aliases resolve to their canonical type first. */
24
+ export declare const getAttachmentIcon: (rawContentType: string) => Icon;
22
25
  /** Derives a bare file extension (no leading dot) from a MIME type, e.g. `'application/pdf'` -> `'pdf'`. */
23
26
  export declare const getExtFromContentType: (contentType: string) => string | undefined;
24
27
  /** Derives the display state (icons, labels, color classes) an AttachmentCard needs to render a given attachment. */
@@ -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;AAMnE,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,MAeF,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,GAC5B,UAAU,MAAM,EAChB,cAAc,MAAM,EAAE,KACrB,OAUF,CAAC;AAEF,wGAAwG;AACxG,eAAO,MAAM,iBAAiB,GAAI,aAAa,MAAM,KAAG,IA0FvD,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;AA6BF,qHAAqH;AACrH,eAAO,MAAM,sBAAsB,GACjC,YAAY,iBAAiB,EAC7B,aAAY,oBAAyB,KACpC,mBAiBF,CAAC"}