@dropins/storefront-quote-management 0.0.1-alpha35 → 0.0.1-alpha37

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,4 +1,4 @@
1
1
  /*! Copyright 2025 Adobe
2
2
  All Rights Reserved. */
3
- import{jsxs as p,jsx as t,Fragment as V}from"@dropins/tools/preact-jsx-runtime.js";import{useState as s,useEffect as ee,createPortal as te}from"@dropins/tools/preact-compat.js";import{classes as ae,Slot as c}from"@dropins/tools/lib.js";import{Table as ne,IllustratedMessage as oe,Picker as ie,Pagination as re,Button as G,Price as le}from"@dropins/tools/components.js";import{events as ce}from"@dropins/tools/event-bus.js";/* empty css */import"@dropins/tools/preact.js";import"@dropins/tools/preact-hooks.js";import{f as R}from"../chunks/dateUtils.js";import{useText as A}from"@dropins/tools/i18n.js";import{C as de}from"../chunks/ConfirmationModal.js";/* empty css *//* empty css */import{g as E}from"../chunks/transform-quote.js";import"../chunks/state.js";import{g as se}from"../chunks/getQuoteTemplates.js";import{g as ue}from"../chunks/generateQuoteFromTemplate.js";import"@dropins/tools/fetch-graphql.js";import"../chunks/transform-quote-template.js";const me=({rowData:h=[],loading:f=!1,className:N,emptyStateMessage:M,showItemRange:L=!0,itemRangeMessage:u,showPageSizePicker:Q=!0,pageSizePickerMessage:m,showPagination:r=!0,paginationMessage:P,...d})=>{const o=A({name:"QuoteManagement.QuoteTemplatesListTable.name",state:"QuoteManagement.QuoteTemplatesListTable.state",status:"QuoteManagement.QuoteTemplatesListTable.status",validUntil:"QuoteManagement.QuoteTemplatesListTable.validUntil",minQuoteTotal:"QuoteManagement.QuoteTemplatesListTable.minQuoteTotal",ordersPlaced:"QuoteManagement.QuoteTemplatesListTable.ordersPlaced",lastOrdered:"QuoteManagement.QuoteTemplatesListTable.lastOrdered",actions:"QuoteManagement.QuoteTemplatesListTable.actions"}),v=[{key:"name",label:o.name},{key:"state",label:o.state},{key:"status",label:o.status},{key:"validUntil",label:o.validUntil},{key:"minQuoteTotal",label:o.minQuoteTotal},{key:"ordersPlaced",label:o.ordersPlaced},{key:"lastOrdered",label:o.lastOrdered},{key:"actions",label:o.actions}],x=f||h.length>0,T=!f&&h.length===0&&M,b=L&&u,g=Q&&m,S=r&&P,y=b||g||S;return p("div",{...d,className:ae(["quote-management-quote-templates-list-table",N]),children:[x&&t(ne,{columns:v,rowData:h,loading:f,mobileLayout:"none",className:"quote-management-quote-templates-list-table__table"}),T&&t("div",{className:"quote-templates-list-table__empty-state",children:M}),y&&p("div",{className:"quote-templates-list-table__footer",children:[t("div",{className:"quote-templates-list-table__item-range",children:b&&u}),t("div",{className:"quote-templates-list-table__pagination",children:S&&P}),t("div",{className:"quote-templates-list-table__page-size-picker",children:g&&m})]})]})},Ce=({pageSize:h,showItemRange:f=!0,showPageSizePicker:N=!0,showPagination:M=!0,onViewQuoteTemplate:L,onGenerateQuoteFromTemplate:u,onPageSizeChange:Q,onPageChange:m,slots:r,...P})=>{const d=A({view:"QuoteManagement.QuoteTemplatesListTable.view",generateQuote:"NegotiableQuoteTemplate.Manage.actionButtons.generateQuote",generateQuoteModalMessage:"NegotiableQuoteTemplate.Manage.confirmationModal.generateQuote.message",generateQuoteModalCancel:"NegotiableQuoteTemplate.Manage.confirmationModal.cancel",generateQuoteModalConfirm:"NegotiableQuoteTemplate.Manage.confirmationModal.generateQuote.confirm",generateQuoteModalConfirmLoading:"NegotiableQuoteTemplate.Manage.confirmationModal.generateQuote.confirmLoading"}),[o,v]=s(null),[x,T]=s(!0),[b,g]=s(!1),[S,y]=s(!1),[q,z]=s(null),B=E()[0],[O,F]=s(h||B),[C,_]=s(1);ee(()=>{const n=async()=>{try{T(!0);const l=await se({pageSize:O,currentPage:C});v(l)}catch(l){console.error("Failed to fetch quote templates:",l)}finally{T(!1)}},e=ce.on("authenticated",l=>{l?n():(v(null),T(!1))},{eager:!0});return()=>{e==null||e.off()}},[O,C]);const I=n=>{F(n),_(1),Q==null||Q(n)},w=n=>{_(n),m==null||m(n)},j=n=>{const e=n.target,l=e==null?void 0:e.value;l&&I(Number(l))},$=(n,e)=>{z({id:n,name:e}),g(!0)},D=async n=>{y(!0);try{const e=await ue({templateId:n.id});u==null||u(n.id,n.name,e.quoteId),g(!1),z(null)}catch(e){console.error("Failed to generate quote from template:",e)}finally{y(!1)}},H=()=>{g(!1),z(null)},J=(n,e,l)=>n.filter(a=>a==null?void 0:a.uid).map(a=>{var U;return{id:a.id,name:t(c,{name:"Name",slot:e==null?void 0:e.Name,context:{template:a},children:t("span",{children:a.name})}),state:t(c,{name:"State",slot:e==null?void 0:e.State,context:{template:a},children:t("span",{style:{textTransform:"capitalize"},children:((U=a.state)==null?void 0:U.replace(/_/g," "))||"-"})}),status:t(c,{name:"Status",slot:e==null?void 0:e.Status,context:{template:a},children:t("span",{children:a.status})}),validUntil:t(c,{name:"ValidUntil",slot:e==null?void 0:e.ValidUntil,context:{template:a},children:t("span",{children:R(a.expirationDate,"short")})}),minQuoteTotal:t(c,{name:"MinQuoteTotal",slot:e==null?void 0:e.MinQuoteTotal,context:{template:a},children:t(le,{amount:a.prices.minNegotiatedGrandTotal.value,currency:a.prices.minNegotiatedGrandTotal.currency})}),ordersPlaced:t(c,{name:"OrdersPlaced",slot:e==null?void 0:e.OrdersPlaced,context:{template:a},children:t("span",{children:a.ordersPlaced})}),lastOrdered:t(c,{name:"LastOrdered",slot:e==null?void 0:e.LastOrdered,context:{template:a},children:t("span",{children:R(a.lastOrderedAt,"short")})}),actions:p(c,{name:"Actions",slot:e==null?void 0:e.Actions,context:{template:a,onViewQuoteTemplate:l},className:"quote-management-quote-templates-list-table__actions-cell",children:[t(G,{variant:"tertiary",size:"medium",onClick:()=>l==null?void 0:l(a.id,a.name,a.status),children:d.view}),a.canGenerateQuoteFromTemplate&&t(G,{variant:"primary",size:"medium",onClick:()=>$(a.id,a.name),"data-testid":`generate-quote-button-${a.id}`,children:d.generateQuote})]})}}),K=o!=null&&o.items?J(o.items,r,L):[],i=o!=null&&o.paginationInfo?{...o.paginationInfo,pageSizeOptions:E()}:void 0,k=!!i,W=t(c,{name:"EmptyTemplates",slot:r==null?void 0:r.EmptyTemplates,context:{templatesData:o},children:t(oe,{heading:"No Quote Templates Found"})}),X=i?t(c,{name:"ItemRange",slot:r==null?void 0:r.ItemRange,context:i,children:p("span",{children:["Items ",i.startItem," to ",i.endItem," of"," ",i.totalCount," total"]})}):void 0,Y=i&&i.pageSizeOptions?p(c,{name:"PageSizePicker",slot:r==null?void 0:r.PageSizePicker,context:{pageSize:i.pageSize,pageSizeOptions:i.pageSizeOptions,onPageSizeChange:I},children:[t("span",{children:"Show "}),t(ie,{variant:"primary",size:"medium",value:String(i.pageSize),options:i.pageSizeOptions.map(n=>({value:String(n),text:String(n)})),handleSelect:j}),t("span",{children:" per page"})]}):void 0,Z=i?t(c,{name:"Pagination",slot:r==null?void 0:r.Pagination,context:{currentPage:i.currentPage,totalPages:i.totalPages,onChange:w},children:t(re,{currentPage:i.currentPage,totalPages:i.totalPages,onChange:w})}):void 0;return p(V,{children:[t(me,{rowData:K,loading:x,className:P.className,emptyStateMessage:W,showItemRange:f&&k,itemRangeMessage:X,showPageSizePicker:N&&k,pageSizePickerMessage:Y,showPagination:M&&k,paginationMessage:Z}),b&&te(t(de,{open:b,title:d.generateQuote,message:d.generateQuoteModalMessage,cancelLabel:d.generateQuoteModalCancel,confirmLabel:S?d.generateQuoteModalConfirmLoading:d.generateQuoteModalConfirm,onCancel:H,onConfirm:S||!q?void 0:()=>D(q),showCloseButton:!0,"data-testid":"generate-quote-confirmation-modal"}),document.body)]})};export{Ce as QuoteTemplatesListTable,Ce as default};
3
+ import{jsxs as m,jsx as t,Fragment as ie}from"@dropins/tools/preact-jsx-runtime.js";import{useState as d,useEffect as ce,createPortal as le}from"@dropins/tools/preact-compat.js";import{classes as se,Slot as s}from"@dropins/tools/lib.js";import{Table as de,IllustratedMessage as ue,Picker as ge,Pagination as me,InLineAlert as R,Icon as A,Button as j,Price as pe}from"@dropins/tools/components.js";import{events as Qe}from"@dropins/tools/event-bus.js";/* empty css */import"@dropins/tools/preact.js";import"@dropins/tools/preact-hooks.js";import{f as D}from"../chunks/dateUtils.js";import{useText as $}from"@dropins/tools/i18n.js";import{C as he}from"../chunks/ConfirmationModal.js";/* empty css *//* empty css */import{g as W}from"../chunks/transform-quote.js";import"../chunks/state.js";import{g as fe}from"../chunks/getQuoteTemplates.js";import{g as Me}from"../chunks/generateQuoteFromTemplate.js";import"@dropins/tools/fetch-graphql.js";import"../chunks/transform-quote-template.js";const be=({rowData:p=[],loading:Q=!1,className:x,emptyStateMessage:S,showItemRange:z=!0,itemRangeMessage:u,showPageSizePicker:h=!0,pageSizePickerMessage:g,showPagination:i=!0,paginationMessage:P,...l})=>{const o=$({name:"QuoteManagement.QuoteTemplatesListTable.name",state:"QuoteManagement.QuoteTemplatesListTable.state",status:"QuoteManagement.QuoteTemplatesListTable.status",validUntil:"QuoteManagement.QuoteTemplatesListTable.validUntil",minQuoteTotal:"QuoteManagement.QuoteTemplatesListTable.minQuoteTotal",ordersPlaced:"QuoteManagement.QuoteTemplatesListTable.ordersPlaced",lastOrdered:"QuoteManagement.QuoteTemplatesListTable.lastOrdered",actions:"QuoteManagement.QuoteTemplatesListTable.actions"}),y=[{key:"name",label:o.name},{key:"state",label:o.state},{key:"status",label:o.status},{key:"validUntil",label:o.validUntil},{key:"minQuoteTotal",label:o.minQuoteTotal},{key:"ordersPlaced",label:o.ordersPlaced},{key:"lastOrdered",label:o.lastOrdered},{key:"actions",label:o.actions}],q=Q||p.length>0,f=!Q&&p.length===0&&S,M=z&&u,b=h&&g,T=i&&P,v=M||b||T;return m("div",{...l,className:se(["quote-management-quote-templates-list-table",x]),children:[q&&t(de,{columns:y,rowData:p,loading:Q,mobileLayout:"none",className:"quote-management-quote-templates-list-table__table"}),f&&t("div",{className:"quote-templates-list-table__empty-state",children:S}),v&&m("div",{className:"quote-templates-list-table__footer",children:[t("div",{className:"quote-templates-list-table__item-range",children:M&&u}),t("div",{className:"quote-templates-list-table__pagination",children:T&&P}),t("div",{className:"quote-templates-list-table__page-size-picker",children:b&&g})]})]})},Ue=({pageSize:p,showItemRange:Q=!0,showPageSizePicker:x=!0,showPagination:S=!0,onViewQuoteTemplate:z,onGenerateQuoteFromTemplate:u,onPageSizeChange:h,onPageChange:g,slots:i,...P})=>{const l=$({view:"QuoteManagement.QuoteTemplatesListTable.view",generateQuote:"NegotiableQuoteTemplate.Manage.actionButtons.generateQuote",generateQuoteModalMessage:"NegotiableQuoteTemplate.Manage.confirmationModal.generateQuote.message",generateQuoteModalCancel:"NegotiableQuoteTemplate.Manage.confirmationModal.cancel",generateQuoteModalConfirm:"NegotiableQuoteTemplate.Manage.confirmationModal.generateQuote.confirm",generateQuoteModalConfirmLoading:"NegotiableQuoteTemplate.Manage.confirmationModal.generateQuote.confirmLoading",generateQuoteModalSuccessHeading:"NegotiableQuoteTemplate.Manage.confirmationModal.generateQuote.successHeading",generateQuoteSuccessMessage:"NegotiableQuoteTemplate.Manage.confirmationModal.generateQuote.successDescription",generateQuoteModalErrorHeading:"NegotiableQuoteTemplate.Manage.confirmationModal.generateQuote.errorHeading",generateQuoteErrorFallback:"NegotiableQuoteTemplate.Manage.confirmationModal.generateQuote.errorFallback"}),[o,y]=d(null),[q,f]=d(!0),[M,b]=d(!1),[T,v]=d(!1),[I,O]=d(null),[_,N]=d(""),[w,k]=d(""),J=W()[0],[E,K]=d(p||J),[G,F]=d(1);ce(()=>{const n=async()=>{try{f(!0);const c=await fe({pageSize:E,currentPage:G});y(c)}catch(c){console.error("Failed to fetch quote templates:",c)}finally{f(!1)}},e=Qe.on("authenticated",c=>{c?n():(y(null),f(!1))},{eager:!0});return()=>{e==null||e.off()}},[E,G]);const U=n=>{K(n),F(1),h==null||h(n)},H=n=>{F(n),g==null||g(n)},X=n=>{const e=n.target,c=e==null?void 0:e.value;c&&U(Number(c))},Y=(n,e)=>{O({id:n,name:e}),N(""),k(""),b(!0)},Z=async n=>{v(!0),N(""),k("");try{const e=await Me({templateId:n.id});N(l.generateQuoteSuccessMessage),u==null||u(n.id,n.name,e.quoteId)}catch(e){console.error("Failed to generate quote from template:",e);const c=e instanceof Error?e.message:l.generateQuoteErrorFallback;k(c)}finally{v(!1)}},V=()=>{b(!1),O(null),N(""),k("")},ee=(n,e,c)=>n.filter(a=>a==null?void 0:a.uid).map(a=>{var B;return{id:a.id,name:t(s,{name:"Name",slot:e==null?void 0:e.Name,context:{template:a},children:t("span",{children:a.name})}),state:t(s,{name:"State",slot:e==null?void 0:e.State,context:{template:a},children:t("span",{style:{textTransform:"capitalize"},children:((B=a.state)==null?void 0:B.replace(/_/g," "))||"-"})}),status:t(s,{name:"Status",slot:e==null?void 0:e.Status,context:{template:a},children:t("span",{children:a.status})}),validUntil:t(s,{name:"ValidUntil",slot:e==null?void 0:e.ValidUntil,context:{template:a},children:t("span",{children:D(a.expirationDate,"short")})}),minQuoteTotal:t(s,{name:"MinQuoteTotal",slot:e==null?void 0:e.MinQuoteTotal,context:{template:a},children:t(pe,{amount:a.prices.minNegotiatedGrandTotal.value,currency:a.prices.minNegotiatedGrandTotal.currency})}),ordersPlaced:t(s,{name:"OrdersPlaced",slot:e==null?void 0:e.OrdersPlaced,context:{template:a},children:t("span",{children:a.ordersPlaced})}),lastOrdered:t(s,{name:"LastOrdered",slot:e==null?void 0:e.LastOrdered,context:{template:a},children:t("span",{children:D(a.lastOrderedAt,"short")})}),actions:m(s,{name:"Actions",slot:e==null?void 0:e.Actions,context:{template:a,onViewQuoteTemplate:c},className:"quote-management-quote-templates-list-table__actions-cell",children:[t(j,{variant:"tertiary",size:"medium",onClick:()=>c==null?void 0:c(a.id,a.name,a.status),children:l.view}),a.canGenerateQuoteFromTemplate&&t(j,{variant:"primary",size:"medium",onClick:()=>Y(a.id,a.name),"data-testid":`generate-quote-button-${a.id}`,children:l.generateQuote})]})}}),te=o!=null&&o.items?ee(o.items,i,z):[],r=o!=null&&o.paginationInfo?{...o.paginationInfo,pageSizeOptions:W()}:void 0,C=!!r,ae=t(s,{name:"EmptyTemplates",slot:i==null?void 0:i.EmptyTemplates,context:{templatesData:o},children:t(ue,{heading:"No Quote Templates Found"})}),ne=r?t(s,{name:"ItemRange",slot:i==null?void 0:i.ItemRange,context:r,children:m("span",{children:["Items ",r.startItem," to ",r.endItem," of"," ",r.totalCount," total"]})}):void 0,oe=r&&r.pageSizeOptions?m(s,{name:"PageSizePicker",slot:i==null?void 0:i.PageSizePicker,context:{pageSize:r.pageSize,pageSizeOptions:r.pageSizeOptions,onPageSizeChange:U},children:[t("span",{children:"Show "}),t(ge,{variant:"primary",size:"medium",value:String(r.pageSize),options:r.pageSizeOptions.map(n=>({value:String(n),text:String(n)})),handleSelect:X}),t("span",{children:" per page"})]}):void 0,re=r?t(s,{name:"Pagination",slot:i==null?void 0:i.Pagination,context:{currentPage:r.currentPage,totalPages:r.totalPages,onChange:H},children:t(me,{currentPage:r.currentPage,totalPages:r.totalPages,onChange:H})}):void 0;let L=null;return _?L=t(R,{type:"success",variant:"primary",icon:t(A,{source:"CheckWithCircle"}),heading:l.generateQuoteModalSuccessHeading,description:_,"data-testid":"generate-quote-success-banner"}):w&&(L=t(R,{type:"error",variant:"primary",icon:t(A,{source:"WarningFilled"}),heading:l.generateQuoteModalErrorHeading,description:w,"data-testid":"generate-quote-error-banner"})),m(ie,{children:[t(be,{rowData:te,loading:q,className:P.className,emptyStateMessage:ae,showItemRange:Q&&C,itemRangeMessage:ne,showPageSizePicker:x&&C,pageSizePickerMessage:oe,showPagination:S&&C,paginationMessage:re}),M&&le(t(he,{open:M,title:l.generateQuote,message:l.generateQuoteModalMessage,cancelLabel:l.generateQuoteModalCancel,confirmLabel:T?l.generateQuoteModalConfirmLoading:l.generateQuoteModalConfirm,onCancel:V,onConfirm:T||!I?void 0:()=>Z(I),showCloseButton:!L,confirmationBanner:L,"data-testid":"generate-quote-confirmation-modal"}),document.body)]})};export{Ue as QuoteTemplatesListTable,Ue as default};
4
4
  //# sourceMappingURL=QuoteTemplatesListTable.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"QuoteTemplatesListTable.js","sources":["/@dropins/storefront-quote-management/src/components/QuoteTemplatesListTable/QuoteTemplatesListTable.tsx","/@dropins/storefront-quote-management/src/containers/QuoteTemplatesListTable/QuoteTemplatesListTable.tsx"],"sourcesContent":["/********************************************************************\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this\n * file in accordance with the terms of the Adobe license agreement\n * accompanying it.\n *******************************************************************/\n\nimport { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport { Table } from '@adobe-commerce/elsie/components';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport '@/quote-management/components/QuoteTemplatesListTable/QuoteTemplatesListTable.css';\n\ntype Column = {\n key: string;\n label: string;\n};\n\nexport interface QuoteTemplatesListTableProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'loading' | 'children'> {\n rowData: QuoteTemplateRowData[];\n loading?: boolean;\n className?: string;\n emptyStateMessage?: VNode;\n showItemRange?: boolean;\n itemRangeMessage?: VNode;\n showPageSizePicker?: boolean;\n pageSizePickerMessage?: VNode;\n showPagination?: boolean;\n paginationMessage?: VNode;\n}\n\nexport type QuoteTemplateRowData = {\n id: string;\n name: VNode;\n state: VNode;\n status: VNode;\n validUntil: VNode;\n minQuoteTotal: VNode;\n ordersPlaced: VNode;\n lastOrdered: VNode;\n actions: VNode;\n [key: string]: VNode | string | number | undefined;\n};\n\nexport const QuoteTemplatesListTable: FunctionComponent<\n QuoteTemplatesListTableProps\n> = ({\n rowData = [],\n loading = false,\n className,\n emptyStateMessage,\n showItemRange = true,\n itemRangeMessage,\n showPageSizePicker = true,\n pageSizePickerMessage,\n showPagination = true,\n paginationMessage,\n ...props\n}) => {\n const dictionary = useText({\n name: 'QuoteManagement.QuoteTemplatesListTable.name',\n state: 'QuoteManagement.QuoteTemplatesListTable.state',\n status: 'QuoteManagement.QuoteTemplatesListTable.status',\n validUntil: 'QuoteManagement.QuoteTemplatesListTable.validUntil',\n minQuoteTotal: 'QuoteManagement.QuoteTemplatesListTable.minQuoteTotal',\n ordersPlaced: 'QuoteManagement.QuoteTemplatesListTable.ordersPlaced',\n lastOrdered: 'QuoteManagement.QuoteTemplatesListTable.lastOrdered',\n actions: 'QuoteManagement.QuoteTemplatesListTable.actions',\n });\n\n const columns: Column[] = [\n { key: 'name', label: dictionary.name },\n { key: 'state', label: dictionary.state },\n { key: 'status', label: dictionary.status },\n { key: 'validUntil', label: dictionary.validUntil },\n { key: 'minQuoteTotal', label: dictionary.minQuoteTotal },\n { key: 'ordersPlaced', label: dictionary.ordersPlaced },\n { key: 'lastOrdered', label: dictionary.lastOrdered },\n { key: 'actions', label: dictionary.actions },\n ];\n\n // Check if should show the table when loading or there is data\n const shouldShowTable = loading || rowData.length > 0;\n\n // Check if we should show empty state\n const shouldShowEmptyState =\n !loading && rowData.length === 0 && emptyStateMessage;\n\n // Show item range if requested and message is provided\n const shouldShowItemRange = showItemRange && itemRangeMessage;\n\n // Show page size picker if requested and message is provided\n const shouldShowPageSizePicker = showPageSizePicker && pageSizePickerMessage;\n\n // Show pagination if requested and message is provided\n const shouldShowPagination = showPagination && paginationMessage;\n\n // Show footer if any pagination element should be shown\n const shouldShowFooter =\n shouldShowItemRange || shouldShowPageSizePicker || shouldShowPagination;\n\n return (\n <div\n {...props}\n className={classes([\n 'quote-management-quote-templates-list-table',\n className,\n ])}\n >\n {shouldShowTable && (\n <Table\n columns={columns}\n rowData={rowData}\n loading={loading}\n mobileLayout=\"none\"\n className=\"quote-management-quote-templates-list-table__table\"\n />\n )}\n {shouldShowEmptyState && (\n <div className=\"quote-templates-list-table__empty-state\">\n {emptyStateMessage}\n </div>\n )}\n {shouldShowFooter && (\n <div className=\"quote-templates-list-table__footer\">\n <div className=\"quote-templates-list-table__item-range\">\n {shouldShowItemRange && itemRangeMessage}\n </div>\n <div className=\"quote-templates-list-table__pagination\">\n {shouldShowPagination && paginationMessage}\n </div>\n <div className=\"quote-templates-list-table__page-size-picker\">\n {shouldShowPageSizePicker && pageSizePickerMessage}\n </div>\n </div>\n )}\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this\n * file in accordance with the terms of the Adobe license agreement\n * accompanying it.\n *******************************************************************/\n\nimport { HTMLAttributes, useEffect, useState, createPortal } from 'preact/compat';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { Container, Slot, SlotProps } from '@adobe-commerce/elsie/lib';\nimport {\n Price,\n Button,\n IllustratedMessage,\n Picker,\n Pagination,\n type PickerOption,\n} from '@adobe-commerce/elsie/components';\nimport { events } from '@adobe-commerce/event-bus';\nimport {\n QuoteTemplatesListTable as QuoteTemplatesListTableComponent,\n QuoteTemplateRowData,\n ConfirmationModal,\n} from '@/quote-management/components';\nimport { getQuoteTemplates, generateQuoteFromTemplate } from '@/quote-management/api';\nimport { getDefaultPageSizeOptions } from '@/quote-management/data/transforms';\nimport {\n NegotiableQuoteTemplatesListModel,\n NegotiableQuoteTemplateListEntry,\n} from '@/quote-management/data/models';\nimport { formattedDate } from '@/quote-management/utils/dateUtils';\n\nexport interface QuoteTemplatesListTableProps\n extends HTMLAttributes<HTMLDivElement> {\n pageSize?: number;\n showItemRange?: boolean;\n showPageSizePicker?: boolean;\n showPagination?: boolean;\n onViewQuoteTemplate?: (templateId: string, templateName: string, status: string) => void;\n onGenerateQuoteFromTemplate?: (templateId: string, templateName: string, quoteId: string) => void;\n onPageSizeChange?: (pageSize: number) => void;\n onPageChange?: (page: number) => void;\n slots?: {\n /** Slot for customizing the template name cell content */\n Name?: SlotProps<{ template: NegotiableQuoteTemplateListEntry }>;\n /** Slot for customizing the state cell content */\n State?: SlotProps<{ template: NegotiableQuoteTemplateListEntry }>;\n /** Slot for customizing the status cell content */\n Status?: SlotProps<{ template: NegotiableQuoteTemplateListEntry }>;\n /** Slot for customizing the valid until cell content */\n ValidUntil?: SlotProps<{ template: NegotiableQuoteTemplateListEntry }>;\n /** Slot for customizing the min quote total cell content */\n MinQuoteTotal?: SlotProps<{ template: NegotiableQuoteTemplateListEntry }>;\n /** Slot for customizing the orders placed cell content */\n OrdersPlaced?: SlotProps<{ template: NegotiableQuoteTemplateListEntry }>;\n /** Slot for customizing the last ordered cell content */\n LastOrdered?: SlotProps<{ template: NegotiableQuoteTemplateListEntry }>;\n /** Slot for customizing the actions cell content */\n Actions?: SlotProps<{\n template: NegotiableQuoteTemplateListEntry;\n onViewQuoteTemplate?: (id: string, name: string, status: string) => void;\n onGenerateQuoteFromTemplate?: (id: string, name: string) => void;\n }>;\n /** Slot for customizing the empty templates message */\n EmptyTemplates?: SlotProps;\n /** Slot for customizing the item range display */\n ItemRange?: SlotProps<{\n startItem: number;\n endItem: number;\n totalCount: number;\n currentPage: number;\n pageSize: number;\n }>;\n /** Slot for customizing the page size picker */\n PageSizePicker?: SlotProps<{\n pageSize: number;\n pageSizeOptions: number[];\n onPageSizeChange?: (pageSize: number) => void;\n }>;\n /** Slot for customizing the pagination */\n Pagination?: SlotProps<{\n currentPage: number;\n totalPages: number;\n onChange?: (page: number) => void;\n }>;\n };\n}\n\nexport const QuoteTemplatesListTable: Container<\n QuoteTemplatesListTableProps\n> = ({\n pageSize,\n showItemRange = true,\n showPageSizePicker = true,\n showPagination = true,\n onViewQuoteTemplate,\n onGenerateQuoteFromTemplate,\n onPageSizeChange,\n onPageChange,\n slots,\n ...props\n}) => {\n const dictionary = useText({\n view: 'QuoteManagement.QuoteTemplatesListTable.view',\n generateQuote: 'NegotiableQuoteTemplate.Manage.actionButtons.generateQuote',\n generateQuoteModalMessage: 'NegotiableQuoteTemplate.Manage.confirmationModal.generateQuote.message',\n generateQuoteModalCancel: 'NegotiableQuoteTemplate.Manage.confirmationModal.cancel',\n generateQuoteModalConfirm: 'NegotiableQuoteTemplate.Manage.confirmationModal.generateQuote.confirm',\n generateQuoteModalConfirmLoading: 'NegotiableQuoteTemplate.Manage.confirmationModal.generateQuote.confirmLoading',\n });\n\n const [templatesData, setTemplatesData] =\n useState<NegotiableQuoteTemplatesListModel | null>(null);\n const [loading, setLoading] = useState(true);\n const [showGenerateQuoteModal, setShowGenerateQuoteModal] = useState<boolean>(false);\n const [isGeneratingQuote, setIsGeneratingQuote] = useState<boolean>(false);\n const [selectedTemplate, setSelectedTemplate] = useState<{ id: string; name: string } | null>(null);\n\n // Default to first page size option if no pageSize prop provided\n const defaultPageSize = getDefaultPageSizeOptions()[0];\n const [currentPageSize, setCurrentPageSize] = useState(\n pageSize || defaultPageSize\n );\n const [currentPage, setCurrentPage] = useState(1);\n\n // Fetch quote templates data when authenticated\n useEffect(() => {\n const fetchTemplates = async () => {\n try {\n setLoading(true);\n const data = await getQuoteTemplates({\n pageSize: currentPageSize,\n currentPage,\n });\n setTemplatesData(data);\n } catch (error) {\n console.error('Failed to fetch quote templates:', error);\n } finally {\n setLoading(false);\n }\n };\n\n // Listen for authentication events\n const unsubscribe = events.on(\n 'authenticated',\n (isAuthenticated) => {\n if (isAuthenticated) {\n fetchTemplates();\n } else {\n setTemplatesData(null);\n setLoading(false);\n }\n },\n { eager: true }\n ); // eager: true means it fires immediately with current state\n\n return () => {\n unsubscribe?.off();\n };\n }, [currentPageSize, currentPage]);\n\n // Handle page size change\n const handlePageSizeChange = (newPageSize: number) => {\n setCurrentPageSize(newPageSize);\n setCurrentPage(1); // Reset to page 1 when page size changes\n onPageSizeChange?.(newPageSize); // Also call parent callback\n };\n\n // Handle page change\n const handlePageChange = (newPage: number) => {\n setCurrentPage(newPage);\n onPageChange?.(newPage); // Also call parent callback\n };\n\n // Handle page size picker selection\n const handlePageSizeSelect = (event: Event) => {\n const target = event.target as HTMLSelectElement;\n const value = target?.value;\n if (value) {\n handlePageSizeChange(Number(value));\n }\n };\n\n // Handle generate quote button click\n const handleGenerateQuoteClick = (templateId: string, templateName: string) => {\n setSelectedTemplate({ id: templateId, name: templateName });\n setShowGenerateQuoteModal(true);\n };\n\n // Handle generate quote confirmation\n const handleGenerateQuote = async (template: { id: string; name: string }) => { \n setIsGeneratingQuote(true);\n \n try {\n const result = await generateQuoteFromTemplate({ templateId: template.id });\n \n // Call the callback AFTER successful generation\n onGenerateQuoteFromTemplate?.(template.id, template.name, result.quoteId);\n \n // Close modal on success\n setShowGenerateQuoteModal(false);\n setSelectedTemplate(null);\n } catch (error) {\n console.error('Failed to generate quote from template:', error);\n // Keep modal open on error so user can try again or cancel\n } finally {\n setIsGeneratingQuote(false);\n }\n };\n\n // Handle generate quote modal cancel\n const handleGenerateQuoteModalCancel = () => {\n setShowGenerateQuoteModal(false);\n setSelectedTemplate(null);\n };\n\n // Prepare transformed quote template data for table component\n const prepareRowData = (\n templates: NegotiableQuoteTemplateListEntry[],\n slots?: QuoteTemplatesListTableProps['slots'],\n onViewQuoteTemplate?: (templateId: string, templateName: string, status: string) => void\n ): QuoteTemplateRowData[] => {\n return templates\n .filter((template) => template?.uid) // Filter out null templates\n .map((template) => {\n return {\n id: template.id,\n name: (\n <Slot name=\"Name\" slot={slots?.Name} context={{ template }}>\n <span>{template.name}</span>\n </Slot>\n ),\n state: (\n <Slot name=\"State\" slot={slots?.State} context={{ template }}>\n <span style={{ textTransform: 'capitalize' }}>\n {template.state?.replace(/_/g, ' ') || '-'}\n </span>\n </Slot>\n ),\n status: (\n <Slot name=\"Status\" slot={slots?.Status} context={{ template }}>\n <span>{template.status}</span>\n </Slot>\n ),\n validUntil: (\n <Slot\n name=\"ValidUntil\"\n slot={slots?.ValidUntil}\n context={{ template }}\n >\n <span>{formattedDate(template.expirationDate, 'short')}</span>\n </Slot>\n ),\n minQuoteTotal: (\n <Slot\n name=\"MinQuoteTotal\"\n slot={slots?.MinQuoteTotal}\n context={{ template }}\n >\n <Price\n amount={template.prices.minNegotiatedGrandTotal.value}\n currency={template.prices.minNegotiatedGrandTotal.currency}\n />\n </Slot>\n ),\n ordersPlaced: (\n <Slot\n name=\"OrdersPlaced\"\n slot={slots?.OrdersPlaced}\n context={{ template }}\n >\n <span>{template.ordersPlaced}</span>\n </Slot>\n ),\n lastOrdered: (\n <Slot\n name=\"LastOrdered\"\n slot={slots?.LastOrdered}\n context={{ template }}\n >\n <span>{formattedDate(template.lastOrderedAt, 'short')}</span>\n </Slot>\n ),\n actions: (\n <Slot\n name=\"Actions\"\n slot={slots?.Actions}\n context={{ template, onViewQuoteTemplate }}\n className=\"quote-management-quote-templates-list-table__actions-cell\"\n >\n <Button\n variant=\"tertiary\"\n size=\"medium\"\n onClick={() => onViewQuoteTemplate?.(template.id, template.name, template.status)}\n >\n {dictionary.view}\n </Button>\n {template.canGenerateQuoteFromTemplate && (\n <Button\n variant=\"primary\"\n size=\"medium\"\n onClick={() => handleGenerateQuoteClick(template.id, template.name)}\n data-testid={`generate-quote-button-${template.id}`}\n >\n {dictionary.generateQuote}\n </Button>\n )}\n </Slot>\n ),\n };\n });\n };\n\n // Prepare data for rendering\n const rowData = templatesData?.items\n ? prepareRowData(templatesData.items, slots, onViewQuoteTemplate)\n : [];\n\n // Use pagination info directly from API response, merging in pageSizeOptions if needed\n const paginationInfo = templatesData?.paginationInfo\n ? {\n ...templatesData.paginationInfo,\n pageSizeOptions: getDefaultPageSizeOptions(),\n }\n : undefined;\n\n const shouldShowPagination = !!paginationInfo;\n\n // Empty state message\n const emptyStateMessage = (\n <Slot\n name=\"EmptyTemplates\"\n slot={slots?.EmptyTemplates}\n context={{ templatesData }}\n >\n <IllustratedMessage heading=\"No Quote Templates Found\" />\n </Slot>\n );\n\n // Item range message\n const itemRangeMessage = paginationInfo ? (\n <Slot name=\"ItemRange\" slot={slots?.ItemRange} context={paginationInfo}>\n <span>\n Items {paginationInfo.startItem} to {paginationInfo.endItem} of{' '}\n {paginationInfo.totalCount} total\n </span>\n </Slot>\n ) : undefined;\n\n // Prepare page size picker message for component\n const pageSizePickerMessage =\n paginationInfo && paginationInfo.pageSizeOptions ? (\n <Slot\n name=\"PageSizePicker\"\n slot={slots?.PageSizePicker}\n context={{\n pageSize: paginationInfo.pageSize,\n pageSizeOptions: paginationInfo.pageSizeOptions,\n onPageSizeChange: handlePageSizeChange,\n }}\n >\n <span>Show </span>\n <Picker\n variant=\"primary\"\n size=\"medium\"\n value={String(paginationInfo.pageSize)}\n options={paginationInfo.pageSizeOptions.map(\n (size): PickerOption => ({\n value: String(size),\n text: String(size),\n })\n )}\n handleSelect={handlePageSizeSelect}\n />\n <span> per page</span>\n </Slot>\n ) : undefined;\n\n // Prepare pagination message for component\n const paginationMessage = paginationInfo ? (\n <Slot\n name=\"Pagination\"\n slot={slots?.Pagination}\n context={{\n currentPage: paginationInfo.currentPage,\n totalPages: paginationInfo.totalPages,\n onChange: handlePageChange,\n }}\n >\n <Pagination\n currentPage={paginationInfo.currentPage}\n totalPages={paginationInfo.totalPages}\n onChange={handlePageChange}\n />\n </Slot>\n ) : undefined;\n\n return (\n <>\n <QuoteTemplatesListTableComponent\n rowData={rowData}\n loading={loading}\n className={props.className as string}\n emptyStateMessage={emptyStateMessage}\n showItemRange={showItemRange && shouldShowPagination}\n itemRangeMessage={itemRangeMessage}\n showPageSizePicker={showPageSizePicker && shouldShowPagination}\n pageSizePickerMessage={pageSizePickerMessage}\n showPagination={showPagination && shouldShowPagination}\n paginationMessage={paginationMessage}\n />\n {showGenerateQuoteModal &&\n createPortal(\n <ConfirmationModal\n open={showGenerateQuoteModal}\n title={dictionary.generateQuote}\n message={dictionary.generateQuoteModalMessage}\n cancelLabel={dictionary.generateQuoteModalCancel}\n confirmLabel={\n isGeneratingQuote\n ? dictionary.generateQuoteModalConfirmLoading\n : dictionary.generateQuoteModalConfirm\n }\n onCancel={handleGenerateQuoteModalCancel}\n onConfirm={isGeneratingQuote || !selectedTemplate ? undefined : () => handleGenerateQuote(selectedTemplate)}\n showCloseButton={true}\n data-testid=\"generate-quote-confirmation-modal\"\n />,\n document.body\n )}\n </>\n );\n};\n"],"names":["QuoteTemplatesListTable","rowData","loading","className","emptyStateMessage","showItemRange","itemRangeMessage","showPageSizePicker","pageSizePickerMessage","showPagination","paginationMessage","props","dictionary","useText","columns","shouldShowTable","shouldShowEmptyState","shouldShowItemRange","shouldShowPageSizePicker","shouldShowPagination","shouldShowFooter","jsxs","classes","jsx","Table","pageSize","onViewQuoteTemplate","onGenerateQuoteFromTemplate","onPageSizeChange","onPageChange","slots","templatesData","setTemplatesData","useState","setLoading","showGenerateQuoteModal","setShowGenerateQuoteModal","isGeneratingQuote","setIsGeneratingQuote","selectedTemplate","setSelectedTemplate","defaultPageSize","getDefaultPageSizeOptions","currentPageSize","setCurrentPageSize","currentPage","setCurrentPage","useEffect","fetchTemplates","data","getQuoteTemplates","error","unsubscribe","events","isAuthenticated","handlePageSizeChange","newPageSize","handlePageChange","newPage","handlePageSizeSelect","event","target","value","handleGenerateQuoteClick","templateId","templateName","handleGenerateQuote","template","result","generateQuoteFromTemplate","handleGenerateQuoteModalCancel","prepareRowData","templates","Slot","_a","formattedDate","Price","Button","paginationInfo","IllustratedMessage","Picker","size","Pagination","Fragment","QuoteTemplatesListTableComponent","createPortal","ConfirmationModal"],"mappings":"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"}
1
+ {"version":3,"file":"QuoteTemplatesListTable.js","sources":["/@dropins/storefront-quote-management/src/components/QuoteTemplatesListTable/QuoteTemplatesListTable.tsx","/@dropins/storefront-quote-management/src/containers/QuoteTemplatesListTable/QuoteTemplatesListTable.tsx"],"sourcesContent":["/********************************************************************\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this\n * file in accordance with the terms of the Adobe license agreement\n * accompanying it.\n *******************************************************************/\n\nimport { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport { Table } from '@adobe-commerce/elsie/components';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport '@/quote-management/components/QuoteTemplatesListTable/QuoteTemplatesListTable.css';\n\ntype Column = {\n key: string;\n label: string;\n};\n\nexport interface QuoteTemplatesListTableProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'loading' | 'children'> {\n rowData: QuoteTemplateRowData[];\n loading?: boolean;\n className?: string;\n emptyStateMessage?: VNode;\n showItemRange?: boolean;\n itemRangeMessage?: VNode;\n showPageSizePicker?: boolean;\n pageSizePickerMessage?: VNode;\n showPagination?: boolean;\n paginationMessage?: VNode;\n}\n\nexport type QuoteTemplateRowData = {\n id: string;\n name: VNode;\n state: VNode;\n status: VNode;\n validUntil: VNode;\n minQuoteTotal: VNode;\n ordersPlaced: VNode;\n lastOrdered: VNode;\n actions: VNode;\n [key: string]: VNode | string | number | undefined;\n};\n\nexport const QuoteTemplatesListTable: FunctionComponent<\n QuoteTemplatesListTableProps\n> = ({\n rowData = [],\n loading = false,\n className,\n emptyStateMessage,\n showItemRange = true,\n itemRangeMessage,\n showPageSizePicker = true,\n pageSizePickerMessage,\n showPagination = true,\n paginationMessage,\n ...props\n}) => {\n const dictionary = useText({\n name: 'QuoteManagement.QuoteTemplatesListTable.name',\n state: 'QuoteManagement.QuoteTemplatesListTable.state',\n status: 'QuoteManagement.QuoteTemplatesListTable.status',\n validUntil: 'QuoteManagement.QuoteTemplatesListTable.validUntil',\n minQuoteTotal: 'QuoteManagement.QuoteTemplatesListTable.minQuoteTotal',\n ordersPlaced: 'QuoteManagement.QuoteTemplatesListTable.ordersPlaced',\n lastOrdered: 'QuoteManagement.QuoteTemplatesListTable.lastOrdered',\n actions: 'QuoteManagement.QuoteTemplatesListTable.actions',\n });\n\n const columns: Column[] = [\n { key: 'name', label: dictionary.name },\n { key: 'state', label: dictionary.state },\n { key: 'status', label: dictionary.status },\n { key: 'validUntil', label: dictionary.validUntil },\n { key: 'minQuoteTotal', label: dictionary.minQuoteTotal },\n { key: 'ordersPlaced', label: dictionary.ordersPlaced },\n { key: 'lastOrdered', label: dictionary.lastOrdered },\n { key: 'actions', label: dictionary.actions },\n ];\n\n // Check if should show the table when loading or there is data\n const shouldShowTable = loading || rowData.length > 0;\n\n // Check if we should show empty state\n const shouldShowEmptyState =\n !loading && rowData.length === 0 && emptyStateMessage;\n\n // Show item range if requested and message is provided\n const shouldShowItemRange = showItemRange && itemRangeMessage;\n\n // Show page size picker if requested and message is provided\n const shouldShowPageSizePicker = showPageSizePicker && pageSizePickerMessage;\n\n // Show pagination if requested and message is provided\n const shouldShowPagination = showPagination && paginationMessage;\n\n // Show footer if any pagination element should be shown\n const shouldShowFooter =\n shouldShowItemRange || shouldShowPageSizePicker || shouldShowPagination;\n\n return (\n <div\n {...props}\n className={classes([\n 'quote-management-quote-templates-list-table',\n className,\n ])}\n >\n {shouldShowTable && (\n <Table\n columns={columns}\n rowData={rowData}\n loading={loading}\n mobileLayout=\"none\"\n className=\"quote-management-quote-templates-list-table__table\"\n />\n )}\n {shouldShowEmptyState && (\n <div className=\"quote-templates-list-table__empty-state\">\n {emptyStateMessage}\n </div>\n )}\n {shouldShowFooter && (\n <div className=\"quote-templates-list-table__footer\">\n <div className=\"quote-templates-list-table__item-range\">\n {shouldShowItemRange && itemRangeMessage}\n </div>\n <div className=\"quote-templates-list-table__pagination\">\n {shouldShowPagination && paginationMessage}\n </div>\n <div className=\"quote-templates-list-table__page-size-picker\">\n {shouldShowPageSizePicker && pageSizePickerMessage}\n </div>\n </div>\n )}\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this\n * file in accordance with the terms of the Adobe license agreement\n * accompanying it.\n *******************************************************************/\n\nimport { HTMLAttributes, useEffect, useState, createPortal } from 'preact/compat';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { Container, Slot, SlotProps } from '@adobe-commerce/elsie/lib';\nimport {\n Price,\n Button,\n IllustratedMessage,\n Picker,\n Pagination,\n InLineAlert,\n Icon,\n type PickerOption,\n} from '@adobe-commerce/elsie/components';\nimport { events } from '@adobe-commerce/event-bus';\nimport {\n QuoteTemplatesListTable as QuoteTemplatesListTableComponent,\n QuoteTemplateRowData,\n ConfirmationModal,\n} from '@/quote-management/components';\nimport { getQuoteTemplates, generateQuoteFromTemplate } from '@/quote-management/api';\nimport { getDefaultPageSizeOptions } from '@/quote-management/data/transforms';\nimport {\n NegotiableQuoteTemplatesListModel,\n NegotiableQuoteTemplateListEntry,\n} from '@/quote-management/data/models';\nimport { formattedDate } from '@/quote-management/utils/dateUtils';\n\nexport interface QuoteTemplatesListTableProps\n extends HTMLAttributes<HTMLDivElement> {\n pageSize?: number;\n showItemRange?: boolean;\n showPageSizePicker?: boolean;\n showPagination?: boolean;\n onViewQuoteTemplate?: (templateId: string, templateName: string, status: string) => void;\n onGenerateQuoteFromTemplate?: (templateId: string, templateName: string, quoteId: string) => void;\n onPageSizeChange?: (pageSize: number) => void;\n onPageChange?: (page: number) => void;\n slots?: {\n /** Slot for customizing the template name cell content */\n Name?: SlotProps<{ template: NegotiableQuoteTemplateListEntry }>;\n /** Slot for customizing the state cell content */\n State?: SlotProps<{ template: NegotiableQuoteTemplateListEntry }>;\n /** Slot for customizing the status cell content */\n Status?: SlotProps<{ template: NegotiableQuoteTemplateListEntry }>;\n /** Slot for customizing the valid until cell content */\n ValidUntil?: SlotProps<{ template: NegotiableQuoteTemplateListEntry }>;\n /** Slot for customizing the min quote total cell content */\n MinQuoteTotal?: SlotProps<{ template: NegotiableQuoteTemplateListEntry }>;\n /** Slot for customizing the orders placed cell content */\n OrdersPlaced?: SlotProps<{ template: NegotiableQuoteTemplateListEntry }>;\n /** Slot for customizing the last ordered cell content */\n LastOrdered?: SlotProps<{ template: NegotiableQuoteTemplateListEntry }>;\n /** Slot for customizing the actions cell content */\n Actions?: SlotProps<{\n template: NegotiableQuoteTemplateListEntry;\n onViewQuoteTemplate?: (id: string, name: string, status: string) => void;\n onGenerateQuoteFromTemplate?: (id: string, name: string) => void;\n }>;\n /** Slot for customizing the empty templates message */\n EmptyTemplates?: SlotProps;\n /** Slot for customizing the item range display */\n ItemRange?: SlotProps<{\n startItem: number;\n endItem: number;\n totalCount: number;\n currentPage: number;\n pageSize: number;\n }>;\n /** Slot for customizing the page size picker */\n PageSizePicker?: SlotProps<{\n pageSize: number;\n pageSizeOptions: number[];\n onPageSizeChange?: (pageSize: number) => void;\n }>;\n /** Slot for customizing the pagination */\n Pagination?: SlotProps<{\n currentPage: number;\n totalPages: number;\n onChange?: (page: number) => void;\n }>;\n };\n}\n\nexport const QuoteTemplatesListTable: Container<\n QuoteTemplatesListTableProps\n> = ({\n pageSize,\n showItemRange = true,\n showPageSizePicker = true,\n showPagination = true,\n onViewQuoteTemplate,\n onGenerateQuoteFromTemplate,\n onPageSizeChange,\n onPageChange,\n slots,\n ...props\n}) => {\n const dictionary = useText({\n view: 'QuoteManagement.QuoteTemplatesListTable.view',\n generateQuote: 'NegotiableQuoteTemplate.Manage.actionButtons.generateQuote',\n generateQuoteModalMessage: 'NegotiableQuoteTemplate.Manage.confirmationModal.generateQuote.message',\n generateQuoteModalCancel: 'NegotiableQuoteTemplate.Manage.confirmationModal.cancel',\n generateQuoteModalConfirm: 'NegotiableQuoteTemplate.Manage.confirmationModal.generateQuote.confirm',\n generateQuoteModalConfirmLoading: 'NegotiableQuoteTemplate.Manage.confirmationModal.generateQuote.confirmLoading',\n generateQuoteModalSuccessHeading: 'NegotiableQuoteTemplate.Manage.confirmationModal.generateQuote.successHeading',\n generateQuoteSuccessMessage: 'NegotiableQuoteTemplate.Manage.confirmationModal.generateQuote.successDescription',\n generateQuoteModalErrorHeading: 'NegotiableQuoteTemplate.Manage.confirmationModal.generateQuote.errorHeading',\n generateQuoteErrorFallback: 'NegotiableQuoteTemplate.Manage.confirmationModal.generateQuote.errorFallback',\n });\n\n const [templatesData, setTemplatesData] =\n useState<NegotiableQuoteTemplatesListModel | null>(null);\n const [loading, setLoading] = useState(true);\n const [showGenerateQuoteModal, setShowGenerateQuoteModal] = useState<boolean>(false);\n const [isGeneratingQuote, setIsGeneratingQuote] = useState<boolean>(false);\n const [selectedTemplate, setSelectedTemplate] = useState<{ id: string; name: string } | null>(null);\n const [generateQuoteSuccessMessage, setGenerateQuoteSuccessMessage] = useState<string>('');\n const [generateQuoteErrorMessage, setGenerateQuoteErrorMessage] = useState<string>('');\n\n // Default to first page size option if no pageSize prop provided\n const defaultPageSize = getDefaultPageSizeOptions()[0];\n const [currentPageSize, setCurrentPageSize] = useState(\n pageSize || defaultPageSize\n );\n const [currentPage, setCurrentPage] = useState(1);\n\n // Fetch quote templates data when authenticated\n useEffect(() => {\n const fetchTemplates = async () => {\n try {\n setLoading(true);\n const data = await getQuoteTemplates({\n pageSize: currentPageSize,\n currentPage,\n });\n setTemplatesData(data);\n } catch (error) {\n console.error('Failed to fetch quote templates:', error);\n } finally {\n setLoading(false);\n }\n };\n\n // Listen for authentication events\n const unsubscribe = events.on(\n 'authenticated',\n (isAuthenticated) => {\n if (isAuthenticated) {\n fetchTemplates();\n } else {\n setTemplatesData(null);\n setLoading(false);\n }\n },\n { eager: true }\n ); // eager: true means it fires immediately with current state\n\n return () => {\n unsubscribe?.off();\n };\n }, [currentPageSize, currentPage]);\n\n // Handle page size change\n const handlePageSizeChange = (newPageSize: number) => {\n setCurrentPageSize(newPageSize);\n setCurrentPage(1); // Reset to page 1 when page size changes\n onPageSizeChange?.(newPageSize); // Also call parent callback\n };\n\n // Handle page change\n const handlePageChange = (newPage: number) => {\n setCurrentPage(newPage);\n onPageChange?.(newPage); // Also call parent callback\n };\n\n // Handle page size picker selection\n const handlePageSizeSelect = (event: Event) => {\n const target = event.target as HTMLSelectElement;\n const value = target?.value;\n if (value) {\n handlePageSizeChange(Number(value));\n }\n };\n\n // Handle generate quote button click\n const handleGenerateQuoteClick = (templateId: string, templateName: string) => {\n setSelectedTemplate({ id: templateId, name: templateName });\n setGenerateQuoteSuccessMessage('');\n setGenerateQuoteErrorMessage('');\n setShowGenerateQuoteModal(true);\n };\n\n // Handle generate quote confirmation\n const handleGenerateQuote = async (template: { id: string; name: string }) => { \n setIsGeneratingQuote(true);\n setGenerateQuoteSuccessMessage('');\n setGenerateQuoteErrorMessage('');\n \n try {\n const result = await generateQuoteFromTemplate({ templateId: template.id });\n \n // Show success message\n setGenerateQuoteSuccessMessage(dictionary.generateQuoteSuccessMessage);\n \n // Call the callback AFTER successful generation\n onGenerateQuoteFromTemplate?.(template.id, template.name, result.quoteId);\n } catch (error) {\n console.error('Failed to generate quote from template:', error);\n // Show error message and keep modal open so user can try again or cancel\n const errorMessage = error instanceof Error ? error.message : dictionary.generateQuoteErrorFallback;\n setGenerateQuoteErrorMessage(errorMessage);\n } finally {\n setIsGeneratingQuote(false);\n }\n };\n\n // Handle generate quote modal cancel\n const handleGenerateQuoteModalCancel = () => {\n setShowGenerateQuoteModal(false);\n setSelectedTemplate(null);\n setGenerateQuoteSuccessMessage('');\n setGenerateQuoteErrorMessage('');\n };\n\n // Prepare transformed quote template data for table component\n const prepareRowData = (\n templates: NegotiableQuoteTemplateListEntry[],\n slots?: QuoteTemplatesListTableProps['slots'],\n onViewQuoteTemplate?: (templateId: string, templateName: string, status: string) => void\n ): QuoteTemplateRowData[] => {\n return templates\n .filter((template) => template?.uid) // Filter out null templates\n .map((template) => {\n return {\n id: template.id,\n name: (\n <Slot name=\"Name\" slot={slots?.Name} context={{ template }}>\n <span>{template.name}</span>\n </Slot>\n ),\n state: (\n <Slot name=\"State\" slot={slots?.State} context={{ template }}>\n <span style={{ textTransform: 'capitalize' }}>\n {template.state?.replace(/_/g, ' ') || '-'}\n </span>\n </Slot>\n ),\n status: (\n <Slot name=\"Status\" slot={slots?.Status} context={{ template }}>\n <span>{template.status}</span>\n </Slot>\n ),\n validUntil: (\n <Slot\n name=\"ValidUntil\"\n slot={slots?.ValidUntil}\n context={{ template }}\n >\n <span>{formattedDate(template.expirationDate, 'short')}</span>\n </Slot>\n ),\n minQuoteTotal: (\n <Slot\n name=\"MinQuoteTotal\"\n slot={slots?.MinQuoteTotal}\n context={{ template }}\n >\n <Price\n amount={template.prices.minNegotiatedGrandTotal.value}\n currency={template.prices.minNegotiatedGrandTotal.currency}\n />\n </Slot>\n ),\n ordersPlaced: (\n <Slot\n name=\"OrdersPlaced\"\n slot={slots?.OrdersPlaced}\n context={{ template }}\n >\n <span>{template.ordersPlaced}</span>\n </Slot>\n ),\n lastOrdered: (\n <Slot\n name=\"LastOrdered\"\n slot={slots?.LastOrdered}\n context={{ template }}\n >\n <span>{formattedDate(template.lastOrderedAt, 'short')}</span>\n </Slot>\n ),\n actions: (\n <Slot\n name=\"Actions\"\n slot={slots?.Actions}\n context={{ template, onViewQuoteTemplate }}\n className=\"quote-management-quote-templates-list-table__actions-cell\"\n >\n <Button\n variant=\"tertiary\"\n size=\"medium\"\n onClick={() => onViewQuoteTemplate?.(template.id, template.name, template.status)}\n >\n {dictionary.view}\n </Button>\n {template.canGenerateQuoteFromTemplate && (\n <Button\n variant=\"primary\"\n size=\"medium\"\n onClick={() => handleGenerateQuoteClick(template.id, template.name)}\n data-testid={`generate-quote-button-${template.id}`}\n >\n {dictionary.generateQuote}\n </Button>\n )}\n </Slot>\n ),\n };\n });\n };\n\n // Prepare data for rendering\n const rowData = templatesData?.items\n ? prepareRowData(templatesData.items, slots, onViewQuoteTemplate)\n : [];\n\n // Use pagination info directly from API response, merging in pageSizeOptions if needed\n const paginationInfo = templatesData?.paginationInfo\n ? {\n ...templatesData.paginationInfo,\n pageSizeOptions: getDefaultPageSizeOptions(),\n }\n : undefined;\n\n const shouldShowPagination = !!paginationInfo;\n\n // Empty state message\n const emptyStateMessage = (\n <Slot\n name=\"EmptyTemplates\"\n slot={slots?.EmptyTemplates}\n context={{ templatesData }}\n >\n <IllustratedMessage heading=\"No Quote Templates Found\" />\n </Slot>\n );\n\n // Item range message\n const itemRangeMessage = paginationInfo ? (\n <Slot name=\"ItemRange\" slot={slots?.ItemRange} context={paginationInfo}>\n <span>\n Items {paginationInfo.startItem} to {paginationInfo.endItem} of{' '}\n {paginationInfo.totalCount} total\n </span>\n </Slot>\n ) : undefined;\n\n // Prepare page size picker message for component\n const pageSizePickerMessage =\n paginationInfo && paginationInfo.pageSizeOptions ? (\n <Slot\n name=\"PageSizePicker\"\n slot={slots?.PageSizePicker}\n context={{\n pageSize: paginationInfo.pageSize,\n pageSizeOptions: paginationInfo.pageSizeOptions,\n onPageSizeChange: handlePageSizeChange,\n }}\n >\n <span>Show </span>\n <Picker\n variant=\"primary\"\n size=\"medium\"\n value={String(paginationInfo.pageSize)}\n options={paginationInfo.pageSizeOptions.map(\n (size): PickerOption => ({\n value: String(size),\n text: String(size),\n })\n )}\n handleSelect={handlePageSizeSelect}\n />\n <span> per page</span>\n </Slot>\n ) : undefined;\n\n // Prepare pagination message for component\n const paginationMessage = paginationInfo ? (\n <Slot\n name=\"Pagination\"\n slot={slots?.Pagination}\n context={{\n currentPage: paginationInfo.currentPage,\n totalPages: paginationInfo.totalPages,\n onChange: handlePageChange,\n }}\n >\n <Pagination\n currentPage={paginationInfo.currentPage}\n totalPages={paginationInfo.totalPages}\n onChange={handlePageChange}\n />\n </Slot>\n ) : undefined;\n\n // Create banner for generate quote modal based on success/error state\n let generateQuoteModalBanner = null;\n if (generateQuoteSuccessMessage) {\n generateQuoteModalBanner = (\n <InLineAlert\n type=\"success\"\n variant=\"primary\"\n icon={<Icon source=\"CheckWithCircle\" />}\n heading={dictionary.generateQuoteModalSuccessHeading}\n description={generateQuoteSuccessMessage}\n data-testid=\"generate-quote-success-banner\"\n />\n );\n } else if (generateQuoteErrorMessage) {\n generateQuoteModalBanner = (\n <InLineAlert\n type=\"error\"\n variant=\"primary\"\n icon={<Icon source=\"WarningFilled\" />}\n heading={dictionary.generateQuoteModalErrorHeading}\n description={generateQuoteErrorMessage}\n data-testid=\"generate-quote-error-banner\"\n />\n );\n }\n\n return (\n <>\n <QuoteTemplatesListTableComponent\n rowData={rowData}\n loading={loading}\n className={props.className as string}\n emptyStateMessage={emptyStateMessage}\n showItemRange={showItemRange && shouldShowPagination}\n itemRangeMessage={itemRangeMessage}\n showPageSizePicker={showPageSizePicker && shouldShowPagination}\n pageSizePickerMessage={pageSizePickerMessage}\n showPagination={showPagination && shouldShowPagination}\n paginationMessage={paginationMessage}\n />\n {showGenerateQuoteModal &&\n createPortal(\n <ConfirmationModal\n open={showGenerateQuoteModal}\n title={dictionary.generateQuote}\n message={dictionary.generateQuoteModalMessage}\n cancelLabel={dictionary.generateQuoteModalCancel}\n confirmLabel={\n isGeneratingQuote\n ? dictionary.generateQuoteModalConfirmLoading\n : dictionary.generateQuoteModalConfirm\n }\n onCancel={handleGenerateQuoteModalCancel}\n onConfirm={isGeneratingQuote || !selectedTemplate ? undefined : () => handleGenerateQuote(selectedTemplate)}\n showCloseButton={!generateQuoteModalBanner}\n confirmationBanner={generateQuoteModalBanner}\n data-testid=\"generate-quote-confirmation-modal\"\n />,\n document.body\n )}\n </>\n );\n};\n"],"names":["QuoteTemplatesListTable","rowData","loading","className","emptyStateMessage","showItemRange","itemRangeMessage","showPageSizePicker","pageSizePickerMessage","showPagination","paginationMessage","props","dictionary","useText","columns","shouldShowTable","shouldShowEmptyState","shouldShowItemRange","shouldShowPageSizePicker","shouldShowPagination","shouldShowFooter","jsxs","classes","jsx","Table","pageSize","onViewQuoteTemplate","onGenerateQuoteFromTemplate","onPageSizeChange","onPageChange","slots","templatesData","setTemplatesData","useState","setLoading","showGenerateQuoteModal","setShowGenerateQuoteModal","isGeneratingQuote","setIsGeneratingQuote","selectedTemplate","setSelectedTemplate","generateQuoteSuccessMessage","setGenerateQuoteSuccessMessage","generateQuoteErrorMessage","setGenerateQuoteErrorMessage","defaultPageSize","getDefaultPageSizeOptions","currentPageSize","setCurrentPageSize","currentPage","setCurrentPage","useEffect","fetchTemplates","data","getQuoteTemplates","error","unsubscribe","events","isAuthenticated","handlePageSizeChange","newPageSize","handlePageChange","newPage","handlePageSizeSelect","event","target","value","handleGenerateQuoteClick","templateId","templateName","handleGenerateQuote","template","result","generateQuoteFromTemplate","errorMessage","handleGenerateQuoteModalCancel","prepareRowData","templates","Slot","_a","formattedDate","Price","Button","paginationInfo","IllustratedMessage","Picker","size","Pagination","generateQuoteModalBanner","InLineAlert","Icon","Fragment","QuoteTemplatesListTableComponent","createPortal","ConfirmationModal"],"mappings":"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"}
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name": "@dropins/storefront-quote-management", "version": "0.0.1-alpha35", "@dropins/tools": "1.6.0-beta3", "license": "SEE LICENSE IN LICENSE.md"}
1
+ {"name": "@dropins/storefront-quote-management", "version": "0.0.1-alpha37", "@dropins/tools": "1.6.0-beta3", "license": "SEE LICENSE IN LICENSE.md"}
package/render.js CHANGED
@@ -4,6 +4,6 @@ All Rights Reserved. */
4
4
  .quote-management-quote-comments-list{list-style:none;padding:0;margin:0}.quote-management-quote-comments-list__empty-state{color:var(--color-neutral-800);font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing);padding:var(--spacing-small) 0;margin:0;list-style:none}.quote-management-quote-comments-list__item{padding:var(--spacing-small) 0;border-bottom:1px solid var(--color-neutral-300)}.quote-management-quote-comments-list__item:last-child{border-bottom:none}.quote-management-quote-comments-list__header{display:flex;align-items:baseline;margin-bottom:var(--spacing-xxsmall);gap:var(--spacing-xxsmall)}.quote-management-quote-comments-list__date,.quote-management-quote-comments-list__by,.quote-management-quote-comments-list__author{font:var(--type-body-2-emphasized-font);letter-spacing:var(--type-body-2-emphasized-letter-spacing);color:var(--color-neutral-800)}.quote-management-quote-comments-list__date{white-space:nowrap}.quote-management-quote-comments-list__text{font:var(--type-body-1-default-font);letter-spacing:var(--type-body-1-default-letter-spacing);color:var(--color-neutral-800);margin:0;word-wrap:break-word}.quote-management-quote-comments-list__attachments{margin-top:var(--spacing-xsmall);display:flex;flex-direction:column;gap:var(--spacing-xxsmall)}.quote-management-quote-comments-list__attachments-label{font:var(--type-body-2-emphasized-font);letter-spacing:var(--type-body-2-emphasized-letter-spacing);color:var(--color-neutral-800);margin-bottom:var(--spacing-xxsmall)}.quote-management-quote-comments-list__attachment-link{font:var(--type-body-2-font);letter-spacing:var(--type-body-2-letter-spacing);color:var(--color-brand-600);text-decoration:underline;transition:color .2s ease;display:block;padding-left:var(--spacing-small);position:relative}.quote-management-quote-comments-list__attachment-link:hover{color:var(--color-brand-700);text-decoration:underline}.quote-management-quote-comments-list__attachment-link:focus{outline:2px solid var(--color-brand-600);outline-offset:2px}@media only screen and (min-width: 768px){.quote-management-quote-comments-list__item{padding:var(--spacing-medium) 0}}
5
5
  .quote-management-shipping-address-display{display:flex;flex-direction:column;gap:var(--spacing-xsmall);font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing);color:var(--color-neutral-800)}.quote-management-shipping-address-display__field{margin:0;word-wrap:break-word;overflow-wrap:break-word}.quote-management-shipping-address-display__name{font:var(--type-body-2-emphasized-font);letter-spacing:var(--type-body-2-emphasized-letter-spacing)}.quote-management-shipping-address-display--empty{padding:var(--spacing-medium);background-color:var(--color-neutral-50)}.quote-management-shipping-address-display__no-address{margin:0;color:var(--color-neutral-700);font-style:italic}
6
6
  .attached-files-list{display:flex;flex-direction:column;gap:var(--spacing-small, 8px);margin:var(--spacing-medium, 16px) 0}.attached-files-list__item{border:1px solid var(--color-neutral-300, #d1d5db);border-radius:var(--border-radius, 4px);padding:var(--spacing-small, 8px) var(--spacing-medium, 12px);background-color:var(--color-neutral-50, #f9fafb);transition:all .2s ease-in-out}.attached-files-list__item--error{border-color:var(--color-error, #ef4444);background-color:var(--color-error-light, #fef2f2)}.attached-files-list__item--success{border-color:var(--color-success, #10b981)}.attached-files-list__item--uploading{opacity:.8}.attached-files-list__item-main{display:flex;align-items:center;gap:var(--spacing-small, 8px)}.attached-files-list__item-icon{display:flex;align-items:center;justify-content:center;width:24px;height:24px;flex-shrink:0}.attached-files-list__spinner{width:20px;height:20px;border:2px solid var(--color-neutral-200, #e5e7eb);border-top-color:var(--color-primary, #3b82f6);border-radius:50%;animation:attached-files-list__spin .8s linear infinite}@keyframes attached-files-list__spin{to{transform:rotate(360deg)}}.attached-files-list__success-icon{color:var(--color-success, #10b981)}.attached-files-list__error-icon{color:var(--color-error, #ef4444)}.attached-files-list__item-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:var(--spacing-xsmall, 4px)}.attached-files-list__item-name{font-weight:var(--font-weight-medium, 500);font-size:var(--font-size-base, 14px);line-height:1.4;color:var(--color-text-primary, #111827);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.attached-files-list__item-size{font-size:var(--font-size-small, 12px);line-height:1.4;color:var(--color-text-secondary, #6b7280)}.attached-files-list__remove-button{flex-shrink:0;padding:var(--spacing-xsmall, 4px);min-width:auto}.attached-files-list__remove-button:disabled{opacity:.5;cursor:not-allowed}.attached-files-list__item-error{margin-top:var(--spacing-small, 8px);padding-left:32px;font-size:var(--font-size-small, 12px);color:var(--color-error, #ef4444);line-height:1.4}@media (max-width: 640px){.attached-files-list__item-name{font-size:var(--font-size-small, 12px)}.attached-files-list__item-size{font-size:var(--font-size-xsmall, 11px)}}
7
- .request-negotiable-quote-form{display:grid;gap:var(--spacing-small);align-items:flex-end;color:var(--color-neutral-800);width:100%}.request-negotiable-quote-form input:user-invalid,.request-negotiable-quote-form textarea:user-invalid{border-color:var(--color-alert-800)}.request-negotiable-quote-form__title{font:var(--type-body-1-emphasized-font);letter-spacing:var(--type-body-1-emphasized-letter-spacing)}.request-negotiable-quote-form__actions,.request-negotiable-quote-form [data-slot=AttachFileField]{display:flex;gap:var(--spacing-small)}.request-negotiable-quote-form__actions{justify-content:flex-start}.request-negotiable-quote-form__attach-file-field{justify-content:end}.request-negotiable-quote-form__attach-file-field label{background:none;color:var(--color-brand-500);font:var(--type-body-1-strong-font)}.request-negotiable-quote-form__attach-file-field label:hover{background:none}.request-negotiable-quote-form__error-banner svg{color:var(--color-alert-800)}.quote-management-actions-bar__container{container-type:inline-size;container-name:actions-bar-container}.quote-management-actions-bar{background:var(--color-neutral-200);padding:var(--spacing-xsmall);display:flex;gap:var(--spacing-small);justify-content:space-between;align-items:center}.quote-management-actions-bar__dropdown{width:max-content}.quote-management-actions-bar__buttons{display:flex}.quote-management-actions-bar__button>span{font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing)}@container actions-bar-container (max-width: 768px){.quote-management-actions-bar{flex-direction:column;align-items:flex-start;gap:var(--spacing-xsmall)}.quote-management-actions-bar__dropdown{width:100%}.quote-management-actions-bar__buttons{flex-direction:column;align-items:flex-start;gap:var(--spacing-xsmall);width:100%}.quote-management-actions-bar__button{width:100%}}.quote-management-items-quoted{display:flex;flex-direction:column;gap:var(--spacing-big)}.quote-management-manage-negotiable-quote{display:grid;gap:var(--spacing-small);color:var(--color-neutral-800);width:100%;container-type:inline-size}.quote-management-manage-negotiable-quote__header{display:flex;gap:var(--spacing-big);align-items:center}.quote-management-manage-negotiable-quote__quote-name>*{font:var(--type-headline-1-font);letter-spacing:var(--type-headline-1-letter-spacing);margin:0}.quote-management-manage-negotiable-quote__quote-name-wrapper{display:flex;align-items:center;gap:var(--spacing-xsmall)}.quote-management-manage-negotiable-quote__quote-name-title{font:var(--type-headline-1-font);letter-spacing:var(--type-headline-1-letter-spacing);margin:0}.quote-management-manage-negotiable-quote__rename-button{background:none;border:none;padding:var(--spacing-xsmall);cursor:pointer;display:inline-flex;align-items:center}.quote-management-manage-negotiable-quote__rename-button:disabled{cursor:not-allowed;opacity:.5}.quote-management-manage-negotiable-quote__quote-status>*{font:var(--type-details-caption-1-font);letter-spacing:var(--type-details-caption-1-letter-spacing);border:2px solid var(--color-neutral-300);padding:var(--spacing-xxsmall)}.quote-management-manage-negotiable-quote__banner{width:100%}.quote-management-manage-negotiable-quote__details{display:flex;flex-direction:row;gap:var(--spacing-xsmall);justify-content:space-between;align-items:center;flex-wrap:wrap}.quote-management-manage-negotiable-quote__detail{display:flex;flex-wrap:wrap;gap:var(--spacing-xxsmall);align-items:baseline}.quote-management-manage-negotiable-quote__detail-title{font:var(--type-body-2-emphasized-font);letter-spacing:var(--type-body-2-emphasized-letter-spacing)}.quote-management-manage-negotiable-quote__detail-content{font:var(--type-body-2-font);letter-spacing:var(--type-body-2-letter-spacing)}.quote-management-manage-negotiable-quote__item-actions{justify-content:flex-start}.quote-management-manage-negotiable-quote__quote-actions{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:var(--spacing-xsmall)}.quote-management-manage-negotiable-quote__shipping-information-container{display:flex;flex-direction:column;gap:var(--spacing-xsmall)}.quote-management-manage-negotiable-quote__shipping-information-title>*{font:var(--type-body-2-emphasized-font);letter-spacing:var(--type-body-2-emphasized-letter-spacing);margin:0}.quote-management-manage-negotiable-quote__quote-comments-container{display:flex;flex-direction:column;gap:var(--spacing-xsmall)}.quote-management-manage-negotiable-quote__quote-comments-title>*{font:var(--type-body-2-emphasized-font);letter-spacing:var(--type-body-2-emphasized-letter-spacing);margin:0}.quote-management-manage-negotiable-quote__attach-files[data-disabled]{opacity:.5;pointer-events:none}.quote-management-manage-negotiable-quote__footer{display:flex;gap:var(--spacing-small);justify-content:flex-start}@container (max-width: 768px){.quote-management-manage-negotiable-quote__header{flex-direction:column}.quote-management-manage-negotiable-quote__action-bar{flex-direction:column;align-items:flex-start}.quote-management-manage-negotiable-quote__quote-actions{justify-content:flex-start}}.quote-order-summary{display:grid;position:relative;grid-auto-flow:row;padding:var(--spacing-medium)}.quote-order-summary__primary{background-color:var(--color-neutral-200)}.quote-order-summary__secondary{background-color:var(--color-neutral-50)}.quote-order-summary__content{display:grid;gap:var(--spacing-xsmall);margin-top:var(--spacing-small)}.quote-order-summary__heading{display:grid;font:var(--type-headline-2-strong-font);letter-spacing:var(--type-headline-2-strong-letter-spacing);color:var(--color-neutral-800);gap:var(--spacing-small)}.quote-order-summary__discount .quote-order-summary__label,.quote-order-summary__discount .quote-order-summary__price{color:var(--color-warning-800)}.quote-order-summary__taxes .dropin-divider:last-child{margin-bottom:0}.quote-order-summary__total{margin-top:var(--spacing-medium)}.quote-order-summary__heading .quote-order-summary__divider-primary,.quote-order-summary__heading .quote-order-summary__divider-secondary{width:100%;margin:0}.quote-order-summary__divider-secondary{margin:0}.quote-order-summary__taxEntry.quote-order-summary__entry{margin-top:0}.quote-order-summary__entry,.quote-order-summary__taxEntry{display:grid;grid-template-columns:1fr 1fr;gap:var(--spacing-xxsmall);align-items:center;color:var(--color-neutral-800)}.quote-order-summary__caption{font:var(--type-details-caption-2-font);letter-spacing:var(--type-details-caption-2-letter-spacing);grid-column:span 2;color:var(--color-neutral-700)}.quote-order-summary__shipping--edit{display:grid;grid-column:1 / span 2;gap:var(--spacing-small);padding-top:var(--spacing-small);padding-left:var(--spacing-small)}a.quote-order-summary__shippingLink{text-decoration:underline}.quote-order-summary__shipping--hide{display:none!important}.quote-order-summary__shipping--edit button{width:var(--spacing-huge);justify-self:end}.quote-order-summary__shipping--zip,.quote-order-summary__shipping--state{background-color:var(--color-neutral-50)}.quote-order-summary__taxes .dropin-accordion-section__content-container{gap:var(--spacing-small);margin:var(--spacing-small) 0}.quote-order-summary__spinner{margin:0 auto;position:absolute;z-index:999;left:0;right:0;top:calc(50% - (var(--size) / 2));bottom:0}.quote-order-summary__label,.quote-order-summary__price{font:var(--type-body-1-default-font);letter-spacing:var(--type-body-1-default-letter-spacing)}.quote-order-summary__price{text-align:right;text-transform:uppercase}.quote-order-summary__label--muted{font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing);color:var(--color-neutral-700)}.quote-order-summary__price--muted{font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing)}.quote-order-summary__label--bold,.quote-order-summary__price--bold{font:var(--type-body-1-emphasized-font);letter-spacing:var(--type-body-1-emphasized-letter-spacing)}.quote-management-product-list-table-container{display:flex;flex-direction:column;gap:var(--spacing-small)}.quote-management-product-list-table__checkbox{align-self:center;justify-self:center}.quote-management-product-list-table__product-name-container{display:flex;flex-direction:column;gap:var(--spacing-xxsmall)}.quote-management-product-list-table__product-name{font:var(--type-body-1-font);letter-spacing:var(--type-body-1-letter-spacing)}.quote-management-product-list-table__configurable-option{display:flex;flex-direction:row;gap:var(--spacing-xxsmall)}.quote-management-product-list-table__configurable-option-label{font:var(--type-details-caption-1-font);letter-spacing:var(--type-details-caption-1-letter-spacing)}.quote-management-product-list-table__configurable-option-value{font:var(--type-details-caption-2-font);letter-spacing:var(--type-details-caption-2-letter-spacing)}.quote-management-product-list-table__bundle-option{display:flex;flex-direction:column;gap:var(--spacing-xxsmall)}.quote-management-product-list-table__bundle-option-label{font:var(--type-details-caption-1-font);letter-spacing:var(--type-details-caption-1-letter-spacing)}.quote-management-product-list-table__bundle-option-values{display:flex;flex-direction:column;gap:var(--spacing-xxsmall)}.quote-management-product-list-table__bundle-option-value{display:flex;flex-direction:row;align-items:center;gap:var(--spacing-xxsmall);font:var(--type-details-caption-2-font);letter-spacing:var(--type-details-caption-2-letter-spacing)}.quote-management-product-list-table__bundle-option-value-original-price{font:var(--type-details-caption-2-font);letter-spacing:var(--type-details-caption-2-letter-spacing)}.quote-management-product-list-table__sku{font:var(--type-details-caption-1-font);letter-spacing:var(--type-details-caption-1-letter-spacing)}.quote-management-product-list-table__quantity{font:var(--type-body-1-font);letter-spacing:var(--type-body-1-letter-spacing);display:block;justify-self:center}.quote-management-product-list-table__quantity-input{width:80px}@media only screen and (max-width: 767px){.quote-management-product-list-table__quantity-input{width:100%;max-width:200px}}.quote-management-product-list-table__discount-container{display:flex;flex-direction:row;flex-wrap:wrap;gap:var(--spacing-xxsmall);align-items:baseline}.quote-management-product-list-table-container__submit-container{display:flex;justify-content:flex-end}td:has(.quote-management-product-list-table__notes-row-wrapper)~td{display:none}.quote-management-product-list-table__notes-row-wrapper{margin-left:calc(var(--spacing-medium) * -1);margin-right:calc(var(--spacing-medium) * -1);margin-top:calc(var(--spacing-small) * -1);margin-bottom:calc(var(--spacing-small) * -1);background-color:var(--color-neutral-100);box-shadow:100vw 0 0 0 var(--color-neutral-100),-100vw 0 0 0 var(--color-neutral-100)}.quote-management-product-list-table__notes-container{padding:var(--spacing-medium)}.quote-management-product-list-table__notes-header{font:var(--type-body-2-strong-font);letter-spacing:var(--type-body-2-letter-spacing);color:var(--color-neutral-600);margin-bottom:var(--spacing-small);text-transform:uppercase}.quote-management-product-list-table__notes-list{display:flex;flex-direction:column;gap:var(--spacing-small)}.quote-management-product-list-table__note-item{display:flex;flex-direction:column;gap:var(--spacing-xxsmall)}.quote-management-product-list-table__note-content{font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing);color:var(--color-neutral-800)}.quote-management-product-list-table__note-meta{font:var(--type-body-2-emphasized-font);letter-spacing:var(--type-body-2-emphasized-letter-spacing);color:var(--color-neutral-800)}.quote-management-product-list-table__note-text{font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing);color:var(--color-neutral-800);padding-left:0}.quote-management-product-list-table__note-edit-icon{cursor:pointer;opacity:.6}.quote-management-product-list-table__note-edit-icon:hover{opacity:1}.quote-management-quote-prices-summary{font:var(--type-body-1-default-font);letter-spacing:var(--type-body-1-default-letter-spacing)}.quote-management-quote-prices-summary__entry{display:flex;flex-direction:row;justify-content:space-between;gap:10px;width:100%}.quote-management-quote-prices-summary__accordion,.quote-management-quote-prices-summary__label{flex-grow:1}.quote-management-quote-prices-summary__label--strong{font:var(--type-body-1-strong-font);letter-spacing:var(--type-body-1-strong-letter-spacing)}.quote-management-quote-prices-summary__value{flex-grow:1;text-align:right}.quote-management-quote-summary-list{container-type:inline-size;container-name:quote-summary-list}.quote-management-quote-summary-list__background--secondary{background-color:var(--color-neutral-200)}.quote-management-quote-summary-list__heading{display:grid;row-gap:var(--spacing-xsmall);padding:var(--spacing-medium) 0 0 0;font:var(--type-headline-1-font);letter-spacing:var(--type-headline-1-letter-spacing);color:var(--color-neutral-800)}.quote-management-quote-summary-list__heading--full-width{width:100%}.quote-management-quote-summary-list__heading-divider{width:100%;margin:var(--spacing-xxsmall) 0 var(--spacing-medium) 0}.quote-management-quote-summary-list__content{display:grid;grid-template-columns:1fr;padding:0}.quote-management-quote-summary-list__out-of-stock-message{margin:calc(-1 * var(--spacing-xsmall)) 0 var(--spacing-medium) 0}.quote-management-quote-summary-list-footer__action,.quote-management-quote-summary-list-footer__action:focus .quote-management-quote-summary-list-footer__action:active,.quote-management-quote-summary-list-footer__action:link{font:var(--type-body-2-strong-font);margin:0 auto;width:auto;margin-top:var(--spacing-medium);margin-bottom:var(--spacing-medium)}.quote-management-quote-summary-list-footer__action:hover{text-decoration:underline;text-underline-offset:var(--spacing-xxsmall);background:transparent;color:var(--color-brand-700)}.quote-management-quote-summary-list-footer__action:visited{background-color:transparent}.quote-management-quote-summary-list-accordion{border-left:var(--shape-border-width-2) solid var(--color-neutral-400);border-right:var(--shape-border-width-2) solid var(--color-neutral-400)}.quote-management-quote-summary-list-accordion__section{margin:var(--spacing-medium)}.dropin-cart-item__quantity{width:fit-content}@container quote-summary-list (width >= 768px){.quote-management-quote-summary-list__out-of-stock-message{margin:calc(-1 * var(--spacing-small)) 0 var(--spacing-xxbig) 0}}@container quote-summary-list (width >= 1024px){.quote-management-quote-summary-list__content,.quote-management-quote-summary-list__heading{grid-column:1 / span 8}.quote-management-quote-summary-list__heading--full-width{grid-column:1 / span 12}.quote-management-quote-summary-list__content{padding:0}}.quotes-list-table__empty-state{padding:var(--spacing-large);text-align:center;color:var(--color-neutral-600)}.quotes-list-table__footer{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-medium);border-top:var(--shape-border-width-1) solid var(--color-neutral-200);gap:var(--spacing-medium)}.quotes-list-table__item-range{flex:1;color:var(--color-neutral-800);font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing)}.quotes-list-table__pagination{flex:0 0 auto;display:flex;justify-content:center}.quotes-list-table__page-size-picker{flex:1;display:flex;justify-content:flex-end;align-items:center;gap:var(--spacing-small);color:var(--color-neutral-800);font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing)}.quotes-list-table__page-size-picker>span{display:inline-flex;align-items:baseline}.quotes-list-table__page-size-picker .dropin-picker{display:inline-flex;align-items:center;margin:0 var(--spacing-xsmall);vertical-align:center}.quotes-list-table__page-size-picker .dropin-picker__select{height:auto;min-height:var(--sizing-medium);line-height:1.2;vertical-align:baseline}.quote-management-quote-templates-list-table,.quote-management-quote-templates-list-table__table{width:100%}.quote-templates-list-table__empty-state{padding:var(--spacing-large);text-align:center}.quote-templates-list-table__footer{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-medium) 0;gap:var(--spacing-medium);flex-wrap:wrap}.quote-templates-list-table__item-range{display:flex;align-items:center;color:var(--color-neutral-700);font-size:var(--type-body-2-font-size)}.quote-templates-list-table__pagination{display:flex;justify-content:center;flex:1}.quote-templates-list-table__page-size-picker{display:flex;align-items:center;gap:var(--spacing-xsmall);color:var(--color-neutral-700);font-size:var(--type-body-2-font-size)}.quote-management-quote-templates-list-table__actions-cell{display:flex;gap:var(--spacing-xsmall)}.quote-management-quote-templates-list-table__actions-cell>*{white-space:nowrap}.dropin-modal__body.dropin-modal__body--medium{padding:var(--spacing-small)}.confirmation-modal__content{display:flex;flex-direction:column}.confirmation-modal__banner{margin-left:calc(-1 * var(--spacing-small));margin-right:calc(-1 * var(--spacing-small));margin-top:calc(-1 * var(--spacing-small));margin-bottom:var(--spacing-medium)}.confirmation-modal__title{font:var(--type-headline-2-strong-font);letter-spacing:var(--type-headline-1-letter-spacing);color:var(--color-neutral-800);margin-bottom:var(--spacing-medium);padding-bottom:var(--spacing-medium)}.confirmation-modal__message{margin-bottom:var(--spacing-medium);text-align:left;color:var(--color-neutral-800)}.confirmation-modal__actions{display:flex;justify-content:flex-end;gap:var(--spacing-medium);margin-top:var(--spacing-big);margin-right:var(--spacing-small);padding-bottom:var(--spacing-small)}div.dropin-modal__body.dropin-modal__body--medium>div.dropin-modal__content{margin:var(--spacing-small) var(--spacing-small) var(--spacing-small) var(--spacing-small)!important}.dropin-modal:has(.confirmation-modal__banner) .dropin-modal__header,.dropin-modal__body:has(.confirmation-modal__banner) .dropin-modal__header{display:none!important;height:0!important;padding:0!important;margin:0!important}@media only screen and (max-width: 768px){.confirmation-modal__banner .dropin-in-line-alert{padding:var(--spacing-xsmall) var(--spacing-small)!important;gap:var(--spacing-xsmall)!important}.confirmation-modal__actions{flex-direction:column-reverse;gap:var(--spacing-small)}.confirmation-modal__actions button{width:100%}}.quote-management-tabbed-content{width:100%}.quote-management-tabbed-content__tabs{display:flex;margin-bottom:-1px}.quote-management-tabbed-content__tab{background:var(--color-neutral-100);color:var(--color-neutral-700);border:solid 1px var(--color-neutral-400);padding:var(--spacing-xsmall) var(--spacing-medium);margin-left:-1px;cursor:pointer;font:var(--type-body-2-font);letter-spacing:var(--type-body-2-letter-spacing)}.quote-management-tabbed-content__tab:first-child{margin-left:unset}.quote-management-tabbed-content__tab:hover{background:var(--color-neutral-300);color:var(--color-neutral-700)}.quote-management-tabbed-content__tab--active{background:var(--color-neutral-50);color:var(--color-neutral-800);border-bottom:none}.quote-management-tabbed-content__tab--active:hover{background:var(--color-neutral-50);color:var(--color-neutral-800)}.quote-management-tabbed-content__active-tab-content{background:var(--color-neutral-50);padding:var(--spacing-small);border:solid 1px var(--color-neutral-400)}.quote-management-rename-quote-modal__error-banner,.quote-management-rename-quote-modal__success-banner{margin-bottom:var(--spacing-medium)}.dropin-modal__header-title-content{font:var(--type-headline-2-strong-font);letter-spacing:var(--type-headline-1-letter-spacing);color:var(--color-neutral-800);margin-top:var(--spacing-small);margin-left:var(--spacing-small)}.quote-management-rename-quote-modal__content{display:flex;flex-direction:column;gap:var(--spacing-medium);margin-bottom:var(--spacing-medium);width:100%}.quote-management-rename-quote-modal__error-text{color:var(--color-alert-800);font:var(--type-body-2-default-font);margin-top:var(--spacing-xsmall)}.quote-management-rename-quote-modal__actions{display:flex;justify-content:flex-start;gap:var(--spacing-small);margin-top:var(--spacing-medium);width:100%}.quote-management-rename-quote-modal__cancel-button{order:1}.quote-management-rename-quote-modal__save-button{order:2}@media only screen and (min-width: 768px) and (max-width: 1023px){.quote-management-rename-quote-modal .dropin-modal__close-button{top:var(--spacing-small);right:var(--spacing-small)}.quote-management-rename-quote-modal__actions{gap:var(--spacing-medium)}}@media only screen and (min-width: 1024px){.quote-management-rename-quote-modal__actions{gap:var(--spacing-medium)}}@media only screen and (max-width: 767px){.quote-management-rename-quote-modal .dropin-modal__close-button{margin:var(--spacing-small)}.quote-management-rename-quote-modal__error-banner .dropin-in-line-alert{padding:var(--spacing-xsmall) var(--spacing-small)!important;gap:var(--spacing-xsmall)!important}.quote-management-rename-quote-modal__content{gap:var(--spacing-small)}.quote-management-rename-quote-modal__actions{flex-direction:column-reverse;gap:var(--spacing-small);margin-top:var(--spacing-small)}.quote-management-rename-quote-modal__actions button{width:100%}.quote-management-rename-quote-modal__cancel-button{order:2}.quote-management-rename-quote-modal__save-button{order:1}}.quote-management-manage-negotiable-quote-template{display:grid;gap:var(--spacing-small);color:var(--color-neutral-800);width:100%;container-type:inline-size}.quote-management-manage-negotiable-quote-template__header{display:flex;gap:var(--spacing-big);align-items:center}.quote-management-manage-negotiable-quote-template__template-name-wrapper{display:flex;align-items:center;gap:var(--spacing-xsmall)}.quote-management-manage-negotiable-quote-template__template-name-title{font:var(--type-headline-1-font);letter-spacing:var(--type-headline-1-letter-spacing);margin:0}.quote-management-manage-negotiable-quote-template__rename-button{background:none;border:none;padding:var(--spacing-xsmall);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;color:var(--color-neutral-700)}.quote-management-manage-negotiable-quote-template__rename-button:hover:not(:disabled){color:var(--color-neutral-900)}.quote-management-manage-negotiable-quote-template__rename-button:disabled{cursor:not-allowed;opacity:.5}.quote-management-manage-negotiable-quote-template__template-status>*{font:var(--type-details-caption-1-font);letter-spacing:var(--type-details-caption-1-letter-spacing);border:2px solid var(--color-neutral-300);padding:var(--spacing-xxsmall)}.quote-management-manage-negotiable-quote-template__banner{display:flex;flex-direction:row}.quote-management-manage-negotiable-quote-template__reference-documents h2{font:var(--type-body-2-emphasized-font);letter-spacing:var(--type-body-2-emphasized-letter-spacing);margin:0}.quote-management-manage-negotiable-quote-template__details{display:flex;flex-direction:row;gap:var(--spacing-xsmall);justify-content:space-between;align-items:center;flex-wrap:wrap}.quote-management-manage-negotiable-quote-template__detail{display:flex;flex-wrap:wrap;gap:var(--spacing-xxsmall);align-items:baseline}.quote-management-manage-negotiable-quote-template__detail-title{font:var(--type-body-2-emphasized-font);letter-spacing:var(--type-body-2-emphasized-letter-spacing)}.quote-management-manage-negotiable-quote-template__detail-content{font:var(--type-body-2-font);letter-spacing:var(--type-body-2-letter-spacing)}.quote-management-manage-negotiable-quote-template__reference-documents-container{display:flex;flex-direction:column;gap:var(--spacing-xsmall)}.quote-management-manage-negotiable-quote-template__reference-documents-title>*{font:var(--type-body-2-emphasized-font);letter-spacing:var(--type-body-2-emphasized-letter-spacing);margin:0}.quote-management-manage-negotiable-quote-template__reference-documents{display:flex;flex-direction:column;gap:var(--spacing-xxsmall)}.quote-management-manage-negotiable-quote-template__items-table{width:100%}.quote-management-manage-negotiable-quote-template__comments-container{display:flex;flex-direction:column;gap:var(--spacing-xsmall)}.quote-management-manage-negotiable-quote-template__comments-title>*{font:var(--type-body-2-emphasized-font);letter-spacing:var(--type-body-2-emphasized-letter-spacing);margin:0}.quote-management-manage-negotiable-quote-template__attach-files[data-disabled]{opacity:.5;pointer-events:none}.quote-management-manage-negotiable-quote-template__file-error{color:var(--color-error);font:var(--type-body-2-font);letter-spacing:var(--type-body-2-letter-spacing);margin-top:var(--spacing-xxsmall)}.quote-management-manage-negotiable-quote-template__history-log-container{display:flex;flex-direction:column;gap:var(--spacing-xsmall)}.quote-management-manage-negotiable-quote-template__history-log-title>*{font:var(--type-body-2-emphasized-font);letter-spacing:var(--type-body-2-emphasized-letter-spacing);margin:0}.quote-management-manage-negotiable-quote-template__shipping-information-container{display:flex;flex-direction:column;gap:var(--spacing-xsmall)}.quote-management-manage-negotiable-quote-template__shipping-information-title>*{font:var(--type-body-2-emphasized-font);letter-spacing:var(--type-body-2-emphasized-letter-spacing);margin:0}.quote-management-manage-negotiable-quote-template__footer{display:flex;flex-wrap:wrap;gap:var(--spacing-small);justify-content:flex-start}@container (max-width: 768px){.quote-management-manage-negotiable-quote-template__header{flex-direction:column}}.quote-management-line-item-note-modal .dropin-modal__header-title-content{font:var(--type-headline-2-strong-font);letter-spacing:var(--type-headline-2-strong-letter-spacing);color:var(--color-neutral-800);margin-top:var(--spacing-small);margin-left:var(--spacing-small)}.quote-management-line-item-note-modal__error-banner,.quote-management-line-item-note-modal__success-banner{margin-bottom:var(--spacing-medium)}.quote-management-line-item-note-modal__content{display:flex;flex-direction:column;gap:var(--spacing-medium);margin-bottom:var(--spacing-medium);width:100%}.quote-management-line-item-note-modal__details{width:100%;overflow-x:auto;margin-bottom:var(--spacing-small)}.quote-management-line-item-note-modal__details-table{width:100%}.quote-management-line-item-note-modal__product-info{display:flex;flex-direction:column;gap:var(--spacing-xxsmall)}.quote-management-line-item-note-modal__product-name,.quote-management-line-item-note-modal__stock,.quote-management-line-item-note-modal__discount{font:var(--type-body-2-strong-font);letter-spacing:var(--type-body-2-strong-letter-spacing);color:var(--color-neutral-800)}.quote-management-line-item-note-modal__product-sku{font:var(--type-body-2-strong-font);letter-spacing:var(--type-body-2-strong-letter-spacing);color:var(--color-neutral-600)}.quote-management-line-item-note-modal__quantity-input{width:100px;min-width:100px;margin:0}.quote-management-line-item-note-modal__quantity-input input{padding:var(--spacing-xsmall) var(--spacing-small);font:var(--type-body-2-default-font);width:100%}.quote-management-line-item-note-modal__table-error{color:var(--color-alert-800);font:var(--type-body-2-default-font);margin-top:var(--spacing-xsmall);padding:var(--spacing-xsmall) var(--spacing-small)}.quote-management-line-item-note-modal__form-field{display:flex;flex-direction:column;gap:var(--spacing-xxsmall);width:100%}.quote-management-line-item-note-modal__error-text{color:var(--color-alert-800);font:var(--type-body-2-default-font);margin-top:var(--spacing-xxsmall)}.quote-management-line-item-note-modal__helper-text{color:var(--color-neutral-600);font:var(--type-body-3-default-font);margin-top:var(--spacing-xxsmall)}.quote-management-line-item-note-modal__actions{display:flex;justify-content:flex-start;gap:var(--spacing-small);margin-top:var(--spacing-medium);width:100%}.quote-management-line-item-note-modal__cancel-button{order:1}.quote-management-line-item-note-modal__confirm-button{order:2}@media only screen and (min-width: 768px) and (max-width: 1023px){.quote-management-line-item-note-modal .dropin-modal__close-button{top:var(--spacing-small);right:var(--spacing-small)}.quote-management-line-item-note-modal__actions{gap:var(--spacing-medium)}}@media only screen and (min-width: 1024px){.quote-management-line-item-note-modal__actions{gap:var(--spacing-medium)}}@media only screen and (max-width: 767px){.quote-management-line-item-note-modal .dropin-modal__close-button{margin:var(--spacing-small)}.quote-management-line-item-note-modal__error-banner .dropin-in-line-alert{padding:var(--spacing-xsmall) var(--spacing-small);gap:var(--spacing-xsmall)}.quote-management-line-item-note-modal__content{gap:var(--spacing-small)}.quote-management-line-item-note-modal__details{overflow-x:auto;-webkit-overflow-scrolling:touch}.quote-management-line-item-note-modal__actions{flex-direction:column-reverse;gap:var(--spacing-small);margin-top:var(--spacing-small)}.quote-management-line-item-note-modal__actions button{width:100%}.quote-management-line-item-note-modal__cancel-button{order:2}.quote-management-line-item-note-modal__confirm-button{order:1}}.quote-management-reference-document-form-modal__error-banner,.quote-management-reference-document-form-modal__success-banner{margin-bottom:var(--spacing-medium)}.quote-management-reference-document-form-modal__content{display:flex;flex-direction:column;gap:var(--spacing-medium);margin-bottom:var(--spacing-medium);width:100%}.quote-management-reference-document-form-modal__error-text{color:var(--color-alert-800);font:var(--type-body-2-default-font);margin-top:var(--spacing-xsmall)}.quote-management-reference-document-form-modal__actions{display:flex;justify-content:flex-start;gap:var(--spacing-small);margin-top:var(--spacing-medium);width:100%}.quote-management-reference-document-form-modal__cancel-button{order:1}.quote-management-reference-document-form-modal__save-button{order:2}@media only screen and (min-width: 768px) and (max-width: 1023px){.quote-management-reference-document-form-modal .dropin-modal__close-button{top:var(--spacing-small);right:var(--spacing-small)}.quote-management-reference-document-form-modal__actions{gap:var(--spacing-medium)}}@media only screen and (min-width: 1024px){.quote-management-reference-document-form-modal__actions{gap:var(--spacing-medium)}}@media only screen and (max-width: 767px){.quote-management-reference-document-form-modal .dropin-modal__close-button{margin:var(--spacing-small)}.quote-management-reference-document-form-modal__error-banner .dropin-in-line-alert{padding:var(--spacing-xsmall) var(--spacing-small)!important;gap:var(--spacing-xsmall)!important}.quote-management-reference-document-form-modal__content{gap:var(--spacing-small)}.quote-management-reference-document-form-modal__actions{flex-direction:column-reverse;gap:var(--spacing-small);margin-top:var(--spacing-small)}.quote-management-reference-document-form-modal__actions button{width:100%}.quote-management-reference-document-form-modal__cancel-button{order:2}.quote-management-reference-document-form-modal__save-button{order:1}}.quote-management-reference-documents-list{margin-bottom:var(--spacing-medium)}.quote-management-reference-documents-list__header{display:flex;align-items:center;gap:var(--spacing-xsmall);margin-bottom:var(--spacing-small)}.quote-management-reference-documents-list__title{font:var(--type-body-1-emphasized-font);letter-spacing:var(--type-body-1-emphasized-letter-spacing);color:var(--color-neutral-800);margin:0}.quote-management-reference-documents-list__info-icon{width:16px;height:16px;color:var(--color-neutral-600)}.quote-management-reference-documents-list__empty{color:var(--color-neutral-600);font:var(--type-body-2-default-font);padding:var(--spacing-small) 0}.quote-management-reference-documents-list__content{display:flex;flex-wrap:wrap;gap:var(--spacing-small)}.quote-management-reference-documents-list__document{display:flex;align-items:center;gap:var(--spacing-small);background-color:var(--color-neutral-100);border-radius:var(--border-radius-medium);border:1px solid var(--color-neutral-200)}.quote-management-reference-documents-list__document-link{color:var(--color-primary-700);text-decoration:none;font:var(--type-body-2-default-font);word-break:break-word}.quote-management-reference-documents-list__document-link:hover{text-decoration:underline}.quote-management-reference-documents-list__document-actions{display:flex;align-items:center;gap:var(--spacing-xsmall);margin-left:auto}.quote-management-reference-documents-list__separator{color:var(--color-neutral-400);font:var(--type-body-2-default-font)}.quote-management-reference-documents-list__edit-button,.quote-management-reference-documents-list__remove-button{padding:var(--spacing-xsmall) var(--spacing-small);font-size:var(--type-body-2-default-font-size)}.quote-management-reference-documents-list__add-button{background-color:var(--color-neutral-100);border:1px solid var(--color-neutral-200);border-radius:var(--border-radius-medium)}@media only screen and (max-width: 767px){.quote-management-reference-documents-list__content{flex-direction:column}.quote-management-reference-documents-list__document{flex-direction:column;align-items:flex-start;width:100%}.quote-management-reference-documents-list__document-actions{margin-left:0;width:100%;justify-content:flex-start}.quote-management-reference-documents-list__add-button{width:100%}}`,{styleId:"quote-management"});
7
+ .request-negotiable-quote-form{display:grid;gap:var(--spacing-small);align-items:flex-end;color:var(--color-neutral-800);width:100%}.request-negotiable-quote-form input:user-invalid,.request-negotiable-quote-form textarea:user-invalid{border-color:var(--color-alert-800)}.request-negotiable-quote-form__title{font:var(--type-body-1-emphasized-font);letter-spacing:var(--type-body-1-emphasized-letter-spacing)}.request-negotiable-quote-form__actions,.request-negotiable-quote-form [data-slot=AttachFileField]{display:flex;gap:var(--spacing-small)}.request-negotiable-quote-form__actions{justify-content:flex-start}.request-negotiable-quote-form__attach-file-field{justify-content:end}.request-negotiable-quote-form__attach-file-field label{background:none;color:var(--color-brand-500);font:var(--type-body-1-strong-font)}.request-negotiable-quote-form__attach-file-field label:hover{background:none}.request-negotiable-quote-form__error-banner svg{color:var(--color-alert-800)}.quote-management-actions-bar__container{container-type:inline-size;container-name:actions-bar-container}.quote-management-actions-bar{background:var(--color-neutral-200);padding:var(--spacing-xsmall);display:flex;gap:var(--spacing-small);justify-content:space-between;align-items:center}.quote-management-actions-bar__dropdown{width:max-content}.quote-management-actions-bar__buttons{display:flex}.quote-management-actions-bar__button>span{font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing)}@container actions-bar-container (max-width: 768px){.quote-management-actions-bar{flex-direction:column;align-items:flex-start;gap:var(--spacing-xsmall)}.quote-management-actions-bar__dropdown{width:100%}.quote-management-actions-bar__buttons{flex-direction:column;align-items:flex-start;gap:var(--spacing-xsmall);width:100%}.quote-management-actions-bar__button{width:100%}}.quote-management-items-quoted{display:flex;flex-direction:column;gap:var(--spacing-big)}.quote-management-manage-negotiable-quote{display:grid;gap:var(--spacing-small);color:var(--color-neutral-800);width:100%;container-type:inline-size}.quote-management-manage-negotiable-quote__header{display:flex;gap:var(--spacing-big);align-items:center}.quote-management-manage-negotiable-quote__quote-name>*{font:var(--type-headline-1-font);letter-spacing:var(--type-headline-1-letter-spacing);margin:0}.quote-management-manage-negotiable-quote__quote-name-wrapper{display:flex;align-items:center;gap:var(--spacing-xsmall)}.quote-management-manage-negotiable-quote__quote-name-title{font:var(--type-headline-1-font);letter-spacing:var(--type-headline-1-letter-spacing);margin:0}.quote-management-manage-negotiable-quote__rename-button{background:none;border:none;padding:var(--spacing-xsmall);cursor:pointer;display:inline-flex;align-items:center}.quote-management-manage-negotiable-quote__rename-button:disabled{cursor:not-allowed;opacity:.5}.quote-management-manage-negotiable-quote__quote-status>*{font:var(--type-details-caption-1-font);letter-spacing:var(--type-details-caption-1-letter-spacing);border:2px solid var(--color-neutral-300);padding:var(--spacing-xxsmall)}.quote-management-manage-negotiable-quote__banner{width:100%}.quote-management-manage-negotiable-quote__details{display:flex;flex-direction:row;gap:var(--spacing-xsmall);justify-content:space-between;align-items:center;flex-wrap:wrap}.quote-management-manage-negotiable-quote__detail{display:flex;flex-wrap:wrap;gap:var(--spacing-xxsmall);align-items:baseline}.quote-management-manage-negotiable-quote__detail-title{font:var(--type-body-2-emphasized-font);letter-spacing:var(--type-body-2-emphasized-letter-spacing)}.quote-management-manage-negotiable-quote__detail-content{font:var(--type-body-2-font);letter-spacing:var(--type-body-2-letter-spacing)}.quote-management-manage-negotiable-quote__item-actions{justify-content:flex-start}.quote-management-manage-negotiable-quote__quote-actions{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:var(--spacing-xsmall)}.quote-management-manage-negotiable-quote__shipping-information-container{display:flex;flex-direction:column;gap:var(--spacing-xsmall)}.quote-management-manage-negotiable-quote__shipping-information-title>*{font:var(--type-body-2-emphasized-font);letter-spacing:var(--type-body-2-emphasized-letter-spacing);margin:0}.quote-management-manage-negotiable-quote__quote-comments-container{display:flex;flex-direction:column;gap:var(--spacing-xsmall)}.quote-management-manage-negotiable-quote__quote-comments-title>*{font:var(--type-body-2-emphasized-font);letter-spacing:var(--type-body-2-emphasized-letter-spacing);margin:0}.quote-management-manage-negotiable-quote__attach-files[data-disabled]{opacity:.5;pointer-events:none}.quote-management-manage-negotiable-quote__footer{display:flex;gap:var(--spacing-small);justify-content:flex-start}@container (max-width: 768px){.quote-management-manage-negotiable-quote__header{flex-direction:column}.quote-management-manage-negotiable-quote__action-bar{flex-direction:column;align-items:flex-start}.quote-management-manage-negotiable-quote__quote-actions{justify-content:flex-start}}.quote-order-summary{display:grid;position:relative;grid-auto-flow:row;padding:var(--spacing-medium)}.quote-order-summary__primary{background-color:var(--color-neutral-200)}.quote-order-summary__secondary{background-color:var(--color-neutral-50)}.quote-order-summary__content{display:grid;gap:var(--spacing-xsmall);margin-top:var(--spacing-small)}.quote-order-summary__heading{display:grid;font:var(--type-headline-2-strong-font);letter-spacing:var(--type-headline-2-strong-letter-spacing);color:var(--color-neutral-800);gap:var(--spacing-small)}.quote-order-summary__discount .quote-order-summary__label,.quote-order-summary__discount .quote-order-summary__price{color:var(--color-warning-800)}.quote-order-summary__taxes .dropin-divider:last-child{margin-bottom:0}.quote-order-summary__total{margin-top:var(--spacing-medium)}.quote-order-summary__heading .quote-order-summary__divider-primary,.quote-order-summary__heading .quote-order-summary__divider-secondary{width:100%;margin:0}.quote-order-summary__divider-secondary{margin:0}.quote-order-summary__taxEntry.quote-order-summary__entry{margin-top:0}.quote-order-summary__entry,.quote-order-summary__taxEntry{display:grid;grid-template-columns:1fr 1fr;gap:var(--spacing-xxsmall);align-items:center;color:var(--color-neutral-800)}.quote-order-summary__caption{font:var(--type-details-caption-2-font);letter-spacing:var(--type-details-caption-2-letter-spacing);grid-column:span 2;color:var(--color-neutral-700)}.quote-order-summary__shipping--edit{display:grid;grid-column:1 / span 2;gap:var(--spacing-small);padding-top:var(--spacing-small);padding-left:var(--spacing-small)}a.quote-order-summary__shippingLink{text-decoration:underline}.quote-order-summary__shipping--hide{display:none!important}.quote-order-summary__shipping--edit button{width:var(--spacing-huge);justify-self:end}.quote-order-summary__shipping--zip,.quote-order-summary__shipping--state{background-color:var(--color-neutral-50)}.quote-order-summary__taxes .dropin-accordion-section__content-container{gap:var(--spacing-small);margin:var(--spacing-small) 0}.quote-order-summary__spinner{margin:0 auto;position:absolute;z-index:999;left:0;right:0;top:calc(50% - (var(--size) / 2));bottom:0}.quote-order-summary__label,.quote-order-summary__price{font:var(--type-body-1-default-font);letter-spacing:var(--type-body-1-default-letter-spacing)}.quote-order-summary__price{text-align:right;text-transform:uppercase}.quote-order-summary__label--muted{font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing);color:var(--color-neutral-700)}.quote-order-summary__price--muted{font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing)}.quote-order-summary__label--bold,.quote-order-summary__price--bold{font:var(--type-body-1-emphasized-font);letter-spacing:var(--type-body-1-emphasized-letter-spacing)}.quote-management-product-list-table-container{display:flex;flex-direction:column;gap:var(--spacing-small)}.quote-management-product-list-table__checkbox{align-self:center;justify-self:center}.quote-management-product-list-table__product-name-container{display:flex;flex-direction:column;gap:var(--spacing-xxsmall)}.quote-management-product-list-table__product-name{font:var(--type-body-1-font);letter-spacing:var(--type-body-1-letter-spacing)}.quote-management-product-list-table__configurable-option{display:flex;flex-direction:row;gap:var(--spacing-xxsmall)}.quote-management-product-list-table__configurable-option-label{font:var(--type-details-caption-1-font);letter-spacing:var(--type-details-caption-1-letter-spacing)}.quote-management-product-list-table__configurable-option-value{font:var(--type-details-caption-2-font);letter-spacing:var(--type-details-caption-2-letter-spacing)}.quote-management-product-list-table__bundle-option{display:flex;flex-direction:column;gap:var(--spacing-xxsmall)}.quote-management-product-list-table__bundle-option-label{font:var(--type-details-caption-1-font);letter-spacing:var(--type-details-caption-1-letter-spacing)}.quote-management-product-list-table__bundle-option-values{display:flex;flex-direction:column;gap:var(--spacing-xxsmall)}.quote-management-product-list-table__bundle-option-value{display:flex;flex-direction:row;align-items:center;gap:var(--spacing-xxsmall);font:var(--type-details-caption-2-font);letter-spacing:var(--type-details-caption-2-letter-spacing)}.quote-management-product-list-table__bundle-option-value-original-price{font:var(--type-details-caption-2-font);letter-spacing:var(--type-details-caption-2-letter-spacing)}.quote-management-product-list-table__sku{font:var(--type-details-caption-1-font);letter-spacing:var(--type-details-caption-1-letter-spacing)}.quote-management-product-list-table__quantity{font:var(--type-body-1-font);letter-spacing:var(--type-body-1-letter-spacing);display:block;justify-self:center}.quote-management-product-list-table__quantity-input{width:80px}@media only screen and (max-width: 767px){.quote-management-product-list-table__quantity-input{width:100%;max-width:200px}}.quote-management-product-list-table__discount-container{display:flex;flex-direction:row;flex-wrap:wrap;gap:var(--spacing-xxsmall);align-items:baseline}.quote-management-product-list-table-container__submit-container{display:flex;justify-content:flex-end}td:has(.quote-management-product-list-table__notes-row-wrapper)~td{display:none}.quote-management-product-list-table__notes-row-wrapper{margin-left:calc(var(--spacing-medium) * -1);margin-right:calc(var(--spacing-medium) * -1);margin-top:calc(var(--spacing-small) * -1);margin-bottom:calc(var(--spacing-small) * -1);background-color:var(--color-neutral-100);box-shadow:100vw 0 0 0 var(--color-neutral-100),-100vw 0 0 0 var(--color-neutral-100)}.quote-management-product-list-table__notes-container{padding:var(--spacing-medium)}.quote-management-product-list-table__notes-header{font:var(--type-body-2-strong-font);letter-spacing:var(--type-body-2-letter-spacing);color:var(--color-neutral-600);margin-bottom:var(--spacing-small);text-transform:uppercase}.quote-management-product-list-table__notes-list{display:flex;flex-direction:column;gap:var(--spacing-small)}.quote-management-product-list-table__note-item{display:flex;flex-direction:column;gap:var(--spacing-xxsmall)}.quote-management-product-list-table__note-content{font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing);color:var(--color-neutral-800)}.quote-management-product-list-table__note-meta{font:var(--type-body-2-emphasized-font);letter-spacing:var(--type-body-2-emphasized-letter-spacing);color:var(--color-neutral-800)}.quote-management-product-list-table__note-text{font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing);color:var(--color-neutral-800);padding-left:0}.quote-management-product-list-table__note-edit-icon{cursor:pointer;opacity:.6}.quote-management-product-list-table__note-edit-icon:hover{opacity:1}.quote-management-quote-prices-summary{font:var(--type-body-1-default-font);letter-spacing:var(--type-body-1-default-letter-spacing)}.quote-management-quote-prices-summary__entry{display:flex;flex-direction:row;justify-content:space-between;gap:10px;width:100%}.quote-management-quote-prices-summary__accordion,.quote-management-quote-prices-summary__label{flex-grow:1}.quote-management-quote-prices-summary__label--strong{font:var(--type-body-1-strong-font);letter-spacing:var(--type-body-1-strong-letter-spacing)}.quote-management-quote-prices-summary__value{flex-grow:1;text-align:right}.quote-management-quote-summary-list{container-type:inline-size;container-name:quote-summary-list}.quote-management-quote-summary-list__background--secondary{background-color:var(--color-neutral-200)}.quote-management-quote-summary-list__heading{display:grid;row-gap:var(--spacing-xsmall);padding:var(--spacing-medium) 0 0 0;font:var(--type-headline-1-font);letter-spacing:var(--type-headline-1-letter-spacing);color:var(--color-neutral-800)}.quote-management-quote-summary-list__heading--full-width{width:100%}.quote-management-quote-summary-list__heading-divider{width:100%;margin:var(--spacing-xxsmall) 0 var(--spacing-medium) 0}.quote-management-quote-summary-list__content{display:grid;grid-template-columns:1fr;padding:0}.quote-management-quote-summary-list__out-of-stock-message{margin:calc(-1 * var(--spacing-xsmall)) 0 var(--spacing-medium) 0}.quote-management-quote-summary-list-footer__action,.quote-management-quote-summary-list-footer__action:focus .quote-management-quote-summary-list-footer__action:active,.quote-management-quote-summary-list-footer__action:link{font:var(--type-body-2-strong-font);margin:0 auto;width:auto;margin-top:var(--spacing-medium);margin-bottom:var(--spacing-medium)}.quote-management-quote-summary-list-footer__action:hover{text-decoration:underline;text-underline-offset:var(--spacing-xxsmall);background:transparent;color:var(--color-brand-700)}.quote-management-quote-summary-list-footer__action:visited{background-color:transparent}.quote-management-quote-summary-list-accordion{border-left:var(--shape-border-width-2) solid var(--color-neutral-400);border-right:var(--shape-border-width-2) solid var(--color-neutral-400)}.quote-management-quote-summary-list-accordion__section{margin:var(--spacing-medium)}.dropin-cart-item__quantity{width:fit-content}@container quote-summary-list (width >= 768px){.quote-management-quote-summary-list__out-of-stock-message{margin:calc(-1 * var(--spacing-small)) 0 var(--spacing-xxbig) 0}}@container quote-summary-list (width >= 1024px){.quote-management-quote-summary-list__content,.quote-management-quote-summary-list__heading{grid-column:1 / span 8}.quote-management-quote-summary-list__heading--full-width{grid-column:1 / span 12}.quote-management-quote-summary-list__content{padding:0}}.quotes-list-table__empty-state{padding:var(--spacing-large);text-align:center;color:var(--color-neutral-600)}.quotes-list-table__footer{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-medium);border-top:var(--shape-border-width-1) solid var(--color-neutral-200);gap:var(--spacing-medium)}.quotes-list-table__item-range{flex:1;color:var(--color-neutral-800);font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing)}.quotes-list-table__pagination{flex:0 0 auto;display:flex;justify-content:center}.quotes-list-table__page-size-picker{flex:1;display:flex;justify-content:flex-end;align-items:center;gap:var(--spacing-small);color:var(--color-neutral-800);font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing)}.quotes-list-table__page-size-picker>span{display:inline-flex;align-items:baseline}.quotes-list-table__page-size-picker .dropin-picker{display:inline-flex;align-items:center;margin:0 var(--spacing-xsmall);vertical-align:center}.quotes-list-table__page-size-picker .dropin-picker__select{height:auto;min-height:var(--sizing-medium);line-height:1.2;vertical-align:baseline}.quote-management-quote-templates-list-table,.quote-management-quote-templates-list-table__table{width:100%}.quote-templates-list-table__empty-state{padding:var(--spacing-large);text-align:center}.quote-templates-list-table__footer{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-medium) 0;gap:var(--spacing-medium);flex-wrap:wrap}.quote-templates-list-table__item-range{display:flex;align-items:center;color:var(--color-neutral-700);font-size:var(--type-body-2-font-size)}.quote-templates-list-table__pagination{display:flex;justify-content:center;flex:1}.quote-templates-list-table__page-size-picker{display:flex;align-items:center;gap:var(--spacing-xsmall);color:var(--color-neutral-700);font-size:var(--type-body-2-font-size)}.quote-management-quote-templates-list-table__actions-cell{display:flex;gap:var(--spacing-xsmall)}.quote-management-quote-templates-list-table__actions-cell>*{white-space:nowrap}.dropin-modal__body.dropin-modal__body--medium{padding:var(--spacing-small)}.confirmation-modal__content{display:flex;flex-direction:column}.confirmation-modal__banner{margin-left:calc(-1 * var(--spacing-small));margin-right:calc(-1 * var(--spacing-small));margin-top:calc(-1 * var(--spacing-small));margin-bottom:var(--spacing-medium)}.confirmation-modal__title{font:var(--type-headline-2-strong-font);letter-spacing:var(--type-headline-1-letter-spacing);color:var(--color-neutral-800);margin-bottom:var(--spacing-medium);padding-bottom:var(--spacing-medium)}.confirmation-modal__message{margin-bottom:var(--spacing-medium);text-align:left;color:var(--color-neutral-800)}.confirmation-modal__actions{display:flex;justify-content:flex-end;gap:var(--spacing-medium);margin-top:var(--spacing-big);margin-right:var(--spacing-small);padding-bottom:var(--spacing-small)}div.dropin-modal__body.dropin-modal__body--medium>div.dropin-modal__content{margin:var(--spacing-small) var(--spacing-small) var(--spacing-small) var(--spacing-small)!important}.dropin-modal:has(.confirmation-modal__banner) .dropin-modal__header,.dropin-modal__body:has(.confirmation-modal__banner) .dropin-modal__header{display:none!important;height:0!important;padding:0!important;margin:0!important}@media only screen and (max-width: 768px){.confirmation-modal__banner .dropin-in-line-alert{padding:var(--spacing-xsmall) var(--spacing-small)!important;gap:var(--spacing-xsmall)!important}.confirmation-modal__actions{flex-direction:column-reverse;gap:var(--spacing-small)}.confirmation-modal__actions button{width:100%}}.quote-management-tabbed-content{width:100%}.quote-management-tabbed-content__tabs{display:flex;margin-bottom:-1px}.quote-management-tabbed-content__tab{background:var(--color-neutral-100);color:var(--color-neutral-700);border:solid 1px var(--color-neutral-400);padding:var(--spacing-xsmall) var(--spacing-medium);margin-left:-1px;cursor:pointer;font:var(--type-body-2-font);letter-spacing:var(--type-body-2-letter-spacing)}.quote-management-tabbed-content__tab:first-child{margin-left:unset}.quote-management-tabbed-content__tab:hover{background:var(--color-neutral-300);color:var(--color-neutral-700)}.quote-management-tabbed-content__tab--active{background:var(--color-neutral-50);color:var(--color-neutral-800);border-bottom:none}.quote-management-tabbed-content__tab--active:hover{background:var(--color-neutral-50);color:var(--color-neutral-800)}.quote-management-tabbed-content__active-tab-content{background:var(--color-neutral-50);padding:var(--spacing-small);border:solid 1px var(--color-neutral-400)}.quote-management-rename-quote-modal__error-banner,.quote-management-rename-quote-modal__success-banner{margin-bottom:var(--spacing-medium)}.dropin-modal__header-title-content{font:var(--type-headline-2-strong-font);letter-spacing:var(--type-headline-1-letter-spacing);color:var(--color-neutral-800);margin-top:var(--spacing-small);margin-left:var(--spacing-small)}.quote-management-rename-quote-modal__content{display:flex;flex-direction:column;gap:var(--spacing-medium);margin-bottom:var(--spacing-medium);width:100%}.quote-management-rename-quote-modal__error-text{color:var(--color-alert-800);font:var(--type-body-2-default-font);margin-top:var(--spacing-xsmall)}.quote-management-rename-quote-modal__actions{display:flex;justify-content:flex-start;gap:var(--spacing-small);margin-top:var(--spacing-medium);width:100%}.quote-management-rename-quote-modal__cancel-button{order:1}.quote-management-rename-quote-modal__save-button{order:2}@media only screen and (min-width: 768px) and (max-width: 1023px){.quote-management-rename-quote-modal .dropin-modal__close-button{top:var(--spacing-small);right:var(--spacing-small)}.quote-management-rename-quote-modal__actions{gap:var(--spacing-medium)}}@media only screen and (min-width: 1024px){.quote-management-rename-quote-modal__actions{gap:var(--spacing-medium)}}@media only screen and (max-width: 767px){.quote-management-rename-quote-modal .dropin-modal__close-button{margin:var(--spacing-small)}.quote-management-rename-quote-modal__error-banner .dropin-in-line-alert{padding:var(--spacing-xsmall) var(--spacing-small)!important;gap:var(--spacing-xsmall)!important}.quote-management-rename-quote-modal__content{gap:var(--spacing-small)}.quote-management-rename-quote-modal__actions{flex-direction:column-reverse;gap:var(--spacing-small);margin-top:var(--spacing-small)}.quote-management-rename-quote-modal__actions button{width:100%}.quote-management-rename-quote-modal__cancel-button{order:2}.quote-management-rename-quote-modal__save-button{order:1}}.quote-management-manage-negotiable-quote-template{display:grid;gap:var(--spacing-small);color:var(--color-neutral-800);width:100%;container-type:inline-size}.quote-management-manage-negotiable-quote-template__header{display:flex;gap:var(--spacing-big);align-items:center}.quote-management-manage-negotiable-quote-template__template-name-wrapper{display:flex;align-items:center;gap:var(--spacing-xsmall)}.quote-management-manage-negotiable-quote-template__template-name-title{font:var(--type-headline-1-font);letter-spacing:var(--type-headline-1-letter-spacing);margin:0}.quote-management-manage-negotiable-quote-template__rename-button{background:none;border:none;padding:var(--spacing-xsmall);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;color:var(--color-neutral-700)}.quote-management-manage-negotiable-quote-template__rename-button:hover:not(:disabled){color:var(--color-neutral-900)}.quote-management-manage-negotiable-quote-template__rename-button:disabled{cursor:not-allowed;opacity:.5}.quote-management-manage-negotiable-quote-template__template-status>*{font:var(--type-details-caption-1-font);letter-spacing:var(--type-details-caption-1-letter-spacing);border:2px solid var(--color-neutral-300);padding:var(--spacing-xxsmall)}.quote-management-manage-negotiable-quote-template__banner{display:flex;flex-direction:row}.quote-management-manage-negotiable-quote-template__reference-documents h2{font:var(--type-body-2-emphasized-font);letter-spacing:var(--type-body-2-emphasized-letter-spacing);margin:0}.quote-management-manage-negotiable-quote-template__details{display:flex;flex-direction:row;gap:var(--spacing-xsmall);justify-content:space-between;align-items:center;flex-wrap:wrap}.quote-management-manage-negotiable-quote-template__detail{display:flex;flex-wrap:wrap;gap:var(--spacing-xxsmall);align-items:baseline}.quote-management-manage-negotiable-quote-template__detail-title{font:var(--type-body-2-emphasized-font);letter-spacing:var(--type-body-2-emphasized-letter-spacing)}.quote-management-manage-negotiable-quote-template__detail-content{font:var(--type-body-2-font);letter-spacing:var(--type-body-2-letter-spacing)}.quote-management-manage-negotiable-quote-template__reference-documents-container{display:flex;flex-direction:column;gap:var(--spacing-xsmall)}.quote-management-manage-negotiable-quote-template__reference-documents-title>*{font:var(--type-body-2-emphasized-font);letter-spacing:var(--type-body-2-emphasized-letter-spacing);margin:0}.quote-management-manage-negotiable-quote-template__reference-documents{display:flex;flex-direction:column;gap:var(--spacing-xxsmall)}.quote-management-manage-negotiable-quote-template__items-table{width:100%}.quote-management-manage-negotiable-quote-template__comments-container{display:flex;flex-direction:column;gap:var(--spacing-xsmall)}.quote-management-manage-negotiable-quote-template__comments-title>*{font:var(--type-body-2-emphasized-font);letter-spacing:var(--type-body-2-emphasized-letter-spacing);margin:0}.quote-management-manage-negotiable-quote-template__history-log-container{display:flex;flex-direction:column;gap:var(--spacing-xsmall)}.quote-management-manage-negotiable-quote-template__history-log-title>*{font:var(--type-body-2-emphasized-font);letter-spacing:var(--type-body-2-emphasized-letter-spacing);margin:0}.quote-management-manage-negotiable-quote-template__shipping-information-container{display:flex;flex-direction:column;gap:var(--spacing-xsmall)}.quote-management-manage-negotiable-quote-template__shipping-information-title>*{font:var(--type-body-2-emphasized-font);letter-spacing:var(--type-body-2-emphasized-letter-spacing);margin:0}.quote-management-manage-negotiable-quote-template__footer{display:flex;flex-wrap:wrap;gap:var(--spacing-small);justify-content:flex-start}@container (max-width: 768px){.quote-management-manage-negotiable-quote-template__header{flex-direction:column}}.quote-management-line-item-note-modal .dropin-modal__header-title-content{font:var(--type-headline-2-strong-font);letter-spacing:var(--type-headline-2-strong-letter-spacing);color:var(--color-neutral-800);margin-top:var(--spacing-small);margin-left:var(--spacing-small)}.quote-management-line-item-note-modal__error-banner,.quote-management-line-item-note-modal__success-banner{margin-bottom:var(--spacing-medium)}.quote-management-line-item-note-modal__content{display:flex;flex-direction:column;gap:var(--spacing-medium);margin-bottom:var(--spacing-medium);width:100%}.quote-management-line-item-note-modal__details{width:100%;overflow-x:auto;margin-bottom:var(--spacing-small)}.quote-management-line-item-note-modal__details-table{width:100%}.quote-management-line-item-note-modal__product-info{display:flex;flex-direction:column;gap:var(--spacing-xxsmall)}.quote-management-line-item-note-modal__product-name,.quote-management-line-item-note-modal__stock,.quote-management-line-item-note-modal__discount{font:var(--type-body-2-strong-font);letter-spacing:var(--type-body-2-strong-letter-spacing);color:var(--color-neutral-800)}.quote-management-line-item-note-modal__product-sku{font:var(--type-body-2-strong-font);letter-spacing:var(--type-body-2-strong-letter-spacing);color:var(--color-neutral-600)}.quote-management-line-item-note-modal__quantity-input{width:100px;min-width:100px;margin:0}.quote-management-line-item-note-modal__quantity-input input{padding:var(--spacing-xsmall) var(--spacing-small);font:var(--type-body-2-default-font);width:100%}.quote-management-line-item-note-modal__table-error{color:var(--color-alert-800);font:var(--type-body-2-default-font);margin-top:var(--spacing-xsmall);padding:var(--spacing-xsmall) var(--spacing-small)}.quote-management-line-item-note-modal__form-field{display:flex;flex-direction:column;gap:var(--spacing-xxsmall);width:100%}.quote-management-line-item-note-modal__error-text{color:var(--color-alert-800);font:var(--type-body-2-default-font);margin-top:var(--spacing-xxsmall)}.quote-management-line-item-note-modal__helper-text{color:var(--color-neutral-600);font:var(--type-body-3-default-font);margin-top:var(--spacing-xxsmall)}.quote-management-line-item-note-modal__actions{display:flex;justify-content:flex-start;gap:var(--spacing-small);margin-top:var(--spacing-medium);width:100%}.quote-management-line-item-note-modal__cancel-button{order:1}.quote-management-line-item-note-modal__confirm-button{order:2}@media only screen and (min-width: 768px) and (max-width: 1023px){.quote-management-line-item-note-modal .dropin-modal__close-button{top:var(--spacing-small);right:var(--spacing-small)}.quote-management-line-item-note-modal__actions{gap:var(--spacing-medium)}}@media only screen and (min-width: 1024px){.quote-management-line-item-note-modal__actions{gap:var(--spacing-medium)}}@media only screen and (max-width: 767px){.quote-management-line-item-note-modal .dropin-modal__close-button{margin:var(--spacing-small)}.quote-management-line-item-note-modal__error-banner .dropin-in-line-alert{padding:var(--spacing-xsmall) var(--spacing-small);gap:var(--spacing-xsmall)}.quote-management-line-item-note-modal__content{gap:var(--spacing-small)}.quote-management-line-item-note-modal__details{overflow-x:auto;-webkit-overflow-scrolling:touch}.quote-management-line-item-note-modal__actions{flex-direction:column-reverse;gap:var(--spacing-small);margin-top:var(--spacing-small)}.quote-management-line-item-note-modal__actions button{width:100%}.quote-management-line-item-note-modal__cancel-button{order:2}.quote-management-line-item-note-modal__confirm-button{order:1}}.quote-management-reference-document-form-modal__error-banner,.quote-management-reference-document-form-modal__success-banner{margin-bottom:var(--spacing-medium)}.quote-management-reference-document-form-modal__content{display:flex;flex-direction:column;gap:var(--spacing-medium);margin-bottom:var(--spacing-medium);width:100%}.quote-management-reference-document-form-modal__error-text{color:var(--color-alert-800);font:var(--type-body-2-default-font);margin-top:var(--spacing-xsmall)}.quote-management-reference-document-form-modal__actions{display:flex;justify-content:flex-start;gap:var(--spacing-small);margin-top:var(--spacing-medium);width:100%}.quote-management-reference-document-form-modal__cancel-button{order:1}.quote-management-reference-document-form-modal__save-button{order:2}@media only screen and (min-width: 768px) and (max-width: 1023px){.quote-management-reference-document-form-modal .dropin-modal__close-button{top:var(--spacing-small);right:var(--spacing-small)}.quote-management-reference-document-form-modal__actions{gap:var(--spacing-medium)}}@media only screen and (min-width: 1024px){.quote-management-reference-document-form-modal__actions{gap:var(--spacing-medium)}}@media only screen and (max-width: 767px){.quote-management-reference-document-form-modal .dropin-modal__close-button{margin:var(--spacing-small)}.quote-management-reference-document-form-modal__error-banner .dropin-in-line-alert{padding:var(--spacing-xsmall) var(--spacing-small)!important;gap:var(--spacing-xsmall)!important}.quote-management-reference-document-form-modal__content{gap:var(--spacing-small)}.quote-management-reference-document-form-modal__actions{flex-direction:column-reverse;gap:var(--spacing-small);margin-top:var(--spacing-small)}.quote-management-reference-document-form-modal__actions button{width:100%}.quote-management-reference-document-form-modal__cancel-button{order:2}.quote-management-reference-document-form-modal__save-button{order:1}}.quote-management-reference-documents-list{margin-bottom:var(--spacing-medium)}.quote-management-reference-documents-list__header{display:flex;align-items:center;gap:var(--spacing-xsmall);margin-bottom:var(--spacing-small)}.quote-management-reference-documents-list__title{font:var(--type-body-1-emphasized-font);letter-spacing:var(--type-body-1-emphasized-letter-spacing);color:var(--color-neutral-800);margin:0}.quote-management-reference-documents-list__info-icon{width:16px;height:16px;color:var(--color-neutral-600)}.quote-management-reference-documents-list__empty{color:var(--color-neutral-600);font:var(--type-body-2-default-font);padding:var(--spacing-small) 0}.quote-management-reference-documents-list__content{display:flex;flex-wrap:wrap;gap:var(--spacing-small)}.quote-management-reference-documents-list__document{display:flex;align-items:center;gap:var(--spacing-small);background-color:var(--color-neutral-100);border-radius:var(--border-radius-medium);border:1px solid var(--color-neutral-200)}.quote-management-reference-documents-list__document-link{color:var(--color-primary-700);text-decoration:none;font:var(--type-body-2-default-font);word-break:break-word}.quote-management-reference-documents-list__document-link:hover{text-decoration:underline}.quote-management-reference-documents-list__document-actions{display:flex;align-items:center;gap:var(--spacing-xsmall);margin-left:auto}.quote-management-reference-documents-list__separator{color:var(--color-neutral-400);font:var(--type-body-2-default-font)}.quote-management-reference-documents-list__edit-button,.quote-management-reference-documents-list__remove-button{padding:var(--spacing-xsmall) var(--spacing-small);font-size:var(--type-body-2-default-font-size)}.quote-management-reference-documents-list__add-button{background-color:var(--color-neutral-100);border:1px solid var(--color-neutral-200);border-radius:var(--border-radius-medium)}@media only screen and (max-width: 767px){.quote-management-reference-documents-list__content{flex-direction:column}.quote-management-reference-documents-list__document{flex-direction:column;align-items:flex-start;width:100%}.quote-management-reference-documents-list__document-actions{margin-left:0;width:100%;justify-content:flex-start}.quote-management-reference-documents-list__add-button{width:100%}}`,{styleId:"quote-management"});
8
8
  import{jsx as t}from"@dropins/tools/preact-jsx-runtime.js";import{Render as n}from"@dropins/tools/lib.js";import{useState as i,useEffect as l}from"@dropins/tools/preact-hooks.js";import{UIProvider as u}from"@dropins/tools/components.js";import{events as c}from"@dropins/tools/event-bus.js";const d={cancel:"Cancel",confirm:"Confirm"},m={Request:{title:"Request a Quote",comment:"Comment",commentError:"Please add your comment",quoteName:"Quote name",quoteNameError:"Please add a quote name",attachmentsError:"Error uploading attachments",maxFilesExceeded:"Maximum {maxFiles} file(s) allowed",maxFileSizeExceeded:"File size exceeds maximum limit of {maxSize}",invalidFileType:"File type not accepted",removeFile:"Remove file",uploading:"Uploading...",uploadSuccess:"Upload complete",uploadError:"Upload failed",requestCta:"Request a Quote",saveDraftCta:"Save as draft",error:{header:"Error",unauthenticated:"Please sign in to request a quote.",unauthorized:"You are not authorized to request a quote.",missingCart:"Could not find a valid cart."},success:{header:"Success",submitted:"Quote request submitted successfully!",draftSaved:"Quote saved as draft successfully!"}},Manage:{createdLabel:"Created:",salesRepLabel:"Sales Rep:",expiresLabel:"Expires:",actionsLabel:"Actions",actions:{remove:"Remove"},attachFile:"Attach File",attachFiles:"Attach Files",fileUploadError:"Failed to upload file. Please try again.",maxFilesExceeded:"Maximum {maxFiles} file(s) allowed",maxFileSizeExceeded:"File size exceeds maximum limit of {maxSize}",invalidFileType:"File type not accepted",removeFile:"Remove file",uploading:"Uploading...",uploadSuccess:"Upload complete",uploadError:"Upload failed",bannerTitle:"Alert",bannerStatusMessages:{submitted:"This quote is currently locked for editing. It will become available once released by the Merchant.",pending:"This quote is currently locked for editing. It will become available once released by the Merchant.",expired:"Your quote has expired and the product prices have been updated as per the latest prices in your catalog. You can either re-submit the quote to seller for further negotiation or go to checkout."},actionButtons:{close:"Close quote",delete:"Delete quote",print:"Print quote",createTemplate:"Create quote template",createCopy:"Create copy",sendForReview:"Send for review"},confirmationModal:{cancel:"Cancel",delete:{title:"Delete Quote",message:"Are you sure you want to delete this quote?",confirm:"Delete",errorHeading:"Error",errorFallback:"Failed to delete quote",successHeading:"Success",successDescription:"Quote has been successfully deleted"},duplicate:{title:"Duplicate Quote",message:"Are you sure you want to create a copy of this quote?",confirm:"Create Copy",errorHeading:"Error",errorFallback:"Failed to duplicate quote",successHeading:"Success",successDescription:"Quote has been successfully duplicated. You will be redirected to the new quote shortly.",outOfStockWarningHeading:"Alert",outOfStockWarningMessage:"Some items were skipped during duplication due to errors."},close:{message:"Are you sure you want to close this quote?",confirm:"Close",confirmLoading:"Closing...",successHeading:"Success",successDescription:"Quote has been successfully closed"},createTemplate:{message:"Are you sure you want to create a quote template from this quote?",confirm:"Create Template",confirmLoading:"Creating...",successHeading:"Success",successDescription:"Quote template has been successfully created",errorHeading:"Error",errorFallback:"Failed to create quote template"},noItemsSelected:{title:"Please Select Quote Items",message:"Please select at least one quote item to proceed.",confirm:"Ok"}},shippingInformation:{title:"Shipping Information"},shippingAddress:{noAddress:"No shipping address has been set for this quote.",noAddressHeading:"No Shipping Address",noAddressDescription:"Please select or enter a shipping address."},quoteComments:{title:"Quote Comments",placeholder:"Add your comment",emptyState:"No comments yet",by:"by",attachments:"Attachments:"},productListTable:{headers:{productName:"Product name",sku:"SKU",price:"Price",quantity:"Quantity",discount:"Discount",subtotal:"Subtotal",actions:"Actions"},submitButton:"Update",actions:{editNoteToSeller:"Edit note to seller",remove:"Remove"},notes:{header:"NOTES",leftANote:"left a note:",buyer:"Buyer",seller:"Seller"},outOfStock:"Out of Stock",outOfStockMessage:"This item is currently out of stock."},rename:{title:"Rename Quote",quoteNameLabel:"Quote name",reasonLabel:"Reason for change",renameButton:"Rename",cancelButton:"Cancel",errorHeading:"Error",quoteNameRequired:"Quote name is required",errorDefault:"Failed to rename quote. Please try again.",successHeading:"Success",successMessage:"Quote renamed successfully!"},lineItemNote:{title:"Leave a note to seller",productLabel:"Name & SKU",skuLabel:"SKU",priceLabel:"Price",stockLabel:"Stock",quantityLabel:"Qty",discountLabel:"Discount",subtotalLabel:"Subtotal",noteLabel:"Note to seller",notePlaceholder:"Can I get a discount on this?",noteHelper:"The seller will see the note when you send the quote back.",confirmButton:"Confirm",cancelButton:"Cancel",noteError:"Please enter a note",quantityError:"Quantity must be greater than 0"},tabbedContent:{itemsQuoted:"Items quoted",comments:"Comments",historyLog:"History log"},quotePricesSummary:{subtotal:{excludingTax:"Quote Subtotal (excluding tax)"},appliedTaxes:"Applied Taxes",grandTotal:{includingTax:"Quote Grand Total (including tax)"}},updateQuantitiesModal:{title:"Change Quote Items",description:"Making changes to any quote item changes the terms of the quote. After you update the quote, return it to the seller for review and approval.",cancelButton:"Cancel",updateButton:"Apply Changes",successHeading:"Success",successMessage:"Quote quantities have been successfully updated.",errorHeading:"Error",errorMessage:"Failed to update quote quantities. Please try again."},removeItemsModal:{title:"Change Quote Items",description:"Making changes to any quote item changes the terms of the quote. After you update the quote, return it to the seller for review and approval.",cancelButton:"Cancel",confirmButton:"Remove",confirmButtonRemoving:"Removing...",successHeading:"Success",successMessage:"Quote items have been successfully removed.",errorHeading:"Error",errorMessage:"Failed to remove quote items. Please try again."}},PriceSummary:{taxToBeDetermined:"TBD",orderSummary:"Order Summary",giftOptionsTax:{printedCard:{title:"Printed card",inclTax:"Including taxes",exclTax:"excluding taxes"},itemGiftWrapping:{title:"Item gift wrapping",inclTax:"Including taxes",exclTax:"excluding taxes"},orderGiftWrapping:{title:"Order gift wrapping",inclTax:"Including taxes",exclTax:"excluding taxes"}},subTotal:{label:"Subtotal",withTaxes:"Including taxes",withoutTaxes:"excluding taxes"},shipping:{label:"Shipping",withTaxes:"Including taxes",withoutTaxes:"excluding taxes"},taxes:{total:"Tax Total",totalOnly:"Tax",breakdown:"Taxes",showBreakdown:"Show Tax Breakdown",hideBreakdown:"Hide Tax Breakdown"},total:{free:"Free",label:"Total",withoutTax:"Total excluding taxes",saved:"Total saved"}},QuoteSummaryList:{discountedPrice:"Discounted Price",discountPercentage:"{discount}% off",editQuote:"Edit",file:"{count} file",files:"{count} files",heading:"Negotiable Quote ({count})",listOfQuoteItems:"List of Quote Items",regularPrice:"Regular Price",savingsAmount:"Savings",viewMore:"View more"}},p={Manage:{createdLabel:"Created:",salesRepLabel:"Sales Rep:",expiresLabel:"Expires:",templateIdLabel:"Template ID:",referenceDocuments:{title:"Reference Documents",add:"Add",edit:"Edit",remove:"Remove",noReferenceDocuments:"No reference documents",form:{title:"Document Information",documentNameLabel:"Document name",documentIdentifierLabel:"Document identifier",referenceUrlLabel:"Reference URL",addButton:"Add to Quote Template",updateButton:"Update Document",cancelButton:"Cancel",documentNameRequired:"Document name is required",documentIdentifierRequired:"Document identifier is required",referenceUrlRequired:"Reference URL is required",invalidUrl:"Please enter a valid URL",errorHeading:"Error",duplicateUidError:"A document with this identifier already exists in the template. Please use a different identifier."}},shippingInformation:{title:"Shipping Information"},comments:{title:"Comments"},historyLog:{title:"History Log"},tabs:{itemsQuoted:"Items Quoted",comments:"Comments",historyLog:"History Log"},templateComments:{title:"Template Comments",placeholder:"Add your comment"},actionsLabel:"Actions",actionButtons:{sendForReview:"Send for review",delete:"Delete template",cancel:"Cancel template",accept:"Accept",generateQuote:"Generate quote"},removeItemsModal:{title:"Change Quote Template Items",description:"Making changes to any quote template item changes the terms of the template. After you update the template, return it to the seller for review and approval.",cancelButton:"Cancel",confirmButton:"Remove",confirmButtonRemoving:"Removing...",successHeading:"Success",successMessage:"Quote template items have been successfully removed.",errorHeading:"Error",errorMessage:"Failed to remove quote template items. Please try again."},updateQuantitiesModal:{title:"Change Quote Template Items",description:"Making changes to any quote template item changes the terms of the template. After you update the template, return it to the seller for review and approval.",cancelButton:"Cancel",updateButton:"Apply Changes",successHeading:"Success",successMessage:"Quote template quantities have been successfully updated.",errorHeading:"Error",errorMessage:"Failed to update quote template quantities. Please try again."},confirmationModal:{cancel:"Cancel",delete:{title:"Delete Quote Template",message:"Are you sure you want to delete this quote template?",confirm:"Delete",errorHeading:"Error",errorFallback:"Failed to delete quote template",successHeading:"Success",successDescription:"Quote template has been successfully deleted"},cancelTemplate:{title:"Cancel Quote Template",message:"Are you sure you want to cancel this quote template?",confirm:"Cancel Template",errorHeading:"Error",errorFallback:"Failed to cancel quote template",successHeading:"Success",successDescription:"Quote template has been successfully cancelled"},accept:{title:"Accept Quote Template",message:"Are you sure you want to accept this quote template?",confirm:"Accept",confirmLoading:"Accepting...",successHeading:"Quote Template Accepted",successDescription:"Quote template has been successfully accepted.",errorHeading:"Error",errorFallback:"Failed to accept quote template. Please try again."},generateQuote:{message:"Are you sure you want to generate a quote from this template?",confirm:"Generate Quote",confirmLoading:"Generating...",successHeading:"Quote Generated",successDescription:"Quote has been successfully generated from the template.",errorHeading:"Error",errorFallback:"Failed to generate quote from template. Please try again."}},quotePricesSummary:{subtotal:{excludingTax:"Quote Template Subtotal (excluding tax)"},appliedTaxes:"Applied Taxes",grandTotal:{includingTax:"Quote Template Grand Total (including tax)"}},lineItemNoteModal:{errorHeading:"Error"},rename:{title:"Rename Quote Template",templateNameLabel:"Template name",reasonLabel:"Reason for change",renameButton:"Rename",cancelButton:"Cancel",errorHeading:"Error",templateNameRequired:"Template name is required",errorDefault:"Failed to rename quote template. Please try again.",successHeading:"Success",successMessage:"Quote template renamed successfully!"},unsavedChangesWarningHeading:"Unsaved Changes",unsavedChangesWarningMessage:"The quote template must be submitted for review to save the changes.",shippingAddressWarningHeading:"No Shipping Address",shippingAddressWarningMessage:"No shipping address has been set for this quote template."}},g={changeTypes:{created:"Quote Created",updated:"Quote Updated",statusChanged:"Status Changed",commentAdded:"Comment Added",expirationChanged:"Expiration Changed"},noteTypes:{buyerNoteAdded:"Buyer Note Added",sellerNoteAdded:"Seller Note Added"},authorLabels:{buyer:"(Buyer)",seller:"(Seller)"},changeDetails:{comment:'Comment: "{comment}"',statusChangedFromTo:"Status changed from {oldStatus} to {newStatus}",statusSetTo:"Status set to {newStatus}",expirationChangedFromTo:"Expiration changed from {oldExpiration} to {newExpiration}",expirationSetTo:"Expiration set to {newExpiration}",totalChangedFromTo:"Total changed from {oldTotal} to {newTotal}",customChange:'{title}: changed from "{oldValue}" to "{newValue}"',productsRemovedFromCatalog:"Products removed from catalog: {products}",productsRemovedFromQuote:"Products removed from quote: {products}",noDetailsAvailable:"No details available"},emptyState:"No history available for this quote."},h={QuotesListTable:{quoteName:"Quote Name",created:"Created",createdBy:"Created By",status:"Status",lastUpdated:"Last Updated",quoteTemplate:"Quote Template",quoteTotal:"Quote Total",actions:"Action"},QuoteTemplatesListTable:{name:"Template Name",state:"State",status:"Status",validUntil:"Valid Until",minQuoteTotal:"Min. Quote Total (Negotiated)",ordersPlaced:"Orders Placed",lastOrdered:"Last Ordered",actions:"Action",view:"View"}},f={ConfirmationModal:d,NegotiableQuote:m,NegotiableQuoteTemplate:p,historyLog:g,QuoteManagement:h},y={default:f},b=({children:a})=>{const[o,s]=i("en_US");return l(()=>{const e=c.on("locale",r=>{s(r)},{eager:!0});return()=>{e==null||e.off()}},[]),t(u,{lang:o,langDefinitions:y,children:a})},v=new n(t(b,{}));export{v as render};
9
9
  //# sourceMappingURL=render.js.map